Grila video dinamică YouTube

Reglați dinamic rețeaua video YouTube pe baza lățimii ferestrei pentru a afișa cel mai bun număr de videoclipuri pe linie, suprascrisând 3 grile video implicite pentru machete mai rapide mai rapide

// ==UserScript==
// @name                  YouTube Dynamic Video Grid
// @name:aa               Youtube Dynamic Vidiyoh Giriid
// @name:ab               YouTube Адинамикатә видео џьбара
// @name:af               YouTube Dynamic Video Grid
// @name:ak               YouTube video grid a ɛyɛ nnam .
// @name:am               የዩቲዩብ ተለዋዋጭ ቪዲዮ ፍርግርግ
// @name:ar               YouTube شبكة فيديو ديناميكية
// @name:as               YouTube গতিশীল ভিডিঅ’ গ্ৰীড
// @name:av               YouTube Dynamic Video Grid
// @name:ay               YouTube dinámico video rejilla .
// @name:az               YouTube Dinamik Video Grid
// @name:ba               YouTube динамик видео селтәре
// @name:be               Дынамічная відэа -сетка YouTube
// @name:bg               YouTube Dynamic Video Grid
// @name:bh               यूट्यूब डायनामिक वीडियो ग्रिड के बा .
// @name:bm               YouTube dynamique vidéo grid .
// @name:bn               ইউটিউব ডায়নামিক ভিডিও গ্রিড
// @name:bo               YouTube Dynamic Video དྲ་ཚིགས།
// @name:br               YouTubevideo ar video dinamek
// @name:bs               YouTube Dynamic Video Grid
// @name:ca               YouTube Dynamic Video quadrícula
// @name:ce               YouTube Dynamic Video Grid
// @name:ceb              Youtube dinamikong video grid
// @name:ch               I Videmic Dinagian Dinagina na taotao-ña
// @name:ckb              تۆڕی ڤیدیۆی داینامیکی یوتیوب
// @name:co               Gridd video dynebte youtube
// @name:cs               Dynamická video mřížka YouTube
// @name:cv               YouTube динамика Видео сетки
// @name:cy               Grid fideo deinamig youtube
// @name:da               YouTube Dynamic Video Grid
// @name:de               YouTube Dynamic Video Grid
// @name:dv               ޔޫޓިއުބް ޑައިނަމިކް ވީޑިއޯ ގްރިޑް
// @name:dz               ཡུ་ཊུབ་ ཌའི་ནམ་བརྙན་འཕྲིན།
// @name:ee               YouTube ƒe Video Grid si trɔna .
// @name:el               Δυναμικό δίκτυο βίντεο YouTube
// @name:en               YouTube Dynamic Video Grid
// @name:en-GB            YouTube Dynamic Video Grid
// @name:eo               YouTube Dynamic Video Grid
// @name:es               Grid de video dinámico de YouTube
// @name:es-419           Grid de video dinámico de YouTube
// @name:et               YouTube’i dünaamiline videovõrk
// @name:eu               YouTube Dynamic Video Grid
// @name:fa               شبکه ویدیویی پویا YouTube
// @name:ff               Video Dinamiik YouTube
// @name:fi               YouTube -dynaaminen videoverkko
// @name:fil              YouTube dynamic na grid ng video
// @name:fj               Iko Tube Dynamic Vidio .
// @name:fo               YouTube Dynamic Video Grid
// @name:fr               Grille vidéo dynamique YouTube
// @name:fr-CA            Grille vidéo dynamique YouTube
// @name:fy               YouTube Dynamic Video Grid
// @name:ga               Eangach Físeán Dinimiciúil YouTube
// @name:gd               Griod bhidio fiùdalach YouTube
// @name:gl               Rede de vídeo dinámico de YouTube
// @name:gn               YouTube video dinámico rejilla .
// @name:gsw-berne        YouTube Dynamic Video Grid
// @name:gu               યુટ્યુબ ગતિશીલ વિડિઓ ગ્રીડ
// @name:gv               Ghuir Gheuree You Tube Grid.
// @name:ha               Bidiyon Bidiyon YouTube
// @name:he               רשת וידאו דינמית של YouTube
// @name:hi               YouTube गतिशील वीडियो ग्रिड
// @name:hmn              Youtube dynamic video grid
// @name:hr               YouTube dinamična video rešetka
// @name:ht               YouTube dinamik griy videyo
// @name:hu               YouTube dinamikus videó rács
// @name:hy               YouTube դինամիկ տեսանյութի ցանց
// @name:id               YouTube Dynamic Video Grid
// @name:ig               Gdị anya vidiyo YouTube Gbara
// @name:is               Youtube Dynamic Video Grid
// @name:it               YouTube Dynamic Video Grid
// @name:iu               YouTube-ᖑᓂᕋᖅᑕᐅᔪᖅ ᑕᕐᕆᔭᒐᒃᓴᖅ
// @name:ja               YouTubeダイナミックビデオグリッド
// @name:jv               Grid Video Dinamis YouTube
// @name:ka               YouTube დინამიური ვიდეო ბადე
// @name:kg               Video ya Video Dynamique ya YouTube
// @name:kk               YouTube динамикалық бейне торы
// @name:kl               YouTube-imi dynamisk Video Grid
// @name:km               ក្រឡាចត្រង្គវីដេអូឌីជីថលថាមវន្ត
// @name:kn               ಯೂಟ್ಯೂಬ್ ಡೈನಾಮಿಕ್ ವಿಡಿಯೋ ಗ್ರಿಡ್
// @name:ko               YouTube 동적 비디오 그리드
// @name:kr               YouTubeye Grid
// @name:ku               YouTube video Dynamic Grid
// @name:kv               Ютубын динамическӧй видео сетка .
// @name:ky               Youtube Динамикалык видео тармагы
// @name:la               YouTube Dynamic video eget
// @name:lb               YouTube Dynamic Video Gitter
// @name:lg               YouTube Dynamic Video Grid .
// @name:ln               YouTube Dynamic Vidéo Grille .
// @name:lo               ຕາຂ່າຍໄຟຟ້າວິດີໂອ YouTube ແບບເຄື່ອນໄຫວ
// @name:lt               „YouTube“ dinaminis vaizdo tinklelis
// @name:lv               Youtube dinamiskais video režģis
// @name:mg               Video Video Dynamika YouTube
// @name:mh               You Tube Vidio eo an juon armej .
// @name:mi               YouTube YouTube Video Grid
// @name:mk               YouTube динамична видео решетка
// @name:ml               YouTube ഡൈനാമിക് വീഡിയോ ഗ്രിഡ്
// @name:mn               Youtube динамик видео сүлжээ
// @name:mo               Grila video dinamică YouTube
// @name:mr               YouTube डायनॅमिक व्हिडिओ ग्रीड
// @name:ms               Grid video dinamik YouTube
// @name:mt               Grid tal-vidjow dinamiku ta ’YouTube
// @name:my               YouTube Dynamic Video Grid
// @name:nb               YouTube Dynamic Video Grid
// @name:ne               YouTube गतिशील भिडियो ग्रिड
// @name:nl               YouTube Dynamic Video Grid
// @name:nr               KunguMGUMO Susa .
// @name:ny               YouTube Dynamic Video Grid
// @name:oc               YouTube Dinamica Video Grid .
// @name:om               YouTube giiridii viidiyoo daayinamikii .
// @name:or               ୟୁଟ୍ୟୁବ୍ ଡାଇନାମିକ୍ ଭିଡିଓ ଗ୍ରୀଡ୍ |
// @name:os               YouTube Dynamic Video Grid
// @name:pa               ਯੂਟਿ .ਬ ਡਾਇਨਾਮਿਕ ਵੀਡੀਓ ਗਰਿੱਡ
// @name:pl               Dynamiczna siatka wideo YouTube
// @name:ps               د یوټیوب متحرک ویډیو شبکه
// @name:pt               Grade de vídeo dinâmico do YouTube
// @name:pt-BR            Grade de vídeo dinâmico do YouTube
// @name:pt-PT            Grade de vídeo dinâmico do YouTube
// @name:qu               YouTube nisqapi video rejilla .
// @name:rn               YouTube Video Grid
// @name:ro               Grila video dinamică YouTube
// @name:ru               Dynamic Video Grid YouTube
// @name:rw               YouTube Dynamic Video
// @name:sa               YouTube गतिशील वीडियो ग्रिड .
// @name:sd               يوٽيوب متحرڪ وڊيو گرڊ
// @name:se               YouTube dynámalaš videofilbma
// @name:sg               Grille ti vidéo ti Dynamique ti YouTube
// @name:sh               Иоутубе динамична видео мрежа
// @name:si               යූ ටියුබ් ඩයිනමික් වීඩියෝ ජාලකය
// @name:sk               YouTube Dynamic Video Grid
// @name:sl               YouTube Dynamic Video Grid
// @name:sm               Youtube dynamic vitio grid
// @name:sn               YouTube Dynamic vhidhiyo Grid
// @name:so               YouTube Dyube Video grid
// @name:sq               Grid video dinamike në YouTube
// @name:sr               Иоутубе динамична видео мрежа
// @name:ss               I-YouTube i-Video Video Grid
// @name:st               Youtube Dynamic video Video
// @name:su               YouTube dinamis spidol grid
// @name:sv               YouTube Dynamic Video Grid
// @name:sw               Gridi ya Video ya Nguvu ya YouTube
// @name:ta               YouTube டைனமிக் வீடியோ கட்டம்
// @name:te               యూట్యూబ్ డైనమిక్ వీడియో గ్రిడ్
// @name:tg               YouTube Videcy Videctic Videc
// @name:th               กริดวิดีโอไดนามิกของ YouTube
// @name:ti               ዩቱብ ዳይናሚክ ቪድዮ ሽቦ
// @name:tk               Youutube dinamiki wideo wideo
// @name:tl               YouTube dynamic na grid ng video
// @name:tn               Keriti ya Dibidio tse di fetogang tsa YouTube
// @name:to               YouTube Dynamic Video Grid
// @name:tr               YouTube dinamik video ızgarası
// @name:ts               YouTube dynamic grid .
// @name:tt               Youtube динамик видео челтәр
// @name:tw               YouTube video grid a ɛyɛ nnam .
// @name:ty               YouTube
// @name:ug               YouTube ھەرىكەتچان سىن تورى
// @name:uk               Динамічна відео -сітка YouTube
// @name:ur               یوٹیوب متحرک ویڈیو گرڈ
// @name:uz               YouTube dinamik video panjara
// @name:ve               Giridi ya Vidio ya Dynamic ya YouTube
// @name:vi               YouTube Dynamic Video Grid
// @name:wo               Video Dynamique Grid bu YouTube
// @name:xh               I-YouTube Dynamic Vidi yeVidiyo
// @name:yi               יאָוטובע דינאַמיש ווידעא גריד
// @name:yo               YouTube ìwò fidio fidio
// @name:zh               YouTube 动态视频网格
// @name:zh-CN            YouTube 动态视频网格
// @name:zh-HK            YouTube 動態視頻網格
// @name:zh-MO            YouTube 動態視頻網格
// @name:zh-MY            YouTube 动态视频网格
// @name:zh-SG            YouTube 动态视频网格
// @name:zh-TW            YouTube 動態視頻網格
// @name:zu               Igridi yevidiyo enamandla ye-YouTube
// @description:aa        Diyamic massos Youtube viidiyoh grid elle rakitam meqe ixxima le viidiyooyal, default 3 viidiyoh girid sissikuk xalay.
// @description:ab        Динамикала YouTube авидео-цәаҳәа аԥенџьыр аҭбаара шьаҭас иҟаҵаны, цәаҳәак аҿы иреиӷьу авидеоқәа рхыԥхьаӡара аарԥшразы, еиҳа ирласны аҭакҟаҵаратә шьақәгылашьақәа рзы 3 видео-еилазаара ԥсахны
// @description:af        Pas die YouTube -video -rooster dinamies aan, gebaseer op vensterbreedte om die beste aantal video’s per reël te vertoon, en die standaard 3 video -roosters oorskryf vir vinniger reageer uitlegte
// @description:ak        Fa dynamically siesie YouTube video grid a egyina window width so ma ɛkyerɛ video dodow a eye sen biara wɔ line biara mu, na kyerɛw default 3 video grids no so ma ɛyɛ ntɛm mmuae nhyehyɛe .
// @description:am        በተከታታይ በመስኮት ስፋቱ ላይ የተመሠረተ የ YouTube ቪዲዮ ፍርግርግ በተንቀሳቃሽ የመስኮት ስፋቶች ላይ በመመርኮዝ ለተስፋፋው የቪዲዮ ፍርግርግ (የቪዲዮ ፍርግርግ) ፈጣን ምላሽ ሰጪዎች
// @description:ar        اضبط شبكة فيديو YouTube ديناميكيًا استنادًا إلى عرض النافذة لعرض أفضل عدد من مقاطع الفيديو لكل سطر ، واكتب شبكات الفيديو الافتراضية 3 للتخطيطات المستجيبة بشكل أسرع
// @description:as        প্ৰতিটো লাইনত সৰ্বোত্তম সংখ্যক ভিডিঅ’ প্ৰদৰ্শন কৰিবলৈ উইণ্ড’ৰ প্ৰস্থৰ ওপৰত ভিত্তি কৰি ইউটিউব ভিডিঅ’ গ্ৰীড গতিশীলভাৱে সামঞ্জস্য কৰক, দ্ৰুত প্ৰতিক্ৰিয়াশীল বিন্যাসৰ বাবে অবিকল্পিত ৩ ভিডিঅ’ গ্ৰীড অভাৰৰাইট কৰি
// @description:av        Динамически регулируйте видео YouTube, основанный на окружающем широки, чтобы отобразить лучшие количество видео по линии, переписать по умолчанию 3 видеосетки для быстрые ответственных макетов
// @description:ay        Dinámicamente rejilla de vídeo de YouTube ukax ventana ancho ukarjam askichatawa, sapa línea ukan videos ukanakax wali suma jakhüw uñacht’ayañataki, 3 rejillas de vídeo predeterminado ukanakax juk’amp rápidos respuestas ukan qillqt’atawa .
// @description:az        Bir sətirdə ən yaxşı sayda videonu göstərmək üçün Window, YouTube video şəbəkəsini dinamik şəkildə tənzimləyin, daha sürətli cavab verən layoutlar üçün standart 3 video ızgaraları üzərində yazın
// @description:ba        Динамик рәүештә YouTube видео селтәрен көйләү нигеҙендә тәҙрә киңлеге күрһәтеү өсөн иң яҡшы һаны видео бер юл, өҫтөнән яҙыу ғәҙәттәгесә 3 видео селтәрҙәр өсөн тиҙерәк яуап макеттары .
// @description:be        Дынамічна адрэгулюйце відэа -сетку YouTube на аснове шырыні вокнаў, каб адлюстраваць лепшую колькасць відэа ў радок, перазапісваючы 3 сеткі відэа для больш хуткіх спагадных макетаў
// @description:bg        Динамично регулирайте видео решетката в YouTube въз основа на ширината на прозореца, за да се покаже най -добрият брой видеоклипове на ред, презаписване по подразбиране 3 видео мрежи за по -бързи отзивчиви оформления
// @description:bh        डायनामिक रूप से विंडो चौड़ाई के आधार पर यूट्यूब वीडियो ग्रिड के समायोजित करीं ताकि प्रति लाइन सबसे बढ़िया वीडियो के प्रदर्शित कइल जा सके, तेज रिस्पांसिव लेआउट खातिर डिफ़ॉल्ट 3 वीडियो ग्रिड के ओवरराइट कइल जा सकेला
// @description:bm        YouTube video grid ladilan cogo la min bɛ kɛ ka da finɛtiriw bonya kan walasa ka wideyow hakɛ ɲuman jira layini kelen na, ka wideyow jatebɔ sɛbɛn 3 defaultw sɛbɛn walasa ka jaabiw di teliya la.
// @description:bn        দ্রুত প্রতিক্রিয়াশীল লেআউটগুলির জন্য ডিফল্ট 3 ভিডিও গ্রিডগুলি ওভাররাইটিং করে লাইন প্রতি সেরা সংখ্যক ভিডিও প্রদর্শন করতে উইন্ডো প্রস্থের উপর ভিত্তি করে ইউটিউব ভিডিও গ্রিডটি গতিশীলভাবে সামঞ্জস্য করুন
// @description:bo        སྒེའུ་ཁུང་གི་རྒྱ་ཁྱོན་ལ་བརྟེན་ནས་ཡུ་ཊུབ་བརྙན་འཕྲིན་གྱི་དྲ་མིག་དེ་ཐིག་རེ་ལ་བརྙན་འཕྲིན་གྱི་གྲངས་ཀ་ཡག་ཤོས་སྟོན་ཆེད་དུ་ཡུ་ཊུབ་བརྙན་འཕྲིན་གྱི་དྲ་མིག་དེ་ལེགས་སྒྲིག་བྱས་ནས་བརྙན་འཕྲིན་དྲ་མིག་3དེ་མགྱོགས་པོ་ལན་འདེབས་བྱེད་པའི་བཀོད་སྒྲིག་ལ་ཚད་ལས་བརྒལ་ཡོད།
// @description:br        Diazezañ ar rouedad video YouTube diazezet war led ar prenestr evit diskouez an niver gwellañ a videoioù dre linenn, o skrivañ dreist ar 3 rouedad video dre ziouer evit skeudennoù respontus buanoc’h
// @description:bs        Dinamički podesite YouTube video rešetku na osnovu širine prozora za prikaz najboljeg broja video zapisa po retku, prepisivanje zadanih 3 video mreža za brže reažne rasporede
// @description:ca        Ajusteu dinàmicament la graella de vídeo de YouTube basada en l’amplada de la finestra per mostrar el millor nombre de vídeos per línia, sobreescrivint les 3 quadrícules de vídeo predeterminades per a dissenys de resposta més ràpids
// @description:ce        Динамически нисъе YouTube видео сетка, коран шуьйраллин бух тӀехь, гайта уггаре а дика видеош хӀора могӀанна, совяздар стандартан 3 видео сетка сиха респонситивни макеташна
// @description:ceb       Dynamikong pag-adjust sa youtube video grid nga gibase sa Window Lapad aron ipakita ang labing kaayo nga gidaghanon sa mga video matag linya, nga adunay sulud nga 3 nga video grids alang sa mas paspas nga pagtubag sa mga layout
// @description:ch        Dynamicamente ha areglå i video video grid ni’ ma fa’tinas gi i bentanå-ña para u na’fanhuyong i mas maolek na numeron video kada linahyan, ya ha na’fanhuyong i default na 3 video grids para mas åpmam na tiempo para u fanma responsåpble i repositibu siha .
// @description:ckb       بە شێوەیەکی داینامیکی تۆڕی ڤیدیۆی یوتیوب ڕێکبخە بە پشتبەستن بە پانایی پەنجەرە بۆ پیشاندانی باشترین ژمارەی ڤیدیۆکان بۆ هەر هێڵێک، نووسینەوەی 3 تۆڕی ڤیدیۆیی پێشوەختە بۆ نەخشەی وەڵامدەرەوەی خێراتر
// @description:co        Aghjustate dinamicamente u gridu di video di YouTube nantu à a larghezza di a finestra per affissà u megliu numaru di video per a linea, rimpiazzà i video di video predeterminate
// @description:cs        Dynamicky upravte video mřížku YouTube na základě šířky okna a zobrazíte nejlepší počet videí na řádek a přepsáte výchozí 3 video mřížky pro rychlejší responzivní rozvržení
// @description:cv        Динамика мелĕпе YouTube видеосетьне чÿрече сарлакăшĕ тăрăх тĕпе хурса кашни йĕркере чи лайăх видео кăтартма, хăвăртрах хуравлакан макетсем валли стандартлă 3 видеосетьсене çырса кăтартăр
// @description:cy        Addaswch y grid fideo YouTube yn ddeinamig yn seiliedig ar led ffenestri i arddangos y nifer orau o fideos y llinell, gan drosysgrifennu’r gridiau fideo diofyn 3 ar gyfer cynlluniau ymatebol cyflymach
// @description:da        Juster dynamisk YouTube -videorettet baseret på vinduesbredde for at få vist det bedste antal videoer pr. Linje, og overskriv standard 3 -videotitrene til hurtigere responsive layouts
// @description:de        Passen Sie das YouTube -Video -Netz dynamisch anhand der Fensterbreite an, um die beste Anzahl von Videos pro Zeile anzuzeigen.
// @description:dv        ކޮންމެ ލައިނަކަށް އެންމެ ރަނގަޅު ވީޑިއޯ ދައްކާލުމަށްޓަކައި ވިންޑޯ ވިޑްތް އަށް ބަލައިގެން ޔޫޓިއުބް ވީޑިއޯ ގްރިޑް ޑައިނަމިކް ގޮތެއްގައި އެޖެސްޓްކޮށް، ރެސްޕޮންސިވް ލޭއައުޓްސް އަށް ވުރެ ބާރު ފޯރުވުމަށް ޑިފޯލްޓް 3 ވީޑިއޯ ގްރިޑްސް އޯވަރރައިޓް ކުރުން
// @description:dz        གྲལ་ཐིག་རེ་ལུ་ བརྙན་འཕྲིན་གྱངས་ཁ་དྲག་ཤོས་བཀྲམ་སྟོན་འབད་ནིའི་དོན་ལུ་ ཡུ་ཊུབ་བརྙན་འཕྲིན་གྱི་ གིརིཌི་འདི་ ཝིན་ཌོ་རྒྱ་ཚད་ལུ་གཞི་བཞག་སྟེ་ མགྱོགས་དྲགས་སྦེ་ བདེ་སྒྲིག་འབད་ཞིནམ་ལས་ མགྱོགས་དྲགས་སྦེ་ ལན་འདེབས་སྒྲིག་བཀོད་ཚུ་གི་དོན་ལུ་ སྔོན་སྒྲིག་བརྙན་འཕྲིན་གྱི་ གིརིཌི་༣ འདི་ ཚབ་སྲུང་འབད་ནི།
// @description:ee        Trɔ asi le YouTube video ƒe fli si wotu ɖe fesre ƒe kekeme dzi le mɔ si trɔna nu be wòaɖe video ƒe xexlẽme nyuitɔ kekeake afia le fli ɖesiaɖe dzi, atsɔ video ƒe fli 3 siwo woɖo ɖi la aŋlɔ ɖe edzi na ɖoɖo siwo wɔa dɔ kabakaba wu .
// @description:el        Ρυθμίστε δυναμικά το πλέγμα βίντεο YouTube με βάση το πλάτος παραθύρου για να εμφανίσετε τον καλύτερο αριθμό βίντεο ανά γραμμή, αντικαθιστώντας τα προεπιλεγμένα 3 πλέγματα βίντεο για ταχύτερες διατάξεις απόκρισης
// @description:en        Dynamically adjust the YouTube video grid based on window width to display the best number of videos per line, overwriting the default 3 video grids for faster responsive layouts
// @description:en-GB     Dynamically adjust the YouTube video grid based on window width to display the best number of videos per line, overwriting the default 3 video grids for faster responsive layouts
// @description:eo        Dinamike Ĝustigu la YouTube -Video -Kradon surbaze
// @description:es        Ajuste dinámicamente la cuadrícula de video de YouTube en función del ancho de la ventana para mostrar el mejor número de videos por línea, sobrescribiendo las 3 cuadrículas de video predeterminadas para diseños receptivos más rápidos
// @description:es-419    Ajuste dinámicamente la cuadrícula de video de YouTube en función del ancho de la ventana para mostrar el mejor número de videos por línea, sobrescribiendo las 3 cuadrículas de video predeterminadas para diseños receptivos más rápidos
// @description:et        Reguleerige dünaamiliselt YouTube’i videovõrk, mis põhineb akna laiusel, et kuvada parim videote arv rea kohta, kirjutades vaikeseade 3 videovõrku kiiremate reageerivate paigutuste jaoks
// @description:eu        Dinamikoki doitu YouTube bideo-sareta leihoen zabalera oinarritzat hartuta, lerro bakoitzeko bideo kopuru onena erakusteko, lehenetsitako 3 bideo sareta gainidatzi diseinuaren diseinu arduratsuak lortzeko
// @description:fa        به صورت پویا شبکه ویدیویی YouTube را بر اساس عرض پنجره تنظیم کنید تا بهترین تعداد فیلم ها در هر خط نمایش داده شود ، و با استفاده از 3 شبکه ویدیویی پیش فرض برای طرح های سریعتر پاسخگو بازنویسی کنید
// @description:ff        Dinamique njuɓɓudi mbaydi wideyoo YouTube tuugiindi e njaajeendi windo ngam hollirde limoore ɓurnde moƴƴude e wideyooji e kala liggey, winnditiiɗo jokkorgal wideyoo 3 default ngam layouts jaabawol ɓurngol yaawde
// @description:fi        Säädä Dynaamisesti YouTube -videoverkkoa ikkunan leveyden perusteella, jotta saat parhaan määrän videoita riviä kohden, korvaavat oletusarvoiset 3 videoverkon nopeammille reagoiville asetteluille
// @description:fil       Dinamikong ayusin ang grid ng video sa YouTube batay sa lapad ng window upang ipakita ang pinakamahusay na bilang ng mga video bawat linya, na overwriting ang default na 3 video grids para sa mas mabilis na pagtugon sa mga layout
// @description:fj        Dynamically veisautaka na vidio grid grid e yavutaki ena katubaleka ni katubaleka me vakaraitaka na iwiliwili vinaka duadua ni vidio ni dua na laini, e sivia na grid ni vidio ni vidio me baleta na totolo ni totolo ni totolo .
// @description:fo        Dynamiskt stilla YouTube videonetið grundað á vindeygabreidd fyri at vísa besta talið av videoum á hvørjari linju, og skriva yvir forsett 3 videonet fyri skjótari svarandi uppsetingar
// @description:fr        Ajustez dynamiquement la grille vidéo YouTube en fonction de la largeur de la fenêtre pour afficher le meilleur nombre de vidéos par ligne, écrasant les 3 grilles vidéo par défaut pour des dispositions réactives plus rapides
// @description:fr-CA     Ajustez dynamiquement la grille vidéo YouTube en fonction de la largeur de la fenêtre pour afficher le meilleur nombre de vidéos par ligne, écrasant les 3 grilles vidéo par défaut pour des dispositions réactives plus rapides
// @description:fy        Dynamysk oanpasse de YouTube-fideo-roaster op basis fan finsterbreedte om it bêste oantal fideo’s per rigel te werjaan, de standert 3 fideo-roaster te ferskriuwen foar rapper respons
// @description:ga        Coigeartaigh an eangach físe YouTube go dinimiciúil bunaithe ar leithead na fuinneoige chun an líon is fearr físeáin a thaispeáint in aghaidh na líne, ag scríobh na greille físe réamhshocraithe 3 le haghaidh leagan amach sofhreagrach níos tapúla
// @description:gd        Atharraich clèithe bhidio YouTube stèidhichte air leud uinneig gus an àireamh de bhideothan as fheàrr a thaisbeanadh gach loidhne, a ’cur thairis air clioaichean naidheachd àbhaisteach airson cruthan nas luaithe
// @description:gl        Axuste dinámicamente a rede de vídeo de YouTube en función do ancho da xanela para amosar o mellor número de vídeos por liña, sobrescribindo as 3 cuadrículas predeterminadas para esquemas máis rápidos de resposta
// @description:gn        Emohenda dinámicamente YouTube video cuadrícula oñemopyendáva ventána ancho rehe ohechauka hag̃ua mboýpa oĩ video iporãvéva peteĩ línea rehe, ojehai jey hag̃ua umi cuadrícula 3 video rehegua por defecto umi diseño ombohovái pyaꞌevévape g̃uarã .
// @description:gsw-berne Dynamically adjust the YouTube video grid based on window width to display the best number of videos per line, overwriting the default 3 video grids for faster responsive layouts
// @description:gu        ઝડપી પ્રતિભાવ લેઆઉટ માટે ડિફ default લ્ટ 3 વિડિઓ ગ્રીડને ફરીથી લખવા માટે, લાઇન દીઠ શ્રેષ્ઠ સંખ્યામાં વિડિઓઝ પ્રદર્શિત કરવા માટે વિંડોની પહોળાઈના આધારે ગતિશીલ રીતે યુટ્યુબ વિડિઓ ગ્રીડને સમાયોજિત કરો
// @description:gv        Dy-dynamys y grid video YouTube er y leed y vee dy hoilshaghey y chooid smoo jeh ny videoyn son dagh line, s’cosoylagh rish ny 3 grids video t’er ny h-oik.
// @description:ha        Dogara ta daidaita Grid Grid Video Grid Bidiyo dangane da Window Sondard Don nuna mafi kyawun bidiyon da ke cikin layi na 3
// @description:he        התאם באופן דינמי את רשת הווידיאו של YouTube על בסיס רוחב החלון כדי להציג את המספר הטוב ביותר של סרטונים בשורה, מה שמחלף את ברירת המחדל 3 רשתות הווידיאו עבור פריסות מגיבות מהירות יותר
// @description:hi        गतिशील रूप से YouTube वीडियो ग्रिड को खिड़की की चौड़ाई के आधार पर समायोजित करें, प्रति पंक्ति में सबसे अच्छी संख्या में वीडियो प्रदर्शित करने के लिए, तेजी से उत्तरदायी लेआउट के लिए डिफ़ॉल्ट 3 वीडियो ग्रिड को ओवरराइट करना
// @description:hmn       Dynamically Kho cov yeeb yaj kiab YouTube hauv lub qhov rai dav mus rau cov yeeb yaj kiab zoo tshaj plaws rau ib kab
// @description:hr        Dinamički prilagodite YouTube video mrežu na temelju širine prozora kako biste prikazali najbolji broj videozapisa po retku, prebrisati zadane 3 video rešetke za brže odgovarajuće izglede
// @description:ht        Dinamikman ajiste kadriyaj videyo YouTube ki baze sou lajè fenèt pou montre pi bon kantite videyo pou chak liy, ranplase default 3 kadriyaj videyo pou pi vit kouman reponn
// @description:hu        Dinamikusan állítsa be a YouTube -videó rácsot az ablak szélessége alapján, hogy megjelenjen a legjobb videók száma soronként, felülírva az alapértelmezett 3 videokrácsot a gyorsabb reagáló elrendezésekhez
// @description:hy        Դինամիկորեն կարգավորեք YouTube վիդեո ցանցը `ելնելով պատուհանի լայնության վրա` յուրաքանչյուր տողի համար տեսանյութերի լավագույն քանակը ցուցադրելու համար, ավելի արագ արձագանքող դասավորությունների համար
// @description:id        Sesuaikan secara dinamis kisi -kisi video YouTube berdasarkan lebar jendela untuk menampilkan jumlah video terbaik per baris, menimpa grid video 3 default untuk tata letak responsif yang lebih cepat
// @description:ig        Didiely Ghazie VID Trid dabere na window iji gosipụta ọnụọgụ vidiyo kachasị mma maka ahịrị 3 video grids ngwa ngwa
// @description:is        Stilltu virkan YouTube myndbandsnet byggt á gluggabreidd til að birta besta fjölda myndbanda á hverja línu, skrifa yfir sjálfgefið 3 myndbandsnet fyrir hraðari viðbragðs skipulag
// @description:it        Regola dinamicamente la griglia video di YouTube in base alla larghezza della finestra per visualizzare il miglior numero di video per riga, sovrascrivendo le 3 griglie video predefinite per layout più rapidi
// @description:iu        ᐋᖅᑭᒋᐊᕐᓗᒍ YouTube ᑕᕐᕆᔭᓕᐊᖑᓯᒪᔪᖅ ᑐᙵᕕᖃᖅᑐᖅ ᐃᒐᓛᑉ ᓯᕕᑐᓂᖓᓂᒃ ᑕᑯᒃᓴᐅᑎᑦᑎᖁᓪᓗᒍ ᐱᐅᓂᖅᐹᓂᒃ ᑕᕐᕆᔭᒐᒃᓴᓂᒃ ᐊᑕᐅᓯᕐᒧᑦ ᑎᑎᕋᖅᓯᒪᔪᓄᑦ, ᑎᑎᕋᓗᐊᕐᓂᖅ 3-ᓂᒃ ᑕᕐᕆᔭᒐᒃᓴᓂᒃ ᓱᒃᑲᓂᖅᓴᒃᑯᑦ ᑭᐅᔪᓐᓇᖅᑐᓄᑦ ᐋᖅᑭᒃᓯᒪᓂᖏᓐᓄᑦ
// @description:ja        ウィンドウの幅に基づいてYouTubeビデオグリッドを動的に調整して、1行あたりのビデオ数の数を表示し、デフォルトの3つのビデオグリッドを上書きしてレスポンシブレイアウトを高速化します
// @description:jv        Dinamis nyetel kamare jendhela YouTube adhedhasar jembar jendhela kanggo nampilake jumlah video paling apik saben baris, nulis gawan 2 video standar kanggo tata letak responsif sing luwih cepet
// @description:ka        დინამიურად შეცვალეთ YouTube ვიდეო ქსელი ფანჯრის სიგანეზე დაყრდნობით, რომ ნახოთ საუკეთესო რაოდენობის ვიდეო თითო ხაზზე, გადაწერეთ ნაგულისხმევი 3 ვიდეო ბადე უფრო სწრაფი საპასუხო განლაგებისთვის
// @description:kg        Kuyidika na mutindu ya mbote réseau ya video ya YouTube yina me simbama na nene ya fenetre sambu na kumonisa ntalu ya kuluta mbote ya bavideo na konso nzila, na kusonikaka na zulu ya réseau ya bavideo 3 yina bo me tula na ntwala sambu na ba layout ya nswalu yina ke pesa mvutu .
// @description:kk        YouTube бейне торын терезе ені негізінде динамикалық түрде реттеңіз, бұл әр жолдың ең жақсы санын көрсету үшін, тезірек жауап беру үшін әдепкі 3 бейне торларды қайта жазыңыз
// @description:kl        YouTube-imi video-grid-i igalaaq tunngavigalugu dynamik-imik naleqqussarlugu, videot ataasiakkaat pitsaanerpaat takutinniarlugit, video-grid-it 3-t atorneqarsinnaasut sukkanerusumik akissuteqarfiginiarlugit
// @description:km        ការលៃតម្រូវក្រឡាចត្រង្គវីដេអូយូធ្យូបដោយផ្អែកលើទទឹងបង្អួចដើម្បីបង្ហាញចំនួនវីដេអូល្អបំផុតក្នុងមួយខ្សែការសរសេរជាន់លើការសរសេរជាន់លើទី 3 វីដេអូសម្រាប់ប្លង់ឆ្លើយតបលឿនជាងមុន
// @description:kn        ಪ್ರತಿ ಸಾಲಿಗೆ ಉತ್ತಮ ಸಂಖ್ಯೆಯ ವೀಡಿಯೊಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ವಿಂಡೋ ಅಗಲವನ್ನು ಆಧರಿಸಿ ಯೂಟ್ಯೂಬ್ ವಿಡಿಯೋ ಗ್ರಿಡ್ ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಹೊಂದಿಸಿ, ವೇಗವಾಗಿ ಸ್ಪಂದಿಸುವ ವಿನ್ಯಾಸಗಳಿಗಾಗಿ ಡೀಫಾಲ್ಟ್ 3 ವೀಡಿಯೊ ಗ್ರಿಡ್‌ಗಳನ್ನು ತಿದ್ದಿ
// @description:ko        창 너비를 기준으로 YouTube 비디오 그리드를 동적으로 조정하여 한 줄 당 가장 적합한 비디오 수를 표시하고 더 빠른 반응 형 레이아웃을 위해 기본 3 비디오 그리드를 덮어 씁니다.
// @description:kr        Nasha laa lan video do YouTube ye dəga faljin nəm farak window ye lan, video ngəla lai falyin fəletəro, kuru video grid video 3 ye dəga ruwozə duwaro awo kəlanzən tədin ma.
// @description:ku        Dînamîkî Grid Vîdyoya YouTube-ê li ser bingeha windabûna pencereyê bicîh bikin ku hejmar çêtirîn vîdyoyan li gorî xeta, ji bo pêvekên vîdyoyê yên 3 vîdyoyê dakêşin
// @description:kv        Динамика боксянь лӧсьӧдӧй YouTube видеосеть ӧшинь пасьта серти, медым петкӧдлыны медбур видео лыдсӧ ӧти линия вылӧ, умолчание серти 3 видеосетьяс ӧдйӧджык вочавидзысь планировкаяс вылӧ .
// @description:ky        Терезенин туурасы эң мыкты сандагы эң мыкты видеолорду көрсөтүү үчүн YouTube Video торун динамикалык түрдө тууралоо, бир сапка эң мыкты видеолорду чагылдырат, демейки 3 видео тармагын тез арада жооптуу
// @description:la        Dynamically adjust in YouTube videos eget secundum fenestram latitudinem ostentare optimum numerum videos per line, overwriting in default III video grids ad citius responsive layout
// @description:lb        Dynamik Upassung de YouTube Video GRIPUP baséiert op Fensterbreet fir déi bescht Zuel vu Videoen pro Line ze weisen, iwwerdréiglech ze weisen
// @description:lg        Dynamically adjust the YouTube video grid okusinziira ku bugazi bw’eddirisa okulaga omuwendo ogusinga obulungi ogwa vidiyo buli layini, okuwandiika ku 3 video grids for faster responsive responsive layouts
// @description:ln        Bobongisa na ndenge ya dynamique grille ya video ya YouTube na kotalela bonene ya fenetre mpo na kolakisa motango ya malamu koleka ya ba vidéos na ligne moko, kokoma likolo ya ba grille vidéo ya 3 par défaut mpo na ba layouts oyo ezali kopesa eyano ya mbangu .
// @description:lo        ປັບຕາຂ່າຍໄຟຟ້າວິດີໂອຢູ່ໃນປ່ອງຢ້ຽມແບບເຄື່ອນໄຫວເພື່ອສະແດງຈໍານວນວິດີໂອທີ່ດີທີ່ສຸດໃນເສັ້ນ, ການຂຽນທັບທີ່ມີຄວາມຕ້ອງການໃນຕອນຕົ້ນ
// @description:lt        Dinamiškai sureguliuokite „YouTube“ vaizdo įrašų tinklą pagal lango plotį, kad būtų rodomas geriausias vaizdo įrašų skaičius kiekvienoje eilutėje, perrašydami numatytus 3 vaizdo įrašų tinklelius, skirtas greitesniam reaguojančiam išdėstymui
// @description:lv        Dinamiski pielāgojiet YouTube video režģi, pamatojoties uz loga platumu, lai parādītu labāko videoklipu skaitu vienā rindā, pārrakstot noklusējuma 3 video režģus, lai veiktu ātrāku reaģējošu izkārtojumu
// @description:mg        Ampiharo amin’ny alàlan’ny Youtube Video Notsoraky ny YouTube mifototra amin’ny sakan’ny varavarankely mba hampisehoana ny isan’ny horonantsary tsara indrindra isaky ny andalana, fanoratana ny tahiry horonantsary 3 default 3
// @description:mh        Ej juon wāween eo em̧m̧an n̄an kōm̧m̧ane juon pija eo em̧m̧an tata n̄an kwaļo̧k jon̄an eo em̧m̧an tata ilo juon ļain, im ej kōm̧m̧an bwe en ļapļo̧k an ļapļo̧k an ļapļo̧k an ļapļo̧k an armej ro m̧ōņōņō .
// @description:mi        Ko te whakatika i te raarangi ataata YouTube i runga i te whanui matapihi hei whakaatu i te maha o nga ataata mo ia raina, ko te tuhi i nga tohu ataata 3 mo nga whakatakotoranga whakautu tere
// @description:mk        Динамички прилагодете ја видеото за видео на YouTube заснована на ширина на прозорецот за да се прикаже најдобриот број видеа по линија, препишувајќи ги стандардните 3 видео мрежи за побрзи распоред на одговорни
// @description:ml        വിൻഡോ വീതിയെ അടിസ്ഥാനമാക്കിയുള്ള YouTube വീഡിയോ ഗ്രിഡ് ക്രമീകരിക്കുക, വേഗത്തിൽ പ്രതികരിക്കുന്ന ലേ outs ട്ടുകളിനായുള്ള സ്ഥിരസ്ഥിതി 3 വീഡിയോ ഗ്രിഡുകളെ പുനരാലേഖനം ചെയ്യുക
// @description:mn        Шилдэг 3-р видео бичлэгийг харуулахын тулд WINDUBE VIDEROME-гийн хамгийн шилдэг видео бичлэгийг харуулахын тулд WINDUBE VIDERID-ийг дахин тохируулах
// @description:mo        Reglați dinamic rețeaua video YouTube pe baza lățimii ferestrei pentru a afișa cel mai bun număr de videoclipuri pe linie, suprascrisând 3 grile video implicite pentru machete mai rapide mai rapide
// @description:mr        विंडो रुंदीवर आधारित YouTube व्हिडिओ ग्रीड गतिशीलपणे समायोजित करा प्रति ओळीची उत्कृष्ट संख्या प्रदर्शित करण्यासाठी, वेगवान प्रतिसाद लेआउटसाठी डीफॉल्ट 3 व्हिडिओ ग्रिड अधिलिखित करते.
// @description:ms        Secara dinamik menyesuaikan grid video youtube berdasarkan lebar tetingkap untuk memaparkan bilangan video terbaik setiap baris, menimpa grid video lalai 3 untuk susun atur responsif yang lebih cepat
// @description:mt        Aġġusta b’mod dinamiku l-grilja tal-vidjow YouTube bbażata fuq il-wisa ’tat-tieqa biex turi l-aħjar numru ta’ vidjows għal kull linja, tibki l-grilji tal-vidjow default 3 għal tqassim li jirrispondi aktar malajr
// @description:my        သင့်တော်သောတုန့်ပြန်မှုများကိုပိုမိုမြန်ဆန်သောဗီဒီယိုနံပါတ်များကိုပြသရန် Window အကျယ်ကိုပြသနိုင်ရန်အတွက် Window Width ကို အခြေခံ. Youtube Video Grid ကို Dyname ဗီဒီယို GRID ကိုချိန်ညှိပါ
// @description:nb        Juster dynamisk YouTube Video Grid basert på vindusbredde for å vise det beste antallet videoer per linje, og overskrive standard 3 videoutgrader for raskere responsive oppsett
// @description:ne        गतिशील रूपमा तपाइँ प्रति रेखाको सर्वश्रेष्ठ संख्या प्रदर्शन गर्न विन्डोज चौडाइमा आधारित यूट्यूब भिडियो ग्रिड समायोजित गर्नुहोस्, छिटो उत्तरदायी लेआउटहरूको लागि पूर्वनिर्धारित 3 भिडियो ग्रिडहरू अधिकांश
// @description:nl        Pas het YouTube -videoretsel dynamisch aan op basis van de vensterbreedte om het beste aantal video’s per regel weer te geven, waarbij de standaard 3 videograden worden overschreven voor snellere responsieve lay -outs
// @description:nr        Kusilili 10, u-alis 10.
// @description:ny        Sinthani mwamphamvu vidiyo ya YouTube kutengera pawindo kutalika kwambiri kuti muwonetse makanema pamzere umodzi, kupitirira mavidiyo atatu a mavidiyo a kafukufuku
// @description:oc        Ajustar dinamicament la grasilha vidèo de YouTube en foncion de la largor de fenèstra per afichar lo melhor nombre de vidèos per linha, en subrescrivent las grasilhas vidèo per defaut per de disposicions responsivas mai rapidas
// @description:om        Lakkoofsa viidiyoo sarara tokkoof hunda caalu agarsiisuuf giiridii viidiyoo YouTube irratti hundaa’uun daayinamiikiin sirreessaa, qindaa’ina deebii saffisaa ta’eef giiriiwwan viidiyoo durtii 3 irra barreessuu .
// @description:or        ପରିସରର ସର୍ବୋତ୍ତମ ସଂଖ୍ୟା ଅନୁଯାୟୀ ଭିଡିଓ ଗ୍ରୀଡ୍ ଉପରେ ଗତି କରୁଥିବା ୱିଣ୍ଡୋ ମୋସ୍ତାକୁ ଗତିଶୀଳ ଭାବରେ ୟୁଟ୍ୟୁବ୍ ଭିଡିଓ ଗ୍ରୀଡ୍ କୁ ଦୃ un ତା କରାଇବା ପାଇଁ ଗତି କରେ |
// @description:os        Динамикон æгъдауæй æрæвæрын YouTube-ы видео-сеть, рудзынджы уæрхмæ гæсгæ, цæмæй равдиса хуыздæр нымæц видеотæ иу рæнхъæй, æрæвæрдта æнæмæнгхъæуæг 3 видеосеты æнæмæнгхъæуæгæй тагъддæр дзуаппдæттæг æвæрдтæн
// @description:pa        ਗਤੀਸ਼ੀਲ ਤੌਰ ਤੇ ਯੂਟਿ ube ਬ ਵੀਡੀਓ ਗਰਿੱਡ ਨੂੰ ਪ੍ਰਤੀ ਲਾਈਨ ਸਭ ਤੋਂ ਵਧੀਆ ਵੀਡੀਓ ਪ੍ਰਦਰਸ਼ਤ ਕਰਨ ਲਈ ਅਧਾਰਤ, ਤੇਜ਼ ਜਵਾਬਦੇਹ ਖਾਕੇ ਲਈ 3 ਵੀਡੀਓ ਗਰਡਜ਼ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਨਾ
// @description:pl        Dynamicznie dostosuj siatkę wideo YouTube na podstawie szerokości okna, aby wyświetlić najlepszą liczbę filmów na wiersz, zastąpując domyślne 3 siatki wideo dla szybszych responsywnych układów
// @description:ps        په متحرک ډول د یوټیوب ویډیو ګریډ تنظیم کړئ ترڅو په هره کرښه کې د ویډیوګانو ښودلو لپاره د وینډوز (د ډیفالټ 3 ویډیو ګریډونو ښودنه وکړئ
// @description:pt        Ajuste dinamicamente a grade de vídeo do YouTube com base na largura da janela para exibir o melhor número de vídeos por linha, substituindo as 3 grades de vídeo padrão para layouts responsivos mais rápidos
// @description:pt-BR     Ajuste dinamicamente a grade de vídeo do YouTube com base na largura da janela para exibir o melhor número de vídeos por linha, substituindo as 3 grades de vídeo padrão para layouts responsivos mais rápidos
// @description:pt-PT     Ajuste dinamicamente a grade de vídeo do YouTube com base na largura da janela para exibir o melhor número de vídeos por linha, substituindo as 3 grades de vídeo padrão para layouts responsivos mais rápidos
// @description:qu        Dinamicamente YouTube video cuadrícula kaqpi ventana ancho kaqpi allin yupay videokuna sapa linea kaqpi rikuchinapaq, ñawpaqmanta 3 video rejillas kaqmanta aswan utqaylla kutichiq churaykunapaq qillqay.
// @description:rn        Muhindure video ya YouTube ishingiye ku bwaguke bw’idirisha kugira ngo ugaragaze umubare mwiza cane w’amasanamu ku murongo, ukarengera ku nzira y’amasanamu 3 y’agaciro kugira ngo ubone imiterere yihuta
// @description:ro        Reglați dinamic rețeaua video YouTube pe baza lățimii ferestrei pentru a afișa cel mai bun număr de videoclipuri pe linie, suprascrisând 3 grile video implicite pentru machete mai rapide mai rapide
// @description:ru        Динамически отрегулируйте видео сетку на YouTube на основе ширины окна, чтобы отобразить лучшее количество видео на строку, перезаписывая видео сетки по умолчанию 3 для более быстрых отзывных макетов
// @description:rw        Guhindura imboro ya YouTube Video ishingiye kubugari bwidirishya kugirango yerekane umubare mwiza wa videwo kumurongo, kurenga kuri gride isanzwe ya videwo 3 ya videwo yitabira byihuse
// @description:sa        गतिशीलतया YouTube Video Grid इत्येतत् विण्डो चौड़ाई इत्यस्य आधारेण समायोजयन्तु यत् प्रतिपङ्क्तिं सर्वोत्तमसङ्ख्यायाः विडियो प्रदर्शयितुं, द्रुततरप्रतिसादविन्यासानां कृते पूर्वनिर्धारितं 3 विडियो ग्रिड् overwriting करणम्
// @description:sd        متحرڪ طور تي يوٽيوب ويڊيو گرڊ کي ترتيب ڏيڻ لاء ونڊو جي ويڪر کي ترتيب ڏيڻ لاء ونڊوز جي ويڪر کي ترتيب ڏيڻ لاء وڊيو ويڪر کي ترتيب ڏيڻ، فيڪٽري جي بهترين جوابي ترتيب ڏيڻ لاء
// @description:se        Dynámalaččat heivehit YouTube-videoráiddu vuođđuduvvon uvssaviidodahkii vai čájehat buoremus video juohke linjás, ja čále badjel 3 videofierpmádaga, vai vástideaddji layouts lea jođáneappot vástideaddji layout.
// @description:sg        Na lege ti fä, leke grille ti vidéo ti YouTube so aluti na ndo ti largeur ti fenêtre ni ti fa nzoni wungo ti avidéo na ndo ti ligne oko oko, na sû na ndo ti a-appareil ti vidéo 3 so a zia ni nde ti tene a leke ni hio .
// @description:sh        Динамично подесите ИоуТубе видео решетку на основу ширине прозора да бисте приказали најбољи број видео записа по линији, преписивање подразумеваних 3 видео решетке за брже одговорно распореди
// @description:si        පේළියකට හොඳම වීඩියෝ අංකය ප්රදර්ශනය කිරීම සඳහා කවුළු පළල මත පදනම්ව යූ ටියුබ් වීඩියෝ ජාලයක් අනුගමනය කරන්න, පෙරනිමි පිරිසැලසුම් සඳහා පෙරනිමි 3 වීඩියෝ ජාල
// @description:sk        Dynamicky upravte video YouTube na základe šírky okna tak, aby sa zobrazila najlepší počet videí na riadok, a prepísanie predvolených 3 video mriežky pre rýchlejšie responzívne rozloženie
// @description:sl        Dinamično prilagodite video omrežje YouTube na podlagi širine oken, da prikažete najboljše število videoposnetkov na vrstico in prepišite privzete 3 video mreže za hitrejše odzivne postavitve
// @description:sm        Dynamically fetuunai le YouTube vitio Grid faʻavae i luga o le faʻamalama lautele e faʻaali ai le sili atu numera o vitio i le laina o le 3 vitio mo le vave tali atu 3 vine
// @description:sn        Dynamaly gadzirisa iyo YouTube vhidhiyo Grid yakavakirwa pawindows upamhi kuratidza iyo yakanakisa nhamba yemavhidhiyo pamutsetse
// @description:so        Si firfircoon ula qabsato dhajiska fiidiyowga ee YouTube-ka oo ku saleysan ballaca daaqadaha si aad u muujiso tirada ugu wanaagsan ee fiidiyowyada halkii xariiq kasta, waxoogaa qorista xargaha 3-da ee xargaha fiidiyowga ah
// @description:sq        Rregulloni dinamikisht rrjetin e videos në YouTube bazuar në gjerësinë e dritares për të shfaqur numrin më të mirë të videove për rresht, duke kapërcyer 3 rrjetet e paracaktuara të videove për paraqitjet më të shpejta të përgjegjshme
// @description:sr        Динамично подесите ИоуТубе видео решетку на основу ширине прозора да бисте приказали најбољи број видео записа по линији, преписивање подразумеваних 3 видео решетке за брже одговорно распореди
// @description:ss        Lungisa ngemoya igridi yevidiyo ye-YouTube lesekelwe ebubanti befasitela kute ukhombise linani lelihle kakhulu lemavidiyo ngemugca, ubhale ngetulu kwemagridi langu-3 evidiyo kute utfole ema-lauts laphendvula ngekushesha .
// @description:st        Fokotsa grid ea video ea YouTube e thehiloeng ho ea bophara ba livideo ho bontša palo e ntle ea livideo ka tatellano ea livideo ka tatellano
// @description:su        Dinamis nyaluyukeun video YouTube Grid dumasar kana lebar jandéla pikeun nunjukkeun nomer video pangsaéna pikeun garis, oversal Fungsi standar langkung gancang
// @description:sv        Justera dynamiskt YouTube -videorätet baserat på fönsterbredd för att visa det bästa antalet videor per rad, och skriver över standard 3 -videoräten för snabbare responsiva layouter
// @description:sw        Rekebisha kwa nguvu gridi ya video ya YouTube kulingana na upana wa windows kuonyesha idadi bora ya video kwa kila mstari, kuorodhesha gridi 3 za video za chaguo -msingi kwa mpangilio wa msikivu wa haraka
// @description:ta        ஒரு வரிக்கு சிறந்த எண்ணிக்கையிலான வீடியோக்களைக் காண்பிக்க சாளர அகலத்தின் அடிப்படையில் YouTube வீடியோ கட்டத்தை மாறும் வகையில் சரிசெய்யவும், இயல்புநிலை 3 வீடியோ கட்டங்களை விரைவான பதிலளிக்கக்கூடிய தளவமைப்புகளுக்கு மேலெழுதும்
// @description:te        విండో వెడల్పు ఆధారంగా యూట్యూబ్ వీడియో గ్రిడ్‌ను డైనమిక్‌గా సర్దుబాటు చేయండి, ప్రతి పంక్తికి ఉత్తమమైన వీడియోలను ప్రదర్శించడానికి, వేగంగా ప్రతిస్పందించే లేఅవుట్ల కోసం డిఫాల్ట్ 3 వీడియో గ్రిడ్‌లను ఓవర్రైట్ చేస్తుంది
// @description:tg        Шабакаҳои видеоии YouTube-ро дар асоси дуографи тиреза ба таври фаврӣ танзим кунед
// @description:th        ปรับตารางวิดีโอ YouTube แบบไดนามิกตามความกว้างของหน้าต่างเพื่อแสดงจำนวนวิดีโอที่ดีที่สุดต่อบรรทัดการเขียนทับกริดวิดีโอเริ่มต้น 3 ค่าเริ่มต้นสำหรับเลย์เอาต์ที่ตอบสนองได้เร็วขึ้น
// @description:ti        ኣብ ነፍሲ ወከፍ መስመር ዝበለጸ ቁጽሪ ቪድዮታት ንምርኣይ፡ ነቲ ናይ ዩቱብ ቪድዮ ሽቦ መሰረት ብምግባር፡ ነቲ ናይ ዩቱብ ቪድዮ ሽቦ መሰረት ብምግባር፡ ነቲ ነባሪ 3 ናይ ቪድዮ ሽቦታት ንዝቐልጠፈ ምላሽ ዝህብ ኣቀማምጣታት ጽሒፍካ ብምጽሓፍ፡ ነቲ ዝበለጸ ቁጽሪ ቪድዮታት ንምቕራብ፡ ብስፍሓት መስኮት ኣስተኻኽሎ።
// @description:tk        Çelgaryň dinamiki görnüşini dinamiki giňeltmek üçin "Noutube Vrid" -y çyzyň
// @description:tl        Dinamikong ayusin ang grid ng video sa YouTube batay sa lapad ng window upang ipakita ang pinakamahusay na bilang ng mga video bawat linya, na overwriting ang default na 3 video grids para sa mas mabilis na pagtugon sa mga layout
// @description:tn        Fetola ka tsela e e sa siamang mo keriting ya bidio ya YouTube e e theilweng mo bophara jwa fensetere go bontsha palo e e gaisang ya dibidio ka mola, o kwalolola dikiriti tsa dibidio tse 3 tse di tlhomameng tsa dithulaganyo tse di tsibogang ka bonako
// @description:to        ’I he dinamically fakatonutonu ’a e vitio ’o e vitio ’o makatu’unga ’i he matapa sio’ata ’o e laulahi ke fakahaa’i ’a e lahi lelei taha ’o e ngaahi vitio ’i he laine, ’o overwriting ’a e default 3 vitio grids ki he ngaahi fokotu’utu’u tali vave ange .
// @description:tr        YouTube Video Izgarayı, satır başına en iyi sayıda video sayısını görüntülemek için pencere genişliğine göre dinamik olarak ayarlayarak, daha hızlı duyarlı düzenler için varsayılan 3 video ızgaralarının üzerine yazarak
// @description:ts        Hi ku cinca-cinca lulamisa giridi ya vhidiyo ya YouTube hi ku ya hi ku anama ka fasitere ku kombisa nhlayo leyinene ya tivhidiyo hi layini, u tsala ehenhla ka tigridi ta vhidiyo ta 3 ta ntolovelo leswaku u kuma swivumbeko leswi hlamulaka hi ku hatlisa .
// @description:tt        Тәрәзә киңлегеннән иң яхшы саннарны күрсәтү өчен, Тәрәзә киңлеге нигезендә YouTube видео челтәрен көйләгез, тизрәк җаваплылык маюментлары өчен
// @description:tw        Fa dynamically siesie YouTube video grid a egyina window width so ma ɛkyerɛ video dodow a eye sen biara wɔ line biara mu, na kyerɛw default 3 video grids no so ma ɛyɛ ntɛm mmuae nhyehyɛe .
// @description:ty        No te faaite i te numera maitai roa ’ ’ e o te mau hoho’a teata i nia i te reni, a tata’i i te ana’iraa hoho’a YouTube ia au i te rahi o te matapihi, ma te papa’i rahi i te mau ana’iraa video e 3 no te mau hoho’a oioi
// @description:ug        ھەر بىر قۇرغا مۇناسىۋەتلىك سىنلارنى ئاساس قىلىپ, ھەر بىر لىنىيەنىڭ ئەڭ كۆپ سانىنى كۆرسىتىش ئۈچۈن كۆزنەك سىن تورىنى كۆرسىتىش, سۈكۈتتىكى 3 سىن تورىنى تېخىمۇ ئەرزان باھاغا چاپلاش ئۈچۈن, سۈكۈتتىكى 3 سىن تورىنى قاپلايدۇ
// @description:uk        Динамічно відрегулюйте відео -сітку YouTube на основі ширини вікна, щоб відобразити найкращу кількість відеороликів на рядок, перезаписавши 3 -х сітки відео за замовчуванням для більш швидких реагуючих макетів
// @description:ur        متحرک طور پر یوٹیوب ویڈیو گرڈ کو ونڈو کی چوڑائی پر مبنی ایڈجسٹ کریں تاکہ فی لائن کی بہترین تعداد میں ویڈیوز کو ظاہر کیا جاسکے ، تیز رفتار ذمہ دار ترتیب کے لئے پہلے سے طے شدہ 3 ویڈیو گرڈ کو اوور رائٹنگ کریں۔
// @description:uz        YouTube Video Gridni deraza kengligini deraza kengligi asosida derazadagi eng ko’p videolarni aks ettirish uchun eng ko’p video panjaralarni qayta yozing
// @description:ve        U dzudzanya nga nḓila ya vhuṱali giridi ya vidio ya YouTube yo thewaho kha vhuphara ha fasiṱere u itela u sumbedza tshivhalo tsha khwine tsha vidio nga mutevhe, u ṅwala nga nṱha ha giridi dza vidio dza 3 dza mvelele u itela u ṱavhanya u fhindula .
// @description:vi        Động điều chỉnh lưới điện tử YouTube dựa trên chiều rộng cửa sổ để hiển thị số video tốt nhất trên mỗi dòng, ghi đè lên 3 lưới video mặc định để bố cục phản hồi nhanh hơn
// @description           Dynamically adjusts the YouTube video grid to display an optimal number of videos per row based on window width, overriding the default 3-video grid for a more responsive layout
// @description:wo        Ci anam wu leer, dafay méngale wideo YouTube bi lalu ci yaatuwaayu palanteer bi ngir wane limu wideo yi gëna baax ci ligne bu nekk, di gëna bind reso 3 wideo yi ngir gëna gaaw
// @description:xh        Ukulungelelanisa i-YouNoull Graid yeVidiyo yeVidiyo esekwe kububanzi befestile yokubonisa ezona ntlobo ze-videos kumgca ngamnye, ukubhala ngaphezulu iigridi zevidiyo ezi-3 ze-Grids yevidiyo
// @description:yi        דינאַמיקאַללי אַדזשאַסטיד די יאָוטובע ווידעא גריד באזירט אויף פֿענצטער ברייט צו ווייַזן די בעסטער נומער פון ווידיאס פּער שורה, אָווועררייטינג די פעליקייַט 3 ווידעא גרידאַוץ
// @description:yo        Dylminally satunṣe ori didi fidio YouTube da lori iwọn window lati ṣafihan nọmba awọn fidio ti o dara julọ 3
// @description:zh        根据窗口宽度动态调整 YouTube 视频网格,以每行显示最佳数量的视频,覆盖默认的 3 个视频网格,以实现响应更快的布局
// @description:zh-CN     根据窗口宽度动态调整 YouTube 视频网格,以每行显示最佳数量的视频,覆盖默认的 3 个视频网格,以实现响应更快的布局
// @description:zh-HK     根據窗口寬度動態調整 YouTube 視頻網格,以每行顯示最佳數量的視頻,覆蓋默認的 3 個視頻網格,以實現響應更快的佈局
// @description:zh-MO     根據窗口寬度動態調整 YouTube 視頻網格,以每行顯示最佳數量的視頻,覆蓋默認的 3 個視頻網格,以實現響應更快的佈局
// @description:zh-MY     根据窗口宽度动态调整 YouTube 视频网格,以每行显示最佳数量的视频,覆盖默认的 3 个视频网格,以实现响应更快的布局
// @description:zh-SG     根据窗口宽度动态调整 YouTube 视频网格,以每行显示最佳数量的视频,覆盖默认的 3 个视频网格,以实现响应更快的布局
// @description:zh-TW     根據窗口寬度動態調整 YouTube 視頻網格,以每行顯示最佳數量的視頻,覆蓋默認的 3 個視頻網格,以實現響應更快的佈局
// @description:zu        Lungisa ngokunamandla i-Grid yevidiyo ye-YouTube ngokususelwa ku-Windows Ububanzi bokubonisa inani elihle kakhulu lamavidiyo ngakunye, ngaphezulu kokubhala ama-grid azenzakalelayo ama-3 wezakhiwo ezisabelayo ezisheshayo
// @author                Nick Fedor
// @namespace             https://github.com/nicholas-fedor/youtube-dynamic-grid
// @supportURL            https://github.com/nicholas-fedor/youtube-dynamic-grid/issues
// @homepageURL           https://github.com/nicholas-fedor/youtube-dynamic-grid
// @homepage              https://github.com/nicholas-fedor/youtube-dynamic-grid
// @license               MIT
// @match                 https://www.youtube.com/*
// @match                 https://youtube.com/*
// @icon                  https://www.youtube.com/s/desktop/ee47b5e0/img/logos/favicon_144x144.png
// @compatible            chrome
// @compatible            firefox
// @compatible            edge
// @compatible            opera
// @compatible            safari
// @compatible            kiwi
// @compatible            qq
// @compatible            via
// @compatible            brave
// @version               2025.6.3.1
// @run-at                document-end
// ==/UserScript==

/**
 * YouTube Dynamic Video Grid Tampermonkey script.
 * Adjusts the YouTube video grid to display 3-12 videos per row based on window width.
 * Skips execution on playlist pages to prevent layout overlap.
 * Version history:
 * - 1.0.2 (2025-05-30): Fixed playlist overlap, improved navigation handling, refactored for maintainability.
 * - 1.0.1 (2025-05-13): Added SPA navigation, CSP compliance, optimized polling.
 * - 1.0.0 (2024-04-25): Initial release.
 */

(function () {
    'use strict'

    // Configuration constants
    const CONFIG = {
        VIDEO_WIDTH: 340, // Thumbnail width in pixels
        MARGIN: 40, // Total left/right margins in pixels
        GAP: 10, // Spacing between thumbnails in pixels
        MIN_ITEMS: 3, // Minimum items per row
        MAX_ITEMS: 12, // Maximum items per row
        NAVIGATION_POLL_INTERVAL: 500, // Navigation polling interval in ms
        GRID_POLL_INTERVALS: { early: 200, regular: 1000 }, // Polling intervals in ms
        POLLING_DURATIONS: { early: 5000, regular: 25000 }, // Polling durations in ms
        DEBOUNCE_DELAY: 100, // Debounce delay for navigation and resize in ms
        UPDATE_DELAY: 50, // Debounce delay for grid updates in ms
        RETRY_ATTEMPTS: 20, // Grid update retry attempts
        RETRY_INTERVAL: 100, // Retry interval in ms
        STABLE_COUNT: 5 // Number of stable checks to stop polling
    }

    // Utility Functions
    /**
     * Checks if the current page is a YouTube playlist page.
     * @returns {boolean} True if URL starts with /playlist
     */
    const isPlaylistPage = () => window.location.pathname.startsWith('/playlist')

    /**
     * Logs messages to the console based on debug mode and log level.
     * @param {string} message - Message to log
     * @param {'info' | 'debug' | 'error'} [level='info'] - Log level
     */
    const logger = (message, level = 'info') => {
        const isDebug = window.location.search.includes('debug=1')
        if (
            level === 'error' ||
            (isDebug && (level === 'info' || level === 'debug'))
        ) {
            console[level === 'error' ? 'error' : 'log'](
                `[YouTube Dynamic Grid][${level}] ${message}`
            )
        }
    }

    // Grid Management Functions
    const GridManager = {
        /**
         * Calculates the number of items per row based on container width.
         * @returns {number} Number of items per row (3-12)
         */
        calculateItemsPerRow() {
            const container = document.querySelector(
                '#contents, ytd-two-column-browse-results-renderer, body'
            )
            if (!container) {
                logger('No container found for grid calculation', 'error')
                return CONFIG.MIN_ITEMS
            }
            const width =
                container.getBoundingClientRect().width || window.innerWidth
            const items = Math.round(
                (width - CONFIG.MARGIN) / (CONFIG.VIDEO_WIDTH + CONFIG.GAP)
            )
            return Math.max(CONFIG.MIN_ITEMS, Math.min(CONFIG.MAX_ITEMS, items))
        },

        /**
         * Updates the grid's elements-per-row attribute and CSS styles.
         */
        updateGrid() {
            if (this.updateTimeout) clearTimeout(this.updateTimeout)
            this.updateTimeout = setTimeout(() => {
                try {
                    const grid = document.querySelector(
                        'ytd-rich-grid-renderer:not([hidden])'
                    )
                    if (!grid) {
                        logger('No visible grid found')
                        return
                    }
                    const itemsPerRow = this.calculateItemsPerRow()
                    const currentItems = getComputedStyle(grid)
                        .getPropertyValue('--ytd-rich-grid-items-per-row')
                        .trim()
                    const currentAttr =
                        grid.getAttribute('elements-per-row') || 'unknown'
                    if (
                        currentItems !== String(itemsPerRow) ||
                        currentAttr !== String(itemsPerRow)
                    ) {
                        grid.setAttribute('elements-per-row', itemsPerRow)
                        this.updateCSS(itemsPerRow)
                        logger(`Updated grid to ${itemsPerRow} items`)
                    }
                } catch (error) {
                    logger(`Failed to update grid: ${error.message}`, 'error')
                }
            }, CONFIG.UPDATE_DELAY)
        },

        /**
         * Injects or updates the CSS style element for the grid.
         */
        injectCSS() {
            if (isPlaylistPage()) {
                logger('Skipping CSS injection on playlist page')
                this.removeCSS()
                return
            }
            let style = document.getElementById('dynamic-grid-style')
            if (!style) {
                style = document.createElement('style')
                style.id = 'dynamic-grid-style'
                const nonce = document.querySelector('meta[name="csp-nonce"]')?.content
                if (nonce) style.nonce = nonce
                document.head.appendChild(style)
                logger('Injected CSS style element', 'debug')
            }
            this.updateCSS(this.calculateItemsPerRow())
        },

        /**
         * Updates the CSS rule for the specified number of items per row.
         * @param {number} itemsPerRow - Number of items per row
         */
        updateCSS(itemsPerRow) {
            const style = document.getElementById('dynamic-grid-style')
            if (!style) return
            style.textContent = `
          #contents, ytd-two-column-browse-results-renderer {
            max-width: 100% !important;
            width: 100% !important;
            padding: 0 !important;
          }
          ytd-rich-grid-renderer:not([hidden]) {
            --ytd-rich-grid-items-per-row: ${itemsPerRow} !important;
            --ytd-rich-grid-posts-per-row: ${itemsPerRow} !important;
            max-width: 100% !important;
            padding: 0 !important;
            gap: ${CONFIG.GAP}px !important;
          }
          ytd-rich-grid-renderer:not([hidden]) [is-in-first-column] {
            margin-left: 8px !important;
            margin-right: 8px !important;
            margin-bottom: 16px !important;
          }
          ytd-rich-grid-renderer:not([hidden]) ytd-rich-item-renderer {
            margin: 0 8px 16px 8px !important;
          }
        `
        },

        /**
         * Removes the CSS style element and resets grid attributes.
         */
        removeCSS() {
            const style = document.getElementById('dynamic-grid-style')
            if (style) {
                style.remove()
                logger('Removed CSS style element', 'debug')
            }
            const grid = document.querySelector('ytd-rich-grid-renderer')
            if (grid) {
                grid.removeAttribute('elements-per-row')
                grid.style.removeProperty('--ytd-rich-grid-items-per-row')
                grid.style.removeProperty('--ytd-rich-grid-posts-per-row')
                logger('Reset grid attributes', 'debug')
            }
        },

        /**
         * Attempts to update the grid with retries.
         * @param {number} [attempts=CONFIG.RETRY_ATTEMPTS] - Retry attempts
         */
        tryUpdate(attempts = CONFIG.RETRY_ATTEMPTS) {
            if (isPlaylistPage()) {
                logger('Skipping grid update on playlist page')
                this.removeCSS()
                return
            }
            this.updateGrid()
            if (
                attempts > 0 &&
                !document.querySelector('ytd-rich-grid-renderer:not([hidden])')
            ) {
                logger(`Retrying grid update (${attempts} attempts left)`, 'debug')
                setTimeout(() => this.tryUpdate(attempts - 1), CONFIG.RETRY_INTERVAL)
            }
        },

        /**
         * Polls the grid for changes until stable.
         * @param {'early' | 'regular'} mode - Polling mode
         */
        pollGrid(mode = 'early') {
            if (isPlaylistPage()) {
                logger(`Skipping ${mode} polling on playlist page`)
                this.removeCSS()
                return
            }
            if (this.pollInterval) clearInterval(this.pollInterval)
            let stableCount = 0
            const interval = CONFIG.GRID_POLL_INTERVALS[mode]
            const duration = CONFIG.POLLING_DURATIONS[mode]
            this.pollInterval = setInterval(() => {
                const grid = document.querySelector(
                    'ytd-rich-grid-renderer:not([hidden])'
                )
                if (grid) {
                    const currentItems = getComputedStyle(grid)
                        .getPropertyValue('--ytd-rich-grid-items-per-row')
                        .trim()
                    const currentAttr =
                        grid.getAttribute('elements-per-row') || 'unknown'
                    const itemsPerRow = this.calculateItemsPerRow()
                    if (
                        currentItems !== String(itemsPerRow) ||
                        currentAttr !== String(itemsPerRow)
                    ) {
                        this.updateGrid()
                        stableCount = 0
                    } else {
                        stableCount++
                        if (stableCount >= CONFIG.STABLE_COUNT) {
                            clearInterval(this.pollInterval)
                            logger(`Stopped ${mode} polling: grid stable`)
                            if (mode === 'early') this.pollGrid('regular')
                            else this.updateGrid()
                        }
                    }
                }
            }, interval)
            setTimeout(() => {
                clearInterval(this.pollInterval)
                logger(`Stopped ${mode} polling`)
                if (mode === 'early') this.pollGrid('regular')
                else this.updateGrid()
            }, duration)
        },

        // Internal state
        updateTimeout: null,
        pollInterval: null
    }

    // Navigation Management Functions
    const NavigationManager = {
        /**
         * Handles navigation events by reinitializing the grid.
         */
        handleNavigation() {
            if (this.navigationDebounce) clearTimeout(this.navigationDebounce)
            this.navigationDebounce = setTimeout(() => {
                this.navigationTimeouts.forEach(clearTimeout)
                this.navigationTimeouts = []
                cleanup()
                if (isPlaylistPage()) {
                    logger('Skipping grid initialization on playlist page')
                    GridManager.removeCSS()
                    return
                }
                logger('Initializing grid for non-playlist page')
                GridManager.injectCSS()
                GridManager.tryUpdate()
                this.startObserver()
                GridManager.pollGrid()
                this.navigationTimeouts.push(
                    setTimeout(() => GridManager.updateGrid(), 1000)
                )
                this.navigationTimeouts.push(
                    setTimeout(() => GridManager.updateGrid(), 5000)
                )
                this.navigationTimeouts.push(
                    setTimeout(() => GridManager.updateGrid(), 10000)
                )
                if (this.eventListeners) cleanup()
                this.eventListeners = this.setupEventListeners()
            }, CONFIG.DEBOUNCE_DELAY)
        },

        /**
         * Monitors SPA navigation via URL polling.
         */
        monitorNavigation() {
            setInterval(() => {
                const currentUrl = location.href
                if (currentUrl !== this.lastUrl) {
                    this.lastUrl = currentUrl
                    logger(`Navigated to ${currentUrl}`, 'debug')
                    this.handleNavigation()
                }
            }, CONFIG.NAVIGATION_POLL_INTERVAL)
            logger('Started navigation polling', 'debug')
        },

        /**
         * Starts the MutationObserver for grid changes.
         */
        startObserver() {
            if (isPlaylistPage()) {
                logger('Skipping observer start on playlist page')
                GridManager.removeCSS()
                return
            }
            if (this.observer) {
                this.observer.disconnect()
                logger('Disconnected previous observer', 'debug')
            }
            this.observer = new MutationObserver(mutations => {
                for (const mutation of mutations) {
                    if (
                        mutation.target.matches('ytd-rich-grid-renderer') ||
                        mutation.target.closest('ytd-rich-grid-renderer') ||
                        mutation.target.querySelector('ytd-rich-grid-renderer') ||
                        ['style', 'hidden', 'class', 'elements-per-row'].includes(
                            mutation.attributeName
                        ) ||
                        mutation.addedNodes.length > 0
                    ) {
                        GridManager.updateGrid()
                        break
                    }
                }
            })
            const target = document.querySelector(
                '#contents, ytd-two-column-browse-results-renderer, ytd-app'
            )
            if (target) {
                this.observer.observe(target, {
                    childList: true,
                    subtree: true,
                    attributes: true,
                    attributeFilter: ['style', 'class', 'hidden', 'elements-per-row']
                })
                logger('Started observer', 'debug')
            } else {
                logger('Observer target not found, retrying', 'debug')
                setTimeout(() => this.startObserver(), CONFIG.RETRY_INTERVAL)
            }
        },

        /**
         * Sets up event listeners for resize, load, and popstate.
         * @returns {Object} Listener references
         */
        setupEventListeners() {
            if (isPlaylistPage()) {
                logger('Skipping event listener setup on playlist page')
                return null
            }
            const resizeHandler = () => {
                clearTimeout(this.resizeTimeout)
                this.resizeTimeout = setTimeout(() => {
                    logger('Window resized', 'debug')
                    if (!isPlaylistPage()) GridManager.updateGrid()
                }, CONFIG.DEBOUNCE_DELAY)
            }
            const loadHandler = () => {
                logger('Page loaded', 'debug')
                this.handleNavigation()
            }
            const popstateHandler = () => {
                logger('Popstate navigation detected', 'debug')
                this.handleNavigation()
            }
            window.addEventListener('resize', resizeHandler)
            window.addEventListener('load', loadHandler)
            window.addEventListener('popstate', popstateHandler)
            logger('Set up event listeners', 'debug')
            return { resizeHandler, loadHandler, popstateHandler }
        },

        // Internal state
        lastUrl: location.href,
        observer: null,
        navigationTimeouts: [],
        navigationDebounce: null,
        resizeTimeout: null,
        eventListeners: null
    }

    /**
     * Cleans up all resources (observers, intervals, listeners).
     */
    function cleanup() {
        if (NavigationManager.observer) {
            NavigationManager.observer.disconnect()
            NavigationManager.observer = null
        }
        if (GridManager.pollInterval) {
            clearInterval(GridManager.pollInterval)
            GridManager.pollInterval = null
        }
        NavigationManager.navigationTimeouts.forEach(clearTimeout)
        clearTimeout(NavigationManager.resizeTimeout)
        clearTimeout(GridManager.updateTimeout)
        clearTimeout(NavigationManager.navigationDebounce)
        if (NavigationManager.eventListeners) {
            window.removeEventListener(
                'resize',
                NavigationManager.eventListeners.resizeHandler
            )
            window.removeEventListener(
                'load',
                NavigationManager.eventListeners.loadHandler
            )
            window.removeEventListener(
                'popstate',
                NavigationManager.eventListeners.popstateHandler
            )
            NavigationManager.eventListeners = null
        }
        logger('Cleaned up resources', 'debug')
    }

    /**
     * Initializes the script.
     */
    function init() {
        if (isPlaylistPage()) {
            logger('Skipping initialization on playlist page', 'info')
            GridManager.removeCSS()
            NavigationManager.monitorNavigation()
            return
        }
        logger('Initializing script', 'info')
        NavigationManager.monitorNavigation()
        NavigationManager.handleNavigation()
    }

    // Start the script with a delay to ensure URL evaluation
    setTimeout(init, CONFIG.DEBOUNCE_DELAY)
})()