[{"data":1,"prerenderedAt":35342},["ShallowReactive",2],{"navigation_docs":3,"-react-native-version2-lists-and-virtualization":3728,"-react-native-version2-lists-and-virtualization-surround":35337},[4,1707,1912,2366,2547,2673,2880,3002,3052,3109,3143,3269,3346,3360,3495,3512,3525,3671,3724],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"C#","i-devicon-csharp","\u002Fcsharp","01.csharp",[10,13,60,90,120,202,219,253,379,404,457,650,1364,1654,1703],{"title":11,"path":7,"stem":12},"C# та .NET","01.csharp\u002Findex",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":59},"Fundamentals","i-lucide-book-open","\u002Fcsharp\u002Ffundamentals","01.csharp\u002F01.fundamentals",[19,23,27,31,35,39,43,47,51,55],{"title":20,"path":21,"stem":22},"Вступ до екосистеми .NET","\u002Fcsharp\u002Ffundamentals\u002Fintroduction-to-ecosystem","01.csharp\u002F01.fundamentals\u002F01.introduction-to-ecosystem",{"title":24,"path":25,"stem":26},"Структура програми на C#","\u002Fcsharp\u002Ffundamentals\u002Fprogram-structure","01.csharp\u002F01.fundamentals\u002F02.program-structure",{"title":28,"path":29,"stem":30},"Змінні та Типи Даних","\u002Fcsharp\u002Ffundamentals\u002Fvariables-data-types","01.csharp\u002F01.fundamentals\u002F03.variables-data-types",{"title":32,"path":33,"stem":34},"Масиви","\u002Fcsharp\u002Ffundamentals\u002Farrays","01.csharp\u002F01.fundamentals\u002F04.arrays",{"title":36,"path":37,"stem":38},"Strings & Text Handling","\u002Fcsharp\u002Ffundamentals\u002Fstrings-text-handling","01.csharp\u002F01.fundamentals\u002F05.strings-text-handling",{"title":40,"path":41,"stem":42},"Дати і Час","\u002Fcsharp\u002Ffundamentals\u002Fdates-time-handling","01.csharp\u002F01.fundamentals\u002F06.dates-time-handling",{"title":44,"path":45,"stem":46},"Потік Керування","\u002Fcsharp\u002Ffundamentals\u002Fcontrol-flow","01.csharp\u002F01.fundamentals\u002F07.control-flow",{"title":48,"path":49,"stem":50},"Методи","\u002Fcsharp\u002Ffundamentals\u002Fmethods","01.csharp\u002F01.fundamentals\u002F08.methods",{"title":52,"path":53,"stem":54},"Основи Відлагодження","\u002Fcsharp\u002Ffundamentals\u002Fdebugging-basics","01.csharp\u002F01.fundamentals\u002F09.debugging-basics",{"title":56,"path":57,"stem":58},"Інтерактивна Консоль (Classic)","\u002Fcsharp\u002Ffundamentals\u002Finteractive-console","01.csharp\u002F01.fundamentals\u002F10.interactive-console",false,{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":59},"OOP","i-lucide-box","\u002Fcsharp\u002Foop","01.csharp\u002F02.oop",[66,70,74,78,82,86],{"title":67,"path":68,"stem":69},"Package Management (Управління Пакетами)","\u002Fcsharp\u002Foop\u002Fpackage-management","01.csharp\u002F02.oop\u002F01.package-management",{"title":71,"path":72,"stem":73},"Класи та Об'єкти","\u002Fcsharp\u002Foop\u002Fclasses-objects","01.csharp\u002F02.oop\u002F02.classes-objects",{"title":75,"path":76,"stem":77},"Властивості та Поля","\u002Fcsharp\u002Foop\u002Fproperties-fields","01.csharp\u002F02.oop\u002F03.properties-fields",{"title":79,"path":80,"stem":81},"Стовпи ООП","\u002Fcsharp\u002Foop\u002Foop-pillars","01.csharp\u002F02.oop\u002F04.oop-pillars",{"title":83,"path":84,"stem":85},"Advanced Types","\u002Fcsharp\u002Foop\u002Fadvanced-types","01.csharp\u002F02.oop\u002F05.advanced-types",{"title":87,"path":88,"stem":89},"Namespaces (Простори Імен)","\u002Fcsharp\u002Foop\u002Fnamespaces","01.csharp\u002F02.oop\u002F06.namespaces",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":59},"Advanced Core","i-lucide-zap","\u002Fcsharp\u002Fadvanced-core","01.csharp\u002F03.advanced-core",[96,100,104,108,112,116],{"title":97,"path":98,"stem":99},"Generics (Узагальнення)","\u002Fcsharp\u002Fadvanced-core\u002Fgenerics","01.csharp\u002F03.advanced-core\u002F01.generics",{"title":101,"path":102,"stem":103},"Делегати, Події та Лямбда-вирази","\u002Fcsharp\u002Fadvanced-core\u002Fdelegates-events-lambdas","01.csharp\u002F03.advanced-core\u002F02.delegates-events-lambdas",{"title":105,"path":106,"stem":107},"Interfaces Deep Dive (Інтерфейси: Поглиблений Розгляд)","\u002Fcsharp\u002Fadvanced-core\u002Finterfaces-deep-dive","01.csharp\u002F03.advanced-core\u002F03.interfaces-deep-dive",{"title":109,"path":110,"stem":111},"Обробка Винятків","\u002Fcsharp\u002Fadvanced-core\u002Fexception-handling","01.csharp\u002F03.advanced-core\u002F04.exception-handling",{"title":113,"path":114,"stem":115},"Pattern Matching","\u002Fcsharp\u002Fadvanced-core\u002Fpattern-matching","01.csharp\u002F03.advanced-core\u002F05.pattern-matching",{"title":117,"path":118,"stem":119},"Додаткові Можливості C#","\u002Fcsharp\u002Fadvanced-core\u002Fadditional-features","01.csharp\u002F03.advanced-core\u002F06.additional-features",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":59},"Architecture Best Practices","i-lucide-building-2","\u002Fcsharp\u002Farchitecture-best-practices","01.csharp\u002F04.architecture-best-practices",[126,130,149,153,157,161,165,169],{"title":127,"path":128,"stem":129},"Software Design Principles (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fsoftware-design-principles","01.csharp\u002F04.architecture-best-practices\u002F01.software-design-principles",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":59},"Design Patterns","i-lucide-folder","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns",[136],{"title":137,"icon":132,"path":138,"stem":139,"children":140,"page":59},"Creational","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational",[141,145],{"title":142,"path":143,"stem":144},"Singleton (Одинак)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fsingleton","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F01.singleton",{"title":146,"path":147,"stem":148},"Builder (Будівельник)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fbuilder","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F02.builder",{"title":150,"path":151,"stem":152},"Building Professional CLIs","\u002Fcsharp\u002Farchitecture-best-practices\u002Fbuilding-professional-clis","01.csharp\u002F04.architecture-best-practices\u002F03.building-professional-clis",{"title":154,"path":155,"stem":156},"Validation & Flow Control","\u002Fcsharp\u002Farchitecture-best-practices\u002Fvalidation-flow-control","01.csharp\u002F04.architecture-best-practices\u002F04.validation-flow-control",{"title":158,"path":159,"stem":160},"The Modern .NET Host (Microsoft.Extensions)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fmodern-dotnet-host","01.csharp\u002F04.architecture-best-practices\u002F05.modern-dotnet-host",{"title":162,"path":163,"stem":164},"Data Mapper: Repository та DAO патерни (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part1","01.csharp\u002F04.architecture-best-practices\u002F06.data-mapper-part1",{"title":166,"path":167,"stem":168},"Data Mapper: Repository та DAO патерни (Частина 2)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part2","01.csharp\u002F04.architecture-best-practices\u002F07.data-mapper-part2",{"title":170,"icon":132,"path":171,"stem":172,"children":173,"page":59},"Di Ioc","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc",[174,178,182,186,190,194,198],{"title":175,"path":176,"stem":177},"Проблема залежностей та Інверсія Контролю","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fthe-dependency-problem","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F01.the-dependency-problem",{"title":179,"path":180,"stem":181},"Будуємо власний Service Container","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fbuild-your-own-container","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F02.build-your-own-container",{"title":183,"path":184,"stem":185},"Service Locator: Паттерн та Анти-паттерн","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-locator-pattern","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F03.service-locator-pattern",{"title":187,"path":188,"stem":189},"Паттерни Dependency Injection","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdependency-injection-patterns","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F04.dependency-injection-patterns",{"title":191,"path":192,"stem":193},"Microsoft DI: IServiceCollection та IServiceProvider","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fmicrosoft-di-deep-dive","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F05.microsoft-di-deep-dive",{"title":195,"path":196,"stem":197},"Service Lifetimes та Scopes","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-lifetimes-and-scopes","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F06.service-lifetimes-and-scopes",{"title":199,"path":200,"stem":201},"DI Анти-паттерни та Найкращі Практики","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdi-anti-patterns-and-best-practices","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F07.di-anti-patterns-and-best-practices",{"title":203,"icon":132,"path":204,"stem":205,"children":206,"page":59},"Standard Library","\u002Fcsharp\u002Fstandard-library","01.csharp\u002F05.standard-library",[207,211,215],{"title":208,"path":209,"stem":210},"Collections (Колекції)","\u002Fcsharp\u002Fstandard-library\u002Fcollections","01.csharp\u002F05.standard-library\u002F01.collections",{"title":212,"path":213,"stem":214},"High Performance Types (Високопродуктивні Типи)","\u002Fcsharp\u002Fstandard-library\u002Fhigh-performance-types","01.csharp\u002F05.standard-library\u002F02.high-performance-types",{"title":216,"path":217,"stem":218},"LINQ (Language Integrated Query)","\u002Fcsharp\u002Fstandard-library\u002Flinq","01.csharp\u002F05.standard-library\u002F03.linq",{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":59},"System Internals Concurrency","i-lucide-server","\u002Fcsharp\u002Fsystem-internals-concurrency","01.csharp\u002F06.system-internals-concurrency",[225,229,233,237,241,245,249],{"title":226,"path":227,"stem":228},"Memory Management","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmemory-management","01.csharp\u002F06.system-internals-concurrency\u002F01.memory-management",{"title":230,"path":231,"stem":232},"Reflection API: System.Type та Метадані","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Freflection-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F02.reflection-fundamentals",{"title":234,"path":235,"stem":236},"Attributes та Dynamic Language Runtime","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fattributes-dynamic","01.csharp\u002F06.system-internals-concurrency\u002F03.attributes-dynamic",{"title":238,"path":239,"stem":240},"Expression Trees: Швидка Альтернатива Рефлексії","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fexpression-trees-compiled","01.csharp\u002F06.system-internals-concurrency\u002F04.expression-trees-compiled",{"title":242,"path":243,"stem":244},"Source Generators: Compile-Time Code Generation","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsource-generators","01.csharp\u002F06.system-internals-concurrency\u002F05.source-generators",{"title":246,"path":247,"stem":248},"Multithreading Fundamentals","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmultithreading-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F06.multithreading-fundamentals",{"title":250,"path":251,"stem":252},"Synchronization Primitives","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsynchronization-primitives","01.csharp\u002F06.system-internals-concurrency\u002F07.synchronization-primitives",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":59},"System Programming Windows","i-lucide-cpu","\u002Fcsharp\u002Fsystem-programming-windows","01.csharp\u002F07.system-programming-windows",[259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375],{"title":260,"path":261,"stem":262},"Як Працює Операційна Система","\u002Fcsharp\u002Fsystem-programming-windows\u002Fhow-os-works","01.csharp\u002F07.system-programming-windows\u002F01.how-os-works",{"title":264,"path":265,"stem":266},"Процеси в .NET — API та Запуск","\u002Fcsharp\u002Fsystem-programming-windows\u002Fprocesses-in-dotnet","01.csharp\u002F07.system-programming-windows\u002F02.processes-in-dotnet",{"title":268,"path":269,"stem":270},"Процеси в .NET — IPC та Міжпроцесна Комунікація","\u002Fcsharp\u002Fsystem-programming-windows\u002F02a.processes-ipc","01.csharp\u002F07.system-programming-windows\u002F02a.processes-ipc",{"title":272,"path":273,"stem":274},"Application Domains та Збірки — AppDomain і AssemblyLoadContext","\u002Fcsharp\u002Fsystem-programming-windows\u002Fappdomains-assemblies","01.csharp\u002F07.system-programming-windows\u002F03.appdomains-assemblies",{"title":276,"path":277,"stem":278},"Application Domains та Збірки — Plug-in Система з Hot-Reload","\u002Fcsharp\u002Fsystem-programming-windows\u002F03a.appdomains-plugin-system","01.csharp\u002F07.system-programming-windows\u002F03a.appdomains-plugin-system",{"title":280,"path":281,"stem":282},"Потоки — Основи та API Thread","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-fundamentals","01.csharp\u002F07.system-programming-windows\u002F04.thread-fundamentals",{"title":284,"path":285,"stem":286},"Потоки — Lifecycle, Пріоритети та Безпечне Завершення","\u002Fcsharp\u002Fsystem-programming-windows\u002F04a.thread-lifecycle-priorities","01.csharp\u002F07.system-programming-windows\u002F04a.thread-lifecycle-priorities",{"title":288,"path":289,"stem":290},"Проблеми Спільного Стану — Race Condition та Data Race","\u002Fcsharp\u002Fsystem-programming-windows\u002Fshared-state-problems","01.csharp\u002F07.system-programming-windows\u002F05.shared-state-problems",{"title":292,"path":293,"stem":294},"Проблеми Спільного Стану — Memory Model та volatile","\u002Fcsharp\u002Fsystem-programming-windows\u002F05a.shared-state-memory-model","01.csharp\u002F07.system-programming-windows\u002F05a.shared-state-memory-model",{"title":296,"path":297,"stem":298},"Синхронізація — Monitor, lock та еволюція примітивів","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-fundamentals","01.csharp\u002F07.system-programming-windows\u002F06.synchronization-fundamentals",{"title":300,"path":301,"stem":302},"Синхронізація — Наскрізний Приклад та Deadlock Detection","\u002Fcsharp\u002Fsystem-programming-windows\u002F06a.synchronization-walkthrough","01.csharp\u002F07.system-programming-windows\u002F06a.synchronization-walkthrough",{"title":304,"path":305,"stem":306},"Синхронізація — Mutex, Semaphore та Event-Based Primitives","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-advanced","01.csharp\u002F07.system-programming-windows\u002F07.synchronization-advanced",{"title":308,"path":309,"stem":310},"Синхронізація — Interlocked, Volatile та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002F07a.synchronization-advanced-walkthrough","01.csharp\u002F07.system-programming-windows\u002F07a.synchronization-advanced-walkthrough",{"title":312,"path":313,"stem":314},"Interlocked, CAS та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002Finterlocked-cas-lockfree","01.csharp\u002F07.system-programming-windows\u002F08.interlocked-cas-lockfree",{"title":316,"path":317,"stem":318},"Volatile, Memory Model та Spinning","\u002Fcsharp\u002Fsystem-programming-windows\u002F08a.volatile-memory-model","01.csharp\u002F07.system-programming-windows\u002F08a.volatile-memory-model",{"title":320,"path":321,"stem":322},"ThreadPool — Пул Потоків для Ефективного Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-pool","01.csharp\u002F07.system-programming-windows\u002F09.thread-pool",{"title":324,"path":325,"stem":326},"ThreadPool — Просунуті Сценарії та Внутрішня Будова","\u002Fcsharp\u002Fsystem-programming-windows\u002F09a.thread-pool-advanced","01.csharp\u002F07.system-programming-windows\u002F09a.thread-pool-advanced",{"title":328,"path":329,"stem":330},"Concurrent та Immutable Collections","\u002Fcsharp\u002Fsystem-programming-windows\u002Fconcurrent-collections","01.csharp\u002F07.system-programming-windows\u002F10.concurrent-collections",{"title":332,"path":333,"stem":334},"TPL, Task та Композиція — Від Thread до Task","\u002Fcsharp\u002Fsystem-programming-windows\u002Ftpl-parallel-plinq","01.csharp\u002F07.system-programming-windows\u002F11.tpl-parallel-plinq",{"title":336,"path":337,"stem":338},"Parallel Class та PLINQ — Data Parallelism","\u002Fcsharp\u002Fsystem-programming-windows\u002F11a.tpl-parallel-plinq-advanced","01.csharp\u002F07.system-programming-windows\u002F11a.tpl-parallel-plinq-advanced",{"title":340,"path":341,"stem":342},"Async\u002FAwait — Фундамент Асинхронного Програмування","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-fundamentals","01.csharp\u002F07.system-programming-windows\u002F12.async-fundamentals",{"title":344,"path":345,"stem":346},"SynchronizationContext та ConfigureAwait — Контекст Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-context-configureawait","01.csharp\u002F07.system-programming-windows\u002F13.async-context-configureawait",{"title":348,"path":349,"stem":350},"Async — Просунуті Паттерни","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-advanced","01.csharp\u002F07.system-programming-windows\u002F14.async-advanced",{"title":352,"path":353,"stem":354},"System.Threading.Channels — Async Producer-Consumer","\u002Fcsharp\u002Fsystem-programming-windows\u002Fchannels","01.csharp\u002F07.system-programming-windows\u002F15.channels",{"title":356,"path":357,"stem":358},"Асинхронна Синхронізація","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-synchronization","01.csharp\u002F07.system-programming-windows\u002F16.async-synchronization",{"title":360,"path":361,"stem":362},"Unsafe Code та Вказівники","\u002Fcsharp\u002Fsystem-programming-windows\u002Funsafe-code","01.csharp\u002F07.system-programming-windows\u002F17.unsafe-code",{"title":364,"path":365,"stem":366},"P\u002FInvoke та Windows API — Міст між .NET та Native Code","\u002Fcsharp\u002Fsystem-programming-windows\u002Fpinvoke-winapi","01.csharp\u002F07.system-programming-windows\u002F18.pinvoke-winapi",{"title":368,"path":369,"stem":370},"Реєстр Windows — Центральна База Конфігурації Системи","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-registry","01.csharp\u002F07.system-programming-windows\u002F19.windows-registry",{"title":372,"path":373,"stem":374},"Windows Hooks, Hotkeys та Services — Глибока Інтеграція з ОС","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-hooks-services","01.csharp\u002F07.system-programming-windows\u002F20.windows-hooks-services",{"title":376,"path":377,"stem":378},"Системне Програмування C# (Windows) — 07.system-programming-windows","\u002Fcsharp\u002Fsystem-programming-windows\u002Fimplementation_plan","01.csharp\u002F07.system-programming-windows\u002Fimplementation_plan",{"title":380,"icon":132,"path":381,"stem":382,"children":383,"page":59},"Io","\u002Fcsharp\u002Fio","01.csharp\u002F08.io",[384,388,392,396,400],{"title":385,"path":386,"stem":387},"8.1.1. Основи роботи з файловою системою","\u002Fcsharp\u002Fio\u002Ffile-system-basics","01.csharp\u002F08.io\u002F01.file-system-basics",{"title":389,"path":390,"stem":391},"8.1.2. Потоки (Streams) та Серіалізація Даних","\u002Fcsharp\u002Fio\u002Fstreams-serialization","01.csharp\u002F08.io\u002F02.streams-serialization",{"title":393,"path":394,"stem":395},"8.2.1. JSON Serialization з System.Text.Json","\u002Fcsharp\u002Fio\u002Fjson-serialization","01.csharp\u002F08.io\u002F03.json-serialization",{"title":397,"path":398,"stem":399},"8.2.2. XML Serialization та LINQ to XML","\u002Fcsharp\u002Fio\u002Fxml-serialization","01.csharp\u002F08.io\u002F04.xml-serialization",{"title":401,"path":402,"stem":403},"8.2.3. Binary Serialization: MessagePack та Protocol Buffers","\u002Fcsharp\u002Fio\u002Fbinary-serialization","01.csharp\u002F08.io\u002F05.binary-serialization",{"title":405,"icon":132,"path":406,"stem":407,"children":408,"page":59},"Ado Net","\u002Fcsharp\u002Fado-net","01.csharp\u002F09.ado-net",[409,413,417,421,425,429,433,437,441,445,449,453],{"title":410,"path":411,"stem":412},"9.1. Введення в ADO.NET","\u002Fcsharp\u002Fado-net\u002Fintroduction-to-adonet","01.csharp\u002F09.ado-net\u002F01.introduction-to-adonet",{"title":414,"path":415,"stem":416},"9.2. Клас DbConnection — з'єднання з базою даних","\u002Fcsharp\u002Fado-net\u002Fconnection","01.csharp\u002F09.ado-net\u002F02.connection",{"title":418,"path":419,"stem":420},"9.3. Клас DbCommand — виконання SQL-запитів","\u002Fcsharp\u002Fado-net\u002Fcommand-and-queries","01.csharp\u002F09.ado-net\u002F03.command-and-queries",{"title":422,"path":423,"stem":424},"9.4. Клас DbDataReader — ефективне читання даних","\u002Fcsharp\u002Fado-net\u002Fdatareader","01.csharp\u002F09.ado-net\u002F04.datareader",{"title":426,"path":427,"stem":428},"9.5. Параметризовані запити та захист від SQL Injection","\u002Fcsharp\u002Fado-net\u002Fparameters-and-sql-injection","01.csharp\u002F09.ado-net\u002F05.parameters-and-sql-injection",{"title":430,"path":431,"stem":432},"9.6. Транзакції в ADO.NET","\u002Fcsharp\u002Fado-net\u002Ftransactions","01.csharp\u002F09.ado-net\u002F06.transactions",{"title":434,"path":435,"stem":436},"9.7. DbProviderFactory — провайдер-незалежний код","\u002Fcsharp\u002Fado-net\u002Fprovider-factory","01.csharp\u002F09.ado-net\u002F07.provider-factory",{"title":438,"path":439,"stem":440},"9.8. Асинхронний доступ до даних","\u002Fcsharp\u002Fado-net\u002Fasync-data-access","01.csharp\u002F09.ado-net\u002F08.async-data-access",{"title":442,"path":443,"stem":444},"9.9. Від'єднаний режим: DataSet, DataTable, DataRow","\u002Fcsharp\u002Fado-net\u002Fdisconnected-mode-dataset","01.csharp\u002F09.ado-net\u002F09.disconnected-mode-dataset",{"title":446,"path":447,"stem":448},"9.10. DataAdapter — міст між DataSet та базою даних","\u002Fcsharp\u002Fado-net\u002Fdata-adapter","01.csharp\u002F09.ado-net\u002F10.data-adapter",{"title":450,"path":451,"stem":452},"9.11. Data Mapper та Repository: Архітектура доступу до даних","\u002Fcsharp\u002Fado-net\u002Fdata-mapper-repository","01.csharp\u002F09.ado-net\u002F11.data-mapper-repository",{"title":454,"path":455,"stem":456},"9.12. Identity Map, Unit of Work та Specification Pattern","\u002Fcsharp\u002Fado-net\u002Fadvanced-patterns","01.csharp\u002F09.ado-net\u002F12.advanced-patterns",{"title":458,"icon":255,"path":459,"stem":460,"children":461,"page":59},"Ef Core","\u002Fcsharp\u002Fef-core","01.csharp\u002F10.ef-core",[462,466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,532,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646],{"title":463,"path":464,"stem":465},"Що таке ORM? Від SQL до об'єктів","\u002Fcsharp\u002Fef-core\u002Fwhat-is-orm","01.csharp\u002F10.ef-core\u002F01.what-is-orm",{"title":467,"path":468,"stem":469},"Перший проєкт — від нуля до CRUD","\u002Fcsharp\u002Fef-core\u002Ffirst-project","01.csharp\u002F10.ef-core\u002F02.first-project",{"title":471,"path":472,"stem":473},"DbContext — Серце EF Core","\u002Fcsharp\u002Fef-core\u002Fdbcontext-deep-dive","01.csharp\u002F10.ef-core\u002F03.dbcontext-deep-dive",{"title":475,"path":476,"stem":477},"Провайдери баз даних — Архітектура та Вибір СУБД","\u002Fcsharp\u002Fef-core\u002Fdatabase-providers","01.csharp\u002F10.ef-core\u002F04.database-providers",{"title":479,"path":480,"stem":481},"Конвенції EF Core — Магія без конфігурації","\u002Fcsharp\u002Fef-core\u002Fconventions","01.csharp\u002F10.ef-core\u002F05.conventions",{"title":483,"path":484,"stem":485},"Fluent API та Data Annotations — Явна конфігурація моделі","\u002Fcsharp\u002Fef-core\u002Ffluent-api-vs-annotations","01.csharp\u002F10.ef-core\u002F06.fluent-api-vs-annotations",{"title":487,"path":488,"stem":489},"Зв'язки — One-to-One та One-to-Many","\u002Fcsharp\u002Fef-core\u002Frelationships-basics","01.csharp\u002F10.ef-core\u002F07.relationships-basics",{"title":491,"path":492,"stem":493},"Зв'язки Advanced — Many-to-Many та Складні Сценарії","\u002Fcsharp\u002Fef-core\u002Frelationships-advanced","01.csharp\u002F10.ef-core\u002F08.relationships-advanced",{"title":495,"path":496,"stem":497},"Властивості — Типи, Конвертери, Компаратори (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part1","01.csharp\u002F10.ef-core\u002F09.property-configuration-part1",{"title":499,"path":500,"stem":501},"Властивості — Value Comparers, Generators, Shadow Properties (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part2","01.csharp\u002F10.ef-core\u002F09.property-configuration-part2",{"title":503,"path":504,"stem":505},"Складні типи — Owned Types та Complex Types (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part1","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part1",{"title":507,"path":508,"stem":509},"Складні типи — Complex Types, Keyless Entities, Порівняння (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part2","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part2",{"title":511,"path":512,"stem":513},"JSON Columns — Складні дані у JSON (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part1","01.csharp\u002F10.ef-core\u002F11.json-columns-part1",{"title":515,"path":516,"stem":517},"JSON Columns — Value Comparers, Індекси, Провайдери (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part2","01.csharp\u002F10.ef-core\u002F11.json-columns-part2",{"title":519,"path":520,"stem":521},"Успадкування — Абстрактні класи та TPH (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finheritance-part1","01.csharp\u002F10.ef-core\u002F12.inheritance-part1",{"title":523,"path":524,"stem":525},"Успадкування — TPT, TPC та Порівняння Стратегій (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finheritance-part2","01.csharp\u002F10.ef-core\u002F12.inheritance-part2",{"title":527,"path":528,"stem":529,"children":530},"Індекси, Обмеження та Схема (Частина 1)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part1","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part1",[531],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535,"children":536},"Індекси, Обмеження та Схема (Частина 2)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part2","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part2",[537],{"title":533,"path":534,"stem":535},{"title":539,"path":540,"stem":541},"Seed Data — Початкові Дані (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fseeding-part1","01.csharp\u002F10.ef-core\u002F14.seeding-part1",{"title":543,"path":544,"stem":545},"Seed Data — SQL-скрипти, Bogus та Стратегії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fseeding-part2","01.csharp\u002F10.ef-core\u002F14.seeding-part2",{"title":547,"path":548,"stem":549},"Global Query Filters — Глобальні Фільтри (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part1","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part1",{"title":551,"path":552,"stem":553},"Global Query Filters — Підводні камені та Інтеграція (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part2","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part2",{"title":555,"path":556,"stem":557},"LINQ-запити в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part1","01.csharp\u002F10.ef-core\u002F16.linq-queries-part1",{"title":559,"path":560,"stem":561},"LINQ-запити в EF Core (Частина 2)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part2","01.csharp\u002F10.ef-core\u002F16.linq-queries-part2",{"title":563,"path":564,"stem":565},"Завантаження Пов'язаних Даних (Частина 1)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part1","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part1",{"title":567,"path":568,"stem":569},"Завантаження Пов'язаних Даних (Частина 2)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part2","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part2",{"title":571,"path":572,"stem":573},"Raw SQL, Views та Stored Procedures (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part1","01.csharp\u002F10.ef-core\u002F18.raw-sql-part1",{"title":575,"path":576,"stem":577},"Raw SQL — Stored Procedures, DbFunction та Bulk Operations (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part2","01.csharp\u002F10.ef-core\u002F18.raw-sql-part2",{"title":579,"path":580,"stem":581},"Продвинуті Запити — Compiled Queries, Bulk та Оптимізація (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part1","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part1",{"title":583,"path":584,"stem":585},"Продвинуті Запити — Query Tags, Bulk та Interceptors (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part2","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part2",{"title":587,"path":588,"stem":589},"Change Tracker — Відстеження Змін (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part1","01.csharp\u002F10.ef-core\u002F20.change-tracking-part1",{"title":591,"path":592,"stem":593},"Change Tracker — Графи Об'єктів та Disconnected (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part2","01.csharp\u002F10.ef-core\u002F20.change-tracking-part2",{"title":595,"path":596,"stem":597},"Збереження Даних та Транзакції (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part1","01.csharp\u002F10.ef-core\u002F21.saving-data-part1",{"title":599,"path":600,"stem":601},"Збереження Даних — Concurrency та Outbox (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part2","01.csharp\u002F10.ef-core\u002F21.saving-data-part2",{"title":603,"path":604,"stem":605},"Конкурентність та Блокування (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part1","01.csharp\u002F10.ef-core\u002F22.concurrency-part1",{"title":607,"path":608,"stem":609},"Конкурентність — Дедлоки та Queue Processing (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part2","01.csharp\u002F10.ef-core\u002F22.concurrency-part2",{"title":611,"path":612,"stem":613},"Міграції в EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part1","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part1",{"title":615,"path":616,"stem":617},"Міграції в EF Core — Основи (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part2","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part2",{"title":619,"path":620,"stem":621},"Міграції — Просунуті Сценарії (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part1","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part1",{"title":623,"path":624,"stem":625},"Міграції — Просунуті Сценарії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part2","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part2",{"title":627,"path":628,"stem":629},"Управління Схемою та Database-First (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part1","01.csharp\u002F10.ef-core\u002F25.schema-management-part1",{"title":631,"path":632,"stem":633},"Управління Схемою та Database-First (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part2","01.csharp\u002F10.ef-core\u002F25.schema-management-part2",{"title":635,"path":636,"stem":637},"Продуктивність EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fperformance-fundamentals-part1","01.csharp\u002F10.ef-core\u002F26.performance-fundamentals-part1",{"title":639,"path":640,"stem":641},"Interceptors в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part1","01.csharp\u002F10.ef-core\u002F29.interceptors-part1",{"title":643,"path":644,"stem":645},"Interceptors в EF Core — Connection, Transaction та Materialization (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part2","01.csharp\u002F10.ef-core\u002F29.interceptors-part2",{"title":647,"path":648,"stem":649},"План вивчення Entity Framework Core — Повний курс","\u002Fcsharp\u002Fef-core\u002Fimplementation_plan","01.csharp\u002F10.ef-core\u002Fimplementation_plan",{"title":651,"icon":652,"path":653,"stem":654,"children":655,"page":59},"ASP.NET","i-devicon-dotnetcore","\u002Fcsharp\u002Faspnet","01.csharp\u002F11.aspnet",[656,730,791,869,927,941,967,1057,1111,1182,1212,1289,1346],{"title":657,"icon":658,"path":659,"stem":660,"children":661,"page":59},"Minimal API","i-lucide-network","\u002Fcsharp\u002Faspnet\u002Fminimal-api","01.csharp\u002F11.aspnet\u002F01.minimal-api",[662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726],{"title":663,"path":664,"stem":665},"Вступ до ASP.NET та еволюція фреймворку","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fintroduction","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F01.introduction",{"title":667,"path":668,"stem":669},"Перший додаток на ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Ffirst-application","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F02.first-application",{"title":671,"path":672,"stem":673},"WebApplication, Builder та Dependency Injection","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fwebapplication-builder","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F03.webapplication-builder",{"title":675,"path":676,"stem":677},"Конвеєр запитів та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frequest-pipeline-middleware","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F04.request-pipeline-middleware",{"title":679,"path":680,"stem":681},"Маршрутизація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F05.routing-basics",{"title":683,"path":684,"stem":685},"Маршрутизація в ASP.NET Core: Розширені можливості","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F06.routing-advanced",{"title":687,"path":688,"stem":689},"Статичні файли в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-files","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F07.static-files",{"title":691,"path":692,"stem":693},"Статичні Активи: MapStaticAssets (ASP.NET Core 9.0)","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-assets","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F08.static-assets",{"title":695,"path":696,"stem":697},"Конфігурація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-fundamentals","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F09.configuration-fundamentals",{"title":699,"path":700,"stem":701},"Конфігурація: Паттерн Options","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-options","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F10.configuration-options",{"title":703,"path":704,"stem":705},"Логування в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F11.logging-basics",{"title":707,"path":708,"stem":709},"Логування: Serilog та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F12.logging-advanced",{"title":711,"path":712,"stem":713},"Управління станом: HttpContext.Items та Cookies","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstate-management","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F13.state-management",{"title":715,"path":716,"stem":717},"Стан сесії: Sessions","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fsession-state","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F14.session-state",{"title":719,"path":720,"stem":721},"Структура проєкту: від хаосу до архітектури","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fproject-structure","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F15.project-structure",{"title":723,"path":724,"stem":725},"Scalar у Minimal API: повний проєкт і Fluent OpenAPI","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fscalar-openapi-fluent","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F16.scalar-openapi-fluent",{"title":727,"path":728,"stem":729},"Swagger \u002F Swashbuckle у Minimal API: окремий класичний шлях","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fswagger-swashbuckle","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F17.swagger-swashbuckle",{"title":731,"icon":658,"path":732,"stem":733,"children":734,"page":59},"API","\u002Fcsharp\u002Faspnet\u002Fapi","01.csharp\u002F11.aspnet\u002F02.api",[735,739,743,747,751,755,759,763,767,771,775,779,783,787],{"title":736,"path":737,"stem":738},"Що таке API. Клієнт-серверна архітектура","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fwhat-is-api","01.csharp\u002F11.aspnet\u002F02.api\u002F01.what-is-api",{"title":740,"path":741,"stem":742},"Формати даних: JSON, XML, TOML та бінарні формати","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fdata-formats","01.csharp\u002F11.aspnet\u002F02.api\u002F02.data-formats",{"title":744,"path":745,"stem":746},"Парадигми API та концепція REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-paradigms-rest","01.csharp\u002F11.aspnet\u002F02.api\u002F03.api-paradigms-rest",{"title":748,"path":749,"stem":750},"HTTP-методи, статус-коди та заголовки","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fhttp-methods-status-codes","01.csharp\u002F11.aspnet\u002F02.api\u002F04.http-methods-status-codes",{"title":752,"path":753,"stem":754},"Організація HTTP API за принципами REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Frest-organizing","01.csharp\u002F11.aspnet\u002F02.api\u002F05.rest-organizing",{"title":756,"path":757,"stem":758},"Номенклатура URL та CRUD-операції","\u002Fcsharp\u002Faspnet\u002Fapi\u002Furl-nomenclature-crud","01.csharp\u002F11.aspnet\u002F02.api\u002F06.url-nomenclature-crud",{"title":760,"path":761,"stem":762},"Правила дизайну: іменування та стандарти","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-naming","01.csharp\u002F11.aspnet\u002F02.api\u002F07.api-design-naming",{"title":764,"path":765,"stem":766},"Валідація, ліміти та обробка помилок","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-validation","01.csharp\u002F11.aspnet\u002F02.api\u002F08.api-design-validation",{"title":768,"path":769,"stem":770},"Обробка помилок у Minimal API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Ferror-handling-http","01.csharp\u002F11.aspnet\u002F02.api\u002F09.error-handling-http",{"title":772,"path":773,"stem":774},"Ідемпотентність та синхронізація стану","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fidempotency-sync","01.csharp\u002F11.aspnet\u002F02.api\u002F10.idempotency-sync",{"title":776,"path":777,"stem":778},"Пагінація та організація списків","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fpagination-lists","01.csharp\u002F11.aspnet\u002F02.api\u002F11.pagination-lists",{"title":780,"path":781,"stem":782},"Безпека API, кешування та інтернаціоналізація","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fsecurity-auth","01.csharp\u002F11.aspnet\u002F02.api\u002F12.security-auth",{"title":784,"path":785,"stem":786},"Процес проєктування API та документування","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-process","01.csharp\u002F11.aspnet\u002F02.api\u002F13.api-design-process",{"title":788,"path":789,"stem":790},"OpenAPI: контракт, специфікація та документація API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fopenapi","01.csharp\u002F11.aspnet\u002F02.api\u002F14.openapi",{"title":792,"icon":793,"path":794,"stem":795,"children":796,"page":59},"Auth","i-lucide-shield-check","\u002Fcsharp\u002Faspnet\u002Fauth","01.csharp\u002F11.aspnet\u002F03.auth",[797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865],{"title":798,"path":799,"stem":800},"Основи аутентифікації та авторизації","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauth-fundamentals","01.csharp\u002F11.aspnet\u002F03.auth\u002F01.auth-fundamentals",{"title":802,"path":803,"stem":804},"JWT-аутентифікація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fjwt-authentication","01.csharp\u002F11.aspnet\u002F03.auth\u002F02.jwt-authentication",{"title":806,"path":807,"stem":808},"Авторизація: ролі, політики та resource-based доступ","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauthorization-policies","01.csharp\u002F11.aspnet\u002F03.auth\u002F03.authorization-policies",{"title":810,"path":811,"stem":812},"Cookie-аутентифікація та ASP.NET Core Identity","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcookie-auth-identity","01.csharp\u002F11.aspnet\u002F03.auth\u002F04.cookie-auth-identity",{"title":814,"path":815,"stem":816},"JWT + Refresh Tokens (HttpOnly Cookie)","\u002Fcsharp\u002Faspnet\u002Fauth\u002F04b.identity-auth-jwt","01.csharp\u002F11.aspnet\u002F03.auth\u002F04b.identity-auth-jwt",{"title":818,"path":819,"stem":820},"Identity: Підтвердження Email та Скидання Пароля","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-email-confirmation","01.csharp\u002F11.aspnet\u002F03.auth\u002F05.identity-email-confirmation",{"title":822,"path":823,"stem":824},"Identity: Двофакторна Аутентифікація (2FA)","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-two-factor","01.csharp\u002F11.aspnet\u002F03.auth\u002F06.identity-two-factor",{"title":826,"path":827,"stem":828},"Identity: Внутрішня Архітектура та Кастомізація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-internals","01.csharp\u002F11.aspnet\u002F03.auth\u002F07.identity-internals",{"title":830,"path":831,"stem":832},"OAuth 2.0 та зовнішні провайдери","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-external-providers","01.csharp\u002F11.aspnet\u002F03.auth\u002F08.oauth-external-providers",{"title":834,"path":835,"stem":836},"Безпека на практиці: CORS, HTTPS та захист від атак","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fsecurity-hardening","01.csharp\u002F11.aspnet\u002F03.auth\u002F09.security-hardening",{"title":838,"path":839,"stem":840},"Теорія OAuth 2.0: Поняття, Аналогії та Флоу","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-theory","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oauth-theory",{"title":842,"path":843,"stem":844},"OIDC, OAuth 2.0 та Keycloak в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foidc-keycloak","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oidc-keycloak",{"title":846,"path":847,"stem":848},"API Keys аутентифікація в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fapi-keys","01.csharp\u002F11.aspnet\u002F03.auth\u002F11.api-keys",{"title":850,"path":851,"stem":852},"Rate Limiting та Throttling в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frate-limiting","01.csharp\u002F11.aspnet\u002F03.auth\u002F12.rate-limiting",{"title":854,"path":855,"stem":856},"Refresh Token Rotation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frefresh-token-rotation","01.csharp\u002F11.aspnet\u002F03.auth\u002F13.refresh-token-rotation",{"title":858,"path":859,"stem":860},"Certificate Authentication та mTLS в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcertificate-auth","01.csharp\u002F11.aspnet\u002F03.auth\u002F14.certificate-auth",{"title":862,"path":863,"stem":864},"RBAC, ABAC та ReBAC в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frbac-abac-rebac","01.csharp\u002F11.aspnet\u002F03.auth\u002F15.rbac-abac-rebac",{"title":866,"path":867,"stem":868},"Multi-tenancy та ізоляція даних в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fmulti-tenancy","01.csharp\u002F11.aspnet\u002F03.auth\u002F16.multi-tenancy",{"title":870,"icon":871,"path":872,"stem":873,"children":874,"page":59},"Нотифікації","i-lucide-bell","\u002Fcsharp\u002Faspnet\u002Fnotifications","01.csharp\u002F11.aspnet\u002F04.notifications",[875,879,883,887,891,895,899,903,907,911,915,919,923],{"title":876,"path":877,"stem":878},"In-App нотифікації через базу даних","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fin-app-database-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F01.in-app-database-notifications",{"title":880,"path":881,"stem":882},"Polling: Регулярний запит оновлень","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fpolling","01.csharp\u002F11.aspnet\u002F04.notifications\u002F02.polling",{"title":884,"path":885,"stem":886},"Server-Sent Events: Однострімовий push від сервера","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fserver-sent-events","01.csharp\u002F11.aspnet\u002F04.notifications\u002F03.server-sent-events",{"title":888,"path":889,"stem":890},"WebSockets: Двостороннє з'єднання в реальному часі","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fwebsockets","01.csharp\u002F11.aspnet\u002F04.notifications\u002F04.websockets",{"title":892,"path":893,"stem":894},"SignalR: Абстракція над транспортами реального часу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fsignalr","01.csharp\u002F11.aspnet\u002F04.notifications\u002F05.signalr",{"title":896,"path":897,"stem":898},"Background Services: Фонові задачі в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fbackground-services","01.csharp\u002F11.aspnet\u002F04.notifications\u002F06.background-services",{"title":900,"path":901,"stem":902},"Web Push нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fweb-push","01.csharp\u002F11.aspnet\u002F04.notifications\u002F07.web-push",{"title":904,"path":905,"stem":906},"Email нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Femail-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F08.email-notifications",{"title":908,"path":909,"stem":910},"Порівняння підходів: Як вибрати правильну технологію нотифікацій","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fchoosing-the-right-approach","01.csharp\u002F11.aspnet\u002F04.notifications\u002F09.choosing-the-right-approach",{"title":912,"path":913,"stem":914},"Hangfire: Надійне планування фонових задач","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire","01.csharp\u002F11.aspnet\u002F04.notifications\u002F10.hangfire",{"title":916,"path":917,"stem":918},"Практика: Конвертація зображень у WebP через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-image-webp","01.csharp\u002F11.aspnet\u002F04.notifications\u002F11.hangfire-image-webp",{"title":920,"path":921,"stem":922},"Практика: Підготовка відео до HLS-стрімінгу через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-video-hls","01.csharp\u002F11.aspnet\u002F04.notifications\u002F12.hangfire-video-hls",{"title":924,"path":925,"stem":926},"Telegram-нотифікації: від одного повідомлення до масових розсилок і мульти-канального підходу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Ftelegram-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F13.telegram-notifications",{"title":928,"icon":929,"path":930,"stem":931,"children":932,"page":59},"Інтернаціоналізація","i-lucide-languages","\u002Fcsharp\u002Faspnet\u002Fi18n","01.csharp\u002F11.aspnet\u002F05.i18n",[933,937],{"title":934,"path":935,"stem":936},"Інтернаціоналізація (i18n) у Minimal API: від A до Я","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Finternationalization","01.csharp\u002F11.aspnet\u002F05.i18n\u002F01.internationalization",{"title":938,"path":939,"stem":940},"Humanizer: людиномовні рядки у .NET","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Fhumanizer","01.csharp\u002F11.aspnet\u002F05.i18n\u002F02.humanizer",{"title":942,"icon":943,"path":944,"stem":945,"children":946,"page":59},"Кешування","i-lucide-layers","\u002Fcsharp\u002Faspnet\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching",[947,951,955,959,963],{"title":948,"path":949,"stem":950},"Огляд кешування: чотири рівні і коли що обирати","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching\u002F01.caching",{"title":952,"path":953,"stem":954},"IMemoryCache: кеш в оперативній пам'яті","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fmemory-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F02.memory-cache",{"title":956,"path":957,"stem":958},"IDistributedCache і Redis: розподілений кеш","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fdistributed-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F03.distributed-cache",{"title":960,"path":961,"stem":962},"Response Cache: HTTP-кешування через Cache-Control","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fresponse-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F04.response-cache",{"title":964,"path":965,"stem":966},"Output Cache: серверний кеш HTTP-відповідей (.NET 7+)","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Foutput-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F05.output-cache",{"title":968,"icon":969,"path":970,"stem":971,"children":972,"page":59},"Тестування","i-lucide-test-tube","\u002Fcsharp\u002Faspnet\u002Ftesting","01.csharp\u002F11.aspnet\u002F07.testing",[973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053],{"title":974,"path":975,"stem":976},"Що таке тестування? Від інтуїції до науки","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-is-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F01.what-is-testing",{"title":978,"path":979,"stem":980},"Піраміда тестування — Стратегія, а не Догма","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-pyramid","01.csharp\u002F11.aspnet\u002F07.testing\u002F02.testing-pyramid",{"title":982,"path":983,"stem":984},"Дві Школи Тестування — Лондон проти Детройту","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-schools","01.csharp\u002F11.aspnet\u002F07.testing\u002F03.testing-schools",{"title":986,"path":987,"stem":988},"TDD та BDD — Тести як Дизайн-інструмент","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftdd-and-bdd","01.csharp\u002F11.aspnet\u002F07.testing\u002F04.tdd-and-bdd",{"title":990,"path":991,"stem":992},"Що саме тестувати — Техніки аналізу та Циклomatична складність","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-to-test","01.csharp\u002F11.aspnet\u002F07.testing\u002F05.what-to-test",{"title":994,"path":995,"stem":996},"Тестові Фреймворки — Навіщо вони і що всередині","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftest-frameworks","01.csharp\u002F11.aspnet\u002F07.testing\u002F06.test-frameworks",{"title":998,"path":999,"stem":1000},"xUnit — Факти, Теорії та Lifecycle тестів","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-basics","01.csharp\u002F11.aspnet\u002F07.testing\u002F07.xunit-basics",{"title":1002,"path":1003,"stem":1004},"xUnit Advanced — Fixtures, Кастомізація та Розширення","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F08.xunit-advanced",{"title":1006,"path":1007,"stem":1008},"Moq — Глибоке занурення в мокування","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fmocking-with-moq","01.csharp\u002F11.aspnet\u002F07.testing\u002F09.mocking-with-moq",{"title":1010,"path":1011,"stem":1012},"Тестування Баз Даних — EF Core, SQLite та Testcontainers","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fdatabase-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F10.database-testing",{"title":1014,"path":1015,"stem":1016},"Integration Testing — Частина 1 [Теорія та WebApplicationFactory]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F11.integration-testing",{"title":1018,"path":1019,"stem":1020},"Інтеграційне тестування — Практика","\u002Fcsharp\u002Faspnet\u002Ftesting\u002F11a.integration-testing-practice","01.csharp\u002F11.aspnet\u002F07.testing\u002F11a.integration-testing-practice",{"title":1022,"path":1023,"stem":1024},"Integration Testing — Частина 2 [Просунуті Сценарії та Testcontainers]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F12.integration-testing-advanced",{"title":1026,"path":1027,"stem":1028},"Професійний Postman: Колекції, Змінні та GitHub Інтеграція","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fpostman-professional","01.csharp\u002F11.aspnet\u002F07.testing\u002F13.postman-professional",{"title":1030,"path":1031,"stem":1032},"HttpClient у Тестах Частина 1: Архітектура та MockHttpMessageHandler","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fhttpclient-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F14.httpclient-testing",{"title":1034,"path":1035,"stem":1036},"HttpClient у Тестах Частина 2: WireMock.Net та Resilience","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwiremock-net","01.csharp\u002F11.aspnet\u002F07.testing\u002F15.wiremock-net",{"title":1038,"path":1039,"stem":1040},"Патерни та Анти-патерни Тестування: Test Smells","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-patterns","01.csharp\u002F11.aspnet\u002F07.testing\u002F16.testing-patterns",{"title":1042,"path":1043,"stem":1044},"Просунуті інструменти: Time, Snapshots та Властивості","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fadvanced-testing-tools","01.csharp\u002F11.aspnet\u002F07.testing\u002F17.advanced-testing-tools",{"title":1046,"path":1047,"stem":1048},"Тестування Архітектури з NetArchTest","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Farchitecture-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F18.architecture-testing",{"title":1050,"path":1051,"stem":1052},"Тестування Продуктивності: BenchmarkDotNet, NBomber та k6","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fperformance-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F19.performance-testing",{"title":1054,"path":1055,"stem":1056},"Залишок плану для курсу \"Тестування ASP.NET Minimal API\"","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fremaining_plan","01.csharp\u002F11.aspnet\u002F07.testing\u002Fremaining_plan",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":59},"Платежі","i-lucide-credit-card","\u002Fcsharp\u002Faspnet\u002Fpayments","01.csharp\u002F11.aspnet\u002F08.payments",[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103,1107],{"title":1064,"path":1065,"stem":1066},"Основи платіжної інфраструктури","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-fundamentals","01.csharp\u002F11.aspnet\u002F08.payments\u002F01.payment-fundamentals",{"title":1068,"path":1069,"stem":1070},"Методи оплати в Україні","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-methods-ukraine","01.csharp\u002F11.aspnet\u002F08.payments\u002F02.payment-methods-ukraine",{"title":1072,"path":1073,"stem":1074},"PCI DSS та безпека платежів","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpci-dss-security","01.csharp\u002F11.aspnet\u002F08.payments\u002F03.pci-dss-security",{"title":1076,"path":1077,"stem":1078},"Архітектура платіжної підсистеми","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-architecture","01.csharp\u002F11.aspnet\u002F08.payments\u002F04.payment-architecture",{"title":1080,"path":1081,"stem":1082},"Інтеграція LiqPay (ПриватБанк)","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fliqpay-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F05.liqpay-integration",{"title":1084,"path":1085,"stem":1086},"Інтеграція Monobank Acquiring API","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fmonobank-acquiring","01.csharp\u002F11.aspnet\u002F08.payments\u002F06.monobank-acquiring",{"title":1088,"path":1089,"stem":1090},"Інтеграція Stripe","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fstripe-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F07.stripe-integration",{"title":1092,"path":1093,"stem":1094},"Webhooks — глибоке занурення","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fwebhooks-deep-dive","01.csharp\u002F11.aspnet\u002F08.payments\u002F08.webhooks-deep-dive",{"title":1096,"path":1097,"stem":1098},"Підписки та рекурентні платежі","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fsubscriptions-recurring","01.csharp\u002F11.aspnet\u002F08.payments\u002F09.subscriptions-recurring",{"title":1100,"path":1101,"stem":1102},"Повернення коштів та диспути","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Frefunds-disputes","01.csharp\u002F11.aspnet\u002F08.payments\u002F10.refunds-disputes",{"title":1104,"path":1105,"stem":1106},"Тестування платіжних інтеграцій","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Ftesting-payments","01.csharp\u002F11.aspnet\u002F08.payments\u002F11.testing-payments",{"title":1108,"path":1109,"stem":1110},"Чекліст виходу в Production","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fproduction-checklist","01.csharp\u002F11.aspnet\u002F08.payments\u002F12.production-checklist",{"title":1112,"icon":1113,"items":1114,"path":1127,"stem":1128,"children":1129,"page":59},"Популярні бібліотеки","lucide:box",[1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],"01.fluent-validation","02.mapster","03.erroror-result-pattern","04.serilog","05.mediatr","06.polly","07.health-checks","08.feature-management","09.fluent-email","10.quest-pdf","11.bogus","12.humanizer-guard","\u002Fcsharp\u002Faspnet\u002Flibraries","01.csharp\u002F11.aspnet\u002F09.libraries",[1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178],{"title":1131,"path":1132,"stem":1133},"Валідація з FluentValidation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-validation","01.csharp\u002F11.aspnet\u002F09.libraries\u002F01.fluent-validation",{"title":1135,"path":1136,"stem":1137},"Маппінг об","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmapster","01.csharp\u002F11.aspnet\u002F09.libraries\u002F02.mapster",{"title":1139,"path":1140,"stem":1141},"Обробка помилок з ErrorOr та Result Pattern в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ferroror-result-pattern","01.csharp\u002F11.aspnet\u002F09.libraries\u002F03.erroror-result-pattern",{"title":1143,"path":1144,"stem":1145},"Структуроване логування з Serilog в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fserilog","01.csharp\u002F11.aspnet\u002F09.libraries\u002F04.serilog",{"title":1147,"path":1148,"stem":1149},"CQRS та Mediator з MediatR в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmediatr","01.csharp\u002F11.aspnet\u002F09.libraries\u002F05.mediatr",{"title":1151,"path":1152,"stem":1153},"Відмовостійкість з Polly в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fpolly","01.csharp\u002F11.aspnet\u002F09.libraries\u002F06.polly",{"title":1155,"path":1156,"stem":1157},"Health Checks в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F09.libraries\u002F07.health-checks",{"title":1159,"path":1160,"stem":1161},"Feature Management та Feature Flags в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffeature-management","01.csharp\u002F11.aspnet\u002F09.libraries\u002F08.feature-management",{"title":1163,"path":1164,"stem":1165},"Відправка Email з FluentEmail в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-email","01.csharp\u002F11.aspnet\u002F09.libraries\u002F09.fluent-email",{"title":1167,"path":1168,"stem":1169},"Генерація PDF з QuestPDF в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fquest-pdf","01.csharp\u002F11.aspnet\u002F09.libraries\u002F10.quest-pdf",{"title":1171,"path":1172,"stem":1173},"Генерація тестових даних з Bogus в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fbogus","01.csharp\u002F11.aspnet\u002F09.libraries\u002F11.bogus",{"title":1175,"path":1176,"stem":1177},"Humanizer та Guard Clauses в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhumanizer-guard","01.csharp\u002F11.aspnet\u002F09.libraries\u002F12.humanizer-guard",{"title":1179,"path":1180,"stem":1181},"План модуля 10.libraries — Популярні бібліотеки ASP.NET","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fplan","01.csharp\u002F11.aspnet\u002F09.libraries\u002Fplan",{"title":1183,"icon":1184,"path":1185,"stem":1186,"children":1187,"page":59},"Razor Pages","i-lucide-layout-template","\u002Fcsharp\u002Faspnet\u002Frazor-pages","01.csharp\u002F11.aspnet\u002F10.razor-pages",[1188,1192,1196,1200,1204,1208],{"title":1189,"path":1190,"stem":1191},"Від Minimal API до Razor Pages: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ffrom-minimal-api","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F01.from-minimal-api",{"title":1193,"path":1194,"stem":1195},"PageModel: логіка сторінки Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fpage-model","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F02.page-model",{"title":1197,"path":1198,"stem":1199},"Razor синтаксис: шаблонізатор у .cshtml","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Frazor-syntax","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F03.razor-syntax",{"title":1201,"path":1202,"stem":1203},"Tag Helpers: типізований HTML","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ftag-helpers","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F04.tag-helpers",{"title":1205,"path":1206,"stem":1207},"Форми і валідація: повний цикл обробки даних","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fforms-validation","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F05.forms-validation",{"title":1209,"path":1210,"stem":1211},"Практичний проєкт: TaskManager на Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fproject-task-manager","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F06.project-task-manager",{"title":1213,"path":1214,"stem":1215,"children":1216,"page":59},"ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc","01.csharp\u002F11.aspnet\u002F11.mvc",[1217,1221,1225,1229,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285],{"title":1218,"path":1219,"stem":1220},"Патерн MVC: архітектура, що змінила веб","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-pattern","01.csharp\u002F11.aspnet\u002F11.mvc\u002F01.mvc-pattern",{"title":1222,"path":1223,"stem":1224},"Від Razor Pages до MVC: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffrom-razor-pages","01.csharp\u002F11.aspnet\u002F11.mvc\u002F02.from-razor-pages",{"title":1226,"path":1227,"stem":1228},"Controllers та Actions: серце MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fcontrollers-actions","01.csharp\u002F11.aspnet\u002F11.mvc\u002F03.controllers-actions",{"title":1230,"path":1231,"stem":1232},"Маршрутизація в MVC: Convention vs Attribute Routing","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Frouting-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F04.routing-mvc",{"title":1234,"path":1235,"stem":1236},"Model Binding: від HTTP до C#","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmodel-binding","01.csharp\u002F11.aspnet\u002F11.mvc\u002F05.model-binding",{"title":1238,"path":1239,"stem":1240},"Views, ViewData, ViewBag, TempData і ViewModel","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fviews-viewdata-tempdata","01.csharp\u002F11.aspnet\u002F11.mvc\u002F06.views-viewdata-tempdata",{"title":1242,"path":1243,"stem":1244},"Filters: аспектно-орієнтоване програмування в MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffilters","01.csharp\u002F11.aspnet\u002F11.mvc\u002F07.filters",{"title":1246,"path":1247,"stem":1248},"Areas: структурування великих застосунків","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fareas","01.csharp\u002F11.aspnet\u002F11.mvc\u002F08.areas",{"title":1250,"path":1251,"stem":1252},"View Components: повторювані незалежні блоки UI","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fview-components","01.csharp\u002F11.aspnet\u002F11.mvc\u002F09.view-components",{"title":1254,"path":1255,"stem":1256},"Display та Editor Templates","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fdisplay-editor-templates","01.csharp\u002F11.aspnet\u002F11.mvc\u002F10.display-editor-templates",{"title":1258,"path":1259,"stem":1260},"Валідація: IValidatableObject та FluentValidation","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fvalidation-advanced","01.csharp\u002F11.aspnet\u002F11.mvc\u002F11.validation-advanced",{"title":1262,"path":1263,"stem":1264},"HTMX: інтерактивність через HTML-атрибути","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx","01.csharp\u002F11.aspnet\u002F11.mvc\u002F12.htmx",{"title":1266,"path":1267,"stem":1268},"HTMX у ASP.NET Core MVC: серверна інтеграція","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fajax-htmx-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F13.ajax-htmx-mvc",{"title":1270,"path":1271,"stem":1272},"Практичний проєкт: Каталог товарів з HTMX","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F14.htmx-project",{"title":1274,"path":1275,"stem":1276},"Завантаження та обробка файлів","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffile-upload","01.csharp\u002F11.aspnet\u002F11.mvc\u002F15.file-upload",{"title":1278,"path":1279,"stem":1280},"Глобалізація та Локалізація MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fglobalization-localization","01.csharp\u002F11.aspnet\u002F11.mvc\u002F16.globalization-localization",{"title":1282,"path":1283,"stem":1284},"Підсумковий проєкт: Блог-платформа","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F17.mvc-project",{"title":1286,"path":1287,"stem":1288},"План курсу: ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fplan","01.csharp\u002F11.aspnet\u002F11.mvc\u002Fplan",{"title":1290,"path":1291,"stem":1292,"children":1293,"page":59},"Web Api","\u002Fcsharp\u002Faspnet\u002Fweb-api","01.csharp\u002F11.aspnet\u002F12.web-api",[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342],{"title":1295,"path":1296,"stem":1297},"Від Minimal API до Controller-based API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffrom-minimal-api-to-controllers","01.csharp\u002F11.aspnet\u002F12.web-api\u002F01.from-minimal-api-to-controllers",{"title":1299,"path":1300,"stem":1301},"ControllerBase, ActionResult\u003CT> та Response Types","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontroller-base-actionresult","01.csharp\u002F11.aspnet\u002F12.web-api\u002F02.controller-base-actionresult",{"title":1303,"path":1304,"stem":1305},"Content Negotiation - JSON, XML та власні форматери","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontent-negotiation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F03.content-negotiation",{"title":1307,"path":1308,"stem":1309},"Версіонування API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-versioning","01.csharp\u002F11.aspnet\u002F12.web-api\u002F04.api-versioning",{"title":1311,"path":1312,"stem":1313},"ProblemDetails та структурована обробка помилок","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fproblemdetails-error-handling","01.csharp\u002F11.aspnet\u002F12.web-api\u002F05.problemdetails-error-handling",{"title":1315,"path":1316,"stem":1317},"Фільтри у Web API контексті","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffilters-for-api","01.csharp\u002F11.aspnet\u002F12.web-api\u002F06.filters-for-api",{"title":1319,"path":1320,"stem":1321},"Пагінація, фільтрація та сортування","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fpagination-filtering-sorting","01.csharp\u002F11.aspnet\u002F12.web-api\u002F07.pagination-filtering-sorting",{"title":1323,"path":1324,"stem":1325},"HATEOAS та Resource Expansion","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhateoas-resource-expansion","01.csharp\u002F11.aspnet\u002F12.web-api\u002F08.hateoas-resource-expansion",{"title":1327,"path":1328,"stem":1329},"Гібридна архітектура - Minimal API + Controllers","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fminimal-api-vs-controllers-hybrid","01.csharp\u002F11.aspnet\u002F12.web-api\u002F09.minimal-api-vs-controllers-hybrid",{"title":1331,"path":1332,"stem":1333},"Документація API - Swashbuckle, NSwag та генерація клієнтів","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-documentation-generation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F10.api-documentation-generation",{"title":1335,"path":1336,"stem":1337},"Health Checks та моніторинг API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhealth-checks-monitoring","01.csharp\u002F11.aspnet\u002F12.web-api\u002F11.health-checks-monitoring",{"title":1339,"path":1340,"stem":1341},"Підсумковий проєкт - Production-Ready REST API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fweb-api-project","01.csharp\u002F11.aspnet\u002F12.web-api\u002F12.web-api-project",{"title":1343,"path":1344,"stem":1345},"План курсу: ASP.NET Core Web API (Controllers)","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fplan","01.csharp\u002F11.aspnet\u002F12.web-api\u002Fplan",{"title":1347,"icon":1348,"path":1349,"stem":1350,"children":1351,"page":59},"Моніторинг","i-lucide-activity","\u002Fcsharp\u002Faspnet\u002Fmonitoring","01.csharp\u002F11.aspnet\u002F13.monitoring",[1352,1356,1360],{"title":1353,"path":1354,"stem":1355},"Спостережуваність: від console.log до production-систем","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fobservability-intro","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F01.observability-intro",{"title":1357,"path":1358,"stem":1359},"Health Checks: перший рівень observability","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F02.health-checks",{"title":1361,"path":1362,"stem":1363},"Вбудовані метрики .NET 10 та System.Diagnostics.Metrics","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fdotnet-metrics","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F03.dotnet-metrics",{"title":1365,"icon":1366,"path":1367,"stem":1368,"children":1369,"page":59},"Desktop UI","i-lucide-app-window","\u002Fcsharp\u002Fdesktop-ui","01.csharp\u002F12.desktop-ui",[1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1538,1542,1546,1550,1554,1558,1562,1566,1570,1574,1578,1582,1586,1590,1594,1598,1602,1606,1610,1614,1618,1622,1626,1630,1634,1638,1642,1646,1650],{"title":1371,"path":1372,"stem":1373},"Що таке десктопна розробка?","\u002Fcsharp\u002Fdesktop-ui\u002Fwhat-is-desktop-dev","01.csharp\u002F12.desktop-ui\u002F01.what-is-desktop-dev",{"title":1375,"path":1376,"stem":1377},"Архітектура WPF — як влаштований графічний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-architecture","01.csharp\u002F12.desktop-ui\u002F02.wpf-architecture",{"title":1379,"path":1380,"stem":1381},"Перший WPF-проєкт — від нуля до вікна","\u002Fcsharp\u002Fdesktop-ui\u002Ffirst-wpf-app","01.csharp\u002F12.desktop-ui\u002F03.first-wpf-app",{"title":1383,"path":1384,"stem":1385},"Перший Avalonia-проєкт: WPF для всіх платформ","\u002Fcsharp\u002Fdesktop-ui\u002F03a.first-avalonia-app","01.csharp\u002F12.desktop-ui\u002F03a.first-avalonia-app",{"title":1387,"path":1388,"stem":1389},"XAML: декларативний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-basics","01.csharp\u002F12.desktop-ui\u002F04.xaml-basics",{"title":1391,"path":1392,"stem":1393},"Fluent UI у WPF — сучасний дизайн Windows 11","\u002Fcsharp\u002Fdesktop-ui\u002F04a.wpf-fluent-ui","01.csharp\u002F12.desktop-ui\u002F04a.wpf-fluent-ui",{"title":1395,"path":1396,"stem":1397},"WPF UI — сучасна бібліотека Fluent контролів","\u002Fcsharp\u002Fdesktop-ui\u002F04b.wpf-ui-library","01.csharp\u002F12.desktop-ui\u002F04b.wpf-ui-library",{"title":1399,"path":1400,"stem":1401},"HandyControl — велика бібліотека UI контролів для WPF","\u002Fcsharp\u002Fdesktop-ui\u002F04c.handycontrol-library","01.csharp\u002F12.desktop-ui\u002F04c.handycontrol-library",{"title":1403,"path":1404,"stem":1405},"Простори імен та ресурси XAML","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-namespaces-resources","01.csharp\u002F12.desktop-ui\u002F05.xaml-namespaces-resources",{"title":1407,"path":1408,"stem":1409},"XAML в Avalonia: ключові відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F05a.avalonia-xaml-differences","01.csharp\u002F12.desktop-ui\u002F05a.avalonia-xaml-differences",{"title":1411,"path":1412,"stem":1413},"Розширення розмітки XAML (Markup Extensions)","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-markup-extensions","01.csharp\u002F12.desktop-ui\u002F06.xaml-markup-extensions",{"title":1415,"path":1416,"stem":1417},"Панелі Layout: StackPanel, WrapPanel, DockPanel","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part1","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part1",{"title":1419,"path":1420,"stem":1421},"Grid, Canvas, UniformGrid","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part2","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part2",{"title":1423,"path":1424,"stem":1425},"Просунуті техніки Layout","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-advanced","01.csharp\u002F12.desktop-ui\u002F08.layout-advanced",{"title":1427,"path":1428,"stem":1429},"Адаптивний Layout та найкращі практики","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-responsive","01.csharp\u002F12.desktop-ui\u002F09.layout-responsive",{"title":1431,"path":1432,"stem":1433},"Layout в Avalonia: відмінності та нові можливості","\u002Fcsharp\u002Fdesktop-ui\u002F09a.layout-avalonia","01.csharp\u002F12.desktop-ui\u002F09a.layout-avalonia",{"title":1435,"path":1436,"stem":1437},"Button, Image, ProgressBar та інші базові контроли","\u002Fcsharp\u002Fdesktop-ui\u002Fbasic-controls","01.csharp\u002F12.desktop-ui\u002F10.basic-controls",{"title":1439,"path":1440,"stem":1441},"Контроли в Avalonia: відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F10a.controls-avalonia","01.csharp\u002F12.desktop-ui\u002F10a.controls-avalonia",{"title":1443,"path":1444,"stem":1445},"Текстові контроли — TextBlock, TextBox, RichTextBox","\u002Fcsharp\u002Fdesktop-ui\u002Ftext-controls","01.csharp\u002F12.desktop-ui\u002F11.text-controls",{"title":1447,"path":1448,"stem":1449},"Контроли вибору — CheckBox, RadioButton, ComboBox, ListBox, DatePicker","\u002Fcsharp\u002Fdesktop-ui\u002Fselection-controls","01.csharp\u002F12.desktop-ui\u002F12.selection-controls",{"title":1451,"path":1452,"stem":1453},"Content Model — GroupBox, Expander, TabControl, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fcontent-controls","01.csharp\u002F12.desktop-ui\u002F13.content-controls",{"title":1455,"path":1456,"stem":1457},"UI\u002FUX принципи десктопних застосунків","\u002Fcsharp\u002Fdesktop-ui\u002F13a.ui-ux-principles","01.csharp\u002F12.desktop-ui\u002F13a.ui-ux-principles",{"title":1459,"path":1460,"stem":1461},"Dependency Properties — Концепція та Value Resolution","\u002Fcsharp\u002Fdesktop-ui\u002Fdependency-properties-part1","01.csharp\u002F12.desktop-ui\u002F14.dependency-properties-part1",{"title":1463,"path":1464,"stem":1465},"Avalonia Property System — StyledProperty та DirectProperty","\u002Fcsharp\u002Fdesktop-ui\u002F14a.avalonia-property-system","01.csharp\u002F12.desktop-ui\u002F14a.avalonia-property-system",{"title":1467,"path":1468,"stem":1469},"Attached Properties — Властивості без меж","\u002Fcsharp\u002Fdesktop-ui\u002Fattached-properties","01.csharp\u002F12.desktop-ui\u002F15.attached-properties",{"title":1471,"path":1472,"stem":1473},"Routed Events — Маршрутизація подій у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Frouted-events","01.csharp\u002F12.desktop-ui\u002F16.routed-events",{"title":1475,"path":1476,"stem":1477},"Data Binding — Від Code-Behind до Декларативності","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part1","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part1",{"title":1479,"path":1480,"stem":1481},"INotifyPropertyChanged — Живе оновлення UI","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part2","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part2",{"title":1483,"path":1484,"stem":1485},"Compiled Bindings в Avalonia — Безпека на етапі компіляції","\u002Fcsharp\u002Fdesktop-ui\u002F17a.avalonia-compiled-bindings","01.csharp\u002F12.desktop-ui\u002F17a.avalonia-compiled-bindings",{"title":1487,"path":1488,"stem":1489},"Просунутий Data Binding — ElementName, RelativeSource, MultiBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-advanced","01.csharp\u002F12.desktop-ui\u002F18.data-binding-advanced",{"title":1491,"path":1492,"stem":1493},"Value Converters — Перетворення типів даних у Data Binding","\u002Fcsharp\u002Fdesktop-ui\u002Fvalue-converters","01.csharp\u002F12.desktop-ui\u002F19.value-converters",{"title":1495,"path":1496,"stem":1497},"Data Templates — Візуалізація об'єктів у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-templates","01.csharp\u002F12.desktop-ui\u002F20.data-templates",{"title":1499,"path":1500,"stem":1501},"Collections Binding Part 1 — ObservableCollection та ItemsControl","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part1","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part1",{"title":1503,"path":1504,"stem":1505},"Collections Binding Part 2 — ICollectionView, Filtering, Sorting та Virtualization","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part2","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part2",{"title":1507,"path":1508,"stem":1509},"MVVM Pattern — Від Spaghetti Code до архітектури","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-pattern","01.csharp\u002F12.desktop-ui\u002F22.mvvm-pattern",{"title":1511,"path":1512,"stem":1513},"ViewModel Implementation — Від BaseViewModel до валідації","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-implementation","01.csharp\u002F12.desktop-ui\u002F23.viewmodel-implementation",{"title":1515,"path":1516,"stem":1517},"Commands — Від event handlers до декларативних команд","\u002Fcsharp\u002Fdesktop-ui\u002Fcommands","01.csharp\u002F12.desktop-ui\u002F24.commands",{"title":1519,"path":1520,"stem":1521},"MVVM Toolkit — MVVM без boilerplate через Source Generators","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-toolkit","01.csharp\u002F12.desktop-ui\u002F25.mvvm-toolkit",{"title":1523,"path":1524,"stem":1525},"Messenger Pattern — Комунікація між ViewModel без прямих посилань","\u002Fcsharp\u002Fdesktop-ui\u002Fmessenger-pattern","01.csharp\u002F12.desktop-ui\u002F26.messenger-pattern",{"title":1527,"path":1528,"stem":1529},"Стилі WPF — CSS для десктопу","\u002Fcsharp\u002Fdesktop-ui\u002Fstyles-basics","01.csharp\u002F12.desktop-ui\u002F27.styles-basics",{"title":1531,"path":1532,"stem":1533},"CSS-like стилі Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F27a.avalonia-css-styling","01.csharp\u002F12.desktop-ui\u002F27a.avalonia-css-styling",{"title":1535,"path":1536,"stem":1537},"Control Templates — Частина 1. Концепція та TemplateBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part1","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part1",{"title":1539,"path":1540,"stem":1541},"Control Templates — Частина 2. Named Parts та ContentPresenter","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part2","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part2",{"title":1543,"path":1544,"stem":1545},"Control Themes в Avalonia — нова ера стилізації","\u002Fcsharp\u002Fdesktop-ui\u002F28a.avalonia-control-themes","01.csharp\u002F12.desktop-ui\u002F28a.avalonia-control-themes",{"title":1547,"path":1548,"stem":1549},"Triggers та Visual State Manager у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Ftriggers-visual-states","01.csharp\u002F12.desktop-ui\u002F29.triggers-visual-states",{"title":1551,"path":1552,"stem":1553},"Pseudo-classes в Avalonia — замість WPF Triggers","\u002Fcsharp\u002Fdesktop-ui\u002F29a.avalonia-pseudo-classes","01.csharp\u002F12.desktop-ui\u002F29a.avalonia-pseudo-classes",{"title":1555,"path":1556,"stem":1557},"Теми та ресурсні словники у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fresources-themes","01.csharp\u002F12.desktop-ui\u002F30.resources-themes",{"title":1559,"path":1560,"stem":1561},"Avalonia Themes — Fluent Design та система тематизації","\u002Fcsharp\u002Fdesktop-ui\u002F30a.avalonia-themes-fluent","01.csharp\u002F12.desktop-ui\u002F30a.avalonia-themes-fluent",{"title":1563,"path":1564,"stem":1565},"Контроли колекцій — глибоке занурення","\u002Fcsharp\u002Fdesktop-ui\u002Fcollection-controls","01.csharp\u002F12.desktop-ui\u002F31.collection-controls",{"title":1567,"path":1568,"stem":1569},"DataGrid — колонки та базове відображення","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part1","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part1",{"title":1571,"path":1572,"stem":1573},"DataGrid — сортування, фільтрація, редагування","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part2","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part2",{"title":1575,"path":1576,"stem":1577},"TreeView та GridView","\u002Fcsharp\u002Fdesktop-ui\u002Ftreeview-listview","01.csharp\u002F12.desktop-ui\u002F33.treeview-listview",{"title":1579,"path":1580,"stem":1581},"Меню, Toolbar, ContextMenu, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fmenus-toolbars","01.csharp\u002F12.desktop-ui\u002F34.menus-toolbars",{"title":1583,"path":1584,"stem":1585},"Навігація та керування вікнами. Частина 1: вікна та сторінки","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part1","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part1",{"title":1587,"path":1588,"stem":1589},"Навігація та керування вікнами. Частина 2: MVVM-навігація","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part2","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part2",{"title":1591,"path":1592,"stem":1593},"Avalonia — Навігація та діалоги","\u002Fcsharp\u002Fdesktop-ui\u002F35a.avalonia-navigation-dialogs","01.csharp\u002F12.desktop-ui\u002F35a.avalonia-navigation-dialogs",{"title":1595,"path":1596,"stem":1597},"Діалоги та File Pickers у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdialogs-file-pickers","01.csharp\u002F12.desktop-ui\u002F36.dialogs-file-pickers",{"title":1599,"path":1600,"stem":1601},"UserControl: компонентний підхід у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fuser-controls","01.csharp\u002F12.desktop-ui\u002F37.user-controls",{"title":1603,"path":1604,"stem":1605},"Custom Controls: Lookless Controls у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fcustom-controls","01.csharp\u002F12.desktop-ui\u002F38.custom-controls",{"title":1607,"path":1608,"stem":1609},"Avalonia TemplatedControl — Lookless Controls","\u002Fcsharp\u002Fdesktop-ui\u002F38a.avalonia-templated-controls","01.csharp\u002F12.desktop-ui\u002F38a.avalonia-templated-controls",{"title":1611,"path":1612,"stem":1613},"Анімації у WPF: Storyboard та Easing Functions","\u002Fcsharp\u002Fdesktop-ui\u002Fanimations-transitions","01.csharp\u002F12.desktop-ui\u002F39.animations-transitions",{"title":1615,"path":1616,"stem":1617},"Анімації в Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F39a.avalonia-animations","01.csharp\u002F12.desktop-ui\u002F39a.avalonia-animations",{"title":1619,"path":1620,"stem":1621},"2D Графіка та Мультимедіа у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fmedia-graphics","01.csharp\u002F12.desktop-ui\u002F40.media-graphics",{"title":1623,"path":1624,"stem":1625},"Dependency Injection у WPF та Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Fdi-integration","01.csharp\u002F12.desktop-ui\u002F41.di-integration",{"title":1627,"path":1628,"stem":1629},"SQLite та EF Core у десктопних додатках","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part1","01.csharp\u002F12.desktop-ui\u002F42.data-persistence-part1",{"title":1631,"path":1632,"stem":1633},"Repository Pattern та Unit of Work","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part2","01.csharp\u002F12.desktop-ui\u002F43.data-persistence-part2",{"title":1635,"path":1636,"stem":1637},"Тестування ViewModels","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-testing","01.csharp\u002F12.desktop-ui\u002F44.viewmodel-testing",{"title":1639,"path":1640,"stem":1641},"Avalonia Headless Testing — тестування UI без вікон","\u002Fcsharp\u002Fdesktop-ui\u002F44a.avalonia-headless-testing","01.csharp\u002F12.desktop-ui\u002F44a.avalonia-headless-testing",{"title":1643,"path":1644,"stem":1645},"Кросплатформна розробка з Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-cross-platform","01.csharp\u002F12.desktop-ui\u002F45.avalonia-cross-platform",{"title":1647,"path":1648,"stem":1649},"Пакування та розгортання Avalonia додатків","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F46.avalonia-packaging-deployment",{"title":1651,"path":1652,"stem":1653},"Розгортання WPF застосунків","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F47.wpf-packaging-deployment",{"title":1655,"icon":658,"path":1656,"stem":1657,"children":1658,"page":59},"Network Programming","\u002Fcsharp\u002Fnetwork-programming","01.csharp\u002F13.network-programming",[1659,1663,1667,1671,1675,1679,1683,1687,1691,1695,1699],{"title":1660,"path":1661,"stem":1662},"Основи комп'ютерних мереж","\u002Fcsharp\u002Fnetwork-programming\u002Ffoundations","01.csharp\u002F13.network-programming\u002F01.foundations",{"title":1664,"path":1665,"stem":1666},"Модель OSI та стек TCP\u002FIP","\u002Fcsharp\u002Fnetwork-programming\u002Fosi-model","01.csharp\u002F13.network-programming\u002F02.osi-model",{"title":1668,"path":1669,"stem":1670},"IP-протокол та адресація","\u002Fcsharp\u002Fnetwork-programming\u002Fip-addressing","01.csharp\u002F13.network-programming\u002F03.ip-addressing",{"title":1672,"path":1673,"stem":1674},"UDP — протокол без з'єднання","\u002Fcsharp\u002Fnetwork-programming\u002Fudp","01.csharp\u002F13.network-programming\u002F05.udp",{"title":1676,"path":1677,"stem":1678},"UDP Broadcast та Multicast","\u002Fcsharp\u002Fnetwork-programming\u002Fudp-broadcast-multicast","01.csharp\u002F13.network-programming\u002F06.udp-broadcast-multicast",{"title":1680,"path":1681,"stem":1682},"HTTP — протокол вебу","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-fundamentals","01.csharp\u002F13.network-programming\u002F07.http-fundamentals",{"title":1684,"path":1685,"stem":1686},"HttpListener — вбудований HTTP-сервер .NET","\u002Fcsharp\u002Fnetwork-programming\u002F07a.http-listener","01.csharp\u002F13.network-programming\u002F07a.http-listener",{"title":1688,"path":1689,"stem":1690},"HTTP Advanced — cookies, аутентифікація та HTTPS","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-advanced","01.csharp\u002F13.network-programming\u002F08.http-advanced",{"title":1692,"path":1693,"stem":1694},"SMTP та протоколи електронної пошти","\u002Fcsharp\u002Fnetwork-programming\u002Fsmtp","01.csharp\u002F13.network-programming\u002F09.smtp",{"title":1696,"path":1697,"stem":1698},"WebSocket — повнодуплексний протокол реального часу","\u002Fcsharp\u002Fnetwork-programming\u002Fwebsockets","01.csharp\u002F13.network-programming\u002F10.websockets",{"title":1700,"path":1701,"stem":1702},"TLS\u002FSSL — криптографічний захист мережевих з'єднань","\u002Fcsharp\u002Fnetwork-programming\u002Ftls-ssl","01.csharp\u002F13.network-programming\u002F11.tls-ssl",{"title":1704,"path":1705,"stem":1706},"C# & .NET: The Ultimate Roadmap","\u002Fcsharp\u002Froadmap","01.csharp\u002Froadmap",{"title":1708,"icon":1709,"path":1710,"stem":1711,"children":1712,"page":59},"C++","i-devicon-cplusplus","\u002Fcpp","02.cpp",[1713,1717,1721,1725,1729,1733,1737,1741,1745,1748,1752,1756,1760,1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896,1900,1904,1908],{"title":1714,"path":1715,"stem":1716},"Вступ у програмування та алгоритми","\u002Fcpp\u002Fintro-algorithms","02.cpp\u002F01.intro-algorithms",{"title":1718,"path":1719,"stem":1720},"Code Style: угоди про оформлення коду","\u002Fcpp\u002Fcode-style","02.cpp\u002F02.code-style",{"title":1722,"path":1723,"stem":1724},"Середовище розробки та перший проєкт","\u002Fcpp\u002Fide-setup","02.cpp\u002F03.ide-setup",{"title":1726,"path":1727,"stem":1728},"Вивід даних на екран","\u002Fcpp\u002Fdata-output","02.cpp\u002F04.data-output",{"title":1730,"path":1731,"stem":1732},"Типи даних, змінні та константи","\u002Fcpp\u002Fdata-types-variables","02.cpp\u002F05.data-types-variables",{"title":1734,"path":1735,"stem":1736},"Ввід даних з клавіатури","\u002Fcpp\u002Fdata-input","02.cpp\u002F06.data-input",{"title":1738,"path":1739,"stem":1740},"Оператори, перетворення типів та логічні операції","\u002Fcpp\u002Foperators-type-conversion","02.cpp\u002F07.operators-type-conversion",{"title":1742,"path":1743,"stem":1744},"Цикли","\u002Fcpp\u002Floops","02.cpp\u002F08.loops",{"title":32,"path":1746,"stem":1747},"\u002Fcpp\u002Farrays","02.cpp\u002F09.arrays",{"title":1749,"path":1750,"stem":1751},"Алгоритми сортування та аналіз складності","\u002Fcpp\u002Fsorting","02.cpp\u002F10.sorting",{"title":1753,"path":1754,"stem":1755},"Алгоритми пошуку","\u002Fcpp\u002Fsearching","02.cpp\u002F11.searching",{"title":1757,"path":1758,"stem":1759},"Функції: основи","\u002Fcpp\u002Ffunctions-basics","02.cpp\u002F12.functions-basics",{"title":1761,"path":1762,"stem":1763},"Функції: прототипи, область видимості та додаткові можливості","\u002Fcpp\u002Ffunctions-scope","02.cpp\u002F13.functions-scope",{"title":1765,"path":1766,"stem":1767},"Функції: перевантаження та шаблони","\u002Fcpp\u002Ffunctions-overloading-templates","02.cpp\u002F14.functions-overloading-templates",{"title":1769,"path":1770,"stem":1771},"Вказівники: основи","\u002Fcpp\u002Fpointers-basics","02.cpp\u002F15.pointers-basics",{"title":1773,"path":1774,"stem":1775},"Посилання (References)","\u002Fcpp\u002Freferences","02.cpp\u002F16.references",{"title":1777,"path":1778,"stem":1779},"Вказівники, const і масиви","\u002Fcpp\u002Fpointers-const-arrays","02.cpp\u002F17.pointers-const-arrays",{"title":1781,"path":1782,"stem":1783},"Адресна арифметика","\u002Fcpp\u002Fpointer-arithmetic","02.cpp\u002F18.pointer-arithmetic",{"title":1785,"path":1786,"stem":1787},"Динамічна пам'ять","\u002Fcpp\u002Fdynamic-memory","02.cpp\u002F19.dynamic-memory",{"title":1789,"path":1790,"stem":1791},"Вказівники типу void","\u002Fcpp\u002Fvoid-pointers","02.cpp\u002F20.void-pointers",{"title":1793,"path":1794,"stem":1795},"Вказівники на вказівники","\u002Fcpp\u002Fpointers-to-pointers","02.cpp\u002F21.pointers-to-pointers",{"title":1797,"path":1798,"stem":1799},"Оператор доступу до членів через вказівник (->)","\u002Fcpp\u002Fmember-access-operator","02.cpp\u002F22.member-access-operator",{"title":1801,"path":1802,"stem":1803},"Цикл for-each (Range-based for)","\u002Fcpp\u002Fforeach-loop","02.cpp\u002F23.foreach-loop",{"title":1805,"path":1806,"stem":1807},"Вказівники на функції","\u002Fcpp\u002Ffunction-pointers","02.cpp\u002F24.function-pointers",{"title":1809,"path":1810,"stem":1811},"Лямбда-вирази","\u002Fcpp\u002Flambdas","02.cpp\u002F25.lambdas",{"title":1813,"path":1814,"stem":1815},"Лямбда-захоплення","\u002Fcpp\u002Flambda-captures","02.cpp\u002F26.lambda-captures",{"title":1817,"path":1818,"stem":1819},"Еліпсис","\u002Fcpp\u002Fellipsis","02.cpp\u002F27.ellipsis",{"title":1821,"path":1822,"stem":1823},"Безпечні альтернативи еліпсису","\u002Fcpp\u002F27a.ellipsis","02.cpp\u002F27a.ellipsis",{"title":1825,"path":1826,"stem":1827},"Аргументи командного рядка","\u002Fcpp\u002Fcommand-line-arguments","02.cpp\u002F28.command-line-arguments",{"title":1829,"path":1830,"stem":1831},"Перерахування (enum)","\u002Fcpp\u002Fenum","02.cpp\u002F29.enum",{"title":1833,"path":1834,"stem":1835},"Класи-перерахування (enum class)","\u002Fcpp\u002Fenum-class","02.cpp\u002F30.enum-class",{"title":1837,"path":1838,"stem":1839},"Псевдоніми типів (typedef і using)","\u002Fcpp\u002Ftype-aliases","02.cpp\u002F31.type-aliases",{"title":1841,"path":1842,"stem":1843},"Системи числення та двійкова арифметика","\u002Fcpp\u002Fnumber-systems","02.cpp\u002F32.number-systems",{"title":1845,"path":1846,"stem":1847},"Структури (struct): агрегування даних","\u002Fcpp\u002Fstruct","02.cpp\u002F33.struct",{"title":1849,"path":1850,"stem":1851},"Структури у функціях","\u002Fcpp\u002Fstruct-functions","02.cpp\u002F34.struct-functions",{"title":1853,"path":1854,"stem":1855},"Масиви структур і вкладені структури","\u002Fcpp\u002Fstruct-arrays","02.cpp\u002F35.struct-arrays",{"title":1857,"path":1858,"stem":1859},"Патерни struct та межі застосування","\u002Fcpp\u002Fstruct-patterns","02.cpp\u002F36.struct-patterns",{"title":1861,"path":1862,"stem":1863},"Символи та таблиця ASCII","\u002Fcpp\u002Fascii-characters","02.cpp\u002F37.ascii-characters",{"title":1865,"path":1866,"stem":1867},"Unicode та кодування UTF","\u002Fcpp\u002Funicode-utf","02.cpp\u002F38.unicode-utf",{"title":1869,"path":1870,"stem":1871},"C-style рядки","\u002Fcpp\u002Fc-strings","02.cpp\u002F39.c-strings",{"title":1873,"path":1874,"stem":1875},"Вступ до std::string","\u002Fcpp\u002Fstd-string-intro","02.cpp\u002F40.std-string-intro",{"title":1877,"path":1878,"stem":1879},"Довжина, ємність та доступ до символів std::string","\u002Fcpp\u002Fstd-string-capacity-access","02.cpp\u002F41.std-string-capacity-access",{"title":1881,"path":1882,"stem":1883},"Модифікація std::string: присвоювання, додавання, вставка, видалення та заміна","\u002Fcpp\u002Fstd-string-modification","02.cpp\u002F42.std-string-modification",{"title":1885,"path":1886,"stem":1887},"Пошук у std::string: find, npos та практичні патерни","\u002Fcpp\u002Fstd-string-search","02.cpp\u002F43.std-string-search",{"title":1889,"path":1890,"stem":1891},"std::string_view: невласницький погляд на рядок без копіювання","\u002Fcpp\u002Fstd-string-view","02.cpp\u002F44.std-string-view",{"title":1893,"path":1894,"stem":1895},"Об'єднання (union): один блок пам'яті, кілька інтерпретацій","\u002Fcpp\u002Funion","02.cpp\u002F45.union",{"title":1897,"path":1898,"stem":1899},"Організація коду: файли, препроцесор, простори імен","\u002Fcpp\u002Fmultifile-programs","02.cpp\u002F46.multifile-programs",{"title":1901,"path":1902,"stem":1903},"Робота з файлами: C-стиль (stdio.h)","\u002Fcpp\u002Fc-style-files","02.cpp\u002F47.c-style-files",{"title":1905,"path":1906,"stem":1907},"Робота з файлами: C++-стиль (fstream)","\u002Fcpp\u002Fcpp-style-files","02.cpp\u002F48.cpp-style-files",{"title":1909,"path":1910,"stem":1911},"План навчання: Курс C++ — Продовження (Статті 29–60+)","\u002Fcpp\u002Fcurriculum-plan","02.cpp\u002Fcurriculum-plan",{"title":1913,"icon":1914,"path":1915,"stem":1916,"children":1917,"page":59},"JavaScript","i-devicon-javascript","\u002Fjavascript","03.javascript",[1918,1944,1998,2020,2324,2362],{"title":1919,"icon":1920,"path":1921,"stem":1922,"children":1923,"page":59},"Events","i-lucide-mouse-pointer-click","\u002Fjavascript\u002Fevents","03.javascript\u002F01.events",[1924,1928,1932,1936,1940],{"title":1925,"path":1926,"stem":1927},"Вступ до подій браузера","\u002Fjavascript\u002Fevents\u002Fintro","03.javascript\u002F01.events\u002F01.intro",{"title":1929,"path":1930,"stem":1931},"Бульбашковий механізм (Bubbling) та занурення (Capturing)","\u002Fjavascript\u002Fevents\u002Fbubbling-capturing","03.javascript\u002F01.events\u002F02.bubbling-capturing",{"title":1933,"path":1934,"stem":1935},"Делегування подій (Event Delegation)","\u002Fjavascript\u002Fevents\u002Fdelegate-events","03.javascript\u002F01.events\u002F03.delegate-events",{"title":1937,"path":1938,"stem":1939},"Типові дії браузера та preventDefault()","\u002Fjavascript\u002Fevents\u002Fprevent-default","03.javascript\u002F01.events\u002F04.prevent-default",{"title":1941,"path":1942,"stem":1943},"Запуск користувацьких подій (Custom Events)","\u002Fjavascript\u002Fevents\u002Fcustom-events","03.javascript\u002F01.events\u002F05.custom-events",{"title":1945,"icon":1946,"path":1947,"stem":1948,"children":1949,"page":59},"Network","i-lucide-globe","\u002Fjavascript\u002Fnetwork","03.javascript\u002F02.network",[1950,1954,1958,1962,1966,1970,1974,1978,1982,1986,1990,1994],{"title":1951,"path":1952,"stem":1953},"Fetch API - Сучасний підхід до HTTP-запитів","\u002Fjavascript\u002Fnetwork\u002F01-fetch-api","03.javascript\u002F02.network\u002F01-fetch-api",{"title":1955,"path":1956,"stem":1957},"FormData - Робота з формами та файлами","\u002Fjavascript\u002Fnetwork\u002F02-formdata","03.javascript\u002F02.network\u002F02-formdata",{"title":1959,"path":1960,"stem":1961},"Відстеження прогресу завантаження","\u002Fjavascript\u002Fnetwork\u002F03-download-progress","03.javascript\u002F02.network\u002F03-download-progress",{"title":1963,"path":1964,"stem":1965},"Переривання fetch-запитів","\u002Fjavascript\u002Fnetwork\u002F04-abort-requests","03.javascript\u002F02.network\u002F04-abort-requests",{"title":1967,"path":1968,"stem":1969},"CORS - Запити між різними джерелами","\u002Fjavascript\u002Fnetwork\u002F05-cors","03.javascript\u002F02.network\u002F05-cors",{"title":1971,"path":1972,"stem":1973},"Fetch API - Повний довідник опцій","\u002Fjavascript\u002Fnetwork\u002F06-fetch-options","03.javascript\u002F02.network\u002F06-fetch-options",{"title":1975,"path":1976,"stem":1977},"URL Objects - Робота з посиланнями","\u002Fjavascript\u002Fnetwork\u002F07-url-objects","03.javascript\u002F02.network\u002F07-url-objects",{"title":1979,"path":1980,"stem":1981},"XMLHttpRequest - AJAX та низькорівневі запити","\u002Fjavascript\u002Fnetwork\u002F08-xmlhttprequest","03.javascript\u002F02.network\u002F08-xmlhttprequest",{"title":1983,"path":1984,"stem":1985},"Відновлюване завантаження файлів","\u002Fjavascript\u002Fnetwork\u002F09-resumable-upload","03.javascript\u002F02.network\u002F09-resumable-upload",{"title":1987,"path":1988,"stem":1989},"Cookies, document.cookie та світ після \"Cookiepocalypse\"","\u002Fjavascript\u002Fnetwork\u002F10-cookies","03.javascript\u002F02.network\u002F10-cookies",{"title":1991,"path":1992,"stem":1993},"js-cookie: Керування Cookies без Болю","\u002Fjavascript\u002Fnetwork\u002F11-js-cookie","03.javascript\u002F02.network\u002F11-js-cookie",{"title":1995,"path":1996,"stem":1997},"Axios: Потужний HTTP-клієнт для JavaScript","\u002Fjavascript\u002Fnetwork\u002F12-axios","03.javascript\u002F02.network\u002F12-axios",{"title":1999,"icon":2000,"path":2001,"stem":2002,"children":2003,"page":59},"Bom","i-lucide-monitor","\u002Fjavascript\u002Fbom","03.javascript\u002F03.bom",[2004,2008,2012,2016],{"title":2005,"path":2006,"stem":2007},"LocalStorage, SessionStorage та patterns збереження даних","\u002Fjavascript\u002Fbom\u002F01-localstorage","03.javascript\u002F03.bom\u002F01-localstorage",{"title":2009,"path":2010,"stem":2011},"Location Object - Керування адресою сторінки","\u002Fjavascript\u002Fbom\u002F02-location-object","03.javascript\u002F03.bom\u002F02-location-object",{"title":2013,"path":2014,"stem":2015},"History API - Керування історією браузера","\u002Fjavascript\u002Fbom\u002F03-history-api","03.javascript\u002F03.bom\u002F03-history-api",{"title":2017,"path":2018,"stem":2019},"Navigator Object - Ідентифікація та Можливості Пристрою","\u002Fjavascript\u002Fbom\u002F04-navigator-object","03.javascript\u002F03.bom\u002F04-navigator-object",{"title":2021,"icon":2022,"path":2023,"stem":2024,"children":2025},"React","i-devicon-react","\u002Fjavascript\u002Freact","03.javascript\u002F04.react\u002Findex",[2026,2027,2031,2035,2039,2043,2106,2141,2293],{"title":2021,"path":2023,"stem":2024},{"title":2028,"path":2029,"stem":2030},"Робота з Формами в React","\u002Fjavascript\u002Freact\u002Freact-forms","03.javascript\u002F04.react\u002F01.react-forms",{"title":2032,"path":2033,"stem":2034},"React Hook Form: Професійна Робота з Формами","\u002Fjavascript\u002Freact\u002Freact-hook-form","03.javascript\u002F04.react\u002F02.react-hook-form",{"title":2036,"path":2037,"stem":2038},"React Hook Form: Глибоке Розуміння Архітектури та Оптимізації","\u002Fjavascript\u002Freact\u002Freact-hook-form-new","03.javascript\u002F04.react\u002F02.react-hook-form-new",{"title":2040,"path":2041,"stem":2042},"Axios та React: Професійна Архітектура Запитів","\u002Fjavascript\u002Freact\u002Fdata-fetching-axios","03.javascript\u002F04.react\u002F03.data-fetching-axios",{"title":2044,"icon":132,"path":2045,"stem":2046,"children":2047},"Tanstack Query","\u002Fjavascript\u002Freact\u002Ftanstack-query","03.javascript\u002F04.react\u002F04.tanstack-query\u002Findex",[2048,2050,2054,2058,2062,2066,2070,2074,2078,2082,2086,2090,2094,2098,2102],{"title":2049,"path":2045,"stem":2046},"TanStack Query: Майстерність Керування Станом Сервера",{"title":2051,"path":2052,"stem":2053},"Парадигма Server State: Чому useEffect недостатньо","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-state-paradigm","03.javascript\u002F04.react\u002F04.tanstack-query\u002F01.server-state-paradigm",{"title":2055,"path":2056,"stem":2057},"Встановлення та Налаштування: Фундамент","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Finstallation-and-devtools","03.javascript\u002F04.react\u002F04.tanstack-query\u002F02.installation-and-devtools",{"title":2059,"path":2060,"stem":2061},"Основи Запитів та Магія Ключів","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fquery-basics-and-keys","03.javascript\u002F04.react\u002F04.tanstack-query\u002F03.query-basics-and-keys",{"title":2063,"path":2064,"stem":2065},"Синхронізація Даних: Життєвий Цикл Запиту","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fdata-synchronization","03.javascript\u002F04.react\u002F04.tanstack-query\u002F04.data-synchronization",{"title":2067,"path":2068,"stem":2069},"Мутації та Інвалідація: Зміна Даних","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fmutations-and-invalidation","03.javascript\u002F04.react\u002F04.tanstack-query\u002F05.mutations-and-invalidation",{"title":2071,"path":2072,"stem":2073},"Оптимістичні Оновлення: Швидше за Світло","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Foptimistic-updates","03.javascript\u002F04.react\u002F04.tanstack-query\u002F06.optimistic-updates",{"title":2075,"path":2076,"stem":2077},"Пагінація та Infinite Scroll","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fpagination-and-load-more","03.javascript\u002F04.react\u002F04.tanstack-query\u002F07.pagination-and-load-more",{"title":2079,"path":2080,"stem":2081},"Просунуті Патерни та Оптимізація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F04.tanstack-query\u002F08.advanced-patterns",{"title":2083,"path":2084,"stem":2085},"Архітектура та Best Practices","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Farchitecture-and-best-practices","03.javascript\u002F04.react\u002F04.tanstack-query\u002F09.architecture-and-best-practices",{"title":2087,"path":2088,"stem":2089},"Server-Side Rendering (SSR) та Гідратація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-side-rendering","03.javascript\u002F04.react\u002F04.tanstack-query\u002F10.server-side-rendering",{"title":2091,"path":2092,"stem":2093},"Стратегії Тестування","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Ftesting-strategies","03.javascript\u002F04.react\u002F04.tanstack-query\u002F11.testing-strategies",{"title":2095,"path":2096,"stem":2097},"Аутентифікація та Обробка Помилок","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fauthentication-and-errors","03.javascript\u002F04.react\u002F04.tanstack-query\u002F12.authentication-and-errors",{"title":2099,"path":2100,"stem":2101},"React Suspense та Майбутнє","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Freact-suspense","03.javascript\u002F04.react\u002F04.tanstack-query\u002F13.react-suspense",{"title":2103,"path":2104,"stem":2105},"Глибоке Занурення в Продуктивність","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fperformance-deep-dive","03.javascript\u002F04.react\u002F04.tanstack-query\u002F14.performance-deep-dive",{"title":2107,"icon":2022,"path":2108,"stem":2109,"children":2110},"React Router","\u002Fjavascript\u002Freact\u002Freact-router","03.javascript\u002F04.react\u002F05.react-router\u002Findex",[2111,2113,2117,2121,2125,2129,2133,2137],{"title":2112,"path":2108,"stem":2109},"React Router: Навігаційна система сучасного вебу",{"title":2114,"path":2115,"stem":2116},"Налаштування та Базовий Роутинг","\u002Fjavascript\u002Freact\u002Freact-router\u002Fsetup-and-basic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F01.setup-and-basic-routing",{"title":2118,"path":2119,"stem":2120},"Динамічна Навігація","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnavigation-and-links","03.javascript\u002F04.react\u002F05.react-router\u002F02.navigation-and-links",{"title":2122,"path":2123,"stem":2124},"Вкладені Маршрути та Макети","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnested-routes-and-layouts","03.javascript\u002F04.react\u002F05.react-router\u002F03.nested-routes-and-layouts",{"title":2126,"path":2127,"stem":2128},"Динамічні Маршрути та Параметри","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdynamic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F04.dynamic-routing",{"title":2130,"path":2131,"stem":2132},"Data APIs: Loaders та Actions","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdata-loading","03.javascript\u002F04.react\u002F05.react-router\u002F05.data-loading",{"title":2134,"path":2135,"stem":2136},"Просунуті Патерни","\u002Fjavascript\u002Freact\u002Freact-router\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F05.react-router\u002F06.advanced-patterns",{"title":2138,"path":2139,"stem":2140},"Legacy Routing: Компонентний підхід","\u002Fjavascript\u002Freact\u002Freact-router\u002Flegacy-routing","03.javascript\u002F04.react\u002F05.react-router\u002F07.legacy-routing",{"title":2142,"icon":132,"path":2143,"stem":2144,"children":2145},"Redux","\u002Fjavascript\u002Freact\u002Fredux","03.javascript\u002F04.react\u002F06.redux\u002Findex",[2146,2148,2164,2193,2202,2223,2239,2268],{"title":2147,"path":2143,"stem":2144},"Redux: Еволюція управління станом",{"title":14,"icon":15,"path":2149,"stem":2150,"children":2151,"page":59},"\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals",[2152,2156,2160],{"title":2153,"path":2154,"stem":2155},"Вступ до State Management","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fintro-state-management","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F01.intro-state-management",{"title":2157,"path":2158,"stem":2159},"Філософія Redux та Три Принципи","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fredux-philosophy","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F02.redux-philosophy",{"title":2161,"path":2162,"stem":2163},"Чисті функції та Іммутабельність","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fpure-functions-immutability","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F03.pure-functions-immutability",{"title":2165,"icon":132,"path":2166,"stem":2167,"children":2168,"page":59},"Classic Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux",[2169,2173,2177,2181,2185,2189],{"title":2170,"path":2171,"stem":2172},"Створення Store (Classic Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fstore-setup","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F01.store-setup",{"title":2174,"path":2175,"stem":2176},"Actions, Constants та Action Creators","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Factions-constants","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F02.actions-constants",{"title":2178,"path":2179,"stem":2180},"Логіка Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freducers","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F03.reducers",{"title":2182,"path":2183,"stem":2184},"Комбінування Reducers (Root Reducer)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fdata-flow","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F04.data-flow",{"title":2186,"path":2187,"stem":2188},"Підключення до React (React-Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freact-redux-connection","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F05.react-redux-connection",{"title":2190,"path":2191,"stem":2192},"Middleware та Асинхронність (Redux Thunk)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fmiddleware-thunk","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F06.middleware-thunk",{"title":2194,"icon":132,"path":2195,"stem":2196,"children":2197,"page":59},"Transition To Rtk","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk",[2198],{"title":2199,"path":2200,"stem":2201},"Проблеми класичного Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk\u002Fproblems-with-classic","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk\u002F01.problems-with-classic",{"title":2203,"icon":132,"path":2204,"stem":2205,"children":2206,"page":59},"Redux Toolkit","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit",[2207,2211,2215,2219],{"title":2208,"path":2209,"stem":2210},"Налаштування Store з configureStore","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fconfigure-store","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F01.configure-store",{"title":2212,"path":2213,"stem":2214},"createSlice: Революція в Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fcreate-slice","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F02.create-slice",{"title":2216,"path":2217,"stem":2218},"Асинхронність з createAsyncThunk","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fasync-thunks","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F03.async-thunks",{"title":2220,"path":2221,"stem":2222},"04. Entity Adapter: Керування нормалізованим станом","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fentity-adapter","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F04.entity-adapter",{"title":2224,"icon":92,"path":2225,"stem":2226,"children":2227,"page":59},"Advanced","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced",[2228,2232,2236],{"title":2229,"path":2230,"stem":2231},"Мемоізація та Селектори: Повний Гайд по Reselect","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Fselectors-reselect","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F01.selectors-reselect",{"title":2233,"path":2234,"stem":2235},"RTK Query: Архітектура Серверного Кешу","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Frtk-query-intro","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F02.rtk-query-intro",{"title":2083,"path":2237,"stem":2238},"\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Farchitecture-best-practices","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F03.architecture-best-practices",{"title":2240,"icon":132,"path":2241,"stem":2242,"children":2243,"page":59},"Project Kanban","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban",[2244,2248,2252,2256,2260,2264],{"title":2245,"path":2246,"stem":2247},"Проєкт: Kanban Board (Trello Clone)","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fproject-overview","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F01.project-overview",{"title":2249,"path":2250,"stem":2251},"Налаштування та Типізація","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fsetup-and-types","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F02.setup-and-types",{"title":2253,"path":2254,"stem":2255},"Board Slice: Серце Дошки","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fboard-slice","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F03.board-slice",{"title":2257,"path":2258,"stem":2259},"Логіка Drag & Drop","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fdrag-and-drop-logic","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F04.drag-and-drop-logic",{"title":2261,"path":2262,"stem":2263},"Інтеграція з RTK Query","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Frtk-query-integration","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F05.rtk-query-integration",{"title":2265,"path":2266,"stem":2267},"Optimistic Updates","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Foptimistic-updates","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F06.optimistic-updates",{"title":2269,"icon":132,"path":2270,"stem":2271,"children":2272,"page":59},"Testing","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting","03.javascript\u002F04.react\u002F06.redux\u002F07.testing",[2273,2277,2281,2285,2289],{"title":2274,"path":2275,"stem":2276},"Тестування Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Fintro-testing","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F01.intro-testing",{"title":2278,"path":2279,"stem":2280},"Тестування Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-reducers","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F02.testing-reducers",{"title":2282,"path":2283,"stem":2284},"Тестування Селекторів","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-selectors","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F03.testing-selectors",{"title":2286,"path":2287,"stem":2288},"Тестування Компонентів (Integration)","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-components","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F04.testing-components",{"title":2290,"path":2291,"stem":2292},"Тестування Async Thunks","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-thunks","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F05.testing-thunks",{"title":2294,"icon":132,"path":2295,"stem":2296,"children":2297},"Ui Libraries","\u002Fjavascript\u002Freact\u002Fui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002Findex",[2298,2300,2304,2308,2312,2316,2320],{"title":2299,"path":2295,"stem":2296},"UI Бібліотеки в React",{"title":2301,"path":2302,"stem":2303},"Вступ до UI Бібліотек: Навіщо Винаходити Велосипед Двічі?","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fintroduction-to-ui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002F01.introduction-to-ui-libraries",{"title":2305,"path":2306,"stem":2307},"Філософія shadcn\u002Fui: \"Not a Component Library\"","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-philosophy","03.javascript\u002F04.react\u002F07.ui-libraries\u002F02.shadcn-philosophy",{"title":2309,"path":2310,"stem":2311},"Установка та Налаштування shadcn\u002Fui","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-installation","03.javascript\u002F04.react\u002F07.ui-libraries\u002F03.shadcn-installation",{"title":2313,"path":2314,"stem":2315},"Базові Компоненти shadcn\u002Fui: Фундамент Інтерфейсу","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-basics","03.javascript\u002F04.react\u002F07.ui-libraries\u002F04.shadcn-components-basics",{"title":2317,"path":2318,"stem":2319},"Компоненти Форм: Побудова Інтерактивних Form","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-forms","03.javascript\u002F04.react\u002F07.ui-libraries\u002F05.shadcn-components-forms",{"title":2321,"path":2322,"stem":2323},"Складні Компоненти: Dialog, Dropdown, Table та Command","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-advanced","03.javascript\u002F04.react\u002F07.ui-libraries\u002F06.shadcn-components-advanced",{"title":2325,"icon":2326,"path":2327,"stem":2328,"children":2329,"page":59},"TypeScript","i-devicon-typescript","\u002Fjavascript\u002Ftypescript","03.javascript\u002F05.typescript",[2330,2334,2338,2342,2346,2350,2354,2358],{"title":2331,"path":2332,"stem":2333},"TypeScript: Броня для вашого коду","\u002Fjavascript\u002Ftypescript\u002Fintro-and-basic-types","03.javascript\u002F05.typescript\u002F01.intro-and-basic-types",{"title":2335,"path":2336,"stem":2337},"Майстерність Моделювання Даних: Інтерфейси та Просунуті Типи","\u002Fjavascript\u002Ftypescript\u002Finterfaces-and-advanced-types","03.javascript\u002F05.typescript\u002F02.interfaces-and-advanced-types",{"title":2339,"path":2340,"stem":2341},"Алхімія Типів: Generics та Utility Types","\u002Fjavascript\u002Ftypescript\u002Fgenerics-and-utilities","03.javascript\u002F05.typescript\u002F03.generics-and-utilities",{"title":2343,"path":2344,"stem":2345},"Архітектура та Шаблони: Класи в TypeScript","\u002Fjavascript\u002Ftypescript\u002Fclasses-and-oop","03.javascript\u002F05.typescript\u002F04.classes-and-oop",{"title":2347,"path":2348,"stem":2349},"Продакшн та Екосистема: Advanced Config & Workflow","\u002Fjavascript\u002Ftypescript\u002Fadvanced-patterns-and-config","03.javascript\u002F05.typescript\u002F05.advanced-patterns-and-config",{"title":2351,"path":2352,"stem":2353},"TypeScript у світі React","\u002Fjavascript\u002Ftypescript\u002Freact-basics","03.javascript\u002F05.typescript\u002F06.react-basics",{"title":2355,"path":2356,"stem":2357},"React + TypeScript: Продвинуті патерни","\u002Fjavascript\u002Ftypescript\u002Freact-advanced","03.javascript\u002F05.typescript\u002F07.react-advanced",{"title":2359,"path":2360,"stem":2361},"React + TypeScript: Екосистема та бібліотеки","\u002Fjavascript\u002Ftypescript\u002Freact-ecosystem","03.javascript\u002F05.typescript\u002F08.react-ecosystem",{"title":2363,"path":2364,"stem":2365},"Atomic Design","\u002Fjavascript\u002Fatomic-design","03.javascript\u002F2.atomic-design",{"title":2367,"icon":2368,"path":2369,"stem":2370,"children":2371,"page":59},"Java","i-devicon-java","\u002Fjava","04.java",[2372,2375,2378,2382,2386,2390,2394],{"title":162,"path":2373,"stem":2374},"\u002Fjava\u002Fdata-mapper-part1","04.java\u002F01.data-mapper-part1",{"title":166,"path":2376,"stem":2377},"\u002Fjava\u002Fdata-mapper-part2","04.java\u002F02.data-mapper-part2",{"title":2379,"path":2380,"stem":2381},"Service Layer: Організація бізнес-логіки","\u002Fjava\u002Fservice-layer","04.java\u002F03.service-layer",{"title":2383,"path":2384,"stem":2385},"Rich Domain Model та State Pattern","\u002Fjava\u002Frich-domain-model","04.java\u002F04.rich-domain-model",{"title":2387,"path":2388,"stem":2389},"Патерни для складної бізнес-логіки","\u002Fjava\u002Fbusiness-logic-patterns","04.java\u002F05.business-logic-patterns",{"title":2391,"path":2392,"stem":2393},"Обробка помилок та валідація","\u002Fjava\u002Ferror-handling-validation","04.java\u002F06.error-handling-validation",{"title":2395,"path":2396,"stem":2397,"children":2398,"page":59},"Проектування баз даних","\u002Fjava\u002Fpr2","04.java\u002Fpr2",[2399,2403,2407,2411,2415,2419,2423,2427,2431,2435,2439,2443,2447,2451,2455,2459,2463,2467,2471,2475,2479,2483,2487,2491,2495,2499,2503,2507,2511,2515,2519,2523,2527,2531,2535,2539,2543],{"title":2400,"path":2401,"stem":2402},"Концептуальне моделювання: Мистецтво розуміння предметної області","\u002Fjava\u002Fpr2\u002Fconceptual-modeling","04.java\u002Fpr2\u002F01.conceptual-modeling",{"title":2404,"path":2405,"stem":2406},"Логічне моделювання: Від бізнес-ідей до структур даних","\u002Fjava\u002Fpr2\u002Flogical-modeling","04.java\u002Fpr2\u002F02.logical-modeling",{"title":2408,"path":2409,"stem":2410},"Нормалізація: Гігієна даних та боротьба з аномаліями","\u002Fjava\u002Fpr2\u002Fnormalization","04.java\u002Fpr2\u002F03.normalization",{"title":2412,"path":2413,"stem":2414},"Фізична схема: Від абстракції до DDL","\u002Fjava\u002Fpr2\u002Fphysical-schema","04.java\u002Fpr2\u002F04.physical-schema",{"title":2416,"path":2417,"stem":2418},"Архітектурна класифікація таблиць","\u002Fjava\u002Fpr2\u002Ftable-classification","04.java\u002Fpr2\u002F05.table-classification",{"title":2420,"path":2421,"stem":2422},"Database Migrations: Версіонування схеми з Flyway","\u002Fjava\u002Fpr2\u002Fdatabase-migrations","04.java\u002Fpr2\u002F06.database-migrations",{"title":2424,"path":2425,"stem":2426},"А що, якби це була не реляційна БД?","\u002Fjava\u002Fpr2\u002Fbeyond-relational","04.java\u002Fpr2\u002F07.beyond-relational",{"title":2428,"path":2429,"stem":2430},"Object-Relational Impedance Mismatch: Два світи, що не хочуть дружити","\u002Fjava\u002Fpr2\u002Fimpedance-mismatch","04.java\u002Fpr2\u002F09.impedance-mismatch",{"title":2432,"path":2433,"stem":2434},"JDBC: Перший контакт із базою даних","\u002Fjava\u002Fpr2\u002Fjdbc-fundamentals","04.java\u002Fpr2\u002F10.jdbc-fundamentals",{"title":2436,"path":2437,"stem":2438},"Якість коду: Spotless, SpotBugs та SonarQube","\u002Fjava\u002Fpr2\u002F10a.code-quality","04.java\u002Fpr2\u002F10a.code-quality",{"title":2440,"path":2441,"stem":2442},"Connection Pool: Патерн Object Pool для JDBC-з'єднань","\u002Fjava\u002Fpr2\u002Fconnection-pool","04.java\u002Fpr2\u002F11.connection-pool",{"title":2444,"path":2445,"stem":2446},"Row Data Gateway: Об'єкт як обгортка рядка таблиці","\u002Fjava\u002Fpr2\u002Frow-data-gateway","04.java\u002Fpr2\u002F12.row-data-gateway",{"title":2448,"path":2449,"stem":2450},"Table Data Gateway: Фасад таблиці як архітектурний відступ","\u002Fjava\u002Fpr2\u002Ftable-data-gateway","04.java\u002Fpr2\u002F13.table-data-gateway",{"title":2452,"path":2453,"stem":2454},"Repository + Data Mapper: Правильна шарова архітектура з JDBC","\u002Fjava\u002Fpr2\u002Frepository-data-mapper","04.java\u002Fpr2\u002F14.repository-data-mapper",{"title":2456,"path":2457,"stem":2458},"Identity Map: Кешування сутностей у рамках сесії","\u002Fjava\u002Fpr2\u002Fidentity-map","04.java\u002Fpr2\u002F15.identity-map",{"title":2460,"path":2461,"stem":2462},"Unit of Work: Відстеження змін і координація JDBC-транзакцій","\u002Fjava\u002Fpr2\u002Funit-of-work","04.java\u002Fpr2\u002F16.unit-of-work",{"title":2464,"path":2465,"stem":2466},"Strategy: Замінювані SQL-стратегії для підтримки різних СУБД","\u002Fjava\u002Fpr2\u002Fstrategy-sql","04.java\u002Fpr2\u002F17.strategy-sql",{"title":2468,"path":2469,"stem":2470},"Proxy: Lazy Loading для One-To-Many колекцій","\u002Fjava\u002Fpr2\u002Fproxy-lazy-loading","04.java\u002Fpr2\u002F18.proxy-lazy-loading",{"title":2472,"path":2473,"stem":2474},"Generic Repository через Java Reflection: анотації та динамічний SQL","\u002Fjava\u002Fpr2\u002Fgeneric-repository-reflection","04.java\u002Fpr2\u002F19.generic-repository-reflection",{"title":2476,"path":2477,"stem":2478},"Specification Pattern: Композиція бізнес-правил для складних запитів","\u002Fjava\u002Fpr2\u002Fspecification-pattern","04.java\u002Fpr2\u002F20.specification-pattern",{"title":2480,"path":2481,"stem":2482},"Розширені можливості Specification Pattern: підзапити, агрегації та гібридний підхід","\u002Fjava\u002Fpr2\u002F20a.advanced-specifications","04.java\u002Fpr2\u002F20a.advanced-specifications",{"title":2484,"path":2485,"stem":2486},"Асинхронність у JDBC: Від блокуючих викликів до CompletableFuture","\u002Fjava\u002Fpr2\u002Fasynchronous-jdbc","04.java\u002Fpr2\u002F21.asynchronous-jdbc",{"title":2488,"path":2489,"stem":2490},"Інтеграційне тестування JDBC-репозиторіїв: Embedded H2 та патерн AAA","\u002Fjava\u002Fpr2\u002Fintegration-testing-h2","04.java\u002Fpr2\u002F22.integration-testing-h2",{"title":2492,"path":2493,"stem":2494},"Testcontainers: Тестування з реальною PostgreSQL у Docker-контейнерах","\u002Fjava\u002Fpr2\u002Fintegration-testing-testcontainers","04.java\u002Fpr2\u002F23.integration-testing-testcontainers",{"title":2496,"path":2497,"stem":2498},"Google Guice: Впровадження залежностей у JavaFX-проєкті","\u002Fjava\u002Fpr2\u002Fdependency-injection-guice","04.java\u002Fpr2\u002F24.dependency-injection-guice",{"title":2500,"path":2501,"stem":2502},"JavaFX: Основи побудови графічних інтерфейсів","\u002Fjava\u002Fpr2\u002Fjavafx-fundamentals","04.java\u002Fpr2\u002F25.javafx-fundamentals",{"title":2504,"path":2505,"stem":2506},"Properties та Bindings: Реактивність у JavaFX","\u002Fjava\u002Fpr2\u002Fjavafx-properties-bindings","04.java\u002Fpr2\u002F26.javafx-properties-bindings",{"title":2508,"path":2509,"stem":2510},"MVC vs MVP vs MVVM: Еволюція архітектурних патернів UI","\u002Fjava\u002Fpr2\u002Fui-architecture-patterns","04.java\u002Fpr2\u002F27.ui-architecture-patterns",{"title":2512,"path":2513,"stem":2514},"MVVM на практиці: Побудова ViewModel","\u002Fjava\u002Fpr2\u002Fmvvm-viewmodel-implementation","04.java\u002Fpr2\u002F28.mvvm-viewmodel-implementation",{"title":2516,"path":2517,"stem":2518},"View та Controller: Зв'язування з ViewModel через FXML","\u002Fjava\u002Fpr2\u002Fmvvm-view-controller","04.java\u002Fpr2\u002F29.mvvm-view-controller",{"title":2520,"path":2521,"stem":2522},"Інтеграція MVVM з Guice: Автоматична ін'єкція залежностей","\u002Fjava\u002Fpr2\u002Fmvvm-guice-integration","04.java\u002Fpr2\u002F30.mvvm-guice-integration",{"title":2524,"path":2525,"stem":2526},"Валідація та обробка помилок у MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-validation-error-handling","04.java\u002Fpr2\u002F31.mvvm-validation-error-handling",{"title":2528,"path":2529,"stem":2530},"Навігація та управління екранами у JavaFX MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-navigation-screen-management","04.java\u002Fpr2\u002F32.mvvm-navigation-screen-management",{"title":2532,"path":2533,"stem":2534},"Тестування JavaFX MVVM-додатків","\u002Fjava\u002Fpr2\u002Fmvvm-testing","04.java\u002Fpr2\u002F33.mvvm-testing",{"title":2536,"path":2537,"stem":2538},"Стилізація та теми у JavaFX: CSS та User Experience","\u002Fjava\u002Fpr2\u002Fjavafx-styling-themes","04.java\u002Fpr2\u002F34.javafx-styling-themes",{"title":2540,"path":2541,"stem":2542},"AtlantaFX: Сучасні теми для JavaFX додатків","\u002Fjava\u002Fpr2\u002Fatlantafx-modern-themes","04.java\u002Fpr2\u002F35.atlantafx-modern-themes",{"title":2544,"path":2545,"stem":2546},"Пакування та розповсюдження JavaFX-додатків","\u002Fjava\u002Fpr2\u002Fjar-packaging-distribution","04.java\u002Fpr2\u002F36.jar-packaging-distribution",{"title":2548,"icon":2549,"path":2550,"stem":2551,"children":2552,"page":59},"Python","i-devicon-python","\u002Fpython","05.python",[2553,2557,2560,2564,2568,2572,2576,2580,2584,2588,2592,2596,2600,2604,2608,2669],{"title":2554,"path":2555,"stem":2556},"Модулі, Пакети та Віртуальні Середовища","\u002Fpython\u002Fmodules-packages-venv","05.python\u002F00.modules-packages-venv",{"title":71,"path":2558,"stem":2559},"\u002Fpython\u002Fclasses-objects","05.python\u002F01.classes-objects",{"title":2561,"path":2562,"stem":2563},"Інкапсуляція, Керування Доступом та Властивості","\u002Fpython\u002Fencapsulation","05.python\u002F02.encapsulation",{"title":2565,"path":2566,"stem":2567},"Наслідування, MRO та суперсила super()","\u002Fpython\u002Finheritance-mro","05.python\u002F03.inheritance-mro",{"title":2569,"path":2570,"stem":2571},"Абстракція — ABC проти Статичних Протоколів (PEP 544)","\u002Fpython\u002Fabstraction-protocols","05.python\u002F04.abstraction-protocols",{"title":2573,"path":2574,"stem":2575},"Магічні методи (Dunder) та Емуляція протоколів","\u002Fpython\u002Fdunder-methods","05.python\u002F05.dunder-methods",{"title":2577,"path":2578,"stem":2579},"Декоратори та Керування життєвим циклом методів","\u002Fpython\u002Fdecorators-static-class","05.python\u002F06.decorators-static-class",{"title":2581,"path":2582,"stem":2583},"Дескриптори — Магія доступу до атрибутів","\u002Fpython\u002Fdescriptors","05.python\u002F07.descriptors",{"title":2585,"path":2586,"stem":2587},"Метакласи — Динамічне створення класів під капотом CPython","\u002Fpython\u002Fmetaclasses","05.python\u002F08.metaclasses",{"title":2589,"path":2590,"stem":2591},"Dataclasses, NamedTuple та сучасні контейнери Python","\u002Fpython\u002Fmodern-containers","05.python\u002F09.modern-containers",{"title":2593,"path":2594,"stem":2595},"GIL та модель конкурентності CPython — фундамент перед потоками і процесами","\u002Fpython\u002Fgil-concurrency-intro","05.python\u002F11.gil-concurrency-intro",{"title":2597,"path":2598,"stem":2599},"Threading — конкурентність для I\u002FO-bound задач","\u002Fpython\u002Fthreading","05.python\u002F12.threading",{"title":2601,"path":2602,"stem":2603},"Multiprocessing — справжній паралелізм для CPU-bound задач","\u002Fpython\u002Fmultiprocessing","05.python\u002F13.multiprocessing",{"title":2605,"path":2606,"stem":2607},"asyncio — кооперативна конкурентність та event loop","\u002Fpython\u002Fasyncio","05.python\u002F14.asyncio",{"title":2609,"icon":92,"path":2610,"stem":2611,"children":2612,"page":59},"FastAPI","\u002Fpython\u002Ffastapi","05.python\u002Ffastapi",[2613,2617,2621,2625,2629,2633,2637,2641,2645,2649,2653,2657,2661,2665],{"title":2614,"path":2615,"stem":2616},"Глибокий Typing та Pydantic v2 — від анотацій до валідації","\u002Fpython\u002Ffastapi\u002Ftyping-pydantic","05.python\u002Ffastapi\u002F15.typing-pydantic",{"title":2618,"path":2619,"stem":2620},"WSGI, ASGI та Python Web-екосистема","\u002Fpython\u002Ffastapi\u002Fwsgi-asgi-ecosystem","05.python\u002Ffastapi\u002F16.wsgi-asgi-ecosystem",{"title":2622,"path":2623,"stem":2624},"FastAPI: Перший додаток, Uvicorn та OpenAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-intro","05.python\u002Ffastapi\u002F17.fastapi-intro",{"title":2626,"path":2627,"stem":2628},"Маршрутизація, параметри запитів та APIRouter","\u002Fpython\u002Ffastapi\u002Ffastapi-routing-params","05.python\u002Ffastapi\u002F18.fastapi-routing-params",{"title":2630,"path":2631,"stem":2632},"Pydantic v2 у FastAPI — схеми, валідація та серіалізація","\u002Fpython\u002Ffastapi\u002Ffastapi-pydantic-schemas","05.python\u002Ffastapi\u002F19.fastapi-pydantic-schemas",{"title":2634,"path":2635,"stem":2636},"Dependency Injection — серце архітектури FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-dependency-injection","05.python\u002Ffastapi\u002F20.fastapi-dependency-injection",{"title":2638,"path":2639,"stem":2640},"Обробка помилок, Middleware та CORS у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-errors-middleware","05.python\u002Ffastapi\u002F21.fastapi-errors-middleware",{"title":2642,"path":2643,"stem":2644},"SQLAlchemy 2.0 — ORM, Core та Async Engine","\u002Fpython\u002Ffastapi\u002Fsqlalchemy-orm","05.python\u002Ffastapi\u002F22.sqlalchemy-orm",{"title":2646,"path":2647,"stem":2648},"Alembic — міграції бази даних","\u002Fpython\u002Ffastapi\u002Falembic-migrations","05.python\u002Ffastapi\u002F23.alembic-migrations",{"title":2650,"path":2651,"stem":2652},"Repository Pattern та Clean Architecture у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-repository-clean-arch","05.python\u002Ffastapi\u002F24.fastapi-repository-clean-arch",{"title":2654,"path":2655,"stem":2656},"Автентифікація та авторизація — JWT, OAuth2, RBAC","\u002Fpython\u002Ffastapi\u002Ffastapi-auth-security","05.python\u002Ffastapi\u002F25.fastapi-auth-security",{"title":2658,"path":2659,"stem":2660},"Тестування FastAPI — pytest, httpx, fixtures","\u002Fpython\u002Ffastapi\u002Ffastapi-testing","05.python\u002Ffastapi\u002F26.fastapi-testing",{"title":2662,"path":2663,"stem":2664},"Async на повну — Background Tasks, WebSockets, SSE та Celery","\u002Fpython\u002Ffastapi\u002Ffastapi-async-advanced","05.python\u002Ffastapi\u002F27.fastapi-async-advanced",{"title":2666,"path":2667,"stem":2668},"Deployment — Docker, CI\u002FCD, Monitoring","\u002Fpython\u002Ffastapi\u002Ffastapi-deployment","05.python\u002Ffastapi\u002F28.fastapi-deployment",{"title":2670,"path":2671,"stem":2672},"[object Object]","\u002Fpython\u002Foop-plan","05.python\u002Foop-plan",{"title":2674,"icon":2675,"path":2676,"stem":2677,"children":2678,"page":59},"Бази даних","i-lucide-database","\u002Fdatabases","06.databases",[2679,2709,2732,2769,2798,2816,2850,2862,2871],{"title":2680,"icon":2681,"path":2682,"stem":2683,"children":2684,"page":59},"Intro","i-lucide-play","\u002Fdatabases\u002Fintro","06.databases\u002F01.intro",[2685,2689,2693,2697,2701,2705],{"title":2686,"path":2687,"stem":2688},"Введення в теорію баз даних","\u002Fdatabases\u002Fintro\u002Fintroduction-to-databases","06.databases\u002F01.intro\u002F01.introduction-to-databases",{"title":2690,"path":2691,"stem":2692},"Реляційна модель даних","\u002Fdatabases\u002Fintro\u002Frelational-model-theory","06.databases\u002F01.intro\u002F02.relational-model-theory",{"title":2694,"path":2695,"stem":2696},"ER-моделювання","\u002Fdatabases\u002Fintro\u002Fer-modeling","06.databases\u002F01.intro\u002F03.er-modeling",{"title":2698,"path":2699,"stem":2700},"Логічне проектування БД","\u002Fdatabases\u002Fintro\u002Flogical-schema","06.databases\u002F01.intro\u002F04.logical-schema",{"title":2702,"path":2703,"stem":2704},"Класифікація таблиць","\u002Fdatabases\u002Fintro\u002Ftable-classification","06.databases\u002F01.intro\u002F05.table-classification",{"title":2706,"path":2707,"stem":2708},"PlantUML для баз даних","\u002Fdatabases\u002Fintro\u002Fplantuml-diagrams","06.databases\u002F01.intro\u002F06.plantuml-diagrams",{"title":2710,"icon":2675,"path":2711,"stem":2712,"children":2713,"page":59},"MS SQL Server Start","\u002Fdatabases\u002Fms-sql-server-start","06.databases\u002F02.ms-sql-server-start",[2714,2718,2724,2728],{"title":2715,"path":2716,"stem":2717},"Типи даних у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fdata-types","06.databases\u002F02.ms-sql-server-start\u002F01.data-types",{"title":2719,"path":2720,"stem":2721,"children":2722},"Індекси у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-indexes","06.databases\u002F02.ms-sql-server-start\u002F02.sql-indexes",[2723],{"title":2719,"path":2720,"stem":2721},{"title":2725,"path":2726,"stem":2727},"Системні бази даних MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsystem-databases","06.databases\u002F02.ms-sql-server-start\u002F03.system-databases",{"title":2729,"path":2730,"stem":2731},"Огляд мови SQL та запитів","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-queries-overview","06.databases\u002F02.ms-sql-server-start\u002F04.sql-queries-overview",{"title":2733,"icon":2675,"path":2734,"stem":2735,"children":2736,"page":59},"SQL","\u002Fdatabases\u002Fsql","06.databases\u002F03.sql",[2737,2741,2745,2749,2753,2757,2761,2765],{"title":2738,"path":2739,"stem":2740},"Налаштування демонстраційної бази даних","\u002Fdatabases\u002Fsql\u002Fsample-database-setup","06.databases\u002F03.sql\u002F00.sample-database-setup",{"title":2742,"path":2743,"stem":2744},"DDL - Створення таблиць (CREATE TABLE)","\u002Fdatabases\u002Fsql\u002Fddl-create-table","06.databases\u002F03.sql\u002F01.ddl-create-table",{"title":2746,"path":2747,"stem":2748},"DDL - Зміна та видалення таблиць (ALTER, DROP)","\u002Fdatabases\u002Fsql\u002Fddl-alter-drop-table","06.databases\u002F03.sql\u002F02.ddl-alter-drop-table",{"title":2750,"path":2751,"stem":2752},"SELECT запити - Основи","\u002Fdatabases\u002Fsql\u002Fselect-queries-fundamentals","06.databases\u002F03.sql\u002F03.select-queries-fundamentals",{"title":2754,"path":2755,"stem":2756},"SELECT запити - Розширені можливості","\u002Fdatabases\u002Fsql\u002Fselect-queries-advanced","06.databases\u002F03.sql\u002F04.select-queries-advanced",{"title":2758,"path":2759,"stem":2760},"INSERT запити - Додавання даних","\u002Fdatabases\u002Fsql\u002Finsert-queries","06.databases\u002F03.sql\u002F05.insert-queries",{"title":2762,"path":2763,"stem":2764},"UPDATE та DELETE запити","\u002Fdatabases\u002Fsql\u002Fupdate-delete-queries","06.databases\u002F03.sql\u002F06.update-delete-queries",{"title":2766,"path":2767,"stem":2768},"Транзакції в SQL","\u002Fdatabases\u002Fsql\u002Ftransactions","06.databases\u002F03.sql\u002F07.transactions",{"title":2770,"icon":2675,"path":2771,"stem":2772,"children":2773,"page":59},"Multi Table Databases","\u002Fdatabases\u002Fmulti-table-databases","06.databases\u002F04.multi-table-databases",[2774,2778,2782,2786,2790,2794],{"title":2775,"path":2776,"stem":2777},"Зв'язки та нормалізація БД","\u002Fdatabases\u002Fmulti-table-databases\u002Frelationships-and-normalization","06.databases\u002F04.multi-table-databases\u002F00.relationships-and-normalization",{"title":2779,"path":2780,"stem":2781},"INNER JOIN - З'єднання таблиць","\u002Fdatabases\u002Fmulti-table-databases\u002Finner-join","06.databases\u002F04.multi-table-databases\u002F01.inner-join",{"title":2783,"path":2784,"stem":2785},"OUTER JOINs - LEFT, RIGHT, FULL","\u002Fdatabases\u002Fmulti-table-databases\u002Fouter-joins","06.databases\u002F04.multi-table-databases\u002F02.outer-joins",{"title":2787,"path":2788,"stem":2789},"CROSS та SELF JOINs","\u002Fdatabases\u002Fmulti-table-databases\u002Fcross-self-joins","06.databases\u002F04.multi-table-databases\u002F03.cross-self-joins",{"title":2791,"path":2792,"stem":2793},"Підзапити (Subqueries)","\u002Fdatabases\u002Fmulti-table-databases\u002Fsubqueries","06.databases\u002F04.multi-table-databases\u002F04.subqueries",{"title":2795,"path":2796,"stem":2797},"Агрегації з JOIN","\u002Fdatabases\u002Fmulti-table-databases\u002Faggregations-with-joins","06.databases\u002F04.multi-table-databases\u002F05.aggregations-with-joins",{"title":2799,"icon":2800,"path":2801,"stem":2802,"children":2803,"page":59},"Aggregate Functions","i-lucide-calculator","\u002Fdatabases\u002Faggregate-functions","06.databases\u002F05.aggregate-functions",[2804,2808,2812],{"title":2805,"path":2806,"stem":2807},"Функції агрегування в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fintroduction-aggregate-functions","06.databases\u002F05.aggregate-functions\u002F01.introduction-aggregate-functions",{"title":2809,"path":2810,"stem":2811},"Групування даних в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fgrouping-data","06.databases\u002F05.aggregate-functions\u002F02.grouping-data",{"title":2813,"path":2814,"stem":2815},"Підзапити з агрегатними функціями","\u002Fdatabases\u002Faggregate-functions\u002Fsubqueries-aggregates","06.databases\u002F05.aggregate-functions\u002F03.subqueries-aggregates",{"title":2817,"icon":2818,"path":2819,"stem":2820,"children":2821,"page":59},"Тригери та зберігаємі процедури","i-lucide-database-zap","\u002Fdatabases\u002Ftriggers-stored-procedures","06.databases\u002F07.triggers-stored-procedures",[2822,2826,2830,2834,2838,2842,2846],{"title":2823,"path":2824,"stem":2825},"DML-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fdml-triggers","06.databases\u002F07.triggers-stored-procedures\u002F01.dml-triggers",{"title":2827,"path":2828,"stem":2829},"DDL-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fddl-triggers","06.databases\u002F07.triggers-stored-procedures\u002F02.ddl-triggers",{"title":2831,"path":2832,"stem":2833},"Transact-SQL розширення","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransact-sql-extensions","06.databases\u002F07.triggers-stored-procedures\u002F03.transact-sql-extensions",{"title":2835,"path":2836,"stem":2837},"Транзакції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransactions","06.databases\u002F07.triggers-stored-procedures\u002F04.transactions",{"title":2839,"path":2840,"stem":2841},"Зберігаємі процедури","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fstored-procedures","06.databases\u002F07.triggers-stored-procedures\u002F05.stored-procedures",{"title":2843,"path":2844,"stem":2845},"Користувацькі функції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fuser-defined-functions","06.databases\u002F07.triggers-stored-procedures\u002F06.user-defined-functions",{"title":2847,"path":2848,"stem":2849},"Безпека баз даних","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fsecurity","06.databases\u002F07.triggers-stored-procedures\u002F08.security",{"title":2847,"icon":793,"path":2851,"stem":2852,"children":2853,"page":59},"\u002Fdatabases\u002Fsecurity","06.databases\u002F08.security",[2854,2858],{"title":2855,"path":2856,"stem":2857},"Вступ до безпеки баз даних","\u002Fdatabases\u002Fsecurity\u002Fintroduction","06.databases\u002F08.security\u002F01.introduction",{"title":2859,"path":2860,"stem":2861},"Системні представлення та метадані","\u002Fdatabases\u002Fsecurity\u002Fsystem-views","06.databases\u002F08.security\u002F02.system-views",{"title":2863,"icon":2864,"path":2865,"stem":2866,"children":2867,"page":59},"Резервне копіювання та відновлення","i-lucide-database-backup","\u002Fdatabases\u002Fbackup-recovery","06.databases\u002F09.backup-recovery",[2868],{"title":2863,"path":2869,"stem":2870},"\u002Fdatabases\u002Fbackup-recovery\u002Fbackup-restore","06.databases\u002F09.backup-recovery\u002F01.backup-restore",{"title":2872,"icon":2873,"path":2874,"stem":2875,"children":2876,"page":59},"Повнотекстовий пошук","i-lucide-search","\u002Fdatabases\u002Ffull-text-search","06.databases\u002F10.full-text-search",[2877],{"title":2872,"path":2878,"stem":2879},"\u002Fdatabases\u002Ffull-text-search\u002Ffull-text-search","06.databases\u002F10.full-text-search\u002F01.full-text-search",{"title":2881,"icon":2882,"path":2883,"stem":2884,"children":2885,"page":59},"Tools","i-lucide-wrench","\u002Ftools","07.tools",[2886,2962],{"title":2887,"icon":2888,"path":2889,"stem":2890,"children":2891},"Docker","i-simple-icons-docker","\u002Ftools\u002Fdocker","07.tools\u002F01.docker\u002Findex",[2892,2894,2898,2902,2906,2910,2914,2918,2922,2926,2930,2934,2938,2942,2946,2950,2954,2958],{"title":2893,"path":2889,"stem":2890},"Docker: від нуля до production",{"title":2895,"path":2896,"stem":2897},"Контейнеризація — від проблеми до рішення","\u002Ftools\u002Fdocker\u002Fcontainerization-concept","07.tools\u002F01.docker\u002F01.containerization-concept",{"title":2899,"path":2900,"stem":2901},"Docker — що це і навіщо?","\u002Ftools\u002Fdocker\u002Fdocker-what-and-why","07.tools\u002F01.docker\u002F02.docker-what-and-why",{"title":2903,"path":2904,"stem":2905},"Архітектура Docker Engine","\u002Ftools\u002Fdocker\u002Fdocker-architecture","07.tools\u002F01.docker\u002F03.docker-architecture",{"title":2907,"path":2908,"stem":2909},"Встановлення Docker","\u002Ftools\u002Fdocker\u002Finstallation","07.tools\u002F01.docker\u002F04.installation",{"title":2911,"path":2912,"stem":2913},"Перший контейнер — docker run","\u002Ftools\u002Fdocker\u002Ffirst-container","07.tools\u002F01.docker\u002F05.first-container",{"title":2915,"path":2916,"stem":2917},"Життєвий цикл контейнера","\u002Ftools\u002Fdocker\u002Fcontainer-lifecycle","07.tools\u002F01.docker\u002F06.container-lifecycle",{"title":2919,"path":2920,"stem":2921},"Docker Images — фундаментальні концепції","\u002Ftools\u002Fdocker\u002Fdocker-images-fundamentals","07.tools\u002F01.docker\u002F07.docker-images-fundamentals",{"title":2923,"path":2924,"stem":2925},"Dockerfile — основи","\u002Ftools\u002Fdocker\u002Fdockerfile-basics","07.tools\u002F01.docker\u002F08.dockerfile-basics",{"title":2927,"path":2928,"stem":2929},"Dockerfile — просунуті техніки","\u002Ftools\u002Fdocker\u002Fdockerfile-advanced","07.tools\u002F01.docker\u002F09.dockerfile-advanced",{"title":2931,"path":2932,"stem":2933},"Build Context та кешування шарів","\u002Ftools\u002Fdocker\u002Fbuild-context-and-cache","07.tools\u002F01.docker\u002F10.build-context-and-cache",{"title":2935,"path":2936,"stem":2937},"Реєстри Docker-образів","\u002Ftools\u002Fdocker\u002Fimage-registries","07.tools\u002F01.docker\u002F11.image-registries",{"title":2939,"path":2940,"stem":2941},"Контейнеризація .NET додатків","\u002Ftools\u002Fdocker\u002Fdotnet-containerization","07.tools\u002F01.docker\u002F12.dotnet-containerization",{"title":2943,"path":2944,"stem":2945},"Томи та збереження даних","\u002Ftools\u002Fdocker\u002Fvolumes-and-data","07.tools\u002F01.docker\u002F13.volumes-and-data",{"title":2947,"path":2948,"stem":2949},"Основи мережі в Docker","\u002Ftools\u002Fdocker\u002Fnetworking-basics","07.tools\u002F01.docker\u002F14.networking-basics",{"title":2951,"path":2952,"stem":2953},"Змінні оточення та конфігурація","\u002Ftools\u002Fdocker\u002Fenvironment-and-configuration","07.tools\u002F01.docker\u002F15.environment-and-configuration",{"title":2955,"path":2956,"stem":2957},"Docker Compose — оркестрація контейнерів","\u002Ftools\u002Fdocker\u002Fdocker-compose-basics","07.tools\u002F01.docker\u002F16.docker-compose-basics",{"title":2959,"path":2960,"stem":2961},"Docker Compose — Multi-Service застосунки","\u002Ftools\u002Fdocker\u002Fcompose-multi-service","07.tools\u002F01.docker\u002F17.compose-multi-service",{"title":2963,"icon":2964,"path":2965,"stem":2966,"children":2967},"Kubernetes","simple-icons:kubernetes","\u002Ftools\u002Fkubernetes","07.tools\u002F02.kubernetes\u002Findex",[2968,2970,2974,2978,2982,2986,2990,2994,2998],{"title":2969,"path":2965,"stem":2966},"Kubernetes: від розробки до production",{"title":2971,"path":2972,"stem":2973},"Kubernetes — коли Docker Compose більше не вистачає","\u002Ftools\u002Fkubernetes\u002Fwhy-kubernetes","07.tools\u002F02.kubernetes\u002F01.why-kubernetes",{"title":2975,"path":2976,"stem":2977},"Архітектура Kubernetes — анатомія кластера","\u002Ftools\u002Fkubernetes\u002Fkubernetes-architecture","07.tools\u002F02.kubernetes\u002F02.kubernetes-architecture",{"title":2979,"path":2980,"stem":2981},"Локальне середовище — minikube, kind та k3s","\u002Ftools\u002Fkubernetes\u002Flocal-environment","07.tools\u002F02.kubernetes\u002F03.local-environment",{"title":2983,"path":2984,"stem":2985},"Pod — атомарна одиниця Kubernetes","\u002Ftools\u002Fkubernetes\u002Fpods-and-containers","07.tools\u002F02.kubernetes\u002F04.pods-and-containers",{"title":2987,"path":2988,"stem":2989},"Патерни використання Pod","\u002Ftools\u002Fkubernetes\u002Fpod-patterns","07.tools\u002F02.kubernetes\u002F05.pod-patterns",{"title":2991,"path":2992,"stem":2993},"Deployment — декларативне управління Pod","\u002Ftools\u002Fkubernetes\u002Fdeployment-basics","07.tools\u002F02.kubernetes\u002F06.deployment-basics",{"title":2995,"path":2996,"stem":2997},"Rolling Updates та управління життєвим циклом Deployment","\u002Ftools\u002Fkubernetes\u002Fdeployment-rolling-updates","07.tools\u002F02.kubernetes\u002F07.deployment-rolling-updates",{"title":2999,"path":3000,"stem":3001},"Service — мережева абстракція для Pod","\u002Ftools\u002Fkubernetes\u002Fservices-networking","07.tools\u002F02.kubernetes\u002F08.services-networking",{"title":3003,"icon":3004,"path":3005,"stem":3006,"children":3007,"page":59},"Software Engineering","i-lucide-code-2","\u002Fsoftware-engineering","09.software-engineering",[3008,3012,3016,3020,3024,3028,3032,3036,3040,3044,3048],{"title":3009,"path":3010,"stem":3011},"1. Аналіз предметної області. Експертні знання та складність","\u002Fsoftware-engineering\u002Fintro-subdomains","09.software-engineering\u002F01.intro-subdomains",{"title":3013,"path":3014,"stem":3015},"2. Обмежені контексти. Інтеграція обмежених контекстів","\u002Fsoftware-engineering\u002Fintegrating-limited-contexts","09.software-engineering\u002F02.integrating-limited-contexts",{"title":3017,"path":3018,"stem":3019},"3. Реалізація простої бізнес-логіки","\u002Fsoftware-engineering\u002Fsimple","09.software-engineering\u002F03.simple",{"title":3021,"path":3022,"stem":3023},"4. Опрацювання складної бізнес-логіки","\u002Fsoftware-engineering\u002Fcomplex-business-logic","09.software-engineering\u002F04.complex-business-logic",{"title":3025,"path":3026,"stem":3027},"5. Моделювання фактора часу. Подієво-орієнтована архітектура.","\u002Fsoftware-engineering\u002Fmodelling-the-time-factor","09.software-engineering\u002F05.modelling-the-time-factor",{"title":3029,"path":3030,"stem":3031},"6. Архітектурні патерни","\u002Fsoftware-engineering\u002Farchitectural-patterns","09.software-engineering\u002F06.architectural-patterns",{"title":3033,"path":3034,"stem":3035},"Паттерни взаємодії","\u002Fsoftware-engineering\u002Fpatterns-of-interaction","09.software-engineering\u002F07.patterns-of-interaction",{"title":3037,"path":3038,"stem":3039},"Евристика проєктування","\u002Fsoftware-engineering\u002Fdesign-heuristics","09.software-engineering\u002F08.design-heuristics",{"title":3041,"path":3042,"stem":3043},"Еволюція проєктних рішень","\u002Fsoftware-engineering\u002Fevolution-of-design-solutions","09.software-engineering\u002F09.evolution-of-design-solutions",{"title":3045,"path":3046,"stem":3047},"EventStorming","\u002Fsoftware-engineering\u002Feventstorming","09.software-engineering\u002F10.eventstorming",{"title":3049,"path":3050,"stem":3051},"DDD на практиці","\u002Fsoftware-engineering\u002Fddd-in-practice","09.software-engineering\u002F11.ddd-in-practice",{"title":3053,"icon":943,"path":3054,"stem":3055,"children":3056,"page":59},"DDD","\u002Fddd","10.ddd",[3057,3061,3065,3069,3073,3077,3081,3085,3089,3093,3097,3101,3105],{"title":3058,"path":3059,"stem":3060},"Аналіз предметної області","\u002Fddd\u002Fdomain-analysis","10.ddd\u002F01.domain-analysis",{"title":3062,"path":3063,"stem":3064},"Експертні знання про предметну область","\u002Fddd\u002Fdomain-expert-knowledge","10.ddd\u002F02.domain-expert-knowledge",{"title":3066,"path":3067,"stem":3068},"Як осмислити складність предметної області","\u002Fddd\u002Fmanaging-domain-complexity","10.ddd\u002F03.managing-domain-complexity",{"title":3070,"path":3071,"stem":3072},"Інтеграція обмежених контекстів","\u002Fddd\u002Fbounded-context-integration","10.ddd\u002F04.bounded-context-integration",{"title":3074,"path":3075,"stem":3076},"Реалізація простої бізнес-логіки","\u002Fddd\u002Fsimple-business-logic","10.ddd\u002F05.simple-business-logic",{"title":3078,"path":3079,"stem":3080},"Обробка складної бізнес-логіки","\u002Fddd\u002Fcomplex-business-logic","10.ddd\u002F06.complex-business-logic",{"title":3082,"path":3083,"stem":3084},"Моделювання фактора часу","\u002Fddd\u002Ftime-modeling","10.ddd\u002F07.time-modeling",{"title":3086,"path":3087,"stem":3088},"Глава 8. Архітектурні Патерни","\u002Fddd\u002Farchitectural-patterns","10.ddd\u002F08.architectural-patterns",{"title":3090,"path":3091,"stem":3092},"Глава 9. Патерни Взаємодії","\u002Fddd\u002Finteraction-patterns","10.ddd\u002F09.interaction-patterns",{"title":3094,"path":3095,"stem":3096},"Глава 10. Проектні Евристики","\u002Fddd\u002Fdesign-heuristics","10.ddd\u002F10.design-heuristics",{"title":3098,"path":3099,"stem":3100},"Глава 11. Еволюція Проектних Рішень","\u002Fddd\u002Fevolution-of-design-decisions","10.ddd\u002F11.evolution-of-design-decisions",{"title":3102,"path":3103,"stem":3104},"Глава 12. EventStorming","\u002Fddd\u002Fevent-storming","10.ddd\u002F12.event-storming",{"title":3106,"path":3107,"stem":3108},"Глава 13. DDD на Практиці","\u002Fddd\u002Fddd-in-practice","10.ddd\u002F13.ddd-in-practice",{"title":3110,"icon":3111,"path":3112,"stem":3113,"children":3114,"page":59},"Media Streaming","i-lucide-video","\u002Fmedia-streaming","11.media-streaming",[3115,3119,3123,3127,3131,3135,3139],{"title":3116,"path":3117,"stem":3118},"01. Магія Стрімінгу: Що відбувається, коли ви натискаєте \"Play\"","\u002Fmedia-streaming\u002Fintroduction","11.media-streaming\u002F01.introduction",{"title":3120,"path":3121,"stem":3122},"02. Анатомія Медіа: Кодеки, Контейнери та Стиснення","\u002Fmedia-streaming\u002Faudio-video-anatomy","11.media-streaming\u002F02.audio-video-anatomy",{"title":3124,"path":3125,"stem":3126},"03. The Gym: FFmpeg Deep Dive","\u002Fmedia-streaming\u002Fffmpeg-gym","11.media-streaming\u002F03.ffmpeg-gym",{"title":3128,"path":3129,"stem":3130},"04. HLS Protocol: HTTP Live Streaming у Деталях","\u002Fmedia-streaming\u002Fhls-protocol","11.media-streaming\u002F04.hls-protocol",{"title":3132,"path":3133,"stem":3134},"05. DASH Protocol: Відкритий Стандарт","\u002Fmedia-streaming\u002Fdash-protocol","11.media-streaming\u002F05.dash-protocol",{"title":3136,"path":3137,"stem":3138},"06. Масштабування: CDN та Adaptive Bitrate","\u002Fmedia-streaming\u002Fcdn-and-adaptive-bitrate","11.media-streaming\u002F06.cdn-and-adaptive-bitrate",{"title":3140,"path":3141,"stem":3142},"07. Війна із Затримкою (Latency)","\u002Fmedia-streaming\u002Frealtime-latency","11.media-streaming\u002F07.realtime-latency",{"title":3144,"icon":3145,"path":3146,"stem":3147,"children":3148,"page":59},"HTML & CSS","i-devicon-html5","\u002Fhtml-css","12.html-css",[3149,3153,3157,3161,3165,3169,3173,3177,3181,3185,3189,3193,3197,3201,3205,3209,3213,3217,3221,3225,3229,3233,3237,3241,3245,3249,3253,3257,3261,3265],{"title":3150,"path":3151,"stem":3152},"Вступ до HTML. Структура документа","\u002Fhtml-css\u002Fintro-html-structure","12.html-css\u002F01.intro-html-structure",{"title":3154,"path":3155,"stem":3156},"Форматування тексту в HTML","\u002Fhtml-css\u002Fhtml-text-formatting","12.html-css\u002F02.html-text-formatting",{"title":3158,"path":3159,"stem":3160},"Посилання та зображення в HTML","\u002Fhtml-css\u002Fhtml-links-images","12.html-css\u002F03.html-links-images",{"title":3162,"path":3163,"stem":3164},"Списки та таблиці в HTML","\u002Fhtml-css\u002Fhtml-lists-tables","12.html-css\u002F04.html-lists-tables",{"title":3166,"path":3167,"stem":3168},"Форми в HTML","\u002Fhtml-css\u002Fhtml-forms","12.html-css\u002F05.html-forms",{"title":3170,"path":3171,"stem":3172},"Семантичні елементи HTML5","\u002Fhtml-css\u002Fhtml-semantic-elements","12.html-css\u002F06.html-semantic-elements",{"title":3174,"path":3175,"stem":3176},"Мультимедіа та розширені елементи HTML","\u002Fhtml-css\u002Fhtml-multimedia-advanced","12.html-css\u002F07.html-multimedia-advanced",{"title":3178,"path":3179,"stem":3180},"Мікророзмітка та SEO в HTML","\u002Fhtml-css\u002Fhtml-microdata-seo","12.html-css\u002F08.html-microdata-seo",{"title":3182,"path":3183,"stem":3184},"Вступ до CSS. Селектори та специфічність","\u002Fhtml-css\u002Fcss-intro-selectors","12.html-css\u002F09.css-intro-selectors",{"title":3186,"path":3187,"stem":3188},"Блокова модель CSS. Відступи. Box Sizing","\u002Fhtml-css\u002Fcss-box-model","12.html-css\u002F10.css-box-model",{"title":3190,"path":3191,"stem":3192},"Розміри у CSS: повний довідник одиниць і ключових слів","\u002Fhtml-css\u002F10a.css-sizing","12.html-css\u002F10a.css-sizing",{"title":3194,"path":3195,"stem":3196},"Типографіка в CSS. Шрифти та текст","\u002Fhtml-css\u002Fcss-typography","12.html-css\u002F11.css-typography",{"title":3198,"path":3199,"stem":3200},"Кольори та фони в CSS","\u002Fhtml-css\u002Fcss-colors-backgrounds","12.html-css\u002F12.css-colors-backgrounds",{"title":3202,"path":3203,"stem":3204},"Тіні та фільтри в CSS","\u002Fhtml-css\u002F12b.css-shadows-filters","12.html-css\u002F12b.css-shadows-filters",{"title":3206,"path":3207,"stem":3208},"CSS Flexbox: Фундамент гнучких макетів","\u002Fhtml-css\u002Fcss-flexbox-fundamentals","12.html-css\u002F13.css-flexbox-fundamentals",{"title":3210,"path":3211,"stem":3212},"CSS Flexbox: Вирівнювання та Позиціонування","\u002Fhtml-css\u002Fcss-flexbox-alignment-sizing-and-patterns","12.html-css\u002F14.css-flexbox-alignment-sizing-and-patterns",{"title":3214,"path":3215,"stem":3216},"CSS Grid. Двовимірний макет. Частина 1","\u002Fhtml-css\u002Fcss-layout-grid","12.html-css\u002F15.css-layout-grid",{"title":3218,"path":3219,"stem":3220},"CSS Grid. Двовимірний макет. Частина 2","\u002Fhtml-css\u002Fcss-layout-grid-advanced","12.html-css\u002F16.css-layout-grid-advanced",{"title":3222,"path":3223,"stem":3224},"Позиціонування в CSS. Z-index. Stacking Context","\u002Fhtml-css\u002Fcss-positioning","12.html-css\u002F17.css-positioning",{"title":3226,"path":3227,"stem":3228},"CSS Анімації та Переходи","\u002Fhtml-css\u002Fcss-animations-transitions","12.html-css\u002F18.css-animations-transitions",{"title":3230,"path":3231,"stem":3232},"Адаптивний дизайн. Media Queries. Частина 1","\u002Fhtml-css\u002Fcss-responsive-media-queries","12.html-css\u002F19.css-responsive-media-queries",{"title":3234,"path":3235,"stem":3236},"Адаптивний дизайн. Частина 2: clamp(), Container Queries, @layer","\u002Fhtml-css\u002Fcss-responsive-advanced","12.html-css\u002F20.css-responsive-advanced",{"title":3238,"path":3239,"stem":3240},"CSS Custom Properties. Методології. Сучасний CSS","\u002Fhtml-css\u002Fcss-variables-methodologies","12.html-css\u002F21.css-variables-methodologies",{"title":3242,"path":3243,"stem":3244},"Сучасний CSS 2023–2025: Нові можливості","\u002Fhtml-css\u002Fcss-modern-features","12.html-css\u002F22.css-modern-features",{"title":3246,"path":3247,"stem":3248},"CSS Nesting, @layer, @scope та @property: нативний препроцесор","\u002Fhtml-css\u002F22a.css-nesting-modern-syntax","12.html-css\u002F22a.css-nesting-modern-syntax",{"title":3250,"path":3251,"stem":3252},"CSS для форм та інтерактивних станів","\u002Fhtml-css\u002Fcss-forms-interactive-states","12.html-css\u002F23.css-forms-interactive-states",{"title":3254,"path":3255,"stem":3256},"Доступність у CSS (CSS Accessibility)","\u002Fhtml-css\u002Fcss-accessibility","12.html-css\u002F24.css-accessibility",{"title":3258,"path":3259,"stem":3260},"CSS-функції та сучасні sizing primitives","\u002Fhtml-css\u002Fcss-functions-sizing","12.html-css\u002F25.css-functions-sizing",{"title":3262,"path":3263,"stem":3264},"Rendering Pipeline і CSS Performance","\u002Fhtml-css\u002Fcss-rendering-performance","12.html-css\u002F26.css-rendering-performance",{"title":3266,"path":3267,"stem":3268},"CSS Best Practices: типові ситуації та правильні рішення","\u002Fhtml-css\u002Fcss-best-practices","12.html-css\u002F27.css-best-practices",{"title":3270,"path":3271,"stem":3272,"children":3273,"page":59},"AWS","\u002Faws","13.aws",[3274,3278,3282,3286,3290,3294,3298,3302,3306,3310,3314,3318,3322,3326,3330,3334,3338,3342],{"title":3275,"path":3276,"stem":3277},"Реєстрація AWS акаунту та студентські програми","\u002Faws\u002Faccount-registration","13.aws\u002F00.account-registration",{"title":3279,"path":3280,"stem":3281},"Вступ до хмарних обчислень та AWS","\u002Faws\u002Fintroduction-to-cloud","13.aws\u002F01.introduction-to-cloud",{"title":3283,"path":3284,"stem":3285},"AWS IAM — Identity and Access Management","\u002Faws\u002Fiam","13.aws\u002F02.iam",{"title":3287,"path":3288,"stem":3289},"AWS IAM CLI — Довідник команд","\u002Faws\u002F02a.iam-doc","13.aws\u002F02a.iam-doc",{"title":3291,"path":3292,"stem":3293},"Docker та контейнеризація в AWS — ECR, ECS та Fargate","\u002Faws\u002Fdocker-ecs","13.aws\u002F03.docker-ecs",{"title":3295,"path":3296,"stem":3297},"AWS ECR \u002F ECS CLI — Довідник команд","\u002Faws\u002F03a.docker-ecs-doc","13.aws\u002F03a.docker-ecs-doc",{"title":3299,"path":3300,"stem":3301},"Amazon EC2 — Elastic Compute Cloud","\u002Faws\u002Fec2","13.aws\u002F04.ec2",{"title":3303,"path":3304,"stem":3305},"AWS EC2 CLI — Довідник команд","\u002Faws\u002F04a.ec2-doc","13.aws\u002F04a.ec2-doc",{"title":3307,"path":3308,"stem":3309},"Elastic Load Balancing та Auto Scaling","\u002Faws\u002Falb-asg","13.aws\u002F05.alb-asg",{"title":3311,"path":3312,"stem":3313},"Amazon S3 — Simple Storage Service","\u002Faws\u002Fs3","13.aws\u002F06.s3",{"title":3315,"path":3316,"stem":3317},"Amazon CloudFront — Content Delivery Network","\u002Faws\u002Fcloudfront","13.aws\u002F07.cloudfront",{"title":3319,"path":3320,"stem":3321},"Amazon RDS — Relational Database Service","\u002Faws\u002Frds","13.aws\u002F08.rds",{"title":3323,"path":3324,"stem":3325},"Amazon DynamoDB — NoSQL Database","\u002Faws\u002Fdynamodb","13.aws\u002F09.dynamodb",{"title":3327,"path":3328,"stem":3329},"AWS Lambda та Serverless Compute","\u002Faws\u002Flambda","13.aws\u002F10.lambda",{"title":3331,"path":3332,"stem":3333},"Amazon Bedrock - Foundation Models, RAG та Agents","\u002Faws\u002Fbedrock","13.aws\u002F22.bedrock",{"title":3335,"path":3336,"stem":3337},"Amazon Rekognition - Комп'ютерний зір","\u002Faws\u002Frekognition","13.aws\u002F23.rekognition",{"title":3339,"path":3340,"stem":3341},"Amazon Textract - Інтелектуальний аналіз документів","\u002Faws\u002Ftextract","13.aws\u002F24.textract",{"title":3343,"path":3344,"stem":3345},"Amazon Polly, Transcribe, Comprehend та Translate","\u002Faws\u002Faudio-nlp-services","13.aws\u002F25.audio-nlp-services",{"title":3347,"path":3348,"stem":3349,"children":3350,"page":59},"Ai Development","\u002Fai-development","14.ai-development",[3351],{"title":3352,"path":3353,"stem":3354,"children":3355,"page":59},"Foundations","\u002Fai-development\u002Ffoundations","14.ai-development\u002F00.foundations",[3356],{"title":3357,"path":3358,"stem":3359},"Модуль 0.1. Що таке Large Language Model (LLM)","\u002Fai-development\u002Ffoundations\u002Fwhat-is-llm","14.ai-development\u002F00.foundations\u002F01.what-is-llm",{"title":3361,"path":3362,"stem":3363,"children":3364,"page":59},"React Native","\u002Freact-native","15.react-native",[3365,3386],{"title":3366,"path":3367,"stem":3368,"children":3369,"page":59},"Version1","\u002Freact-native\u002Fversion1","15.react-native\u002Fversion1",[3370,3374,3378,3382],{"title":3371,"path":3372,"stem":3373},"Що таке React Native","\u002Freact-native\u002Fversion1\u002Fwhat-is-react-native","15.react-native\u002Fversion1\u002F01.what-is-react-native",{"title":3375,"path":3376,"stem":3377},"Як влаштований React Native «під капотом»","\u002Freact-native\u002Fversion1\u002Freact-native-architecture","15.react-native\u002Fversion1\u002F02.react-native-architecture",{"title":3379,"path":3380,"stem":3381},"Від React до React Native: ключові відмінності","\u002Freact-native\u002Fversion1\u002Freact-native-vs-react","15.react-native\u002Fversion1\u002F03.react-native-vs-react",{"title":3383,"path":3384,"stem":3385},"View та Text — фундаментальні будівельні блоки","\u002Freact-native\u002Fversion1\u002Fview-and-text","15.react-native\u002Fversion1\u002F04.view-and-text",{"title":3387,"path":3388,"stem":3389,"children":3390,"page":59},"Version2","\u002Freact-native\u002Fversion2","15.react-native\u002Fversion2",[3391,3395,3399,3403,3407,3411,3415,3419,3423,3427,3431,3435,3439,3443,3447,3451,3455,3459,3463,3467,3471,3475,3479,3483,3487,3491],{"title":3392,"path":3393,"stem":3394},"React Native — навіщо він потрібен","\u002Freact-native\u002Fversion2\u002Fwhy-react-native","15.react-native\u002Fversion2\u002F01.why-react-native",{"title":3396,"path":3397,"stem":3398},"Налаштування середовища розробки","\u002Freact-native\u002Fversion2\u002Fenvironment-setup","15.react-native\u002Fversion2\u002F02.environment-setup",{"title":3400,"path":3401,"stem":3402},"Expo і класичний React Native — два шляхи одного фреймворку","\u002Freact-native\u002Fversion2\u002Fexpo-vs-cli-landscape","15.react-native\u002Fversion2\u002F03.expo-vs-cli-landscape",{"title":3404,"path":3405,"stem":3406},"Середовище Expo — перший запуск","\u002Freact-native\u002Fversion2\u002Fexpo-setup-and-tooling","15.react-native\u002Fversion2\u002F04.expo-setup-and-tooling",{"title":3408,"path":3409,"stem":3410},"Структура проєкту та перші UI-примітиви","\u002Freact-native\u002Fversion2\u002Fproject-structure-and-conventions","15.react-native\u002Fversion2\u002F05.project-structure-and-conventions",{"title":3412,"path":3413,"stem":3414},"Базові компоненти React Native","\u002Freact-native\u002Fversion2\u002Fcore-components","15.react-native\u002Fversion2\u002F06.core-components",{"title":3416,"path":3417,"stem":3418},"Flexbox і layout у React Native","\u002Freact-native\u002Fversion2\u002Fflexbox-and-layout","15.react-native\u002Fversion2\u002F07.flexbox-and-layout",{"title":3420,"path":3421,"stem":3422},"StyleSheet і теми (light \u002F dark)","\u002Freact-native\u002Fversion2\u002Fstylesheet-and-theming","15.react-native\u002Fversion2\u002F08.stylesheet-and-theming",{"title":3424,"path":3425,"stem":3426},"Списки та віртуалізація","\u002Freact-native\u002Fversion2\u002Flists-and-virtualization","15.react-native\u002Fversion2\u002F09.lists-and-virtualization",{"title":3428,"path":3429,"stem":3430},"Форми, ввід і валідація","\u002Freact-native\u002Fversion2\u002Fforms-input-validation","15.react-native\u002Fversion2\u002F10.forms-input-validation",{"title":3432,"path":3433,"stem":3434},"Основи Expo Router","\u002Freact-native\u002Fversion2\u002Fexpo-router-basics","15.react-native\u002Fversion2\u002F11.expo-router-basics",{"title":3436,"path":3437,"stem":3438},"Вкладені навігатори та модалки","\u002Freact-native\u002Fversion2\u002Fnested-navigators-and-modals","15.react-native\u002Fversion2\u002F12.nested-navigators-and-modals",{"title":3440,"path":3441,"stem":3442},"Deep linking і параметри маршрутів","\u002Freact-native\u002Fversion2\u002Fdeep-linking-and-params","15.react-native\u002Fversion2\u002F13.deep-linking-and-params",{"title":3444,"path":3445,"stem":3446},"Робота з мережею та життєвий цикл застосунку","\u002Freact-native\u002Fversion2\u002Fnetworking-and-app-lifecycle","15.react-native\u002Fversion2\u002F14.networking-and-app-lifecycle",{"title":3448,"path":3449,"stem":3450},"Redux Toolkit на мобільних платформах","\u002Freact-native\u002Fversion2\u002Fredux-toolkit-on-mobile","15.react-native\u002Fversion2\u002F15.redux-toolkit-on-mobile",{"title":3452,"path":3453,"stem":3454},"RTK Query на мобільних платформах","\u002Freact-native\u002Fversion2\u002Frtk-query-mobile","15.react-native\u002Fversion2\u002F16.rtk-query-mobile",{"title":3456,"path":3457,"stem":3458},"Автентифікація та Безпечне Зберігання","\u002Freact-native\u002Fversion2\u002Fauth-secure-storage","15.react-native\u002Fversion2\u002F18.auth-secure-storage",{"title":3460,"path":3461,"stem":3462},"Локальне сховище — AsyncStorage, MMKV, SQLite","\u002Freact-native\u002Fversion2\u002Flocal-storage-mmkv-sqlite","15.react-native\u002Fversion2\u002F19.local-storage-mmkv-sqlite",{"title":3464,"path":3465,"stem":3466},"Офлайн-First і синхронізація","\u002Freact-native\u002Fversion2\u002Foffline-first-sync","15.react-native\u002Fversion2\u002F20.offline-first-sync",{"title":3468,"path":3469,"stem":3470},"Камера, медіа та файлова система","\u002Freact-native\u002Fversion2\u002Fcamera-media-filesystem","15.react-native\u002Fversion2\u002F21.camera-media-filesystem",{"title":3472,"path":3473,"stem":3474},"Карти та геолокація","\u002Freact-native\u002Fversion2\u002Fmaps-and-location","15.react-native\u002Fversion2\u002F22.maps-and-location",{"title":3476,"path":3477,"stem":3478},"Жести та дотики","\u002Freact-native\u002Fversion2\u002Fgestures-and-touch","15.react-native\u002Fversion2\u002F23.gestures-and-touch",{"title":3480,"path":3481,"stem":3482},"Анімації з Reanimated","\u002Freact-native\u002Fversion2\u002Freanimated-animations","15.react-native\u002Fversion2\u002F24.reanimated-animations",{"title":3484,"path":3485,"stem":3486},"Push і локальні сповіщення","\u002Freact-native\u002Fversion2\u002Fpush-and-local-notifications","15.react-native\u002Fversion2\u002F25.push-and-local-notifications",{"title":3488,"path":3489,"stem":3490},"Доступність та інтернаціоналізація","\u002Freact-native\u002Fversion2\u002Faccessibility-and-i18n","15.react-native\u002Fversion2\u002F26.accessibility-and-i18n",{"title":3492,"path":3493,"stem":3494},"EAS Build та профілі збірки","\u002Freact-native\u002Fversion2\u002Feas-build-and-profiles","15.react-native\u002Fversion2\u002F29.eas-build-and-profiles",{"title":3496,"path":3497,"stem":3498,"children":3499,"page":59},"Ai Python","\u002Fai-python","16.ai-python",[3500,3504,3508],{"title":3501,"path":3502,"stem":3503},"Вступ до штучного інтелекту та машинного навчання","\u002Fai-python\u002Fintro-to-ai","16.ai-python\u002F01.intro-to-ai",{"title":3505,"path":3506,"stem":3507},"Знайомство з Jupyter Notebook та JupyterLab","\u002Fai-python\u002Fjupyter-notebook","16.ai-python\u002F02.jupyter-notebook",{"title":3509,"path":3510,"stem":3511},"Робота з даними з використанням NumPy і pandas","\u002Fai-python\u002Fnumpy-pandas","16.ai-python\u002F03.numpy-pandas",{"title":3513,"icon":658,"path":3514,"stem":3515,"children":3516,"page":59},"Клієнт-серверна архітектура","\u002Fclient-server-architecture","17.client-server-architecture",[3517,3521],{"title":3518,"path":3519,"stem":3520},"Архітектура клієнт-серверних систем та основи Go","\u002Fclient-server-architecture\u002Fclient-server-architecture-and-go","17.client-server-architecture\u002F01.client-server-architecture-and-go",{"title":3522,"path":3523,"stem":3524},"Система типів та модель пам’яті мови Go","\u002Fclient-server-architecture\u002Ftype-system-and-memory-model","17.client-server-architecture\u002F02.type-system-and-memory-model",{"title":3526,"icon":1946,"path":3527,"stem":3528,"children":3529,"page":59},"Розробка WEB-застосувань","\u002Fweb-development","18.web-development",[3530,3575,3613,3642],{"title":3531,"icon":658,"path":3532,"stem":3533,"children":3534,"page":59},"Архітектура комп'ютерних мереж та мережеві протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols","18.web-development\u002F01.network-architecture-and-protocols",[3535,3539,3543,3547,3551,3555,3559,3563,3567,3571],{"title":3536,"path":3537,"stem":3538},"Еволюція веброзробки та модель клієнт-сервер","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fweb-evolution-client-server","18.web-development\u002F01.network-architecture-and-protocols\u002F01.web-evolution-client-server",{"title":3540,"path":3541,"stem":3542},"Еталонна модель OSI","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fosi-model","18.web-development\u002F01.network-architecture-and-protocols\u002F02.osi-model",{"title":3544,"path":3545,"stem":3546},"Стек протоколів TCP\u002FIP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-ip-stack","18.web-development\u002F01.network-architecture-and-protocols\u002F03.tcp-ip-stack",{"title":3548,"path":3549,"stem":3550},"IP-адресація, порти та сокети","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fip-addressing-ports-sockets","18.web-development\u002F01.network-architecture-and-protocols\u002F04.ip-addressing-ports-sockets",{"title":3552,"path":3553,"stem":3554},"Протоколи TCP та UDP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-udp-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F05.tcp-udp-protocols",{"title":3556,"path":3557,"stem":3558},"Система доменних імен DNS","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fdns-system","18.web-development\u002F01.network-architecture-and-protocols\u002F06.dns-system",{"title":3560,"path":3561,"stem":3562},"Протокол SMTP та поштові протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fsmtp-email-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F07.smtp-email-protocols",{"title":3564,"path":3565,"stem":3566},"Протокол WebSocket","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fwebsocket-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F08.websocket-protocol",{"title":3568,"path":3569,"stem":3570},"Протокол SSH","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fssh-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F09.ssh-protocol",{"title":3572,"path":3573,"stem":3574},"Огляд сучасних серверних технологій","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fmodern-backend-technologies","18.web-development\u002F01.network-architecture-and-protocols\u002F10.modern-backend-technologies",{"title":3576,"icon":3577,"path":3578,"stem":3579,"children":3580,"page":59},"Протокол HTTP та захищена передача даних HTTPS","i-lucide-lock","\u002Fweb-development\u002Fhttp-and-https","18.web-development\u002F02.http-and-https",[3581,3585,3589,3593,3597,3601,3605,3609],{"title":3582,"path":3583,"stem":3584},"Вступ до протоколу HTTP та еволюція веб-технологій","\u002Fweb-development\u002Fhttp-and-https\u002Fintroduction-and-evolution","18.web-development\u002F02.http-and-https\u002F01.introduction-and-evolution",{"title":3586,"path":3587,"stem":3588},"Анатомія HTTP-запиту","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-request-structure","18.web-development\u002F02.http-and-https\u002F02.http-request-structure",{"title":3590,"path":3591,"stem":3592},"Анатомія HTTP-відповіді","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-response-structure","18.web-development\u002F02.http-and-https\u002F03.http-response-structure",{"title":3594,"path":3595,"stem":3596},"Методи HTTP та їхня семантика","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-methods","18.web-development\u002F02.http-and-https\u002F04.http-methods",{"title":3598,"path":3599,"stem":3600},"Коди статусу HTTP та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-status-codes","18.web-development\u002F02.http-and-https\u002F05.http-status-codes",{"title":3602,"path":3603,"stem":3604},"HTTP-заголовки та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-headers","18.web-development\u002F02.http-and-https\u002F06.http-headers",{"title":3606,"path":3607,"stem":3608},"CORS та механізми безпеки HTTP","\u002Fweb-development\u002Fhttp-and-https\u002Fcors-and-security","18.web-development\u002F02.http-and-https\u002F07.cors-and-security",{"title":3610,"path":3611,"stem":3612},"HTTPS та криптографічні основи TLS","\u002Fweb-development\u002Fhttp-and-https\u002Fhttps-and-tls","18.web-development\u002F02.http-and-https\u002F08.https-and-tls",{"title":3614,"icon":2326,"path":3615,"stem":3616,"children":3617,"page":59},"Система типів мови TypeScript","\u002Fweb-development\u002Ftypescript-type-system","18.web-development\u002F03.typescript-type-system",[3618,3622,3626,3630,3634,3638],{"title":3619,"path":3620,"stem":3621},"Знайомство з TypeScript Compiler","\u002Fweb-development\u002Ftypescript-type-system\u002Fintroduction-compiler-config","18.web-development\u002F03.typescript-type-system\u002F01.introduction-compiler-config",{"title":3623,"path":3624,"stem":3625},"Примітивні типи даних: string, number, boolean","\u002Fweb-development\u002Ftypescript-type-system\u002Fprimitive-special-types","18.web-development\u002F03.typescript-type-system\u002F02.primitive-special-types",{"title":3627,"path":3628,"stem":3629},"Масиви, кортежі та об","\u002Fweb-development\u002Ftypescript-type-system\u002Farrays-tuples-objects","18.web-development\u002F03.typescript-type-system\u002F03.arrays-tuples-objects",{"title":3631,"path":3632,"stem":3633},"Union типи, Intersection типи та літеральні типи","\u002Fweb-development\u002Ftypescript-type-system\u002Funion-intersection-literals","18.web-development\u002F03.typescript-type-system\u002F04.union-intersection-literals",{"title":3635,"path":3636,"stem":3637},"Type Narrowing (звуження типів)","\u002Fweb-development\u002Ftypescript-type-system\u002Ftype-narrowing","18.web-development\u002F03.typescript-type-system\u002F05.type-narrowing",{"title":3639,"path":3640,"stem":3641},"Типізація функцій","\u002Fweb-development\u002Ftypescript-type-system\u002Ffunctions-typing","18.web-development\u002F03.typescript-type-system\u002F06.functions-typing",{"title":3643,"icon":2326,"path":3644,"stem":3645,"children":3646,"page":59},"Розширені засоби мови TypeScript","\u002Fweb-development\u002Ftypescript-advanced","18.web-development\u002F04.typescript-advanced",[3647,3651,3655,3659,3663,3667],{"title":3648,"path":3649,"stem":3650},"Interfaces та Classes","\u002Fweb-development\u002Ftypescript-advanced\u002Finterfaces-classes","18.web-development\u002F04.typescript-advanced\u002F01.interfaces-classes",{"title":3652,"path":3653,"stem":3654},"Основи Generic типів","\u002Fweb-development\u002Ftypescript-advanced\u002Fgenerics-fundamentals","18.web-development\u002F04.typescript-advanced\u002F02.generics-fundamentals",{"title":3656,"path":3657,"stem":3658},"Enums та Decorators","\u002Fweb-development\u002Ftypescript-advanced\u002Fenums-decorators","18.web-development\u002F04.typescript-advanced\u002F03.enums-decorators",{"title":3660,"path":3661,"stem":3662},"Utility Types","\u002Fweb-development\u002Ftypescript-advanced\u002Futility-types","18.web-development\u002F04.typescript-advanced\u002F04.utility-types",{"title":3664,"path":3665,"stem":3666},"Mapped та Conditional Types","\u002Fweb-development\u002Ftypescript-advanced\u002Fmapped-conditional-types","18.web-development\u002F04.typescript-advanced\u002F05.mapped-conditional-types",{"title":3668,"path":3669,"stem":3670},"Модулі та Strict Mode","\u002Fweb-development\u002Ftypescript-advanced\u002Fmodules-strict-mode","18.web-development\u002F04.typescript-advanced\u002F06.modules-strict-mode",{"title":3672,"path":3673,"stem":3674,"children":3675,"page":59},"Tailwind","\u002Ftailwind","21.tailwind",[3676,3680,3684,3688,3692,3696,3700,3704,3708,3712,3716,3720],{"title":3677,"path":3678,"stem":3679},"Що таке Tailwind CSS і навіщо він потрібен","\u002Ftailwind\u002Ftailwind-intro-philosophy","21.tailwind\u002F01.tailwind-intro-philosophy",{"title":3681,"path":3682,"stem":3683},"Встановлення та налаштування Tailwind CSS v4","\u002Ftailwind\u002Ftailwind-installation-setup","21.tailwind\u002F02.tailwind-installation-setup",{"title":3685,"path":3686,"stem":3687},"Utility-класи: основи та система Tailwind","\u002Ftailwind\u002Ftailwind-utility-classes-core","21.tailwind\u002F03.tailwind-utility-classes-core",{"title":3689,"path":3690,"stem":3691},"Layout: Flexbox та Grid через Tailwind","\u002Ftailwind\u002Ftailwind-flexbox-grid","21.tailwind\u002F04.tailwind-flexbox-grid",{"title":3693,"path":3694,"stem":3695},"Кастомізація теми через @theme у Tailwind v4","\u002Ftailwind\u002Ftailwind-theme-customization","21.tailwind\u002F05.tailwind-theme-customization",{"title":3697,"path":3698,"stem":3699},"Варіанти: hover, focus, responsive, dark mode та нові v4","\u002Ftailwind\u002Ftailwind-variants-states","21.tailwind\u002F06.tailwind-variants-states",{"title":3701,"path":3702,"stem":3703},"Типографіка та система кольорів у Tailwind v4","\u002Ftailwind\u002Ftailwind-typography-colors","21.tailwind\u002F07.tailwind-typography-colors",{"title":3705,"path":3706,"stem":3707},"Компоненти та повторюваність: @apply, @utility та патерни","\u002Ftailwind\u002Ftailwind-components-patterns","21.tailwind\u002F08.tailwind-components-patterns",{"title":3709,"path":3710,"stem":3711},"Темна тема та система дизайн-токенів у Tailwind v4","\u002Ftailwind\u002Ftailwind-dark-mode-theming","21.tailwind\u002F09.tailwind-dark-mode-theming",{"title":3713,"path":3714,"stem":3715},"Довільні значення та контейнерні запити у Tailwind v4","\u002Ftailwind\u002Ftailwind-arbitrary-container-queries","21.tailwind\u002F10.tailwind-arbitrary-container-queries",{"title":3717,"path":3718,"stem":3719},"Анімації, трансформації та 3D у Tailwind v4","\u002Ftailwind\u002Ftailwind-animations-transforms","21.tailwind\u002F11.tailwind-animations-transforms",{"title":3721,"path":3722,"stem":3723},"Tailwind CLI, PostCSS та інтеграція з фреймворками","\u002Ftailwind\u002Ftailwind-cli-tooling","21.tailwind\u002F12.tailwind-cli-tooling",{"title":3725,"path":3726,"stem":3727},"Тестування компонентів діаграм","\u002Ftest-components","98.test-components",{"id":3729,"title":3424,"body":3730,"description":35332,"extension":22760,"links":35333,"meta":35334,"navigation":4245,"path":3425,"seo":35335,"stem":3426,"__hash__":35336},"docs\u002F15.react-native\u002Fversion2\u002F09.lists-and-virtualization.md",{"type":3731,"value":3732,"toc":35226},"minimark",[3733,3737,3742,3746,3763,3794,3810,3813,3927,3934,3959,3962,3966,3981,4105,4119,4121,4125,4130,4135,4199,4208,4409,4411,4415,4421,4434,4441,4444,4501,4503,4509,4514,4517,4986,4992,4998,5202,5208,6215,6251,6253,6259,6273,6327,6331,6337,6379,6407,6409,6413,6416,6420,6462,7918,7939,7941,7948,7958,7964,8089,8153,8179,8181,8188,8191,8199,8464,8468,8555,8596,8598,8602,8608,8611,8636,8643,8649,8666,8705,8715,8719,9941,9948,9957,9959,9965,9971,9975,9980,10000,10013,10016,10026,10133,10137,10143,10160,10187,10191,11583,11585,11593,11600,11603,11623,11638,11994,12019,12021,12025,12035,12042,12201,12211,12213,12219,12225,12232,12239,12243,12264,12508,12514,12519,12553,12747,12751,12759,12791,12794,12798,14067,14069,14073,14083,14101,14105,14337,14427,14456,14458,14464,14473,14485,14489,14507,14531,14537,14545,14633,14637,14658,14667,14796,14826,14833,14847,14853,14860,15233,15249,15251,15255,15437,15439,15445,15449,15452,15455,15520,15524,15640,15644,15741,15745,15752,18303,18307,20801,20803,20807,20811,20817,20823,20867,20871,20876,20914,20919,20959,20966,20970,20991,21029,31958,31962,31980,31984,31990,32064,32074,32078,32093,34940,34942,34946,34950,34981,34985,35008,35012,35036,35038,35042,35178,35180,35184,35198,35223],[3734,3735,3424],"h1",{"id":3736},"списки-та-віртуалізація",[3738,3739,3741],"h2",{"id":3740},"навіщо-ця-стаття","Навіщо ця стаття",[3743,3744,3745],"p",{},"У мобільних застосунках списки є домінуючим патерном представлення інформації: стрічки соціальних мереж, каталоги інтернет-магазинів, списки транзакцій, чати та аудіоплеєри побудовані на базі прокручуваних масивів елементів. У навчальних прикладах часто оперують невеликими масивами з 3–5 об’єктів, де будь-який підхід до рендерингу видається швидким. Проте в реальних умовах мобільний клієнт повинен відображати сотні або тисячі складних сутностей, кожна з яких містить векторну графіку, растрові зображення, стилізовану типографіку та обробники жестів.",[3743,3747,3748,3749,3753,3754,3757,3758,3762],{},"Якщо підійти до рендерингу довгого списку наївно — наприклад, використати стандартний контейнер ",[3750,3751,3752],"code",{},"ScrollView"," та виконати пряму ітерацію ",[3750,3755,3756],{},"array.map()"," — застосунок миттєво зіткнеться з фундаментальними апаратними обмеженнями мобільного пристрою. Створення сотень нативних представлень (",[3759,3760,3761],"em",{},"native views",") в один момент спричиняє різке зростання споживання оперативної пам'яті (RAM), блокування головного потоку JavaScript та графічного потоку UI, просідання частоти кадрів (jank\u002Fframe drops) і, в найгіршому випадку, аварійне завершення процесу операційною системою через Out-Of-Memory (OOM).",[3743,3764,3765,3766,3768,3769,3773,3774,3777,3778,3781,3782,3785,3786,3789,3790,3793],{},"У попередніх розділах було визначено функціональні межі ",[3750,3767,3752],{},": цей компонент призначений для ",[3770,3771,3772],"strong",{},"статичного контенту фіксованого розміру"," (форми введення, статті, налаштування). Для ",[3770,3775,3776],{},"динамічних та довгих однотипних колекцій даних"," інженерний стандарт React Native вимагає застосування ",[3770,3779,3780],{},"віртуалізованих списків"," — ",[3750,3783,3784],{},"FlatList",", ",[3750,3787,3788],{},"SectionList"," або спеціалізованих рішень на кшталт ",[3750,3791,3792],{},"FlashList",".",[3743,3795,3796,3797,3800,3801,3803,3804,3806,3807,3809],{},"Цей розділ присвячено фундаментальній концепції ",[3770,3798,3799],{},"віртуалізації інтерфейсу (UI Virtualization)",", її математичним і архітектурним принципам, внутрішній будові компонентів ",[3750,3802,3784],{}," та ",[3750,3805,3788],{},", механізмам рециклінгу представлень у ",[3750,3808,3792],{},", а також патернам управління станами списку (пагінація, pull-to-refresh, обробка помилок та порожніх станів).",[3743,3811,3812],{},"Після опрацювання матеріалу ви зможете:",[3814,3815,3816,3827,3845,3866,3876,3888,3910,3921],"ol",{},[3817,3818,3819,3822,3823,3826],"li",{},[3770,3820,3821],{},"Глибоко розуміти фізичну різницю"," між нативним рендерингом ",[3750,3824,3825],{},"ScrollView + map"," та віртуалізованим віконним відображенням.",[3817,3828,3829,3834,3835,3785,3838,3785,3841,3844],{},[3770,3830,3831,3832],{},"Проєктувати високоефективні компоненти на базі ",[3750,3833,3784],{},", бездоганно налаштовуючи зв'язку ",[3750,3836,3837],{},"data",[3750,3839,3840],{},"renderItem",[3750,3842,3843],{},"keyExtractor"," та параметри буферизації.",[3817,3846,3847,3850,3851,3854,3855,3858,3859,3862,3863,3793],{},[3770,3848,3849],{},"Реалізовувати повноцінний UX-контракт списку",": відображення порожнього стану (",[3750,3852,3853],{},"ListEmptyComponent","), композицію шапки (",[3750,3856,3857],{},"ListHeaderComponent",") та підвалу (",[3750,3860,3861],{},"ListFooterComponent","), а також двонаправлене оновлення за допомогою жесту ",[3750,3864,3865],{},"RefreshControl",[3817,3867,3868,3875],{},[3770,3869,3870,3871,3874],{},"Конструювати надійні механізми нескінченної пагінації (",[3750,3872,3873],{},"onEndReached",")",", коректно контролюючи порогові значення та запобігаючи стану гонитви (race conditions).",[3817,3877,3878,3883,3884,3887],{},[3770,3879,3880,3881],{},"Структурувати складні ієрархічні дані за допомогою ",[3750,3882,3788],{},", налаштовуючи поведінку закріплення заголовків (",[3750,3885,3886],{},"stickySectionHeadersEnabled",") з урахуванням специфіки iOS та Android.",[3817,3889,3890,3893,3894,3897,3898,3901,3902,3905,3906,3909],{},[3770,3891,3892],{},"Аналізувати та усувати вузькі місця продуктивності",", застосовуючи мемоізацію рядків (",[3750,3895,3896],{},"React.memo","), стабільні посилання (",[3750,3899,3900],{},"useCallback","), попереднє обчислення геометрії (",[3750,3903,3904],{},"getItemLayout",") та зовнішній стан (",[3750,3907,3908],{},"extraData",").",[3817,3911,3912,3917,3918,3909],{},[3770,3913,3914,3915],{},"Оцінювати доцільність переходу на ",[3750,3916,3792],{},", розуміючи концептуальну різницю між циклічним видаленням\u002Fмонтуванням вузлів та парадигмою рециклінгу комірок (",[3759,3919,3920],{},"Cell Recycling",[3817,3922,3923,3926],{},[3770,3924,3925],{},"Інтегрувати багаторівневі списки в архітектуру реального проєкту"," на прикладі стрічки поїздок та горизонтального каталогу місць у застосунку Nomad.",[3928,3929,3930,3933],"note",{},[3770,3931,3932],{},"Фундаментальний принцип віртуалізації."," Мобільний пристрій не повинен створювати нативні графічні об'єкти для даних, які перебувають поза межами видимого екрана (viewport). Віртуалізований список підтримує в активному дереві рендерингу лише мінімальну підмножину елементів — так зване «вікно перегляду» плюс невеликий буфер попереднього завантаження зверху та знизу. Під час прокручування елементи, що виходять за межі буфера, демонтуються або перевикористовуються, а нові монтуються динамічно. Користувач сприймає стрічку як нескінченну та цілісну, тоді як споживання пам'яті залишається константним: $O(1)$ щодо загальної кількості елементів масиву.",[3935,3936,3937,3940,3941,3944,3945,3948,3949,3785,3951,3803,3953,3955,3956,3958],"tip",{},[3770,3938,3939],{},"Особливості інтерактивних демонстрацій."," Усі приклади в цій статті забезпечені живими прев'ю на базі ",[3750,3942,3943],{},"::react-native-preview"," (середовище ",[3750,3946,3947],{},"react-native-web","). Стандартні компоненти ",[3750,3950,3784],{},[3750,3952,3788],{},[3750,3954,3865],{}," функціонують у веб-пісочниці повноцінно. Зверніть увагу: бібліотека ",[3750,3957,3792],{}," є зовнішнім нативним модулем і відсутня у браузерному iframe; її архітектуру, API та інтеграцію детально розглянуто в теоретичній частині та в кодовій базі повноцінного проєкту Nomad.",[3960,3961],"hr",{},[3738,3963,3965],{"id":3964},"порівняльний-аналіз-web-react-та-react-native","Порівняльний аналіз: Web React та React Native",[3743,3967,3968,3969,3972,3973,3976,3977,3980],{},"Розробники, які переходять у React Native з екосистеми веб-розробки, часто переносять звичні підходи до побудови списків без урахування специфіки мобільних рушіїв рендерингу. У браузері створення кількох сотень простих DOM-вузлів ",[3750,3970,3971],{},"\u003Cli>"," є відносно дешевою операцією, оскільки сучасні рушії (V8, Blink, Gecko) оптимізовані для швидкого парсингу HTML-дерева. У React Native кожен візуальний елемент — це не просто запис у пам'яті JS-рушія, а реальний нативний віджет операційної системи (",[3750,3974,3975],{},"UIView"," в iOS або ",[3750,3978,3979],{},"android.view.ViewGroup"," в Android) із власними графічними контекстами, пам'яттю під текстури та прорахунком розкладки в рушії Yoga.",[3982,3983,3984,4001],"table",{},[3985,3986,3987],"thead",{},[3988,3989,3990,3995,3998],"tr",{},[3991,3992,3994],"th",{"align":3993},"left","Концепція у Web React",[3991,3996,3997],{"align":3993},"Еквівалент у React Native",[3991,3999,4000],{"align":3993},"Архітектурна та поведінкова різниця",[4002,4003,4004,4026,4041,4069,4085],"tbody",{},[3988,4005,4006,4012,4020],{},[4007,4008,4009],"td",{"align":3993},[3750,4010,4011],{},"\u003Cul>{items.map(...)}\u003C\u002Ful>",[4007,4013,4014,4016,4017],{"align":3993},[3750,4015,3752],{}," + ",[3750,4018,4019],{},"map",[4007,4021,4022,4025],{"align":3993},[3770,4023,4024],{},"Повний монолітний рендеринг."," Усі нативні вузли та зображення інстанціюються одночасно до першого показу екрана.",[3988,4027,4028,4034,4038],{},[4007,4029,4030,4031,3874],{"align":3993},"Глобальний скрол вікна (",[3750,4032,4033],{},"window",[4007,4035,4036],{"align":3993},[3750,4037,3752],{},[4007,4039,4040],{"align":3993},"Контейнер з фіксованими або розтягнутими межами, що реалізує нативну механіку інерційної прокрутки.",[3988,4042,4043,4054,4063],{},[4007,4044,4045,3785,4048,3785,4051],{"align":3993},[3750,4046,4047],{},"react-window",[3750,4049,4050],{},"react-virtualized",[3750,4052,4053],{},"@tanstack\u002Fvirtual",[4007,4055,4056,4058,4059,4058,4061],{"align":3993},[3750,4057,3784],{}," \u002F ",[3750,4060,3788],{},[3750,4062,3792],{},[4007,4064,4065,4068],{"align":3993},[3770,4066,4067],{},"Віртуалізований рендеринг."," Створюються лише елементи, наближені до поточної координати прокручування.",[3988,4070,4071,4077,4082],{},[4007,4072,4073,4076],{"align":3993},[3750,4074,4075],{},"IntersectionObserver"," (Infinite Scroll)",[4007,4078,4079,4081],{"align":3993},[3750,4080,3873],{}," у списках",[4007,4083,4084],{"align":3993},"Розрахунок відносного зміщення скролу для завчасного підвантаження порцій даних із сервера.",[3988,4086,4087,4090,4094],{},[4007,4088,4089],{"align":3993},"CSS pull-to-refresh \u002F Touch events",[4007,4091,4092],{"align":3993},[3750,4093,3865],{},[4007,4095,4096,4097,4100,4101,4104],{"align":3993},"Пряма обгортка над системними віджетами оновлення (",[3750,4098,4099],{},"UIRefreshControl"," в iOS та ",[3750,4102,4103],{},"SwipeRefreshLayout"," в Android).",[4106,4107,4108,4111,4112,4115,4116,4118],"warning",{},[3770,4109,4110],{},"Типова пастка веброзробника."," Конструкція ",[3750,4113,4114],{},"{trips.map(trip => \u003CTripCard key={trip.id} {...trip} \u002F>)}"," всередині ",[3750,4117,3752],{}," є допустимою виключно для гарантовано обмежених вибірок (до 5–10 елементів). Якщо передати в таку структуру масив із 100 карток з обкладинками, додаток ініціалізує 100 нативних об'єктів зображень і прорахує повний лейаут всього полотна. На пристроях середнього та бюджетного сегментів це гарантовано призведе до тривалого «зависання» інтерфейсу (TTI \u002F Time to Interactive) та деградації пам'яті.",[3960,4120],{},[3738,4122,4124],{"id":4123},"що-ламається-без-віртуалізації-анатомія-наївного-рендерингу","Що ламається без віртуалізації: анатомія наївного рендерингу",[3743,4126,4127,4128,3793],{},"Щоб чітко усвідомити необхідність віртуалізації, розглянемо життєвий цикл екрана, на якому відображається стрічка з 200 карток поїздок через ",[3750,4129,3825],{},[4131,4132,4134],"h3",{"id":4133},"поетапний-аналіз-наївного-рендерингу","Поетапний аналіз наївного рендерингу",[4136,4137,4138,4142,4158,4162,4168,4172,4188,4192],"steps",{},[4131,4139,4141],{"id":4140},"_1-фаза-ініціалізації-та-узгодження-reconciliation","1. Фаза ініціалізації та узгодження (Reconciliation)",[3743,4143,4144,4145,3785,4148,3785,4151,3785,4154,4157],{},"React виконує функцію компонента і генерує віртуальне дерево (Virtual DOM) для всіх 200 елементів масиву. Якщо кожна картка містить 10 дочірніх вузлів (",[3750,4146,4147],{},"View",[3750,4149,4150],{},"Text",[3750,4152,4153],{},"Image",[3750,4155,4156],{},"Pressable","), рушій JavaScript створює понад 2000 віртуальних об'єктів. Відбувається масове виділення пам'яті під JS-об'єкти, що створює значний тиск на збирач сміття (Garbage Collector).",[4131,4159,4161],{"id":4160},"_2-серіалізація-та-міст-jsi-виклики","2. Серіалізація та міст \u002F JSI виклики",[3743,4163,4164,4165,4167],{},"Опис дерева передається через міст (або через прямі C++ біндінги JSI в новій архітектурі) у нативний шар. Створюються 2000 нативних представлень операційної системи. Кожен компонент ",[3750,4166,4153],{}," починає паралельне або послідовне завантаження, декодування растрових зображень та розміщення їхніх бітових карт (bitmaps) у відеопам'яті (VRAM).",[4131,4169,4171],{"id":4170},"_3-розрахунок-геометрії-yoga-layout-engine","3. Розрахунок геометрії (Yoga Layout Engine)",[3743,4173,4174,4175,3785,4178,3785,4181,3785,4184,4187],{},"Нативний компоновочний рушій Yoga розраховує координати (",[3750,4176,4177],{},"x",[3750,4179,4180],{},"y",[3750,4182,4183],{},"width",[3750,4185,4186],{},"height",") для кожного з 2000 вузлів на всю теоретичну висоту полотна (яка може складати десятки тисяч пікселів), попри те, що на екрані пристрою фізично вміщується лише 2–3 картки.",[4131,4189,4191],{"id":4190},"_4-рендеринг-та-інерційна-прокрутка","4. Рендеринг та інерційна прокрутка",[3743,4193,4194,4195,4198],{},"Коли користувач торкається екрана і починає скролити, графічний процесор (GPU) змушений оперувати гігантським шаром компонування. Будь-яка зміна стану одного з компонентів призводить до каскадного перерахунку всього масиву. З'являються мікрофризи, пропуски кадрів, а у випадку вичерпання ліміту пам'яті операційна система надсилає сигнал ",[3750,4196,4197],{},"SIGKILL"," (Out of Memory termination).",[3743,4200,4201],{},[4202,4203],"img",{"alt":4204,"className":4205,"src":4207},"ScrollView + map проти FlatList: усе в пам’яті vs лише вікно рядків",[4206],"diagram-img","\u002Fimages\u002Freact-native\u002Flists-and-virtualization\u002F01.svg",[4209,4210,4211],"plant-uml",{},[4212,4213,4218],"pre",{"className":4214,"code":4215,"language":4216,"meta":4217,"style":4217},"language-plantuml shiki shiki-themes light-plus dark-plus dark-plus","@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\nrectangle \"ScrollView + map (Монолітний підхід)\" as S {\n  rectangle \"Картка 1 (видима в viewport)\" as C1 #Business\n  rectangle \"Картка 2 (видима в viewport)\" as C2 #Business\n  rectangle \"Картки 3 … 200\\n(Усі 198 вузлів змонтовані в нативному дереві й пам'яті)\" as C3 #APPLICATION\n}\n\nrectangle \"FlatList \u002F FlashList (Віртуалізований підхід)\" as F {\n  rectangle \"Буфер верхнього відсікання (1–2 рядки)\" as B1 #TECHNOLOGY\n  rectangle \"Активне вікно відображення (Viewport)\" as V #Business\n  rectangle \"Буфер нижнього відсікання (1–2 рядки)\" as B2 #TECHNOLOGY\n  rectangle \"Незмонтовані дані (200 елементів перебувають\\nвиключно у вихідному JS-масиві)\" as Rest #STRATEGY\n}\n\nnote right of S\n  Недоліки:\n  * O(N) нативних View у пам'яті\n  * Високий час TTI\n  * Ризик OOM Crash\nend note\n\nnote right of F\n  Переваги:\n  * O(1) нативних View у пам'яті\n  * Миттєвий холодний старт\n  * Стабільні 60\u002F120 FPS\nend note\n\n@enduml\n","plantuml","",[3750,4219,4220,4228,4234,4240,4247,4253,4259,4265,4271,4277,4282,4288,4294,4300,4306,4312,4317,4322,4328,4334,4340,4346,4352,4358,4363,4369,4375,4381,4387,4393,4398,4403],{"__ignoreMap":4217},[4221,4222,4225],"span",{"class":4223,"line":4224},"line",1,[4221,4226,4227],{},"@startuml\n",[4221,4229,4231],{"class":4223,"line":4230},2,[4221,4232,4233],{},"skinparam style plain\n",[4221,4235,4237],{"class":4223,"line":4236},3,[4221,4238,4239],{},"skinparam backgroundColor #ffffff\n",[4221,4241,4243],{"class":4223,"line":4242},4,[4221,4244,4246],{"emptyLinePlaceholder":4245},true,"\n",[4221,4248,4250],{"class":4223,"line":4249},5,[4221,4251,4252],{},"rectangle \"ScrollView + map (Монолітний підхід)\" as S {\n",[4221,4254,4256],{"class":4223,"line":4255},6,[4221,4257,4258],{},"  rectangle \"Картка 1 (видима в viewport)\" as C1 #Business\n",[4221,4260,4262],{"class":4223,"line":4261},7,[4221,4263,4264],{},"  rectangle \"Картка 2 (видима в viewport)\" as C2 #Business\n",[4221,4266,4268],{"class":4223,"line":4267},8,[4221,4269,4270],{},"  rectangle \"Картки 3 … 200\\n(Усі 198 вузлів змонтовані в нативному дереві й пам'яті)\" as C3 #APPLICATION\n",[4221,4272,4274],{"class":4223,"line":4273},9,[4221,4275,4276],{},"}\n",[4221,4278,4280],{"class":4223,"line":4279},10,[4221,4281,4246],{"emptyLinePlaceholder":4245},[4221,4283,4285],{"class":4223,"line":4284},11,[4221,4286,4287],{},"rectangle \"FlatList \u002F FlashList (Віртуалізований підхід)\" as F {\n",[4221,4289,4291],{"class":4223,"line":4290},12,[4221,4292,4293],{},"  rectangle \"Буфер верхнього відсікання (1–2 рядки)\" as B1 #TECHNOLOGY\n",[4221,4295,4297],{"class":4223,"line":4296},13,[4221,4298,4299],{},"  rectangle \"Активне вікно відображення (Viewport)\" as V #Business\n",[4221,4301,4303],{"class":4223,"line":4302},14,[4221,4304,4305],{},"  rectangle \"Буфер нижнього відсікання (1–2 рядки)\" as B2 #TECHNOLOGY\n",[4221,4307,4309],{"class":4223,"line":4308},15,[4221,4310,4311],{},"  rectangle \"Незмонтовані дані (200 елементів перебувають\\nвиключно у вихідному JS-масиві)\" as Rest #STRATEGY\n",[4221,4313,4315],{"class":4223,"line":4314},16,[4221,4316,4276],{},[4221,4318,4320],{"class":4223,"line":4319},17,[4221,4321,4246],{"emptyLinePlaceholder":4245},[4221,4323,4325],{"class":4223,"line":4324},18,[4221,4326,4327],{},"note right of S\n",[4221,4329,4331],{"class":4223,"line":4330},19,[4221,4332,4333],{},"  Недоліки:\n",[4221,4335,4337],{"class":4223,"line":4336},20,[4221,4338,4339],{},"  * O(N) нативних View у пам'яті\n",[4221,4341,4343],{"class":4223,"line":4342},21,[4221,4344,4345],{},"  * Високий час TTI\n",[4221,4347,4349],{"class":4223,"line":4348},22,[4221,4350,4351],{},"  * Ризик OOM Crash\n",[4221,4353,4355],{"class":4223,"line":4354},23,[4221,4356,4357],{},"end note\n",[4221,4359,4361],{"class":4223,"line":4360},24,[4221,4362,4246],{"emptyLinePlaceholder":4245},[4221,4364,4366],{"class":4223,"line":4365},25,[4221,4367,4368],{},"note right of F\n",[4221,4370,4372],{"class":4223,"line":4371},26,[4221,4373,4374],{},"  Переваги:\n",[4221,4376,4378],{"class":4223,"line":4377},27,[4221,4379,4380],{},"  * O(1) нативних View у пам'яті\n",[4221,4382,4384],{"class":4223,"line":4383},28,[4221,4385,4386],{},"  * Миттєвий холодний старт\n",[4221,4388,4390],{"class":4223,"line":4389},29,[4221,4391,4392],{},"  * Стабільні 60\u002F120 FPS\n",[4221,4394,4396],{"class":4223,"line":4395},30,[4221,4397,4357],{},[4221,4399,4401],{"class":4223,"line":4400},31,[4221,4402,4246],{"emptyLinePlaceholder":4245},[4221,4404,4406],{"class":4223,"line":4405},32,[4221,4407,4408],{},"@enduml\n",[3960,4410],{},[3738,4412,4414],{"id":4413},"фундаментальні-концепції-віртуалізації-списків","Фундаментальні концепції віртуалізації списків",[3743,4416,4417,4420],{},[3770,4418,4419],{},"Віртуалізація списків (List Virtualization \u002F Windowing)"," — це алгоритмічний підхід до рендерингу великих або потенційно нескінченних наборів даних, за якого кількість створених візуальних елементів інтерфейсу пропорційна розміру видимої області екрана, а не загальній довжині вхідного масиву даних.",[3743,4422,4423,4424,4428,4429,3793],{},"У React Native базовим вбудованим інструментом віртуалізації є компонент ",[3770,4425,4426],{},[3750,4427,3784],{},", побудований поверх низькорівневого абстрактного компонента ",[3770,4430,4431],{},[3750,4432,4433],{},"VirtualizedList",[3743,4435,4436],{},[4202,4437],{"alt":4438,"className":4439,"src":4440},"Віртуалізація: data, вікно змонтованих рядків і recycle",[4206],"\u002Fimages\u002Freact-native\u002Flists-and-virtualization\u002F02.svg",[3743,4442,4443],{},"Для розуміння математики віртуалізованого списку необхідно виділити ключові сутності:",[4445,4446,4447,4453,4466,4471,4496],"field-group",{},[4448,4449,4452],"field",{"name":4450,"type":4451},"Вхідний набір даних (Data Source)","T[]","Вихідний масив елементів у пам'яті JavaScript. Сам по собі масив із навіть 100 000 простих JavaScript-об'єктів займає лише кілька мегабайтів RAM і не створює навантаження на графічну підсистему, доки ці об'єкти не перетворено на нативні візуальні вузли.",[4448,4454,4457,4458,4461,4462,4465],{"name":4455,"type":4456},"Вікно перегляду (Viewport \u002F Render Window)","Геометрична область","Діапазон координат по осі прокручування, який відповідає фізичним розмірам компонента списку на екрані плюс заданий коефіцієнт буферизації. Список відстежує поточне зміщення скролу (",[3750,4459,4460],{},"contentOffset.y",") і динамічно обчислює індекси елементів ",[3750,4463,4464],{},"[startIndex, endIndex]",", які потрапляють у цю область.",[4448,4467,4470],{"name":4468,"type":4469},"Буфер відсікання (Overscan \u002F Window Size)","Множник розміру","Кількість додаткових екранів контенту, які монтуються вище та нижче фізичного вікна перегляду. Буфер необхідний для того, щоб під час швидкого скролу користувач не бачив білих порожнеч (blank areas) до моменту, поки React встигне змонтувати нові рядки.",[4448,4472,4475,4478],{"name":4473,"type":4474},"Демонтування проти рециклінгу (Unmount vs Recycle)","Архітектурна модель",[3743,4476,4477],{},"Два фундаментальні підходи до звільнення ресурсів:",[3814,4479,4480,4486],{},[3817,4481,4482,4485],{},[3770,4483,4484],{},"Unmount (FlatList):"," елементи, що виходять за межі буфера, повністю видаляються з дерева React і нативного дерева, звільняючи пам'ять. При повторному скролі вони інстанціюються наново.",[3817,4487,4488,4491,4492,4495],{},[3770,4489,4490],{},"Recycle (FlashList):"," фізичні нативні представлення не знищуються, а зберігаються в пулі (pool) і повторно заповнюються новими даними (",[3750,4493,4494],{},"props","), що мінімізує алокацію пам'яті та навантаження на GC.",[4448,4497,4500],{"name":4498,"type":4499},"Ключ ідентичності (Key Extraction)","(item: T, index: number) => string","Механізм визначення стабільної бізнес-ідентичності елемента. Дозволяє алгоритму Reconciliation точно визначати, чи елемент змістив свою позицію, чи був доданий\u002Fвидалений, чи змінив внутрішній стан.",[3960,4502],{},[3738,4504,4506,4508],{"id":4505},"flatlist-архітектура-та-анатомія-базового-списку",[3750,4507,3784],{}," — архітектура та анатомія базового списку",[3743,4510,4511,4513],{},[3750,4512,3784],{}," — це високорівневий декларативний компонент, оптимізований для плоских (незгрупованих) однотипних або гетерогенних списків. Він інкапсулює математику обчислення видимого діапазону, роботу з подіями прокручування, оновлення при зміні орієнтації пристрою та інтеграцію системних жестів.",[3743,4515,4516],{},"Мінімальний структурний шаблон виглядає так:",[4212,4518,4522],{"className":4519,"code":4520,"language":4521,"meta":4217,"style":4217},"language-tsx shiki shiki-themes light-plus dark-plus dark-plus","import { FlatList, Text, View, StyleSheet } from 'react-native';\n\ninterface ArticleItem {\n  id: string;\n  title: string;\n}\n\nconst ARTICLES: ArticleItem[] = [\n  { id: 'art-1', title: 'Архітектура мобільних застосунків' },\n  { id: 'art-2', title: 'Оптимізація пам’яті в React Native' },\n  { id: 'art-3', title: 'Патерни віртуалізації списків' },\n];\n\nexport function MinimalArticleList() {\n  return (\n    \u003CFlatList\n      data={ARTICLES}\n      keyExtractor={(item) => item.id}\n      renderItem={({ item }) => (\n        \u003CView style={styles.card}>\n          \u003CText style={styles.title}>{item.title}\u003C\u002FText>\n        \u003C\u002FView>\n      )}\n    \u002F>\n  );\n}\n\nconst styles = StyleSheet.create({\n  card: { padding: 16, borderBottomWidth: StyleSheet.hairlineWidth, borderColor: '#ccc' },\n  title: { fontSize: 16, fontWeight: '500' },\n});\n","tsx",[3750,4523,4524,4563,4567,4580,4593,4604,4608,4612,4629,4651,4669,4687,4692,4696,4711,4719,4728,4745,4777,4798,4826,4868,4877,4884,4889,4894,4898,4902,4922,4959,4981],{"__ignoreMap":4217},[4221,4525,4526,4530,4534,4537,4539,4541,4543,4545,4547,4550,4553,4556,4560],{"class":4223,"line":4224},[4221,4527,4529],{"class":4528},"s8xlr","import",[4221,4531,4533],{"class":4532},"sHH4Y"," { ",[4221,4535,3784],{"class":4536},"siwwj",[4221,4538,3785],{"class":4532},[4221,4540,4150],{"class":4536},[4221,4542,3785],{"class":4532},[4221,4544,4147],{"class":4536},[4221,4546,3785],{"class":4532},[4221,4548,4549],{"class":4536},"StyleSheet",[4221,4551,4552],{"class":4532}," } ",[4221,4554,4555],{"class":4528},"from",[4221,4557,4559],{"class":4558},"sbdoH"," 'react-native'",[4221,4561,4562],{"class":4532},";\n",[4221,4564,4565],{"class":4223,"line":4230},[4221,4566,4246],{"emptyLinePlaceholder":4245},[4221,4568,4569,4573,4577],{"class":4223,"line":4236},[4221,4570,4572],{"class":4571},"su1O8","interface",[4221,4574,4576],{"class":4575},"sN1BT"," ArticleItem",[4221,4578,4579],{"class":4532}," {\n",[4221,4581,4582,4585,4588,4591],{"class":4223,"line":4242},[4221,4583,4584],{"class":4536},"  id",[4221,4586,4587],{"class":4532},": ",[4221,4589,4590],{"class":4575},"string",[4221,4592,4562],{"class":4532},[4221,4594,4595,4598,4600,4602],{"class":4223,"line":4249},[4221,4596,4597],{"class":4536},"  title",[4221,4599,4587],{"class":4532},[4221,4601,4590],{"class":4575},[4221,4603,4562],{"class":4532},[4221,4605,4606],{"class":4223,"line":4255},[4221,4607,4276],{"class":4532},[4221,4609,4610],{"class":4223,"line":4261},[4221,4611,4246],{"emptyLinePlaceholder":4245},[4221,4613,4614,4617,4621,4623,4626],{"class":4223,"line":4267},[4221,4615,4616],{"class":4571},"const",[4221,4618,4620],{"class":4619},"s-QsJ"," ARTICLES",[4221,4622,4587],{"class":4532},[4221,4624,4625],{"class":4575},"ArticleItem",[4221,4627,4628],{"class":4532},"[] = [\n",[4221,4630,4631,4634,4637,4640,4642,4645,4648],{"class":4223,"line":4273},[4221,4632,4633],{"class":4532},"  { ",[4221,4635,4636],{"class":4536},"id:",[4221,4638,4639],{"class":4558}," 'art-1'",[4221,4641,3785],{"class":4532},[4221,4643,4644],{"class":4536},"title:",[4221,4646,4647],{"class":4558}," 'Архітектура мобільних застосунків'",[4221,4649,4650],{"class":4532}," },\n",[4221,4652,4653,4655,4657,4660,4662,4664,4667],{"class":4223,"line":4279},[4221,4654,4633],{"class":4532},[4221,4656,4636],{"class":4536},[4221,4658,4659],{"class":4558}," 'art-2'",[4221,4661,3785],{"class":4532},[4221,4663,4644],{"class":4536},[4221,4665,4666],{"class":4558}," 'Оптимізація пам’яті в React Native'",[4221,4668,4650],{"class":4532},[4221,4670,4671,4673,4675,4678,4680,4682,4685],{"class":4223,"line":4284},[4221,4672,4633],{"class":4532},[4221,4674,4636],{"class":4536},[4221,4676,4677],{"class":4558}," 'art-3'",[4221,4679,3785],{"class":4532},[4221,4681,4644],{"class":4536},[4221,4683,4684],{"class":4558}," 'Патерни віртуалізації списків'",[4221,4686,4650],{"class":4532},[4221,4688,4689],{"class":4223,"line":4290},[4221,4690,4691],{"class":4532},"];\n",[4221,4693,4694],{"class":4223,"line":4296},[4221,4695,4246],{"emptyLinePlaceholder":4245},[4221,4697,4698,4701,4704,4708],{"class":4223,"line":4302},[4221,4699,4700],{"class":4528},"export",[4221,4702,4703],{"class":4571}," function",[4221,4705,4707],{"class":4706},"s8Opu"," MinimalArticleList",[4221,4709,4710],{"class":4532},"() {\n",[4221,4712,4713,4716],{"class":4223,"line":4308},[4221,4714,4715],{"class":4528},"  return",[4221,4717,4718],{"class":4532}," (\n",[4221,4720,4721,4725],{"class":4223,"line":4314},[4221,4722,4724],{"class":4723},"s0P7L","    \u003C",[4221,4726,4727],{"class":4575},"FlatList\n",[4221,4729,4730,4734,4737,4740,4743],{"class":4223,"line":4319},[4221,4731,4733],{"class":4732},"sa4r_","      data",[4221,4735,4736],{"class":4532},"=",[4221,4738,4739],{"class":4571},"{",[4221,4741,4742],{"class":4619},"ARTICLES",[4221,4744,4276],{"class":4571},[4221,4746,4747,4750,4752,4754,4758,4761,4764,4767,4770,4772,4775],{"class":4223,"line":4324},[4221,4748,4749],{"class":4732},"      keyExtractor",[4221,4751,4736],{"class":4532},[4221,4753,4739],{"class":4571},[4221,4755,4757],{"class":4756},"sD7JJ","(",[4221,4759,4760],{"class":4536},"item",[4221,4762,4763],{"class":4756},") ",[4221,4765,4766],{"class":4571},"=>",[4221,4768,4769],{"class":4536}," item",[4221,4771,3793],{"class":4756},[4221,4773,4774],{"class":4536},"id",[4221,4776,4276],{"class":4571},[4221,4778,4779,4782,4784,4786,4789,4791,4794,4796],{"class":4223,"line":4330},[4221,4780,4781],{"class":4732},"      renderItem",[4221,4783,4736],{"class":4532},[4221,4785,4739],{"class":4571},[4221,4787,4788],{"class":4756},"({ ",[4221,4790,4760],{"class":4536},[4221,4792,4793],{"class":4756}," }) ",[4221,4795,4766],{"class":4571},[4221,4797,4718],{"class":4756},[4221,4799,4800,4803,4805,4808,4810,4812,4815,4817,4820,4823],{"class":4223,"line":4336},[4221,4801,4802],{"class":4723},"        \u003C",[4221,4804,4147],{"class":4575},[4221,4806,4807],{"class":4732}," style",[4221,4809,4736],{"class":4532},[4221,4811,4739],{"class":4571},[4221,4813,4814],{"class":4536},"styles",[4221,4816,3793],{"class":4756},[4221,4818,4819],{"class":4536},"card",[4221,4821,4822],{"class":4571},"}",[4221,4824,4825],{"class":4723},">\n",[4221,4827,4828,4831,4833,4835,4837,4839,4841,4843,4846,4848,4851,4853,4855,4857,4859,4861,4864,4866],{"class":4223,"line":4342},[4221,4829,4830],{"class":4723},"          \u003C",[4221,4832,4150],{"class":4575},[4221,4834,4807],{"class":4732},[4221,4836,4736],{"class":4532},[4221,4838,4739],{"class":4571},[4221,4840,4814],{"class":4536},[4221,4842,3793],{"class":4756},[4221,4844,4845],{"class":4536},"title",[4221,4847,4822],{"class":4571},[4221,4849,4850],{"class":4723},">",[4221,4852,4739],{"class":4571},[4221,4854,4760],{"class":4536},[4221,4856,3793],{"class":4756},[4221,4858,4845],{"class":4536},[4221,4860,4822],{"class":4571},[4221,4862,4863],{"class":4723},"\u003C\u002F",[4221,4865,4150],{"class":4575},[4221,4867,4825],{"class":4723},[4221,4869,4870,4873,4875],{"class":4223,"line":4348},[4221,4871,4872],{"class":4723},"        \u003C\u002F",[4221,4874,4147],{"class":4575},[4221,4876,4825],{"class":4723},[4221,4878,4879,4882],{"class":4223,"line":4354},[4221,4880,4881],{"class":4756},"      )",[4221,4883,4276],{"class":4571},[4221,4885,4886],{"class":4223,"line":4360},[4221,4887,4888],{"class":4723},"    \u002F>\n",[4221,4890,4891],{"class":4223,"line":4365},[4221,4892,4893],{"class":4532},"  );\n",[4221,4895,4896],{"class":4223,"line":4371},[4221,4897,4276],{"class":4532},[4221,4899,4900],{"class":4223,"line":4377},[4221,4901,4246],{"emptyLinePlaceholder":4245},[4221,4903,4904,4906,4909,4912,4914,4916,4919],{"class":4223,"line":4383},[4221,4905,4616],{"class":4571},[4221,4907,4908],{"class":4619}," styles",[4221,4910,4911],{"class":4532}," = ",[4221,4913,4549],{"class":4536},[4221,4915,3793],{"class":4532},[4221,4917,4918],{"class":4706},"create",[4221,4920,4921],{"class":4532},"({\n",[4221,4923,4924,4927,4929,4932,4936,4938,4941,4944,4946,4949,4951,4954,4957],{"class":4223,"line":4389},[4221,4925,4926],{"class":4536},"  card:",[4221,4928,4533],{"class":4532},[4221,4930,4931],{"class":4536},"padding:",[4221,4933,4935],{"class":4934},"sJj4R"," 16",[4221,4937,3785],{"class":4532},[4221,4939,4940],{"class":4536},"borderBottomWidth:",[4221,4942,4943],{"class":4536}," StyleSheet",[4221,4945,3793],{"class":4532},[4221,4947,4948],{"class":4536},"hairlineWidth",[4221,4950,3785],{"class":4532},[4221,4952,4953],{"class":4536},"borderColor:",[4221,4955,4956],{"class":4558}," '#ccc'",[4221,4958,4650],{"class":4532},[4221,4960,4961,4964,4966,4969,4971,4973,4976,4979],{"class":4223,"line":4395},[4221,4962,4963],{"class":4536},"  title:",[4221,4965,4533],{"class":4532},[4221,4967,4968],{"class":4536},"fontSize:",[4221,4970,4935],{"class":4934},[4221,4972,3785],{"class":4532},[4221,4974,4975],{"class":4536},"fontWeight:",[4221,4977,4978],{"class":4558}," '500'",[4221,4980,4650],{"class":4532},[4221,4982,4983],{"class":4223,"line":4400},[4221,4984,4985],{"class":4532},"});\n",[4131,4987,4989,4990],{"id":4988},"повний-огляд-параметрів-props-flatlist","Повний огляд параметрів (Props) ",[3750,4991,3784],{},[3743,4993,4994,4995,4997],{},"Для побудови надійного і продуктивного інтерфейсу необхідно володіти повною картою параметрів ",[3750,4996,3784],{},":",[4445,4999,5000,5014,5025,5043,5052,5062,5071,5083,5091,5112,5121,5141,5146,5151,5155,5160,5170,5175,5186,5194],{},[4448,5001,5003,5004,5006,5007,5010,5011,5013],{"name":3837,"type":5002},"readonly ItemT[] | null | undefined","Основне джерело даних. ",[3750,5005,3784],{}," здійснює неглибоке порівняння (",[3759,5008,5009],{},"shallow comparison",") посилання на масив ",[3750,5012,3837],{},". Зміна вмісту масиву без зміни посилання не викличе перерендер списку.",[4448,5015,5017,5018,5021,5022,5024],{"name":3840,"type":5016},"(info: { item: ItemT, index: number, separators: ... }) => ReactElement | null","Функція-фабрика, що повертає візуальний компонент для конкретного елемента. Викликається тільки для елементів, які потрапляють у вікно віртуалізації. ",[3770,5019,5020],{},"Критично важливо:"," функція має бути стабільною (огорнута в ",[3750,5023,3900],{}," або винесена за межі рендера батьківського компонента), щоб уникнути непотрібної інвалідації всіх видимих рядків.",[4448,5026,5028,5029,5031,5032,5035,5036,5039,5040,5042],{"name":3843,"type":5027},"(item: ItemT, index: number) => string","Функція отримання унікального рядкового ідентифікатора. За замовчуванням ",[3750,5030,3784],{}," перевіряє наявність поля ",[3750,5033,5034],{},"item.key"," або ",[3750,5037,5038],{},"item.id",". Явне визначення ",[3750,5041,3843],{}," є обов'язковим стандартом, якщо структура ваших даних відрізняється від дефолтної.",[4448,5044,5047,5048,5051],{"name":5045,"type":5046},"ListHeaderComponent \u002F ListFooterComponent","React.ComponentType\u003Cany> | React.ReactElement | null","Компоненти шапки та підвалу, які розміщуються ",[3770,5049,5050],{},"всередині загального прокручуваного простору",". Вони скроляться разом з елементами списку, на відміну від фіксованих зовнішніх блоків.",[4448,5053,5054,5055,5057,5058,5061],{"name":3853,"type":5046},"Компонент, що автоматично монтується, коли масив ",[3750,5056,3837],{}," порожній (",[3750,5059,5060],{},"data.length === 0","). Дозволяє декларативно описувати стан відсутності даних.",[4448,5063,5066,5067,5070],{"name":5064,"type":5065},"ItemSeparatorComponent","React.ComponentType\u003Cany> | null","Рендериться між сусідніми елементами списку. Не відображається перед першим і після останнього елемента, що вирішує класичну проблему зайвих ",[3750,5068,5069],{},"margin"," або ліній розділення.",[4448,5072,5075,5076,5079,5080,3793],{"name":5073,"type":5074},"contentContainerStyle","StyleProp\u003CViewStyle>","Стильовий об'єкт, що застосовується до внутрішнього контейнера скролу (нативного полотна, на якому розташовуються всі елементи). Використовується для завдання внутрішніх відступів (",[3750,5077,5078],{},"padding",") списку та властивості ",[3750,5081,5082],{},"flexGrow: 1",[4448,5084,5086,5087,5090],{"name":5085,"type":5074},"style","Стиль зовнішнього контейнера списку (рамки вікна перегляду). Зазвичай містить ",[3750,5088,5089],{},"flex: 1"," для обмеження висоти списку розмірами батьківського екрана.",[4448,5092,5094,5095,5097,5098,5100,5101,5104,5105,5108,5109,5111],{"name":3908,"type":5093},"any","Маркер інвалідації кешу віртуалізації. Якщо рендеринг рядків залежить від зовнішнього стану (наприклад, стан вибраного ID, локалізація, глобальна тема), цей стан необхідно передати в ",[3750,5096,3908],{},". Оскільки ",[3750,5099,3840],{}," оптимізовано через ",[3750,5102,5103],{},"PureComponent","\u002F",[3750,5106,5107],{},"memo",", без зміни ",[3750,5110,3908],{}," список проігнорує оновлення зовнішніх залежностей.",[4448,5113,5116,5117,5120],{"name":5114,"type":5115},"refreshControl \u002F refreshing + onRefresh","React.ReactElement\u003CRefreshControlProps>","Механізм підтримки жесту Pull-to-Refresh. Дозволяє підключити системний компонент ",[3750,5118,5119],{},"\u003CRefreshControl \u002F>"," для асинхронного перезавантаження вибірки.",[4448,5122,5125,5126,5129,5130,5133,5134,5137,5138,5140],{"name":5123,"type":5124},"onEndReached \u002F onEndReachedThreshold","() => void \u002F number","Колбек та числовий коефіцієнт (від ",[3750,5127,5128],{},"0"," до ",[3750,5131,5132],{},"1",") для реалізації пагінації. Значення ",[3750,5135,5136],{},"0.5"," означає, що функція ",[3750,5139,3873],{}," спрацює, коли нижня межа списку буде на відстані половини висоти вікна перегляду від кінця контенту.",[4448,5142,5145],{"name":5143,"type":5144},"horizontal","boolean","Перемикає орієнтацію списку з вертикальної на горизонтальну. При цьому головна вісь прокручування стає горизонтальною, а розділювачі та шапки адаптують своє розташування.",[4448,5147,5150],{"name":5148,"type":5149},"initialNumToRender","number (дефолт: 10)","Кількість елементів, що монтуються в початковому пакеті рендерингу. Безпосередньо впливає на час до першого відмалювання екрана (TTI \u002F First Contentful Paint). Зменшення цього числа прискорює відкриття екрана, але занизьке значення може призвести до миготіння порожнього простору на високих екранах.",[4448,5152,5154],{"name":5153,"type":5149},"maxToRenderPerBatch","Максимальна кількість елементів, які список додає в дерево за один інкрементний крок під час прокручування. Дозволяє балансувати між навантаженням на процесор і плавністю появи нових рядків.",[4448,5156,5159],{"name":5157,"type":5158},"updateCellsBatchingPeriod","number (дефолт: 50 мс)","Часовий інтервал у мілісекундах між пакетами інкрементного рендерингу.",[4448,5161,5164,5165,5104,5167,5169],{"name":5162,"type":5163},"removeClippedSubviews","boolean (дефолт: true на Android)","Нативна оптимізація пам'яті: від'єднує позаекранні нативні представлення (",[3750,5166,3975],{},[3750,5168,4147],{},") від віконної ієрархії на рівні ОС. Суттєво знижує споживання VRAM, але на iOS іноді може викликати тимчасові артефакти зникнення складного вкладеного контенту або текстових полів.",[4448,5171,5174],{"name":5172,"type":5173},"numColumns","number (дефолт: 1)","Кількість колонок для побудови сітки (Grid Layout). Перетворює список на матрицю.",[4448,5176,5178,5179,5182,5183,3909],{"name":5177,"type":5074},"columnWrapperStyle","Стиль для обгортки рядка колонок, коли ",[3750,5180,5181],{},"numColumns > 1"," (наприклад, для рівномірного розподілу карток через ",[3750,5184,5185],{},"justifyContent: 'space-between'",[4448,5187,5190,5191,5193],{"name":5188,"type":5189},"inverted","boolean (дефолт: false)","Інвертує напрямок осі прокручування. Список починається знизу (нульовий елемент внизу), скрол іде вгору, а подія ",[3750,5192,3873],{}," генерується при наближенні до верхнього краю. Базовий патерн для екранів чатів та стрічок повідомлень.",[4448,5195,5197,5198,5201],{"name":3904,"type":5196},"(data, index) => { length: number, offset: number, index: number }","Опціональна, але вкрай потужна оптимізація. Якщо всі елементи списку мають ",[3770,5199,5200],{},"фіксовану та наперед відому висоту",", ця функція дозволяє списку миттєво обчислювати позицію будь-якого елемента без проходження фази нативного динамічного вимірювання (Layout Measurement).",[4131,5203,5205,5206],{"id":5204},"демо-простий-flatlist","Демо: простий ",[3750,5207,3784],{},[5209,5210,5215],"react-native-preview",{"device":5211,"filename":5212,"height":5213,"title":5214},"iphone","FlatListBasic.tsx",560,"FlatList · базовий",[4212,5216,5218],{"className":4519,"code":5217,"language":4521,"meta":4217,"style":4217},"import { FlatList, StyleSheet, Text, View, useColorScheme } from 'react-native';\n\ntype Row = { id: string; title: string; subtitle: string };\n\nconst DATA: Row[] = Array.from({ length: 40 }, (_, i) => ({\n  id: String(i + 1),\n  title: `Поїздка ${i + 1}`,\n  subtitle: i % 2 === 0 ? 'Гори' : 'Місто',\n}));\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: bg }]}>\n      \u003CText style={[styles.h, { color: text }]}>FlatList · 40 рядків\u003C\u002FText>\n      \u003CText style={{ color: muted, marginBottom: 8, fontSize: 13 }}>\n        У дереві — лише видимі. Прокрутіть список.\n      \u003C\u002FText>\n      \u003CFlatList\n        style={styles.list}\n        data={DATA}\n        keyExtractor={(item) => item.id}\n        contentContainerStyle={{ paddingBottom: 16, gap: 8 }}\n        renderItem={({ item }) => (\n          \u003CView\n            style={[\n              styles.row,\n              { backgroundColor: surface, borderColor: border },\n            ]}\n          >\n            \u003CText style={[styles.title, { color: text }]}>{item.title}\u003C\u002FText>\n            \u003CText style={{ color: muted, fontSize: 13 }}>{item.subtitle}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16, paddingTop: 24 },\n  h: { fontSize: 20, fontWeight: '800', marginBottom: 4 },\n  list: { flex: 1 },\n  row: {\n    borderWidth: 1,\n    borderRadius: 12,\n    padding: 14,\n  },\n  title: { fontSize: 16, fontWeight: '700', marginBottom: 4 },\n});\n",[3750,5219,5220,5253,5257,5295,5299,5347,5366,5392,5425,5430,5434,5448,5468,5492,5515,5538,5561,5584,5588,5594,5631,5675,5716,5721,5730,5736,5754,5768,5793,5820,5839,5846,5858,5871,5889,5897,5903,5953,6000,6010,6018,6024,6034,6039,6044,6049,6066,6095,6124,6138,6146,6156,6167,6178,6184,6210],{"__ignoreMap":4217},[4221,5221,5222,5224,5226,5228,5230,5232,5234,5236,5238,5240,5242,5245,5247,5249,5251],{"class":4223,"line":4224},[4221,5223,4529],{"class":4528},[4221,5225,4533],{"class":4532},[4221,5227,3784],{"class":4536},[4221,5229,3785],{"class":4532},[4221,5231,4549],{"class":4536},[4221,5233,3785],{"class":4532},[4221,5235,4150],{"class":4536},[4221,5237,3785],{"class":4532},[4221,5239,4147],{"class":4536},[4221,5241,3785],{"class":4532},[4221,5243,5244],{"class":4536},"useColorScheme",[4221,5246,4552],{"class":4532},[4221,5248,4555],{"class":4528},[4221,5250,4559],{"class":4558},[4221,5252,4562],{"class":4532},[4221,5254,5255],{"class":4223,"line":4230},[4221,5256,4246],{"emptyLinePlaceholder":4245},[4221,5258,5259,5262,5265,5268,5270,5272,5274,5277,5279,5281,5283,5285,5288,5290,5292],{"class":4223,"line":4236},[4221,5260,5261],{"class":4571},"type",[4221,5263,5264],{"class":4575}," Row",[4221,5266,5267],{"class":4532}," = { ",[4221,5269,4774],{"class":4536},[4221,5271,4587],{"class":4532},[4221,5273,4590],{"class":4575},[4221,5275,5276],{"class":4532},"; ",[4221,5278,4845],{"class":4536},[4221,5280,4587],{"class":4532},[4221,5282,4590],{"class":4575},[4221,5284,5276],{"class":4532},[4221,5286,5287],{"class":4536},"subtitle",[4221,5289,4587],{"class":4532},[4221,5291,4590],{"class":4575},[4221,5293,5294],{"class":4532}," };\n",[4221,5296,5297],{"class":4223,"line":4242},[4221,5298,4246],{"emptyLinePlaceholder":4245},[4221,5300,5301,5303,5306,5308,5311,5314,5317,5319,5321,5323,5326,5329,5332,5335,5337,5340,5342,5344],{"class":4223,"line":4249},[4221,5302,4616],{"class":4571},[4221,5304,5305],{"class":4619}," DATA",[4221,5307,4587],{"class":4532},[4221,5309,5310],{"class":4575},"Row",[4221,5312,5313],{"class":4532},"[] = ",[4221,5315,5316],{"class":4536},"Array",[4221,5318,3793],{"class":4532},[4221,5320,4555],{"class":4706},[4221,5322,4788],{"class":4532},[4221,5324,5325],{"class":4536},"length:",[4221,5327,5328],{"class":4934}," 40",[4221,5330,5331],{"class":4532}," }, (",[4221,5333,5334],{"class":4536},"_",[4221,5336,3785],{"class":4532},[4221,5338,5339],{"class":4536},"i",[4221,5341,4763],{"class":4532},[4221,5343,4766],{"class":4571},[4221,5345,5346],{"class":4532}," ({\n",[4221,5348,5349,5352,5355,5357,5359,5361,5363],{"class":4223,"line":4255},[4221,5350,5351],{"class":4536},"  id:",[4221,5353,5354],{"class":4706}," String",[4221,5356,4757],{"class":4532},[4221,5358,5339],{"class":4536},[4221,5360,4016],{"class":4532},[4221,5362,5132],{"class":4934},[4221,5364,5365],{"class":4532},"),\n",[4221,5367,5368,5370,5373,5376,5378,5381,5384,5386,5389],{"class":4223,"line":4261},[4221,5369,4963],{"class":4536},[4221,5371,5372],{"class":4558}," `Поїздка ",[4221,5374,5375],{"class":4571},"${",[4221,5377,5339],{"class":4536},[4221,5379,5380],{"class":4532}," +",[4221,5382,5383],{"class":4934}," 1",[4221,5385,4822],{"class":4571},[4221,5387,5388],{"class":4558},"`",[4221,5390,5391],{"class":4532},",\n",[4221,5393,5394,5397,5400,5403,5406,5409,5411,5414,5417,5420,5423],{"class":4223,"line":4267},[4221,5395,5396],{"class":4536},"  subtitle:",[4221,5398,5399],{"class":4536}," i",[4221,5401,5402],{"class":4532}," % ",[4221,5404,5405],{"class":4934},"2",[4221,5407,5408],{"class":4532}," === ",[4221,5410,5128],{"class":4934},[4221,5412,5413],{"class":4532}," ? ",[4221,5415,5416],{"class":4558},"'Гори'",[4221,5418,5419],{"class":4532}," : ",[4221,5421,5422],{"class":4558},"'Місто'",[4221,5424,5391],{"class":4532},[4221,5426,5427],{"class":4223,"line":4273},[4221,5428,5429],{"class":4532},"}));\n",[4221,5431,5432],{"class":4223,"line":4279},[4221,5433,4246],{"emptyLinePlaceholder":4245},[4221,5435,5436,5438,5441,5443,5446],{"class":4223,"line":4284},[4221,5437,4700],{"class":4528},[4221,5439,5440],{"class":4528}," default",[4221,5442,4703],{"class":4571},[4221,5444,5445],{"class":4706}," App",[4221,5447,4710],{"class":4532},[4221,5449,5450,5453,5456,5458,5460,5463,5466],{"class":4223,"line":4290},[4221,5451,5452],{"class":4571},"  const",[4221,5454,5455],{"class":4619}," dark",[4221,5457,4911],{"class":4532},[4221,5459,5244],{"class":4706},[4221,5461,5462],{"class":4532},"() === ",[4221,5464,5465],{"class":4558},"'dark'",[4221,5467,4562],{"class":4532},[4221,5469,5470,5472,5475,5477,5480,5482,5485,5487,5490],{"class":4223,"line":4296},[4221,5471,5452],{"class":4571},[4221,5473,5474],{"class":4619}," bg",[4221,5476,4911],{"class":4532},[4221,5478,5479],{"class":4536},"dark",[4221,5481,5413],{"class":4532},[4221,5483,5484],{"class":4558},"'#000'",[4221,5486,5419],{"class":4532},[4221,5488,5489],{"class":4558},"'#F8FAFC'",[4221,5491,4562],{"class":4532},[4221,5493,5494,5496,5499,5501,5503,5505,5508,5510,5513],{"class":4223,"line":4302},[4221,5495,5452],{"class":4571},[4221,5497,5498],{"class":4619}," surface",[4221,5500,4911],{"class":4532},[4221,5502,5479],{"class":4536},[4221,5504,5413],{"class":4532},[4221,5506,5507],{"class":4558},"'#1c1c1e'",[4221,5509,5419],{"class":4532},[4221,5511,5512],{"class":4558},"'#fff'",[4221,5514,4562],{"class":4532},[4221,5516,5517,5519,5522,5524,5526,5528,5531,5533,5536],{"class":4223,"line":4308},[4221,5518,5452],{"class":4571},[4221,5520,5521],{"class":4619}," text",[4221,5523,4911],{"class":4532},[4221,5525,5479],{"class":4536},[4221,5527,5413],{"class":4532},[4221,5529,5530],{"class":4558},"'#f5f5f7'",[4221,5532,5419],{"class":4532},[4221,5534,5535],{"class":4558},"'#0f172a'",[4221,5537,4562],{"class":4532},[4221,5539,5540,5542,5545,5547,5549,5551,5554,5556,5559],{"class":4223,"line":4314},[4221,5541,5452],{"class":4571},[4221,5543,5544],{"class":4619}," muted",[4221,5546,4911],{"class":4532},[4221,5548,5479],{"class":4536},[4221,5550,5413],{"class":4532},[4221,5552,5553],{"class":4558},"'#a1a1aa'",[4221,5555,5419],{"class":4532},[4221,5557,5558],{"class":4558},"'#64748b'",[4221,5560,4562],{"class":4532},[4221,5562,5563,5565,5568,5570,5572,5574,5577,5579,5582],{"class":4223,"line":4319},[4221,5564,5452],{"class":4571},[4221,5566,5567],{"class":4619}," border",[4221,5569,4911],{"class":4532},[4221,5571,5479],{"class":4536},[4221,5573,5413],{"class":4532},[4221,5575,5576],{"class":4558},"'#3a3a3c'",[4221,5578,5419],{"class":4532},[4221,5580,5581],{"class":4558},"'#e2e8f0'",[4221,5583,4562],{"class":4532},[4221,5585,5586],{"class":4223,"line":4324},[4221,5587,4246],{"emptyLinePlaceholder":4245},[4221,5589,5590,5592],{"class":4223,"line":4330},[4221,5591,4715],{"class":4528},[4221,5593,4718],{"class":4532},[4221,5595,5596,5598,5600,5602,5604,5606,5609,5611,5613,5616,5619,5622,5624,5627,5629],{"class":4223,"line":4336},[4221,5597,4724],{"class":4723},[4221,5599,4147],{"class":4575},[4221,5601,4807],{"class":4732},[4221,5603,4736],{"class":4532},[4221,5605,4739],{"class":4571},[4221,5607,5608],{"class":4756},"[",[4221,5610,4814],{"class":4536},[4221,5612,3793],{"class":4756},[4221,5614,5615],{"class":4536},"screen",[4221,5617,5618],{"class":4756},", { ",[4221,5620,5621],{"class":4536},"backgroundColor:",[4221,5623,5474],{"class":4536},[4221,5625,5626],{"class":4756}," }]",[4221,5628,4822],{"class":4571},[4221,5630,4825],{"class":4723},[4221,5632,5633,5636,5638,5640,5642,5644,5646,5648,5650,5653,5655,5658,5660,5662,5664,5666,5669,5671,5673],{"class":4223,"line":4342},[4221,5634,5635],{"class":4723},"      \u003C",[4221,5637,4150],{"class":4575},[4221,5639,4807],{"class":4732},[4221,5641,4736],{"class":4532},[4221,5643,4739],{"class":4571},[4221,5645,5608],{"class":4756},[4221,5647,4814],{"class":4536},[4221,5649,3793],{"class":4756},[4221,5651,5652],{"class":4536},"h",[4221,5654,5618],{"class":4756},[4221,5656,5657],{"class":4536},"color:",[4221,5659,5521],{"class":4536},[4221,5661,5626],{"class":4756},[4221,5663,4822],{"class":4571},[4221,5665,4850],{"class":4723},[4221,5667,5668],{"class":4532},"FlatList · 40 рядків",[4221,5670,4863],{"class":4723},[4221,5672,4150],{"class":4575},[4221,5674,4825],{"class":4723},[4221,5676,5677,5679,5681,5683,5685,5687,5690,5692,5694,5696,5699,5702,5704,5706,5709,5712,5714],{"class":4223,"line":4348},[4221,5678,5635],{"class":4723},[4221,5680,4150],{"class":4575},[4221,5682,4807],{"class":4732},[4221,5684,4736],{"class":4532},[4221,5686,4739],{"class":4571},[4221,5688,5689],{"class":4756},"{ ",[4221,5691,5657],{"class":4536},[4221,5693,5544],{"class":4536},[4221,5695,3785],{"class":4756},[4221,5697,5698],{"class":4536},"marginBottom:",[4221,5700,5701],{"class":4934}," 8",[4221,5703,3785],{"class":4756},[4221,5705,4968],{"class":4536},[4221,5707,5708],{"class":4934}," 13",[4221,5710,5711],{"class":4756}," }",[4221,5713,4822],{"class":4571},[4221,5715,4825],{"class":4723},[4221,5717,5718],{"class":4223,"line":4354},[4221,5719,5720],{"class":4532},"        У дереві — лише видимі. Прокрутіть список.\n",[4221,5722,5723,5726,5728],{"class":4223,"line":4360},[4221,5724,5725],{"class":4723},"      \u003C\u002F",[4221,5727,4150],{"class":4575},[4221,5729,4825],{"class":4723},[4221,5731,5732,5734],{"class":4223,"line":4365},[4221,5733,5635],{"class":4723},[4221,5735,4727],{"class":4575},[4221,5737,5738,5741,5743,5745,5747,5749,5752],{"class":4223,"line":4371},[4221,5739,5740],{"class":4732},"        style",[4221,5742,4736],{"class":4532},[4221,5744,4739],{"class":4571},[4221,5746,4814],{"class":4536},[4221,5748,3793],{"class":4756},[4221,5750,5751],{"class":4536},"list",[4221,5753,4276],{"class":4571},[4221,5755,5756,5759,5761,5763,5766],{"class":4223,"line":4377},[4221,5757,5758],{"class":4732},"        data",[4221,5760,4736],{"class":4532},[4221,5762,4739],{"class":4571},[4221,5764,5765],{"class":4619},"DATA",[4221,5767,4276],{"class":4571},[4221,5769,5770,5773,5775,5777,5779,5781,5783,5785,5787,5789,5791],{"class":4223,"line":4383},[4221,5771,5772],{"class":4732},"        keyExtractor",[4221,5774,4736],{"class":4532},[4221,5776,4739],{"class":4571},[4221,5778,4757],{"class":4756},[4221,5780,4760],{"class":4536},[4221,5782,4763],{"class":4756},[4221,5784,4766],{"class":4571},[4221,5786,4769],{"class":4536},[4221,5788,3793],{"class":4756},[4221,5790,4774],{"class":4536},[4221,5792,4276],{"class":4571},[4221,5794,5795,5798,5800,5802,5804,5807,5809,5811,5814,5816,5818],{"class":4223,"line":4389},[4221,5796,5797],{"class":4732},"        contentContainerStyle",[4221,5799,4736],{"class":4532},[4221,5801,4739],{"class":4571},[4221,5803,5689],{"class":4756},[4221,5805,5806],{"class":4536},"paddingBottom:",[4221,5808,4935],{"class":4934},[4221,5810,3785],{"class":4756},[4221,5812,5813],{"class":4536},"gap:",[4221,5815,5701],{"class":4934},[4221,5817,5711],{"class":4756},[4221,5819,4276],{"class":4571},[4221,5821,5822,5825,5827,5829,5831,5833,5835,5837],{"class":4223,"line":4395},[4221,5823,5824],{"class":4732},"        renderItem",[4221,5826,4736],{"class":4532},[4221,5828,4739],{"class":4571},[4221,5830,4788],{"class":4756},[4221,5832,4760],{"class":4536},[4221,5834,4793],{"class":4756},[4221,5836,4766],{"class":4571},[4221,5838,4718],{"class":4756},[4221,5840,5841,5843],{"class":4223,"line":4400},[4221,5842,4830],{"class":4723},[4221,5844,5845],{"class":4575},"View\n",[4221,5847,5848,5851,5853,5855],{"class":4223,"line":4405},[4221,5849,5850],{"class":4732},"            style",[4221,5852,4736],{"class":4532},[4221,5854,4739],{"class":4571},[4221,5856,5857],{"class":4756},"[\n",[4221,5859,5861,5864,5866,5869],{"class":4223,"line":5860},33,[4221,5862,5863],{"class":4536},"              styles",[4221,5865,3793],{"class":4756},[4221,5867,5868],{"class":4536},"row",[4221,5870,5391],{"class":4756},[4221,5872,5874,5877,5879,5881,5883,5885,5887],{"class":4223,"line":5873},34,[4221,5875,5876],{"class":4756},"              { ",[4221,5878,5621],{"class":4536},[4221,5880,5498],{"class":4536},[4221,5882,3785],{"class":4756},[4221,5884,4953],{"class":4536},[4221,5886,5567],{"class":4536},[4221,5888,4650],{"class":4756},[4221,5890,5892,5895],{"class":4223,"line":5891},35,[4221,5893,5894],{"class":4756},"            ]",[4221,5896,4276],{"class":4571},[4221,5898,5900],{"class":4223,"line":5899},36,[4221,5901,5902],{"class":4723},"          >\n",[4221,5904,5906,5909,5911,5913,5915,5917,5919,5921,5923,5925,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945,5947,5949,5951],{"class":4223,"line":5905},37,[4221,5907,5908],{"class":4723},"            \u003C",[4221,5910,4150],{"class":4575},[4221,5912,4807],{"class":4732},[4221,5914,4736],{"class":4532},[4221,5916,4739],{"class":4571},[4221,5918,5608],{"class":4756},[4221,5920,4814],{"class":4536},[4221,5922,3793],{"class":4756},[4221,5924,4845],{"class":4536},[4221,5926,5618],{"class":4756},[4221,5928,5657],{"class":4536},[4221,5930,5521],{"class":4536},[4221,5932,5626],{"class":4756},[4221,5934,4822],{"class":4571},[4221,5936,4850],{"class":4723},[4221,5938,4739],{"class":4571},[4221,5940,4760],{"class":4536},[4221,5942,3793],{"class":4756},[4221,5944,4845],{"class":4536},[4221,5946,4822],{"class":4571},[4221,5948,4863],{"class":4723},[4221,5950,4150],{"class":4575},[4221,5952,4825],{"class":4723},[4221,5954,5956,5958,5960,5962,5964,5966,5968,5970,5972,5974,5976,5978,5980,5982,5984,5986,5988,5990,5992,5994,5996,5998],{"class":4223,"line":5955},38,[4221,5957,5908],{"class":4723},[4221,5959,4150],{"class":4575},[4221,5961,4807],{"class":4732},[4221,5963,4736],{"class":4532},[4221,5965,4739],{"class":4571},[4221,5967,5689],{"class":4756},[4221,5969,5657],{"class":4536},[4221,5971,5544],{"class":4536},[4221,5973,3785],{"class":4756},[4221,5975,4968],{"class":4536},[4221,5977,5708],{"class":4934},[4221,5979,5711],{"class":4756},[4221,5981,4822],{"class":4571},[4221,5983,4850],{"class":4723},[4221,5985,4739],{"class":4571},[4221,5987,4760],{"class":4536},[4221,5989,3793],{"class":4756},[4221,5991,5287],{"class":4536},[4221,5993,4822],{"class":4571},[4221,5995,4863],{"class":4723},[4221,5997,4150],{"class":4575},[4221,5999,4825],{"class":4723},[4221,6001,6003,6006,6008],{"class":4223,"line":6002},39,[4221,6004,6005],{"class":4723},"          \u003C\u002F",[4221,6007,4147],{"class":4575},[4221,6009,4825],{"class":4723},[4221,6011,6013,6016],{"class":4223,"line":6012},40,[4221,6014,6015],{"class":4756},"        )",[4221,6017,4276],{"class":4571},[4221,6019,6021],{"class":4223,"line":6020},41,[4221,6022,6023],{"class":4723},"      \u002F>\n",[4221,6025,6027,6030,6032],{"class":4223,"line":6026},42,[4221,6028,6029],{"class":4723},"    \u003C\u002F",[4221,6031,4147],{"class":4575},[4221,6033,4825],{"class":4723},[4221,6035,6037],{"class":4223,"line":6036},43,[4221,6038,4893],{"class":4532},[4221,6040,6042],{"class":4223,"line":6041},44,[4221,6043,4276],{"class":4532},[4221,6045,6047],{"class":4223,"line":6046},45,[4221,6048,4246],{"emptyLinePlaceholder":4245},[4221,6050,6052,6054,6056,6058,6060,6062,6064],{"class":4223,"line":6051},46,[4221,6053,4616],{"class":4571},[4221,6055,4908],{"class":4619},[4221,6057,4911],{"class":4532},[4221,6059,4549],{"class":4536},[4221,6061,3793],{"class":4532},[4221,6063,4918],{"class":4706},[4221,6065,4921],{"class":4532},[4221,6067,6069,6072,6074,6077,6079,6081,6083,6085,6087,6090,6093],{"class":4223,"line":6068},47,[4221,6070,6071],{"class":4536},"  screen:",[4221,6073,4533],{"class":4532},[4221,6075,6076],{"class":4536},"flex:",[4221,6078,5383],{"class":4934},[4221,6080,3785],{"class":4532},[4221,6082,4931],{"class":4536},[4221,6084,4935],{"class":4934},[4221,6086,3785],{"class":4532},[4221,6088,6089],{"class":4536},"paddingTop:",[4221,6091,6092],{"class":4934}," 24",[4221,6094,4650],{"class":4532},[4221,6096,6098,6101,6103,6105,6108,6110,6112,6115,6117,6119,6122],{"class":4223,"line":6097},48,[4221,6099,6100],{"class":4536},"  h:",[4221,6102,4533],{"class":4532},[4221,6104,4968],{"class":4536},[4221,6106,6107],{"class":4934}," 20",[4221,6109,3785],{"class":4532},[4221,6111,4975],{"class":4536},[4221,6113,6114],{"class":4558}," '800'",[4221,6116,3785],{"class":4532},[4221,6118,5698],{"class":4536},[4221,6120,6121],{"class":4934}," 4",[4221,6123,4650],{"class":4532},[4221,6125,6127,6130,6132,6134,6136],{"class":4223,"line":6126},49,[4221,6128,6129],{"class":4536},"  list:",[4221,6131,4533],{"class":4532},[4221,6133,6076],{"class":4536},[4221,6135,5383],{"class":4934},[4221,6137,4650],{"class":4532},[4221,6139,6141,6144],{"class":4223,"line":6140},50,[4221,6142,6143],{"class":4536},"  row:",[4221,6145,4579],{"class":4532},[4221,6147,6149,6152,6154],{"class":4223,"line":6148},51,[4221,6150,6151],{"class":4536},"    borderWidth:",[4221,6153,5383],{"class":4934},[4221,6155,5391],{"class":4532},[4221,6157,6159,6162,6165],{"class":4223,"line":6158},52,[4221,6160,6161],{"class":4536},"    borderRadius:",[4221,6163,6164],{"class":4934}," 12",[4221,6166,5391],{"class":4532},[4221,6168,6170,6173,6176],{"class":4223,"line":6169},53,[4221,6171,6172],{"class":4536},"    padding:",[4221,6174,6175],{"class":4934}," 14",[4221,6177,5391],{"class":4532},[4221,6179,6181],{"class":4223,"line":6180},54,[4221,6182,6183],{"class":4532},"  },\n",[4221,6185,6187,6189,6191,6193,6195,6197,6199,6202,6204,6206,6208],{"class":4223,"line":6186},55,[4221,6188,4963],{"class":4536},[4221,6190,4533],{"class":4532},[4221,6192,4968],{"class":4536},[4221,6194,4935],{"class":4934},[4221,6196,3785],{"class":4532},[4221,6198,4975],{"class":4536},[4221,6200,6201],{"class":4558}," '700'",[4221,6203,3785],{"class":4532},[4221,6205,5698],{"class":4536},[4221,6207,6121],{"class":4934},[4221,6209,4650],{"class":4532},[4221,6211,6213],{"class":4223,"line":6212},56,[4221,6214,4985],{"class":4532},[3935,6216,6217,6220,6221,6223,6224,6227,6228,6230,6231,6234,6235,6234,6238,6240,6241,6243,6244,6247,6248,6250],{},[3770,6218,6219],{},"Правило обмеженої висоти (Bounded Height Constraint)."," Як і базовий контейнер ",[3750,6222,3752],{},", віртуалізований список вимагає ",[3770,6225,6226],{},"жорстко обмеженої геометрії батьківського контейнера"," вздовж осі прокручування (зазвичай через ",[3750,6229,5089],{}," у всьому ланцюжку: ",[3750,6232,6233],{},"Screen"," → ",[3750,6236,6237],{},"View-обгортка",[3750,6239,3784],{},"). Якщо список помістити в батьківський блок із необмеженою висотою (наприклад, усередину іншого вертикального ",[3750,6242,3752],{}," або в контейнер з автоматичною висотою ",[3750,6245,6246],{},"height: 'auto'","), ",[3750,6249,3784],{}," не зможе визначити межі фізичного вікна перегляду. У результаті він спробує розгорнути все своє полотно на повну висоту, змонтувавши абсолютно всі рядки одночасно, що повністю нівелює ефект віртуалізації.",[3960,6252],{},[3738,6254,6256,6258],{"id":6255},"keyextractor-алгоритм-узгодження-та-стабільність-ідентичності",[3750,6257,3843],{},": алгоритм узгодження та стабільність ідентичності",[3743,6260,6261,6262,6264,6265,6268,6269,6272],{},"У React Native механізм ",[3750,6263,3843],{}," відіграє вирішальну роль у функціонуванні алгоритму узгодження (",[3770,6266,6267],{},"Reconciliation Algorithm","). Під час кожної зміни структури або порядку масиву даних React порівнює попереднє дерево віртуальних вузлів із новим. Ключ (",[3750,6270,6271],{},"key",") є єдиним критерієм, за яким рушій визначає, чи конкретний елемент зберігся, змістився на нову позицію, був доданий або видалений.",[4212,6274,6276],{"className":4519,"code":6275,"language":4521,"meta":4217,"style":4217},"\u002F\u002F ❌ Категорично заборонено для динамічних або змінних списків:\nkeyExtractor={(_, index) => String(index)}\n\n\u002F\u002F ✅ Інженерний стандарт: унікальний та незмінний бізнес-ідентифікатор:\nkeyExtractor={(item) => item.id}\n",[3750,6277,6278,6284,6307,6311,6316],{"__ignoreMap":4217},[4221,6279,6280],{"class":4223,"line":4224},[4221,6281,6283],{"class":6282},"spJ8K","\u002F\u002F ❌ Категорично заборонено для динамічних або змінних списків:\n",[4221,6285,6286,6288,6291,6293,6296,6299,6301,6304],{"class":4223,"line":4230},[4221,6287,3843],{"class":4536},[4221,6289,6290],{"class":4532},"={(",[4221,6292,5334],{"class":4536},[4221,6294,6295],{"class":4532},", index) => ",[4221,6297,6298],{"class":4706},"String",[4221,6300,4757],{"class":4532},[4221,6302,6303],{"class":4536},"index",[4221,6305,6306],{"class":4532},")}\n",[4221,6308,6309],{"class":4223,"line":4236},[4221,6310,4246],{"emptyLinePlaceholder":4245},[4221,6312,6313],{"class":4223,"line":4242},[4221,6314,6315],{"class":6282},"\u002F\u002F ✅ Інженерний стандарт: унікальний та незмінний бізнес-ідентифікатор:\n",[4221,6317,6318,6320,6323,6325],{"class":4223,"line":4249},[4221,6319,3843],{"class":4536},[4221,6321,6322],{"class":4532},"={(item) => item.",[4221,6324,4774],{"class":4536},[4221,6326,4276],{"class":4532},[4131,6328,6330],{"id":6329},"чому-індекс-масиву-руйнує-роботу-списку","Чому індекс масиву руйнує роботу списку?",[3743,6332,6333,6334,6336],{},"Використання порядкового індексу (",[3750,6335,6303],{},") як ключа є критичним антипатерном, який призводить до трьох категорій дефектів:",[3814,6338,6339,6360,6366],{},[3817,6340,6341,6344,6345,3785,6348,6351,6352,6355,6356,6359],{},[3770,6342,6343],{},"Витік та зміщення внутрішнього стану (Component State Leakage)."," Якщо компонент рядка містить локальний стан (",[3750,6346,6347],{},"useState",[3750,6349,6350],{},"useRef",", стан розгорнутого акордеона або текст у полі вводу), цей стан прив'язується React до ",[3759,6353,6354],{},"ключа",", а не до ",[3759,6357,6358],{},"бізнес-об'єкта",". Якщо видалити перший елемент масиву (індекс 0), елемент з колишнім індексом 1 тепер отримує індекс 0. React вважає, що компонент залишився тим самим, і «успадковує» внутрішній стан видаленого елемента для нових даних.",[3817,6361,6362,6365],{},[3770,6363,6364],{},"Деградація продуктивності через масовий ререндер."," При додаванні нового елемента на початок списку індекси всіх наступних 100 елементів змінюються ($0 \\to 1$, $1 \\to 2$, ...). React змушений повністю перемалювати все вікно віртуалізації, замість того щоб виконати одну операцію вставки нативного представлення.",[3817,6367,6368,6371,6372,6374,6375,6378],{},[3770,6369,6370],{},"Руйнування рециклінгу та нативних анімацій."," У бібліотеках з рециклінгом (",[3750,6373,3792],{},") або при використанні ",[3750,6376,6377],{},"LayoutAnimation"," невірні ключі призводять до візуальних артефактів: мерехтіння зображень, некоректного прикріплення асинхронно завантажених текстур та стрибків скролу.",[4106,6380,6381,6389,6390,6393,6394,6396,6397,6399,6400,6403,6404,6406],{},[3770,6382,6383,6384,6386,6387,3793],{},"Заборона ручного встановлення ",[3750,6385,6271],{}," у ",[3750,6388,3840],{}," Ніколи не передавайте проп ",[3750,6391,6392],{},"key={item.id}"," на кореневий елемент, який повертається з функції ",[3750,6395,3840],{},". ",[3750,6398,3784],{}," автоматично огортає кожен рядок у внутрішній контейнер ",[3750,6401,6402],{},"CellRenderer"," і самостійно управляє ключами на основі результату функції ",[3750,6405,3843],{},". Ручне дублювання ключів створює конфлікти в дереві рендерингу та ламає механізми перевірки оновлень.",[3960,6408],{},[3738,6410,6412],{"id":6411},"порожній-стан-шапка-підвал-та-розділювачі","Порожній стан, шапка, підвал та розділювачі",[3743,6414,6415],{},"Професійно спроєктований список повинен коректно обробляти всі можливі стани інтерфейсу: початкове завантаження, відображення даних, стан відсутності результатів та структуроване обрамлення.",[4131,6417,6419],{"id":6418},"архітектурна-композиція-списку","Архітектурна композиція списку",[3814,6421,6422,6431,6442],{},[3817,6423,6424,6430],{},[3770,6425,6426,3803,6428,4997],{},[3750,6427,3857],{},[3750,6429,3861],{}," інтегруються безпосередньо в координату прокручування. Шапка з'являється над першим елементом, підвал — під останнім. Це ідеальне місце для пошукових панелей, банерів, фільтрів або індикаторів завантаження наступної сторінки.",[3817,6432,6433,6437,6438,6441],{},[3770,6434,6435,4997],{},[3750,6436,5064],{}," вирішує класичну проблему відступів між плитками. На відміну від статичного ",[3750,6439,6440],{},"marginVertical"," на картці, розділювач не рендериться перед нульовим елементом і після фінального, гарантуючи ідеальну посадку контенту в межах контейнера.",[3817,6443,6444,6448,6449,6451,6452,6454,6455,5104,6458,6461],{},[3770,6445,6446,4997],{},[3750,6447,3853],{}," монтується тоді й лише тоді, коли ",[3750,6450,5060],{}," (і при цьому ",[3750,6453,3837],{}," не є ",[3750,6456,6457],{},"null",[3750,6459,6460],{},"undefined","). Порожній стан — це не екранний збій, а важлива частина комунікації з користувачем (Empty State UX), що пояснює причину відсутності записів і пропонує дію (кнопка «Оновити», «Створити поїздку» тощо).",[5209,6463,6467],{"device":6464,"filename":6465,"height":6466,"title":3853},"android","ListEmpty.tsx",520,[4212,6468,6470],{"className":4519,"code":6469,"language":4521,"meta":4217,"style":4217},"import { useState } from 'react';\nimport {\n  FlatList,\n  Pressable,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Row = { id: string; title: string };\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const primary = dark ? '#3b82f6' : '#2563eb';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n\n  const [data, setData] = useState\u003CRow[]>([]);\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: bg }]}>\n      \u003CView style={styles.toolbar}>\n        \u003CPressable\n          onPress={() =>\n            setData((prev) => [\n              ...prev,\n              { id: String(Date.now()), title: `Книга ${prev.length + 1}` },\n            ])\n          }\n          style={[styles.btn, { backgroundColor: primary }]}\n        >\n          \u003CText style={styles.btnText}>Додати\u003C\u002FText>\n        \u003C\u002FPressable>\n        \u003CPressable\n          onPress={() => setData([])}\n          style={[styles.btn, { backgroundColor: surface, borderColor: border, borderWidth: 1 }]}\n        >\n          \u003CText style={{ color: text, fontWeight: '700' }}>Очистити\u003C\u002FText>\n        \u003C\u002FPressable>\n      \u003C\u002FView>\n\n      \u003CFlatList\n        style={{ flex: 1 }}\n        data={data}\n        keyExtractor={(item) => item.id}\n        contentContainerStyle={\n          data.length === 0 ? styles.emptyContainer : { paddingBottom: 16, gap: 8 }\n        }\n        ListHeaderComponent={\n          \u003CText style={[styles.h, { color: text }]}>Моя полиця\u003C\u002FText>\n        }\n        ListEmptyComponent={\n          \u003CView style={styles.empty}>\n            \u003CText style={[styles.emptyTitle, { color: text }]}>Порожньо\u003C\u002FText>\n            \u003CText style={{ color: muted, textAlign: 'center', lineHeight: 20 }}>\n              Натисніть «Додати» — з’явиться перший рядок. ListEmptyComponent\n              замінює «нічого».\n            \u003C\u002FText>\n          \u003C\u002FView>\n        }\n        renderItem={({ item }) => (\n          \u003CView style={[styles.row, { backgroundColor: surface, borderColor: border }]}>\n            \u003CText style={{ color: text, fontWeight: '600' }}>{item.title}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16, paddingTop: 24 },\n  toolbar: { flexDirection: 'row', gap: 8, marginBottom: 12 },\n  btn: {\n    paddingHorizontal: 14,\n    paddingVertical: 10,\n    borderRadius: 10,\n  },\n  btnText: { color: '#fff', fontWeight: '700' },\n  h: { fontSize: 18, fontWeight: '800', marginBottom: 12 },\n  emptyContainer: { flexGrow: 1 },\n  empty: {\n    flex: 1,\n    minHeight: 220,\n    alignItems: 'center',\n    justifyContent: 'center',\n    gap: 8,\n    paddingHorizontal: 12,\n  },\n  emptyTitle: { fontSize: 18, fontWeight: '700' },\n  row: {\n    borderWidth: 1,\n    borderRadius: 12,\n    padding: 14,\n  },\n});\n",[3750,6471,6472,6489,6495,6502,6509,6516,6523,6530,6537,6548,6552,6576,6580,6592,6608,6628,6648,6668,6688,6711,6731,6735,6762,6766,6772,6804,6827,6834,6849,6867,6876,6921,6926,6931,6959,6964,6996,7004,7010,7030,7069,7073,7112,7120,7128,7132,7138,7156,7168,7192,7201,7244,7249,7258,7299,7303,7312,7336,7379,7419,7425,7431,7441,7450,7455,7474,7513,7561,7570,7577,7582,7591,7596,7601,7606,7623,7648,7676,7684,7694,7705,7714,7719,7740,7766,7781,7789,7799,7810,7820,7830,7840,7849,7854,7874,7881,7890,7899,7908,7913],{"__ignoreMap":4217},[4221,6473,6474,6476,6478,6480,6482,6484,6487],{"class":4223,"line":4224},[4221,6475,4529],{"class":4528},[4221,6477,4533],{"class":4532},[4221,6479,6347],{"class":4536},[4221,6481,4552],{"class":4532},[4221,6483,4555],{"class":4528},[4221,6485,6486],{"class":4558}," 'react'",[4221,6488,4562],{"class":4532},[4221,6490,6491,6493],{"class":4223,"line":4230},[4221,6492,4529],{"class":4528},[4221,6494,4579],{"class":4532},[4221,6496,6497,6500],{"class":4223,"line":4236},[4221,6498,6499],{"class":4536},"  FlatList",[4221,6501,5391],{"class":4532},[4221,6503,6504,6507],{"class":4223,"line":4242},[4221,6505,6506],{"class":4536},"  Pressable",[4221,6508,5391],{"class":4532},[4221,6510,6511,6514],{"class":4223,"line":4249},[4221,6512,6513],{"class":4536},"  StyleSheet",[4221,6515,5391],{"class":4532},[4221,6517,6518,6521],{"class":4223,"line":4255},[4221,6519,6520],{"class":4536},"  Text",[4221,6522,5391],{"class":4532},[4221,6524,6525,6528],{"class":4223,"line":4261},[4221,6526,6527],{"class":4536},"  View",[4221,6529,5391],{"class":4532},[4221,6531,6532,6535],{"class":4223,"line":4267},[4221,6533,6534],{"class":4536},"  useColorScheme",[4221,6536,5391],{"class":4532},[4221,6538,6539,6542,6544,6546],{"class":4223,"line":4273},[4221,6540,6541],{"class":4532},"} ",[4221,6543,4555],{"class":4528},[4221,6545,4559],{"class":4558},[4221,6547,4562],{"class":4532},[4221,6549,6550],{"class":4223,"line":4279},[4221,6551,4246],{"emptyLinePlaceholder":4245},[4221,6553,6554,6556,6558,6560,6562,6564,6566,6568,6570,6572,6574],{"class":4223,"line":4284},[4221,6555,5261],{"class":4571},[4221,6557,5264],{"class":4575},[4221,6559,5267],{"class":4532},[4221,6561,4774],{"class":4536},[4221,6563,4587],{"class":4532},[4221,6565,4590],{"class":4575},[4221,6567,5276],{"class":4532},[4221,6569,4845],{"class":4536},[4221,6571,4587],{"class":4532},[4221,6573,4590],{"class":4575},[4221,6575,5294],{"class":4532},[4221,6577,6578],{"class":4223,"line":4290},[4221,6579,4246],{"emptyLinePlaceholder":4245},[4221,6581,6582,6584,6586,6588,6590],{"class":4223,"line":4296},[4221,6583,4700],{"class":4528},[4221,6585,5440],{"class":4528},[4221,6587,4703],{"class":4571},[4221,6589,5445],{"class":4706},[4221,6591,4710],{"class":4532},[4221,6593,6594,6596,6598,6600,6602,6604,6606],{"class":4223,"line":4302},[4221,6595,5452],{"class":4571},[4221,6597,5455],{"class":4619},[4221,6599,4911],{"class":4532},[4221,6601,5244],{"class":4706},[4221,6603,5462],{"class":4532},[4221,6605,5465],{"class":4558},[4221,6607,4562],{"class":4532},[4221,6609,6610,6612,6614,6616,6618,6620,6622,6624,6626],{"class":4223,"line":4308},[4221,6611,5452],{"class":4571},[4221,6613,5474],{"class":4619},[4221,6615,4911],{"class":4532},[4221,6617,5479],{"class":4536},[4221,6619,5413],{"class":4532},[4221,6621,5484],{"class":4558},[4221,6623,5419],{"class":4532},[4221,6625,5489],{"class":4558},[4221,6627,4562],{"class":4532},[4221,6629,6630,6632,6634,6636,6638,6640,6642,6644,6646],{"class":4223,"line":4314},[4221,6631,5452],{"class":4571},[4221,6633,5498],{"class":4619},[4221,6635,4911],{"class":4532},[4221,6637,5479],{"class":4536},[4221,6639,5413],{"class":4532},[4221,6641,5507],{"class":4558},[4221,6643,5419],{"class":4532},[4221,6645,5512],{"class":4558},[4221,6647,4562],{"class":4532},[4221,6649,6650,6652,6654,6656,6658,6660,6662,6664,6666],{"class":4223,"line":4319},[4221,6651,5452],{"class":4571},[4221,6653,5521],{"class":4619},[4221,6655,4911],{"class":4532},[4221,6657,5479],{"class":4536},[4221,6659,5413],{"class":4532},[4221,6661,5530],{"class":4558},[4221,6663,5419],{"class":4532},[4221,6665,5535],{"class":4558},[4221,6667,4562],{"class":4532},[4221,6669,6670,6672,6674,6676,6678,6680,6682,6684,6686],{"class":4223,"line":4324},[4221,6671,5452],{"class":4571},[4221,6673,5544],{"class":4619},[4221,6675,4911],{"class":4532},[4221,6677,5479],{"class":4536},[4221,6679,5413],{"class":4532},[4221,6681,5553],{"class":4558},[4221,6683,5419],{"class":4532},[4221,6685,5558],{"class":4558},[4221,6687,4562],{"class":4532},[4221,6689,6690,6692,6695,6697,6699,6701,6704,6706,6709],{"class":4223,"line":4330},[4221,6691,5452],{"class":4571},[4221,6693,6694],{"class":4619}," primary",[4221,6696,4911],{"class":4532},[4221,6698,5479],{"class":4536},[4221,6700,5413],{"class":4532},[4221,6702,6703],{"class":4558},"'#3b82f6'",[4221,6705,5419],{"class":4532},[4221,6707,6708],{"class":4558},"'#2563eb'",[4221,6710,4562],{"class":4532},[4221,6712,6713,6715,6717,6719,6721,6723,6725,6727,6729],{"class":4223,"line":4336},[4221,6714,5452],{"class":4571},[4221,6716,5567],{"class":4619},[4221,6718,4911],{"class":4532},[4221,6720,5479],{"class":4536},[4221,6722,5413],{"class":4532},[4221,6724,5576],{"class":4558},[4221,6726,5419],{"class":4532},[4221,6728,5581],{"class":4558},[4221,6730,4562],{"class":4532},[4221,6732,6733],{"class":4223,"line":4342},[4221,6734,4246],{"emptyLinePlaceholder":4245},[4221,6736,6737,6739,6742,6744,6746,6749,6752,6754,6757,6759],{"class":4223,"line":4348},[4221,6738,5452],{"class":4571},[4221,6740,6741],{"class":4532}," [",[4221,6743,3837],{"class":4619},[4221,6745,3785],{"class":4532},[4221,6747,6748],{"class":4619},"setData",[4221,6750,6751],{"class":4532},"] = ",[4221,6753,6347],{"class":4706},[4221,6755,6756],{"class":4532},"\u003C",[4221,6758,5310],{"class":4575},[4221,6760,6761],{"class":4532},"[]>([]);\n",[4221,6763,6764],{"class":4223,"line":4354},[4221,6765,4246],{"emptyLinePlaceholder":4245},[4221,6767,6768,6770],{"class":4223,"line":4360},[4221,6769,4715],{"class":4528},[4221,6771,4718],{"class":4532},[4221,6773,6774,6776,6778,6780,6782,6784,6786,6788,6790,6792,6794,6796,6798,6800,6802],{"class":4223,"line":4365},[4221,6775,4724],{"class":4723},[4221,6777,4147],{"class":4575},[4221,6779,4807],{"class":4732},[4221,6781,4736],{"class":4532},[4221,6783,4739],{"class":4571},[4221,6785,5608],{"class":4756},[4221,6787,4814],{"class":4536},[4221,6789,3793],{"class":4756},[4221,6791,5615],{"class":4536},[4221,6793,5618],{"class":4756},[4221,6795,5621],{"class":4536},[4221,6797,5474],{"class":4536},[4221,6799,5626],{"class":4756},[4221,6801,4822],{"class":4571},[4221,6803,4825],{"class":4723},[4221,6805,6806,6808,6810,6812,6814,6816,6818,6820,6823,6825],{"class":4223,"line":4371},[4221,6807,5635],{"class":4723},[4221,6809,4147],{"class":4575},[4221,6811,4807],{"class":4732},[4221,6813,4736],{"class":4532},[4221,6815,4739],{"class":4571},[4221,6817,4814],{"class":4536},[4221,6819,3793],{"class":4756},[4221,6821,6822],{"class":4536},"toolbar",[4221,6824,4822],{"class":4571},[4221,6826,4825],{"class":4723},[4221,6828,6829,6831],{"class":4223,"line":4377},[4221,6830,4802],{"class":4723},[4221,6832,6833],{"class":4575},"Pressable\n",[4221,6835,6836,6839,6841,6843,6846],{"class":4223,"line":4383},[4221,6837,6838],{"class":4732},"          onPress",[4221,6840,4736],{"class":4532},[4221,6842,4739],{"class":4571},[4221,6844,6845],{"class":4756},"() ",[4221,6847,6848],{"class":4571},"=>\n",[4221,6850,6851,6854,6857,6860,6862,6864],{"class":4223,"line":4389},[4221,6852,6853],{"class":4706},"            setData",[4221,6855,6856],{"class":4756},"((",[4221,6858,6859],{"class":4536},"prev",[4221,6861,4763],{"class":4756},[4221,6863,4766],{"class":4571},[4221,6865,6866],{"class":4756}," [\n",[4221,6868,6869,6872,6874],{"class":4223,"line":4395},[4221,6870,6871],{"class":4532},"              ...",[4221,6873,6859],{"class":4536},[4221,6875,5391],{"class":4756},[4221,6877,6878,6880,6882,6884,6886,6889,6891,6894,6897,6899,6902,6904,6906,6908,6911,6913,6915,6917,6919],{"class":4223,"line":4400},[4221,6879,5876],{"class":4756},[4221,6881,4636],{"class":4536},[4221,6883,5354],{"class":4706},[4221,6885,4757],{"class":4756},[4221,6887,6888],{"class":4536},"Date",[4221,6890,3793],{"class":4756},[4221,6892,6893],{"class":4706},"now",[4221,6895,6896],{"class":4756},"()), ",[4221,6898,4644],{"class":4536},[4221,6900,6901],{"class":4558}," `Книга ",[4221,6903,5375],{"class":4571},[4221,6905,6859],{"class":4536},[4221,6907,3793],{"class":4756},[4221,6909,6910],{"class":4536},"length",[4221,6912,5380],{"class":4532},[4221,6914,5383],{"class":4934},[4221,6916,4822],{"class":4571},[4221,6918,5388],{"class":4558},[4221,6920,4650],{"class":4756},[4221,6922,6923],{"class":4223,"line":4405},[4221,6924,6925],{"class":4756},"            ])\n",[4221,6927,6928],{"class":4223,"line":5860},[4221,6929,6930],{"class":4571},"          }\n",[4221,6932,6933,6936,6938,6940,6942,6944,6946,6949,6951,6953,6955,6957],{"class":4223,"line":5873},[4221,6934,6935],{"class":4732},"          style",[4221,6937,4736],{"class":4532},[4221,6939,4739],{"class":4571},[4221,6941,5608],{"class":4756},[4221,6943,4814],{"class":4536},[4221,6945,3793],{"class":4756},[4221,6947,6948],{"class":4536},"btn",[4221,6950,5618],{"class":4756},[4221,6952,5621],{"class":4536},[4221,6954,6694],{"class":4536},[4221,6956,5626],{"class":4756},[4221,6958,4276],{"class":4571},[4221,6960,6961],{"class":4223,"line":5891},[4221,6962,6963],{"class":4723},"        >\n",[4221,6965,6966,6968,6970,6972,6974,6976,6978,6980,6983,6985,6987,6990,6992,6994],{"class":4223,"line":5899},[4221,6967,4830],{"class":4723},[4221,6969,4150],{"class":4575},[4221,6971,4807],{"class":4732},[4221,6973,4736],{"class":4532},[4221,6975,4739],{"class":4571},[4221,6977,4814],{"class":4536},[4221,6979,3793],{"class":4756},[4221,6981,6982],{"class":4536},"btnText",[4221,6984,4822],{"class":4571},[4221,6986,4850],{"class":4723},[4221,6988,6989],{"class":4532},"Додати",[4221,6991,4863],{"class":4723},[4221,6993,4150],{"class":4575},[4221,6995,4825],{"class":4723},[4221,6997,6998,7000,7002],{"class":4223,"line":5905},[4221,6999,4872],{"class":4723},[4221,7001,4156],{"class":4575},[4221,7003,4825],{"class":4723},[4221,7005,7006,7008],{"class":4223,"line":5955},[4221,7007,4802],{"class":4723},[4221,7009,6833],{"class":4575},[4221,7011,7012,7014,7016,7018,7020,7022,7025,7028],{"class":4223,"line":6002},[4221,7013,6838],{"class":4732},[4221,7015,4736],{"class":4532},[4221,7017,4739],{"class":4571},[4221,7019,6845],{"class":4756},[4221,7021,4766],{"class":4571},[4221,7023,7024],{"class":4706}," setData",[4221,7026,7027],{"class":4756},"([])",[4221,7029,4276],{"class":4571},[4221,7031,7032,7034,7036,7038,7040,7042,7044,7046,7048,7050,7052,7054,7056,7058,7060,7063,7065,7067],{"class":4223,"line":6012},[4221,7033,6935],{"class":4732},[4221,7035,4736],{"class":4532},[4221,7037,4739],{"class":4571},[4221,7039,5608],{"class":4756},[4221,7041,4814],{"class":4536},[4221,7043,3793],{"class":4756},[4221,7045,6948],{"class":4536},[4221,7047,5618],{"class":4756},[4221,7049,5621],{"class":4536},[4221,7051,5498],{"class":4536},[4221,7053,3785],{"class":4756},[4221,7055,4953],{"class":4536},[4221,7057,5567],{"class":4536},[4221,7059,3785],{"class":4756},[4221,7061,7062],{"class":4536},"borderWidth:",[4221,7064,5383],{"class":4934},[4221,7066,5626],{"class":4756},[4221,7068,4276],{"class":4571},[4221,7070,7071],{"class":4223,"line":6020},[4221,7072,6963],{"class":4723},[4221,7074,7075,7077,7079,7081,7083,7085,7087,7089,7091,7093,7095,7097,7099,7101,7103,7106,7108,7110],{"class":4223,"line":6026},[4221,7076,4830],{"class":4723},[4221,7078,4150],{"class":4575},[4221,7080,4807],{"class":4732},[4221,7082,4736],{"class":4532},[4221,7084,4739],{"class":4571},[4221,7086,5689],{"class":4756},[4221,7088,5657],{"class":4536},[4221,7090,5521],{"class":4536},[4221,7092,3785],{"class":4756},[4221,7094,4975],{"class":4536},[4221,7096,6201],{"class":4558},[4221,7098,5711],{"class":4756},[4221,7100,4822],{"class":4571},[4221,7102,4850],{"class":4723},[4221,7104,7105],{"class":4532},"Очистити",[4221,7107,4863],{"class":4723},[4221,7109,4150],{"class":4575},[4221,7111,4825],{"class":4723},[4221,7113,7114,7116,7118],{"class":4223,"line":6036},[4221,7115,4872],{"class":4723},[4221,7117,4156],{"class":4575},[4221,7119,4825],{"class":4723},[4221,7121,7122,7124,7126],{"class":4223,"line":6041},[4221,7123,5725],{"class":4723},[4221,7125,4147],{"class":4575},[4221,7127,4825],{"class":4723},[4221,7129,7130],{"class":4223,"line":6046},[4221,7131,4246],{"emptyLinePlaceholder":4245},[4221,7133,7134,7136],{"class":4223,"line":6051},[4221,7135,5635],{"class":4723},[4221,7137,4727],{"class":4575},[4221,7139,7140,7142,7144,7146,7148,7150,7152,7154],{"class":4223,"line":6068},[4221,7141,5740],{"class":4732},[4221,7143,4736],{"class":4532},[4221,7145,4739],{"class":4571},[4221,7147,5689],{"class":4756},[4221,7149,6076],{"class":4536},[4221,7151,5383],{"class":4934},[4221,7153,5711],{"class":4756},[4221,7155,4276],{"class":4571},[4221,7157,7158,7160,7162,7164,7166],{"class":4223,"line":6097},[4221,7159,5758],{"class":4732},[4221,7161,4736],{"class":4532},[4221,7163,4739],{"class":4571},[4221,7165,3837],{"class":4536},[4221,7167,4276],{"class":4571},[4221,7169,7170,7172,7174,7176,7178,7180,7182,7184,7186,7188,7190],{"class":4223,"line":6126},[4221,7171,5772],{"class":4732},[4221,7173,4736],{"class":4532},[4221,7175,4739],{"class":4571},[4221,7177,4757],{"class":4756},[4221,7179,4760],{"class":4536},[4221,7181,4763],{"class":4756},[4221,7183,4766],{"class":4571},[4221,7185,4769],{"class":4536},[4221,7187,3793],{"class":4756},[4221,7189,4774],{"class":4536},[4221,7191,4276],{"class":4571},[4221,7193,7194,7196,7198],{"class":4223,"line":6140},[4221,7195,5797],{"class":4732},[4221,7197,4736],{"class":4532},[4221,7199,7200],{"class":4571},"{\n",[4221,7202,7203,7206,7208,7210,7213,7216,7219,7221,7223,7226,7229,7231,7233,7235,7237,7239,7241],{"class":4223,"line":6148},[4221,7204,7205],{"class":4536},"          data",[4221,7207,3793],{"class":4756},[4221,7209,6910],{"class":4536},[4221,7211,7212],{"class":4532}," ===",[4221,7214,7215],{"class":4934}," 0",[4221,7217,7218],{"class":4532}," ?",[4221,7220,4908],{"class":4536},[4221,7222,3793],{"class":4756},[4221,7224,7225],{"class":4536},"emptyContainer",[4221,7227,7228],{"class":4532}," :",[4221,7230,4533],{"class":4756},[4221,7232,5806],{"class":4536},[4221,7234,4935],{"class":4934},[4221,7236,3785],{"class":4756},[4221,7238,5813],{"class":4536},[4221,7240,5701],{"class":4934},[4221,7242,7243],{"class":4756}," }\n",[4221,7245,7246],{"class":4223,"line":6158},[4221,7247,7248],{"class":4571},"        }\n",[4221,7250,7251,7254,7256],{"class":4223,"line":6169},[4221,7252,7253],{"class":4732},"        ListHeaderComponent",[4221,7255,4736],{"class":4532},[4221,7257,7200],{"class":4571},[4221,7259,7260,7262,7264,7266,7268,7270,7272,7274,7276,7278,7280,7282,7284,7286,7288,7290,7293,7295,7297],{"class":4223,"line":6180},[4221,7261,4830],{"class":4723},[4221,7263,4150],{"class":4575},[4221,7265,4807],{"class":4732},[4221,7267,4736],{"class":4532},[4221,7269,4739],{"class":4571},[4221,7271,5608],{"class":4756},[4221,7273,4814],{"class":4536},[4221,7275,3793],{"class":4756},[4221,7277,5652],{"class":4536},[4221,7279,5618],{"class":4756},[4221,7281,5657],{"class":4536},[4221,7283,5521],{"class":4536},[4221,7285,5626],{"class":4756},[4221,7287,4822],{"class":4571},[4221,7289,4850],{"class":4723},[4221,7291,7292],{"class":4756},"Моя полиця",[4221,7294,4863],{"class":4723},[4221,7296,4150],{"class":4575},[4221,7298,4825],{"class":4723},[4221,7300,7301],{"class":4223,"line":6186},[4221,7302,7248],{"class":4571},[4221,7304,7305,7308,7310],{"class":4223,"line":6212},[4221,7306,7307],{"class":4732},"        ListEmptyComponent",[4221,7309,4736],{"class":4532},[4221,7311,7200],{"class":4571},[4221,7313,7315,7317,7319,7321,7323,7325,7327,7329,7332,7334],{"class":4223,"line":7314},57,[4221,7316,4830],{"class":4723},[4221,7318,4147],{"class":4575},[4221,7320,4807],{"class":4732},[4221,7322,4736],{"class":4532},[4221,7324,4739],{"class":4571},[4221,7326,4814],{"class":4536},[4221,7328,3793],{"class":4756},[4221,7330,7331],{"class":4536},"empty",[4221,7333,4822],{"class":4571},[4221,7335,4825],{"class":4723},[4221,7337,7339,7341,7343,7345,7347,7349,7351,7353,7355,7358,7360,7362,7364,7366,7368,7370,7373,7375,7377],{"class":4223,"line":7338},58,[4221,7340,5908],{"class":4723},[4221,7342,4150],{"class":4575},[4221,7344,4807],{"class":4732},[4221,7346,4736],{"class":4532},[4221,7348,4739],{"class":4571},[4221,7350,5608],{"class":4756},[4221,7352,4814],{"class":4536},[4221,7354,3793],{"class":4756},[4221,7356,7357],{"class":4536},"emptyTitle",[4221,7359,5618],{"class":4756},[4221,7361,5657],{"class":4536},[4221,7363,5521],{"class":4536},[4221,7365,5626],{"class":4756},[4221,7367,4822],{"class":4571},[4221,7369,4850],{"class":4723},[4221,7371,7372],{"class":4756},"Порожньо",[4221,7374,4863],{"class":4723},[4221,7376,4150],{"class":4575},[4221,7378,4825],{"class":4723},[4221,7380,7382,7384,7386,7388,7390,7392,7394,7396,7398,7400,7403,7406,7408,7411,7413,7415,7417],{"class":4223,"line":7381},59,[4221,7383,5908],{"class":4723},[4221,7385,4150],{"class":4575},[4221,7387,4807],{"class":4732},[4221,7389,4736],{"class":4532},[4221,7391,4739],{"class":4571},[4221,7393,5689],{"class":4756},[4221,7395,5657],{"class":4536},[4221,7397,5544],{"class":4536},[4221,7399,3785],{"class":4756},[4221,7401,7402],{"class":4536},"textAlign:",[4221,7404,7405],{"class":4558}," 'center'",[4221,7407,3785],{"class":4756},[4221,7409,7410],{"class":4536},"lineHeight:",[4221,7412,6107],{"class":4934},[4221,7414,5711],{"class":4756},[4221,7416,4822],{"class":4571},[4221,7418,4825],{"class":4723},[4221,7420,7422],{"class":4223,"line":7421},60,[4221,7423,7424],{"class":4756},"              Натисніть «Додати» — з’явиться перший рядок. ListEmptyComponent\n",[4221,7426,7428],{"class":4223,"line":7427},61,[4221,7429,7430],{"class":4756},"              замінює «нічого».\n",[4221,7432,7434,7437,7439],{"class":4223,"line":7433},62,[4221,7435,7436],{"class":4723},"            \u003C\u002F",[4221,7438,4150],{"class":4575},[4221,7440,4825],{"class":4723},[4221,7442,7444,7446,7448],{"class":4223,"line":7443},63,[4221,7445,6005],{"class":4723},[4221,7447,4147],{"class":4575},[4221,7449,4825],{"class":4723},[4221,7451,7453],{"class":4223,"line":7452},64,[4221,7454,7248],{"class":4571},[4221,7456,7458,7460,7462,7464,7466,7468,7470,7472],{"class":4223,"line":7457},65,[4221,7459,5824],{"class":4732},[4221,7461,4736],{"class":4532},[4221,7463,4739],{"class":4571},[4221,7465,4788],{"class":4756},[4221,7467,4760],{"class":4536},[4221,7469,4793],{"class":4756},[4221,7471,4766],{"class":4571},[4221,7473,4718],{"class":4756},[4221,7475,7477,7479,7481,7483,7485,7487,7489,7491,7493,7495,7497,7499,7501,7503,7505,7507,7509,7511],{"class":4223,"line":7476},66,[4221,7478,4830],{"class":4723},[4221,7480,4147],{"class":4575},[4221,7482,4807],{"class":4732},[4221,7484,4736],{"class":4532},[4221,7486,4739],{"class":4571},[4221,7488,5608],{"class":4756},[4221,7490,4814],{"class":4536},[4221,7492,3793],{"class":4756},[4221,7494,5868],{"class":4536},[4221,7496,5618],{"class":4756},[4221,7498,5621],{"class":4536},[4221,7500,5498],{"class":4536},[4221,7502,3785],{"class":4756},[4221,7504,4953],{"class":4536},[4221,7506,5567],{"class":4536},[4221,7508,5626],{"class":4756},[4221,7510,4822],{"class":4571},[4221,7512,4825],{"class":4723},[4221,7514,7516,7518,7520,7522,7524,7526,7528,7530,7532,7534,7536,7539,7541,7543,7545,7547,7549,7551,7553,7555,7557,7559],{"class":4223,"line":7515},67,[4221,7517,5908],{"class":4723},[4221,7519,4150],{"class":4575},[4221,7521,4807],{"class":4732},[4221,7523,4736],{"class":4532},[4221,7525,4739],{"class":4571},[4221,7527,5689],{"class":4756},[4221,7529,5657],{"class":4536},[4221,7531,5521],{"class":4536},[4221,7533,3785],{"class":4756},[4221,7535,4975],{"class":4536},[4221,7537,7538],{"class":4558}," '600'",[4221,7540,5711],{"class":4756},[4221,7542,4822],{"class":4571},[4221,7544,4850],{"class":4723},[4221,7546,4739],{"class":4571},[4221,7548,4760],{"class":4536},[4221,7550,3793],{"class":4756},[4221,7552,4845],{"class":4536},[4221,7554,4822],{"class":4571},[4221,7556,4863],{"class":4723},[4221,7558,4150],{"class":4575},[4221,7560,4825],{"class":4723},[4221,7562,7564,7566,7568],{"class":4223,"line":7563},68,[4221,7565,6005],{"class":4723},[4221,7567,4147],{"class":4575},[4221,7569,4825],{"class":4723},[4221,7571,7573,7575],{"class":4223,"line":7572},69,[4221,7574,6015],{"class":4756},[4221,7576,4276],{"class":4571},[4221,7578,7580],{"class":4223,"line":7579},70,[4221,7581,6023],{"class":4723},[4221,7583,7585,7587,7589],{"class":4223,"line":7584},71,[4221,7586,6029],{"class":4723},[4221,7588,4147],{"class":4575},[4221,7590,4825],{"class":4723},[4221,7592,7594],{"class":4223,"line":7593},72,[4221,7595,4893],{"class":4532},[4221,7597,7599],{"class":4223,"line":7598},73,[4221,7600,4276],{"class":4532},[4221,7602,7604],{"class":4223,"line":7603},74,[4221,7605,4246],{"emptyLinePlaceholder":4245},[4221,7607,7609,7611,7613,7615,7617,7619,7621],{"class":4223,"line":7608},75,[4221,7610,4616],{"class":4571},[4221,7612,4908],{"class":4619},[4221,7614,4911],{"class":4532},[4221,7616,4549],{"class":4536},[4221,7618,3793],{"class":4532},[4221,7620,4918],{"class":4706},[4221,7622,4921],{"class":4532},[4221,7624,7626,7628,7630,7632,7634,7636,7638,7640,7642,7644,7646],{"class":4223,"line":7625},76,[4221,7627,6071],{"class":4536},[4221,7629,4533],{"class":4532},[4221,7631,6076],{"class":4536},[4221,7633,5383],{"class":4934},[4221,7635,3785],{"class":4532},[4221,7637,4931],{"class":4536},[4221,7639,4935],{"class":4934},[4221,7641,3785],{"class":4532},[4221,7643,6089],{"class":4536},[4221,7645,6092],{"class":4934},[4221,7647,4650],{"class":4532},[4221,7649,7651,7654,7656,7659,7662,7664,7666,7668,7670,7672,7674],{"class":4223,"line":7650},77,[4221,7652,7653],{"class":4536},"  toolbar:",[4221,7655,4533],{"class":4532},[4221,7657,7658],{"class":4536},"flexDirection:",[4221,7660,7661],{"class":4558}," 'row'",[4221,7663,3785],{"class":4532},[4221,7665,5813],{"class":4536},[4221,7667,5701],{"class":4934},[4221,7669,3785],{"class":4532},[4221,7671,5698],{"class":4536},[4221,7673,6164],{"class":4934},[4221,7675,4650],{"class":4532},[4221,7677,7679,7682],{"class":4223,"line":7678},78,[4221,7680,7681],{"class":4536},"  btn:",[4221,7683,4579],{"class":4532},[4221,7685,7687,7690,7692],{"class":4223,"line":7686},79,[4221,7688,7689],{"class":4536},"    paddingHorizontal:",[4221,7691,6175],{"class":4934},[4221,7693,5391],{"class":4532},[4221,7695,7697,7700,7703],{"class":4223,"line":7696},80,[4221,7698,7699],{"class":4536},"    paddingVertical:",[4221,7701,7702],{"class":4934}," 10",[4221,7704,5391],{"class":4532},[4221,7706,7708,7710,7712],{"class":4223,"line":7707},81,[4221,7709,6161],{"class":4536},[4221,7711,7702],{"class":4934},[4221,7713,5391],{"class":4532},[4221,7715,7717],{"class":4223,"line":7716},82,[4221,7718,6183],{"class":4532},[4221,7720,7722,7725,7727,7729,7732,7734,7736,7738],{"class":4223,"line":7721},83,[4221,7723,7724],{"class":4536},"  btnText:",[4221,7726,4533],{"class":4532},[4221,7728,5657],{"class":4536},[4221,7730,7731],{"class":4558}," '#fff'",[4221,7733,3785],{"class":4532},[4221,7735,4975],{"class":4536},[4221,7737,6201],{"class":4558},[4221,7739,4650],{"class":4532},[4221,7741,7743,7745,7747,7749,7752,7754,7756,7758,7760,7762,7764],{"class":4223,"line":7742},84,[4221,7744,6100],{"class":4536},[4221,7746,4533],{"class":4532},[4221,7748,4968],{"class":4536},[4221,7750,7751],{"class":4934}," 18",[4221,7753,3785],{"class":4532},[4221,7755,4975],{"class":4536},[4221,7757,6114],{"class":4558},[4221,7759,3785],{"class":4532},[4221,7761,5698],{"class":4536},[4221,7763,6164],{"class":4934},[4221,7765,4650],{"class":4532},[4221,7767,7769,7772,7774,7777,7779],{"class":4223,"line":7768},85,[4221,7770,7771],{"class":4536},"  emptyContainer:",[4221,7773,4533],{"class":4532},[4221,7775,7776],{"class":4536},"flexGrow:",[4221,7778,5383],{"class":4934},[4221,7780,4650],{"class":4532},[4221,7782,7784,7787],{"class":4223,"line":7783},86,[4221,7785,7786],{"class":4536},"  empty:",[4221,7788,4579],{"class":4532},[4221,7790,7792,7795,7797],{"class":4223,"line":7791},87,[4221,7793,7794],{"class":4536},"    flex:",[4221,7796,5383],{"class":4934},[4221,7798,5391],{"class":4532},[4221,7800,7802,7805,7808],{"class":4223,"line":7801},88,[4221,7803,7804],{"class":4536},"    minHeight:",[4221,7806,7807],{"class":4934}," 220",[4221,7809,5391],{"class":4532},[4221,7811,7813,7816,7818],{"class":4223,"line":7812},89,[4221,7814,7815],{"class":4536},"    alignItems:",[4221,7817,7405],{"class":4558},[4221,7819,5391],{"class":4532},[4221,7821,7823,7826,7828],{"class":4223,"line":7822},90,[4221,7824,7825],{"class":4536},"    justifyContent:",[4221,7827,7405],{"class":4558},[4221,7829,5391],{"class":4532},[4221,7831,7833,7836,7838],{"class":4223,"line":7832},91,[4221,7834,7835],{"class":4536},"    gap:",[4221,7837,5701],{"class":4934},[4221,7839,5391],{"class":4532},[4221,7841,7843,7845,7847],{"class":4223,"line":7842},92,[4221,7844,7689],{"class":4536},[4221,7846,6164],{"class":4934},[4221,7848,5391],{"class":4532},[4221,7850,7852],{"class":4223,"line":7851},93,[4221,7853,6183],{"class":4532},[4221,7855,7857,7860,7862,7864,7866,7868,7870,7872],{"class":4223,"line":7856},94,[4221,7858,7859],{"class":4536},"  emptyTitle:",[4221,7861,4533],{"class":4532},[4221,7863,4968],{"class":4536},[4221,7865,7751],{"class":4934},[4221,7867,3785],{"class":4532},[4221,7869,4975],{"class":4536},[4221,7871,6201],{"class":4558},[4221,7873,4650],{"class":4532},[4221,7875,7877,7879],{"class":4223,"line":7876},95,[4221,7878,6143],{"class":4536},[4221,7880,4579],{"class":4532},[4221,7882,7884,7886,7888],{"class":4223,"line":7883},96,[4221,7885,6151],{"class":4536},[4221,7887,5383],{"class":4934},[4221,7889,5391],{"class":4532},[4221,7891,7893,7895,7897],{"class":4223,"line":7892},97,[4221,7894,6161],{"class":4536},[4221,7896,6164],{"class":4934},[4221,7898,5391],{"class":4532},[4221,7900,7902,7904,7906],{"class":4223,"line":7901},98,[4221,7903,6172],{"class":4536},[4221,7905,6175],{"class":4934},[4221,7907,5391],{"class":4532},[4221,7909,7911],{"class":4223,"line":7910},99,[4221,7912,6183],{"class":4532},[4221,7914,7916],{"class":4223,"line":7915},100,[4221,7917,4985],{"class":4532},[3935,7919,7920,7925,7926,7928,7929,7932,7933,7935,7936,7938],{},[3770,7921,7922,7923,3793],{},"Центрування порожнього стану через ",[3750,7924,5082],{}," Типова проблема верстки: при відсутності даних ",[3750,7927,3853],{}," «прилипає» до верхнього краю екрана, оскільки висота внутрішнього полотна списку дорівнює нулю. Щоб розмістити порожній стан по центру екрана, задайте ",[3750,7930,7931],{},"contentContainerStyle={{ flexGrow: 1 }}"," (динамічно або постійно). На відміну від ",[3750,7934,5089],{},", який жорстко фіксує розмір і ламає прокручування при появі довгих даних, властивість ",[3750,7937,5082],{}," дозволяє контейнеру займати щонайменше 100% висоти батька, якщо контенту мало, але вільно розширюватися далі, коли з'являються записи.",[3960,7940],{},[3738,7942,7944,7945,7947],{"id":7943},"мультиколонкові-сітки-grids-numcolumns-та-динамічна-перебудова","Мультиколонкові сітки (Grids): ",[3750,7946,5172],{}," та динамічна перебудова",[3743,7949,7950,7951,7953,7954,3793],{},"У React Native немає вбудованого аналога CSS Grid. Проте ",[3750,7952,3784],{}," надає нативну підтримку сіткових розкладок через параметр ",[3770,7955,7956],{},[3750,7957,5172],{},[3743,7959,7960,7961,7963],{},"Коли ",[3750,7962,5181],{},", список групує елементи в горизонтальні рядки і застосовує до кожного такого рядка додатковий контейнер-обгортку:",[4212,7965,7967],{"className":4519,"code":7966,"language":4521,"meta":4217,"style":4217},"\u003CFlatList\n  data={photos}\n  keyExtractor={(item) => item.id}\n  numColumns={2}\n  columnWrapperStyle={styles.rowWrapper}\n  renderItem={({ item }) => \u003CPhotoCard photo={item} \u002F>}\n\u002F>\n",[3750,7968,7969,7975,7989,8014,8027,8045,8084],{"__ignoreMap":4217},[4221,7970,7971,7973],{"class":4223,"line":4224},[4221,7972,6756],{"class":4723},[4221,7974,4727],{"class":4575},[4221,7976,7977,7980,7982,7984,7987],{"class":4223,"line":4230},[4221,7978,7979],{"class":4732},"  data",[4221,7981,4736],{"class":4532},[4221,7983,4739],{"class":4571},[4221,7985,7986],{"class":4536},"photos",[4221,7988,4276],{"class":4571},[4221,7990,7991,7994,7996,7998,8000,8002,8004,8006,8008,8010,8012],{"class":4223,"line":4236},[4221,7992,7993],{"class":4732},"  keyExtractor",[4221,7995,4736],{"class":4532},[4221,7997,4739],{"class":4571},[4221,7999,4757],{"class":4756},[4221,8001,4760],{"class":4536},[4221,8003,4763],{"class":4756},[4221,8005,4766],{"class":4571},[4221,8007,4769],{"class":4536},[4221,8009,3793],{"class":4756},[4221,8011,4774],{"class":4536},[4221,8013,4276],{"class":4571},[4221,8015,8016,8019,8021,8023,8025],{"class":4223,"line":4242},[4221,8017,8018],{"class":4732},"  numColumns",[4221,8020,4736],{"class":4532},[4221,8022,4739],{"class":4571},[4221,8024,5405],{"class":4934},[4221,8026,4276],{"class":4571},[4221,8028,8029,8032,8034,8036,8038,8040,8043],{"class":4223,"line":4249},[4221,8030,8031],{"class":4732},"  columnWrapperStyle",[4221,8033,4736],{"class":4532},[4221,8035,4739],{"class":4571},[4221,8037,4814],{"class":4536},[4221,8039,3793],{"class":4756},[4221,8041,8042],{"class":4536},"rowWrapper",[4221,8044,4276],{"class":4571},[4221,8046,8047,8050,8052,8054,8056,8058,8060,8062,8065,8068,8071,8073,8075,8077,8079,8082],{"class":4223,"line":4255},[4221,8048,8049],{"class":4732},"  renderItem",[4221,8051,4736],{"class":4532},[4221,8053,4739],{"class":4571},[4221,8055,4788],{"class":4756},[4221,8057,4760],{"class":4536},[4221,8059,4793],{"class":4756},[4221,8061,4766],{"class":4571},[4221,8063,8064],{"class":4723}," \u003C",[4221,8066,8067],{"class":4575},"PhotoCard",[4221,8069,8070],{"class":4732}," photo",[4221,8072,4736],{"class":4532},[4221,8074,4739],{"class":4571},[4221,8076,4760],{"class":4536},[4221,8078,4822],{"class":4571},[4221,8080,8081],{"class":4723}," \u002F>",[4221,8083,4276],{"class":4571},[4221,8085,8086],{"class":4223,"line":4261},[4221,8087,8088],{"class":4723},"\u002F>\n",[4212,8090,8094],{"className":8091,"code":8092,"language":8093,"meta":4217,"style":4217},"language-ts shiki shiki-themes light-plus dark-plus dark-plus","const styles = StyleSheet.create({\n  rowWrapper: {\n    justifyContent: 'space-between',\n    gap: 12,\n    marginBottom: 12,\n  },\n});\n","ts",[3750,8095,8096,8112,8119,8128,8136,8145,8149],{"__ignoreMap":4217},[4221,8097,8098,8100,8102,8104,8106,8108,8110],{"class":4223,"line":4224},[4221,8099,4616],{"class":4571},[4221,8101,4908],{"class":4619},[4221,8103,4911],{"class":4532},[4221,8105,4549],{"class":4536},[4221,8107,3793],{"class":4532},[4221,8109,4918],{"class":4706},[4221,8111,4921],{"class":4532},[4221,8113,8114,8117],{"class":4223,"line":4230},[4221,8115,8116],{"class":4536},"  rowWrapper:",[4221,8118,4579],{"class":4532},[4221,8120,8121,8123,8126],{"class":4223,"line":4236},[4221,8122,7825],{"class":4536},[4221,8124,8125],{"class":4558}," 'space-between'",[4221,8127,5391],{"class":4532},[4221,8129,8130,8132,8134],{"class":4223,"line":4242},[4221,8131,7835],{"class":4536},[4221,8133,6164],{"class":4934},[4221,8135,5391],{"class":4532},[4221,8137,8138,8141,8143],{"class":4223,"line":4249},[4221,8139,8140],{"class":4536},"    marginBottom:",[4221,8142,6164],{"class":4934},[4221,8144,5391],{"class":4532},[4221,8146,8147],{"class":4223,"line":4255},[4221,8148,6183],{"class":4532},[4221,8150,8151],{"class":4223,"line":4261},[4221,8152,4985],{"class":4532},[4106,8154,8155,8158,8159,8161,8162,8164,8165,8168,8169,8171,8172,8175,8176,3793],{},[3770,8156,8157],{},"Динамічна зміна кількості колонок."," Рушій ",[3750,8160,3784],{}," не підтримує зміну ",[3750,8163,5172],{}," «на льоту» без скидання внутрішнього стану рендерингу (виникає виняток: ",[3759,8166,8167],{},"«Changing numColumns on the fly is not supported without changing the key prop»","). Якщо ваш інтерфейс дозволяє перемикати вигляд між 1 та 2 колонками (наприклад, перемикач «Список \u002F Сітка»), обов'язково прив'яжіть ",[3750,8170,5172],{}," до ключа самого списку: ",[3750,8173,8174],{},"\u003CFlatList key={","grid-${numColumns}",[3750,8177,8178],{},"} numColumns={numColumns} ... \u002F>",[3960,8180],{},[3738,8182,8184,8185],{"id":8183},"імперативне-управління-скролом-робота-з-ref","Імперативне управління скролом: робота з ",[3750,8186,8187],{},"ref",[3743,8189,8190],{},"У реальних мобільних сценаріях часто виникає потреба програмного переміщення до певної точки списку: кнопка «Повернутися вгору» (Scroll to top), перехід до непрочитаного повідомлення в чаті або синхронізація з календарем.",[3743,8192,8193,8194,8196,8197,4997],{},"Для цього використовується ",[3750,8195,8187],{},"-посилання на екземпляр ",[3750,8198,3784],{},[4212,8200,8202],{"className":4519,"code":8201,"language":4521,"meta":4217,"style":4217},"import { useRef } from 'react';\nimport { FlatList } from 'react-native';\n\nexport function TripListScreen() {\n  const listRef = useRef\u003CFlatList\u003CTrip>>(null);\n\n  const scrollToTop = () => {\n    listRef.current?.scrollToOffset({ offset: 0, animated: true });\n  };\n\n  const scrollToTripIndex = (index: number) => {\n    listRef.current?.scrollToIndex({\n      index,\n      animated: true,\n      viewPosition: 0.5, \u002F\u002F 0 = зверху, 0.5 = по центру, 1 = знизу\n    });\n  };\n\n  return \u003CFlatList ref={listRef} data={trips} ... \u002F>;\n}\n",[3750,8203,8204,8220,8236,8240,8251,8279,8283,8297,8331,8336,8340,8363,8378,8385,8394,8407,8412,8416,8420,8460],{"__ignoreMap":4217},[4221,8205,8206,8208,8210,8212,8214,8216,8218],{"class":4223,"line":4224},[4221,8207,4529],{"class":4528},[4221,8209,4533],{"class":4532},[4221,8211,6350],{"class":4536},[4221,8213,4552],{"class":4532},[4221,8215,4555],{"class":4528},[4221,8217,6486],{"class":4558},[4221,8219,4562],{"class":4532},[4221,8221,8222,8224,8226,8228,8230,8232,8234],{"class":4223,"line":4230},[4221,8223,4529],{"class":4528},[4221,8225,4533],{"class":4532},[4221,8227,3784],{"class":4536},[4221,8229,4552],{"class":4532},[4221,8231,4555],{"class":4528},[4221,8233,4559],{"class":4558},[4221,8235,4562],{"class":4532},[4221,8237,8238],{"class":4223,"line":4236},[4221,8239,4246],{"emptyLinePlaceholder":4245},[4221,8241,8242,8244,8246,8249],{"class":4223,"line":4242},[4221,8243,4700],{"class":4528},[4221,8245,4703],{"class":4571},[4221,8247,8248],{"class":4706}," TripListScreen",[4221,8250,4710],{"class":4532},[4221,8252,8253,8255,8258,8260,8262,8264,8266,8268,8271,8274,8276],{"class":4223,"line":4249},[4221,8254,5452],{"class":4571},[4221,8256,8257],{"class":4619}," listRef",[4221,8259,4911],{"class":4532},[4221,8261,6350],{"class":4706},[4221,8263,6756],{"class":4532},[4221,8265,3784],{"class":4575},[4221,8267,6756],{"class":4532},[4221,8269,8270],{"class":4575},"Trip",[4221,8272,8273],{"class":4532},">>(",[4221,8275,6457],{"class":4571},[4221,8277,8278],{"class":4532},");\n",[4221,8280,8281],{"class":4223,"line":4255},[4221,8282,4246],{"emptyLinePlaceholder":4245},[4221,8284,8285,8287,8290,8293,8295],{"class":4223,"line":4261},[4221,8286,5452],{"class":4571},[4221,8288,8289],{"class":4706}," scrollToTop",[4221,8291,8292],{"class":4532}," = () ",[4221,8294,4766],{"class":4571},[4221,8296,4579],{"class":4532},[4221,8298,8299,8302,8304,8307,8310,8313,8315,8318,8320,8322,8325,8328],{"class":4223,"line":4267},[4221,8300,8301],{"class":4536},"    listRef",[4221,8303,3793],{"class":4532},[4221,8305,8306],{"class":4536},"current",[4221,8308,8309],{"class":4532},"?.",[4221,8311,8312],{"class":4706},"scrollToOffset",[4221,8314,4788],{"class":4532},[4221,8316,8317],{"class":4536},"offset:",[4221,8319,7215],{"class":4934},[4221,8321,3785],{"class":4532},[4221,8323,8324],{"class":4536},"animated:",[4221,8326,8327],{"class":4571}," true",[4221,8329,8330],{"class":4532}," });\n",[4221,8332,8333],{"class":4223,"line":4273},[4221,8334,8335],{"class":4532},"  };\n",[4221,8337,8338],{"class":4223,"line":4279},[4221,8339,4246],{"emptyLinePlaceholder":4245},[4221,8341,8342,8344,8347,8350,8352,8354,8357,8359,8361],{"class":4223,"line":4284},[4221,8343,5452],{"class":4571},[4221,8345,8346],{"class":4706}," scrollToTripIndex",[4221,8348,8349],{"class":4532}," = (",[4221,8351,6303],{"class":4536},[4221,8353,4587],{"class":4532},[4221,8355,8356],{"class":4575},"number",[4221,8358,4763],{"class":4532},[4221,8360,4766],{"class":4571},[4221,8362,4579],{"class":4532},[4221,8364,8365,8367,8369,8371,8373,8376],{"class":4223,"line":4290},[4221,8366,8301],{"class":4536},[4221,8368,3793],{"class":4532},[4221,8370,8306],{"class":4536},[4221,8372,8309],{"class":4532},[4221,8374,8375],{"class":4706},"scrollToIndex",[4221,8377,4921],{"class":4532},[4221,8379,8380,8383],{"class":4223,"line":4296},[4221,8381,8382],{"class":4536},"      index",[4221,8384,5391],{"class":4532},[4221,8386,8387,8390,8392],{"class":4223,"line":4302},[4221,8388,8389],{"class":4536},"      animated:",[4221,8391,8327],{"class":4571},[4221,8393,5391],{"class":4532},[4221,8395,8396,8399,8402,8404],{"class":4223,"line":4308},[4221,8397,8398],{"class":4536},"      viewPosition:",[4221,8400,8401],{"class":4934}," 0.5",[4221,8403,3785],{"class":4532},[4221,8405,8406],{"class":6282},"\u002F\u002F 0 = зверху, 0.5 = по центру, 1 = знизу\n",[4221,8408,8409],{"class":4223,"line":4314},[4221,8410,8411],{"class":4532},"    });\n",[4221,8413,8414],{"class":4223,"line":4319},[4221,8415,8335],{"class":4532},[4221,8417,8418],{"class":4223,"line":4324},[4221,8419,4246],{"emptyLinePlaceholder":4245},[4221,8421,8422,8424,8426,8428,8431,8433,8435,8438,8440,8443,8445,8447,8450,8452,8456,8458],{"class":4223,"line":4330},[4221,8423,4715],{"class":4528},[4221,8425,8064],{"class":4723},[4221,8427,3784],{"class":4575},[4221,8429,8430],{"class":4732}," ref",[4221,8432,4736],{"class":4532},[4221,8434,4739],{"class":4571},[4221,8436,8437],{"class":4536},"listRef",[4221,8439,4822],{"class":4571},[4221,8441,8442],{"class":4732}," data",[4221,8444,4736],{"class":4532},[4221,8446,4739],{"class":4571},[4221,8448,8449],{"class":4536},"trips",[4221,8451,4822],{"class":4571},[4221,8453,8455],{"class":8454},"se1LK"," ...",[4221,8457,8081],{"class":4723},[4221,8459,4562],{"class":4532},[4221,8461,8462],{"class":4223,"line":4336},[4221,8463,4276],{"class":4532},[4131,8465,8467],{"id":8466},"методи-імперативного-api","Методи імперативного API",[3982,8469,8470,8483],{},[3985,8471,8472],{},[3988,8473,8474,8477,8480],{},[3991,8475,8476],{"align":3993},"Метод",[3991,8478,8479],{"align":3993},"Сигнатура",[3991,8481,8482],{"align":3993},"Призначення та особливості",[4002,8484,8485,8501,8519,8536],{},[3988,8486,8487,8493,8498],{},[4007,8488,8489],{"align":3993},[3770,8490,8491],{},[3750,8492,8312],{},[4007,8494,8495],{"align":3993},[3750,8496,8497],{},"{ offset: number, animated?: boolean }",[4007,8499,8500],{"align":3993},"Прокручує полотно списку до точної координати у пікселях\u002Fdp вздовж осі скролу.",[3988,8502,8503,8509,8514],{},[4007,8504,8505],{"align":3993},[3770,8506,8507],{},[3750,8508,8375],{},[4007,8510,8511],{"align":3993},[3750,8512,8513],{},"{ index: number, animated?: boolean, viewPosition?: number, viewOffset?: number }",[4007,8515,8516,8517,3793],{"align":3993},"Переміщує вікно перегляду до елемента за його індексом у масиві ",[3750,8518,3837],{},[3988,8520,8521,8528,8533],{},[4007,8522,8523],{"align":3993},[3770,8524,8525],{},[3750,8526,8527],{},"scrollToEnd",[4007,8529,8530],{"align":3993},[3750,8531,8532],{},"{ animated?: boolean }",[4007,8534,8535],{"align":3993},"Прокручує список до самого кінця (часто використовується в чатах при надсиланні нового повідомлення).",[3988,8537,8538,8545,8550],{},[4007,8539,8540],{"align":3993},[3770,8541,8542],{},[3750,8543,8544],{},"scrollToItem",[4007,8546,8547],{"align":3993},[3750,8548,8549],{},"{ item: ItemT, animated?: boolean, viewPosition?: number }",[4007,8551,8552,8553,3793],{"align":3993},"Прокручує список до об'єкта, знаходячи його через пряме порівняння посилань у ",[3750,8554,3837],{},[8556,8557,8558,8566,8567,8570,8571,8574,8575,8577,8578,8580,8581,3793,8584,8587,8590,8591,8595],"caution",{},[3770,8559,8560,8561,8563,8564,3793],{},"Пастка ",[3750,8562,8375],{}," без ",[3750,8565,3904],{}," Якщо викликати ",[3750,8568,8569],{},"scrollToIndex({ index: 85 })"," для елемента, який ще ",[3770,8572,8573],{},"не був змонтований"," і знаходиться далеко за межами поточного вікна віртуалізації, ",[3750,8576,3784],{}," не знає його точної фізичної координати ",[3750,8579,4180],{},". Це призведе до падіння з помилкою: ",[3759,8582,8583],{},"«scrollToIndex out of range»",[8585,8586],"br",{},[3770,8588,8589],{},"Рішення:"," для гарантовано надійного переходу до довільних індексів обов'язково визначайте функцію ",[3770,8592,8593],{},[3750,8594,3904],{},", яка повідомляє списку точні координати без попереднього вимірювання.",[3960,8597],{},[3738,8599,8601],{"id":8600},"pull-to-refresh-архітектура-нативного-оновлення","Pull-to-refresh: архітектура нативного оновлення",[3743,8603,8604,8607],{},[3770,8605,8606],{},"Pull-to-refresh (потягни для оновлення)"," — фундаментальний мобільний патерн взаємодії, за якого користувач здійснює вертикальний жест протягування списку вниз від нульової координати скролу, ініціюючи повторне завантаження або синхронізацію вибірки даних.",[3743,8609,8610],{},"На відміну від веб-рішень на основі JavaScript-анімацій, у React Native цей жест делегується системним віджетам операційної системи:",[8612,8613,8614,8627],"ul",{},[3817,8615,8616,8619,8620,8622,8623,8626],{},[3770,8617,8618],{},"iOS:"," компонент ",[3750,8621,4099],{},", інтегрований у нативний ",[3750,8624,8625],{},"UIScrollView",", з автентичною фізикою пружини (spring physics) та фірмовим індикатором активності.",[3817,8628,8629,8632,8633,8635],{},[3770,8630,8631],{},"Android:"," системний контейнер ",[3750,8634,4103],{}," із Material Design циркулярним індикатором прогресу, що плаває поверх списку.",[3743,8637,8638],{},[4202,8639],{"alt":8640,"className":8641,"src":8642},"Pull-to-refresh і пагінація UI: жести оновлення та підвантаження списку",[4206],"\u002Fimages\u002Freact-native\u002Flists-and-virtualization\u002F03.svg",[4131,8644,8646,8647],{"id":8645},"життєвий-цикл-та-ui-контракт-refreshcontrol","Життєвий цикл та UI-контракт ",[3750,8648,3865],{},[3743,8650,8651,8652,8654,8655,8658,8659,3785,8661,3785,8663,8665],{},"Компонент ",[3750,8653,5119],{}," передається у властивість ",[3750,8656,8657],{},"refreshControl"," будь-якого вертикального списку (",[3750,8660,3784],{},[3750,8662,3788],{},[3750,8664,3752],{},"). Робота з ним базується на суворому двосторонньому контракті станів:",[4445,8667,8668,8676,8692],{},[4448,8669,8671,8672,8675],{"name":8670,"type":5144},"refreshing","Булевий стан, що сигналізує про активну фазу синхронізації. Коли ",[3750,8673,8674],{},"refreshing === true",", системний спінер залишається видимим та обертається, навіть якщо користувач уже відпустив палець від екрана.",[4448,8677,8680,8681,8684,8685,8688,8689,3793],{"name":8678,"type":8679},"onRefresh","() => void | Promise\u003Cvoid>","Функція зворотного виклику (callback), яка спрацьовує, коли жест подолав порогову відстань спрацьовування. У цій функції встановлюється прапорець ",[3750,8682,8683],{},"refreshing = true"," та ініціюється мережевий запит. Після завершення операції (успіх або помилка) прапорець ",[3770,8686,8687],{},"обов'язково"," скидається у ",[3750,8690,8691],{},"false",[4448,8693,8696,8697,8700,8701,8704],{"name":8694,"type":8695},"tintColor (iOS) \u002F colors (Android)","string \u002F string[]","Параметри стилізації індикатора під брендову палітру застосунку. На iOS колір спінера задається через рядок ",[3750,8698,8699],{},"tintColor",", на Android — масивом шістнадцяткових кодів ",[3750,8702,8703],{},"colors={[primaryColor]}",", що визначає кольорову послідовність дуги індикатора.",[3928,8706,8707,8710,8711,8714],{},[3770,8708,8709],{},"Збереження контексту при оновленні."," Під час виконання pull-to-refresh список ",[3770,8712,8713],{},"не повинен"," демонтувати вже наявні рядки чи замінювати їх на повноцінний скелетон по центру екрана. Патерн вимагає збереження поточного стану (Stale Data), поки у фоновому режимі надходять свіжі дані (Fresh Data).",[4131,8716,8718],{"id":8717},"демо-оновлення-списку","Демо: оновлення списку",[5209,8720,8723],{"device":5211,"filename":8721,"height":5213,"title":8722},"PullRefresh.tsx","Pull-to-refresh",[4212,8724,8726],{"className":4519,"code":8725,"language":4521,"meta":4217,"style":4217},"import { useCallback, useState } from 'react';\nimport {\n  FlatList,\n  RefreshControl,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Row = { id: string; title: string; stamp: number };\n\nfunction makeRows(seed: number): Row[] {\n  return Array.from({ length: 12 }, (_, i) => ({\n    id: `${seed}-${i}`,\n    title: `Елемент ${i + 1}`,\n    stamp: seed,\n  }));\n}\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const primary = dark ? '#3b82f6' : '#2563eb';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n\n  const [seed, setSeed] = useState(1);\n  const [data, setData] = useState(() => makeRows(1));\n  const [refreshing, setRefreshing] = useState(false);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    setTimeout(() => {\n      const next = seed + 1;\n      setSeed(next);\n      setData(makeRows(next));\n      setRefreshing(false);\n    }, 800);\n  }, [seed]);\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: bg }]}>\n      \u003CText style={[styles.h, { color: text }]}>Потягніть униз\u003C\u002FText>\n      \u003CText style={{ color: muted, marginBottom: 8, fontSize: 13 }}>\n        Оновлення №{seed} · mock-затримка 800 ms\n      \u003C\u002FText>\n      \u003CFlatList\n        style={{ flex: 1 }}\n        data={data}\n        keyExtractor={(item) => item.id}\n        contentContainerStyle={{ gap: 8, paddingBottom: 16 }}\n        refreshControl={\n          \u003CRefreshControl\n            refreshing={refreshing}\n            onRefresh={onRefresh}\n            tintColor={primary}\n            colors={[primary]}\n          \u002F>\n        }\n        renderItem={({ item }) => (\n          \u003CView\n            style={[styles.row, { backgroundColor: surface, borderColor: border }]}\n          >\n            \u003CText style={{ color: text, fontWeight: '600' }}>{item.title}\u003C\u002FText>\n            \u003CText style={{ color: muted, fontSize: 12 }}>batch {item.stamp}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16, paddingTop: 24 },\n  h: { fontSize: 20, fontWeight: '800' },\n  row: {\n    borderWidth: 1,\n    borderRadius: 12,\n    padding: 14,\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n  },\n});\n",[3750,8727,8728,8748,8754,8760,8767,8773,8779,8785,8791,8801,8805,8838,8842,8867,8898,8925,8947,8957,8962,8966,8970,8982,8998,9018,9038,9058,9078,9098,9118,9122,9145,9175,9198,9202,9219,9231,9242,9260,9272,9288,9299,9309,9319,9323,9329,9361,9402,9438,9452,9460,9466,9484,9496,9520,9544,9553,9560,9573,9586,9600,9618,9623,9627,9645,9651,9683,9687,9733,9782,9790,9796,9800,9808,9812,9816,9820,9836,9860,9878,9884,9892,9900,9908,9917,9925,9933,9937],{"__ignoreMap":4217},[4221,8729,8730,8732,8734,8736,8738,8740,8742,8744,8746],{"class":4223,"line":4224},[4221,8731,4529],{"class":4528},[4221,8733,4533],{"class":4532},[4221,8735,3900],{"class":4536},[4221,8737,3785],{"class":4532},[4221,8739,6347],{"class":4536},[4221,8741,4552],{"class":4532},[4221,8743,4555],{"class":4528},[4221,8745,6486],{"class":4558},[4221,8747,4562],{"class":4532},[4221,8749,8750,8752],{"class":4223,"line":4230},[4221,8751,4529],{"class":4528},[4221,8753,4579],{"class":4532},[4221,8755,8756,8758],{"class":4223,"line":4236},[4221,8757,6499],{"class":4536},[4221,8759,5391],{"class":4532},[4221,8761,8762,8765],{"class":4223,"line":4242},[4221,8763,8764],{"class":4536},"  RefreshControl",[4221,8766,5391],{"class":4532},[4221,8768,8769,8771],{"class":4223,"line":4249},[4221,8770,6513],{"class":4536},[4221,8772,5391],{"class":4532},[4221,8774,8775,8777],{"class":4223,"line":4255},[4221,8776,6520],{"class":4536},[4221,8778,5391],{"class":4532},[4221,8780,8781,8783],{"class":4223,"line":4261},[4221,8782,6527],{"class":4536},[4221,8784,5391],{"class":4532},[4221,8786,8787,8789],{"class":4223,"line":4267},[4221,8788,6534],{"class":4536},[4221,8790,5391],{"class":4532},[4221,8792,8793,8795,8797,8799],{"class":4223,"line":4273},[4221,8794,6541],{"class":4532},[4221,8796,4555],{"class":4528},[4221,8798,4559],{"class":4558},[4221,8800,4562],{"class":4532},[4221,8802,8803],{"class":4223,"line":4279},[4221,8804,4246],{"emptyLinePlaceholder":4245},[4221,8806,8807,8809,8811,8813,8815,8817,8819,8821,8823,8825,8827,8829,8832,8834,8836],{"class":4223,"line":4284},[4221,8808,5261],{"class":4571},[4221,8810,5264],{"class":4575},[4221,8812,5267],{"class":4532},[4221,8814,4774],{"class":4536},[4221,8816,4587],{"class":4532},[4221,8818,4590],{"class":4575},[4221,8820,5276],{"class":4532},[4221,8822,4845],{"class":4536},[4221,8824,4587],{"class":4532},[4221,8826,4590],{"class":4575},[4221,8828,5276],{"class":4532},[4221,8830,8831],{"class":4536},"stamp",[4221,8833,4587],{"class":4532},[4221,8835,8356],{"class":4575},[4221,8837,5294],{"class":4532},[4221,8839,8840],{"class":4223,"line":4290},[4221,8841,4246],{"emptyLinePlaceholder":4245},[4221,8843,8844,8847,8850,8852,8855,8857,8859,8862,8864],{"class":4223,"line":4296},[4221,8845,8846],{"class":4571},"function",[4221,8848,8849],{"class":4706}," makeRows",[4221,8851,4757],{"class":4532},[4221,8853,8854],{"class":4536},"seed",[4221,8856,4587],{"class":4532},[4221,8858,8356],{"class":4575},[4221,8860,8861],{"class":4532},"): ",[4221,8863,5310],{"class":4575},[4221,8865,8866],{"class":4532},"[] {\n",[4221,8868,8869,8871,8874,8876,8878,8880,8882,8884,8886,8888,8890,8892,8894,8896],{"class":4223,"line":4302},[4221,8870,4715],{"class":4528},[4221,8872,8873],{"class":4536}," Array",[4221,8875,3793],{"class":4532},[4221,8877,4555],{"class":4706},[4221,8879,4788],{"class":4532},[4221,8881,5325],{"class":4536},[4221,8883,6164],{"class":4934},[4221,8885,5331],{"class":4532},[4221,8887,5334],{"class":4536},[4221,8889,3785],{"class":4532},[4221,8891,5339],{"class":4536},[4221,8893,4763],{"class":4532},[4221,8895,4766],{"class":4571},[4221,8897,5346],{"class":4532},[4221,8899,8900,8903,8906,8908,8910,8912,8915,8917,8919,8921,8923],{"class":4223,"line":4308},[4221,8901,8902],{"class":4536},"    id:",[4221,8904,8905],{"class":4558}," `",[4221,8907,5375],{"class":4571},[4221,8909,8854],{"class":4536},[4221,8911,4822],{"class":4571},[4221,8913,8914],{"class":4558},"-",[4221,8916,5375],{"class":4571},[4221,8918,5339],{"class":4536},[4221,8920,4822],{"class":4571},[4221,8922,5388],{"class":4558},[4221,8924,5391],{"class":4532},[4221,8926,8927,8930,8933,8935,8937,8939,8941,8943,8945],{"class":4223,"line":4314},[4221,8928,8929],{"class":4536},"    title:",[4221,8931,8932],{"class":4558}," `Елемент ",[4221,8934,5375],{"class":4571},[4221,8936,5339],{"class":4536},[4221,8938,5380],{"class":4532},[4221,8940,5383],{"class":4934},[4221,8942,4822],{"class":4571},[4221,8944,5388],{"class":4558},[4221,8946,5391],{"class":4532},[4221,8948,8949,8952,8955],{"class":4223,"line":4319},[4221,8950,8951],{"class":4536},"    stamp:",[4221,8953,8954],{"class":4536}," seed",[4221,8956,5391],{"class":4532},[4221,8958,8959],{"class":4223,"line":4324},[4221,8960,8961],{"class":4532},"  }));\n",[4221,8963,8964],{"class":4223,"line":4330},[4221,8965,4276],{"class":4532},[4221,8967,8968],{"class":4223,"line":4336},[4221,8969,4246],{"emptyLinePlaceholder":4245},[4221,8971,8972,8974,8976,8978,8980],{"class":4223,"line":4342},[4221,8973,4700],{"class":4528},[4221,8975,5440],{"class":4528},[4221,8977,4703],{"class":4571},[4221,8979,5445],{"class":4706},[4221,8981,4710],{"class":4532},[4221,8983,8984,8986,8988,8990,8992,8994,8996],{"class":4223,"line":4348},[4221,8985,5452],{"class":4571},[4221,8987,5455],{"class":4619},[4221,8989,4911],{"class":4532},[4221,8991,5244],{"class":4706},[4221,8993,5462],{"class":4532},[4221,8995,5465],{"class":4558},[4221,8997,4562],{"class":4532},[4221,8999,9000,9002,9004,9006,9008,9010,9012,9014,9016],{"class":4223,"line":4354},[4221,9001,5452],{"class":4571},[4221,9003,5474],{"class":4619},[4221,9005,4911],{"class":4532},[4221,9007,5479],{"class":4536},[4221,9009,5413],{"class":4532},[4221,9011,5484],{"class":4558},[4221,9013,5419],{"class":4532},[4221,9015,5489],{"class":4558},[4221,9017,4562],{"class":4532},[4221,9019,9020,9022,9024,9026,9028,9030,9032,9034,9036],{"class":4223,"line":4360},[4221,9021,5452],{"class":4571},[4221,9023,5498],{"class":4619},[4221,9025,4911],{"class":4532},[4221,9027,5479],{"class":4536},[4221,9029,5413],{"class":4532},[4221,9031,5507],{"class":4558},[4221,9033,5419],{"class":4532},[4221,9035,5512],{"class":4558},[4221,9037,4562],{"class":4532},[4221,9039,9040,9042,9044,9046,9048,9050,9052,9054,9056],{"class":4223,"line":4365},[4221,9041,5452],{"class":4571},[4221,9043,5521],{"class":4619},[4221,9045,4911],{"class":4532},[4221,9047,5479],{"class":4536},[4221,9049,5413],{"class":4532},[4221,9051,5530],{"class":4558},[4221,9053,5419],{"class":4532},[4221,9055,5535],{"class":4558},[4221,9057,4562],{"class":4532},[4221,9059,9060,9062,9064,9066,9068,9070,9072,9074,9076],{"class":4223,"line":4371},[4221,9061,5452],{"class":4571},[4221,9063,5544],{"class":4619},[4221,9065,4911],{"class":4532},[4221,9067,5479],{"class":4536},[4221,9069,5413],{"class":4532},[4221,9071,5553],{"class":4558},[4221,9073,5419],{"class":4532},[4221,9075,5558],{"class":4558},[4221,9077,4562],{"class":4532},[4221,9079,9080,9082,9084,9086,9088,9090,9092,9094,9096],{"class":4223,"line":4377},[4221,9081,5452],{"class":4571},[4221,9083,6694],{"class":4619},[4221,9085,4911],{"class":4532},[4221,9087,5479],{"class":4536},[4221,9089,5413],{"class":4532},[4221,9091,6703],{"class":4558},[4221,9093,5419],{"class":4532},[4221,9095,6708],{"class":4558},[4221,9097,4562],{"class":4532},[4221,9099,9100,9102,9104,9106,9108,9110,9112,9114,9116],{"class":4223,"line":4383},[4221,9101,5452],{"class":4571},[4221,9103,5567],{"class":4619},[4221,9105,4911],{"class":4532},[4221,9107,5479],{"class":4536},[4221,9109,5413],{"class":4532},[4221,9111,5576],{"class":4558},[4221,9113,5419],{"class":4532},[4221,9115,5581],{"class":4558},[4221,9117,4562],{"class":4532},[4221,9119,9120],{"class":4223,"line":4389},[4221,9121,4246],{"emptyLinePlaceholder":4245},[4221,9123,9124,9126,9128,9130,9132,9135,9137,9139,9141,9143],{"class":4223,"line":4395},[4221,9125,5452],{"class":4571},[4221,9127,6741],{"class":4532},[4221,9129,8854],{"class":4619},[4221,9131,3785],{"class":4532},[4221,9133,9134],{"class":4619},"setSeed",[4221,9136,6751],{"class":4532},[4221,9138,6347],{"class":4706},[4221,9140,4757],{"class":4532},[4221,9142,5132],{"class":4934},[4221,9144,8278],{"class":4532},[4221,9146,9147,9149,9151,9153,9155,9157,9159,9161,9164,9166,9168,9170,9172],{"class":4223,"line":4400},[4221,9148,5452],{"class":4571},[4221,9150,6741],{"class":4532},[4221,9152,3837],{"class":4619},[4221,9154,3785],{"class":4532},[4221,9156,6748],{"class":4619},[4221,9158,6751],{"class":4532},[4221,9160,6347],{"class":4706},[4221,9162,9163],{"class":4532},"(() ",[4221,9165,4766],{"class":4571},[4221,9167,8849],{"class":4706},[4221,9169,4757],{"class":4532},[4221,9171,5132],{"class":4934},[4221,9173,9174],{"class":4532},"));\n",[4221,9176,9177,9179,9181,9183,9185,9188,9190,9192,9194,9196],{"class":4223,"line":4405},[4221,9178,5452],{"class":4571},[4221,9180,6741],{"class":4532},[4221,9182,8670],{"class":4619},[4221,9184,3785],{"class":4532},[4221,9186,9187],{"class":4619},"setRefreshing",[4221,9189,6751],{"class":4532},[4221,9191,6347],{"class":4706},[4221,9193,4757],{"class":4532},[4221,9195,8691],{"class":4571},[4221,9197,8278],{"class":4532},[4221,9199,9200],{"class":4223,"line":5860},[4221,9201,4246],{"emptyLinePlaceholder":4245},[4221,9203,9204,9206,9209,9211,9213,9215,9217],{"class":4223,"line":5873},[4221,9205,5452],{"class":4571},[4221,9207,9208],{"class":4619}," onRefresh",[4221,9210,4911],{"class":4532},[4221,9212,3900],{"class":4706},[4221,9214,9163],{"class":4532},[4221,9216,4766],{"class":4571},[4221,9218,4579],{"class":4532},[4221,9220,9221,9224,9226,9229],{"class":4223,"line":5891},[4221,9222,9223],{"class":4706},"    setRefreshing",[4221,9225,4757],{"class":4532},[4221,9227,9228],{"class":4571},"true",[4221,9230,8278],{"class":4532},[4221,9232,9233,9236,9238,9240],{"class":4223,"line":5899},[4221,9234,9235],{"class":4706},"    setTimeout",[4221,9237,9163],{"class":4532},[4221,9239,4766],{"class":4571},[4221,9241,4579],{"class":4532},[4221,9243,9244,9247,9250,9252,9254,9256,9258],{"class":4223,"line":5905},[4221,9245,9246],{"class":4571},"      const",[4221,9248,9249],{"class":4619}," next",[4221,9251,4911],{"class":4532},[4221,9253,8854],{"class":4536},[4221,9255,4016],{"class":4532},[4221,9257,5132],{"class":4934},[4221,9259,4562],{"class":4532},[4221,9261,9262,9265,9267,9270],{"class":4223,"line":5955},[4221,9263,9264],{"class":4706},"      setSeed",[4221,9266,4757],{"class":4532},[4221,9268,9269],{"class":4536},"next",[4221,9271,8278],{"class":4532},[4221,9273,9274,9277,9279,9282,9284,9286],{"class":4223,"line":6002},[4221,9275,9276],{"class":4706},"      setData",[4221,9278,4757],{"class":4532},[4221,9280,9281],{"class":4706},"makeRows",[4221,9283,4757],{"class":4532},[4221,9285,9269],{"class":4536},[4221,9287,9174],{"class":4532},[4221,9289,9290,9293,9295,9297],{"class":4223,"line":6012},[4221,9291,9292],{"class":4706},"      setRefreshing",[4221,9294,4757],{"class":4532},[4221,9296,8691],{"class":4571},[4221,9298,8278],{"class":4532},[4221,9300,9301,9304,9307],{"class":4223,"line":6020},[4221,9302,9303],{"class":4532},"    }, ",[4221,9305,9306],{"class":4934},"800",[4221,9308,8278],{"class":4532},[4221,9310,9311,9314,9316],{"class":4223,"line":6026},[4221,9312,9313],{"class":4532},"  }, [",[4221,9315,8854],{"class":4536},[4221,9317,9318],{"class":4532},"]);\n",[4221,9320,9321],{"class":4223,"line":6036},[4221,9322,4246],{"emptyLinePlaceholder":4245},[4221,9324,9325,9327],{"class":4223,"line":6041},[4221,9326,4715],{"class":4528},[4221,9328,4718],{"class":4532},[4221,9330,9331,9333,9335,9337,9339,9341,9343,9345,9347,9349,9351,9353,9355,9357,9359],{"class":4223,"line":6046},[4221,9332,4724],{"class":4723},[4221,9334,4147],{"class":4575},[4221,9336,4807],{"class":4732},[4221,9338,4736],{"class":4532},[4221,9340,4739],{"class":4571},[4221,9342,5608],{"class":4756},[4221,9344,4814],{"class":4536},[4221,9346,3793],{"class":4756},[4221,9348,5615],{"class":4536},[4221,9350,5618],{"class":4756},[4221,9352,5621],{"class":4536},[4221,9354,5474],{"class":4536},[4221,9356,5626],{"class":4756},[4221,9358,4822],{"class":4571},[4221,9360,4825],{"class":4723},[4221,9362,9363,9365,9367,9369,9371,9373,9375,9377,9379,9381,9383,9385,9387,9389,9391,9393,9396,9398,9400],{"class":4223,"line":6051},[4221,9364,5635],{"class":4723},[4221,9366,4150],{"class":4575},[4221,9368,4807],{"class":4732},[4221,9370,4736],{"class":4532},[4221,9372,4739],{"class":4571},[4221,9374,5608],{"class":4756},[4221,9376,4814],{"class":4536},[4221,9378,3793],{"class":4756},[4221,9380,5652],{"class":4536},[4221,9382,5618],{"class":4756},[4221,9384,5657],{"class":4536},[4221,9386,5521],{"class":4536},[4221,9388,5626],{"class":4756},[4221,9390,4822],{"class":4571},[4221,9392,4850],{"class":4723},[4221,9394,9395],{"class":4532},"Потягніть униз",[4221,9397,4863],{"class":4723},[4221,9399,4150],{"class":4575},[4221,9401,4825],{"class":4723},[4221,9403,9404,9406,9408,9410,9412,9414,9416,9418,9420,9422,9424,9426,9428,9430,9432,9434,9436],{"class":4223,"line":6068},[4221,9405,5635],{"class":4723},[4221,9407,4150],{"class":4575},[4221,9409,4807],{"class":4732},[4221,9411,4736],{"class":4532},[4221,9413,4739],{"class":4571},[4221,9415,5689],{"class":4756},[4221,9417,5657],{"class":4536},[4221,9419,5544],{"class":4536},[4221,9421,3785],{"class":4756},[4221,9423,5698],{"class":4536},[4221,9425,5701],{"class":4934},[4221,9427,3785],{"class":4756},[4221,9429,4968],{"class":4536},[4221,9431,5708],{"class":4934},[4221,9433,5711],{"class":4756},[4221,9435,4822],{"class":4571},[4221,9437,4825],{"class":4723},[4221,9439,9440,9443,9445,9447,9449],{"class":4223,"line":6097},[4221,9441,9442],{"class":4532},"        Оновлення №",[4221,9444,4739],{"class":4571},[4221,9446,8854],{"class":4536},[4221,9448,4822],{"class":4571},[4221,9450,9451],{"class":4532}," · mock-затримка 800 ms\n",[4221,9453,9454,9456,9458],{"class":4223,"line":6126},[4221,9455,5725],{"class":4723},[4221,9457,4150],{"class":4575},[4221,9459,4825],{"class":4723},[4221,9461,9462,9464],{"class":4223,"line":6140},[4221,9463,5635],{"class":4723},[4221,9465,4727],{"class":4575},[4221,9467,9468,9470,9472,9474,9476,9478,9480,9482],{"class":4223,"line":6148},[4221,9469,5740],{"class":4732},[4221,9471,4736],{"class":4532},[4221,9473,4739],{"class":4571},[4221,9475,5689],{"class":4756},[4221,9477,6076],{"class":4536},[4221,9479,5383],{"class":4934},[4221,9481,5711],{"class":4756},[4221,9483,4276],{"class":4571},[4221,9485,9486,9488,9490,9492,9494],{"class":4223,"line":6158},[4221,9487,5758],{"class":4732},[4221,9489,4736],{"class":4532},[4221,9491,4739],{"class":4571},[4221,9493,3837],{"class":4536},[4221,9495,4276],{"class":4571},[4221,9497,9498,9500,9502,9504,9506,9508,9510,9512,9514,9516,9518],{"class":4223,"line":6169},[4221,9499,5772],{"class":4732},[4221,9501,4736],{"class":4532},[4221,9503,4739],{"class":4571},[4221,9505,4757],{"class":4756},[4221,9507,4760],{"class":4536},[4221,9509,4763],{"class":4756},[4221,9511,4766],{"class":4571},[4221,9513,4769],{"class":4536},[4221,9515,3793],{"class":4756},[4221,9517,4774],{"class":4536},[4221,9519,4276],{"class":4571},[4221,9521,9522,9524,9526,9528,9530,9532,9534,9536,9538,9540,9542],{"class":4223,"line":6180},[4221,9523,5797],{"class":4732},[4221,9525,4736],{"class":4532},[4221,9527,4739],{"class":4571},[4221,9529,5689],{"class":4756},[4221,9531,5813],{"class":4536},[4221,9533,5701],{"class":4934},[4221,9535,3785],{"class":4756},[4221,9537,5806],{"class":4536},[4221,9539,4935],{"class":4934},[4221,9541,5711],{"class":4756},[4221,9543,4276],{"class":4571},[4221,9545,9546,9549,9551],{"class":4223,"line":6186},[4221,9547,9548],{"class":4732},"        refreshControl",[4221,9550,4736],{"class":4532},[4221,9552,7200],{"class":4571},[4221,9554,9555,9557],{"class":4223,"line":6212},[4221,9556,4830],{"class":4723},[4221,9558,9559],{"class":4575},"RefreshControl\n",[4221,9561,9562,9565,9567,9569,9571],{"class":4223,"line":7314},[4221,9563,9564],{"class":4732},"            refreshing",[4221,9566,4736],{"class":4532},[4221,9568,4739],{"class":4571},[4221,9570,8670],{"class":4536},[4221,9572,4276],{"class":4571},[4221,9574,9575,9578,9580,9582,9584],{"class":4223,"line":7338},[4221,9576,9577],{"class":4732},"            onRefresh",[4221,9579,4736],{"class":4532},[4221,9581,4739],{"class":4571},[4221,9583,8678],{"class":4536},[4221,9585,4276],{"class":4571},[4221,9587,9588,9591,9593,9595,9598],{"class":4223,"line":7381},[4221,9589,9590],{"class":4732},"            tintColor",[4221,9592,4736],{"class":4532},[4221,9594,4739],{"class":4571},[4221,9596,9597],{"class":4536},"primary",[4221,9599,4276],{"class":4571},[4221,9601,9602,9605,9607,9609,9611,9613,9616],{"class":4223,"line":7421},[4221,9603,9604],{"class":4732},"            colors",[4221,9606,4736],{"class":4532},[4221,9608,4739],{"class":4571},[4221,9610,5608],{"class":4756},[4221,9612,9597],{"class":4536},[4221,9614,9615],{"class":4756},"]",[4221,9617,4276],{"class":4571},[4221,9619,9620],{"class":4223,"line":7427},[4221,9621,9622],{"class":4723},"          \u002F>\n",[4221,9624,9625],{"class":4223,"line":7433},[4221,9626,7248],{"class":4571},[4221,9628,9629,9631,9633,9635,9637,9639,9641,9643],{"class":4223,"line":7443},[4221,9630,5824],{"class":4732},[4221,9632,4736],{"class":4532},[4221,9634,4739],{"class":4571},[4221,9636,4788],{"class":4756},[4221,9638,4760],{"class":4536},[4221,9640,4793],{"class":4756},[4221,9642,4766],{"class":4571},[4221,9644,4718],{"class":4756},[4221,9646,9647,9649],{"class":4223,"line":7452},[4221,9648,4830],{"class":4723},[4221,9650,5845],{"class":4575},[4221,9652,9653,9655,9657,9659,9661,9663,9665,9667,9669,9671,9673,9675,9677,9679,9681],{"class":4223,"line":7457},[4221,9654,5850],{"class":4732},[4221,9656,4736],{"class":4532},[4221,9658,4739],{"class":4571},[4221,9660,5608],{"class":4756},[4221,9662,4814],{"class":4536},[4221,9664,3793],{"class":4756},[4221,9666,5868],{"class":4536},[4221,9668,5618],{"class":4756},[4221,9670,5621],{"class":4536},[4221,9672,5498],{"class":4536},[4221,9674,3785],{"class":4756},[4221,9676,4953],{"class":4536},[4221,9678,5567],{"class":4536},[4221,9680,5626],{"class":4756},[4221,9682,4276],{"class":4571},[4221,9684,9685],{"class":4223,"line":7476},[4221,9686,5902],{"class":4723},[4221,9688,9689,9691,9693,9695,9697,9699,9701,9703,9705,9707,9709,9711,9713,9715,9717,9719,9721,9723,9725,9727,9729,9731],{"class":4223,"line":7515},[4221,9690,5908],{"class":4723},[4221,9692,4150],{"class":4575},[4221,9694,4807],{"class":4732},[4221,9696,4736],{"class":4532},[4221,9698,4739],{"class":4571},[4221,9700,5689],{"class":4756},[4221,9702,5657],{"class":4536},[4221,9704,5521],{"class":4536},[4221,9706,3785],{"class":4756},[4221,9708,4975],{"class":4536},[4221,9710,7538],{"class":4558},[4221,9712,5711],{"class":4756},[4221,9714,4822],{"class":4571},[4221,9716,4850],{"class":4723},[4221,9718,4739],{"class":4571},[4221,9720,4760],{"class":4536},[4221,9722,3793],{"class":4756},[4221,9724,4845],{"class":4536},[4221,9726,4822],{"class":4571},[4221,9728,4863],{"class":4723},[4221,9730,4150],{"class":4575},[4221,9732,4825],{"class":4723},[4221,9734,9735,9737,9739,9741,9743,9745,9747,9749,9751,9753,9755,9757,9759,9761,9763,9766,9768,9770,9772,9774,9776,9778,9780],{"class":4223,"line":7563},[4221,9736,5908],{"class":4723},[4221,9738,4150],{"class":4575},[4221,9740,4807],{"class":4732},[4221,9742,4736],{"class":4532},[4221,9744,4739],{"class":4571},[4221,9746,5689],{"class":4756},[4221,9748,5657],{"class":4536},[4221,9750,5544],{"class":4536},[4221,9752,3785],{"class":4756},[4221,9754,4968],{"class":4536},[4221,9756,6164],{"class":4934},[4221,9758,5711],{"class":4756},[4221,9760,4822],{"class":4571},[4221,9762,4850],{"class":4723},[4221,9764,9765],{"class":4756},"batch ",[4221,9767,4739],{"class":4571},[4221,9769,4760],{"class":4536},[4221,9771,3793],{"class":4756},[4221,9773,8831],{"class":4536},[4221,9775,4822],{"class":4571},[4221,9777,4863],{"class":4723},[4221,9779,4150],{"class":4575},[4221,9781,4825],{"class":4723},[4221,9783,9784,9786,9788],{"class":4223,"line":7572},[4221,9785,6005],{"class":4723},[4221,9787,4147],{"class":4575},[4221,9789,4825],{"class":4723},[4221,9791,9792,9794],{"class":4223,"line":7579},[4221,9793,6015],{"class":4756},[4221,9795,4276],{"class":4571},[4221,9797,9798],{"class":4223,"line":7584},[4221,9799,6023],{"class":4723},[4221,9801,9802,9804,9806],{"class":4223,"line":7593},[4221,9803,6029],{"class":4723},[4221,9805,4147],{"class":4575},[4221,9807,4825],{"class":4723},[4221,9809,9810],{"class":4223,"line":7598},[4221,9811,4893],{"class":4532},[4221,9813,9814],{"class":4223,"line":7603},[4221,9815,4276],{"class":4532},[4221,9817,9818],{"class":4223,"line":7608},[4221,9819,4246],{"emptyLinePlaceholder":4245},[4221,9821,9822,9824,9826,9828,9830,9832,9834],{"class":4223,"line":7625},[4221,9823,4616],{"class":4571},[4221,9825,4908],{"class":4619},[4221,9827,4911],{"class":4532},[4221,9829,4549],{"class":4536},[4221,9831,3793],{"class":4532},[4221,9833,4918],{"class":4706},[4221,9835,4921],{"class":4532},[4221,9837,9838,9840,9842,9844,9846,9848,9850,9852,9854,9856,9858],{"class":4223,"line":7650},[4221,9839,6071],{"class":4536},[4221,9841,4533],{"class":4532},[4221,9843,6076],{"class":4536},[4221,9845,5383],{"class":4934},[4221,9847,3785],{"class":4532},[4221,9849,4931],{"class":4536},[4221,9851,4935],{"class":4934},[4221,9853,3785],{"class":4532},[4221,9855,6089],{"class":4536},[4221,9857,6092],{"class":4934},[4221,9859,4650],{"class":4532},[4221,9861,9862,9864,9866,9868,9870,9872,9874,9876],{"class":4223,"line":7678},[4221,9863,6100],{"class":4536},[4221,9865,4533],{"class":4532},[4221,9867,4968],{"class":4536},[4221,9869,6107],{"class":4934},[4221,9871,3785],{"class":4532},[4221,9873,4975],{"class":4536},[4221,9875,6114],{"class":4558},[4221,9877,4650],{"class":4532},[4221,9879,9880,9882],{"class":4223,"line":7686},[4221,9881,6143],{"class":4536},[4221,9883,4579],{"class":4532},[4221,9885,9886,9888,9890],{"class":4223,"line":7696},[4221,9887,6151],{"class":4536},[4221,9889,5383],{"class":4934},[4221,9891,5391],{"class":4532},[4221,9893,9894,9896,9898],{"class":4223,"line":7707},[4221,9895,6161],{"class":4536},[4221,9897,6164],{"class":4934},[4221,9899,5391],{"class":4532},[4221,9901,9902,9904,9906],{"class":4223,"line":7716},[4221,9903,6172],{"class":4536},[4221,9905,6175],{"class":4934},[4221,9907,5391],{"class":4532},[4221,9909,9910,9913,9915],{"class":4223,"line":7721},[4221,9911,9912],{"class":4536},"    flexDirection:",[4221,9914,7661],{"class":4558},[4221,9916,5391],{"class":4532},[4221,9918,9919,9921,9923],{"class":4223,"line":7742},[4221,9920,7825],{"class":4536},[4221,9922,8125],{"class":4558},[4221,9924,5391],{"class":4532},[4221,9926,9927,9929,9931],{"class":4223,"line":7768},[4221,9928,7815],{"class":4536},[4221,9930,7405],{"class":4558},[4221,9932,5391],{"class":4532},[4221,9934,9935],{"class":4223,"line":7783},[4221,9936,6183],{"class":4532},[4221,9938,9939],{"class":4223,"line":7791},[4221,9940,4985],{"class":4532},[3743,9942,9943,9944,9947],{},"У прев’ю потягніть список ",[3770,9945,9946],{},"униз"," (на тачпаді \u002F з зажатою кнопкою миші). На реальному телефоні жест природніший.",[3743,9949,9950,9951,4587,9954,9956],{},"Мережевий шар (справжній GET, помилки, offline) — у статті про networking. Тут важливий ",[3770,9952,9953],{},"UI-контракт",[3750,9955,8670],{}," чесний, індикатор зникає, дані оновлюються або показується помилка.",[3960,9958],{},[3738,9960,9962,9963],{"id":9961},"пагінація-ui-нескінченний-скрол-та-onendreached","Пагінація UI: нескінченний скрол та ",[3750,9964,3873],{},[3743,9966,9967,9970],{},[3770,9968,9969],{},"Пагінація (Pagination \u002F Infinite Scrolling)"," — стратегія поетапного порційного завантаження даних, яка мінімізує початковий мережевий трафік і час очікування відповіді (TTFB \u002F Time to First Byte). Замість передачі масиву з 10 000 об'єктів сервер повертає дані сторінками (наприклад, по 20 записів), а клієнтський застосунок підвантажує наступний блок у момент, коли користувач наближається до кінця списку.",[4131,9972,9974],{"id":9973},"математична-модель-розрахунку-порогу","Математична модель розрахунку порогу",[3743,9976,8651,9977,9979],{},[3750,9978,3784],{}," безперервно відстежує метрики скролу:",[8612,9981,9982,9989,9995],{},[3817,9983,9984,9985,9988],{},"$H_{\\text{content}}$ — повна висота внутрішнього вмісту (",[3750,9986,9987],{},"contentSize.height",");",[3817,9990,9991,9992,9988],{},"$H_{\\text{viewport}}$ — фізична висота вікна перегляду списку (",[3750,9993,9994],{},"layoutMeasurement.height",[3817,9996,9997,9998,3909],{},"$Y_{\\text{offset}}$ — поточне вертикальне зміщення (",[3750,9999,4460],{},[3743,10001,10002,10003,10007,10008,4997],{},"Подія ",[3770,10004,10005],{},[3750,10006,3873],{}," генерується тоді, коли відстань від нижньої межі видимого вікна до кінця вмісту стає меншою або рівною добутку висоти вікна на пороговий коефіцієнт ",[3770,10009,10010],{},[3750,10011,10012],{},"onEndReachedThreshold",[3743,10014,10015],{},"$$(H_{\\text{content}} - (Y_{\\text{offset}} + H_{\\text{viewport}})) \\le H_{\\text{viewport}} \\times \\text{onEndReachedThreshold}$$",[3743,10017,10018,10019,10022,10023,3793],{},"Наприклад, при ",[3750,10020,10021],{},"onEndReachedThreshold={0.5}"," подія спрацює, коли користувачеві залишиться прокрутити відстань, що дорівнює ",[3770,10024,10025],{},"половині висоти видимого екрана",[4212,10027,10029],{"className":4519,"code":10028,"language":4521,"meta":4217,"style":4217},"\u003CFlatList\n  data={items}\n  renderItem={renderRow}\n  keyExtractor={(item) => item.id}\n  onEndReached={handleLoadMore}\n  onEndReachedThreshold={0.3}\n  ListFooterComponent={renderFooter}\n\u002F>\n",[3750,10030,10031,10037,10050,10063,10087,10101,10115,10129],{"__ignoreMap":4217},[4221,10032,10033,10035],{"class":4223,"line":4224},[4221,10034,6756],{"class":4723},[4221,10036,4727],{"class":4575},[4221,10038,10039,10041,10043,10045,10048],{"class":4223,"line":4230},[4221,10040,7979],{"class":4732},[4221,10042,4736],{"class":4532},[4221,10044,4739],{"class":4571},[4221,10046,10047],{"class":4536},"items",[4221,10049,4276],{"class":4571},[4221,10051,10052,10054,10056,10058,10061],{"class":4223,"line":4236},[4221,10053,8049],{"class":4732},[4221,10055,4736],{"class":4532},[4221,10057,4739],{"class":4571},[4221,10059,10060],{"class":4536},"renderRow",[4221,10062,4276],{"class":4571},[4221,10064,10065,10067,10069,10071,10073,10075,10077,10079,10081,10083,10085],{"class":4223,"line":4242},[4221,10066,7993],{"class":4732},[4221,10068,4736],{"class":4532},[4221,10070,4739],{"class":4571},[4221,10072,4757],{"class":4756},[4221,10074,4760],{"class":4536},[4221,10076,4763],{"class":4756},[4221,10078,4766],{"class":4571},[4221,10080,4769],{"class":4536},[4221,10082,3793],{"class":4756},[4221,10084,4774],{"class":4536},[4221,10086,4276],{"class":4571},[4221,10088,10089,10092,10094,10096,10099],{"class":4223,"line":4249},[4221,10090,10091],{"class":4732},"  onEndReached",[4221,10093,4736],{"class":4532},[4221,10095,4739],{"class":4571},[4221,10097,10098],{"class":4536},"handleLoadMore",[4221,10100,4276],{"class":4571},[4221,10102,10103,10106,10108,10110,10113],{"class":4223,"line":4255},[4221,10104,10105],{"class":4732},"  onEndReachedThreshold",[4221,10107,4736],{"class":4532},[4221,10109,4739],{"class":4571},[4221,10111,10112],{"class":4934},"0.3",[4221,10114,4276],{"class":4571},[4221,10116,10117,10120,10122,10124,10127],{"class":4223,"line":4261},[4221,10118,10119],{"class":4732},"  ListFooterComponent",[4221,10121,4736],{"class":4532},[4221,10123,4739],{"class":4571},[4221,10125,10126],{"class":4536},"renderFooter",[4221,10128,4276],{"class":4571},[4221,10130,10131],{"class":4223,"line":4267},[4221,10132,8088],{"class":4723},[4131,10134,10136],{"id":10135},"запобігання-стану-гонитви-race-conditions-та-хибним-спрацьовуванням","Запобігання стану гонитви (Race Conditions) та хибним спрацьовуванням",[3743,10138,10139,10140,10142],{},"Без належного архітектурного контролю обробник ",[3750,10141,3873],{}," стає джерелом критичних багів:",[3814,10144,10145,10151],{},[3817,10146,10147,10150],{},[3770,10148,10149],{},"Хибний старт при ініціалізації."," Якщо початковий масив містить лише 2–3 елементи, висота контенту $H_{\\text{content}}$ може бути меншою за висоту екрана $H_{\\text{viewport}}$. У цьому випадку умова спрацювання виконується автоматично під час першого монтування списку.",[3817,10152,10153,10156,10157,10159],{},[3770,10154,10155],{},"Паралельні дублюючі запити (Duplicate Triggers)."," Під час швидкого інерційного скролу подія ",[3750,10158,3873],{}," може викликатися багаторазово за короткий проміжок часу. Якщо перший асинхронний запит ще перебуває в процесі виконання, запуск другого запиту призведе до дублювання сторінок або розсинхронізації курсорів пагінації.",[4106,10161,10162,10165,10166,10169,10171,10172,10175,10176,10178,10179,10182,10183,10186],{},[3770,10163,10164],{},"Інженерний захист пагінації."," Завжди блокуйте повторний виклик завантаження за допомогою комбінації перевірок:\n",[3750,10167,10168],{},"if (isLoadingMore || !hasMore) return;",[8585,10170],{},"\nСтан ",[3750,10173,10174],{},"isLoadingMore"," встановлюється в ",[3750,10177,9228],{}," перед запитом і скидається в ",[3750,10180,10181],{},"finally","-блоці, а ",[3750,10184,10185],{},"hasMore"," визначається відповіддю сервера (наявність наступної сторінки або досягнення ліміту).",[4131,10188,10190],{"id":10189},"демо-ще-10-коли-внизу","Демо: «ще 10», коли внизу",[5209,10192,10196],{"device":5211,"filename":10193,"height":10194,"title":10195},"PaginationUI.tsx",600,"onEndReached · mock pages",[4212,10197,10199],{"className":4519,"code":10198,"language":4521,"meta":4217,"style":4217},"import { useCallback, useState } from 'react';\nimport {\n  ActivityIndicator,\n  FlatList,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Row = { id: string; title: string };\n\nconst PAGE = 10;\nconst MAX = 50;\n\nfunction pageItems(from: number, count: number): Row[] {\n  return Array.from({ length: count }, (_, i) => {\n    const n = from + i + 1;\n    return { id: String(n), title: `Книга №${n}` };\n  });\n}\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const primary = dark ? '#3b82f6' : '#2563eb';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n\n  const [data, setData] = useState(() => pageItems(0, PAGE));\n  const [loadingMore, setLoadingMore] = useState(false);\n  const hasMore = data.length \u003C MAX;\n\n  const loadMore = useCallback(() => {\n    if (loadingMore || !hasMore) return;\n    setLoadingMore(true);\n    setTimeout(() => {\n      setData((prev) => {\n        const next = pageItems(prev.length, Math.min(PAGE, MAX - prev.length));\n        return [...prev, ...next];\n      });\n      setLoadingMore(false);\n    }, 700);\n  }, [loadingMore, hasMore]);\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: bg }]}>\n      \u003CText style={[styles.h, { color: text }]}>Пагінація UI\u003C\u002FText>\n      \u003CText style={{ color: muted, marginBottom: 8, fontSize: 13 }}>\n        {data.length} \u002F {MAX} · долистайте вниз\n      \u003C\u002FText>\n      \u003CFlatList\n        style={{ flex: 1 }}\n        data={data}\n        keyExtractor={(item) => item.id}\n        onEndReached={loadMore}\n        onEndReachedThreshold={0.3}\n        contentContainerStyle={{ gap: 8, paddingBottom: 16 }}\n        ListFooterComponent={\n          loadingMore ? (\n            \u003CView style={styles.footer}>\n              \u003CActivityIndicator color={primary} \u002F>\n              \u003CText style={{ color: muted, marginTop: 8 }}>Завантаження…\u003C\u002FText>\n            \u003C\u002FView>\n          ) : !hasMore ? (\n            \u003CText style={{ color: muted, textAlign: 'center', padding: 12 }}>\n              Це всі книги (mock)\n            \u003C\u002FText>\n          ) : null\n        }\n        renderItem={({ item }) => (\n          \u003CView\n            style={[styles.row, { backgroundColor: surface, borderColor: border }]}\n          >\n            \u003CText style={{ color: text, fontWeight: '600' }}>{item.title}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16, paddingTop: 24 },\n  h: { fontSize: 20, fontWeight: '800' },\n  row: { borderWidth: 1, borderRadius: 12, padding: 14 },\n  footer: { paddingVertical: 16, alignItems: 'center' },\n});\n",[3750,10200,10201,10221,10227,10234,10240,10246,10252,10258,10264,10274,10278,10302,10306,10320,10334,10338,10368,10399,10421,10454,10459,10463,10467,10479,10495,10515,10535,10555,10575,10595,10615,10619,10652,10676,10699,10703,10720,10742,10753,10763,10777,10826,10843,10848,10859,10868,10880,10884,10890,10922,10963,10999,11023,11031,11037,11055,11067,11091,11105,11118,11142,11151,11160,11183,11205,11245,11253,11269,11305,11310,11318,11327,11331,11349,11355,11387,11391,11437,11445,11451,11455,11463,11467,11471,11475,11491,11515,11533,11558,11579],{"__ignoreMap":4217},[4221,10202,10203,10205,10207,10209,10211,10213,10215,10217,10219],{"class":4223,"line":4224},[4221,10204,4529],{"class":4528},[4221,10206,4533],{"class":4532},[4221,10208,3900],{"class":4536},[4221,10210,3785],{"class":4532},[4221,10212,6347],{"class":4536},[4221,10214,4552],{"class":4532},[4221,10216,4555],{"class":4528},[4221,10218,6486],{"class":4558},[4221,10220,4562],{"class":4532},[4221,10222,10223,10225],{"class":4223,"line":4230},[4221,10224,4529],{"class":4528},[4221,10226,4579],{"class":4532},[4221,10228,10229,10232],{"class":4223,"line":4236},[4221,10230,10231],{"class":4536},"  ActivityIndicator",[4221,10233,5391],{"class":4532},[4221,10235,10236,10238],{"class":4223,"line":4242},[4221,10237,6499],{"class":4536},[4221,10239,5391],{"class":4532},[4221,10241,10242,10244],{"class":4223,"line":4249},[4221,10243,6513],{"class":4536},[4221,10245,5391],{"class":4532},[4221,10247,10248,10250],{"class":4223,"line":4255},[4221,10249,6520],{"class":4536},[4221,10251,5391],{"class":4532},[4221,10253,10254,10256],{"class":4223,"line":4261},[4221,10255,6527],{"class":4536},[4221,10257,5391],{"class":4532},[4221,10259,10260,10262],{"class":4223,"line":4267},[4221,10261,6534],{"class":4536},[4221,10263,5391],{"class":4532},[4221,10265,10266,10268,10270,10272],{"class":4223,"line":4273},[4221,10267,6541],{"class":4532},[4221,10269,4555],{"class":4528},[4221,10271,4559],{"class":4558},[4221,10273,4562],{"class":4532},[4221,10275,10276],{"class":4223,"line":4279},[4221,10277,4246],{"emptyLinePlaceholder":4245},[4221,10279,10280,10282,10284,10286,10288,10290,10292,10294,10296,10298,10300],{"class":4223,"line":4284},[4221,10281,5261],{"class":4571},[4221,10283,5264],{"class":4575},[4221,10285,5267],{"class":4532},[4221,10287,4774],{"class":4536},[4221,10289,4587],{"class":4532},[4221,10291,4590],{"class":4575},[4221,10293,5276],{"class":4532},[4221,10295,4845],{"class":4536},[4221,10297,4587],{"class":4532},[4221,10299,4590],{"class":4575},[4221,10301,5294],{"class":4532},[4221,10303,10304],{"class":4223,"line":4290},[4221,10305,4246],{"emptyLinePlaceholder":4245},[4221,10307,10308,10310,10313,10315,10318],{"class":4223,"line":4296},[4221,10309,4616],{"class":4571},[4221,10311,10312],{"class":4619}," PAGE",[4221,10314,4911],{"class":4532},[4221,10316,10317],{"class":4934},"10",[4221,10319,4562],{"class":4532},[4221,10321,10322,10324,10327,10329,10332],{"class":4223,"line":4302},[4221,10323,4616],{"class":4571},[4221,10325,10326],{"class":4619}," MAX",[4221,10328,4911],{"class":4532},[4221,10330,10331],{"class":4934},"50",[4221,10333,4562],{"class":4532},[4221,10335,10336],{"class":4223,"line":4308},[4221,10337,4246],{"emptyLinePlaceholder":4245},[4221,10339,10340,10342,10345,10347,10349,10351,10353,10355,10358,10360,10362,10364,10366],{"class":4223,"line":4314},[4221,10341,8846],{"class":4571},[4221,10343,10344],{"class":4706}," pageItems",[4221,10346,4757],{"class":4532},[4221,10348,4555],{"class":4536},[4221,10350,4587],{"class":4532},[4221,10352,8356],{"class":4575},[4221,10354,3785],{"class":4532},[4221,10356,10357],{"class":4536},"count",[4221,10359,4587],{"class":4532},[4221,10361,8356],{"class":4575},[4221,10363,8861],{"class":4532},[4221,10365,5310],{"class":4575},[4221,10367,8866],{"class":4532},[4221,10369,10370,10372,10374,10376,10378,10380,10382,10385,10387,10389,10391,10393,10395,10397],{"class":4223,"line":4319},[4221,10371,4715],{"class":4528},[4221,10373,8873],{"class":4536},[4221,10375,3793],{"class":4532},[4221,10377,4555],{"class":4706},[4221,10379,4788],{"class":4532},[4221,10381,5325],{"class":4536},[4221,10383,10384],{"class":4536}," count",[4221,10386,5331],{"class":4532},[4221,10388,5334],{"class":4536},[4221,10390,3785],{"class":4532},[4221,10392,5339],{"class":4536},[4221,10394,4763],{"class":4532},[4221,10396,4766],{"class":4571},[4221,10398,4579],{"class":4532},[4221,10400,10401,10404,10407,10409,10411,10413,10415,10417,10419],{"class":4223,"line":4324},[4221,10402,10403],{"class":4571},"    const",[4221,10405,10406],{"class":4619}," n",[4221,10408,4911],{"class":4532},[4221,10410,4555],{"class":4536},[4221,10412,4016],{"class":4532},[4221,10414,5339],{"class":4536},[4221,10416,4016],{"class":4532},[4221,10418,5132],{"class":4934},[4221,10420,4562],{"class":4532},[4221,10422,10423,10426,10428,10430,10432,10434,10437,10439,10441,10444,10446,10448,10450,10452],{"class":4223,"line":4330},[4221,10424,10425],{"class":4528},"    return",[4221,10427,4533],{"class":4532},[4221,10429,4636],{"class":4536},[4221,10431,5354],{"class":4706},[4221,10433,4757],{"class":4532},[4221,10435,10436],{"class":4536},"n",[4221,10438,6247],{"class":4532},[4221,10440,4644],{"class":4536},[4221,10442,10443],{"class":4558}," `Книга №",[4221,10445,5375],{"class":4571},[4221,10447,10436],{"class":4536},[4221,10449,4822],{"class":4571},[4221,10451,5388],{"class":4558},[4221,10453,5294],{"class":4532},[4221,10455,10456],{"class":4223,"line":4336},[4221,10457,10458],{"class":4532},"  });\n",[4221,10460,10461],{"class":4223,"line":4342},[4221,10462,4276],{"class":4532},[4221,10464,10465],{"class":4223,"line":4348},[4221,10466,4246],{"emptyLinePlaceholder":4245},[4221,10468,10469,10471,10473,10475,10477],{"class":4223,"line":4354},[4221,10470,4700],{"class":4528},[4221,10472,5440],{"class":4528},[4221,10474,4703],{"class":4571},[4221,10476,5445],{"class":4706},[4221,10478,4710],{"class":4532},[4221,10480,10481,10483,10485,10487,10489,10491,10493],{"class":4223,"line":4360},[4221,10482,5452],{"class":4571},[4221,10484,5455],{"class":4619},[4221,10486,4911],{"class":4532},[4221,10488,5244],{"class":4706},[4221,10490,5462],{"class":4532},[4221,10492,5465],{"class":4558},[4221,10494,4562],{"class":4532},[4221,10496,10497,10499,10501,10503,10505,10507,10509,10511,10513],{"class":4223,"line":4365},[4221,10498,5452],{"class":4571},[4221,10500,5474],{"class":4619},[4221,10502,4911],{"class":4532},[4221,10504,5479],{"class":4536},[4221,10506,5413],{"class":4532},[4221,10508,5484],{"class":4558},[4221,10510,5419],{"class":4532},[4221,10512,5489],{"class":4558},[4221,10514,4562],{"class":4532},[4221,10516,10517,10519,10521,10523,10525,10527,10529,10531,10533],{"class":4223,"line":4371},[4221,10518,5452],{"class":4571},[4221,10520,5498],{"class":4619},[4221,10522,4911],{"class":4532},[4221,10524,5479],{"class":4536},[4221,10526,5413],{"class":4532},[4221,10528,5507],{"class":4558},[4221,10530,5419],{"class":4532},[4221,10532,5512],{"class":4558},[4221,10534,4562],{"class":4532},[4221,10536,10537,10539,10541,10543,10545,10547,10549,10551,10553],{"class":4223,"line":4377},[4221,10538,5452],{"class":4571},[4221,10540,5521],{"class":4619},[4221,10542,4911],{"class":4532},[4221,10544,5479],{"class":4536},[4221,10546,5413],{"class":4532},[4221,10548,5530],{"class":4558},[4221,10550,5419],{"class":4532},[4221,10552,5535],{"class":4558},[4221,10554,4562],{"class":4532},[4221,10556,10557,10559,10561,10563,10565,10567,10569,10571,10573],{"class":4223,"line":4383},[4221,10558,5452],{"class":4571},[4221,10560,5544],{"class":4619},[4221,10562,4911],{"class":4532},[4221,10564,5479],{"class":4536},[4221,10566,5413],{"class":4532},[4221,10568,5553],{"class":4558},[4221,10570,5419],{"class":4532},[4221,10572,5558],{"class":4558},[4221,10574,4562],{"class":4532},[4221,10576,10577,10579,10581,10583,10585,10587,10589,10591,10593],{"class":4223,"line":4389},[4221,10578,5452],{"class":4571},[4221,10580,6694],{"class":4619},[4221,10582,4911],{"class":4532},[4221,10584,5479],{"class":4536},[4221,10586,5413],{"class":4532},[4221,10588,6703],{"class":4558},[4221,10590,5419],{"class":4532},[4221,10592,6708],{"class":4558},[4221,10594,4562],{"class":4532},[4221,10596,10597,10599,10601,10603,10605,10607,10609,10611,10613],{"class":4223,"line":4395},[4221,10598,5452],{"class":4571},[4221,10600,5567],{"class":4619},[4221,10602,4911],{"class":4532},[4221,10604,5479],{"class":4536},[4221,10606,5413],{"class":4532},[4221,10608,5576],{"class":4558},[4221,10610,5419],{"class":4532},[4221,10612,5581],{"class":4558},[4221,10614,4562],{"class":4532},[4221,10616,10617],{"class":4223,"line":4400},[4221,10618,4246],{"emptyLinePlaceholder":4245},[4221,10620,10621,10623,10625,10627,10629,10631,10633,10635,10637,10639,10641,10643,10645,10647,10650],{"class":4223,"line":4405},[4221,10622,5452],{"class":4571},[4221,10624,6741],{"class":4532},[4221,10626,3837],{"class":4619},[4221,10628,3785],{"class":4532},[4221,10630,6748],{"class":4619},[4221,10632,6751],{"class":4532},[4221,10634,6347],{"class":4706},[4221,10636,9163],{"class":4532},[4221,10638,4766],{"class":4571},[4221,10640,10344],{"class":4706},[4221,10642,4757],{"class":4532},[4221,10644,5128],{"class":4934},[4221,10646,3785],{"class":4532},[4221,10648,10649],{"class":4619},"PAGE",[4221,10651,9174],{"class":4532},[4221,10653,10654,10656,10658,10661,10663,10666,10668,10670,10672,10674],{"class":4223,"line":5860},[4221,10655,5452],{"class":4571},[4221,10657,6741],{"class":4532},[4221,10659,10660],{"class":4619},"loadingMore",[4221,10662,3785],{"class":4532},[4221,10664,10665],{"class":4619},"setLoadingMore",[4221,10667,6751],{"class":4532},[4221,10669,6347],{"class":4706},[4221,10671,4757],{"class":4532},[4221,10673,8691],{"class":4571},[4221,10675,8278],{"class":4532},[4221,10677,10678,10680,10683,10685,10687,10689,10691,10694,10697],{"class":4223,"line":5873},[4221,10679,5452],{"class":4571},[4221,10681,10682],{"class":4619}," hasMore",[4221,10684,4911],{"class":4532},[4221,10686,3837],{"class":4536},[4221,10688,3793],{"class":4532},[4221,10690,6910],{"class":4536},[4221,10692,10693],{"class":4532}," \u003C ",[4221,10695,10696],{"class":4619},"MAX",[4221,10698,4562],{"class":4532},[4221,10700,10701],{"class":4223,"line":5891},[4221,10702,4246],{"emptyLinePlaceholder":4245},[4221,10704,10705,10707,10710,10712,10714,10716,10718],{"class":4223,"line":5899},[4221,10706,5452],{"class":4571},[4221,10708,10709],{"class":4619}," loadMore",[4221,10711,4911],{"class":4532},[4221,10713,3900],{"class":4706},[4221,10715,9163],{"class":4532},[4221,10717,4766],{"class":4571},[4221,10719,4579],{"class":4532},[4221,10721,10722,10725,10728,10730,10733,10735,10737,10740],{"class":4223,"line":5905},[4221,10723,10724],{"class":4528},"    if",[4221,10726,10727],{"class":4532}," (",[4221,10729,10660],{"class":4536},[4221,10731,10732],{"class":4532}," || !",[4221,10734,10185],{"class":4536},[4221,10736,4763],{"class":4532},[4221,10738,10739],{"class":4528},"return",[4221,10741,4562],{"class":4532},[4221,10743,10744,10747,10749,10751],{"class":4223,"line":5955},[4221,10745,10746],{"class":4706},"    setLoadingMore",[4221,10748,4757],{"class":4532},[4221,10750,9228],{"class":4571},[4221,10752,8278],{"class":4532},[4221,10754,10755,10757,10759,10761],{"class":4223,"line":6002},[4221,10756,9235],{"class":4706},[4221,10758,9163],{"class":4532},[4221,10760,4766],{"class":4571},[4221,10762,4579],{"class":4532},[4221,10764,10765,10767,10769,10771,10773,10775],{"class":4223,"line":6012},[4221,10766,9276],{"class":4706},[4221,10768,6856],{"class":4532},[4221,10770,6859],{"class":4536},[4221,10772,4763],{"class":4532},[4221,10774,4766],{"class":4571},[4221,10776,4579],{"class":4532},[4221,10778,10779,10782,10784,10786,10789,10791,10793,10795,10797,10799,10802,10804,10807,10809,10811,10813,10815,10818,10820,10822,10824],{"class":4223,"line":6020},[4221,10780,10781],{"class":4571},"        const",[4221,10783,9249],{"class":4619},[4221,10785,4911],{"class":4532},[4221,10787,10788],{"class":4706},"pageItems",[4221,10790,4757],{"class":4532},[4221,10792,6859],{"class":4536},[4221,10794,3793],{"class":4532},[4221,10796,6910],{"class":4536},[4221,10798,3785],{"class":4532},[4221,10800,10801],{"class":4536},"Math",[4221,10803,3793],{"class":4532},[4221,10805,10806],{"class":4706},"min",[4221,10808,4757],{"class":4532},[4221,10810,10649],{"class":4619},[4221,10812,3785],{"class":4532},[4221,10814,10696],{"class":4619},[4221,10816,10817],{"class":4532}," - ",[4221,10819,6859],{"class":4536},[4221,10821,3793],{"class":4532},[4221,10823,6910],{"class":4536},[4221,10825,9174],{"class":4532},[4221,10827,10828,10831,10834,10836,10839,10841],{"class":4223,"line":6026},[4221,10829,10830],{"class":4528},"        return",[4221,10832,10833],{"class":4532}," [...",[4221,10835,6859],{"class":4536},[4221,10837,10838],{"class":4532},", ...",[4221,10840,9269],{"class":4536},[4221,10842,4691],{"class":4532},[4221,10844,10845],{"class":4223,"line":6036},[4221,10846,10847],{"class":4532},"      });\n",[4221,10849,10850,10853,10855,10857],{"class":4223,"line":6041},[4221,10851,10852],{"class":4706},"      setLoadingMore",[4221,10854,4757],{"class":4532},[4221,10856,8691],{"class":4571},[4221,10858,8278],{"class":4532},[4221,10860,10861,10863,10866],{"class":4223,"line":6046},[4221,10862,9303],{"class":4532},[4221,10864,10865],{"class":4934},"700",[4221,10867,8278],{"class":4532},[4221,10869,10870,10872,10874,10876,10878],{"class":4223,"line":6051},[4221,10871,9313],{"class":4532},[4221,10873,10660],{"class":4536},[4221,10875,3785],{"class":4532},[4221,10877,10185],{"class":4536},[4221,10879,9318],{"class":4532},[4221,10881,10882],{"class":4223,"line":6068},[4221,10883,4246],{"emptyLinePlaceholder":4245},[4221,10885,10886,10888],{"class":4223,"line":6097},[4221,10887,4715],{"class":4528},[4221,10889,4718],{"class":4532},[4221,10891,10892,10894,10896,10898,10900,10902,10904,10906,10908,10910,10912,10914,10916,10918,10920],{"class":4223,"line":6126},[4221,10893,4724],{"class":4723},[4221,10895,4147],{"class":4575},[4221,10897,4807],{"class":4732},[4221,10899,4736],{"class":4532},[4221,10901,4739],{"class":4571},[4221,10903,5608],{"class":4756},[4221,10905,4814],{"class":4536},[4221,10907,3793],{"class":4756},[4221,10909,5615],{"class":4536},[4221,10911,5618],{"class":4756},[4221,10913,5621],{"class":4536},[4221,10915,5474],{"class":4536},[4221,10917,5626],{"class":4756},[4221,10919,4822],{"class":4571},[4221,10921,4825],{"class":4723},[4221,10923,10924,10926,10928,10930,10932,10934,10936,10938,10940,10942,10944,10946,10948,10950,10952,10954,10957,10959,10961],{"class":4223,"line":6140},[4221,10925,5635],{"class":4723},[4221,10927,4150],{"class":4575},[4221,10929,4807],{"class":4732},[4221,10931,4736],{"class":4532},[4221,10933,4739],{"class":4571},[4221,10935,5608],{"class":4756},[4221,10937,4814],{"class":4536},[4221,10939,3793],{"class":4756},[4221,10941,5652],{"class":4536},[4221,10943,5618],{"class":4756},[4221,10945,5657],{"class":4536},[4221,10947,5521],{"class":4536},[4221,10949,5626],{"class":4756},[4221,10951,4822],{"class":4571},[4221,10953,4850],{"class":4723},[4221,10955,10956],{"class":4532},"Пагінація UI",[4221,10958,4863],{"class":4723},[4221,10960,4150],{"class":4575},[4221,10962,4825],{"class":4723},[4221,10964,10965,10967,10969,10971,10973,10975,10977,10979,10981,10983,10985,10987,10989,10991,10993,10995,10997],{"class":4223,"line":6148},[4221,10966,5635],{"class":4723},[4221,10968,4150],{"class":4575},[4221,10970,4807],{"class":4732},[4221,10972,4736],{"class":4532},[4221,10974,4739],{"class":4571},[4221,10976,5689],{"class":4756},[4221,10978,5657],{"class":4536},[4221,10980,5544],{"class":4536},[4221,10982,3785],{"class":4756},[4221,10984,5698],{"class":4536},[4221,10986,5701],{"class":4934},[4221,10988,3785],{"class":4756},[4221,10990,4968],{"class":4536},[4221,10992,5708],{"class":4934},[4221,10994,5711],{"class":4756},[4221,10996,4822],{"class":4571},[4221,10998,4825],{"class":4723},[4221,11000,11001,11004,11006,11008,11010,11012,11014,11016,11018,11020],{"class":4223,"line":6158},[4221,11002,11003],{"class":4571},"        {",[4221,11005,3837],{"class":4536},[4221,11007,3793],{"class":4756},[4221,11009,6910],{"class":4536},[4221,11011,4822],{"class":4571},[4221,11013,4058],{"class":4532},[4221,11015,4739],{"class":4571},[4221,11017,10696],{"class":4619},[4221,11019,4822],{"class":4571},[4221,11021,11022],{"class":4532}," · долистайте вниз\n",[4221,11024,11025,11027,11029],{"class":4223,"line":6169},[4221,11026,5725],{"class":4723},[4221,11028,4150],{"class":4575},[4221,11030,4825],{"class":4723},[4221,11032,11033,11035],{"class":4223,"line":6180},[4221,11034,5635],{"class":4723},[4221,11036,4727],{"class":4575},[4221,11038,11039,11041,11043,11045,11047,11049,11051,11053],{"class":4223,"line":6186},[4221,11040,5740],{"class":4732},[4221,11042,4736],{"class":4532},[4221,11044,4739],{"class":4571},[4221,11046,5689],{"class":4756},[4221,11048,6076],{"class":4536},[4221,11050,5383],{"class":4934},[4221,11052,5711],{"class":4756},[4221,11054,4276],{"class":4571},[4221,11056,11057,11059,11061,11063,11065],{"class":4223,"line":6212},[4221,11058,5758],{"class":4732},[4221,11060,4736],{"class":4532},[4221,11062,4739],{"class":4571},[4221,11064,3837],{"class":4536},[4221,11066,4276],{"class":4571},[4221,11068,11069,11071,11073,11075,11077,11079,11081,11083,11085,11087,11089],{"class":4223,"line":7314},[4221,11070,5772],{"class":4732},[4221,11072,4736],{"class":4532},[4221,11074,4739],{"class":4571},[4221,11076,4757],{"class":4756},[4221,11078,4760],{"class":4536},[4221,11080,4763],{"class":4756},[4221,11082,4766],{"class":4571},[4221,11084,4769],{"class":4536},[4221,11086,3793],{"class":4756},[4221,11088,4774],{"class":4536},[4221,11090,4276],{"class":4571},[4221,11092,11093,11096,11098,11100,11103],{"class":4223,"line":7338},[4221,11094,11095],{"class":4732},"        onEndReached",[4221,11097,4736],{"class":4532},[4221,11099,4739],{"class":4571},[4221,11101,11102],{"class":4536},"loadMore",[4221,11104,4276],{"class":4571},[4221,11106,11107,11110,11112,11114,11116],{"class":4223,"line":7381},[4221,11108,11109],{"class":4732},"        onEndReachedThreshold",[4221,11111,4736],{"class":4532},[4221,11113,4739],{"class":4571},[4221,11115,10112],{"class":4934},[4221,11117,4276],{"class":4571},[4221,11119,11120,11122,11124,11126,11128,11130,11132,11134,11136,11138,11140],{"class":4223,"line":7421},[4221,11121,5797],{"class":4732},[4221,11123,4736],{"class":4532},[4221,11125,4739],{"class":4571},[4221,11127,5689],{"class":4756},[4221,11129,5813],{"class":4536},[4221,11131,5701],{"class":4934},[4221,11133,3785],{"class":4756},[4221,11135,5806],{"class":4536},[4221,11137,4935],{"class":4934},[4221,11139,5711],{"class":4756},[4221,11141,4276],{"class":4571},[4221,11143,11144,11147,11149],{"class":4223,"line":7427},[4221,11145,11146],{"class":4732},"        ListFooterComponent",[4221,11148,4736],{"class":4532},[4221,11150,7200],{"class":4571},[4221,11152,11153,11156,11158],{"class":4223,"line":7433},[4221,11154,11155],{"class":4536},"          loadingMore",[4221,11157,7218],{"class":4532},[4221,11159,4718],{"class":4756},[4221,11161,11162,11164,11166,11168,11170,11172,11174,11176,11179,11181],{"class":4223,"line":7443},[4221,11163,5908],{"class":4723},[4221,11165,4147],{"class":4575},[4221,11167,4807],{"class":4732},[4221,11169,4736],{"class":4532},[4221,11171,4739],{"class":4571},[4221,11173,4814],{"class":4536},[4221,11175,3793],{"class":4756},[4221,11177,11178],{"class":4536},"footer",[4221,11180,4822],{"class":4571},[4221,11182,4825],{"class":4723},[4221,11184,11185,11188,11191,11194,11196,11198,11200,11202],{"class":4223,"line":7452},[4221,11186,11187],{"class":4723},"              \u003C",[4221,11189,11190],{"class":4575},"ActivityIndicator",[4221,11192,11193],{"class":4732}," color",[4221,11195,4736],{"class":4532},[4221,11197,4739],{"class":4571},[4221,11199,9597],{"class":4536},[4221,11201,4822],{"class":4571},[4221,11203,11204],{"class":4723}," \u002F>\n",[4221,11206,11207,11209,11211,11213,11215,11217,11219,11221,11223,11225,11228,11230,11232,11234,11236,11239,11241,11243],{"class":4223,"line":7457},[4221,11208,11187],{"class":4723},[4221,11210,4150],{"class":4575},[4221,11212,4807],{"class":4732},[4221,11214,4736],{"class":4532},[4221,11216,4739],{"class":4571},[4221,11218,5689],{"class":4756},[4221,11220,5657],{"class":4536},[4221,11222,5544],{"class":4536},[4221,11224,3785],{"class":4756},[4221,11226,11227],{"class":4536},"marginTop:",[4221,11229,5701],{"class":4934},[4221,11231,5711],{"class":4756},[4221,11233,4822],{"class":4571},[4221,11235,4850],{"class":4723},[4221,11237,11238],{"class":4756},"Завантаження…",[4221,11240,4863],{"class":4723},[4221,11242,4150],{"class":4575},[4221,11244,4825],{"class":4723},[4221,11246,11247,11249,11251],{"class":4223,"line":7476},[4221,11248,7436],{"class":4723},[4221,11250,4147],{"class":4575},[4221,11252,4825],{"class":4723},[4221,11254,11255,11258,11260,11263,11265,11267],{"class":4223,"line":7515},[4221,11256,11257],{"class":4756},"          ) ",[4221,11259,4997],{"class":4532},[4221,11261,11262],{"class":4532}," !",[4221,11264,10185],{"class":4536},[4221,11266,7218],{"class":4532},[4221,11268,4718],{"class":4756},[4221,11270,11271,11273,11275,11277,11279,11281,11283,11285,11287,11289,11291,11293,11295,11297,11299,11301,11303],{"class":4223,"line":7563},[4221,11272,5908],{"class":4723},[4221,11274,4150],{"class":4575},[4221,11276,4807],{"class":4732},[4221,11278,4736],{"class":4532},[4221,11280,4739],{"class":4571},[4221,11282,5689],{"class":4756},[4221,11284,5657],{"class":4536},[4221,11286,5544],{"class":4536},[4221,11288,3785],{"class":4756},[4221,11290,7402],{"class":4536},[4221,11292,7405],{"class":4558},[4221,11294,3785],{"class":4756},[4221,11296,4931],{"class":4536},[4221,11298,6164],{"class":4934},[4221,11300,5711],{"class":4756},[4221,11302,4822],{"class":4571},[4221,11304,4825],{"class":4723},[4221,11306,11307],{"class":4223,"line":7572},[4221,11308,11309],{"class":4756},"              Це всі книги (mock)\n",[4221,11311,11312,11314,11316],{"class":4223,"line":7579},[4221,11313,7436],{"class":4723},[4221,11315,4150],{"class":4575},[4221,11317,4825],{"class":4723},[4221,11319,11320,11322,11324],{"class":4223,"line":7584},[4221,11321,11257],{"class":4756},[4221,11323,4997],{"class":4532},[4221,11325,11326],{"class":4571}," null\n",[4221,11328,11329],{"class":4223,"line":7593},[4221,11330,7248],{"class":4571},[4221,11332,11333,11335,11337,11339,11341,11343,11345,11347],{"class":4223,"line":7598},[4221,11334,5824],{"class":4732},[4221,11336,4736],{"class":4532},[4221,11338,4739],{"class":4571},[4221,11340,4788],{"class":4756},[4221,11342,4760],{"class":4536},[4221,11344,4793],{"class":4756},[4221,11346,4766],{"class":4571},[4221,11348,4718],{"class":4756},[4221,11350,11351,11353],{"class":4223,"line":7603},[4221,11352,4830],{"class":4723},[4221,11354,5845],{"class":4575},[4221,11356,11357,11359,11361,11363,11365,11367,11369,11371,11373,11375,11377,11379,11381,11383,11385],{"class":4223,"line":7608},[4221,11358,5850],{"class":4732},[4221,11360,4736],{"class":4532},[4221,11362,4739],{"class":4571},[4221,11364,5608],{"class":4756},[4221,11366,4814],{"class":4536},[4221,11368,3793],{"class":4756},[4221,11370,5868],{"class":4536},[4221,11372,5618],{"class":4756},[4221,11374,5621],{"class":4536},[4221,11376,5498],{"class":4536},[4221,11378,3785],{"class":4756},[4221,11380,4953],{"class":4536},[4221,11382,5567],{"class":4536},[4221,11384,5626],{"class":4756},[4221,11386,4276],{"class":4571},[4221,11388,11389],{"class":4223,"line":7625},[4221,11390,5902],{"class":4723},[4221,11392,11393,11395,11397,11399,11401,11403,11405,11407,11409,11411,11413,11415,11417,11419,11421,11423,11425,11427,11429,11431,11433,11435],{"class":4223,"line":7650},[4221,11394,5908],{"class":4723},[4221,11396,4150],{"class":4575},[4221,11398,4807],{"class":4732},[4221,11400,4736],{"class":4532},[4221,11402,4739],{"class":4571},[4221,11404,5689],{"class":4756},[4221,11406,5657],{"class":4536},[4221,11408,5521],{"class":4536},[4221,11410,3785],{"class":4756},[4221,11412,4975],{"class":4536},[4221,11414,7538],{"class":4558},[4221,11416,5711],{"class":4756},[4221,11418,4822],{"class":4571},[4221,11420,4850],{"class":4723},[4221,11422,4739],{"class":4571},[4221,11424,4760],{"class":4536},[4221,11426,3793],{"class":4756},[4221,11428,4845],{"class":4536},[4221,11430,4822],{"class":4571},[4221,11432,4863],{"class":4723},[4221,11434,4150],{"class":4575},[4221,11436,4825],{"class":4723},[4221,11438,11439,11441,11443],{"class":4223,"line":7678},[4221,11440,6005],{"class":4723},[4221,11442,4147],{"class":4575},[4221,11444,4825],{"class":4723},[4221,11446,11447,11449],{"class":4223,"line":7686},[4221,11448,6015],{"class":4756},[4221,11450,4276],{"class":4571},[4221,11452,11453],{"class":4223,"line":7696},[4221,11454,6023],{"class":4723},[4221,11456,11457,11459,11461],{"class":4223,"line":7707},[4221,11458,6029],{"class":4723},[4221,11460,4147],{"class":4575},[4221,11462,4825],{"class":4723},[4221,11464,11465],{"class":4223,"line":7716},[4221,11466,4893],{"class":4532},[4221,11468,11469],{"class":4223,"line":7721},[4221,11470,4276],{"class":4532},[4221,11472,11473],{"class":4223,"line":7742},[4221,11474,4246],{"emptyLinePlaceholder":4245},[4221,11476,11477,11479,11481,11483,11485,11487,11489],{"class":4223,"line":7768},[4221,11478,4616],{"class":4571},[4221,11480,4908],{"class":4619},[4221,11482,4911],{"class":4532},[4221,11484,4549],{"class":4536},[4221,11486,3793],{"class":4532},[4221,11488,4918],{"class":4706},[4221,11490,4921],{"class":4532},[4221,11492,11493,11495,11497,11499,11501,11503,11505,11507,11509,11511,11513],{"class":4223,"line":7783},[4221,11494,6071],{"class":4536},[4221,11496,4533],{"class":4532},[4221,11498,6076],{"class":4536},[4221,11500,5383],{"class":4934},[4221,11502,3785],{"class":4532},[4221,11504,4931],{"class":4536},[4221,11506,4935],{"class":4934},[4221,11508,3785],{"class":4532},[4221,11510,6089],{"class":4536},[4221,11512,6092],{"class":4934},[4221,11514,4650],{"class":4532},[4221,11516,11517,11519,11521,11523,11525,11527,11529,11531],{"class":4223,"line":7791},[4221,11518,6100],{"class":4536},[4221,11520,4533],{"class":4532},[4221,11522,4968],{"class":4536},[4221,11524,6107],{"class":4934},[4221,11526,3785],{"class":4532},[4221,11528,4975],{"class":4536},[4221,11530,6114],{"class":4558},[4221,11532,4650],{"class":4532},[4221,11534,11535,11537,11539,11541,11543,11545,11548,11550,11552,11554,11556],{"class":4223,"line":7801},[4221,11536,6143],{"class":4536},[4221,11538,4533],{"class":4532},[4221,11540,7062],{"class":4536},[4221,11542,5383],{"class":4934},[4221,11544,3785],{"class":4532},[4221,11546,11547],{"class":4536},"borderRadius:",[4221,11549,6164],{"class":4934},[4221,11551,3785],{"class":4532},[4221,11553,4931],{"class":4536},[4221,11555,6175],{"class":4934},[4221,11557,4650],{"class":4532},[4221,11559,11560,11563,11565,11568,11570,11572,11575,11577],{"class":4223,"line":7812},[4221,11561,11562],{"class":4536},"  footer:",[4221,11564,4533],{"class":4532},[4221,11566,11567],{"class":4536},"paddingVertical:",[4221,11569,4935],{"class":4934},[4221,11571,3785],{"class":4532},[4221,11573,11574],{"class":4536},"alignItems:",[4221,11576,7405],{"class":4558},[4221,11578,4650],{"class":4532},[4221,11580,11581],{"class":4223,"line":7822},[4221,11582,4985],{"class":4532},[3960,11584],{},[3738,11586,11588,11589,11592],{"id":11587},"відстеження-видимості-елементів-viewabilityconfig-та-аналітика-показів","Відстеження видимості елементів: ",[3750,11590,11591],{},"viewabilityConfig"," та аналітика показів",[3743,11594,11595,11596,11599],{},"У багатьох мобільних застосунках недостатньо просто відрендерити список — необхідно точно знати, які саме елементи користувач ",[3770,11597,11598],{},"фактично бачить на екрані"," в конкретний момент часу.",[3743,11601,11602],{},"Типові сценарії використання:",[3814,11604,11605,11611,11617],{},[3817,11606,11607,11610],{},[3770,11608,11609],{},"Автоматичне відтворення медіа:"," запуск відеоролика, коли картка з'являється у видимій області на 60%+, та пауза при виході за межі екрана (патерн стрічок Instagram\u002FTikTok).",[3817,11612,11613,11616],{},[3770,11614,11615],{},"Маркетингова аналітика показів (Ad Impressions):"," фіксація факту перегляду рекламного банера за стандартом IAB (наприклад, елемент видно на 50%+ протягом щонайменше 1000 мс).",[3817,11618,11619,11622],{},[3770,11620,11621],{},"Оновлення навігаційних індикаторів:"," підсвічування активного розділу або дати при прокручуванні стрічки.",[3743,11624,11625,11627,11628,11632,11633,4997],{},[3750,11626,3784],{}," реалізує це через пару пропсів: конфігуратор ",[3770,11629,11630],{},[3750,11631,11591],{}," та обробник подій ",[3770,11634,11635],{},[3750,11636,11637],{},"onViewableItemsChanged",[4212,11639,11641],{"className":4519,"code":11640,"language":4521,"meta":4217,"style":4217},"import { useRef } from 'react';\nimport { FlatList, ViewToken } from 'react-native';\n\nexport function MonitoredTripList() {\n  \u002F\u002F 1. Конфігурація правил видимості\n  const viewabilityConfig = useRef({\n    itemVisiblePercentThreshold: 60, \u002F\u002F Елемент вважається видимим, якщо 60% його площі у viewport\n    minimumViewTime: 300, \u002F\u002F Час утримання в мілісекундах для зарахування показу\n  }).current;\n\n  \u002F\u002F 2. Колбек фіксації зміни видимості\n  const onViewableItemsChanged = useRef(\n    ({ viewableItems, changed }: { viewableItems: ViewToken[]; changed: ViewToken[] }) => {\n      viewableItems.forEach((token) => {\n        if (token.isViewable) {\n          console.log(`Елемент у фокусі користувача: ID ${token.item.id}, індекс ${token.index}`);\n        }\n      });\n    },\n  ).current;\n\n  return (\n    \u003CFlatList\n      data={trips}\n      renderItem={renderTrip}\n      viewabilityConfig={viewabilityConfig}\n      onViewableItemsChanged={onViewableItemsChanged}\n    \u002F>\n  );\n}\n",[3750,11642,11643,11659,11680,11684,11695,11700,11713,11726,11739,11748,11752,11757,11771,11809,11830,11847,11893,11897,11901,11906,11915,11919,11925,11931,11943,11956,11969,11982,11986,11990],{"__ignoreMap":4217},[4221,11644,11645,11647,11649,11651,11653,11655,11657],{"class":4223,"line":4224},[4221,11646,4529],{"class":4528},[4221,11648,4533],{"class":4532},[4221,11650,6350],{"class":4536},[4221,11652,4552],{"class":4532},[4221,11654,4555],{"class":4528},[4221,11656,6486],{"class":4558},[4221,11658,4562],{"class":4532},[4221,11660,11661,11663,11665,11667,11669,11672,11674,11676,11678],{"class":4223,"line":4230},[4221,11662,4529],{"class":4528},[4221,11664,4533],{"class":4532},[4221,11666,3784],{"class":4536},[4221,11668,3785],{"class":4532},[4221,11670,11671],{"class":4536},"ViewToken",[4221,11673,4552],{"class":4532},[4221,11675,4555],{"class":4528},[4221,11677,4559],{"class":4558},[4221,11679,4562],{"class":4532},[4221,11681,11682],{"class":4223,"line":4236},[4221,11683,4246],{"emptyLinePlaceholder":4245},[4221,11685,11686,11688,11690,11693],{"class":4223,"line":4242},[4221,11687,4700],{"class":4528},[4221,11689,4703],{"class":4571},[4221,11691,11692],{"class":4706}," MonitoredTripList",[4221,11694,4710],{"class":4532},[4221,11696,11697],{"class":4223,"line":4249},[4221,11698,11699],{"class":6282},"  \u002F\u002F 1. Конфігурація правил видимості\n",[4221,11701,11702,11704,11707,11709,11711],{"class":4223,"line":4255},[4221,11703,5452],{"class":4571},[4221,11705,11706],{"class":4619}," viewabilityConfig",[4221,11708,4911],{"class":4532},[4221,11710,6350],{"class":4706},[4221,11712,4921],{"class":4532},[4221,11714,11715,11718,11721,11723],{"class":4223,"line":4261},[4221,11716,11717],{"class":4536},"    itemVisiblePercentThreshold:",[4221,11719,11720],{"class":4934}," 60",[4221,11722,3785],{"class":4532},[4221,11724,11725],{"class":6282},"\u002F\u002F Елемент вважається видимим, якщо 60% його площі у viewport\n",[4221,11727,11728,11731,11734,11736],{"class":4223,"line":4267},[4221,11729,11730],{"class":4536},"    minimumViewTime:",[4221,11732,11733],{"class":4934}," 300",[4221,11735,3785],{"class":4532},[4221,11737,11738],{"class":6282},"\u002F\u002F Час утримання в мілісекундах для зарахування показу\n",[4221,11740,11741,11744,11746],{"class":4223,"line":4273},[4221,11742,11743],{"class":4532},"  }).",[4221,11745,8306],{"class":4536},[4221,11747,4562],{"class":4532},[4221,11749,11750],{"class":4223,"line":4279},[4221,11751,4246],{"emptyLinePlaceholder":4245},[4221,11753,11754],{"class":4223,"line":4284},[4221,11755,11756],{"class":6282},"  \u002F\u002F 2. Колбек фіксації зміни видимості\n",[4221,11758,11759,11761,11764,11766,11768],{"class":4223,"line":4290},[4221,11760,5452],{"class":4571},[4221,11762,11763],{"class":4619}," onViewableItemsChanged",[4221,11765,4911],{"class":4532},[4221,11767,6350],{"class":4706},[4221,11769,11770],{"class":4532},"(\n",[4221,11772,11773,11776,11779,11781,11784,11787,11789,11791,11793,11796,11798,11800,11802,11805,11807],{"class":4223,"line":4296},[4221,11774,11775],{"class":4532},"    ({ ",[4221,11777,11778],{"class":4536},"viewableItems",[4221,11780,3785],{"class":4532},[4221,11782,11783],{"class":4536},"changed",[4221,11785,11786],{"class":4532}," }: { ",[4221,11788,11778],{"class":4536},[4221,11790,4587],{"class":4532},[4221,11792,11671],{"class":4575},[4221,11794,11795],{"class":4532},"[]; ",[4221,11797,11783],{"class":4536},[4221,11799,4587],{"class":4532},[4221,11801,11671],{"class":4575},[4221,11803,11804],{"class":4532},"[] }) ",[4221,11806,4766],{"class":4571},[4221,11808,4579],{"class":4532},[4221,11810,11811,11814,11816,11819,11821,11824,11826,11828],{"class":4223,"line":4302},[4221,11812,11813],{"class":4536},"      viewableItems",[4221,11815,3793],{"class":4532},[4221,11817,11818],{"class":4706},"forEach",[4221,11820,6856],{"class":4532},[4221,11822,11823],{"class":4536},"token",[4221,11825,4763],{"class":4532},[4221,11827,4766],{"class":4571},[4221,11829,4579],{"class":4532},[4221,11831,11832,11835,11837,11839,11841,11844],{"class":4223,"line":4308},[4221,11833,11834],{"class":4528},"        if",[4221,11836,10727],{"class":4532},[4221,11838,11823],{"class":4536},[4221,11840,3793],{"class":4532},[4221,11842,11843],{"class":4536},"isViewable",[4221,11845,11846],{"class":4532},") {\n",[4221,11848,11849,11852,11854,11857,11859,11862,11864,11866,11868,11870,11872,11874,11876,11879,11881,11883,11885,11887,11889,11891],{"class":4223,"line":4314},[4221,11850,11851],{"class":4536},"          console",[4221,11853,3793],{"class":4532},[4221,11855,11856],{"class":4706},"log",[4221,11858,4757],{"class":4532},[4221,11860,11861],{"class":4558},"`Елемент у фокусі користувача: ID ",[4221,11863,5375],{"class":4571},[4221,11865,11823],{"class":4536},[4221,11867,3793],{"class":4756},[4221,11869,4760],{"class":4536},[4221,11871,3793],{"class":4756},[4221,11873,4774],{"class":4536},[4221,11875,4822],{"class":4571},[4221,11877,11878],{"class":4558},", індекс ",[4221,11880,5375],{"class":4571},[4221,11882,11823],{"class":4536},[4221,11884,3793],{"class":4756},[4221,11886,6303],{"class":4536},[4221,11888,4822],{"class":4571},[4221,11890,5388],{"class":4558},[4221,11892,8278],{"class":4532},[4221,11894,11895],{"class":4223,"line":4319},[4221,11896,7248],{"class":4532},[4221,11898,11899],{"class":4223,"line":4324},[4221,11900,10847],{"class":4532},[4221,11902,11903],{"class":4223,"line":4330},[4221,11904,11905],{"class":4532},"    },\n",[4221,11907,11908,11911,11913],{"class":4223,"line":4336},[4221,11909,11910],{"class":4532},"  ).",[4221,11912,8306],{"class":4536},[4221,11914,4562],{"class":4532},[4221,11916,11917],{"class":4223,"line":4342},[4221,11918,4246],{"emptyLinePlaceholder":4245},[4221,11920,11921,11923],{"class":4223,"line":4348},[4221,11922,4715],{"class":4528},[4221,11924,4718],{"class":4532},[4221,11926,11927,11929],{"class":4223,"line":4354},[4221,11928,4724],{"class":4723},[4221,11930,4727],{"class":4575},[4221,11932,11933,11935,11937,11939,11941],{"class":4223,"line":4360},[4221,11934,4733],{"class":4732},[4221,11936,4736],{"class":4532},[4221,11938,4739],{"class":4571},[4221,11940,8449],{"class":4536},[4221,11942,4276],{"class":4571},[4221,11944,11945,11947,11949,11951,11954],{"class":4223,"line":4365},[4221,11946,4781],{"class":4732},[4221,11948,4736],{"class":4532},[4221,11950,4739],{"class":4571},[4221,11952,11953],{"class":4536},"renderTrip",[4221,11955,4276],{"class":4571},[4221,11957,11958,11961,11963,11965,11967],{"class":4223,"line":4371},[4221,11959,11960],{"class":4732},"      viewabilityConfig",[4221,11962,4736],{"class":4532},[4221,11964,4739],{"class":4571},[4221,11966,11591],{"class":4536},[4221,11968,4276],{"class":4571},[4221,11970,11971,11974,11976,11978,11980],{"class":4223,"line":4377},[4221,11972,11973],{"class":4732},"      onViewableItemsChanged",[4221,11975,4736],{"class":4532},[4221,11977,4739],{"class":4571},[4221,11979,11637],{"class":4536},[4221,11981,4276],{"class":4571},[4221,11983,11984],{"class":4223,"line":4383},[4221,11985,4888],{"class":4723},[4221,11987,11988],{"class":4223,"line":4389},[4221,11989,4893],{"class":4532},[4221,11991,11992],{"class":4223,"line":4395},[4221,11993,4276],{"class":4532},[4106,11995,11996,12001,12002,12004,12005,12007,12008,12011,12012,12015,12016,3793],{},[3770,11997,11998,11999,3793],{},"Вимога незмінності посилання ",[3750,12000,11591],{}," Рушій React Native вимагає, щоб об'єкт ",[3750,12003,11591],{}," та функція ",[3750,12006,11637],{}," були абсолютно ",[3770,12009,12010],{},"стабільними за посиланням"," протягом усього життєвого циклу компонента. Зміна цих параметрів під час роботи викличе фатальну помилку: ",[3759,12013,12014],{},"«Changing onViewableItemsChanged on the fly is not supported»",". Завжди фіксуйте їх через ",[3750,12017,12018],{},"useRef(...).current",[3960,12020],{},[3738,12022,12024],{"id":12023},"управління-станами-списку-скінченний-автомат-відображення","Управління станами списку: скінченний автомат відображення",[3743,12026,12027,12028,12031,12032,12034],{},"Поширеною архітектурною помилкою початківців є зведення всіх нетипових станів інтерфейсу до єдиного прапорця ",[3750,12029,12030],{},"isLoading"," або використання ",[3750,12033,3853],{}," як універсального контейнера для помилок.",[3743,12036,12037,12038,12041],{},"Надійний інтерфейс списку функціонує як ",[3770,12039,12040],{},"скінченний автомат станів (State Machine)",", що гарантує відсутність взаємовиключних або амбівалентних відображень:",[3982,12043,12044,12060],{},[3985,12045,12046],{},[3988,12047,12048,12051,12054,12057],{},[3991,12049,12050],{"align":3993},"Стан автомата",[3991,12052,12053],{"align":3993},"Умови виникнення",[3991,12055,12056],{"align":3993},"Візуальне представлення в UI",[3991,12058,12059],{"align":3993},"Архітектурна поведінка",[4002,12061,12062,12088,12112,12136,12157,12177],{},[3988,12063,12064,12071,12074,12079],{},[4007,12065,12066],{"align":3993},[3770,12067,12068],{},[3750,12069,12070],{},"InitialLoading",[4007,12072,12073],{"align":3993},"Перший запуск екрана, дані в кеші відсутні.",[4007,12075,12076,12077,3793],{"align":3993},"Скелетонна розмітка (Skeleton Views) або центральний ",[3750,12078,11190],{},[4007,12080,12081,12082,12084,12085,12087],{"align":3993},"Список ",[3750,12083,3784],{}," не монтується; ",[3750,12086,3853],{}," заблокований, щоб не спалахувати перед завантаженням.",[3988,12089,12090,12097,12103,12109],{},[4007,12091,12092],{"align":3993},[3770,12093,12094],{},[3750,12095,12096],{},"SuccessWithData",[4007,12098,12099,12100,3793],{"align":3993},"Дані успішно отримані, ",[3750,12101,12102],{},"data.length > 0",[4007,12104,12105,12106,12108],{"align":3993},"Повноцінний віртуалізований ",[3750,12107,3784],{}," із рядками.",[4007,12110,12111],{"align":3993},"Працює віртуалізація, доступні жести та скрол.",[3988,12113,12114,12121,12126,12131],{},[4007,12115,12116],{"align":3993},[3770,12117,12118],{},[3750,12119,12120],{},"SuccessEmpty",[4007,12122,12123,12124,3909],{"align":3993},"Успішна відповідь сервера (HTTP 200), але масив порожній (",[3750,12125,5060],{},[4007,12127,12128,12130],{"align":3993},[3750,12129,3853],{}," із роз'ясненням та CTA-кнопкою (наприклад, «Створити першу поїздку»).",[4007,12132,12133,12134,3793],{"align":3993},"Полотно розтягується через ",[3750,12135,7931],{},[3988,12137,12138,12145,12148,12154],{},[4007,12139,12140],{"align":3993},[3770,12141,12142],{},[3750,12143,12144],{},"Error",[4007,12146,12147],{"align":3993},"Збій мережі (Network Failure), помилка сервера (5xx\u002F4xx) або парсингу.",[4007,12149,12150,12151,3909],{"align":3993},"Повноекранний стан помилки з ілюстрацією та кнопкою повторної спроби (",[3759,12152,12153],{},"Retry",[4007,12155,12156],{"align":3993},"Замінює список або відображається поверх нього у вигляді плаваючого банера.",[3988,12158,12159,12166,12169,12174],{},[4007,12160,12161],{"align":3993},[3770,12162,12163],{},[3750,12164,12165],{},"Refreshing",[4007,12167,12168],{"align":3993},"Користувач виконав жест pull-to-refresh під час наявності даних.",[4007,12170,12171,12172,3793],{"align":3993},"Поточні дані залишаються на екрані, зверху обертається індикатор ",[3750,12173,3865],{},[4007,12175,12176],{"align":3993},"Оптимістичне збереження попереднього стану (Stale-While-Revalidate).",[3988,12178,12179,12186,12189,12195],{},[4007,12180,12181],{"align":3993},[3770,12182,12183],{},[3750,12184,12185],{},"LoadingMore",[4007,12187,12188],{"align":3993},"Виконується довантаження наступної сторінки при скролі вниз.",[4007,12190,12191,12192,12194],{"align":3993},"Список залишається інтерактивним, у ",[3750,12193,3861],{}," монтується міні-спінер.",[4007,12196,12197,12198,12200],{"align":3993},"Блокується повторний запуск ",[3750,12199,3873],{}," до отримання відповіді.",[3928,12202,12203,12206,12207,12210],{},[3770,12204,12205],{},"Декларативне розділення помилки та порожнечі."," Ніколи не підміняйте масив даних порожнім масивом ",[3750,12208,12209],{},"[]"," у випадку помилки мережі. Порожній список означає: «Ми успішно перевірили базу даних, і там дійсно 0 записів». Помилка означає: «Ми не змогли зв'язатися з сервером, тому не знаємо, скільки там записів».",[3960,12212],{},[3738,12214,12216,12218],{"id":12215},"sectionlist-ієрархічні-та-груповані-структури-даних",[3750,12217,3788],{}," — ієрархічні та груповані структури даних",[3743,12220,12221,12222,3793],{},"У практиці розробки мобільних застосунків дані часто мають природну двовимірну ієрархію: телефонна книга з контактами за літерами алфавіту, розклад подій за днями тижня, фінансові транзакції за місяцями або ",[3770,12223,12224],{},"каталог книг за жанрами",[3743,12226,12227,12228,3793],{},"Для таких сценаріїв React Native надає спеціалізований віртуалізований компонент ",[3770,12229,12230],{},[3750,12231,3788],{},[3743,12233,12234],{},[4202,12235],{"alt":12236,"className":12237,"src":12238},"SectionList: секції з заголовками (наприклад, книги за жанром)",[4206],"\u002Fimages\u002Freact-native\u002Flists-and-virtualization\u002F04.svg",[4131,12240,12242],{"id":12241},"структура-даних-та-типізація-секцій","Структура даних та типізація секцій",[3743,12244,12245,12246,12248,12249,12251,12252,3785,12254,12256,12257,12260,12261,4997],{},"На відміну від ",[3750,12247,3784],{},", де проп ",[3750,12250,3837],{}," приймає одновимірний масив ",[3750,12253,4451],{},[3750,12255,3788],{}," оперує пропом ",[3750,12258,12259],{},"sections",", що приймає масив секційних об'єктів формату ",[3750,12262,12263],{},"SectionListData\u003CItemT, SectionT>[]",[4212,12265,12267],{"className":4519,"code":12266,"language":4521,"meta":4217,"style":4217},"interface Book {\n  id: string;\n  title: string;\n  author: string;\n}\n\ninterface BookSection {\n  title: string;\n  data: Book[];\n}\n\nconst CATALOG_SECTIONS: BookSection[] = [\n  {\n    title: 'Фантастика',\n    data: [\n      { id: 'b-1', title: 'Дюна', author: 'Френк Герберт' },\n      { id: 'b-2', title: 'Нейромант', author: 'Вільям Ґібсон' },\n    ],\n  },\n  {\n    title: 'Детективи',\n    data: [\n      { id: 'b-3', title: 'Ім’я троянди', author: 'Умберто Еко' },\n    ],\n  },\n];\n",[3750,12268,12269,12278,12288,12298,12309,12313,12317,12326,12336,12348,12352,12356,12370,12375,12384,12391,12418,12443,12448,12452,12456,12465,12471,12496,12500,12504],{"__ignoreMap":4217},[4221,12270,12271,12273,12276],{"class":4223,"line":4224},[4221,12272,4572],{"class":4571},[4221,12274,12275],{"class":4575}," Book",[4221,12277,4579],{"class":4532},[4221,12279,12280,12282,12284,12286],{"class":4223,"line":4230},[4221,12281,4584],{"class":4536},[4221,12283,4587],{"class":4532},[4221,12285,4590],{"class":4575},[4221,12287,4562],{"class":4532},[4221,12289,12290,12292,12294,12296],{"class":4223,"line":4236},[4221,12291,4597],{"class":4536},[4221,12293,4587],{"class":4532},[4221,12295,4590],{"class":4575},[4221,12297,4562],{"class":4532},[4221,12299,12300,12303,12305,12307],{"class":4223,"line":4242},[4221,12301,12302],{"class":4536},"  author",[4221,12304,4587],{"class":4532},[4221,12306,4590],{"class":4575},[4221,12308,4562],{"class":4532},[4221,12310,12311],{"class":4223,"line":4249},[4221,12312,4276],{"class":4532},[4221,12314,12315],{"class":4223,"line":4255},[4221,12316,4246],{"emptyLinePlaceholder":4245},[4221,12318,12319,12321,12324],{"class":4223,"line":4261},[4221,12320,4572],{"class":4571},[4221,12322,12323],{"class":4575}," BookSection",[4221,12325,4579],{"class":4532},[4221,12327,12328,12330,12332,12334],{"class":4223,"line":4267},[4221,12329,4597],{"class":4536},[4221,12331,4587],{"class":4532},[4221,12333,4590],{"class":4575},[4221,12335,4562],{"class":4532},[4221,12337,12338,12340,12342,12345],{"class":4223,"line":4273},[4221,12339,7979],{"class":4536},[4221,12341,4587],{"class":4532},[4221,12343,12344],{"class":4575},"Book",[4221,12346,12347],{"class":4532},"[];\n",[4221,12349,12350],{"class":4223,"line":4279},[4221,12351,4276],{"class":4532},[4221,12353,12354],{"class":4223,"line":4284},[4221,12355,4246],{"emptyLinePlaceholder":4245},[4221,12357,12358,12360,12363,12365,12368],{"class":4223,"line":4290},[4221,12359,4616],{"class":4571},[4221,12361,12362],{"class":4619}," CATALOG_SECTIONS",[4221,12364,4587],{"class":4532},[4221,12366,12367],{"class":4575},"BookSection",[4221,12369,4628],{"class":4532},[4221,12371,12372],{"class":4223,"line":4296},[4221,12373,12374],{"class":4532},"  {\n",[4221,12376,12377,12379,12382],{"class":4223,"line":4302},[4221,12378,8929],{"class":4536},[4221,12380,12381],{"class":4558}," 'Фантастика'",[4221,12383,5391],{"class":4532},[4221,12385,12386,12389],{"class":4223,"line":4308},[4221,12387,12388],{"class":4536},"    data:",[4221,12390,6866],{"class":4532},[4221,12392,12393,12396,12398,12401,12403,12405,12408,12410,12413,12416],{"class":4223,"line":4314},[4221,12394,12395],{"class":4532},"      { ",[4221,12397,4636],{"class":4536},[4221,12399,12400],{"class":4558}," 'b-1'",[4221,12402,3785],{"class":4532},[4221,12404,4644],{"class":4536},[4221,12406,12407],{"class":4558}," 'Дюна'",[4221,12409,3785],{"class":4532},[4221,12411,12412],{"class":4536},"author:",[4221,12414,12415],{"class":4558}," 'Френк Герберт'",[4221,12417,4650],{"class":4532},[4221,12419,12420,12422,12424,12427,12429,12431,12434,12436,12438,12441],{"class":4223,"line":4319},[4221,12421,12395],{"class":4532},[4221,12423,4636],{"class":4536},[4221,12425,12426],{"class":4558}," 'b-2'",[4221,12428,3785],{"class":4532},[4221,12430,4644],{"class":4536},[4221,12432,12433],{"class":4558}," 'Нейромант'",[4221,12435,3785],{"class":4532},[4221,12437,12412],{"class":4536},[4221,12439,12440],{"class":4558}," 'Вільям Ґібсон'",[4221,12442,4650],{"class":4532},[4221,12444,12445],{"class":4223,"line":4324},[4221,12446,12447],{"class":4532},"    ],\n",[4221,12449,12450],{"class":4223,"line":4330},[4221,12451,6183],{"class":4532},[4221,12453,12454],{"class":4223,"line":4336},[4221,12455,12374],{"class":4532},[4221,12457,12458,12460,12463],{"class":4223,"line":4342},[4221,12459,8929],{"class":4536},[4221,12461,12462],{"class":4558}," 'Детективи'",[4221,12464,5391],{"class":4532},[4221,12466,12467,12469],{"class":4223,"line":4348},[4221,12468,12388],{"class":4536},[4221,12470,6866],{"class":4532},[4221,12472,12473,12475,12477,12480,12482,12484,12487,12489,12491,12494],{"class":4223,"line":4354},[4221,12474,12395],{"class":4532},[4221,12476,4636],{"class":4536},[4221,12478,12479],{"class":4558}," 'b-3'",[4221,12481,3785],{"class":4532},[4221,12483,4644],{"class":4536},[4221,12485,12486],{"class":4558}," 'Ім’я троянди'",[4221,12488,3785],{"class":4532},[4221,12490,12412],{"class":4536},[4221,12492,12493],{"class":4558}," 'Умберто Еко'",[4221,12495,4650],{"class":4532},[4221,12497,12498],{"class":4223,"line":4360},[4221,12499,12447],{"class":4532},[4221,12501,12502],{"class":4223,"line":4365},[4221,12503,6183],{"class":4532},[4221,12505,12506],{"class":4223,"line":4371},[4221,12507,4691],{"class":4532},[4131,12509,12511,12512],{"id":12510},"анатомія-рендерингу-sectionlist","Анатомія рендерингу ",[3750,12513,3788],{},[3743,12515,12516,12518],{},[3750,12517,3788],{}," використовує роздільні фабрики рендерингу для елементів та заголовків:",[8612,12520,12521,12534,12545],{},[3817,12522,12523,12527,12528,12530,12531,3793],{},[3770,12524,12525,4997],{},[3750,12526,3840],{}," відповідає за відображення одного елемента ",[3750,12529,4760],{}," з внутрішнього масиву ",[3750,12532,12533],{},"section.data",[3817,12535,12536,12541,12542,3909],{},[3770,12537,12538,4997],{},[3750,12539,12540],{},"renderSectionHeader"," відповідає за відображення заголовка секції (",[3750,12543,12544],{},"section.title",[3817,12546,12547,12552],{},[3770,12548,12549],{},[3750,12550,12551],{},"renderSectionFooter"," (опціонально): дозволяє виводити підсумкову інформацію секції (наприклад, сумарний баланс за місяць).",[4212,12554,12556],{"className":4519,"code":12555,"language":4521,"meta":4217,"style":4217},"\u003CSectionList\n  sections={CATALOG_SECTIONS}\n  keyExtractor={(item) => item.id}\n  renderItem={({ item }) => \u003CBookRow book={item} \u002F>}\n  renderSectionHeader={({ section: { title } }) => (\n    \u003CView style={styles.header}>\n      \u003CText style={styles.headerTitle}>{title}\u003C\u002FText>\n    \u003C\u002FView>\n  )}\n  stickySectionHeadersEnabled\n\u002F>\n",[3750,12557,12558,12565,12579,12603,12639,12665,12688,12723,12731,12738,12743],{"__ignoreMap":4217},[4221,12559,12560,12562],{"class":4223,"line":4224},[4221,12561,6756],{"class":4723},[4221,12563,12564],{"class":4575},"SectionList\n",[4221,12566,12567,12570,12572,12574,12577],{"class":4223,"line":4230},[4221,12568,12569],{"class":4732},"  sections",[4221,12571,4736],{"class":4532},[4221,12573,4739],{"class":4571},[4221,12575,12576],{"class":4619},"CATALOG_SECTIONS",[4221,12578,4276],{"class":4571},[4221,12580,12581,12583,12585,12587,12589,12591,12593,12595,12597,12599,12601],{"class":4223,"line":4236},[4221,12582,7993],{"class":4732},[4221,12584,4736],{"class":4532},[4221,12586,4739],{"class":4571},[4221,12588,4757],{"class":4756},[4221,12590,4760],{"class":4536},[4221,12592,4763],{"class":4756},[4221,12594,4766],{"class":4571},[4221,12596,4769],{"class":4536},[4221,12598,3793],{"class":4756},[4221,12600,4774],{"class":4536},[4221,12602,4276],{"class":4571},[4221,12604,12605,12607,12609,12611,12613,12615,12617,12619,12621,12624,12627,12629,12631,12633,12635,12637],{"class":4223,"line":4242},[4221,12606,8049],{"class":4732},[4221,12608,4736],{"class":4532},[4221,12610,4739],{"class":4571},[4221,12612,4788],{"class":4756},[4221,12614,4760],{"class":4536},[4221,12616,4793],{"class":4756},[4221,12618,4766],{"class":4571},[4221,12620,8064],{"class":4723},[4221,12622,12623],{"class":4575},"BookRow",[4221,12625,12626],{"class":4732}," book",[4221,12628,4736],{"class":4532},[4221,12630,4739],{"class":4571},[4221,12632,4760],{"class":4536},[4221,12634,4822],{"class":4571},[4221,12636,8081],{"class":4723},[4221,12638,4276],{"class":4571},[4221,12640,12641,12644,12646,12648,12650,12653,12656,12658,12661,12663],{"class":4223,"line":4249},[4221,12642,12643],{"class":4732},"  renderSectionHeader",[4221,12645,4736],{"class":4532},[4221,12647,4739],{"class":4571},[4221,12649,4788],{"class":4756},[4221,12651,12652],{"class":4536},"section",[4221,12654,12655],{"class":4756},": { ",[4221,12657,4845],{"class":4536},[4221,12659,12660],{"class":4756}," } }) ",[4221,12662,4766],{"class":4571},[4221,12664,4718],{"class":4756},[4221,12666,12667,12669,12671,12673,12675,12677,12679,12681,12684,12686],{"class":4223,"line":4255},[4221,12668,4724],{"class":4723},[4221,12670,4147],{"class":4575},[4221,12672,4807],{"class":4732},[4221,12674,4736],{"class":4532},[4221,12676,4739],{"class":4571},[4221,12678,4814],{"class":4536},[4221,12680,3793],{"class":4756},[4221,12682,12683],{"class":4536},"header",[4221,12685,4822],{"class":4571},[4221,12687,4825],{"class":4723},[4221,12689,12690,12692,12694,12696,12698,12700,12702,12704,12707,12709,12711,12713,12715,12717,12719,12721],{"class":4223,"line":4261},[4221,12691,5635],{"class":4723},[4221,12693,4150],{"class":4575},[4221,12695,4807],{"class":4732},[4221,12697,4736],{"class":4532},[4221,12699,4739],{"class":4571},[4221,12701,4814],{"class":4536},[4221,12703,3793],{"class":4756},[4221,12705,12706],{"class":4536},"headerTitle",[4221,12708,4822],{"class":4571},[4221,12710,4850],{"class":4723},[4221,12712,4739],{"class":4571},[4221,12714,4845],{"class":4536},[4221,12716,4822],{"class":4571},[4221,12718,4863],{"class":4723},[4221,12720,4150],{"class":4575},[4221,12722,4825],{"class":4723},[4221,12724,12725,12727,12729],{"class":4223,"line":4267},[4221,12726,6029],{"class":4723},[4221,12728,4147],{"class":4575},[4221,12730,4825],{"class":4723},[4221,12732,12733,12736],{"class":4223,"line":4273},[4221,12734,12735],{"class":4756},"  )",[4221,12737,4276],{"class":4571},[4221,12739,12740],{"class":4223,"line":4279},[4221,12741,12742],{"class":4732},"  stickySectionHeadersEnabled\n",[4221,12744,12745],{"class":4223,"line":4284},[4221,12746,8088],{"class":4723},[4131,12748,12750],{"id":12749},"механіка-прилипання-заголовків-sticky-headers","Механіка прилипання заголовків (Sticky Headers)",[3743,12752,12753,12754,12758],{},"Властивість ",[3770,12755,12756],{},[3750,12757,3886],{}," визначає поведінку заголовків під час прокручування:",[12760,12761,12762,12775],"tabs",{},[12763,12764,12766,12767,12771,12772,3909],"tab",{"label":12765},"iOS","За замовчуванням властивість має значення ",[3770,12768,12769],{},[3750,12770,9228],{},". Заголовок поточної секції «прилипає» до верхньої межі вікна перегляду списку і залишається нерухомим, доки знизу не підійде заголовок наступної секції, який плавно виштовхує попередній за межі екрана. Це автентична поведінка нативних таблиць iOS (",[3750,12773,12774],{},"UITableViewStylePlain",[12763,12776,12766,12778,12782,12783,12786,12787,12790],{"label":12777},"Android",[3770,12779,12780],{},[3750,12781,8691],{},", оскільки історично в Android Material Guidelines прилипання заголовків у ",[3750,12784,12785],{},"RecyclerView"," не було стандартним патерном. Якщо дизайн-система вимагає липких заголовків на обох платформах, встановіть ",[3750,12788,12789],{},"stickySectionHeadersEnabled={true}"," явно та перевірте відсутність артефактів накладання тіней.",[3743,12792,12793],{},"::",[4131,12795,12797],{"id":12796},"демо-секції","Демо: секції",[5209,12799,12803],{"device":5211,"filename":12800,"height":12801,"title":12802},"SectionListDemo.tsx",620,"SectionList · жанри",[4212,12804,12806],{"className":4519,"code":12805,"language":4521,"meta":4217,"style":4217},"import {\n  SectionList,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Book = { id: string; title: string; author: string };\n\nconst SECTIONS: { title: string; data: Book[] }[] = [\n  {\n    title: 'Фантастика',\n    data: [\n      { id: '1', title: 'Дюна', author: 'Ф. Герберт' },\n      { id: '2', title: 'Ліва рука темряви', author: 'У. Ле Ґуїн' },\n      { id: '3', title: 'Нейромант', author: 'В. Ґібсон' },\n    ],\n  },\n  {\n    title: 'Детектив',\n    data: [\n      { id: '4', title: 'Ім’я троянди', author: 'У. Еко' },\n      { id: '5', title: 'Дівчина з тату', author: 'С. Ларссон' },\n    ],\n  },\n  {\n    title: 'Подорожі',\n    data: [\n      { id: '6', title: 'Дорога', author: 'Дж. Керуак' },\n      { id: '7', title: 'Холод', author: 'А. Камю' },\n      { id: '8', title: 'Nomad notes', author: 'Анонім' },\n    ],\n  },\n];\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const primary = dark ? '#3b82f6' : '#2563eb';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n  const headerBg = dark ? '#111' : '#e2e8f0';\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: bg }]}>\n      \u003CText style={[styles.h, { color: text }]}>Каталог · SectionList\u003C\u002FText>\n      \u003CSectionList\n        style={{ flex: 1 }}\n        sections={SECTIONS}\n        keyExtractor={(item) => item.id}\n        stickySectionHeadersEnabled\n        contentContainerStyle={{ paddingBottom: 24 }}\n        renderSectionHeader={({ section: { title } }) => (\n          \u003CView style={[styles.sec, { backgroundColor: headerBg }]}>\n            \u003CText style={{ color: primary, fontWeight: '800' }}>{title}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        renderItem={({ item }) => (\n          \u003CView\n            style={[styles.row, { backgroundColor: surface, borderColor: border }]}\n          >\n            \u003CText style={{ color: text, fontWeight: '700' }}>{item.title}\u003C\u002FText>\n            \u003CText style={{ color: muted, marginTop: 4 }}>{item.author}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        ItemSeparatorComponent={() => \u003CView style={{ height: 8 }} \u002F>}\n        SectionSeparatorComponent={() => \u003CView style={{ height: 12 }} \u002F>}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16, paddingTop: 24 },\n  h: { fontSize: 20, fontWeight: '800', marginBottom: 12 },\n  sec: {\n    paddingVertical: 8,\n    paddingHorizontal: 10,\n    borderRadius: 8,\n    marginBottom: 8,\n  },\n  row: {\n    borderWidth: 1,\n    borderRadius: 12,\n    padding: 14,\n  },\n});\n",[3750,12807,12808,12814,12821,12827,12833,12839,12845,12855,12859,12892,12896,12922,12926,12934,12940,12964,12989,13013,13017,13021,13025,13034,13040,13064,13089,13093,13097,13101,13110,13116,13141,13166,13191,13195,13199,13203,13207,13219,13235,13255,13275,13295,13315,13335,13355,13377,13381,13387,13419,13460,13466,13484,13498,13522,13527,13545,13568,13601,13643,13651,13657,13675,13681,13713,13717,13763,13809,13817,13823,13861,13898,13902,13910,13914,13918,13922,13938,13962,13986,13993,14001,14009,14017,14025,14029,14035,14043,14051,14059,14063],{"__ignoreMap":4217},[4221,12809,12810,12812],{"class":4223,"line":4224},[4221,12811,4529],{"class":4528},[4221,12813,4579],{"class":4532},[4221,12815,12816,12819],{"class":4223,"line":4230},[4221,12817,12818],{"class":4536},"  SectionList",[4221,12820,5391],{"class":4532},[4221,12822,12823,12825],{"class":4223,"line":4236},[4221,12824,6513],{"class":4536},[4221,12826,5391],{"class":4532},[4221,12828,12829,12831],{"class":4223,"line":4242},[4221,12830,6520],{"class":4536},[4221,12832,5391],{"class":4532},[4221,12834,12835,12837],{"class":4223,"line":4249},[4221,12836,6527],{"class":4536},[4221,12838,5391],{"class":4532},[4221,12840,12841,12843],{"class":4223,"line":4255},[4221,12842,6534],{"class":4536},[4221,12844,5391],{"class":4532},[4221,12846,12847,12849,12851,12853],{"class":4223,"line":4261},[4221,12848,6541],{"class":4532},[4221,12850,4555],{"class":4528},[4221,12852,4559],{"class":4558},[4221,12854,4562],{"class":4532},[4221,12856,12857],{"class":4223,"line":4267},[4221,12858,4246],{"emptyLinePlaceholder":4245},[4221,12860,12861,12863,12865,12867,12869,12871,12873,12875,12877,12879,12881,12883,12886,12888,12890],{"class":4223,"line":4273},[4221,12862,5261],{"class":4571},[4221,12864,12275],{"class":4575},[4221,12866,5267],{"class":4532},[4221,12868,4774],{"class":4536},[4221,12870,4587],{"class":4532},[4221,12872,4590],{"class":4575},[4221,12874,5276],{"class":4532},[4221,12876,4845],{"class":4536},[4221,12878,4587],{"class":4532},[4221,12880,4590],{"class":4575},[4221,12882,5276],{"class":4532},[4221,12884,12885],{"class":4536},"author",[4221,12887,4587],{"class":4532},[4221,12889,4590],{"class":4575},[4221,12891,5294],{"class":4532},[4221,12893,12894],{"class":4223,"line":4279},[4221,12895,4246],{"emptyLinePlaceholder":4245},[4221,12897,12898,12900,12903,12905,12907,12909,12911,12913,12915,12917,12919],{"class":4223,"line":4284},[4221,12899,4616],{"class":4571},[4221,12901,12902],{"class":4619}," SECTIONS",[4221,12904,12655],{"class":4532},[4221,12906,4845],{"class":4536},[4221,12908,4587],{"class":4532},[4221,12910,4590],{"class":4575},[4221,12912,5276],{"class":4532},[4221,12914,3837],{"class":4536},[4221,12916,4587],{"class":4532},[4221,12918,12344],{"class":4575},[4221,12920,12921],{"class":4532},"[] }[] = [\n",[4221,12923,12924],{"class":4223,"line":4290},[4221,12925,12374],{"class":4532},[4221,12927,12928,12930,12932],{"class":4223,"line":4296},[4221,12929,8929],{"class":4536},[4221,12931,12381],{"class":4558},[4221,12933,5391],{"class":4532},[4221,12935,12936,12938],{"class":4223,"line":4302},[4221,12937,12388],{"class":4536},[4221,12939,6866],{"class":4532},[4221,12941,12942,12944,12946,12949,12951,12953,12955,12957,12959,12962],{"class":4223,"line":4308},[4221,12943,12395],{"class":4532},[4221,12945,4636],{"class":4536},[4221,12947,12948],{"class":4558}," '1'",[4221,12950,3785],{"class":4532},[4221,12952,4644],{"class":4536},[4221,12954,12407],{"class":4558},[4221,12956,3785],{"class":4532},[4221,12958,12412],{"class":4536},[4221,12960,12961],{"class":4558}," 'Ф. Герберт'",[4221,12963,4650],{"class":4532},[4221,12965,12966,12968,12970,12973,12975,12977,12980,12982,12984,12987],{"class":4223,"line":4314},[4221,12967,12395],{"class":4532},[4221,12969,4636],{"class":4536},[4221,12971,12972],{"class":4558}," '2'",[4221,12974,3785],{"class":4532},[4221,12976,4644],{"class":4536},[4221,12978,12979],{"class":4558}," 'Ліва рука темряви'",[4221,12981,3785],{"class":4532},[4221,12983,12412],{"class":4536},[4221,12985,12986],{"class":4558}," 'У. Ле Ґуїн'",[4221,12988,4650],{"class":4532},[4221,12990,12991,12993,12995,12998,13000,13002,13004,13006,13008,13011],{"class":4223,"line":4319},[4221,12992,12395],{"class":4532},[4221,12994,4636],{"class":4536},[4221,12996,12997],{"class":4558}," '3'",[4221,12999,3785],{"class":4532},[4221,13001,4644],{"class":4536},[4221,13003,12433],{"class":4558},[4221,13005,3785],{"class":4532},[4221,13007,12412],{"class":4536},[4221,13009,13010],{"class":4558}," 'В. Ґібсон'",[4221,13012,4650],{"class":4532},[4221,13014,13015],{"class":4223,"line":4324},[4221,13016,12447],{"class":4532},[4221,13018,13019],{"class":4223,"line":4330},[4221,13020,6183],{"class":4532},[4221,13022,13023],{"class":4223,"line":4336},[4221,13024,12374],{"class":4532},[4221,13026,13027,13029,13032],{"class":4223,"line":4342},[4221,13028,8929],{"class":4536},[4221,13030,13031],{"class":4558}," 'Детектив'",[4221,13033,5391],{"class":4532},[4221,13035,13036,13038],{"class":4223,"line":4348},[4221,13037,12388],{"class":4536},[4221,13039,6866],{"class":4532},[4221,13041,13042,13044,13046,13049,13051,13053,13055,13057,13059,13062],{"class":4223,"line":4354},[4221,13043,12395],{"class":4532},[4221,13045,4636],{"class":4536},[4221,13047,13048],{"class":4558}," '4'",[4221,13050,3785],{"class":4532},[4221,13052,4644],{"class":4536},[4221,13054,12486],{"class":4558},[4221,13056,3785],{"class":4532},[4221,13058,12412],{"class":4536},[4221,13060,13061],{"class":4558}," 'У. Еко'",[4221,13063,4650],{"class":4532},[4221,13065,13066,13068,13070,13073,13075,13077,13080,13082,13084,13087],{"class":4223,"line":4360},[4221,13067,12395],{"class":4532},[4221,13069,4636],{"class":4536},[4221,13071,13072],{"class":4558}," '5'",[4221,13074,3785],{"class":4532},[4221,13076,4644],{"class":4536},[4221,13078,13079],{"class":4558}," 'Дівчина з тату'",[4221,13081,3785],{"class":4532},[4221,13083,12412],{"class":4536},[4221,13085,13086],{"class":4558}," 'С. Ларссон'",[4221,13088,4650],{"class":4532},[4221,13090,13091],{"class":4223,"line":4365},[4221,13092,12447],{"class":4532},[4221,13094,13095],{"class":4223,"line":4371},[4221,13096,6183],{"class":4532},[4221,13098,13099],{"class":4223,"line":4377},[4221,13100,12374],{"class":4532},[4221,13102,13103,13105,13108],{"class":4223,"line":4383},[4221,13104,8929],{"class":4536},[4221,13106,13107],{"class":4558}," 'Подорожі'",[4221,13109,5391],{"class":4532},[4221,13111,13112,13114],{"class":4223,"line":4389},[4221,13113,12388],{"class":4536},[4221,13115,6866],{"class":4532},[4221,13117,13118,13120,13122,13125,13127,13129,13132,13134,13136,13139],{"class":4223,"line":4395},[4221,13119,12395],{"class":4532},[4221,13121,4636],{"class":4536},[4221,13123,13124],{"class":4558}," '6'",[4221,13126,3785],{"class":4532},[4221,13128,4644],{"class":4536},[4221,13130,13131],{"class":4558}," 'Дорога'",[4221,13133,3785],{"class":4532},[4221,13135,12412],{"class":4536},[4221,13137,13138],{"class":4558}," 'Дж. Керуак'",[4221,13140,4650],{"class":4532},[4221,13142,13143,13145,13147,13150,13152,13154,13157,13159,13161,13164],{"class":4223,"line":4400},[4221,13144,12395],{"class":4532},[4221,13146,4636],{"class":4536},[4221,13148,13149],{"class":4558}," '7'",[4221,13151,3785],{"class":4532},[4221,13153,4644],{"class":4536},[4221,13155,13156],{"class":4558}," 'Холод'",[4221,13158,3785],{"class":4532},[4221,13160,12412],{"class":4536},[4221,13162,13163],{"class":4558}," 'А. Камю'",[4221,13165,4650],{"class":4532},[4221,13167,13168,13170,13172,13175,13177,13179,13182,13184,13186,13189],{"class":4223,"line":4405},[4221,13169,12395],{"class":4532},[4221,13171,4636],{"class":4536},[4221,13173,13174],{"class":4558}," '8'",[4221,13176,3785],{"class":4532},[4221,13178,4644],{"class":4536},[4221,13180,13181],{"class":4558}," 'Nomad notes'",[4221,13183,3785],{"class":4532},[4221,13185,12412],{"class":4536},[4221,13187,13188],{"class":4558}," 'Анонім'",[4221,13190,4650],{"class":4532},[4221,13192,13193],{"class":4223,"line":5860},[4221,13194,12447],{"class":4532},[4221,13196,13197],{"class":4223,"line":5873},[4221,13198,6183],{"class":4532},[4221,13200,13201],{"class":4223,"line":5891},[4221,13202,4691],{"class":4532},[4221,13204,13205],{"class":4223,"line":5899},[4221,13206,4246],{"emptyLinePlaceholder":4245},[4221,13208,13209,13211,13213,13215,13217],{"class":4223,"line":5905},[4221,13210,4700],{"class":4528},[4221,13212,5440],{"class":4528},[4221,13214,4703],{"class":4571},[4221,13216,5445],{"class":4706},[4221,13218,4710],{"class":4532},[4221,13220,13221,13223,13225,13227,13229,13231,13233],{"class":4223,"line":5955},[4221,13222,5452],{"class":4571},[4221,13224,5455],{"class":4619},[4221,13226,4911],{"class":4532},[4221,13228,5244],{"class":4706},[4221,13230,5462],{"class":4532},[4221,13232,5465],{"class":4558},[4221,13234,4562],{"class":4532},[4221,13236,13237,13239,13241,13243,13245,13247,13249,13251,13253],{"class":4223,"line":6002},[4221,13238,5452],{"class":4571},[4221,13240,5474],{"class":4619},[4221,13242,4911],{"class":4532},[4221,13244,5479],{"class":4536},[4221,13246,5413],{"class":4532},[4221,13248,5484],{"class":4558},[4221,13250,5419],{"class":4532},[4221,13252,5489],{"class":4558},[4221,13254,4562],{"class":4532},[4221,13256,13257,13259,13261,13263,13265,13267,13269,13271,13273],{"class":4223,"line":6012},[4221,13258,5452],{"class":4571},[4221,13260,5498],{"class":4619},[4221,13262,4911],{"class":4532},[4221,13264,5479],{"class":4536},[4221,13266,5413],{"class":4532},[4221,13268,5507],{"class":4558},[4221,13270,5419],{"class":4532},[4221,13272,5512],{"class":4558},[4221,13274,4562],{"class":4532},[4221,13276,13277,13279,13281,13283,13285,13287,13289,13291,13293],{"class":4223,"line":6020},[4221,13278,5452],{"class":4571},[4221,13280,5521],{"class":4619},[4221,13282,4911],{"class":4532},[4221,13284,5479],{"class":4536},[4221,13286,5413],{"class":4532},[4221,13288,5530],{"class":4558},[4221,13290,5419],{"class":4532},[4221,13292,5535],{"class":4558},[4221,13294,4562],{"class":4532},[4221,13296,13297,13299,13301,13303,13305,13307,13309,13311,13313],{"class":4223,"line":6026},[4221,13298,5452],{"class":4571},[4221,13300,5544],{"class":4619},[4221,13302,4911],{"class":4532},[4221,13304,5479],{"class":4536},[4221,13306,5413],{"class":4532},[4221,13308,5553],{"class":4558},[4221,13310,5419],{"class":4532},[4221,13312,5558],{"class":4558},[4221,13314,4562],{"class":4532},[4221,13316,13317,13319,13321,13323,13325,13327,13329,13331,13333],{"class":4223,"line":6036},[4221,13318,5452],{"class":4571},[4221,13320,6694],{"class":4619},[4221,13322,4911],{"class":4532},[4221,13324,5479],{"class":4536},[4221,13326,5413],{"class":4532},[4221,13328,6703],{"class":4558},[4221,13330,5419],{"class":4532},[4221,13332,6708],{"class":4558},[4221,13334,4562],{"class":4532},[4221,13336,13337,13339,13341,13343,13345,13347,13349,13351,13353],{"class":4223,"line":6041},[4221,13338,5452],{"class":4571},[4221,13340,5567],{"class":4619},[4221,13342,4911],{"class":4532},[4221,13344,5479],{"class":4536},[4221,13346,5413],{"class":4532},[4221,13348,5576],{"class":4558},[4221,13350,5419],{"class":4532},[4221,13352,5581],{"class":4558},[4221,13354,4562],{"class":4532},[4221,13356,13357,13359,13362,13364,13366,13368,13371,13373,13375],{"class":4223,"line":6046},[4221,13358,5452],{"class":4571},[4221,13360,13361],{"class":4619}," headerBg",[4221,13363,4911],{"class":4532},[4221,13365,5479],{"class":4536},[4221,13367,5413],{"class":4532},[4221,13369,13370],{"class":4558},"'#111'",[4221,13372,5419],{"class":4532},[4221,13374,5581],{"class":4558},[4221,13376,4562],{"class":4532},[4221,13378,13379],{"class":4223,"line":6051},[4221,13380,4246],{"emptyLinePlaceholder":4245},[4221,13382,13383,13385],{"class":4223,"line":6068},[4221,13384,4715],{"class":4528},[4221,13386,4718],{"class":4532},[4221,13388,13389,13391,13393,13395,13397,13399,13401,13403,13405,13407,13409,13411,13413,13415,13417],{"class":4223,"line":6097},[4221,13390,4724],{"class":4723},[4221,13392,4147],{"class":4575},[4221,13394,4807],{"class":4732},[4221,13396,4736],{"class":4532},[4221,13398,4739],{"class":4571},[4221,13400,5608],{"class":4756},[4221,13402,4814],{"class":4536},[4221,13404,3793],{"class":4756},[4221,13406,5615],{"class":4536},[4221,13408,5618],{"class":4756},[4221,13410,5621],{"class":4536},[4221,13412,5474],{"class":4536},[4221,13414,5626],{"class":4756},[4221,13416,4822],{"class":4571},[4221,13418,4825],{"class":4723},[4221,13420,13421,13423,13425,13427,13429,13431,13433,13435,13437,13439,13441,13443,13445,13447,13449,13451,13454,13456,13458],{"class":4223,"line":6126},[4221,13422,5635],{"class":4723},[4221,13424,4150],{"class":4575},[4221,13426,4807],{"class":4732},[4221,13428,4736],{"class":4532},[4221,13430,4739],{"class":4571},[4221,13432,5608],{"class":4756},[4221,13434,4814],{"class":4536},[4221,13436,3793],{"class":4756},[4221,13438,5652],{"class":4536},[4221,13440,5618],{"class":4756},[4221,13442,5657],{"class":4536},[4221,13444,5521],{"class":4536},[4221,13446,5626],{"class":4756},[4221,13448,4822],{"class":4571},[4221,13450,4850],{"class":4723},[4221,13452,13453],{"class":4532},"Каталог · SectionList",[4221,13455,4863],{"class":4723},[4221,13457,4150],{"class":4575},[4221,13459,4825],{"class":4723},[4221,13461,13462,13464],{"class":4223,"line":6140},[4221,13463,5635],{"class":4723},[4221,13465,12564],{"class":4575},[4221,13467,13468,13470,13472,13474,13476,13478,13480,13482],{"class":4223,"line":6148},[4221,13469,5740],{"class":4732},[4221,13471,4736],{"class":4532},[4221,13473,4739],{"class":4571},[4221,13475,5689],{"class":4756},[4221,13477,6076],{"class":4536},[4221,13479,5383],{"class":4934},[4221,13481,5711],{"class":4756},[4221,13483,4276],{"class":4571},[4221,13485,13486,13489,13491,13493,13496],{"class":4223,"line":6158},[4221,13487,13488],{"class":4732},"        sections",[4221,13490,4736],{"class":4532},[4221,13492,4739],{"class":4571},[4221,13494,13495],{"class":4619},"SECTIONS",[4221,13497,4276],{"class":4571},[4221,13499,13500,13502,13504,13506,13508,13510,13512,13514,13516,13518,13520],{"class":4223,"line":6169},[4221,13501,5772],{"class":4732},[4221,13503,4736],{"class":4532},[4221,13505,4739],{"class":4571},[4221,13507,4757],{"class":4756},[4221,13509,4760],{"class":4536},[4221,13511,4763],{"class":4756},[4221,13513,4766],{"class":4571},[4221,13515,4769],{"class":4536},[4221,13517,3793],{"class":4756},[4221,13519,4774],{"class":4536},[4221,13521,4276],{"class":4571},[4221,13523,13524],{"class":4223,"line":6180},[4221,13525,13526],{"class":4732},"        stickySectionHeadersEnabled\n",[4221,13528,13529,13531,13533,13535,13537,13539,13541,13543],{"class":4223,"line":6186},[4221,13530,5797],{"class":4732},[4221,13532,4736],{"class":4532},[4221,13534,4739],{"class":4571},[4221,13536,5689],{"class":4756},[4221,13538,5806],{"class":4536},[4221,13540,6092],{"class":4934},[4221,13542,5711],{"class":4756},[4221,13544,4276],{"class":4571},[4221,13546,13547,13550,13552,13554,13556,13558,13560,13562,13564,13566],{"class":4223,"line":6212},[4221,13548,13549],{"class":4732},"        renderSectionHeader",[4221,13551,4736],{"class":4532},[4221,13553,4739],{"class":4571},[4221,13555,4788],{"class":4756},[4221,13557,12652],{"class":4536},[4221,13559,12655],{"class":4756},[4221,13561,4845],{"class":4536},[4221,13563,12660],{"class":4756},[4221,13565,4766],{"class":4571},[4221,13567,4718],{"class":4756},[4221,13569,13570,13572,13574,13576,13578,13580,13582,13584,13586,13589,13591,13593,13595,13597,13599],{"class":4223,"line":7314},[4221,13571,4830],{"class":4723},[4221,13573,4147],{"class":4575},[4221,13575,4807],{"class":4732},[4221,13577,4736],{"class":4532},[4221,13579,4739],{"class":4571},[4221,13581,5608],{"class":4756},[4221,13583,4814],{"class":4536},[4221,13585,3793],{"class":4756},[4221,13587,13588],{"class":4536},"sec",[4221,13590,5618],{"class":4756},[4221,13592,5621],{"class":4536},[4221,13594,13361],{"class":4536},[4221,13596,5626],{"class":4756},[4221,13598,4822],{"class":4571},[4221,13600,4825],{"class":4723},[4221,13602,13603,13605,13607,13609,13611,13613,13615,13617,13619,13621,13623,13625,13627,13629,13631,13633,13635,13637,13639,13641],{"class":4223,"line":7338},[4221,13604,5908],{"class":4723},[4221,13606,4150],{"class":4575},[4221,13608,4807],{"class":4732},[4221,13610,4736],{"class":4532},[4221,13612,4739],{"class":4571},[4221,13614,5689],{"class":4756},[4221,13616,5657],{"class":4536},[4221,13618,6694],{"class":4536},[4221,13620,3785],{"class":4756},[4221,13622,4975],{"class":4536},[4221,13624,6114],{"class":4558},[4221,13626,5711],{"class":4756},[4221,13628,4822],{"class":4571},[4221,13630,4850],{"class":4723},[4221,13632,4739],{"class":4571},[4221,13634,4845],{"class":4536},[4221,13636,4822],{"class":4571},[4221,13638,4863],{"class":4723},[4221,13640,4150],{"class":4575},[4221,13642,4825],{"class":4723},[4221,13644,13645,13647,13649],{"class":4223,"line":7381},[4221,13646,6005],{"class":4723},[4221,13648,4147],{"class":4575},[4221,13650,4825],{"class":4723},[4221,13652,13653,13655],{"class":4223,"line":7421},[4221,13654,6015],{"class":4756},[4221,13656,4276],{"class":4571},[4221,13658,13659,13661,13663,13665,13667,13669,13671,13673],{"class":4223,"line":7427},[4221,13660,5824],{"class":4732},[4221,13662,4736],{"class":4532},[4221,13664,4739],{"class":4571},[4221,13666,4788],{"class":4756},[4221,13668,4760],{"class":4536},[4221,13670,4793],{"class":4756},[4221,13672,4766],{"class":4571},[4221,13674,4718],{"class":4756},[4221,13676,13677,13679],{"class":4223,"line":7433},[4221,13678,4830],{"class":4723},[4221,13680,5845],{"class":4575},[4221,13682,13683,13685,13687,13689,13691,13693,13695,13697,13699,13701,13703,13705,13707,13709,13711],{"class":4223,"line":7443},[4221,13684,5850],{"class":4732},[4221,13686,4736],{"class":4532},[4221,13688,4739],{"class":4571},[4221,13690,5608],{"class":4756},[4221,13692,4814],{"class":4536},[4221,13694,3793],{"class":4756},[4221,13696,5868],{"class":4536},[4221,13698,5618],{"class":4756},[4221,13700,5621],{"class":4536},[4221,13702,5498],{"class":4536},[4221,13704,3785],{"class":4756},[4221,13706,4953],{"class":4536},[4221,13708,5567],{"class":4536},[4221,13710,5626],{"class":4756},[4221,13712,4276],{"class":4571},[4221,13714,13715],{"class":4223,"line":7452},[4221,13716,5902],{"class":4723},[4221,13718,13719,13721,13723,13725,13727,13729,13731,13733,13735,13737,13739,13741,13743,13745,13747,13749,13751,13753,13755,13757,13759,13761],{"class":4223,"line":7457},[4221,13720,5908],{"class":4723},[4221,13722,4150],{"class":4575},[4221,13724,4807],{"class":4732},[4221,13726,4736],{"class":4532},[4221,13728,4739],{"class":4571},[4221,13730,5689],{"class":4756},[4221,13732,5657],{"class":4536},[4221,13734,5521],{"class":4536},[4221,13736,3785],{"class":4756},[4221,13738,4975],{"class":4536},[4221,13740,6201],{"class":4558},[4221,13742,5711],{"class":4756},[4221,13744,4822],{"class":4571},[4221,13746,4850],{"class":4723},[4221,13748,4739],{"class":4571},[4221,13750,4760],{"class":4536},[4221,13752,3793],{"class":4756},[4221,13754,4845],{"class":4536},[4221,13756,4822],{"class":4571},[4221,13758,4863],{"class":4723},[4221,13760,4150],{"class":4575},[4221,13762,4825],{"class":4723},[4221,13764,13765,13767,13769,13771,13773,13775,13777,13779,13781,13783,13785,13787,13789,13791,13793,13795,13797,13799,13801,13803,13805,13807],{"class":4223,"line":7476},[4221,13766,5908],{"class":4723},[4221,13768,4150],{"class":4575},[4221,13770,4807],{"class":4732},[4221,13772,4736],{"class":4532},[4221,13774,4739],{"class":4571},[4221,13776,5689],{"class":4756},[4221,13778,5657],{"class":4536},[4221,13780,5544],{"class":4536},[4221,13782,3785],{"class":4756},[4221,13784,11227],{"class":4536},[4221,13786,6121],{"class":4934},[4221,13788,5711],{"class":4756},[4221,13790,4822],{"class":4571},[4221,13792,4850],{"class":4723},[4221,13794,4739],{"class":4571},[4221,13796,4760],{"class":4536},[4221,13798,3793],{"class":4756},[4221,13800,12885],{"class":4536},[4221,13802,4822],{"class":4571},[4221,13804,4863],{"class":4723},[4221,13806,4150],{"class":4575},[4221,13808,4825],{"class":4723},[4221,13810,13811,13813,13815],{"class":4223,"line":7515},[4221,13812,6005],{"class":4723},[4221,13814,4147],{"class":4575},[4221,13816,4825],{"class":4723},[4221,13818,13819,13821],{"class":4223,"line":7563},[4221,13820,6015],{"class":4756},[4221,13822,4276],{"class":4571},[4221,13824,13825,13828,13830,13832,13834,13836,13838,13840,13842,13844,13846,13848,13851,13853,13855,13857,13859],{"class":4223,"line":7572},[4221,13826,13827],{"class":4732},"        ItemSeparatorComponent",[4221,13829,4736],{"class":4532},[4221,13831,4739],{"class":4571},[4221,13833,6845],{"class":4756},[4221,13835,4766],{"class":4571},[4221,13837,8064],{"class":4723},[4221,13839,4147],{"class":4575},[4221,13841,4807],{"class":4732},[4221,13843,4736],{"class":4532},[4221,13845,4739],{"class":4571},[4221,13847,5689],{"class":4756},[4221,13849,13850],{"class":4536},"height:",[4221,13852,5701],{"class":4934},[4221,13854,5711],{"class":4756},[4221,13856,4822],{"class":4571},[4221,13858,8081],{"class":4723},[4221,13860,4276],{"class":4571},[4221,13862,13863,13866,13868,13870,13872,13874,13876,13878,13880,13882,13884,13886,13888,13890,13892,13894,13896],{"class":4223,"line":7579},[4221,13864,13865],{"class":4732},"        SectionSeparatorComponent",[4221,13867,4736],{"class":4532},[4221,13869,4739],{"class":4571},[4221,13871,6845],{"class":4756},[4221,13873,4766],{"class":4571},[4221,13875,8064],{"class":4723},[4221,13877,4147],{"class":4575},[4221,13879,4807],{"class":4732},[4221,13881,4736],{"class":4532},[4221,13883,4739],{"class":4571},[4221,13885,5689],{"class":4756},[4221,13887,13850],{"class":4536},[4221,13889,6164],{"class":4934},[4221,13891,5711],{"class":4756},[4221,13893,4822],{"class":4571},[4221,13895,8081],{"class":4723},[4221,13897,4276],{"class":4571},[4221,13899,13900],{"class":4223,"line":7584},[4221,13901,6023],{"class":4723},[4221,13903,13904,13906,13908],{"class":4223,"line":7593},[4221,13905,6029],{"class":4723},[4221,13907,4147],{"class":4575},[4221,13909,4825],{"class":4723},[4221,13911,13912],{"class":4223,"line":7598},[4221,13913,4893],{"class":4532},[4221,13915,13916],{"class":4223,"line":7603},[4221,13917,4276],{"class":4532},[4221,13919,13920],{"class":4223,"line":7608},[4221,13921,4246],{"emptyLinePlaceholder":4245},[4221,13923,13924,13926,13928,13930,13932,13934,13936],{"class":4223,"line":7625},[4221,13925,4616],{"class":4571},[4221,13927,4908],{"class":4619},[4221,13929,4911],{"class":4532},[4221,13931,4549],{"class":4536},[4221,13933,3793],{"class":4532},[4221,13935,4918],{"class":4706},[4221,13937,4921],{"class":4532},[4221,13939,13940,13942,13944,13946,13948,13950,13952,13954,13956,13958,13960],{"class":4223,"line":7650},[4221,13941,6071],{"class":4536},[4221,13943,4533],{"class":4532},[4221,13945,6076],{"class":4536},[4221,13947,5383],{"class":4934},[4221,13949,3785],{"class":4532},[4221,13951,4931],{"class":4536},[4221,13953,4935],{"class":4934},[4221,13955,3785],{"class":4532},[4221,13957,6089],{"class":4536},[4221,13959,6092],{"class":4934},[4221,13961,4650],{"class":4532},[4221,13963,13964,13966,13968,13970,13972,13974,13976,13978,13980,13982,13984],{"class":4223,"line":7678},[4221,13965,6100],{"class":4536},[4221,13967,4533],{"class":4532},[4221,13969,4968],{"class":4536},[4221,13971,6107],{"class":4934},[4221,13973,3785],{"class":4532},[4221,13975,4975],{"class":4536},[4221,13977,6114],{"class":4558},[4221,13979,3785],{"class":4532},[4221,13981,5698],{"class":4536},[4221,13983,6164],{"class":4934},[4221,13985,4650],{"class":4532},[4221,13987,13988,13991],{"class":4223,"line":7686},[4221,13989,13990],{"class":4536},"  sec:",[4221,13992,4579],{"class":4532},[4221,13994,13995,13997,13999],{"class":4223,"line":7696},[4221,13996,7699],{"class":4536},[4221,13998,5701],{"class":4934},[4221,14000,5391],{"class":4532},[4221,14002,14003,14005,14007],{"class":4223,"line":7707},[4221,14004,7689],{"class":4536},[4221,14006,7702],{"class":4934},[4221,14008,5391],{"class":4532},[4221,14010,14011,14013,14015],{"class":4223,"line":7716},[4221,14012,6161],{"class":4536},[4221,14014,5701],{"class":4934},[4221,14016,5391],{"class":4532},[4221,14018,14019,14021,14023],{"class":4223,"line":7721},[4221,14020,8140],{"class":4536},[4221,14022,5701],{"class":4934},[4221,14024,5391],{"class":4532},[4221,14026,14027],{"class":4223,"line":7742},[4221,14028,6183],{"class":4532},[4221,14030,14031,14033],{"class":4223,"line":7768},[4221,14032,6143],{"class":4536},[4221,14034,4579],{"class":4532},[4221,14036,14037,14039,14041],{"class":4223,"line":7783},[4221,14038,6151],{"class":4536},[4221,14040,5383],{"class":4934},[4221,14042,5391],{"class":4532},[4221,14044,14045,14047,14049],{"class":4223,"line":7791},[4221,14046,6161],{"class":4536},[4221,14048,6164],{"class":4934},[4221,14050,5391],{"class":4532},[4221,14052,14053,14055,14057],{"class":4223,"line":7801},[4221,14054,6172],{"class":4536},[4221,14056,6175],{"class":4934},[4221,14058,5391],{"class":4532},[4221,14060,14061],{"class":4223,"line":7812},[4221,14062,6183],{"class":4532},[4221,14064,14065],{"class":4223,"line":7822},[4221,14066,4985],{"class":4532},[3960,14068],{},[3738,14070,14072],{"id":14071},"продуктивність-списків-та-оптимізація-рендерингу-рядка","Продуктивність списків та оптимізація рендерингу рядка",[3743,14074,14075,14076,14079,14080,3793],{},"Віртуалізація списку вирішує проблему ",[3759,14077,14078],{},"кількості"," одночасно змонтованих елементів, але ",[3770,14081,14082],{},"не нівелює обчислювальної складності рендерингу окремого рядка",[3743,14084,14085,14086,14089,14090,14093,14094,14097,14098,14100],{},"У мобільній розробці інтерфейс має оновлюватися із частотою 60 кадрів\u002Fс (бюджет часу на один кадр: ",[3770,14087,14088],{},"16.6 мс",") або 120 кадрів\u002Fс на екранах ProMotion \u002F 120Hz (бюджет: ",[3770,14091,14092],{},"8.3 мс","). Будь-яка затримка в потоці JavaScript або нативному графічному потоці призводить до випадання кадрів (",[3759,14095,14096],{},"Dropped Frames \u002F UI Jank","). Якщо функція ",[3750,14099,3840],{}," містить важку логіку, немемоізовані об'єкти чи неефективну роботу з графікою, швидкий скрол супроводжуватиметься мікрозависаннями та білими спалахами.",[4131,14102,14104],{"id":14103},"фундаментальні-правила-оптимізації-комірки","Фундаментальні правила оптимізації комірки",[4136,14106,14107,14113,14130,14136,14159,14163,14190,14196,14206,14314,14320],{},[4131,14108,14110,14111,3874],{"id":14109},"_1-ізоляція-та-мемоізація-компонента-рядка-reactmemo","1. Ізоляція та мемоізація компонента рядка (",[3750,14112,3896],{},[3743,14114,14115,14116,14118,14119,14121,14122,14125,14126,14129],{},"Компонент рядка слід виносити в окрему функцію та загортати в ",[3750,14117,3896],{},". Мемоізований компонент перемальовується лише тоді, коли змінюються його безпосередні ",[3750,14120,4494],{}," (наприклад, посилання на об'єкт ",[3750,14123,14124],{},"trip"," або колбек ",[3750,14127,14128],{},"onPress","), запобігаючи масовому ререндеру всього вікна віртуалізації при оновленні батьківського екрана.",[4131,14131,14133,14134,3874],{"id":14132},"_2-стабільність-функціональних-посилань-usecallback","2. Стабільність функціональних посилань (",[3750,14135,3900],{},[3743,14137,14138,14139,3785,14141,14143,14144,14146,14147,14149,14150,14152,14153,14156,14157,3793],{},"Функції ",[3750,14140,3840],{},[3750,14142,3843],{}," та обробники натискань ",[3770,14145,8687],{}," огортаються в ",[3750,14148,3900],{}," або визначаються поза тілом функціонального компонента екрана. Якщо передавати в ",[3750,14151,3840],{}," анонімну стрілочну функцію ",[3750,14154,14155],{},"renderItem={({ item }) => \u003CTripCard ... \u002F>}директивно в JSX",", на кожному рендері батьківського екрана створюватиметься нове посилання, що повністю анулює оптимізацію ",[3750,14158,3896],{},[4131,14160,14162],{"id":14161},"_3-оптимізація-графічних-шарів-та-растрових-зображень","3. Оптимізація графічних шарів та растрових зображень",[3743,14164,14165,14166,3785,14168,14170,14171,14174,14175,14178,14179,14182,14183,5104,14186,14189],{},"Зображення є найбільш ресурсомісткими об'єктами списку. Необхідно жорстко задавати фіксовані розміри контейнера картинки (",[3750,14167,4183],{},[3750,14169,4186],{},"), використовувати попереднє масштабування на стороні CDN\u002Fсервера (",[3750,14172,14173],{},"?w=800&q=80",") та уникати важких динамічних ефектів (комбінації великих радіусів згладжування ",[3750,14176,14177],{},"borderRadius"," разом з ",[3750,14180,14181],{},"overflow: 'hidden'"," та нативними тінями ",[3750,14184,14185],{},"elevation",[3750,14187,14188],{},"shadowColor"," на рівні кожного рядка).",[4131,14191,14193,14194,3874],{"id":14192},"_4-попереднє-обчислення-геометрії-getitemlayout","4. Попереднє обчислення геометрії (",[3750,14195,3904],{},[3743,14197,14198,14199,14202,14203,14205],{},"За замовчуванням список обчислює координати кожного рядка динамічно через асинхронні вимірювання нативного шару (Layout Measurement Phase). Якщо всі рядки мають ",[3770,14200,14201],{},"однакову фіксовану висоту",", функція ",[3750,14204,3904],{}," дозволяє повністю пропустити цю фазу, миттєво обчислюючи зміщення за формулою $O(1)$:",[4212,14207,14209],{"className":4519,"code":14208,"language":4521,"meta":4217,"style":4217},"const ITEM_HEIGHT = 80;\nconst SEPARATOR_HEIGHT = 8;\n\nconst getItemLayout = (data: any, index: number) => ({\n  length: ITEM_HEIGHT,\n  offset: (ITEM_HEIGHT + SEPARATOR_HEIGHT) * index,\n  index,\n});\n",[3750,14210,14211,14225,14239,14243,14272,14281,14303,14310],{"__ignoreMap":4217},[4221,14212,14213,14215,14218,14220,14223],{"class":4223,"line":4224},[4221,14214,4616],{"class":4571},[4221,14216,14217],{"class":4619}," ITEM_HEIGHT",[4221,14219,4911],{"class":4532},[4221,14221,14222],{"class":4934},"80",[4221,14224,4562],{"class":4532},[4221,14226,14227,14229,14232,14234,14237],{"class":4223,"line":4230},[4221,14228,4616],{"class":4571},[4221,14230,14231],{"class":4619}," SEPARATOR_HEIGHT",[4221,14233,4911],{"class":4532},[4221,14235,14236],{"class":4934},"8",[4221,14238,4562],{"class":4532},[4221,14240,14241],{"class":4223,"line":4236},[4221,14242,4246],{"emptyLinePlaceholder":4245},[4221,14244,14245,14247,14250,14252,14254,14256,14258,14260,14262,14264,14266,14268,14270],{"class":4223,"line":4242},[4221,14246,4616],{"class":4571},[4221,14248,14249],{"class":4706}," getItemLayout",[4221,14251,8349],{"class":4532},[4221,14253,3837],{"class":4536},[4221,14255,4587],{"class":4532},[4221,14257,5093],{"class":4575},[4221,14259,3785],{"class":4532},[4221,14261,6303],{"class":4536},[4221,14263,4587],{"class":4532},[4221,14265,8356],{"class":4575},[4221,14267,4763],{"class":4532},[4221,14269,4766],{"class":4571},[4221,14271,5346],{"class":4532},[4221,14273,14274,14277,14279],{"class":4223,"line":4249},[4221,14275,14276],{"class":4536},"  length:",[4221,14278,14217],{"class":4619},[4221,14280,5391],{"class":4532},[4221,14282,14283,14286,14288,14291,14293,14296,14299,14301],{"class":4223,"line":4255},[4221,14284,14285],{"class":4536},"  offset:",[4221,14287,10727],{"class":4532},[4221,14289,14290],{"class":4619},"ITEM_HEIGHT",[4221,14292,4016],{"class":4532},[4221,14294,14295],{"class":4619},"SEPARATOR_HEIGHT",[4221,14297,14298],{"class":4532},") * ",[4221,14300,6303],{"class":4536},[4221,14302,5391],{"class":4532},[4221,14304,14305,14308],{"class":4223,"line":4261},[4221,14306,14307],{"class":4536},"  index",[4221,14309,5391],{"class":4532},[4221,14311,14312],{"class":4223,"line":4267},[4221,14313,4985],{"class":4532},[4131,14315,14317,14318],{"id":14316},"_5-інвалідація-віртуалізації-через-extradata","5. Інвалідація віртуалізації через ",[3750,14319,3908],{},[3743,14321,14322,14323,14325,14326,14328,14329,14332,14333,14336],{},"Оскільки ",[3750,14324,3784],{}," оптимізує рендеринг і перевіряє тільки зміни масиву ",[3750,14327,3837],{},", зміна зовнішнього стану (наприклад, глобальна зміна теми оформлення чи виділення активного рядка ",[3750,14330,14331],{},"selectedId",") не викличе перерендер рядків автоматично. Проп ",[3750,14334,14335],{},"extraData={selectedId}"," вказує віртуалізатору на необхідність інвалідації кешу при зміні цього значення.",[4212,14338,14340],{"className":4519,"code":14339,"language":4521,"meta":4217,"style":4217},"const renderItem = useCallback(\n  ({ item }: { item: Trip }) => (\n    \u003CTripCard trip={item} onPress={handleOpenTrip} \u002F>\n  ),\n  [handleOpenTrip],\n);\n",[3750,14341,14342,14355,14376,14408,14413,14423],{"__ignoreMap":4217},[4221,14343,14344,14346,14349,14351,14353],{"class":4223,"line":4224},[4221,14345,4616],{"class":4571},[4221,14347,14348],{"class":4619}," renderItem",[4221,14350,4911],{"class":4532},[4221,14352,3900],{"class":4706},[4221,14354,11770],{"class":4532},[4221,14356,14357,14360,14362,14364,14366,14368,14370,14372,14374],{"class":4223,"line":4230},[4221,14358,14359],{"class":4532},"  ({ ",[4221,14361,4760],{"class":4536},[4221,14363,11786],{"class":4532},[4221,14365,4760],{"class":4536},[4221,14367,4587],{"class":4532},[4221,14369,8270],{"class":4575},[4221,14371,4793],{"class":4532},[4221,14373,4766],{"class":4571},[4221,14375,4718],{"class":4532},[4221,14377,14378,14380,14383,14386,14388,14390,14392,14394,14397,14399,14401,14404,14406],{"class":4223,"line":4236},[4221,14379,4724],{"class":4723},[4221,14381,14382],{"class":4575},"TripCard",[4221,14384,14385],{"class":4732}," trip",[4221,14387,4736],{"class":4532},[4221,14389,4739],{"class":4571},[4221,14391,4760],{"class":4536},[4221,14393,4822],{"class":4571},[4221,14395,14396],{"class":4732}," onPress",[4221,14398,4736],{"class":4532},[4221,14400,4739],{"class":4571},[4221,14402,14403],{"class":4536},"handleOpenTrip",[4221,14405,4822],{"class":4571},[4221,14407,11204],{"class":4723},[4221,14409,14410],{"class":4223,"line":4242},[4221,14411,14412],{"class":4532},"  ),\n",[4221,14414,14415,14418,14420],{"class":4223,"line":4249},[4221,14416,14417],{"class":4532},"  [",[4221,14419,14403],{"class":4536},[4221,14421,14422],{"class":4532},"],\n",[4221,14424,14425],{"class":4223,"line":4255},[4221,14426,8278],{"class":4532},[3935,14428,14429,14435,14436,14438,14439,14441,14442,3785,14444,14446,14447,14449,14450,14452,14453,14455],{},[3770,14430,14431,14432,14434],{},"Чому ",[3750,14433,3908],{}," рятує від застарілих замикань."," Якщо передати ",[3750,14437,14331],{}," всередину ",[3750,14440,14382],{},", але не вказати ",[3750,14443,14335],{},[3750,14445,3784],{}," порівняє посилання на масив ",[3750,14448,3837],{}," (яке не змінилося) і пропустить повторний рендеринг видимих рядків. Завжди транслюйте в ",[3750,14451,3908],{}," будь-який стан поза ",[3750,14454,3837],{},", від якого залежить візуальний вигляд елементів.",[3960,14457],{},[3738,14459,14461,14463],{"id":14460},"flashlist-парадигма-cell-recycling",[3750,14462,3792],{}," — парадигма Cell Recycling",[3743,14465,14466,14467,14469,14470,3793],{},"Хоча ",[3750,14468,3784],{}," покриває більшість базових потреб, на складних інтерфейсах (стрічки соціальних мереж із гетерогенним контентом, динамічними медіа та швидким скролом) він демонструє фундаментальний архітектурний недолік: ",[3770,14471,14472],{},"циклічне створення та видалення вузлів",[3743,14474,14475,14476,14478,14479,5104,14481,14484],{},"Коли елемент виходить за межі буфера, ",[3750,14477,3784],{}," повністю демонтує компонент React і знищує нативний ",[3750,14480,3975],{},[3750,14482,14483],{},"ViewGroup",". Коли користувач скролить назад або вперед, пам'ять під цей компонент виділяється наново. Це призводить до постійного навантаження на CPU, стрибків виділення пам'яті та роботи Garbage Collector.",[4131,14486,14488],{"id":14487},"архітектура-рециклінгу-cell-recycling","Архітектура рециклінгу (Cell Recycling)",[3743,14490,14491,14492,14497,14498,14500,14501,4100,14504,14506],{},"Бібліотека ",[3770,14493,14494],{},[3750,14495,14496],{},"@shopify\u002Fflash-list"," кардинально змінює парадигму роботи з пам'яттю, реалізуючи підхід ",[3770,14499,3920],{}," (аналогічно до нативних ",[3750,14502,14503],{},"UICollectionView",[3750,14505,12785],{}," в Android):",[3814,14508,14509,14514,14521,14528],{},[3817,14510,14511,14513],{},[3750,14512,3792],{}," створює у нативній пам'яті лише мінімально необхідний пул контейнерів (наприклад, 10–15 комірок, достатніх для заповнення екрана та буфера).",[3817,14515,14516,14517,14520],{},"Коли комірка виходить за верхню межу екрана, вона ",[3770,14518,14519],{},"не знищується",". Її нативне представлення переміщується в нижню частину списку.",[3817,14522,14523,14524,14527],{},"React не монтує новий компонент, а виконує швидке оновлення властивостей (",[3750,14525,14526],{},"props reconciliation",") у вже існуючому екземплярі.",[3817,14529,14530],{},"В результаті кількість операцій створення\u002Fзнищення нативних вузлів зводиться майже до нуля, забезпечуючи приріст продуктивності у 5–10 разів.",[3743,14532,14533],{},[4202,14534],{"alt":14535,"className":14536,"src":4440},"Рециклінг комірок: перенесення нативних контейнерів та оновлення пропсів",[4206],[4131,14538,14540,14541,3803,14543],{"id":14539},"порівняльний-аналіз-flatlist-та-flashlist","Порівняльний аналіз ",[3750,14542,3784],{},[3750,14544,3792],{},[3982,14546,14547,14565],{},[3985,14548,14549],{},[3988,14550,14551,14554,14559],{},[3991,14552,14553],{"align":3993},"Критерій порівняння",[3991,14555,14556,14558],{"align":3993},[3750,14557,3784],{}," (Core React Native)",[3991,14560,14561,10727,14563,3874],{"align":3993},[3750,14562,3792],{},[3750,14564,14496],{},[4002,14566,14567,14579,14592,14605,14618],{},[3988,14568,14569,14573,14576],{},[4007,14570,14571],{"align":3993},[3770,14572,4474],{},[4007,14574,14575],{"align":3993},"Unmount \u002F Remount (знищення та створення)",[4007,14577,14578],{"align":3993},"Cell Recycling (перевикористання нативних комірок)",[3988,14580,14581,14586,14589],{},[4007,14582,14583],{"align":3993},[3770,14584,14585],{},"Продуктивність при швидкому скролі",[4007,14587,14588],{"align":3993},"Схильний до появи білих зон (blank areas) та jank",[4007,14590,14591],{"align":3993},"Стабільні 60\u002F120 FPS без просідань",[3988,14593,14594,14599,14602],{},[4007,14595,14596],{"align":3993},[3770,14597,14598],{},"Навантаження на пам'ять і GC",[4007,14600,14601],{"align":3993},"Хвилеподібне (постійні алокації та збір сміття)",[4007,14603,14604],{"align":3993},"Стабільне $O(1)$ з константним пулом вузлів",[3988,14606,14607,14612,14615],{},[4007,14608,14609],{"align":3993},[3770,14610,14611],{},"Залежність від платформи",[4007,14613,14614],{"align":3993},"Вбудований у React Native (чистий JS\u002FTS + Core)",[4007,14616,14617],{"align":3993},"Зовнішній пакет з нативними біндінг-оптимізаціями",[3988,14619,14620,14627,14630],{},[4007,14621,14622],{"align":3993},[3770,14623,14624,14625,3874],{},"Підтримка в браузері (",[3750,14626,3947],{},[4007,14628,14629],{"align":3993},"Повна підтримка з коробки",[4007,14631,14632],{"align":3993},"Вимагає нативного рантайму або polyfill",[4131,14634,14636],{"id":14635},"встановлення-та-інтеграція","Встановлення та інтеграція",[4212,14638,14642],{"className":14639,"code":14640,"language":14641,"meta":4217,"style":4217},"language-bash shiki shiki-themes light-plus dark-plus dark-plus","npx expo install @shopify\u002Fflash-list\n","bash",[3750,14643,14644],{"__ignoreMap":4217},[4221,14645,14646,14649,14652,14655],{"class":4223,"line":4224},[4221,14647,14648],{"class":4706},"npx",[4221,14650,14651],{"class":4558}," expo",[4221,14653,14654],{"class":4558}," install",[4221,14656,14657],{"class":4558}," @shopify\u002Fflash-list\n",[3743,14659,14660,14661,14663,14664,14666],{},"API ",[3750,14662,3792],{}," спеціально спроєктовано як максимально наближене до ",[3750,14665,3784],{},", тому міграція зазвичай потребує лише заміни імпорту:",[4212,14668,14670],{"className":4519,"code":14669,"language":4521,"meta":4217,"style":4217},"\u002F\u002F 1. Початковий варіант:\nimport { FlatList } from 'react-native';\n\u003CFlatList data={trips} renderItem={renderTrip} keyExtractor={keyExtractor} \u002F>\n\n\u002F\u002F 2. Оптимізований варіант з FlashList:\nimport { FlashList } from '@shopify\u002Fflash-list';\n\u003CFlashList data={trips} renderItem={renderTrip} keyExtractor={keyExtractor} \u002F>\n",[3750,14671,14672,14677,14693,14732,14736,14741,14758],{"__ignoreMap":4217},[4221,14673,14674],{"class":4223,"line":4224},[4221,14675,14676],{"class":6282},"\u002F\u002F 1. Початковий варіант:\n",[4221,14678,14679,14681,14683,14685,14687,14689,14691],{"class":4223,"line":4230},[4221,14680,4529],{"class":4528},[4221,14682,4533],{"class":4532},[4221,14684,3784],{"class":4536},[4221,14686,4552],{"class":4532},[4221,14688,4555],{"class":4528},[4221,14690,4559],{"class":4558},[4221,14692,4562],{"class":4532},[4221,14694,14695,14697,14699,14701,14703,14705,14707,14709,14711,14713,14715,14717,14719,14722,14724,14726,14728,14730],{"class":4223,"line":4236},[4221,14696,6756],{"class":4723},[4221,14698,3784],{"class":4575},[4221,14700,8442],{"class":4732},[4221,14702,4736],{"class":4532},[4221,14704,4739],{"class":4571},[4221,14706,8449],{"class":4536},[4221,14708,4822],{"class":4571},[4221,14710,14348],{"class":4732},[4221,14712,4736],{"class":4532},[4221,14714,4739],{"class":4571},[4221,14716,11953],{"class":4536},[4221,14718,4822],{"class":4571},[4221,14720,14721],{"class":4732}," keyExtractor",[4221,14723,4736],{"class":4532},[4221,14725,4739],{"class":4571},[4221,14727,3843],{"class":4536},[4221,14729,4822],{"class":4571},[4221,14731,11204],{"class":4723},[4221,14733,14734],{"class":4223,"line":4242},[4221,14735,4246],{"emptyLinePlaceholder":4245},[4221,14737,14738],{"class":4223,"line":4249},[4221,14739,14740],{"class":6282},"\u002F\u002F 2. Оптимізований варіант з FlashList:\n",[4221,14742,14743,14745,14747,14749,14751,14753,14756],{"class":4223,"line":4255},[4221,14744,4529],{"class":4528},[4221,14746,4533],{"class":4532},[4221,14748,3792],{"class":4536},[4221,14750,4552],{"class":4532},[4221,14752,4555],{"class":4528},[4221,14754,14755],{"class":4558}," '@shopify\u002Fflash-list'",[4221,14757,4562],{"class":4532},[4221,14759,14760,14762,14764,14766,14768,14770,14772,14774,14776,14778,14780,14782,14784,14786,14788,14790,14792,14794],{"class":4223,"line":4261},[4221,14761,6756],{"class":4723},[4221,14763,3792],{"class":4575},[4221,14765,8442],{"class":4732},[4221,14767,4736],{"class":4532},[4221,14769,4739],{"class":4571},[4221,14771,8449],{"class":4536},[4221,14773,4822],{"class":4571},[4221,14775,14348],{"class":4732},[4221,14777,4736],{"class":4532},[4221,14779,4739],{"class":4571},[4221,14781,11953],{"class":4536},[4221,14783,4822],{"class":4571},[4221,14785,14721],{"class":4732},[4221,14787,4736],{"class":4532},[4221,14789,4739],{"class":4571},[4221,14791,3843],{"class":4536},[4221,14793,4822],{"class":4571},[4221,14795,11204],{"class":4723},[12760,14797,14798,14815],{},[12763,14799,14801,14802,14804,14805,14810,14811,14814],{"label":14800},"FlashList v1 (Legacy)","У першій мажорній версії ",[3750,14803,3792],{}," обов'язково вимагав передачі пропу ",[3770,14806,14807],{},[3750,14808,14809],{},"estimatedItemSize"," (приблизної середньої висоти комірки в dp, наприклад ",[3750,14812,14813],{},"estimatedItemSize={220}","). Без цього параметра компонування списку могло зазнавати різких стрибків під час розрахунку полотна.",[12763,14816,14818,14819,14822,14823,14825],{"label":14817},"FlashList v2 (Сучасний стандарт)","У версії ",[3770,14820,14821],{},"FlashList v2"," архітектуру прорахунку розкладки було повністю перероблено: параметр ",[3750,14824,14809],{}," було усунено, а розміри та зміщення обчислюються автоматично та адаптивно в режимі реального часу.",[4131,14827,14829,14830,3874],{"id":14828},"гетерогенні-списки-та-типізація-комірок-getitemtype","Гетерогенні списки та типізація комірок (",[3750,14831,14832],{},"getItemType",[3743,14834,14835,14836,14839,14840,14843,14844,3909],{},"У складних стрічках контент часто є неоднорідним: наприклад, звичайна картка поїздки з фото (",[3750,14837,14838],{},"type: 'trip'","), повноширинний рекламний банер (",[3750,14841,14842],{},"type: 'ad'",") або коротка текстова цитата (",[3750,14845,14846],{},"type: 'quote'",[3743,14848,14849,14850,14852],{},"Якщо не повідомити ",[3750,14851,3792],{}," про структурну різницю між елементами, рециклінг намагатиметься перетворити існуючий нативний контейнер простої цитати на важку картку з фотографією. Це змушує рушій демонтувати одні нативні піддерева і монтувати інші безпосередньо під час прокручування, руйнуючи переваги рециклінгу.",[3743,14854,14855,14856,4997],{},"Для оптимізації гетерогенних списків використовується проп ",[3770,14857,14858],{},[3750,14859,14832],{},[4212,14861,14863],{"className":4519,"code":14862,"language":4521,"meta":4217,"style":4217},"type FeedItem =\n  | { type: 'trip'; id: string; title: string; coverUri: string }\n  | { type: 'quote'; id: string; text: string }\n  | { type: 'ad'; id: string; bannerUrl: string };\n\nexport function HeterogeneousFeed({ items }: { items: FeedItem[] }) {\n  return (\n    \u003CFlashList\n      data={items}\n      keyExtractor={(item) => item.id}\n      getItemType={(item) => item.type}\n      renderItem={({ item }) => {\n        switch (item.type) {\n          case 'trip':\n            return \u003CTripCard trip={item} \u002F>;\n          case 'quote':\n            return \u003CQuoteCard quote={item} \u002F>;\n          case 'ad':\n            return \u003CAdBanner ad={item} \u002F>;\n        }\n      }}\n    \u002F>\n  );\n}\n",[3750,14864,14865,14875,14914,14944,14974,14978,15003,15009,15016,15028,15052,15077,15095,15110,15121,15144,15153,15177,15186,15210,15214,15221,15225,15229],{"__ignoreMap":4217},[4221,14866,14867,14869,14872],{"class":4223,"line":4224},[4221,14868,5261],{"class":4571},[4221,14870,14871],{"class":4575}," FeedItem",[4221,14873,14874],{"class":4532}," =\n",[4221,14876,14877,14880,14882,14884,14887,14889,14891,14893,14895,14897,14899,14901,14903,14905,14908,14910,14912],{"class":4223,"line":4230},[4221,14878,14879],{"class":4532},"  | { ",[4221,14881,5261],{"class":4536},[4221,14883,4587],{"class":4532},[4221,14885,14886],{"class":4558},"'trip'",[4221,14888,5276],{"class":4532},[4221,14890,4774],{"class":4536},[4221,14892,4587],{"class":4532},[4221,14894,4590],{"class":4575},[4221,14896,5276],{"class":4532},[4221,14898,4845],{"class":4536},[4221,14900,4587],{"class":4532},[4221,14902,4590],{"class":4575},[4221,14904,5276],{"class":4532},[4221,14906,14907],{"class":4536},"coverUri",[4221,14909,4587],{"class":4532},[4221,14911,4590],{"class":4575},[4221,14913,7243],{"class":4532},[4221,14915,14916,14918,14920,14922,14925,14927,14929,14931,14933,14935,14938,14940,14942],{"class":4223,"line":4236},[4221,14917,14879],{"class":4532},[4221,14919,5261],{"class":4536},[4221,14921,4587],{"class":4532},[4221,14923,14924],{"class":4558},"'quote'",[4221,14926,5276],{"class":4532},[4221,14928,4774],{"class":4536},[4221,14930,4587],{"class":4532},[4221,14932,4590],{"class":4575},[4221,14934,5276],{"class":4532},[4221,14936,14937],{"class":4536},"text",[4221,14939,4587],{"class":4532},[4221,14941,4590],{"class":4575},[4221,14943,7243],{"class":4532},[4221,14945,14946,14948,14950,14952,14955,14957,14959,14961,14963,14965,14968,14970,14972],{"class":4223,"line":4242},[4221,14947,14879],{"class":4532},[4221,14949,5261],{"class":4536},[4221,14951,4587],{"class":4532},[4221,14953,14954],{"class":4558},"'ad'",[4221,14956,5276],{"class":4532},[4221,14958,4774],{"class":4536},[4221,14960,4587],{"class":4532},[4221,14962,4590],{"class":4575},[4221,14964,5276],{"class":4532},[4221,14966,14967],{"class":4536},"bannerUrl",[4221,14969,4587],{"class":4532},[4221,14971,4590],{"class":4575},[4221,14973,5294],{"class":4532},[4221,14975,14976],{"class":4223,"line":4249},[4221,14977,4246],{"emptyLinePlaceholder":4245},[4221,14979,14980,14982,14984,14987,14989,14991,14993,14995,14997,15000],{"class":4223,"line":4255},[4221,14981,4700],{"class":4528},[4221,14983,4703],{"class":4571},[4221,14985,14986],{"class":4706}," HeterogeneousFeed",[4221,14988,4788],{"class":4532},[4221,14990,10047],{"class":4536},[4221,14992,11786],{"class":4532},[4221,14994,10047],{"class":4536},[4221,14996,4587],{"class":4532},[4221,14998,14999],{"class":4575},"FeedItem",[4221,15001,15002],{"class":4532},"[] }) {\n",[4221,15004,15005,15007],{"class":4223,"line":4261},[4221,15006,4715],{"class":4528},[4221,15008,4718],{"class":4532},[4221,15010,15011,15013],{"class":4223,"line":4267},[4221,15012,4724],{"class":4723},[4221,15014,15015],{"class":4575},"FlashList\n",[4221,15017,15018,15020,15022,15024,15026],{"class":4223,"line":4273},[4221,15019,4733],{"class":4732},[4221,15021,4736],{"class":4532},[4221,15023,4739],{"class":4571},[4221,15025,10047],{"class":4536},[4221,15027,4276],{"class":4571},[4221,15029,15030,15032,15034,15036,15038,15040,15042,15044,15046,15048,15050],{"class":4223,"line":4279},[4221,15031,4749],{"class":4732},[4221,15033,4736],{"class":4532},[4221,15035,4739],{"class":4571},[4221,15037,4757],{"class":4756},[4221,15039,4760],{"class":4536},[4221,15041,4763],{"class":4756},[4221,15043,4766],{"class":4571},[4221,15045,4769],{"class":4536},[4221,15047,3793],{"class":4756},[4221,15049,4774],{"class":4536},[4221,15051,4276],{"class":4571},[4221,15053,15054,15057,15059,15061,15063,15065,15067,15069,15071,15073,15075],{"class":4223,"line":4284},[4221,15055,15056],{"class":4732},"      getItemType",[4221,15058,4736],{"class":4532},[4221,15060,4739],{"class":4571},[4221,15062,4757],{"class":4756},[4221,15064,4760],{"class":4536},[4221,15066,4763],{"class":4756},[4221,15068,4766],{"class":4571},[4221,15070,4769],{"class":4536},[4221,15072,3793],{"class":4756},[4221,15074,5261],{"class":4536},[4221,15076,4276],{"class":4571},[4221,15078,15079,15081,15083,15085,15087,15089,15091,15093],{"class":4223,"line":4290},[4221,15080,4781],{"class":4732},[4221,15082,4736],{"class":4532},[4221,15084,4739],{"class":4571},[4221,15086,4788],{"class":4756},[4221,15088,4760],{"class":4536},[4221,15090,4793],{"class":4756},[4221,15092,4766],{"class":4571},[4221,15094,4579],{"class":4756},[4221,15096,15097,15100,15102,15104,15106,15108],{"class":4223,"line":4296},[4221,15098,15099],{"class":4528},"        switch",[4221,15101,10727],{"class":4756},[4221,15103,4760],{"class":4536},[4221,15105,3793],{"class":4756},[4221,15107,5261],{"class":4536},[4221,15109,11846],{"class":4756},[4221,15111,15112,15115,15118],{"class":4223,"line":4302},[4221,15113,15114],{"class":4528},"          case",[4221,15116,15117],{"class":4558}," 'trip'",[4221,15119,15120],{"class":4756},":\n",[4221,15122,15123,15126,15128,15130,15132,15134,15136,15138,15140,15142],{"class":4223,"line":4308},[4221,15124,15125],{"class":4528},"            return",[4221,15127,8064],{"class":4723},[4221,15129,14382],{"class":4575},[4221,15131,14385],{"class":4732},[4221,15133,4736],{"class":4532},[4221,15135,4739],{"class":4571},[4221,15137,4760],{"class":4536},[4221,15139,4822],{"class":4571},[4221,15141,8081],{"class":4723},[4221,15143,4562],{"class":4756},[4221,15145,15146,15148,15151],{"class":4223,"line":4314},[4221,15147,15114],{"class":4528},[4221,15149,15150],{"class":4558}," 'quote'",[4221,15152,15120],{"class":4756},[4221,15154,15155,15157,15159,15162,15165,15167,15169,15171,15173,15175],{"class":4223,"line":4319},[4221,15156,15125],{"class":4528},[4221,15158,8064],{"class":4723},[4221,15160,15161],{"class":4575},"QuoteCard",[4221,15163,15164],{"class":4732}," quote",[4221,15166,4736],{"class":4532},[4221,15168,4739],{"class":4571},[4221,15170,4760],{"class":4536},[4221,15172,4822],{"class":4571},[4221,15174,8081],{"class":4723},[4221,15176,4562],{"class":4756},[4221,15178,15179,15181,15184],{"class":4223,"line":4324},[4221,15180,15114],{"class":4528},[4221,15182,15183],{"class":4558}," 'ad'",[4221,15185,15120],{"class":4756},[4221,15187,15188,15190,15192,15195,15198,15200,15202,15204,15206,15208],{"class":4223,"line":4330},[4221,15189,15125],{"class":4528},[4221,15191,8064],{"class":4723},[4221,15193,15194],{"class":4575},"AdBanner",[4221,15196,15197],{"class":4732}," ad",[4221,15199,4736],{"class":4532},[4221,15201,4739],{"class":4571},[4221,15203,4760],{"class":4536},[4221,15205,4822],{"class":4571},[4221,15207,8081],{"class":4723},[4221,15209,4562],{"class":4756},[4221,15211,15212],{"class":4223,"line":4336},[4221,15213,7248],{"class":4756},[4221,15215,15216,15219],{"class":4223,"line":4342},[4221,15217,15218],{"class":4756},"      }",[4221,15220,4276],{"class":4571},[4221,15222,15223],{"class":4223,"line":4348},[4221,15224,4888],{"class":4723},[4221,15226,15227],{"class":4223,"line":4354},[4221,15228,4893],{"class":4532},[4221,15230,15231],{"class":4223,"line":4360},[4221,15232,4276],{"class":4532},[3928,15234,15235,15238,15239,15241,15242,15244,15245,15248],{},[3770,15236,15237],{},"Ізольовані пули рециклінгу."," Завдяки ",[3750,15240,14832],{}," бібліотека ",[3750,15243,3792],{}," створює ",[3770,15246,15247],{},"окремий незалежний пул нативних комірок для кожного типу",". Контейнери від рекламних банерів перевикористовуються виключно для нових рекламних банерів, а картки поїздок — для поїздок, гарантуючи нульові витрати на перебудову компоновки.",[3960,15250],{},[3738,15252,15254],{"id":15253},"класифікація-типових-антипатернів","Класифікація типових антипатернів",[3982,15256,15257,15273],{},[3985,15258,15259],{},[3988,15260,15261,15264,15267,15270],{},[3991,15262,15263],{"align":3993},"Антипатерн",[3991,15265,15266],{"align":3993},"Механізм виникнення",[3991,15268,15269],{"align":3993},"Наслідки для системи",[3991,15271,15272],{"align":3993},"Коректне інженерне рішення",[4002,15274,15275,15297,15319,15343,15362,15391,15414],{},[3988,15276,15277,15284,15287,15290],{},[4007,15278,15279],{"align":3993},[3770,15280,15281,15283],{},[3750,15282,3825],{}," для великих масивів",[4007,15285,15286],{"align":3993},"Рендеринг усього масиву без віртуалізації.",[4007,15288,15289],{"align":3993},"Стрибок споживання RAM, блокування UI-потоку, OOM Crash.",[4007,15291,15292,15293,5035,15295,3793],{"align":3993},"Застосування ",[3750,15294,3784],{},[3750,15296,3792],{},[3988,15298,15299,15308,15311,15314],{},[4007,15300,15301],{"align":3993},[3770,15302,15303,15304,6386,15306],{},"Використання ",[3750,15305,6303],{},[3750,15307,3843],{},[4007,15309,15310],{"align":3993},"Ключ прив'язаний до позиції, а не до сутності.",[4007,15312,15313],{"align":3993},"Витік стану, некоректні анімації, поломка рециклінгу.",[4007,15315,15316,15317,3793],{"align":3993},"Використання незмінного ",[3750,15318,5038],{},[3988,15320,15321,15328,15331,15337],{},[4007,15322,15323],{"align":3993},[3770,15324,15325,15326],{},"Анонімні стрілочні функції в ",[3750,15327,3840],{},[4007,15329,15330],{"align":3993},"Створення нового посилання на кожному рендері батька.",[4007,15332,15333,15334,15336],{"align":3993},"Неможливість мемоізації через ",[3750,15335,3896],{},", надлишковий ререндер.",[4007,15338,15339,15340,15342],{"align":3993},"Огортання обробників у ",[3750,15341,3900],{}," та винесення рядка.",[3988,15344,15345,15350,15353,15356],{},[4007,15346,15347],{"align":3993},[3770,15348,15349],{},"Список у контейнері без фіксованої висоти",[4007,15351,15352],{"align":3993},"Відсутність обмежень у компоновці Flexbox.",[4007,15354,15355],{"align":3993},"Список розгортає всі 10 000 рядків, втрачаючи скрол.",[4007,15357,15358,15359,15361],{"align":3993},"Забезпечення ланцюжка ",[3750,15360,5089],{}," від кореневого екрана.",[3988,15363,15364,15371,15374,15377],{},[4007,15365,15366],{"align":3993},[3770,15367,15368,15369],{},"Зведення помилки та порожнечі до ",[3750,15370,3853],{},[4007,15372,15373],{"align":3993},"Відсутність скінченного автомата станів.",[4007,15375,15376],{"align":3993},"Користувач бачить «Порожньо» під час відсутності інтернету.",[4007,15378,15379,15380,3785,15383,3785,15386,3785,15388,3793],{"align":3993},"Чітке розділення станів ",[3750,15381,15382],{},"loading",[3750,15384,15385],{},"error",[3750,15387,7331],{},[3750,15389,15390],{},"success",[3988,15392,15393,15398,15404,15407],{},[4007,15394,15395],{"align":3993},[3770,15396,15397],{},"Пагінація без блокування стану гонитви",[4007,15399,15400,15401,15403],{"align":3993},"Виклик ",[3750,15402,3873],{}," під час активного запиту.",[4007,15405,15406],{"align":3993},"Дублювання сторінок, спам мережевими запитами.",[4007,15408,15409,15410,3803,15412,3793],{"align":3993},"Встановлення захисних прапорців ",[3750,15411,10174],{},[3750,15413,10185],{},[3988,15415,15416,15426,15429,15432],{},[4007,15417,15418],{"align":3993},[3770,15419,15420,15421,15423,15424],{},"Локальний ",[3750,15422,6347],{}," у комірці ",[3750,15425,3792],{},[4007,15427,15428],{"align":3993},"Збереження стану в рецикльованому контейнері.",[4007,15430,15431],{"align":3993},"«Перетікання» прапорців на інші елементи масиву.",[4007,15433,15434,15435,3793],{"align":3993},"Нормалізований стан у батьківському сховищі за ",[3750,15436,5038],{},[3960,15438],{},[3738,15440,15442,15443],{"id":15441},"міні-проєкт-каталог-книг-на-базі-sectionlist","Міні-проєкт: «Каталог книг» на базі ",[3750,15444,3788],{},[4131,15446,15448],{"id":15447},"мета-та-архітектурні-вимоги","Мета та архітектурні вимоги",[3743,15450,15451],{},"Метою практичного міні-проєкту є консолідація отриманих знань про ієрархічні структури даних, віртуалізацію та обробку станів інтерфейсу в ізольованому навчальному екрані.",[3743,15453,15454],{},"Застосунок повинен реалізувати:",[3814,15456,15457,15478,15491,15503,15511],{},[3817,15458,15459,15462,15463,3785,15465,3785,15467,3785,15469,3785,15472,3785,15475,3793],{},[3770,15460,15461],{},"Генерацію великого набору даних:"," 200+ сутностей книг із полями ",[3750,15464,4774],{},[3750,15466,4845],{},[3750,15468,12885],{},[3750,15470,15471],{},"genre",[3750,15473,15474],{},"year",[3750,15476,15477],{},"rating",[3817,15479,15480,15483,15484,15487,15488,3793],{},[3770,15481,15482],{},"Двовимірну кластеризацію:"," динамічне групування плоского масиву в масив секцій ",[3750,15485,15486],{},"BookSection[]"," за допомогою алгоритму ",[3750,15489,15490],{},"toSections",[3817,15492,15493,15499,15500,15502],{},[3770,15494,15495,15496,15498],{},"Віртуалізоване відображення (",[3750,15497,3788],{},"):"," підтримка липких заголовків жанрів (",[3750,15501,3886],{},") та розділювачів елементів.",[3817,15504,15505,15508,15509,3793],{},[3770,15506,15507],{},"Асинхронний життєвий цикл (Pull-to-refresh):"," імітація оновлення рейтингів та синхронізації з сервером через ",[3750,15510,5119],{},[3817,15512,15513,15516,15517,15519],{},[3770,15514,15515],{},"Обробку порожнього стану:"," коректне центрування та поведінка ",[3750,15518,3853],{}," при повному очищенні колекції.",[4131,15521,15523],{"id":15522},"модель-даних","Модель даних",[4212,15525,15527],{"className":8091,"code":15526,"language":8093,"meta":4217,"style":4217},"interface Book {\n  id: string;\n  title: string;\n  author: string;\n  genre: string;\n  year: number;\n  rating: number;\n}\n\ninterface BookSection {\n  title: string;\n  data: Book[];\n}\n",[3750,15528,15529,15537,15547,15557,15567,15578,15589,15600,15604,15608,15616,15626,15636],{"__ignoreMap":4217},[4221,15530,15531,15533,15535],{"class":4223,"line":4224},[4221,15532,4572],{"class":4571},[4221,15534,12275],{"class":4575},[4221,15536,4579],{"class":4532},[4221,15538,15539,15541,15543,15545],{"class":4223,"line":4230},[4221,15540,4584],{"class":4536},[4221,15542,4587],{"class":4532},[4221,15544,4590],{"class":4575},[4221,15546,4562],{"class":4532},[4221,15548,15549,15551,15553,15555],{"class":4223,"line":4236},[4221,15550,4597],{"class":4536},[4221,15552,4587],{"class":4532},[4221,15554,4590],{"class":4575},[4221,15556,4562],{"class":4532},[4221,15558,15559,15561,15563,15565],{"class":4223,"line":4242},[4221,15560,12302],{"class":4536},[4221,15562,4587],{"class":4532},[4221,15564,4590],{"class":4575},[4221,15566,4562],{"class":4532},[4221,15568,15569,15572,15574,15576],{"class":4223,"line":4249},[4221,15570,15571],{"class":4536},"  genre",[4221,15573,4587],{"class":4532},[4221,15575,4590],{"class":4575},[4221,15577,4562],{"class":4532},[4221,15579,15580,15583,15585,15587],{"class":4223,"line":4255},[4221,15581,15582],{"class":4536},"  year",[4221,15584,4587],{"class":4532},[4221,15586,8356],{"class":4575},[4221,15588,4562],{"class":4532},[4221,15590,15591,15594,15596,15598],{"class":4223,"line":4261},[4221,15592,15593],{"class":4536},"  rating",[4221,15595,4587],{"class":4532},[4221,15597,8356],{"class":4575},[4221,15599,4562],{"class":4532},[4221,15601,15602],{"class":4223,"line":4267},[4221,15603,4276],{"class":4532},[4221,15605,15606],{"class":4223,"line":4273},[4221,15607,4246],{"emptyLinePlaceholder":4245},[4221,15609,15610,15612,15614],{"class":4223,"line":4279},[4221,15611,4572],{"class":4571},[4221,15613,12323],{"class":4575},[4221,15615,4579],{"class":4532},[4221,15617,15618,15620,15622,15624],{"class":4223,"line":4284},[4221,15619,4597],{"class":4536},[4221,15621,4587],{"class":4532},[4221,15623,4590],{"class":4575},[4221,15625,4562],{"class":4532},[4221,15627,15628,15630,15632,15634],{"class":4223,"line":4290},[4221,15629,7979],{"class":4536},[4221,15631,4587],{"class":4532},[4221,15633,12344],{"class":4575},[4221,15635,12347],{"class":4532},[4221,15637,15638],{"class":4223,"line":4296},[4221,15639,4276],{"class":4532},[4131,15641,15643],{"id":15642},"поетапний-план-реалізації","Поетапний план реалізації",[4136,15645,15646,15650,15657,15661,15682,15688,15704,15708,15721,15725,15734,15738],{},[4131,15647,15649],{"id":15648},"_1-генерація-детермінованого-набору-mock-даних","1. Генерація детермінованого набору mock-даних",[3743,15651,15652,15653,15656],{},"Створюємо чисту функцію ",[3750,15654,15655],{},"buildBooks(seed: number, count = 220)",", яка на основі seed-значення генерує масив книг із розподілом за 5 жанрами та псевдовипадковими рейтингами.",[4131,15658,15660],{"id":15659},"_2-алгоритм-трансформації-даних-у-секційну-структуру","2. Алгоритм трансформації даних у секційну структуру",[3743,15662,15663,15664,15667,15668,15671,15672,15675,15676,15678,15679,3793],{},"Реалізуємо чисту функцію ",[3750,15665,15666],{},"toSections(books: Book[]): BookSection[]"," на базі структури даних ",[3750,15669,15670],{},"Map\u003Cstring, Book[]>",". Функція групує книги за жанром, сортує назви жанрів в алфавітному порядку за локаллю ",[3750,15673,15674],{},"uk"," та повертає нормалізований масив для ",[3750,15677,3788],{},". Результат мемоізуємо через ",[3750,15680,15681],{},"useMemo(() => toSections(books), [books])",[4131,15683,15685,15686],{"id":15684},"_3-конфігурація-компонента-sectionlist","3. Конфігурація компонента ",[3750,15687,3788],{},[3743,15689,15690,15691,3785,15693,3785,15695,15697,15698,15700,15701,15703],{},"Визначаємо стабільні функції ",[3750,15692,3840],{},[3750,15694,12540],{},[3750,15696,3843],{}," та налаштовуємо властивість ",[3750,15699,3886],{},". Додаємо ",[3750,15702,5064],{}," для забезпечення візуального ритму карток.",[4131,15705,15707],{"id":15706},"_4-інтеграція-механізму-pull-to-refresh","4. Інтеграція механізму Pull-to-refresh",[3743,15709,15710,15711,15714,15715,15717,15718,3793],{},"Підключаємо ",[3750,15712,15713],{},"\u003CRefreshControl refreshing={refreshing} onRefresh={onRefresh} \u002F>",". Під час спрацьовування жесту інкрементуємо ",[3750,15716,8854],{},", ініціюємо таймер затримки (імітація мережі) та оновлюємо стан ",[3750,15719,15720],{},"books",[4131,15722,15724],{"id":15723},"_5-обробка-порожнього-стану-та-центрування","5. Обробка порожнього стану та центрування",[3743,15726,15727,15728,15731,15732,3793],{},"Забезпечуємо перемикання стилю ",[3750,15729,15730],{},"contentContainerStyle={books.length === 0 ? styles.grow : { paddingBottom: 24 }}"," для забезпечення ідеального вертикального центрування ",[3750,15733,3853],{},[4131,15735,15737],{"id":15736},"_6-верифікація-продуктивності","6. Верифікація продуктивності",[3743,15739,15740],{},"Переконуємося у відсутності просідання FPS під час швидкої інерційної прокрутки 200+ елементів та стабільності роботи липких заголовків.",[4131,15742,15744],{"id":15743},"повний-еталонний-код-реалізації","Повний еталонний код реалізації",[3743,15746,15747,15748,15751],{},"Нижче наведено вичерпний самодостатній код екрана ",[3750,15749,15750],{},"App.tsx",". Розгорніть блок для детального аналізу або копіювання:",[15753,15754,15756],"collapsible",{"title":15755},"Повний код App.tsx каталогу — розгорнути за потреби",[4212,15757,15759],{"className":4519,"code":15758,"language":4521,"meta":4217,"style":4217},"import { useCallback, useMemo, useState } from 'react';\nimport {\n  Pressable,\n  RefreshControl,\n  SectionList,\n  StyleSheet,\n  Text,\n  View,\n} from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\ntype Book = {\n  id: string;\n  title: string;\n  author: string;\n  genre: string;\n  year: number;\n  rating: number;\n};\n\ntype BookSection = { title: string; data: Book[] };\n\nconst GENRES = ['Фантастика', 'Детектив', 'Подорожі', 'Історія', 'Поезія'] as const;\nconst AUTHORS = ['Коваленко', 'Шевченко', 'Лис', 'Мельник', 'Бондар'];\n\nfunction buildBooks(seed: number, count = 220): Book[] {\n  return Array.from({ length: count }, (_, i) => {\n    const genre = GENRES[i % GENRES.length];\n    return {\n      id: `${seed}-${i}`,\n      title: `Книга ${i + 1}`,\n      author: AUTHORS[i % AUTHORS.length],\n      genre,\n      year: 1990 + (i % 35),\n      rating: ((seed + i) % 50) \u002F 10 + 5, \u002F\u002F 5.0–9.9\n    };\n  });\n}\n\nfunction toSections(books: Book[]): BookSection[] {\n  const map = new Map\u003Cstring, Book[]>();\n  for (const b of books) {\n    const list = map.get(b.genre) ?? [];\n    list.push(b);\n    map.set(b.genre, list);\n  }\n  return [...map.entries()]\n    .sort(([a], [b]) => a.localeCompare(b, 'uk'))\n    .map(([title, data]) => ({ title, data }));\n}\n\nexport default function App() {\n  const [seed, setSeed] = useState(1);\n  const [books, setBooks] = useState(() => buildBooks(1));\n  const [refreshing, setRefreshing] = useState(false);\n\n  const sections = useMemo(() => toSections(books), [books]);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    setTimeout(() => {\n      setSeed((s) => {\n        const next = s + 1;\n        setBooks(buildBooks(next));\n        return next;\n      });\n      setRefreshing(false);\n    }, 700);\n  }, []);\n\n  return (\n    \u003CSafeAreaView style={styles.safe}>\n      \u003CView style={styles.toolbar}>\n        \u003CText style={styles.h}>Каталог книг\u003C\u002FText>\n        \u003CText style={styles.muted}>\n          {books.length} книг · seed {seed}\n        \u003C\u002FText>\n        \u003CView style={styles.row}>\n          \u003CPressable\n            style={styles.btn}\n            onPress={() => {\n              setBooks(buildBooks(seed));\n            }}\n          >\n            \u003CText style={styles.btnText}>Заповнити\u003C\u002FText>\n          \u003C\u002FPressable>\n          \u003CPressable\n            style={[styles.btn, styles.btnGhost]}\n            onPress={() => setBooks([])}\n          >\n            \u003CText style={styles.btnGhostText}>Очистити\u003C\u002FText>\n          \u003C\u002FPressable>\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CSectionList\n        sections={sections}\n        style={styles.list}\n        keyExtractor={(item) => item.id}\n        stickySectionHeadersEnabled\n        refreshControl={\n          \u003CRefreshControl refreshing={refreshing} onRefresh={onRefresh} \u002F>\n        }\n        contentContainerStyle={\n          books.length === 0 ? styles.grow : { paddingBottom: 24 }\n        }\n        ListEmptyComponent={\n          \u003CView style={styles.empty}>\n            \u003CText style={styles.emptyTitle}>Полиця порожня\u003C\u002FText>\n            \u003CText style={styles.muted}>Натисніть «Заповнити» або pull-to-refresh.\u003C\u002FText>\n          \u003C\u002FView>\n        }\n        renderSectionHeader={({ section: { title, data } }) => (\n          \u003CView style={styles.sec}>\n            \u003CText style={styles.secText}>\n              {title} · {data.length}\n            \u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        renderItem={({ item }) => (\n          \u003CView style={styles.card}>\n            \u003CText style={styles.title}>{item.title}\u003C\u002FText>\n            \u003CText style={styles.muted}>\n              {item.author} · {item.year} · ★ {item.rating.toFixed(1)}\n            \u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        ItemSeparatorComponent={() => \u003CView style={{ height: 8 }} \u002F>}\n      \u002F>\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1, backgroundColor: '#F8FAFC' },\n  toolbar: { padding: 16, gap: 6, borderBottomWidth: 1, borderColor: '#E2E8F0' },\n  h: { fontSize: 22, fontWeight: '800', color: '#0F172A' },\n  muted: { color: '#64748B', fontSize: 13 },\n  row: { flexDirection: 'row', gap: 8, marginTop: 8 },\n  btn: {\n    backgroundColor: '#2563EB',\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    borderRadius: 10,\n  },\n  btnText: { color: '#fff', fontWeight: '700' },\n  btnGhost: { backgroundColor: '#fff', borderWidth: 1, borderColor: '#E2E8F0' },\n  btnGhostText: { color: '#0F172A', fontWeight: '700' },\n  list: { flex: 1, paddingHorizontal: 16, paddingTop: 12 },\n  grow: { flexGrow: 1 },\n  empty: { flex: 1, minHeight: 240, alignItems: 'center', justifyContent: 'center', gap: 8 },\n  emptyTitle: { fontSize: 18, fontWeight: '700', color: '#0F172A' },\n  sec: {\n    backgroundColor: '#E2E8F0',\n    paddingVertical: 8,\n    paddingHorizontal: 10,\n    borderRadius: 8,\n    marginBottom: 8,\n  },\n  secText: { fontWeight: '800', color: '#2563EB' },\n  card: {\n    backgroundColor: '#fff',\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#E2E8F0',\n    padding: 14,\n  },\n  title: { fontWeight: '700', color: '#0F172A', marginBottom: 4 },\n});\n",[3750,15760,15761,15786,15792,15798,15804,15810,15816,15822,15828,15838,15856,15860,15869,15879,15889,15899,15909,15919,15929,15934,15938,15963,15967,16011,16045,16049,16079,16109,16135,16141,16166,16187,16209,16216,16236,16270,16275,16279,16283,16287,16309,16335,16355,16383,16399,16423,16428,16444,16488,16518,16522,16526,16538,16560,16589,16611,16615,16643,16647,16663,16673,16683,16698,16714,16730,16738,16742,16752,16760,16765,16769,16775,16798,16820,16851,16874,16896,16904,16926,16932,16948,16963,16978,16985,16989,17020,17028,17034,17063,17082,17086,17117,17125,17133,17141,17145,17151,17163,17179,17203,17207,17216,17246,17251,17260,17293,17298,17307,17330,17362,17394,17403,17408,17435,17458,17482,17505,17514,17523,17530,17549,17572,17611,17634,17683,17692,17701,17708,17745,17750,17759,17764,17769,17774,17791,17812,17845,17872,17893,17918,17925,17936,17945,17954,17963,17968,17987,18013,18033,18059,18073,18113,18138,18145,18154,18163,18172,18181,18190,18195,18215,18222,18231,18240,18249,18259,18268,18273,18298],{"__ignoreMap":4217},[4221,15762,15763,15765,15767,15769,15771,15774,15776,15778,15780,15782,15784],{"class":4223,"line":4224},[4221,15764,4529],{"class":4528},[4221,15766,4533],{"class":4532},[4221,15768,3900],{"class":4536},[4221,15770,3785],{"class":4532},[4221,15772,15773],{"class":4536},"useMemo",[4221,15775,3785],{"class":4532},[4221,15777,6347],{"class":4536},[4221,15779,4552],{"class":4532},[4221,15781,4555],{"class":4528},[4221,15783,6486],{"class":4558},[4221,15785,4562],{"class":4532},[4221,15787,15788,15790],{"class":4223,"line":4230},[4221,15789,4529],{"class":4528},[4221,15791,4579],{"class":4532},[4221,15793,15794,15796],{"class":4223,"line":4236},[4221,15795,6506],{"class":4536},[4221,15797,5391],{"class":4532},[4221,15799,15800,15802],{"class":4223,"line":4242},[4221,15801,8764],{"class":4536},[4221,15803,5391],{"class":4532},[4221,15805,15806,15808],{"class":4223,"line":4249},[4221,15807,12818],{"class":4536},[4221,15809,5391],{"class":4532},[4221,15811,15812,15814],{"class":4223,"line":4255},[4221,15813,6513],{"class":4536},[4221,15815,5391],{"class":4532},[4221,15817,15818,15820],{"class":4223,"line":4261},[4221,15819,6520],{"class":4536},[4221,15821,5391],{"class":4532},[4221,15823,15824,15826],{"class":4223,"line":4267},[4221,15825,6527],{"class":4536},[4221,15827,5391],{"class":4532},[4221,15829,15830,15832,15834,15836],{"class":4223,"line":4273},[4221,15831,6541],{"class":4532},[4221,15833,4555],{"class":4528},[4221,15835,4559],{"class":4558},[4221,15837,4562],{"class":4532},[4221,15839,15840,15842,15844,15847,15849,15851,15854],{"class":4223,"line":4279},[4221,15841,4529],{"class":4528},[4221,15843,4533],{"class":4532},[4221,15845,15846],{"class":4536},"SafeAreaView",[4221,15848,4552],{"class":4532},[4221,15850,4555],{"class":4528},[4221,15852,15853],{"class":4558}," 'react-native-safe-area-context'",[4221,15855,4562],{"class":4532},[4221,15857,15858],{"class":4223,"line":4284},[4221,15859,4246],{"emptyLinePlaceholder":4245},[4221,15861,15862,15864,15866],{"class":4223,"line":4290},[4221,15863,5261],{"class":4571},[4221,15865,12275],{"class":4575},[4221,15867,15868],{"class":4532}," = {\n",[4221,15870,15871,15873,15875,15877],{"class":4223,"line":4296},[4221,15872,4584],{"class":4536},[4221,15874,4587],{"class":4532},[4221,15876,4590],{"class":4575},[4221,15878,4562],{"class":4532},[4221,15880,15881,15883,15885,15887],{"class":4223,"line":4302},[4221,15882,4597],{"class":4536},[4221,15884,4587],{"class":4532},[4221,15886,4590],{"class":4575},[4221,15888,4562],{"class":4532},[4221,15890,15891,15893,15895,15897],{"class":4223,"line":4308},[4221,15892,12302],{"class":4536},[4221,15894,4587],{"class":4532},[4221,15896,4590],{"class":4575},[4221,15898,4562],{"class":4532},[4221,15900,15901,15903,15905,15907],{"class":4223,"line":4314},[4221,15902,15571],{"class":4536},[4221,15904,4587],{"class":4532},[4221,15906,4590],{"class":4575},[4221,15908,4562],{"class":4532},[4221,15910,15911,15913,15915,15917],{"class":4223,"line":4319},[4221,15912,15582],{"class":4536},[4221,15914,4587],{"class":4532},[4221,15916,8356],{"class":4575},[4221,15918,4562],{"class":4532},[4221,15920,15921,15923,15925,15927],{"class":4223,"line":4324},[4221,15922,15593],{"class":4536},[4221,15924,4587],{"class":4532},[4221,15926,8356],{"class":4575},[4221,15928,4562],{"class":4532},[4221,15930,15931],{"class":4223,"line":4330},[4221,15932,15933],{"class":4532},"};\n",[4221,15935,15936],{"class":4223,"line":4336},[4221,15937,4246],{"emptyLinePlaceholder":4245},[4221,15939,15940,15942,15944,15946,15948,15950,15952,15954,15956,15958,15960],{"class":4223,"line":4342},[4221,15941,5261],{"class":4571},[4221,15943,12323],{"class":4575},[4221,15945,5267],{"class":4532},[4221,15947,4845],{"class":4536},[4221,15949,4587],{"class":4532},[4221,15951,4590],{"class":4575},[4221,15953,5276],{"class":4532},[4221,15955,3837],{"class":4536},[4221,15957,4587],{"class":4532},[4221,15959,12344],{"class":4575},[4221,15961,15962],{"class":4532},"[] };\n",[4221,15964,15965],{"class":4223,"line":4348},[4221,15966,4246],{"emptyLinePlaceholder":4245},[4221,15968,15969,15971,15974,15977,15980,15982,15985,15987,15990,15992,15995,15997,16000,16003,16006,16009],{"class":4223,"line":4354},[4221,15970,4616],{"class":4571},[4221,15972,15973],{"class":4619}," GENRES",[4221,15975,15976],{"class":4532}," = [",[4221,15978,15979],{"class":4558},"'Фантастика'",[4221,15981,3785],{"class":4532},[4221,15983,15984],{"class":4558},"'Детектив'",[4221,15986,3785],{"class":4532},[4221,15988,15989],{"class":4558},"'Подорожі'",[4221,15991,3785],{"class":4532},[4221,15993,15994],{"class":4558},"'Історія'",[4221,15996,3785],{"class":4532},[4221,15998,15999],{"class":4558},"'Поезія'",[4221,16001,16002],{"class":4532},"] ",[4221,16004,16005],{"class":4528},"as",[4221,16007,16008],{"class":4571}," const",[4221,16010,4562],{"class":4532},[4221,16012,16013,16015,16018,16020,16023,16025,16028,16030,16033,16035,16038,16040,16043],{"class":4223,"line":4360},[4221,16014,4616],{"class":4571},[4221,16016,16017],{"class":4619}," AUTHORS",[4221,16019,15976],{"class":4532},[4221,16021,16022],{"class":4558},"'Коваленко'",[4221,16024,3785],{"class":4532},[4221,16026,16027],{"class":4558},"'Шевченко'",[4221,16029,3785],{"class":4532},[4221,16031,16032],{"class":4558},"'Лис'",[4221,16034,3785],{"class":4532},[4221,16036,16037],{"class":4558},"'Мельник'",[4221,16039,3785],{"class":4532},[4221,16041,16042],{"class":4558},"'Бондар'",[4221,16044,4691],{"class":4532},[4221,16046,16047],{"class":4223,"line":4365},[4221,16048,4246],{"emptyLinePlaceholder":4245},[4221,16050,16051,16053,16056,16058,16060,16062,16064,16066,16068,16070,16073,16075,16077],{"class":4223,"line":4371},[4221,16052,8846],{"class":4571},[4221,16054,16055],{"class":4706}," buildBooks",[4221,16057,4757],{"class":4532},[4221,16059,8854],{"class":4536},[4221,16061,4587],{"class":4532},[4221,16063,8356],{"class":4575},[4221,16065,3785],{"class":4532},[4221,16067,10357],{"class":4536},[4221,16069,4911],{"class":4532},[4221,16071,16072],{"class":4934},"220",[4221,16074,8861],{"class":4532},[4221,16076,12344],{"class":4575},[4221,16078,8866],{"class":4532},[4221,16080,16081,16083,16085,16087,16089,16091,16093,16095,16097,16099,16101,16103,16105,16107],{"class":4223,"line":4377},[4221,16082,4715],{"class":4528},[4221,16084,8873],{"class":4536},[4221,16086,3793],{"class":4532},[4221,16088,4555],{"class":4706},[4221,16090,4788],{"class":4532},[4221,16092,5325],{"class":4536},[4221,16094,10384],{"class":4536},[4221,16096,5331],{"class":4532},[4221,16098,5334],{"class":4536},[4221,16100,3785],{"class":4532},[4221,16102,5339],{"class":4536},[4221,16104,4763],{"class":4532},[4221,16106,4766],{"class":4571},[4221,16108,4579],{"class":4532},[4221,16110,16111,16113,16116,16118,16121,16123,16125,16127,16129,16131,16133],{"class":4223,"line":4383},[4221,16112,10403],{"class":4571},[4221,16114,16115],{"class":4619}," genre",[4221,16117,4911],{"class":4532},[4221,16119,16120],{"class":4619},"GENRES",[4221,16122,5608],{"class":4532},[4221,16124,5339],{"class":4536},[4221,16126,5402],{"class":4532},[4221,16128,16120],{"class":4619},[4221,16130,3793],{"class":4532},[4221,16132,6910],{"class":4536},[4221,16134,4691],{"class":4532},[4221,16136,16137,16139],{"class":4223,"line":4389},[4221,16138,10425],{"class":4528},[4221,16140,4579],{"class":4532},[4221,16142,16143,16146,16148,16150,16152,16154,16156,16158,16160,16162,16164],{"class":4223,"line":4395},[4221,16144,16145],{"class":4536},"      id:",[4221,16147,8905],{"class":4558},[4221,16149,5375],{"class":4571},[4221,16151,8854],{"class":4536},[4221,16153,4822],{"class":4571},[4221,16155,8914],{"class":4558},[4221,16157,5375],{"class":4571},[4221,16159,5339],{"class":4536},[4221,16161,4822],{"class":4571},[4221,16163,5388],{"class":4558},[4221,16165,5391],{"class":4532},[4221,16167,16168,16171,16173,16175,16177,16179,16181,16183,16185],{"class":4223,"line":4400},[4221,16169,16170],{"class":4536},"      title:",[4221,16172,6901],{"class":4558},[4221,16174,5375],{"class":4571},[4221,16176,5339],{"class":4536},[4221,16178,5380],{"class":4532},[4221,16180,5383],{"class":4934},[4221,16182,4822],{"class":4571},[4221,16184,5388],{"class":4558},[4221,16186,5391],{"class":4532},[4221,16188,16189,16192,16194,16196,16198,16200,16203,16205,16207],{"class":4223,"line":4405},[4221,16190,16191],{"class":4536},"      author:",[4221,16193,16017],{"class":4619},[4221,16195,5608],{"class":4532},[4221,16197,5339],{"class":4536},[4221,16199,5402],{"class":4532},[4221,16201,16202],{"class":4619},"AUTHORS",[4221,16204,3793],{"class":4532},[4221,16206,6910],{"class":4536},[4221,16208,14422],{"class":4532},[4221,16210,16211,16214],{"class":4223,"line":5860},[4221,16212,16213],{"class":4536},"      genre",[4221,16215,5391],{"class":4532},[4221,16217,16218,16221,16224,16227,16229,16231,16234],{"class":4223,"line":5873},[4221,16219,16220],{"class":4536},"      year:",[4221,16222,16223],{"class":4934}," 1990",[4221,16225,16226],{"class":4532}," + (",[4221,16228,5339],{"class":4536},[4221,16230,5402],{"class":4532},[4221,16232,16233],{"class":4934},"35",[4221,16235,5365],{"class":4532},[4221,16237,16238,16241,16244,16246,16248,16250,16253,16255,16258,16260,16262,16265,16267],{"class":4223,"line":5891},[4221,16239,16240],{"class":4536},"      rating:",[4221,16242,16243],{"class":4532}," ((",[4221,16245,8854],{"class":4536},[4221,16247,4016],{"class":4532},[4221,16249,5339],{"class":4536},[4221,16251,16252],{"class":4532},") % ",[4221,16254,10331],{"class":4934},[4221,16256,16257],{"class":4532},") \u002F ",[4221,16259,10317],{"class":4934},[4221,16261,4016],{"class":4532},[4221,16263,16264],{"class":4934},"5",[4221,16266,3785],{"class":4532},[4221,16268,16269],{"class":6282},"\u002F\u002F 5.0–9.9\n",[4221,16271,16272],{"class":4223,"line":5899},[4221,16273,16274],{"class":4532},"    };\n",[4221,16276,16277],{"class":4223,"line":5905},[4221,16278,10458],{"class":4532},[4221,16280,16281],{"class":4223,"line":5955},[4221,16282,4276],{"class":4532},[4221,16284,16285],{"class":4223,"line":6002},[4221,16286,4246],{"emptyLinePlaceholder":4245},[4221,16288,16289,16291,16294,16296,16298,16300,16302,16305,16307],{"class":4223,"line":6012},[4221,16290,8846],{"class":4571},[4221,16292,16293],{"class":4706}," toSections",[4221,16295,4757],{"class":4532},[4221,16297,15720],{"class":4536},[4221,16299,4587],{"class":4532},[4221,16301,12344],{"class":4575},[4221,16303,16304],{"class":4532},"[]): ",[4221,16306,12367],{"class":4575},[4221,16308,8866],{"class":4532},[4221,16310,16311,16313,16316,16318,16321,16324,16326,16328,16330,16332],{"class":4223,"line":6020},[4221,16312,5452],{"class":4571},[4221,16314,16315],{"class":4619}," map",[4221,16317,4911],{"class":4532},[4221,16319,16320],{"class":4571},"new",[4221,16322,16323],{"class":4706}," Map",[4221,16325,6756],{"class":4532},[4221,16327,4590],{"class":4575},[4221,16329,3785],{"class":4532},[4221,16331,12344],{"class":4575},[4221,16333,16334],{"class":4532},"[]>();\n",[4221,16336,16337,16340,16342,16344,16347,16350,16353],{"class":4223,"line":6026},[4221,16338,16339],{"class":4528},"  for",[4221,16341,10727],{"class":4532},[4221,16343,4616],{"class":4571},[4221,16345,16346],{"class":4619}," b",[4221,16348,16349],{"class":4571}," of",[4221,16351,16352],{"class":4536}," books",[4221,16354,11846],{"class":4532},[4221,16356,16357,16359,16362,16364,16366,16368,16371,16373,16376,16378,16380],{"class":4223,"line":6036},[4221,16358,10403],{"class":4571},[4221,16360,16361],{"class":4619}," list",[4221,16363,4911],{"class":4532},[4221,16365,4019],{"class":4536},[4221,16367,3793],{"class":4532},[4221,16369,16370],{"class":4706},"get",[4221,16372,4757],{"class":4532},[4221,16374,16375],{"class":4536},"b",[4221,16377,3793],{"class":4532},[4221,16379,15471],{"class":4536},[4221,16381,16382],{"class":4532},") ?? [];\n",[4221,16384,16385,16388,16390,16393,16395,16397],{"class":4223,"line":6041},[4221,16386,16387],{"class":4536},"    list",[4221,16389,3793],{"class":4532},[4221,16391,16392],{"class":4706},"push",[4221,16394,4757],{"class":4532},[4221,16396,16375],{"class":4536},[4221,16398,8278],{"class":4532},[4221,16400,16401,16404,16406,16409,16411,16413,16415,16417,16419,16421],{"class":4223,"line":6046},[4221,16402,16403],{"class":4536},"    map",[4221,16405,3793],{"class":4532},[4221,16407,16408],{"class":4706},"set",[4221,16410,4757],{"class":4532},[4221,16412,16375],{"class":4536},[4221,16414,3793],{"class":4532},[4221,16416,15471],{"class":4536},[4221,16418,3785],{"class":4532},[4221,16420,5751],{"class":4536},[4221,16422,8278],{"class":4532},[4221,16424,16425],{"class":4223,"line":6051},[4221,16426,16427],{"class":4532},"  }\n",[4221,16429,16430,16432,16434,16436,16438,16441],{"class":4223,"line":6068},[4221,16431,4715],{"class":4528},[4221,16433,10833],{"class":4532},[4221,16435,4019],{"class":4536},[4221,16437,3793],{"class":4532},[4221,16439,16440],{"class":4706},"entries",[4221,16442,16443],{"class":4532},"()]\n",[4221,16445,16446,16449,16452,16455,16458,16461,16463,16466,16468,16471,16473,16476,16478,16480,16482,16485],{"class":4223,"line":6097},[4221,16447,16448],{"class":4532},"    .",[4221,16450,16451],{"class":4706},"sort",[4221,16453,16454],{"class":4532},"(([",[4221,16456,16457],{"class":4536},"a",[4221,16459,16460],{"class":4532},"], [",[4221,16462,16375],{"class":4536},[4221,16464,16465],{"class":4532},"]) ",[4221,16467,4766],{"class":4571},[4221,16469,16470],{"class":4536}," a",[4221,16472,3793],{"class":4532},[4221,16474,16475],{"class":4706},"localeCompare",[4221,16477,4757],{"class":4532},[4221,16479,16375],{"class":4536},[4221,16481,3785],{"class":4532},[4221,16483,16484],{"class":4558},"'uk'",[4221,16486,16487],{"class":4532},"))\n",[4221,16489,16490,16492,16494,16496,16498,16500,16502,16504,16506,16509,16511,16513,16515],{"class":4223,"line":6126},[4221,16491,16448],{"class":4532},[4221,16493,4019],{"class":4706},[4221,16495,16454],{"class":4532},[4221,16497,4845],{"class":4536},[4221,16499,3785],{"class":4532},[4221,16501,3837],{"class":4536},[4221,16503,16465],{"class":4532},[4221,16505,4766],{"class":4571},[4221,16507,16508],{"class":4532}," ({ ",[4221,16510,4845],{"class":4536},[4221,16512,3785],{"class":4532},[4221,16514,3837],{"class":4536},[4221,16516,16517],{"class":4532}," }));\n",[4221,16519,16520],{"class":4223,"line":6140},[4221,16521,4276],{"class":4532},[4221,16523,16524],{"class":4223,"line":6148},[4221,16525,4246],{"emptyLinePlaceholder":4245},[4221,16527,16528,16530,16532,16534,16536],{"class":4223,"line":6158},[4221,16529,4700],{"class":4528},[4221,16531,5440],{"class":4528},[4221,16533,4703],{"class":4571},[4221,16535,5445],{"class":4706},[4221,16537,4710],{"class":4532},[4221,16539,16540,16542,16544,16546,16548,16550,16552,16554,16556,16558],{"class":4223,"line":6169},[4221,16541,5452],{"class":4571},[4221,16543,6741],{"class":4532},[4221,16545,8854],{"class":4619},[4221,16547,3785],{"class":4532},[4221,16549,9134],{"class":4619},[4221,16551,6751],{"class":4532},[4221,16553,6347],{"class":4706},[4221,16555,4757],{"class":4532},[4221,16557,5132],{"class":4934},[4221,16559,8278],{"class":4532},[4221,16561,16562,16564,16566,16568,16570,16573,16575,16577,16579,16581,16583,16585,16587],{"class":4223,"line":6180},[4221,16563,5452],{"class":4571},[4221,16565,6741],{"class":4532},[4221,16567,15720],{"class":4619},[4221,16569,3785],{"class":4532},[4221,16571,16572],{"class":4619},"setBooks",[4221,16574,6751],{"class":4532},[4221,16576,6347],{"class":4706},[4221,16578,9163],{"class":4532},[4221,16580,4766],{"class":4571},[4221,16582,16055],{"class":4706},[4221,16584,4757],{"class":4532},[4221,16586,5132],{"class":4934},[4221,16588,9174],{"class":4532},[4221,16590,16591,16593,16595,16597,16599,16601,16603,16605,16607,16609],{"class":4223,"line":6186},[4221,16592,5452],{"class":4571},[4221,16594,6741],{"class":4532},[4221,16596,8670],{"class":4619},[4221,16598,3785],{"class":4532},[4221,16600,9187],{"class":4619},[4221,16602,6751],{"class":4532},[4221,16604,6347],{"class":4706},[4221,16606,4757],{"class":4532},[4221,16608,8691],{"class":4571},[4221,16610,8278],{"class":4532},[4221,16612,16613],{"class":4223,"line":6212},[4221,16614,4246],{"emptyLinePlaceholder":4245},[4221,16616,16617,16619,16622,16624,16626,16628,16630,16632,16634,16636,16639,16641],{"class":4223,"line":7314},[4221,16618,5452],{"class":4571},[4221,16620,16621],{"class":4619}," sections",[4221,16623,4911],{"class":4532},[4221,16625,15773],{"class":4706},[4221,16627,9163],{"class":4532},[4221,16629,4766],{"class":4571},[4221,16631,16293],{"class":4706},[4221,16633,4757],{"class":4532},[4221,16635,15720],{"class":4536},[4221,16637,16638],{"class":4532},"), [",[4221,16640,15720],{"class":4536},[4221,16642,9318],{"class":4532},[4221,16644,16645],{"class":4223,"line":7338},[4221,16646,4246],{"emptyLinePlaceholder":4245},[4221,16648,16649,16651,16653,16655,16657,16659,16661],{"class":4223,"line":7381},[4221,16650,5452],{"class":4571},[4221,16652,9208],{"class":4619},[4221,16654,4911],{"class":4532},[4221,16656,3900],{"class":4706},[4221,16658,9163],{"class":4532},[4221,16660,4766],{"class":4571},[4221,16662,4579],{"class":4532},[4221,16664,16665,16667,16669,16671],{"class":4223,"line":7421},[4221,16666,9223],{"class":4706},[4221,16668,4757],{"class":4532},[4221,16670,9228],{"class":4571},[4221,16672,8278],{"class":4532},[4221,16674,16675,16677,16679,16681],{"class":4223,"line":7427},[4221,16676,9235],{"class":4706},[4221,16678,9163],{"class":4532},[4221,16680,4766],{"class":4571},[4221,16682,4579],{"class":4532},[4221,16684,16685,16687,16689,16692,16694,16696],{"class":4223,"line":7433},[4221,16686,9264],{"class":4706},[4221,16688,6856],{"class":4532},[4221,16690,16691],{"class":4536},"s",[4221,16693,4763],{"class":4532},[4221,16695,4766],{"class":4571},[4221,16697,4579],{"class":4532},[4221,16699,16700,16702,16704,16706,16708,16710,16712],{"class":4223,"line":7443},[4221,16701,10781],{"class":4571},[4221,16703,9249],{"class":4619},[4221,16705,4911],{"class":4532},[4221,16707,16691],{"class":4536},[4221,16709,4016],{"class":4532},[4221,16711,5132],{"class":4934},[4221,16713,4562],{"class":4532},[4221,16715,16716,16719,16721,16724,16726,16728],{"class":4223,"line":7452},[4221,16717,16718],{"class":4706},"        setBooks",[4221,16720,4757],{"class":4532},[4221,16722,16723],{"class":4706},"buildBooks",[4221,16725,4757],{"class":4532},[4221,16727,9269],{"class":4536},[4221,16729,9174],{"class":4532},[4221,16731,16732,16734,16736],{"class":4223,"line":7457},[4221,16733,10830],{"class":4528},[4221,16735,9249],{"class":4536},[4221,16737,4562],{"class":4532},[4221,16739,16740],{"class":4223,"line":7476},[4221,16741,10847],{"class":4532},[4221,16743,16744,16746,16748,16750],{"class":4223,"line":7515},[4221,16745,9292],{"class":4706},[4221,16747,4757],{"class":4532},[4221,16749,8691],{"class":4571},[4221,16751,8278],{"class":4532},[4221,16753,16754,16756,16758],{"class":4223,"line":7563},[4221,16755,9303],{"class":4532},[4221,16757,10865],{"class":4934},[4221,16759,8278],{"class":4532},[4221,16761,16762],{"class":4223,"line":7572},[4221,16763,16764],{"class":4532},"  }, []);\n",[4221,16766,16767],{"class":4223,"line":7579},[4221,16768,4246],{"emptyLinePlaceholder":4245},[4221,16770,16771,16773],{"class":4223,"line":7584},[4221,16772,4715],{"class":4528},[4221,16774,4718],{"class":4532},[4221,16776,16777,16779,16781,16783,16785,16787,16789,16791,16794,16796],{"class":4223,"line":7593},[4221,16778,4724],{"class":4723},[4221,16780,15846],{"class":4575},[4221,16782,4807],{"class":4732},[4221,16784,4736],{"class":4532},[4221,16786,4739],{"class":4571},[4221,16788,4814],{"class":4536},[4221,16790,3793],{"class":4756},[4221,16792,16793],{"class":4536},"safe",[4221,16795,4822],{"class":4571},[4221,16797,4825],{"class":4723},[4221,16799,16800,16802,16804,16806,16808,16810,16812,16814,16816,16818],{"class":4223,"line":7598},[4221,16801,5635],{"class":4723},[4221,16803,4147],{"class":4575},[4221,16805,4807],{"class":4732},[4221,16807,4736],{"class":4532},[4221,16809,4739],{"class":4571},[4221,16811,4814],{"class":4536},[4221,16813,3793],{"class":4756},[4221,16815,6822],{"class":4536},[4221,16817,4822],{"class":4571},[4221,16819,4825],{"class":4723},[4221,16821,16822,16824,16826,16828,16830,16832,16834,16836,16838,16840,16842,16845,16847,16849],{"class":4223,"line":7603},[4221,16823,4802],{"class":4723},[4221,16825,4150],{"class":4575},[4221,16827,4807],{"class":4732},[4221,16829,4736],{"class":4532},[4221,16831,4739],{"class":4571},[4221,16833,4814],{"class":4536},[4221,16835,3793],{"class":4756},[4221,16837,5652],{"class":4536},[4221,16839,4822],{"class":4571},[4221,16841,4850],{"class":4723},[4221,16843,16844],{"class":4532},"Каталог книг",[4221,16846,4863],{"class":4723},[4221,16848,4150],{"class":4575},[4221,16850,4825],{"class":4723},[4221,16852,16853,16855,16857,16859,16861,16863,16865,16867,16870,16872],{"class":4223,"line":7608},[4221,16854,4802],{"class":4723},[4221,16856,4150],{"class":4575},[4221,16858,4807],{"class":4732},[4221,16860,4736],{"class":4532},[4221,16862,4739],{"class":4571},[4221,16864,4814],{"class":4536},[4221,16866,3793],{"class":4756},[4221,16868,16869],{"class":4536},"muted",[4221,16871,4822],{"class":4571},[4221,16873,4825],{"class":4723},[4221,16875,16876,16879,16881,16883,16885,16887,16890,16892,16894],{"class":4223,"line":7625},[4221,16877,16878],{"class":4571},"          {",[4221,16880,15720],{"class":4536},[4221,16882,3793],{"class":4756},[4221,16884,6910],{"class":4536},[4221,16886,4822],{"class":4571},[4221,16888,16889],{"class":4532}," книг · seed ",[4221,16891,4739],{"class":4571},[4221,16893,8854],{"class":4536},[4221,16895,4276],{"class":4571},[4221,16897,16898,16900,16902],{"class":4223,"line":7650},[4221,16899,4872],{"class":4723},[4221,16901,4150],{"class":4575},[4221,16903,4825],{"class":4723},[4221,16905,16906,16908,16910,16912,16914,16916,16918,16920,16922,16924],{"class":4223,"line":7678},[4221,16907,4802],{"class":4723},[4221,16909,4147],{"class":4575},[4221,16911,4807],{"class":4732},[4221,16913,4736],{"class":4532},[4221,16915,4739],{"class":4571},[4221,16917,4814],{"class":4536},[4221,16919,3793],{"class":4756},[4221,16921,5868],{"class":4536},[4221,16923,4822],{"class":4571},[4221,16925,4825],{"class":4723},[4221,16927,16928,16930],{"class":4223,"line":7686},[4221,16929,4830],{"class":4723},[4221,16931,6833],{"class":4575},[4221,16933,16934,16936,16938,16940,16942,16944,16946],{"class":4223,"line":7696},[4221,16935,5850],{"class":4732},[4221,16937,4736],{"class":4532},[4221,16939,4739],{"class":4571},[4221,16941,4814],{"class":4536},[4221,16943,3793],{"class":4756},[4221,16945,6948],{"class":4536},[4221,16947,4276],{"class":4571},[4221,16949,16950,16953,16955,16957,16959,16961],{"class":4223,"line":7707},[4221,16951,16952],{"class":4732},"            onPress",[4221,16954,4736],{"class":4532},[4221,16956,4739],{"class":4571},[4221,16958,6845],{"class":4756},[4221,16960,4766],{"class":4571},[4221,16962,4579],{"class":4756},[4221,16964,16965,16968,16970,16972,16974,16976],{"class":4223,"line":7716},[4221,16966,16967],{"class":4706},"              setBooks",[4221,16969,4757],{"class":4756},[4221,16971,16723],{"class":4706},[4221,16973,4757],{"class":4756},[4221,16975,8854],{"class":4536},[4221,16977,9174],{"class":4756},[4221,16979,16980,16983],{"class":4223,"line":7721},[4221,16981,16982],{"class":4756},"            }",[4221,16984,4276],{"class":4571},[4221,16986,16987],{"class":4223,"line":7742},[4221,16988,5902],{"class":4723},[4221,16990,16991,16993,16995,16997,16999,17001,17003,17005,17007,17009,17011,17014,17016,17018],{"class":4223,"line":7768},[4221,16992,5908],{"class":4723},[4221,16994,4150],{"class":4575},[4221,16996,4807],{"class":4732},[4221,16998,4736],{"class":4532},[4221,17000,4739],{"class":4571},[4221,17002,4814],{"class":4536},[4221,17004,3793],{"class":4756},[4221,17006,6982],{"class":4536},[4221,17008,4822],{"class":4571},[4221,17010,4850],{"class":4723},[4221,17012,17013],{"class":4532},"Заповнити",[4221,17015,4863],{"class":4723},[4221,17017,4150],{"class":4575},[4221,17019,4825],{"class":4723},[4221,17021,17022,17024,17026],{"class":4223,"line":7783},[4221,17023,6005],{"class":4723},[4221,17025,4156],{"class":4575},[4221,17027,4825],{"class":4723},[4221,17029,17030,17032],{"class":4223,"line":7791},[4221,17031,4830],{"class":4723},[4221,17033,6833],{"class":4575},[4221,17035,17036,17038,17040,17042,17044,17046,17048,17050,17052,17054,17056,17059,17061],{"class":4223,"line":7801},[4221,17037,5850],{"class":4732},[4221,17039,4736],{"class":4532},[4221,17041,4739],{"class":4571},[4221,17043,5608],{"class":4756},[4221,17045,4814],{"class":4536},[4221,17047,3793],{"class":4756},[4221,17049,6948],{"class":4536},[4221,17051,3785],{"class":4756},[4221,17053,4814],{"class":4536},[4221,17055,3793],{"class":4756},[4221,17057,17058],{"class":4536},"btnGhost",[4221,17060,9615],{"class":4756},[4221,17062,4276],{"class":4571},[4221,17064,17065,17067,17069,17071,17073,17075,17078,17080],{"class":4223,"line":7812},[4221,17066,16952],{"class":4732},[4221,17068,4736],{"class":4532},[4221,17070,4739],{"class":4571},[4221,17072,6845],{"class":4756},[4221,17074,4766],{"class":4571},[4221,17076,17077],{"class":4706}," setBooks",[4221,17079,7027],{"class":4756},[4221,17081,4276],{"class":4571},[4221,17083,17084],{"class":4223,"line":7822},[4221,17085,5902],{"class":4723},[4221,17087,17088,17090,17092,17094,17096,17098,17100,17102,17105,17107,17109,17111,17113,17115],{"class":4223,"line":7832},[4221,17089,5908],{"class":4723},[4221,17091,4150],{"class":4575},[4221,17093,4807],{"class":4732},[4221,17095,4736],{"class":4532},[4221,17097,4739],{"class":4571},[4221,17099,4814],{"class":4536},[4221,17101,3793],{"class":4756},[4221,17103,17104],{"class":4536},"btnGhostText",[4221,17106,4822],{"class":4571},[4221,17108,4850],{"class":4723},[4221,17110,7105],{"class":4532},[4221,17112,4863],{"class":4723},[4221,17114,4150],{"class":4575},[4221,17116,4825],{"class":4723},[4221,17118,17119,17121,17123],{"class":4223,"line":7842},[4221,17120,6005],{"class":4723},[4221,17122,4156],{"class":4575},[4221,17124,4825],{"class":4723},[4221,17126,17127,17129,17131],{"class":4223,"line":7851},[4221,17128,4872],{"class":4723},[4221,17130,4147],{"class":4575},[4221,17132,4825],{"class":4723},[4221,17134,17135,17137,17139],{"class":4223,"line":7856},[4221,17136,5725],{"class":4723},[4221,17138,4147],{"class":4575},[4221,17140,4825],{"class":4723},[4221,17142,17143],{"class":4223,"line":7876},[4221,17144,4246],{"emptyLinePlaceholder":4245},[4221,17146,17147,17149],{"class":4223,"line":7883},[4221,17148,5635],{"class":4723},[4221,17150,12564],{"class":4575},[4221,17152,17153,17155,17157,17159,17161],{"class":4223,"line":7892},[4221,17154,13488],{"class":4732},[4221,17156,4736],{"class":4532},[4221,17158,4739],{"class":4571},[4221,17160,12259],{"class":4536},[4221,17162,4276],{"class":4571},[4221,17164,17165,17167,17169,17171,17173,17175,17177],{"class":4223,"line":7901},[4221,17166,5740],{"class":4732},[4221,17168,4736],{"class":4532},[4221,17170,4739],{"class":4571},[4221,17172,4814],{"class":4536},[4221,17174,3793],{"class":4756},[4221,17176,5751],{"class":4536},[4221,17178,4276],{"class":4571},[4221,17180,17181,17183,17185,17187,17189,17191,17193,17195,17197,17199,17201],{"class":4223,"line":7910},[4221,17182,5772],{"class":4732},[4221,17184,4736],{"class":4532},[4221,17186,4739],{"class":4571},[4221,17188,4757],{"class":4756},[4221,17190,4760],{"class":4536},[4221,17192,4763],{"class":4756},[4221,17194,4766],{"class":4571},[4221,17196,4769],{"class":4536},[4221,17198,3793],{"class":4756},[4221,17200,4774],{"class":4536},[4221,17202,4276],{"class":4571},[4221,17204,17205],{"class":4223,"line":7915},[4221,17206,13526],{"class":4732},[4221,17208,17210,17212,17214],{"class":4223,"line":17209},101,[4221,17211,9548],{"class":4732},[4221,17213,4736],{"class":4532},[4221,17215,7200],{"class":4571},[4221,17217,17219,17221,17223,17226,17228,17230,17232,17234,17236,17238,17240,17242,17244],{"class":4223,"line":17218},102,[4221,17220,4830],{"class":4723},[4221,17222,3865],{"class":4575},[4221,17224,17225],{"class":4732}," refreshing",[4221,17227,4736],{"class":4532},[4221,17229,4739],{"class":4571},[4221,17231,8670],{"class":4536},[4221,17233,4822],{"class":4571},[4221,17235,9208],{"class":4732},[4221,17237,4736],{"class":4532},[4221,17239,4739],{"class":4571},[4221,17241,8678],{"class":4536},[4221,17243,4822],{"class":4571},[4221,17245,11204],{"class":4723},[4221,17247,17249],{"class":4223,"line":17248},103,[4221,17250,7248],{"class":4571},[4221,17252,17254,17256,17258],{"class":4223,"line":17253},104,[4221,17255,5797],{"class":4732},[4221,17257,4736],{"class":4532},[4221,17259,7200],{"class":4571},[4221,17261,17263,17266,17268,17270,17272,17274,17276,17278,17280,17283,17285,17287,17289,17291],{"class":4223,"line":17262},105,[4221,17264,17265],{"class":4536},"          books",[4221,17267,3793],{"class":4756},[4221,17269,6910],{"class":4536},[4221,17271,7212],{"class":4532},[4221,17273,7215],{"class":4934},[4221,17275,7218],{"class":4532},[4221,17277,4908],{"class":4536},[4221,17279,3793],{"class":4756},[4221,17281,17282],{"class":4536},"grow",[4221,17284,7228],{"class":4532},[4221,17286,4533],{"class":4756},[4221,17288,5806],{"class":4536},[4221,17290,6092],{"class":4934},[4221,17292,7243],{"class":4756},[4221,17294,17296],{"class":4223,"line":17295},106,[4221,17297,7248],{"class":4571},[4221,17299,17301,17303,17305],{"class":4223,"line":17300},107,[4221,17302,7307],{"class":4732},[4221,17304,4736],{"class":4532},[4221,17306,7200],{"class":4571},[4221,17308,17310,17312,17314,17316,17318,17320,17322,17324,17326,17328],{"class":4223,"line":17309},108,[4221,17311,4830],{"class":4723},[4221,17313,4147],{"class":4575},[4221,17315,4807],{"class":4732},[4221,17317,4736],{"class":4532},[4221,17319,4739],{"class":4571},[4221,17321,4814],{"class":4536},[4221,17323,3793],{"class":4756},[4221,17325,7331],{"class":4536},[4221,17327,4822],{"class":4571},[4221,17329,4825],{"class":4723},[4221,17331,17333,17335,17337,17339,17341,17343,17345,17347,17349,17351,17353,17356,17358,17360],{"class":4223,"line":17332},109,[4221,17334,5908],{"class":4723},[4221,17336,4150],{"class":4575},[4221,17338,4807],{"class":4732},[4221,17340,4736],{"class":4532},[4221,17342,4739],{"class":4571},[4221,17344,4814],{"class":4536},[4221,17346,3793],{"class":4756},[4221,17348,7357],{"class":4536},[4221,17350,4822],{"class":4571},[4221,17352,4850],{"class":4723},[4221,17354,17355],{"class":4756},"Полиця порожня",[4221,17357,4863],{"class":4723},[4221,17359,4150],{"class":4575},[4221,17361,4825],{"class":4723},[4221,17363,17365,17367,17369,17371,17373,17375,17377,17379,17381,17383,17385,17388,17390,17392],{"class":4223,"line":17364},110,[4221,17366,5908],{"class":4723},[4221,17368,4150],{"class":4575},[4221,17370,4807],{"class":4732},[4221,17372,4736],{"class":4532},[4221,17374,4739],{"class":4571},[4221,17376,4814],{"class":4536},[4221,17378,3793],{"class":4756},[4221,17380,16869],{"class":4536},[4221,17382,4822],{"class":4571},[4221,17384,4850],{"class":4723},[4221,17386,17387],{"class":4756},"Натисніть «Заповнити» або pull-to-refresh.",[4221,17389,4863],{"class":4723},[4221,17391,4150],{"class":4575},[4221,17393,4825],{"class":4723},[4221,17395,17397,17399,17401],{"class":4223,"line":17396},111,[4221,17398,6005],{"class":4723},[4221,17400,4147],{"class":4575},[4221,17402,4825],{"class":4723},[4221,17404,17406],{"class":4223,"line":17405},112,[4221,17407,7248],{"class":4571},[4221,17409,17411,17413,17415,17417,17419,17421,17423,17425,17427,17429,17431,17433],{"class":4223,"line":17410},113,[4221,17412,13549],{"class":4732},[4221,17414,4736],{"class":4532},[4221,17416,4739],{"class":4571},[4221,17418,4788],{"class":4756},[4221,17420,12652],{"class":4536},[4221,17422,12655],{"class":4756},[4221,17424,4845],{"class":4536},[4221,17426,3785],{"class":4756},[4221,17428,3837],{"class":4536},[4221,17430,12660],{"class":4756},[4221,17432,4766],{"class":4571},[4221,17434,4718],{"class":4756},[4221,17436,17438,17440,17442,17444,17446,17448,17450,17452,17454,17456],{"class":4223,"line":17437},114,[4221,17439,4830],{"class":4723},[4221,17441,4147],{"class":4575},[4221,17443,4807],{"class":4732},[4221,17445,4736],{"class":4532},[4221,17447,4739],{"class":4571},[4221,17449,4814],{"class":4536},[4221,17451,3793],{"class":4756},[4221,17453,13588],{"class":4536},[4221,17455,4822],{"class":4571},[4221,17457,4825],{"class":4723},[4221,17459,17461,17463,17465,17467,17469,17471,17473,17475,17478,17480],{"class":4223,"line":17460},115,[4221,17462,5908],{"class":4723},[4221,17464,4150],{"class":4575},[4221,17466,4807],{"class":4732},[4221,17468,4736],{"class":4532},[4221,17470,4739],{"class":4571},[4221,17472,4814],{"class":4536},[4221,17474,3793],{"class":4756},[4221,17476,17477],{"class":4536},"secText",[4221,17479,4822],{"class":4571},[4221,17481,4825],{"class":4723},[4221,17483,17485,17488,17490,17492,17495,17497,17499,17501,17503],{"class":4223,"line":17484},116,[4221,17486,17487],{"class":4571},"              {",[4221,17489,4845],{"class":4536},[4221,17491,4822],{"class":4571},[4221,17493,17494],{"class":4756}," · ",[4221,17496,4739],{"class":4571},[4221,17498,3837],{"class":4536},[4221,17500,3793],{"class":4756},[4221,17502,6910],{"class":4536},[4221,17504,4276],{"class":4571},[4221,17506,17508,17510,17512],{"class":4223,"line":17507},117,[4221,17509,7436],{"class":4723},[4221,17511,4150],{"class":4575},[4221,17513,4825],{"class":4723},[4221,17515,17517,17519,17521],{"class":4223,"line":17516},118,[4221,17518,6005],{"class":4723},[4221,17520,4147],{"class":4575},[4221,17522,4825],{"class":4723},[4221,17524,17526,17528],{"class":4223,"line":17525},119,[4221,17527,6015],{"class":4756},[4221,17529,4276],{"class":4571},[4221,17531,17533,17535,17537,17539,17541,17543,17545,17547],{"class":4223,"line":17532},120,[4221,17534,5824],{"class":4732},[4221,17536,4736],{"class":4532},[4221,17538,4739],{"class":4571},[4221,17540,4788],{"class":4756},[4221,17542,4760],{"class":4536},[4221,17544,4793],{"class":4756},[4221,17546,4766],{"class":4571},[4221,17548,4718],{"class":4756},[4221,17550,17552,17554,17556,17558,17560,17562,17564,17566,17568,17570],{"class":4223,"line":17551},121,[4221,17553,4830],{"class":4723},[4221,17555,4147],{"class":4575},[4221,17557,4807],{"class":4732},[4221,17559,4736],{"class":4532},[4221,17561,4739],{"class":4571},[4221,17563,4814],{"class":4536},[4221,17565,3793],{"class":4756},[4221,17567,4819],{"class":4536},[4221,17569,4822],{"class":4571},[4221,17571,4825],{"class":4723},[4221,17573,17575,17577,17579,17581,17583,17585,17587,17589,17591,17593,17595,17597,17599,17601,17603,17605,17607,17609],{"class":4223,"line":17574},122,[4221,17576,5908],{"class":4723},[4221,17578,4150],{"class":4575},[4221,17580,4807],{"class":4732},[4221,17582,4736],{"class":4532},[4221,17584,4739],{"class":4571},[4221,17586,4814],{"class":4536},[4221,17588,3793],{"class":4756},[4221,17590,4845],{"class":4536},[4221,17592,4822],{"class":4571},[4221,17594,4850],{"class":4723},[4221,17596,4739],{"class":4571},[4221,17598,4760],{"class":4536},[4221,17600,3793],{"class":4756},[4221,17602,4845],{"class":4536},[4221,17604,4822],{"class":4571},[4221,17606,4863],{"class":4723},[4221,17608,4150],{"class":4575},[4221,17610,4825],{"class":4723},[4221,17612,17614,17616,17618,17620,17622,17624,17626,17628,17630,17632],{"class":4223,"line":17613},123,[4221,17615,5908],{"class":4723},[4221,17617,4150],{"class":4575},[4221,17619,4807],{"class":4732},[4221,17621,4736],{"class":4532},[4221,17623,4739],{"class":4571},[4221,17625,4814],{"class":4536},[4221,17627,3793],{"class":4756},[4221,17629,16869],{"class":4536},[4221,17631,4822],{"class":4571},[4221,17633,4825],{"class":4723},[4221,17635,17637,17639,17641,17643,17645,17647,17649,17651,17653,17655,17657,17659,17662,17664,17666,17668,17670,17672,17675,17677,17679,17681],{"class":4223,"line":17636},124,[4221,17638,17487],{"class":4571},[4221,17640,4760],{"class":4536},[4221,17642,3793],{"class":4756},[4221,17644,12885],{"class":4536},[4221,17646,4822],{"class":4571},[4221,17648,17494],{"class":4756},[4221,17650,4739],{"class":4571},[4221,17652,4760],{"class":4536},[4221,17654,3793],{"class":4756},[4221,17656,15474],{"class":4536},[4221,17658,4822],{"class":4571},[4221,17660,17661],{"class":4756}," · ★ ",[4221,17663,4739],{"class":4571},[4221,17665,4760],{"class":4536},[4221,17667,3793],{"class":4756},[4221,17669,15477],{"class":4536},[4221,17671,3793],{"class":4756},[4221,17673,17674],{"class":4706},"toFixed",[4221,17676,4757],{"class":4756},[4221,17678,5132],{"class":4934},[4221,17680,3874],{"class":4756},[4221,17682,4276],{"class":4571},[4221,17684,17686,17688,17690],{"class":4223,"line":17685},125,[4221,17687,7436],{"class":4723},[4221,17689,4150],{"class":4575},[4221,17691,4825],{"class":4723},[4221,17693,17695,17697,17699],{"class":4223,"line":17694},126,[4221,17696,6005],{"class":4723},[4221,17698,4147],{"class":4575},[4221,17700,4825],{"class":4723},[4221,17702,17704,17706],{"class":4223,"line":17703},127,[4221,17705,6015],{"class":4756},[4221,17707,4276],{"class":4571},[4221,17709,17711,17713,17715,17717,17719,17721,17723,17725,17727,17729,17731,17733,17735,17737,17739,17741,17743],{"class":4223,"line":17710},128,[4221,17712,13827],{"class":4732},[4221,17714,4736],{"class":4532},[4221,17716,4739],{"class":4571},[4221,17718,6845],{"class":4756},[4221,17720,4766],{"class":4571},[4221,17722,8064],{"class":4723},[4221,17724,4147],{"class":4575},[4221,17726,4807],{"class":4732},[4221,17728,4736],{"class":4532},[4221,17730,4739],{"class":4571},[4221,17732,5689],{"class":4756},[4221,17734,13850],{"class":4536},[4221,17736,5701],{"class":4934},[4221,17738,5711],{"class":4756},[4221,17740,4822],{"class":4571},[4221,17742,8081],{"class":4723},[4221,17744,4276],{"class":4571},[4221,17746,17748],{"class":4223,"line":17747},129,[4221,17749,6023],{"class":4723},[4221,17751,17753,17755,17757],{"class":4223,"line":17752},130,[4221,17754,6029],{"class":4723},[4221,17756,15846],{"class":4575},[4221,17758,4825],{"class":4723},[4221,17760,17762],{"class":4223,"line":17761},131,[4221,17763,4893],{"class":4532},[4221,17765,17767],{"class":4223,"line":17766},132,[4221,17768,4276],{"class":4532},[4221,17770,17772],{"class":4223,"line":17771},133,[4221,17773,4246],{"emptyLinePlaceholder":4245},[4221,17775,17777,17779,17781,17783,17785,17787,17789],{"class":4223,"line":17776},134,[4221,17778,4616],{"class":4571},[4221,17780,4908],{"class":4619},[4221,17782,4911],{"class":4532},[4221,17784,4549],{"class":4536},[4221,17786,3793],{"class":4532},[4221,17788,4918],{"class":4706},[4221,17790,4921],{"class":4532},[4221,17792,17794,17797,17799,17801,17803,17805,17807,17810],{"class":4223,"line":17793},135,[4221,17795,17796],{"class":4536},"  safe:",[4221,17798,4533],{"class":4532},[4221,17800,6076],{"class":4536},[4221,17802,5383],{"class":4934},[4221,17804,3785],{"class":4532},[4221,17806,5621],{"class":4536},[4221,17808,17809],{"class":4558}," '#F8FAFC'",[4221,17811,4650],{"class":4532},[4221,17813,17815,17817,17819,17821,17823,17825,17827,17830,17832,17834,17836,17838,17840,17843],{"class":4223,"line":17814},136,[4221,17816,7653],{"class":4536},[4221,17818,4533],{"class":4532},[4221,17820,4931],{"class":4536},[4221,17822,4935],{"class":4934},[4221,17824,3785],{"class":4532},[4221,17826,5813],{"class":4536},[4221,17828,17829],{"class":4934}," 6",[4221,17831,3785],{"class":4532},[4221,17833,4940],{"class":4536},[4221,17835,5383],{"class":4934},[4221,17837,3785],{"class":4532},[4221,17839,4953],{"class":4536},[4221,17841,17842],{"class":4558}," '#E2E8F0'",[4221,17844,4650],{"class":4532},[4221,17846,17848,17850,17852,17854,17857,17859,17861,17863,17865,17867,17870],{"class":4223,"line":17847},137,[4221,17849,6100],{"class":4536},[4221,17851,4533],{"class":4532},[4221,17853,4968],{"class":4536},[4221,17855,17856],{"class":4934}," 22",[4221,17858,3785],{"class":4532},[4221,17860,4975],{"class":4536},[4221,17862,6114],{"class":4558},[4221,17864,3785],{"class":4532},[4221,17866,5657],{"class":4536},[4221,17868,17869],{"class":4558}," '#0F172A'",[4221,17871,4650],{"class":4532},[4221,17873,17875,17878,17880,17882,17885,17887,17889,17891],{"class":4223,"line":17874},138,[4221,17876,17877],{"class":4536},"  muted:",[4221,17879,4533],{"class":4532},[4221,17881,5657],{"class":4536},[4221,17883,17884],{"class":4558}," '#64748B'",[4221,17886,3785],{"class":4532},[4221,17888,4968],{"class":4536},[4221,17890,5708],{"class":4934},[4221,17892,4650],{"class":4532},[4221,17894,17896,17898,17900,17902,17904,17906,17908,17910,17912,17914,17916],{"class":4223,"line":17895},139,[4221,17897,6143],{"class":4536},[4221,17899,4533],{"class":4532},[4221,17901,7658],{"class":4536},[4221,17903,7661],{"class":4558},[4221,17905,3785],{"class":4532},[4221,17907,5813],{"class":4536},[4221,17909,5701],{"class":4934},[4221,17911,3785],{"class":4532},[4221,17913,11227],{"class":4536},[4221,17915,5701],{"class":4934},[4221,17917,4650],{"class":4532},[4221,17919,17921,17923],{"class":4223,"line":17920},140,[4221,17922,7681],{"class":4536},[4221,17924,4579],{"class":4532},[4221,17926,17928,17931,17934],{"class":4223,"line":17927},141,[4221,17929,17930],{"class":4536},"    backgroundColor:",[4221,17932,17933],{"class":4558}," '#2563EB'",[4221,17935,5391],{"class":4532},[4221,17937,17939,17941,17943],{"class":4223,"line":17938},142,[4221,17940,7689],{"class":4536},[4221,17942,6164],{"class":4934},[4221,17944,5391],{"class":4532},[4221,17946,17948,17950,17952],{"class":4223,"line":17947},143,[4221,17949,7699],{"class":4536},[4221,17951,7702],{"class":4934},[4221,17953,5391],{"class":4532},[4221,17955,17957,17959,17961],{"class":4223,"line":17956},144,[4221,17958,6161],{"class":4536},[4221,17960,7702],{"class":4934},[4221,17962,5391],{"class":4532},[4221,17964,17966],{"class":4223,"line":17965},145,[4221,17967,6183],{"class":4532},[4221,17969,17971,17973,17975,17977,17979,17981,17983,17985],{"class":4223,"line":17970},146,[4221,17972,7724],{"class":4536},[4221,17974,4533],{"class":4532},[4221,17976,5657],{"class":4536},[4221,17978,7731],{"class":4558},[4221,17980,3785],{"class":4532},[4221,17982,4975],{"class":4536},[4221,17984,6201],{"class":4558},[4221,17986,4650],{"class":4532},[4221,17988,17990,17993,17995,17997,17999,18001,18003,18005,18007,18009,18011],{"class":4223,"line":17989},147,[4221,17991,17992],{"class":4536},"  btnGhost:",[4221,17994,4533],{"class":4532},[4221,17996,5621],{"class":4536},[4221,17998,7731],{"class":4558},[4221,18000,3785],{"class":4532},[4221,18002,7062],{"class":4536},[4221,18004,5383],{"class":4934},[4221,18006,3785],{"class":4532},[4221,18008,4953],{"class":4536},[4221,18010,17842],{"class":4558},[4221,18012,4650],{"class":4532},[4221,18014,18016,18019,18021,18023,18025,18027,18029,18031],{"class":4223,"line":18015},148,[4221,18017,18018],{"class":4536},"  btnGhostText:",[4221,18020,4533],{"class":4532},[4221,18022,5657],{"class":4536},[4221,18024,17869],{"class":4558},[4221,18026,3785],{"class":4532},[4221,18028,4975],{"class":4536},[4221,18030,6201],{"class":4558},[4221,18032,4650],{"class":4532},[4221,18034,18036,18038,18040,18042,18044,18046,18049,18051,18053,18055,18057],{"class":4223,"line":18035},149,[4221,18037,6129],{"class":4536},[4221,18039,4533],{"class":4532},[4221,18041,6076],{"class":4536},[4221,18043,5383],{"class":4934},[4221,18045,3785],{"class":4532},[4221,18047,18048],{"class":4536},"paddingHorizontal:",[4221,18050,4935],{"class":4934},[4221,18052,3785],{"class":4532},[4221,18054,6089],{"class":4536},[4221,18056,6164],{"class":4934},[4221,18058,4650],{"class":4532},[4221,18060,18062,18065,18067,18069,18071],{"class":4223,"line":18061},150,[4221,18063,18064],{"class":4536},"  grow:",[4221,18066,4533],{"class":4532},[4221,18068,7776],{"class":4536},[4221,18070,5383],{"class":4934},[4221,18072,4650],{"class":4532},[4221,18074,18076,18078,18080,18082,18084,18086,18089,18092,18094,18096,18098,18100,18103,18105,18107,18109,18111],{"class":4223,"line":18075},151,[4221,18077,7786],{"class":4536},[4221,18079,4533],{"class":4532},[4221,18081,6076],{"class":4536},[4221,18083,5383],{"class":4934},[4221,18085,3785],{"class":4532},[4221,18087,18088],{"class":4536},"minHeight:",[4221,18090,18091],{"class":4934}," 240",[4221,18093,3785],{"class":4532},[4221,18095,11574],{"class":4536},[4221,18097,7405],{"class":4558},[4221,18099,3785],{"class":4532},[4221,18101,18102],{"class":4536},"justifyContent:",[4221,18104,7405],{"class":4558},[4221,18106,3785],{"class":4532},[4221,18108,5813],{"class":4536},[4221,18110,5701],{"class":4934},[4221,18112,4650],{"class":4532},[4221,18114,18116,18118,18120,18122,18124,18126,18128,18130,18132,18134,18136],{"class":4223,"line":18115},152,[4221,18117,7859],{"class":4536},[4221,18119,4533],{"class":4532},[4221,18121,4968],{"class":4536},[4221,18123,7751],{"class":4934},[4221,18125,3785],{"class":4532},[4221,18127,4975],{"class":4536},[4221,18129,6201],{"class":4558},[4221,18131,3785],{"class":4532},[4221,18133,5657],{"class":4536},[4221,18135,17869],{"class":4558},[4221,18137,4650],{"class":4532},[4221,18139,18141,18143],{"class":4223,"line":18140},153,[4221,18142,13990],{"class":4536},[4221,18144,4579],{"class":4532},[4221,18146,18148,18150,18152],{"class":4223,"line":18147},154,[4221,18149,17930],{"class":4536},[4221,18151,17842],{"class":4558},[4221,18153,5391],{"class":4532},[4221,18155,18157,18159,18161],{"class":4223,"line":18156},155,[4221,18158,7699],{"class":4536},[4221,18160,5701],{"class":4934},[4221,18162,5391],{"class":4532},[4221,18164,18166,18168,18170],{"class":4223,"line":18165},156,[4221,18167,7689],{"class":4536},[4221,18169,7702],{"class":4934},[4221,18171,5391],{"class":4532},[4221,18173,18175,18177,18179],{"class":4223,"line":18174},157,[4221,18176,6161],{"class":4536},[4221,18178,5701],{"class":4934},[4221,18180,5391],{"class":4532},[4221,18182,18184,18186,18188],{"class":4223,"line":18183},158,[4221,18185,8140],{"class":4536},[4221,18187,5701],{"class":4934},[4221,18189,5391],{"class":4532},[4221,18191,18193],{"class":4223,"line":18192},159,[4221,18194,6183],{"class":4532},[4221,18196,18198,18201,18203,18205,18207,18209,18211,18213],{"class":4223,"line":18197},160,[4221,18199,18200],{"class":4536},"  secText:",[4221,18202,4533],{"class":4532},[4221,18204,4975],{"class":4536},[4221,18206,6114],{"class":4558},[4221,18208,3785],{"class":4532},[4221,18210,5657],{"class":4536},[4221,18212,17933],{"class":4558},[4221,18214,4650],{"class":4532},[4221,18216,18218,18220],{"class":4223,"line":18217},161,[4221,18219,4926],{"class":4536},[4221,18221,4579],{"class":4532},[4221,18223,18225,18227,18229],{"class":4223,"line":18224},162,[4221,18226,17930],{"class":4536},[4221,18228,7731],{"class":4558},[4221,18230,5391],{"class":4532},[4221,18232,18234,18236,18238],{"class":4223,"line":18233},163,[4221,18235,6161],{"class":4536},[4221,18237,6164],{"class":4934},[4221,18239,5391],{"class":4532},[4221,18241,18243,18245,18247],{"class":4223,"line":18242},164,[4221,18244,6151],{"class":4536},[4221,18246,5383],{"class":4934},[4221,18248,5391],{"class":4532},[4221,18250,18252,18255,18257],{"class":4223,"line":18251},165,[4221,18253,18254],{"class":4536},"    borderColor:",[4221,18256,17842],{"class":4558},[4221,18258,5391],{"class":4532},[4221,18260,18262,18264,18266],{"class":4223,"line":18261},166,[4221,18263,6172],{"class":4536},[4221,18265,6175],{"class":4934},[4221,18267,5391],{"class":4532},[4221,18269,18271],{"class":4223,"line":18270},167,[4221,18272,6183],{"class":4532},[4221,18274,18276,18278,18280,18282,18284,18286,18288,18290,18292,18294,18296],{"class":4223,"line":18275},168,[4221,18277,4963],{"class":4536},[4221,18279,4533],{"class":4532},[4221,18281,4975],{"class":4536},[4221,18283,6201],{"class":4558},[4221,18285,3785],{"class":4532},[4221,18287,5657],{"class":4536},[4221,18289,17869],{"class":4558},[4221,18291,3785],{"class":4532},[4221,18293,5698],{"class":4536},[4221,18295,6121],{"class":4934},[4221,18297,4650],{"class":4532},[4221,18299,18301],{"class":4223,"line":18300},169,[4221,18302,4985],{"class":4532},[4131,18304,18306],{"id":18305},"живе-превю-після-кроків","Живе прев’ю (після кроків)",[5209,18308,18312],{"device":5211,"filename":18309,"height":18310,"title":18311},"BookCatalog.tsx",700,"Каталог книг · SectionList",[4212,18313,18315],{"className":4519,"code":18314,"language":4521,"meta":4217,"style":4217},"import { useCallback, useMemo, useState } from 'react';\nimport {\n  Pressable,\n  RefreshControl,\n  SectionList,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Book = {\n  id: string;\n  title: string;\n  author: string;\n  genre: string;\n  year: number;\n  rating: number;\n};\n\nconst GENRES = ['Фантастика', 'Детектив', 'Подорожі', 'Історія', 'Поезія'] as const;\nconst AUTHORS = ['Коваленко', 'Шевченко', 'Лис', 'Мельник', 'Бондар'];\n\nfunction buildBooks(seed: number, count = 80): Book[] {\n  return Array.from({ length: count }, (_, i) => ({\n    id: `${seed}-${i}`,\n    title: `Книга ${i + 1}`,\n    author: AUTHORS[i % AUTHORS.length],\n    genre: GENRES[i % GENRES.length],\n    year: 1990 + (i % 35),\n    rating: ((seed + i) % 50) \u002F 10 + 5,\n  }));\n}\n\nfunction toSections(books: Book[]) {\n  const map = new Map\u003Cstring, Book[]>();\n  for (const b of books) {\n    const list = map.get(b.genre) ?? [];\n    list.push(b);\n    map.set(b.genre, list);\n  }\n  return [...map.entries()]\n    .sort(([a], [b]) => a.localeCompare(b, 'uk'))\n    .map(([title, data]) => ({ title, data }));\n}\n\nexport default function App() {\n  const dark = useColorScheme() === 'dark';\n  const bg = dark ? '#000' : '#F8FAFC';\n  const surface = dark ? '#1c1c1e' : '#fff';\n  const text = dark ? '#f5f5f7' : '#0f172a';\n  const muted = dark ? '#a1a1aa' : '#64748b';\n  const primary = dark ? '#3b82f6' : '#2563eb';\n  const border = dark ? '#3a3a3c' : '#e2e8f0';\n  const headerBg = dark ? '#111' : '#e2e8f0';\n\n  const [seed, setSeed] = useState(1);\n  const [books, setBooks] = useState(() => buildBooks(1));\n  const [refreshing, setRefreshing] = useState(false);\n  const sections = useMemo(() => toSections(books), [books]);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    setTimeout(() => {\n      setSeed((s) => {\n        const next = s + 1;\n        setBooks(buildBooks(next));\n        return next;\n      });\n      setRefreshing(false);\n    }, 700);\n  }, []);\n\n  return (\n    \u003CView style={[styles.safe, { backgroundColor: bg }]}>\n      \u003CView style={[styles.toolbar, { borderColor: border }]}>\n        \u003CText style={[styles.h, { color: text }]}>Каталог книг\u003C\u002FText>\n        \u003CText style={{ color: muted, fontSize: 13 }}>\n          {books.length} · seed {seed} · SectionList\n        \u003C\u002FText>\n        \u003CView style={styles.rowBtns}>\n          \u003CPressable\n            style={[styles.btn, { backgroundColor: primary }]}\n            onPress={() => setBooks(buildBooks(seed))}\n          >\n            \u003CText style={styles.btnText}>Заповнити\u003C\u002FText>\n          \u003C\u002FPressable>\n          \u003CPressable\n            style={[styles.btn, { backgroundColor: surface, borderColor: border, borderWidth: 1 }]}\n            onPress={() => setBooks([])}\n          >\n            \u003CText style={{ color: text, fontWeight: '700' }}>Очистити\u003C\u002FText>\n          \u003C\u002FPressable>\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CSectionList\n        style={{ flex: 1 }}\n        sections={sections}\n        keyExtractor={(item) => item.id}\n        stickySectionHeadersEnabled\n        refreshControl={\n          \u003CRefreshControl\n            refreshing={refreshing}\n            onRefresh={onRefresh}\n            tintColor={primary}\n            colors={[primary]}\n          \u002F>\n        }\n        contentContainerStyle={\n          books.length === 0\n            ? { flexGrow: 1, padding: 16 }\n            : { padding: 16, paddingBottom: 24 }\n        }\n        ListEmptyComponent={\n          \u003CView style={styles.empty}>\n            \u003CText style={[styles.emptyTitle, { color: text }]}>Полиця порожня\u003C\u002FText>\n            \u003CText style={{ color: muted, textAlign: 'center' }}>\n              Заповніть або pull-to-refresh\n            \u003C\u002FText>\n          \u003C\u002FView>\n        }\n        renderSectionHeader={({ section: { title, data } }) => (\n          \u003CView style={[styles.sec, { backgroundColor: headerBg }]}>\n            \u003CText style={{ color: primary, fontWeight: '800' }}>\n              {title} · {data.length}\n            \u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        renderItem={({ item }) => (\n          \u003CView style={[styles.card, { backgroundColor: surface, borderColor: border }]}>\n            \u003CText style={{ color: text, fontWeight: '700' }}>{item.title}\u003C\u002FText>\n            \u003CText style={{ color: muted, marginTop: 4, fontSize: 13 }}>\n              {item.author} · {item.year} · ★ {item.rating.toFixed(1)}\n            \u003C\u002FText>\n          \u003C\u002FView>\n        )}\n        ItemSeparatorComponent={() => \u003CView style={{ height: 8 }} \u002F>}\n        SectionSeparatorComponent={() => \u003CView style={{ height: 10 }} \u002F>}\n      \u002F>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1 },\n  toolbar: { padding: 16, gap: 6, borderBottomWidth: 1 },\n  h: { fontSize: 20, fontWeight: '800' },\n  rowBtns: { flexDirection: 'row', gap: 8, marginTop: 8 },\n  btn: { paddingHorizontal: 12, paddingVertical: 10, borderRadius: 10 },\n  btnText: { color: '#fff', fontWeight: '700' },\n  empty: {\n    flex: 1,\n    minHeight: 220,\n    alignItems: 'center',\n    justifyContent: 'center',\n    gap: 8,\n  },\n  emptyTitle: { fontSize: 18, fontWeight: '700' },\n  sec: {\n    paddingVertical: 8,\n    paddingHorizontal: 10,\n    borderRadius: 8,\n    marginBottom: 8,\n  },\n  card: { borderWidth: 1, borderRadius: 12, padding: 14 },\n});\n",[3750,18316,18317,18341,18347,18353,18359,18365,18371,18377,18383,18389,18399,18403,18411,18421,18431,18441,18451,18461,18471,18475,18479,18513,18541,18545,18573,18603,18627,18647,18668,18689,18706,18733,18737,18741,18745,18762,18784,18800,18824,18838,18860,18864,18878,18912,18940,18944,18948,18960,18976,18996,19016,19036,19056,19076,19096,19116,19120,19142,19170,19192,19218,19222,19238,19248,19258,19272,19288,19302,19310,19314,19324,19332,19336,19340,19346,19378,19410,19450,19480,19504,19512,19535,19541,19567,19594,19598,19628,19636,19642,19680,19698,19702,19740,19748,19756,19764,19768,19774,19792,19804,19828,19832,19840,19846,19858,19870,19882,19898,19902,19906,19914,19927,19946,19965,19969,19977,19999,20039,20069,20074,20082,20090,20094,20120,20152,20182,20202,20210,20218,20224,20242,20280,20326,20362,20408,20416,20424,20430,20466,20502,20506,20514,20518,20522,20526,20542,20554,20578,20596,20621,20645,20663,20669,20677,20685,20693,20701,20709,20713,20731,20737,20745,20753,20761,20769,20773,20797],{"__ignoreMap":4217},[4221,18318,18319,18321,18323,18325,18327,18329,18331,18333,18335,18337,18339],{"class":4223,"line":4224},[4221,18320,4529],{"class":4528},[4221,18322,4533],{"class":4532},[4221,18324,3900],{"class":4536},[4221,18326,3785],{"class":4532},[4221,18328,15773],{"class":4536},[4221,18330,3785],{"class":4532},[4221,18332,6347],{"class":4536},[4221,18334,4552],{"class":4532},[4221,18336,4555],{"class":4528},[4221,18338,6486],{"class":4558},[4221,18340,4562],{"class":4532},[4221,18342,18343,18345],{"class":4223,"line":4230},[4221,18344,4529],{"class":4528},[4221,18346,4579],{"class":4532},[4221,18348,18349,18351],{"class":4223,"line":4236},[4221,18350,6506],{"class":4536},[4221,18352,5391],{"class":4532},[4221,18354,18355,18357],{"class":4223,"line":4242},[4221,18356,8764],{"class":4536},[4221,18358,5391],{"class":4532},[4221,18360,18361,18363],{"class":4223,"line":4249},[4221,18362,12818],{"class":4536},[4221,18364,5391],{"class":4532},[4221,18366,18367,18369],{"class":4223,"line":4255},[4221,18368,6513],{"class":4536},[4221,18370,5391],{"class":4532},[4221,18372,18373,18375],{"class":4223,"line":4261},[4221,18374,6520],{"class":4536},[4221,18376,5391],{"class":4532},[4221,18378,18379,18381],{"class":4223,"line":4267},[4221,18380,6527],{"class":4536},[4221,18382,5391],{"class":4532},[4221,18384,18385,18387],{"class":4223,"line":4273},[4221,18386,6534],{"class":4536},[4221,18388,5391],{"class":4532},[4221,18390,18391,18393,18395,18397],{"class":4223,"line":4279},[4221,18392,6541],{"class":4532},[4221,18394,4555],{"class":4528},[4221,18396,4559],{"class":4558},[4221,18398,4562],{"class":4532},[4221,18400,18401],{"class":4223,"line":4284},[4221,18402,4246],{"emptyLinePlaceholder":4245},[4221,18404,18405,18407,18409],{"class":4223,"line":4290},[4221,18406,5261],{"class":4571},[4221,18408,12275],{"class":4575},[4221,18410,15868],{"class":4532},[4221,18412,18413,18415,18417,18419],{"class":4223,"line":4296},[4221,18414,4584],{"class":4536},[4221,18416,4587],{"class":4532},[4221,18418,4590],{"class":4575},[4221,18420,4562],{"class":4532},[4221,18422,18423,18425,18427,18429],{"class":4223,"line":4302},[4221,18424,4597],{"class":4536},[4221,18426,4587],{"class":4532},[4221,18428,4590],{"class":4575},[4221,18430,4562],{"class":4532},[4221,18432,18433,18435,18437,18439],{"class":4223,"line":4308},[4221,18434,12302],{"class":4536},[4221,18436,4587],{"class":4532},[4221,18438,4590],{"class":4575},[4221,18440,4562],{"class":4532},[4221,18442,18443,18445,18447,18449],{"class":4223,"line":4314},[4221,18444,15571],{"class":4536},[4221,18446,4587],{"class":4532},[4221,18448,4590],{"class":4575},[4221,18450,4562],{"class":4532},[4221,18452,18453,18455,18457,18459],{"class":4223,"line":4319},[4221,18454,15582],{"class":4536},[4221,18456,4587],{"class":4532},[4221,18458,8356],{"class":4575},[4221,18460,4562],{"class":4532},[4221,18462,18463,18465,18467,18469],{"class":4223,"line":4324},[4221,18464,15593],{"class":4536},[4221,18466,4587],{"class":4532},[4221,18468,8356],{"class":4575},[4221,18470,4562],{"class":4532},[4221,18472,18473],{"class":4223,"line":4330},[4221,18474,15933],{"class":4532},[4221,18476,18477],{"class":4223,"line":4336},[4221,18478,4246],{"emptyLinePlaceholder":4245},[4221,18480,18481,18483,18485,18487,18489,18491,18493,18495,18497,18499,18501,18503,18505,18507,18509,18511],{"class":4223,"line":4342},[4221,18482,4616],{"class":4571},[4221,18484,15973],{"class":4619},[4221,18486,15976],{"class":4532},[4221,18488,15979],{"class":4558},[4221,18490,3785],{"class":4532},[4221,18492,15984],{"class":4558},[4221,18494,3785],{"class":4532},[4221,18496,15989],{"class":4558},[4221,18498,3785],{"class":4532},[4221,18500,15994],{"class":4558},[4221,18502,3785],{"class":4532},[4221,18504,15999],{"class":4558},[4221,18506,16002],{"class":4532},[4221,18508,16005],{"class":4528},[4221,18510,16008],{"class":4571},[4221,18512,4562],{"class":4532},[4221,18514,18515,18517,18519,18521,18523,18525,18527,18529,18531,18533,18535,18537,18539],{"class":4223,"line":4348},[4221,18516,4616],{"class":4571},[4221,18518,16017],{"class":4619},[4221,18520,15976],{"class":4532},[4221,18522,16022],{"class":4558},[4221,18524,3785],{"class":4532},[4221,18526,16027],{"class":4558},[4221,18528,3785],{"class":4532},[4221,18530,16032],{"class":4558},[4221,18532,3785],{"class":4532},[4221,18534,16037],{"class":4558},[4221,18536,3785],{"class":4532},[4221,18538,16042],{"class":4558},[4221,18540,4691],{"class":4532},[4221,18542,18543],{"class":4223,"line":4354},[4221,18544,4246],{"emptyLinePlaceholder":4245},[4221,18546,18547,18549,18551,18553,18555,18557,18559,18561,18563,18565,18567,18569,18571],{"class":4223,"line":4360},[4221,18548,8846],{"class":4571},[4221,18550,16055],{"class":4706},[4221,18552,4757],{"class":4532},[4221,18554,8854],{"class":4536},[4221,18556,4587],{"class":4532},[4221,18558,8356],{"class":4575},[4221,18560,3785],{"class":4532},[4221,18562,10357],{"class":4536},[4221,18564,4911],{"class":4532},[4221,18566,14222],{"class":4934},[4221,18568,8861],{"class":4532},[4221,18570,12344],{"class":4575},[4221,18572,8866],{"class":4532},[4221,18574,18575,18577,18579,18581,18583,18585,18587,18589,18591,18593,18595,18597,18599,18601],{"class":4223,"line":4365},[4221,18576,4715],{"class":4528},[4221,18578,8873],{"class":4536},[4221,18580,3793],{"class":4532},[4221,18582,4555],{"class":4706},[4221,18584,4788],{"class":4532},[4221,18586,5325],{"class":4536},[4221,18588,10384],{"class":4536},[4221,18590,5331],{"class":4532},[4221,18592,5334],{"class":4536},[4221,18594,3785],{"class":4532},[4221,18596,5339],{"class":4536},[4221,18598,4763],{"class":4532},[4221,18600,4766],{"class":4571},[4221,18602,5346],{"class":4532},[4221,18604,18605,18607,18609,18611,18613,18615,18617,18619,18621,18623,18625],{"class":4223,"line":4371},[4221,18606,8902],{"class":4536},[4221,18608,8905],{"class":4558},[4221,18610,5375],{"class":4571},[4221,18612,8854],{"class":4536},[4221,18614,4822],{"class":4571},[4221,18616,8914],{"class":4558},[4221,18618,5375],{"class":4571},[4221,18620,5339],{"class":4536},[4221,18622,4822],{"class":4571},[4221,18624,5388],{"class":4558},[4221,18626,5391],{"class":4532},[4221,18628,18629,18631,18633,18635,18637,18639,18641,18643,18645],{"class":4223,"line":4377},[4221,18630,8929],{"class":4536},[4221,18632,6901],{"class":4558},[4221,18634,5375],{"class":4571},[4221,18636,5339],{"class":4536},[4221,18638,5380],{"class":4532},[4221,18640,5383],{"class":4934},[4221,18642,4822],{"class":4571},[4221,18644,5388],{"class":4558},[4221,18646,5391],{"class":4532},[4221,18648,18649,18652,18654,18656,18658,18660,18662,18664,18666],{"class":4223,"line":4383},[4221,18650,18651],{"class":4536},"    author:",[4221,18653,16017],{"class":4619},[4221,18655,5608],{"class":4532},[4221,18657,5339],{"class":4536},[4221,18659,5402],{"class":4532},[4221,18661,16202],{"class":4619},[4221,18663,3793],{"class":4532},[4221,18665,6910],{"class":4536},[4221,18667,14422],{"class":4532},[4221,18669,18670,18673,18675,18677,18679,18681,18683,18685,18687],{"class":4223,"line":4389},[4221,18671,18672],{"class":4536},"    genre:",[4221,18674,15973],{"class":4619},[4221,18676,5608],{"class":4532},[4221,18678,5339],{"class":4536},[4221,18680,5402],{"class":4532},[4221,18682,16120],{"class":4619},[4221,18684,3793],{"class":4532},[4221,18686,6910],{"class":4536},[4221,18688,14422],{"class":4532},[4221,18690,18691,18694,18696,18698,18700,18702,18704],{"class":4223,"line":4395},[4221,18692,18693],{"class":4536},"    year:",[4221,18695,16223],{"class":4934},[4221,18697,16226],{"class":4532},[4221,18699,5339],{"class":4536},[4221,18701,5402],{"class":4532},[4221,18703,16233],{"class":4934},[4221,18705,5365],{"class":4532},[4221,18707,18708,18711,18713,18715,18717,18719,18721,18723,18725,18727,18729,18731],{"class":4223,"line":4400},[4221,18709,18710],{"class":4536},"    rating:",[4221,18712,16243],{"class":4532},[4221,18714,8854],{"class":4536},[4221,18716,4016],{"class":4532},[4221,18718,5339],{"class":4536},[4221,18720,16252],{"class":4532},[4221,18722,10331],{"class":4934},[4221,18724,16257],{"class":4532},[4221,18726,10317],{"class":4934},[4221,18728,4016],{"class":4532},[4221,18730,16264],{"class":4934},[4221,18732,5391],{"class":4532},[4221,18734,18735],{"class":4223,"line":4405},[4221,18736,8961],{"class":4532},[4221,18738,18739],{"class":4223,"line":5860},[4221,18740,4276],{"class":4532},[4221,18742,18743],{"class":4223,"line":5873},[4221,18744,4246],{"emptyLinePlaceholder":4245},[4221,18746,18747,18749,18751,18753,18755,18757,18759],{"class":4223,"line":5891},[4221,18748,8846],{"class":4571},[4221,18750,16293],{"class":4706},[4221,18752,4757],{"class":4532},[4221,18754,15720],{"class":4536},[4221,18756,4587],{"class":4532},[4221,18758,12344],{"class":4575},[4221,18760,18761],{"class":4532},"[]) {\n",[4221,18763,18764,18766,18768,18770,18772,18774,18776,18778,18780,18782],{"class":4223,"line":5899},[4221,18765,5452],{"class":4571},[4221,18767,16315],{"class":4619},[4221,18769,4911],{"class":4532},[4221,18771,16320],{"class":4571},[4221,18773,16323],{"class":4706},[4221,18775,6756],{"class":4532},[4221,18777,4590],{"class":4575},[4221,18779,3785],{"class":4532},[4221,18781,12344],{"class":4575},[4221,18783,16334],{"class":4532},[4221,18785,18786,18788,18790,18792,18794,18796,18798],{"class":4223,"line":5905},[4221,18787,16339],{"class":4528},[4221,18789,10727],{"class":4532},[4221,18791,4616],{"class":4571},[4221,18793,16346],{"class":4619},[4221,18795,16349],{"class":4571},[4221,18797,16352],{"class":4536},[4221,18799,11846],{"class":4532},[4221,18801,18802,18804,18806,18808,18810,18812,18814,18816,18818,18820,18822],{"class":4223,"line":5955},[4221,18803,10403],{"class":4571},[4221,18805,16361],{"class":4619},[4221,18807,4911],{"class":4532},[4221,18809,4019],{"class":4536},[4221,18811,3793],{"class":4532},[4221,18813,16370],{"class":4706},[4221,18815,4757],{"class":4532},[4221,18817,16375],{"class":4536},[4221,18819,3793],{"class":4532},[4221,18821,15471],{"class":4536},[4221,18823,16382],{"class":4532},[4221,18825,18826,18828,18830,18832,18834,18836],{"class":4223,"line":6002},[4221,18827,16387],{"class":4536},[4221,18829,3793],{"class":4532},[4221,18831,16392],{"class":4706},[4221,18833,4757],{"class":4532},[4221,18835,16375],{"class":4536},[4221,18837,8278],{"class":4532},[4221,18839,18840,18842,18844,18846,18848,18850,18852,18854,18856,18858],{"class":4223,"line":6012},[4221,18841,16403],{"class":4536},[4221,18843,3793],{"class":4532},[4221,18845,16408],{"class":4706},[4221,18847,4757],{"class":4532},[4221,18849,16375],{"class":4536},[4221,18851,3793],{"class":4532},[4221,18853,15471],{"class":4536},[4221,18855,3785],{"class":4532},[4221,18857,5751],{"class":4536},[4221,18859,8278],{"class":4532},[4221,18861,18862],{"class":4223,"line":6020},[4221,18863,16427],{"class":4532},[4221,18865,18866,18868,18870,18872,18874,18876],{"class":4223,"line":6026},[4221,18867,4715],{"class":4528},[4221,18869,10833],{"class":4532},[4221,18871,4019],{"class":4536},[4221,18873,3793],{"class":4532},[4221,18875,16440],{"class":4706},[4221,18877,16443],{"class":4532},[4221,18879,18880,18882,18884,18886,18888,18890,18892,18894,18896,18898,18900,18902,18904,18906,18908,18910],{"class":4223,"line":6036},[4221,18881,16448],{"class":4532},[4221,18883,16451],{"class":4706},[4221,18885,16454],{"class":4532},[4221,18887,16457],{"class":4536},[4221,18889,16460],{"class":4532},[4221,18891,16375],{"class":4536},[4221,18893,16465],{"class":4532},[4221,18895,4766],{"class":4571},[4221,18897,16470],{"class":4536},[4221,18899,3793],{"class":4532},[4221,18901,16475],{"class":4706},[4221,18903,4757],{"class":4532},[4221,18905,16375],{"class":4536},[4221,18907,3785],{"class":4532},[4221,18909,16484],{"class":4558},[4221,18911,16487],{"class":4532},[4221,18913,18914,18916,18918,18920,18922,18924,18926,18928,18930,18932,18934,18936,18938],{"class":4223,"line":6041},[4221,18915,16448],{"class":4532},[4221,18917,4019],{"class":4706},[4221,18919,16454],{"class":4532},[4221,18921,4845],{"class":4536},[4221,18923,3785],{"class":4532},[4221,18925,3837],{"class":4536},[4221,18927,16465],{"class":4532},[4221,18929,4766],{"class":4571},[4221,18931,16508],{"class":4532},[4221,18933,4845],{"class":4536},[4221,18935,3785],{"class":4532},[4221,18937,3837],{"class":4536},[4221,18939,16517],{"class":4532},[4221,18941,18942],{"class":4223,"line":6046},[4221,18943,4276],{"class":4532},[4221,18945,18946],{"class":4223,"line":6051},[4221,18947,4246],{"emptyLinePlaceholder":4245},[4221,18949,18950,18952,18954,18956,18958],{"class":4223,"line":6068},[4221,18951,4700],{"class":4528},[4221,18953,5440],{"class":4528},[4221,18955,4703],{"class":4571},[4221,18957,5445],{"class":4706},[4221,18959,4710],{"class":4532},[4221,18961,18962,18964,18966,18968,18970,18972,18974],{"class":4223,"line":6097},[4221,18963,5452],{"class":4571},[4221,18965,5455],{"class":4619},[4221,18967,4911],{"class":4532},[4221,18969,5244],{"class":4706},[4221,18971,5462],{"class":4532},[4221,18973,5465],{"class":4558},[4221,18975,4562],{"class":4532},[4221,18977,18978,18980,18982,18984,18986,18988,18990,18992,18994],{"class":4223,"line":6126},[4221,18979,5452],{"class":4571},[4221,18981,5474],{"class":4619},[4221,18983,4911],{"class":4532},[4221,18985,5479],{"class":4536},[4221,18987,5413],{"class":4532},[4221,18989,5484],{"class":4558},[4221,18991,5419],{"class":4532},[4221,18993,5489],{"class":4558},[4221,18995,4562],{"class":4532},[4221,18997,18998,19000,19002,19004,19006,19008,19010,19012,19014],{"class":4223,"line":6140},[4221,18999,5452],{"class":4571},[4221,19001,5498],{"class":4619},[4221,19003,4911],{"class":4532},[4221,19005,5479],{"class":4536},[4221,19007,5413],{"class":4532},[4221,19009,5507],{"class":4558},[4221,19011,5419],{"class":4532},[4221,19013,5512],{"class":4558},[4221,19015,4562],{"class":4532},[4221,19017,19018,19020,19022,19024,19026,19028,19030,19032,19034],{"class":4223,"line":6148},[4221,19019,5452],{"class":4571},[4221,19021,5521],{"class":4619},[4221,19023,4911],{"class":4532},[4221,19025,5479],{"class":4536},[4221,19027,5413],{"class":4532},[4221,19029,5530],{"class":4558},[4221,19031,5419],{"class":4532},[4221,19033,5535],{"class":4558},[4221,19035,4562],{"class":4532},[4221,19037,19038,19040,19042,19044,19046,19048,19050,19052,19054],{"class":4223,"line":6158},[4221,19039,5452],{"class":4571},[4221,19041,5544],{"class":4619},[4221,19043,4911],{"class":4532},[4221,19045,5479],{"class":4536},[4221,19047,5413],{"class":4532},[4221,19049,5553],{"class":4558},[4221,19051,5419],{"class":4532},[4221,19053,5558],{"class":4558},[4221,19055,4562],{"class":4532},[4221,19057,19058,19060,19062,19064,19066,19068,19070,19072,19074],{"class":4223,"line":6169},[4221,19059,5452],{"class":4571},[4221,19061,6694],{"class":4619},[4221,19063,4911],{"class":4532},[4221,19065,5479],{"class":4536},[4221,19067,5413],{"class":4532},[4221,19069,6703],{"class":4558},[4221,19071,5419],{"class":4532},[4221,19073,6708],{"class":4558},[4221,19075,4562],{"class":4532},[4221,19077,19078,19080,19082,19084,19086,19088,19090,19092,19094],{"class":4223,"line":6180},[4221,19079,5452],{"class":4571},[4221,19081,5567],{"class":4619},[4221,19083,4911],{"class":4532},[4221,19085,5479],{"class":4536},[4221,19087,5413],{"class":4532},[4221,19089,5576],{"class":4558},[4221,19091,5419],{"class":4532},[4221,19093,5581],{"class":4558},[4221,19095,4562],{"class":4532},[4221,19097,19098,19100,19102,19104,19106,19108,19110,19112,19114],{"class":4223,"line":6186},[4221,19099,5452],{"class":4571},[4221,19101,13361],{"class":4619},[4221,19103,4911],{"class":4532},[4221,19105,5479],{"class":4536},[4221,19107,5413],{"class":4532},[4221,19109,13370],{"class":4558},[4221,19111,5419],{"class":4532},[4221,19113,5581],{"class":4558},[4221,19115,4562],{"class":4532},[4221,19117,19118],{"class":4223,"line":6212},[4221,19119,4246],{"emptyLinePlaceholder":4245},[4221,19121,19122,19124,19126,19128,19130,19132,19134,19136,19138,19140],{"class":4223,"line":7314},[4221,19123,5452],{"class":4571},[4221,19125,6741],{"class":4532},[4221,19127,8854],{"class":4619},[4221,19129,3785],{"class":4532},[4221,19131,9134],{"class":4619},[4221,19133,6751],{"class":4532},[4221,19135,6347],{"class":4706},[4221,19137,4757],{"class":4532},[4221,19139,5132],{"class":4934},[4221,19141,8278],{"class":4532},[4221,19143,19144,19146,19148,19150,19152,19154,19156,19158,19160,19162,19164,19166,19168],{"class":4223,"line":7338},[4221,19145,5452],{"class":4571},[4221,19147,6741],{"class":4532},[4221,19149,15720],{"class":4619},[4221,19151,3785],{"class":4532},[4221,19153,16572],{"class":4619},[4221,19155,6751],{"class":4532},[4221,19157,6347],{"class":4706},[4221,19159,9163],{"class":4532},[4221,19161,4766],{"class":4571},[4221,19163,16055],{"class":4706},[4221,19165,4757],{"class":4532},[4221,19167,5132],{"class":4934},[4221,19169,9174],{"class":4532},[4221,19171,19172,19174,19176,19178,19180,19182,19184,19186,19188,19190],{"class":4223,"line":7381},[4221,19173,5452],{"class":4571},[4221,19175,6741],{"class":4532},[4221,19177,8670],{"class":4619},[4221,19179,3785],{"class":4532},[4221,19181,9187],{"class":4619},[4221,19183,6751],{"class":4532},[4221,19185,6347],{"class":4706},[4221,19187,4757],{"class":4532},[4221,19189,8691],{"class":4571},[4221,19191,8278],{"class":4532},[4221,19193,19194,19196,19198,19200,19202,19204,19206,19208,19210,19212,19214,19216],{"class":4223,"line":7421},[4221,19195,5452],{"class":4571},[4221,19197,16621],{"class":4619},[4221,19199,4911],{"class":4532},[4221,19201,15773],{"class":4706},[4221,19203,9163],{"class":4532},[4221,19205,4766],{"class":4571},[4221,19207,16293],{"class":4706},[4221,19209,4757],{"class":4532},[4221,19211,15720],{"class":4536},[4221,19213,16638],{"class":4532},[4221,19215,15720],{"class":4536},[4221,19217,9318],{"class":4532},[4221,19219,19220],{"class":4223,"line":7427},[4221,19221,4246],{"emptyLinePlaceholder":4245},[4221,19223,19224,19226,19228,19230,19232,19234,19236],{"class":4223,"line":7433},[4221,19225,5452],{"class":4571},[4221,19227,9208],{"class":4619},[4221,19229,4911],{"class":4532},[4221,19231,3900],{"class":4706},[4221,19233,9163],{"class":4532},[4221,19235,4766],{"class":4571},[4221,19237,4579],{"class":4532},[4221,19239,19240,19242,19244,19246],{"class":4223,"line":7443},[4221,19241,9223],{"class":4706},[4221,19243,4757],{"class":4532},[4221,19245,9228],{"class":4571},[4221,19247,8278],{"class":4532},[4221,19249,19250,19252,19254,19256],{"class":4223,"line":7452},[4221,19251,9235],{"class":4706},[4221,19253,9163],{"class":4532},[4221,19255,4766],{"class":4571},[4221,19257,4579],{"class":4532},[4221,19259,19260,19262,19264,19266,19268,19270],{"class":4223,"line":7457},[4221,19261,9264],{"class":4706},[4221,19263,6856],{"class":4532},[4221,19265,16691],{"class":4536},[4221,19267,4763],{"class":4532},[4221,19269,4766],{"class":4571},[4221,19271,4579],{"class":4532},[4221,19273,19274,19276,19278,19280,19282,19284,19286],{"class":4223,"line":7476},[4221,19275,10781],{"class":4571},[4221,19277,9249],{"class":4619},[4221,19279,4911],{"class":4532},[4221,19281,16691],{"class":4536},[4221,19283,4016],{"class":4532},[4221,19285,5132],{"class":4934},[4221,19287,4562],{"class":4532},[4221,19289,19290,19292,19294,19296,19298,19300],{"class":4223,"line":7515},[4221,19291,16718],{"class":4706},[4221,19293,4757],{"class":4532},[4221,19295,16723],{"class":4706},[4221,19297,4757],{"class":4532},[4221,19299,9269],{"class":4536},[4221,19301,9174],{"class":4532},[4221,19303,19304,19306,19308],{"class":4223,"line":7563},[4221,19305,10830],{"class":4528},[4221,19307,9249],{"class":4536},[4221,19309,4562],{"class":4532},[4221,19311,19312],{"class":4223,"line":7572},[4221,19313,10847],{"class":4532},[4221,19315,19316,19318,19320,19322],{"class":4223,"line":7579},[4221,19317,9292],{"class":4706},[4221,19319,4757],{"class":4532},[4221,19321,8691],{"class":4571},[4221,19323,8278],{"class":4532},[4221,19325,19326,19328,19330],{"class":4223,"line":7584},[4221,19327,9303],{"class":4532},[4221,19329,10865],{"class":4934},[4221,19331,8278],{"class":4532},[4221,19333,19334],{"class":4223,"line":7593},[4221,19335,16764],{"class":4532},[4221,19337,19338],{"class":4223,"line":7598},[4221,19339,4246],{"emptyLinePlaceholder":4245},[4221,19341,19342,19344],{"class":4223,"line":7603},[4221,19343,4715],{"class":4528},[4221,19345,4718],{"class":4532},[4221,19347,19348,19350,19352,19354,19356,19358,19360,19362,19364,19366,19368,19370,19372,19374,19376],{"class":4223,"line":7608},[4221,19349,4724],{"class":4723},[4221,19351,4147],{"class":4575},[4221,19353,4807],{"class":4732},[4221,19355,4736],{"class":4532},[4221,19357,4739],{"class":4571},[4221,19359,5608],{"class":4756},[4221,19361,4814],{"class":4536},[4221,19363,3793],{"class":4756},[4221,19365,16793],{"class":4536},[4221,19367,5618],{"class":4756},[4221,19369,5621],{"class":4536},[4221,19371,5474],{"class":4536},[4221,19373,5626],{"class":4756},[4221,19375,4822],{"class":4571},[4221,19377,4825],{"class":4723},[4221,19379,19380,19382,19384,19386,19388,19390,19392,19394,19396,19398,19400,19402,19404,19406,19408],{"class":4223,"line":7625},[4221,19381,5635],{"class":4723},[4221,19383,4147],{"class":4575},[4221,19385,4807],{"class":4732},[4221,19387,4736],{"class":4532},[4221,19389,4739],{"class":4571},[4221,19391,5608],{"class":4756},[4221,19393,4814],{"class":4536},[4221,19395,3793],{"class":4756},[4221,19397,6822],{"class":4536},[4221,19399,5618],{"class":4756},[4221,19401,4953],{"class":4536},[4221,19403,5567],{"class":4536},[4221,19405,5626],{"class":4756},[4221,19407,4822],{"class":4571},[4221,19409,4825],{"class":4723},[4221,19411,19412,19414,19416,19418,19420,19422,19424,19426,19428,19430,19432,19434,19436,19438,19440,19442,19444,19446,19448],{"class":4223,"line":7650},[4221,19413,4802],{"class":4723},[4221,19415,4150],{"class":4575},[4221,19417,4807],{"class":4732},[4221,19419,4736],{"class":4532},[4221,19421,4739],{"class":4571},[4221,19423,5608],{"class":4756},[4221,19425,4814],{"class":4536},[4221,19427,3793],{"class":4756},[4221,19429,5652],{"class":4536},[4221,19431,5618],{"class":4756},[4221,19433,5657],{"class":4536},[4221,19435,5521],{"class":4536},[4221,19437,5626],{"class":4756},[4221,19439,4822],{"class":4571},[4221,19441,4850],{"class":4723},[4221,19443,16844],{"class":4532},[4221,19445,4863],{"class":4723},[4221,19447,4150],{"class":4575},[4221,19449,4825],{"class":4723},[4221,19451,19452,19454,19456,19458,19460,19462,19464,19466,19468,19470,19472,19474,19476,19478],{"class":4223,"line":7678},[4221,19453,4802],{"class":4723},[4221,19455,4150],{"class":4575},[4221,19457,4807],{"class":4732},[4221,19459,4736],{"class":4532},[4221,19461,4739],{"class":4571},[4221,19463,5689],{"class":4756},[4221,19465,5657],{"class":4536},[4221,19467,5544],{"class":4536},[4221,19469,3785],{"class":4756},[4221,19471,4968],{"class":4536},[4221,19473,5708],{"class":4934},[4221,19475,5711],{"class":4756},[4221,19477,4822],{"class":4571},[4221,19479,4825],{"class":4723},[4221,19481,19482,19484,19486,19488,19490,19492,19495,19497,19499,19501],{"class":4223,"line":7686},[4221,19483,16878],{"class":4571},[4221,19485,15720],{"class":4536},[4221,19487,3793],{"class":4756},[4221,19489,6910],{"class":4536},[4221,19491,4822],{"class":4571},[4221,19493,19494],{"class":4532}," · seed ",[4221,19496,4739],{"class":4571},[4221,19498,8854],{"class":4536},[4221,19500,4822],{"class":4571},[4221,19502,19503],{"class":4532}," · SectionList\n",[4221,19505,19506,19508,19510],{"class":4223,"line":7696},[4221,19507,4872],{"class":4723},[4221,19509,4150],{"class":4575},[4221,19511,4825],{"class":4723},[4221,19513,19514,19516,19518,19520,19522,19524,19526,19528,19531,19533],{"class":4223,"line":7707},[4221,19515,4802],{"class":4723},[4221,19517,4147],{"class":4575},[4221,19519,4807],{"class":4732},[4221,19521,4736],{"class":4532},[4221,19523,4739],{"class":4571},[4221,19525,4814],{"class":4536},[4221,19527,3793],{"class":4756},[4221,19529,19530],{"class":4536},"rowBtns",[4221,19532,4822],{"class":4571},[4221,19534,4825],{"class":4723},[4221,19536,19537,19539],{"class":4223,"line":7716},[4221,19538,4830],{"class":4723},[4221,19540,6833],{"class":4575},[4221,19542,19543,19545,19547,19549,19551,19553,19555,19557,19559,19561,19563,19565],{"class":4223,"line":7721},[4221,19544,5850],{"class":4732},[4221,19546,4736],{"class":4532},[4221,19548,4739],{"class":4571},[4221,19550,5608],{"class":4756},[4221,19552,4814],{"class":4536},[4221,19554,3793],{"class":4756},[4221,19556,6948],{"class":4536},[4221,19558,5618],{"class":4756},[4221,19560,5621],{"class":4536},[4221,19562,6694],{"class":4536},[4221,19564,5626],{"class":4756},[4221,19566,4276],{"class":4571},[4221,19568,19569,19571,19573,19575,19577,19579,19581,19583,19585,19587,19589,19592],{"class":4223,"line":7742},[4221,19570,16952],{"class":4732},[4221,19572,4736],{"class":4532},[4221,19574,4739],{"class":4571},[4221,19576,6845],{"class":4756},[4221,19578,4766],{"class":4571},[4221,19580,17077],{"class":4706},[4221,19582,4757],{"class":4756},[4221,19584,16723],{"class":4706},[4221,19586,4757],{"class":4756},[4221,19588,8854],{"class":4536},[4221,19590,19591],{"class":4756},"))",[4221,19593,4276],{"class":4571},[4221,19595,19596],{"class":4223,"line":7768},[4221,19597,5902],{"class":4723},[4221,19599,19600,19602,19604,19606,19608,19610,19612,19614,19616,19618,19620,19622,19624,19626],{"class":4223,"line":7783},[4221,19601,5908],{"class":4723},[4221,19603,4150],{"class":4575},[4221,19605,4807],{"class":4732},[4221,19607,4736],{"class":4532},[4221,19609,4739],{"class":4571},[4221,19611,4814],{"class":4536},[4221,19613,3793],{"class":4756},[4221,19615,6982],{"class":4536},[4221,19617,4822],{"class":4571},[4221,19619,4850],{"class":4723},[4221,19621,17013],{"class":4532},[4221,19623,4863],{"class":4723},[4221,19625,4150],{"class":4575},[4221,19627,4825],{"class":4723},[4221,19629,19630,19632,19634],{"class":4223,"line":7791},[4221,19631,6005],{"class":4723},[4221,19633,4156],{"class":4575},[4221,19635,4825],{"class":4723},[4221,19637,19638,19640],{"class":4223,"line":7801},[4221,19639,4830],{"class":4723},[4221,19641,6833],{"class":4575},[4221,19643,19644,19646,19648,19650,19652,19654,19656,19658,19660,19662,19664,19666,19668,19670,19672,19674,19676,19678],{"class":4223,"line":7812},[4221,19645,5850],{"class":4732},[4221,19647,4736],{"class":4532},[4221,19649,4739],{"class":4571},[4221,19651,5608],{"class":4756},[4221,19653,4814],{"class":4536},[4221,19655,3793],{"class":4756},[4221,19657,6948],{"class":4536},[4221,19659,5618],{"class":4756},[4221,19661,5621],{"class":4536},[4221,19663,5498],{"class":4536},[4221,19665,3785],{"class":4756},[4221,19667,4953],{"class":4536},[4221,19669,5567],{"class":4536},[4221,19671,3785],{"class":4756},[4221,19673,7062],{"class":4536},[4221,19675,5383],{"class":4934},[4221,19677,5626],{"class":4756},[4221,19679,4276],{"class":4571},[4221,19681,19682,19684,19686,19688,19690,19692,19694,19696],{"class":4223,"line":7822},[4221,19683,16952],{"class":4732},[4221,19685,4736],{"class":4532},[4221,19687,4739],{"class":4571},[4221,19689,6845],{"class":4756},[4221,19691,4766],{"class":4571},[4221,19693,17077],{"class":4706},[4221,19695,7027],{"class":4756},[4221,19697,4276],{"class":4571},[4221,19699,19700],{"class":4223,"line":7832},[4221,19701,5902],{"class":4723},[4221,19703,19704,19706,19708,19710,19712,19714,19716,19718,19720,19722,19724,19726,19728,19730,19732,19734,19736,19738],{"class":4223,"line":7842},[4221,19705,5908],{"class":4723},[4221,19707,4150],{"class":4575},[4221,19709,4807],{"class":4732},[4221,19711,4736],{"class":4532},[4221,19713,4739],{"class":4571},[4221,19715,5689],{"class":4756},[4221,19717,5657],{"class":4536},[4221,19719,5521],{"class":4536},[4221,19721,3785],{"class":4756},[4221,19723,4975],{"class":4536},[4221,19725,6201],{"class":4558},[4221,19727,5711],{"class":4756},[4221,19729,4822],{"class":4571},[4221,19731,4850],{"class":4723},[4221,19733,7105],{"class":4532},[4221,19735,4863],{"class":4723},[4221,19737,4150],{"class":4575},[4221,19739,4825],{"class":4723},[4221,19741,19742,19744,19746],{"class":4223,"line":7851},[4221,19743,6005],{"class":4723},[4221,19745,4156],{"class":4575},[4221,19747,4825],{"class":4723},[4221,19749,19750,19752,19754],{"class":4223,"line":7856},[4221,19751,4872],{"class":4723},[4221,19753,4147],{"class":4575},[4221,19755,4825],{"class":4723},[4221,19757,19758,19760,19762],{"class":4223,"line":7876},[4221,19759,5725],{"class":4723},[4221,19761,4147],{"class":4575},[4221,19763,4825],{"class":4723},[4221,19765,19766],{"class":4223,"line":7883},[4221,19767,4246],{"emptyLinePlaceholder":4245},[4221,19769,19770,19772],{"class":4223,"line":7892},[4221,19771,5635],{"class":4723},[4221,19773,12564],{"class":4575},[4221,19775,19776,19778,19780,19782,19784,19786,19788,19790],{"class":4223,"line":7901},[4221,19777,5740],{"class":4732},[4221,19779,4736],{"class":4532},[4221,19781,4739],{"class":4571},[4221,19783,5689],{"class":4756},[4221,19785,6076],{"class":4536},[4221,19787,5383],{"class":4934},[4221,19789,5711],{"class":4756},[4221,19791,4276],{"class":4571},[4221,19793,19794,19796,19798,19800,19802],{"class":4223,"line":7910},[4221,19795,13488],{"class":4732},[4221,19797,4736],{"class":4532},[4221,19799,4739],{"class":4571},[4221,19801,12259],{"class":4536},[4221,19803,4276],{"class":4571},[4221,19805,19806,19808,19810,19812,19814,19816,19818,19820,19822,19824,19826],{"class":4223,"line":7915},[4221,19807,5772],{"class":4732},[4221,19809,4736],{"class":4532},[4221,19811,4739],{"class":4571},[4221,19813,4757],{"class":4756},[4221,19815,4760],{"class":4536},[4221,19817,4763],{"class":4756},[4221,19819,4766],{"class":4571},[4221,19821,4769],{"class":4536},[4221,19823,3793],{"class":4756},[4221,19825,4774],{"class":4536},[4221,19827,4276],{"class":4571},[4221,19829,19830],{"class":4223,"line":17209},[4221,19831,13526],{"class":4732},[4221,19833,19834,19836,19838],{"class":4223,"line":17218},[4221,19835,9548],{"class":4732},[4221,19837,4736],{"class":4532},[4221,19839,7200],{"class":4571},[4221,19841,19842,19844],{"class":4223,"line":17248},[4221,19843,4830],{"class":4723},[4221,19845,9559],{"class":4575},[4221,19847,19848,19850,19852,19854,19856],{"class":4223,"line":17253},[4221,19849,9564],{"class":4732},[4221,19851,4736],{"class":4532},[4221,19853,4739],{"class":4571},[4221,19855,8670],{"class":4536},[4221,19857,4276],{"class":4571},[4221,19859,19860,19862,19864,19866,19868],{"class":4223,"line":17262},[4221,19861,9577],{"class":4732},[4221,19863,4736],{"class":4532},[4221,19865,4739],{"class":4571},[4221,19867,8678],{"class":4536},[4221,19869,4276],{"class":4571},[4221,19871,19872,19874,19876,19878,19880],{"class":4223,"line":17295},[4221,19873,9590],{"class":4732},[4221,19875,4736],{"class":4532},[4221,19877,4739],{"class":4571},[4221,19879,9597],{"class":4536},[4221,19881,4276],{"class":4571},[4221,19883,19884,19886,19888,19890,19892,19894,19896],{"class":4223,"line":17300},[4221,19885,9604],{"class":4732},[4221,19887,4736],{"class":4532},[4221,19889,4739],{"class":4571},[4221,19891,5608],{"class":4756},[4221,19893,9597],{"class":4536},[4221,19895,9615],{"class":4756},[4221,19897,4276],{"class":4571},[4221,19899,19900],{"class":4223,"line":17309},[4221,19901,9622],{"class":4723},[4221,19903,19904],{"class":4223,"line":17332},[4221,19905,7248],{"class":4571},[4221,19907,19908,19910,19912],{"class":4223,"line":17364},[4221,19909,5797],{"class":4732},[4221,19911,4736],{"class":4532},[4221,19913,7200],{"class":4571},[4221,19915,19916,19918,19920,19922,19924],{"class":4223,"line":17396},[4221,19917,17265],{"class":4536},[4221,19919,3793],{"class":4756},[4221,19921,6910],{"class":4536},[4221,19923,7212],{"class":4532},[4221,19925,19926],{"class":4934}," 0\n",[4221,19928,19929,19932,19934,19936,19938,19940,19942,19944],{"class":4223,"line":17405},[4221,19930,19931],{"class":4532},"            ?",[4221,19933,4533],{"class":4756},[4221,19935,7776],{"class":4536},[4221,19937,5383],{"class":4934},[4221,19939,3785],{"class":4756},[4221,19941,4931],{"class":4536},[4221,19943,4935],{"class":4934},[4221,19945,7243],{"class":4756},[4221,19947,19948,19951,19953,19955,19957,19959,19961,19963],{"class":4223,"line":17410},[4221,19949,19950],{"class":4532},"            :",[4221,19952,4533],{"class":4756},[4221,19954,4931],{"class":4536},[4221,19956,4935],{"class":4934},[4221,19958,3785],{"class":4756},[4221,19960,5806],{"class":4536},[4221,19962,6092],{"class":4934},[4221,19964,7243],{"class":4756},[4221,19966,19967],{"class":4223,"line":17437},[4221,19968,7248],{"class":4571},[4221,19970,19971,19973,19975],{"class":4223,"line":17460},[4221,19972,7307],{"class":4732},[4221,19974,4736],{"class":4532},[4221,19976,7200],{"class":4571},[4221,19978,19979,19981,19983,19985,19987,19989,19991,19993,19995,19997],{"class":4223,"line":17484},[4221,19980,4830],{"class":4723},[4221,19982,4147],{"class":4575},[4221,19984,4807],{"class":4732},[4221,19986,4736],{"class":4532},[4221,19988,4739],{"class":4571},[4221,19990,4814],{"class":4536},[4221,19992,3793],{"class":4756},[4221,19994,7331],{"class":4536},[4221,19996,4822],{"class":4571},[4221,19998,4825],{"class":4723},[4221,20000,20001,20003,20005,20007,20009,20011,20013,20015,20017,20019,20021,20023,20025,20027,20029,20031,20033,20035,20037],{"class":4223,"line":17507},[4221,20002,5908],{"class":4723},[4221,20004,4150],{"class":4575},[4221,20006,4807],{"class":4732},[4221,20008,4736],{"class":4532},[4221,20010,4739],{"class":4571},[4221,20012,5608],{"class":4756},[4221,20014,4814],{"class":4536},[4221,20016,3793],{"class":4756},[4221,20018,7357],{"class":4536},[4221,20020,5618],{"class":4756},[4221,20022,5657],{"class":4536},[4221,20024,5521],{"class":4536},[4221,20026,5626],{"class":4756},[4221,20028,4822],{"class":4571},[4221,20030,4850],{"class":4723},[4221,20032,17355],{"class":4756},[4221,20034,4863],{"class":4723},[4221,20036,4150],{"class":4575},[4221,20038,4825],{"class":4723},[4221,20040,20041,20043,20045,20047,20049,20051,20053,20055,20057,20059,20061,20063,20065,20067],{"class":4223,"line":17516},[4221,20042,5908],{"class":4723},[4221,20044,4150],{"class":4575},[4221,20046,4807],{"class":4732},[4221,20048,4736],{"class":4532},[4221,20050,4739],{"class":4571},[4221,20052,5689],{"class":4756},[4221,20054,5657],{"class":4536},[4221,20056,5544],{"class":4536},[4221,20058,3785],{"class":4756},[4221,20060,7402],{"class":4536},[4221,20062,7405],{"class":4558},[4221,20064,5711],{"class":4756},[4221,20066,4822],{"class":4571},[4221,20068,4825],{"class":4723},[4221,20070,20071],{"class":4223,"line":17525},[4221,20072,20073],{"class":4756},"              Заповніть або pull-to-refresh\n",[4221,20075,20076,20078,20080],{"class":4223,"line":17532},[4221,20077,7436],{"class":4723},[4221,20079,4150],{"class":4575},[4221,20081,4825],{"class":4723},[4221,20083,20084,20086,20088],{"class":4223,"line":17551},[4221,20085,6005],{"class":4723},[4221,20087,4147],{"class":4575},[4221,20089,4825],{"class":4723},[4221,20091,20092],{"class":4223,"line":17574},[4221,20093,7248],{"class":4571},[4221,20095,20096,20098,20100,20102,20104,20106,20108,20110,20112,20114,20116,20118],{"class":4223,"line":17613},[4221,20097,13549],{"class":4732},[4221,20099,4736],{"class":4532},[4221,20101,4739],{"class":4571},[4221,20103,4788],{"class":4756},[4221,20105,12652],{"class":4536},[4221,20107,12655],{"class":4756},[4221,20109,4845],{"class":4536},[4221,20111,3785],{"class":4756},[4221,20113,3837],{"class":4536},[4221,20115,12660],{"class":4756},[4221,20117,4766],{"class":4571},[4221,20119,4718],{"class":4756},[4221,20121,20122,20124,20126,20128,20130,20132,20134,20136,20138,20140,20142,20144,20146,20148,20150],{"class":4223,"line":17636},[4221,20123,4830],{"class":4723},[4221,20125,4147],{"class":4575},[4221,20127,4807],{"class":4732},[4221,20129,4736],{"class":4532},[4221,20131,4739],{"class":4571},[4221,20133,5608],{"class":4756},[4221,20135,4814],{"class":4536},[4221,20137,3793],{"class":4756},[4221,20139,13588],{"class":4536},[4221,20141,5618],{"class":4756},[4221,20143,5621],{"class":4536},[4221,20145,13361],{"class":4536},[4221,20147,5626],{"class":4756},[4221,20149,4822],{"class":4571},[4221,20151,4825],{"class":4723},[4221,20153,20154,20156,20158,20160,20162,20164,20166,20168,20170,20172,20174,20176,20178,20180],{"class":4223,"line":17685},[4221,20155,5908],{"class":4723},[4221,20157,4150],{"class":4575},[4221,20159,4807],{"class":4732},[4221,20161,4736],{"class":4532},[4221,20163,4739],{"class":4571},[4221,20165,5689],{"class":4756},[4221,20167,5657],{"class":4536},[4221,20169,6694],{"class":4536},[4221,20171,3785],{"class":4756},[4221,20173,4975],{"class":4536},[4221,20175,6114],{"class":4558},[4221,20177,5711],{"class":4756},[4221,20179,4822],{"class":4571},[4221,20181,4825],{"class":4723},[4221,20183,20184,20186,20188,20190,20192,20194,20196,20198,20200],{"class":4223,"line":17694},[4221,20185,17487],{"class":4571},[4221,20187,4845],{"class":4536},[4221,20189,4822],{"class":4571},[4221,20191,17494],{"class":4756},[4221,20193,4739],{"class":4571},[4221,20195,3837],{"class":4536},[4221,20197,3793],{"class":4756},[4221,20199,6910],{"class":4536},[4221,20201,4276],{"class":4571},[4221,20203,20204,20206,20208],{"class":4223,"line":17703},[4221,20205,7436],{"class":4723},[4221,20207,4150],{"class":4575},[4221,20209,4825],{"class":4723},[4221,20211,20212,20214,20216],{"class":4223,"line":17710},[4221,20213,6005],{"class":4723},[4221,20215,4147],{"class":4575},[4221,20217,4825],{"class":4723},[4221,20219,20220,20222],{"class":4223,"line":17747},[4221,20221,6015],{"class":4756},[4221,20223,4276],{"class":4571},[4221,20225,20226,20228,20230,20232,20234,20236,20238,20240],{"class":4223,"line":17752},[4221,20227,5824],{"class":4732},[4221,20229,4736],{"class":4532},[4221,20231,4739],{"class":4571},[4221,20233,4788],{"class":4756},[4221,20235,4760],{"class":4536},[4221,20237,4793],{"class":4756},[4221,20239,4766],{"class":4571},[4221,20241,4718],{"class":4756},[4221,20243,20244,20246,20248,20250,20252,20254,20256,20258,20260,20262,20264,20266,20268,20270,20272,20274,20276,20278],{"class":4223,"line":17761},[4221,20245,4830],{"class":4723},[4221,20247,4147],{"class":4575},[4221,20249,4807],{"class":4732},[4221,20251,4736],{"class":4532},[4221,20253,4739],{"class":4571},[4221,20255,5608],{"class":4756},[4221,20257,4814],{"class":4536},[4221,20259,3793],{"class":4756},[4221,20261,4819],{"class":4536},[4221,20263,5618],{"class":4756},[4221,20265,5621],{"class":4536},[4221,20267,5498],{"class":4536},[4221,20269,3785],{"class":4756},[4221,20271,4953],{"class":4536},[4221,20273,5567],{"class":4536},[4221,20275,5626],{"class":4756},[4221,20277,4822],{"class":4571},[4221,20279,4825],{"class":4723},[4221,20281,20282,20284,20286,20288,20290,20292,20294,20296,20298,20300,20302,20304,20306,20308,20310,20312,20314,20316,20318,20320,20322,20324],{"class":4223,"line":17766},[4221,20283,5908],{"class":4723},[4221,20285,4150],{"class":4575},[4221,20287,4807],{"class":4732},[4221,20289,4736],{"class":4532},[4221,20291,4739],{"class":4571},[4221,20293,5689],{"class":4756},[4221,20295,5657],{"class":4536},[4221,20297,5521],{"class":4536},[4221,20299,3785],{"class":4756},[4221,20301,4975],{"class":4536},[4221,20303,6201],{"class":4558},[4221,20305,5711],{"class":4756},[4221,20307,4822],{"class":4571},[4221,20309,4850],{"class":4723},[4221,20311,4739],{"class":4571},[4221,20313,4760],{"class":4536},[4221,20315,3793],{"class":4756},[4221,20317,4845],{"class":4536},[4221,20319,4822],{"class":4571},[4221,20321,4863],{"class":4723},[4221,20323,4150],{"class":4575},[4221,20325,4825],{"class":4723},[4221,20327,20328,20330,20332,20334,20336,20338,20340,20342,20344,20346,20348,20350,20352,20354,20356,20358,20360],{"class":4223,"line":17771},[4221,20329,5908],{"class":4723},[4221,20331,4150],{"class":4575},[4221,20333,4807],{"class":4732},[4221,20335,4736],{"class":4532},[4221,20337,4739],{"class":4571},[4221,20339,5689],{"class":4756},[4221,20341,5657],{"class":4536},[4221,20343,5544],{"class":4536},[4221,20345,3785],{"class":4756},[4221,20347,11227],{"class":4536},[4221,20349,6121],{"class":4934},[4221,20351,3785],{"class":4756},[4221,20353,4968],{"class":4536},[4221,20355,5708],{"class":4934},[4221,20357,5711],{"class":4756},[4221,20359,4822],{"class":4571},[4221,20361,4825],{"class":4723},[4221,20363,20364,20366,20368,20370,20372,20374,20376,20378,20380,20382,20384,20386,20388,20390,20392,20394,20396,20398,20400,20402,20404,20406],{"class":4223,"line":17776},[4221,20365,17487],{"class":4571},[4221,20367,4760],{"class":4536},[4221,20369,3793],{"class":4756},[4221,20371,12885],{"class":4536},[4221,20373,4822],{"class":4571},[4221,20375,17494],{"class":4756},[4221,20377,4739],{"class":4571},[4221,20379,4760],{"class":4536},[4221,20381,3793],{"class":4756},[4221,20383,15474],{"class":4536},[4221,20385,4822],{"class":4571},[4221,20387,17661],{"class":4756},[4221,20389,4739],{"class":4571},[4221,20391,4760],{"class":4536},[4221,20393,3793],{"class":4756},[4221,20395,15477],{"class":4536},[4221,20397,3793],{"class":4756},[4221,20399,17674],{"class":4706},[4221,20401,4757],{"class":4756},[4221,20403,5132],{"class":4934},[4221,20405,3874],{"class":4756},[4221,20407,4276],{"class":4571},[4221,20409,20410,20412,20414],{"class":4223,"line":17793},[4221,20411,7436],{"class":4723},[4221,20413,4150],{"class":4575},[4221,20415,4825],{"class":4723},[4221,20417,20418,20420,20422],{"class":4223,"line":17814},[4221,20419,6005],{"class":4723},[4221,20421,4147],{"class":4575},[4221,20423,4825],{"class":4723},[4221,20425,20426,20428],{"class":4223,"line":17847},[4221,20427,6015],{"class":4756},[4221,20429,4276],{"class":4571},[4221,20431,20432,20434,20436,20438,20440,20442,20444,20446,20448,20450,20452,20454,20456,20458,20460,20462,20464],{"class":4223,"line":17874},[4221,20433,13827],{"class":4732},[4221,20435,4736],{"class":4532},[4221,20437,4739],{"class":4571},[4221,20439,6845],{"class":4756},[4221,20441,4766],{"class":4571},[4221,20443,8064],{"class":4723},[4221,20445,4147],{"class":4575},[4221,20447,4807],{"class":4732},[4221,20449,4736],{"class":4532},[4221,20451,4739],{"class":4571},[4221,20453,5689],{"class":4756},[4221,20455,13850],{"class":4536},[4221,20457,5701],{"class":4934},[4221,20459,5711],{"class":4756},[4221,20461,4822],{"class":4571},[4221,20463,8081],{"class":4723},[4221,20465,4276],{"class":4571},[4221,20467,20468,20470,20472,20474,20476,20478,20480,20482,20484,20486,20488,20490,20492,20494,20496,20498,20500],{"class":4223,"line":17895},[4221,20469,13865],{"class":4732},[4221,20471,4736],{"class":4532},[4221,20473,4739],{"class":4571},[4221,20475,6845],{"class":4756},[4221,20477,4766],{"class":4571},[4221,20479,8064],{"class":4723},[4221,20481,4147],{"class":4575},[4221,20483,4807],{"class":4732},[4221,20485,4736],{"class":4532},[4221,20487,4739],{"class":4571},[4221,20489,5689],{"class":4756},[4221,20491,13850],{"class":4536},[4221,20493,7702],{"class":4934},[4221,20495,5711],{"class":4756},[4221,20497,4822],{"class":4571},[4221,20499,8081],{"class":4723},[4221,20501,4276],{"class":4571},[4221,20503,20504],{"class":4223,"line":17920},[4221,20505,6023],{"class":4723},[4221,20507,20508,20510,20512],{"class":4223,"line":17927},[4221,20509,6029],{"class":4723},[4221,20511,4147],{"class":4575},[4221,20513,4825],{"class":4723},[4221,20515,20516],{"class":4223,"line":17938},[4221,20517,4893],{"class":4532},[4221,20519,20520],{"class":4223,"line":17947},[4221,20521,4276],{"class":4532},[4221,20523,20524],{"class":4223,"line":17956},[4221,20525,4246],{"emptyLinePlaceholder":4245},[4221,20527,20528,20530,20532,20534,20536,20538,20540],{"class":4223,"line":17965},[4221,20529,4616],{"class":4571},[4221,20531,4908],{"class":4619},[4221,20533,4911],{"class":4532},[4221,20535,4549],{"class":4536},[4221,20537,3793],{"class":4532},[4221,20539,4918],{"class":4706},[4221,20541,4921],{"class":4532},[4221,20543,20544,20546,20548,20550,20552],{"class":4223,"line":17970},[4221,20545,17796],{"class":4536},[4221,20547,4533],{"class":4532},[4221,20549,6076],{"class":4536},[4221,20551,5383],{"class":4934},[4221,20553,4650],{"class":4532},[4221,20555,20556,20558,20560,20562,20564,20566,20568,20570,20572,20574,20576],{"class":4223,"line":17989},[4221,20557,7653],{"class":4536},[4221,20559,4533],{"class":4532},[4221,20561,4931],{"class":4536},[4221,20563,4935],{"class":4934},[4221,20565,3785],{"class":4532},[4221,20567,5813],{"class":4536},[4221,20569,17829],{"class":4934},[4221,20571,3785],{"class":4532},[4221,20573,4940],{"class":4536},[4221,20575,5383],{"class":4934},[4221,20577,4650],{"class":4532},[4221,20579,20580,20582,20584,20586,20588,20590,20592,20594],{"class":4223,"line":18015},[4221,20581,6100],{"class":4536},[4221,20583,4533],{"class":4532},[4221,20585,4968],{"class":4536},[4221,20587,6107],{"class":4934},[4221,20589,3785],{"class":4532},[4221,20591,4975],{"class":4536},[4221,20593,6114],{"class":4558},[4221,20595,4650],{"class":4532},[4221,20597,20598,20601,20603,20605,20607,20609,20611,20613,20615,20617,20619],{"class":4223,"line":18035},[4221,20599,20600],{"class":4536},"  rowBtns:",[4221,20602,4533],{"class":4532},[4221,20604,7658],{"class":4536},[4221,20606,7661],{"class":4558},[4221,20608,3785],{"class":4532},[4221,20610,5813],{"class":4536},[4221,20612,5701],{"class":4934},[4221,20614,3785],{"class":4532},[4221,20616,11227],{"class":4536},[4221,20618,5701],{"class":4934},[4221,20620,4650],{"class":4532},[4221,20622,20623,20625,20627,20629,20631,20633,20635,20637,20639,20641,20643],{"class":4223,"line":18061},[4221,20624,7681],{"class":4536},[4221,20626,4533],{"class":4532},[4221,20628,18048],{"class":4536},[4221,20630,6164],{"class":4934},[4221,20632,3785],{"class":4532},[4221,20634,11567],{"class":4536},[4221,20636,7702],{"class":4934},[4221,20638,3785],{"class":4532},[4221,20640,11547],{"class":4536},[4221,20642,7702],{"class":4934},[4221,20644,4650],{"class":4532},[4221,20646,20647,20649,20651,20653,20655,20657,20659,20661],{"class":4223,"line":18075},[4221,20648,7724],{"class":4536},[4221,20650,4533],{"class":4532},[4221,20652,5657],{"class":4536},[4221,20654,7731],{"class":4558},[4221,20656,3785],{"class":4532},[4221,20658,4975],{"class":4536},[4221,20660,6201],{"class":4558},[4221,20662,4650],{"class":4532},[4221,20664,20665,20667],{"class":4223,"line":18115},[4221,20666,7786],{"class":4536},[4221,20668,4579],{"class":4532},[4221,20670,20671,20673,20675],{"class":4223,"line":18140},[4221,20672,7794],{"class":4536},[4221,20674,5383],{"class":4934},[4221,20676,5391],{"class":4532},[4221,20678,20679,20681,20683],{"class":4223,"line":18147},[4221,20680,7804],{"class":4536},[4221,20682,7807],{"class":4934},[4221,20684,5391],{"class":4532},[4221,20686,20687,20689,20691],{"class":4223,"line":18156},[4221,20688,7815],{"class":4536},[4221,20690,7405],{"class":4558},[4221,20692,5391],{"class":4532},[4221,20694,20695,20697,20699],{"class":4223,"line":18165},[4221,20696,7825],{"class":4536},[4221,20698,7405],{"class":4558},[4221,20700,5391],{"class":4532},[4221,20702,20703,20705,20707],{"class":4223,"line":18174},[4221,20704,7835],{"class":4536},[4221,20706,5701],{"class":4934},[4221,20708,5391],{"class":4532},[4221,20710,20711],{"class":4223,"line":18183},[4221,20712,6183],{"class":4532},[4221,20714,20715,20717,20719,20721,20723,20725,20727,20729],{"class":4223,"line":18192},[4221,20716,7859],{"class":4536},[4221,20718,4533],{"class":4532},[4221,20720,4968],{"class":4536},[4221,20722,7751],{"class":4934},[4221,20724,3785],{"class":4532},[4221,20726,4975],{"class":4536},[4221,20728,6201],{"class":4558},[4221,20730,4650],{"class":4532},[4221,20732,20733,20735],{"class":4223,"line":18197},[4221,20734,13990],{"class":4536},[4221,20736,4579],{"class":4532},[4221,20738,20739,20741,20743],{"class":4223,"line":18217},[4221,20740,7699],{"class":4536},[4221,20742,5701],{"class":4934},[4221,20744,5391],{"class":4532},[4221,20746,20747,20749,20751],{"class":4223,"line":18224},[4221,20748,7689],{"class":4536},[4221,20750,7702],{"class":4934},[4221,20752,5391],{"class":4532},[4221,20754,20755,20757,20759],{"class":4223,"line":18233},[4221,20756,6161],{"class":4536},[4221,20758,5701],{"class":4934},[4221,20760,5391],{"class":4532},[4221,20762,20763,20765,20767],{"class":4223,"line":18242},[4221,20764,8140],{"class":4536},[4221,20766,5701],{"class":4934},[4221,20768,5391],{"class":4532},[4221,20770,20771],{"class":4223,"line":18251},[4221,20772,6183],{"class":4532},[4221,20774,20775,20777,20779,20781,20783,20785,20787,20789,20791,20793,20795],{"class":4223,"line":18261},[4221,20776,4926],{"class":4536},[4221,20778,4533],{"class":4532},[4221,20780,7062],{"class":4536},[4221,20782,5383],{"class":4934},[4221,20784,3785],{"class":4532},[4221,20786,11547],{"class":4536},[4221,20788,6164],{"class":4934},[4221,20790,3785],{"class":4532},[4221,20792,4931],{"class":4536},[4221,20794,6175],{"class":4934},[4221,20796,4650],{"class":4532},[4221,20798,20799],{"class":4223,"line":18270},[4221,20800,4985],{"class":4532},[3960,20802],{},[3738,20804,20806],{"id":20805},"nomad-архітектура-комбінованого-віртуалізованого-екрана","Nomad: архітектура комбінованого віртуалізованого екрана",[4131,20808,20810],{"id":20809},"архітектурна-мотивація","Архітектурна мотивація",[3743,20812,20813,20814,20816],{},"У міру розвитку функціоналу щоденника подорожей Nomad статичний рендеринг через ",[3750,20815,3825],{}," стає неприпустимим: зростає кількість поїздок, додаються високоякісні фотообкладинки та з'являється новий бізнес-модуль «Останні відвідані місця» з горизонтальним скролом.",[3743,20818,20819,20820,4997],{},"Головний екран Nomad вимагає побудови ",[3770,20821,20822],{},"комбінованого віртуалізованого макета (Compound Virtualized Layout)",[3814,20824,20825,20835,20846,20861],{},[3817,20826,20827,20830,20831,20834],{},[3770,20828,20829],{},"Фіксований верхній блок (Sticky Shell Header):"," брендинг, статус теми та селектор ",[3750,20832,20833],{},"ThemeProvider"," (закріплені над списком).",[3817,20836,20837,20840,20841,20845],{},[3770,20838,20839],{},"Головна вертикальна стрічка поїздок:"," реалізована на базі високопродуктивного ",[3770,20842,20843],{},[3750,20844,3792],{}," для забезпечення рециклінгу карток.",[3817,20847,20848,20851,20852,20857,20858,20860],{},[3770,20849,20850],{},"Вкладений горизонтальний каталог місць:"," реалізований через компактний ",[3770,20853,20854],{},[3750,20855,20856],{},"FlatList horizontal",", вбудований у ",[3750,20859,3857],{}," основного списку. Таке компонування повністю виключає конфлікти жестів (Nested Scroll Conflicts), оскільки списки мають взаємно перпендикулярні осі прокручування.",[3817,20862,20863,20866],{},[3770,20864,20865],{},"Фіксований підвал (Sticky CTA):"," закріплена кнопка «Нова поїздка», розташована за межами скрол-контейнера.",[4131,20868,20870],{"id":20869},"еволюція-кодової-бази-проєкту","Еволюція кодової бази проєкту",[3743,20872,20873],{},[3770,20874,20875],{},"Успадковано з попередніх розділів:",[8612,20877,20878,20895,20906],{},[3817,20879,20880,20881,3785,20883,20886,20887,5104,20890,5104,20893,3909],{},"Модуль теми (",[3750,20882,20833],{},[3750,20884,20885],{},"useTheme",", селектор кольорової схеми ",[3750,20888,20889],{},"system",[3750,20891,20892],{},"light",[3750,20894,5479],{},[3817,20896,20897,20898,3785,20900,3785,20903,3909],{},"Базовий каркас екрана (",[3750,20899,6233],{},[3750,20901,20902],{},"AppText",[3750,20904,20905],{},"Button",[3817,20907,20908,20909,20911,20912,3909],{},"Презентаційний шар поїздок (",[3750,20910,14382],{},", модель ",[3750,20913,8270],{},[3743,20915,20916],{},[3770,20917,20918],{},"Архітектурні нововведення цього розділу:",[8612,20920,20921,20927,20941,20951],{},[3817,20922,20923,20924,20926],{},"Інтеграція ",[3750,20925,14496],{}," як основного рушія рендерингу поїздок.",[3817,20928,20929,20930,20933,20934,20937,20938,3793],{},"Розширення моделі даних: типи ",[3750,20931,20932],{},"Place",", mock-набір ",[3750,20935,20936],{},"mockPlaces",", компонент ",[3750,20939,20940],{},"PlaceChip",[3817,20942,15292,20943,20945,20946,3803,20948,20950],{},[3750,20944,3896],{}," для компонентів ",[3750,20947,14382],{},[3750,20949,20940],{}," для запобігання зайвим фазам перемальовування.",[3817,20952,20953,20954,20956,20957,3793],{},"Інтеграція системного жесту оновлення ",[3750,20955,5119],{}," та декларативного порожнього стану ",[3750,20958,3853],{},[3743,20960,20961],{},[4202,20962],{"alt":20963,"className":20964,"src":20965},"Nomad home після статті 09: sticky тема, місця, FlashList, sticky CTA",[4206],"\u002Fimages\u002Freact-native\u002Flists-and-virtualization\u002F05.svg",[4131,20967,20969],{"id":20968},"повний-знімок-проєкту-після-цієї-статті","Повний знімок проєкту після цієї статті",[3935,20971,20972,20975,20976,20982,20983,20986,20987,20990],{},[3770,20973,20974],{},"Готовий код 1:1"," з ",[16457,20977,20981],{"href":20978,"rel":20979},"https:\u002F\u002Fgithub.com\u002Farakviel\u002Fnomad",[20980],"nofollow","Nomad",". Найшвидший шлях: ",[3750,20984,20985],{},"git pull"," у клоні репо. Нижче — ",[3770,20988,20989],{},"весь"," проєкт на момент цієї статті (усі файли з кодом), не фрагмент «лише нові папки». Клік по файлу в дереві → повний вміст для копіпасту.",[4212,20992,20994],{"className":14639,"code":20993,"language":14641,"meta":4217,"style":4217},"cd \u002Fpath\u002Fto\u002Fnomad\ngit pull\nnpm install\nnpx expo start\n",[3750,20995,20996,21004,21012,21020],{"__ignoreMap":4217},[4221,20997,20998,21001],{"class":4223,"line":4224},[4221,20999,21000],{"class":4706},"cd",[4221,21002,21003],{"class":4558}," \u002Fpath\u002Fto\u002Fnomad\n",[4221,21005,21006,21009],{"class":4223,"line":4230},[4221,21007,21008],{"class":4706},"git",[4221,21010,21011],{"class":4558}," pull\n",[4221,21013,21014,21017],{"class":4223,"line":4236},[4221,21015,21016],{"class":4706},"npm",[4221,21018,21019],{"class":4558}," install\n",[4221,21021,21022,21024,21026],{"class":4223,"line":4242},[4221,21023,14648],{"class":4706},[4221,21025,14651],{"class":4558},[4221,21027,21028],{"class":4558}," start\n",[21030,21031,21032,21315,21594,21696,21972,24976,25074,25650,26471,26632,27386,28642,29571,29927,30067,30446,31043,31604,31901],"code-tree",{},[4212,21033,21038],{"className":21034,"code":21035,"filename":21036,"language":21037,"meta":4217,"style":4217},"language-json shiki shiki-themes light-plus dark-plus dark-plus","{\n  \"name\": \"nomad\",\n  \"version\": \"1.0.0\",\n  \"main\": \"expo-router\u002Fentry\",\n  \"scripts\": {\n    \"start\": \"expo start\",\n    \"android\": \"expo start --android\",\n    \"ios\": \"expo start --ios\",\n    \"web\": \"expo start --web\"\n  },\n  \"dependencies\": {\n    \"@shopify\u002Fflash-list\": \"^2.3.2\",\n    \"expo\": \"~54.0.35\",\n    \"expo-constants\": \"~18.0.13\",\n    \"expo-linking\": \"~8.0.12\",\n    \"expo-router\": \"~6.0.24\",\n    \"expo-status-bar\": \"~3.0.9\",\n    \"react\": \"19.1.0\",\n    \"react-native\": \"0.81.5\",\n    \"react-native-safe-area-context\": \"~5.6.0\",\n    \"react-native-screens\": \"~4.16.0\"\n  },\n  \"devDependencies\": {\n    \"@types\u002Freact\": \"~19.1.0\",\n    \"typescript\": \"~5.9.2\"\n  },\n  \"private\": true\n}\n","package.json","json",[3750,21039,21040,21044,21057,21069,21081,21089,21101,21113,21125,21135,21139,21146,21158,21170,21182,21194,21206,21218,21230,21242,21254,21264,21268,21275,21287,21297,21301,21311],{"__ignoreMap":4217},[4221,21041,21042],{"class":4223,"line":4224},[4221,21043,7200],{"class":4532},[4221,21045,21046,21050,21052,21055],{"class":4223,"line":4230},[4221,21047,21049],{"class":21048},"sLwNe","  \"name\"",[4221,21051,4587],{"class":4532},[4221,21053,21054],{"class":4558},"\"nomad\"",[4221,21056,5391],{"class":4532},[4221,21058,21059,21062,21064,21067],{"class":4223,"line":4236},[4221,21060,21061],{"class":21048},"  \"version\"",[4221,21063,4587],{"class":4532},[4221,21065,21066],{"class":4558},"\"1.0.0\"",[4221,21068,5391],{"class":4532},[4221,21070,21071,21074,21076,21079],{"class":4223,"line":4242},[4221,21072,21073],{"class":21048},"  \"main\"",[4221,21075,4587],{"class":4532},[4221,21077,21078],{"class":4558},"\"expo-router\u002Fentry\"",[4221,21080,5391],{"class":4532},[4221,21082,21083,21086],{"class":4223,"line":4249},[4221,21084,21085],{"class":21048},"  \"scripts\"",[4221,21087,21088],{"class":4532},": {\n",[4221,21090,21091,21094,21096,21099],{"class":4223,"line":4255},[4221,21092,21093],{"class":21048},"    \"start\"",[4221,21095,4587],{"class":4532},[4221,21097,21098],{"class":4558},"\"expo start\"",[4221,21100,5391],{"class":4532},[4221,21102,21103,21106,21108,21111],{"class":4223,"line":4261},[4221,21104,21105],{"class":21048},"    \"android\"",[4221,21107,4587],{"class":4532},[4221,21109,21110],{"class":4558},"\"expo start --android\"",[4221,21112,5391],{"class":4532},[4221,21114,21115,21118,21120,21123],{"class":4223,"line":4267},[4221,21116,21117],{"class":21048},"    \"ios\"",[4221,21119,4587],{"class":4532},[4221,21121,21122],{"class":4558},"\"expo start --ios\"",[4221,21124,5391],{"class":4532},[4221,21126,21127,21130,21132],{"class":4223,"line":4273},[4221,21128,21129],{"class":21048},"    \"web\"",[4221,21131,4587],{"class":4532},[4221,21133,21134],{"class":4558},"\"expo start --web\"\n",[4221,21136,21137],{"class":4223,"line":4279},[4221,21138,6183],{"class":4532},[4221,21140,21141,21144],{"class":4223,"line":4284},[4221,21142,21143],{"class":21048},"  \"dependencies\"",[4221,21145,21088],{"class":4532},[4221,21147,21148,21151,21153,21156],{"class":4223,"line":4290},[4221,21149,21150],{"class":21048},"    \"@shopify\u002Fflash-list\"",[4221,21152,4587],{"class":4532},[4221,21154,21155],{"class":4558},"\"^2.3.2\"",[4221,21157,5391],{"class":4532},[4221,21159,21160,21163,21165,21168],{"class":4223,"line":4296},[4221,21161,21162],{"class":21048},"    \"expo\"",[4221,21164,4587],{"class":4532},[4221,21166,21167],{"class":4558},"\"~54.0.35\"",[4221,21169,5391],{"class":4532},[4221,21171,21172,21175,21177,21180],{"class":4223,"line":4302},[4221,21173,21174],{"class":21048},"    \"expo-constants\"",[4221,21176,4587],{"class":4532},[4221,21178,21179],{"class":4558},"\"~18.0.13\"",[4221,21181,5391],{"class":4532},[4221,21183,21184,21187,21189,21192],{"class":4223,"line":4308},[4221,21185,21186],{"class":21048},"    \"expo-linking\"",[4221,21188,4587],{"class":4532},[4221,21190,21191],{"class":4558},"\"~8.0.12\"",[4221,21193,5391],{"class":4532},[4221,21195,21196,21199,21201,21204],{"class":4223,"line":4314},[4221,21197,21198],{"class":21048},"    \"expo-router\"",[4221,21200,4587],{"class":4532},[4221,21202,21203],{"class":4558},"\"~6.0.24\"",[4221,21205,5391],{"class":4532},[4221,21207,21208,21211,21213,21216],{"class":4223,"line":4319},[4221,21209,21210],{"class":21048},"    \"expo-status-bar\"",[4221,21212,4587],{"class":4532},[4221,21214,21215],{"class":4558},"\"~3.0.9\"",[4221,21217,5391],{"class":4532},[4221,21219,21220,21223,21225,21228],{"class":4223,"line":4324},[4221,21221,21222],{"class":21048},"    \"react\"",[4221,21224,4587],{"class":4532},[4221,21226,21227],{"class":4558},"\"19.1.0\"",[4221,21229,5391],{"class":4532},[4221,21231,21232,21235,21237,21240],{"class":4223,"line":4330},[4221,21233,21234],{"class":21048},"    \"react-native\"",[4221,21236,4587],{"class":4532},[4221,21238,21239],{"class":4558},"\"0.81.5\"",[4221,21241,5391],{"class":4532},[4221,21243,21244,21247,21249,21252],{"class":4223,"line":4336},[4221,21245,21246],{"class":21048},"    \"react-native-safe-area-context\"",[4221,21248,4587],{"class":4532},[4221,21250,21251],{"class":4558},"\"~5.6.0\"",[4221,21253,5391],{"class":4532},[4221,21255,21256,21259,21261],{"class":4223,"line":4342},[4221,21257,21258],{"class":21048},"    \"react-native-screens\"",[4221,21260,4587],{"class":4532},[4221,21262,21263],{"class":4558},"\"~4.16.0\"\n",[4221,21265,21266],{"class":4223,"line":4348},[4221,21267,6183],{"class":4532},[4221,21269,21270,21273],{"class":4223,"line":4354},[4221,21271,21272],{"class":21048},"  \"devDependencies\"",[4221,21274,21088],{"class":4532},[4221,21276,21277,21280,21282,21285],{"class":4223,"line":4360},[4221,21278,21279],{"class":21048},"    \"@types\u002Freact\"",[4221,21281,4587],{"class":4532},[4221,21283,21284],{"class":4558},"\"~19.1.0\"",[4221,21286,5391],{"class":4532},[4221,21288,21289,21292,21294],{"class":4223,"line":4365},[4221,21290,21291],{"class":21048},"    \"typescript\"",[4221,21293,4587],{"class":4532},[4221,21295,21296],{"class":4558},"\"~5.9.2\"\n",[4221,21298,21299],{"class":4223,"line":4371},[4221,21300,6183],{"class":4532},[4221,21302,21303,21306,21308],{"class":4223,"line":4377},[4221,21304,21305],{"class":21048},"  \"private\"",[4221,21307,4587],{"class":4532},[4221,21309,21310],{"class":4571},"true\n",[4221,21312,21313],{"class":4223,"line":4383},[4221,21314,4276],{"class":4532},[4212,21316,21319],{"className":21034,"code":21317,"filename":21318,"language":21037,"meta":4217,"style":4217},"{\n  \"expo\": {\n    \"name\": \"Nomad\",\n    \"slug\": \"nomad\",\n    \"version\": \"1.0.0\",\n    \"orientation\": \"portrait\",\n    \"icon\": \".\u002Fassets\u002Ficon.png\",\n    \"userInterfaceStyle\": \"light\",\n    \"scheme\": \"nomad\",\n    \"newArchEnabled\": true,\n    \"splash\": {\n      \"image\": \".\u002Fassets\u002Fsplash-icon.png\",\n      \"resizeMode\": \"contain\",\n      \"backgroundColor\": \"#ffffff\"\n    },\n    \"ios\": {\n      \"supportsTablet\": true\n    },\n    \"android\": {\n      \"adaptiveIcon\": {\n        \"foregroundImage\": \".\u002Fassets\u002Fadaptive-icon.png\",\n        \"backgroundColor\": \"#ffffff\"\n      },\n      \"edgeToEdgeEnabled\": true,\n      \"predictiveBackGestureEnabled\": false\n    },\n    \"web\": {\n      \"favicon\": \".\u002Fassets\u002Ffavicon.png\"\n    },\n    \"plugins\": [\"expo-router\"]\n  }\n}\n","app.json",[3750,21320,21321,21325,21332,21344,21355,21366,21378,21390,21402,21413,21424,21431,21443,21455,21465,21469,21475,21484,21488,21494,21501,21513,21522,21527,21538,21548,21552,21558,21568,21572,21586,21590],{"__ignoreMap":4217},[4221,21322,21323],{"class":4223,"line":4224},[4221,21324,7200],{"class":4532},[4221,21326,21327,21330],{"class":4223,"line":4230},[4221,21328,21329],{"class":21048},"  \"expo\"",[4221,21331,21088],{"class":4532},[4221,21333,21334,21337,21339,21342],{"class":4223,"line":4236},[4221,21335,21336],{"class":21048},"    \"name\"",[4221,21338,4587],{"class":4532},[4221,21340,21341],{"class":4558},"\"Nomad\"",[4221,21343,5391],{"class":4532},[4221,21345,21346,21349,21351,21353],{"class":4223,"line":4242},[4221,21347,21348],{"class":21048},"    \"slug\"",[4221,21350,4587],{"class":4532},[4221,21352,21054],{"class":4558},[4221,21354,5391],{"class":4532},[4221,21356,21357,21360,21362,21364],{"class":4223,"line":4249},[4221,21358,21359],{"class":21048},"    \"version\"",[4221,21361,4587],{"class":4532},[4221,21363,21066],{"class":4558},[4221,21365,5391],{"class":4532},[4221,21367,21368,21371,21373,21376],{"class":4223,"line":4255},[4221,21369,21370],{"class":21048},"    \"orientation\"",[4221,21372,4587],{"class":4532},[4221,21374,21375],{"class":4558},"\"portrait\"",[4221,21377,5391],{"class":4532},[4221,21379,21380,21383,21385,21388],{"class":4223,"line":4261},[4221,21381,21382],{"class":21048},"    \"icon\"",[4221,21384,4587],{"class":4532},[4221,21386,21387],{"class":4558},"\".\u002Fassets\u002Ficon.png\"",[4221,21389,5391],{"class":4532},[4221,21391,21392,21395,21397,21400],{"class":4223,"line":4267},[4221,21393,21394],{"class":21048},"    \"userInterfaceStyle\"",[4221,21396,4587],{"class":4532},[4221,21398,21399],{"class":4558},"\"light\"",[4221,21401,5391],{"class":4532},[4221,21403,21404,21407,21409,21411],{"class":4223,"line":4273},[4221,21405,21406],{"class":21048},"    \"scheme\"",[4221,21408,4587],{"class":4532},[4221,21410,21054],{"class":4558},[4221,21412,5391],{"class":4532},[4221,21414,21415,21418,21420,21422],{"class":4223,"line":4279},[4221,21416,21417],{"class":21048},"    \"newArchEnabled\"",[4221,21419,4587],{"class":4532},[4221,21421,9228],{"class":4571},[4221,21423,5391],{"class":4532},[4221,21425,21426,21429],{"class":4223,"line":4284},[4221,21427,21428],{"class":21048},"    \"splash\"",[4221,21430,21088],{"class":4532},[4221,21432,21433,21436,21438,21441],{"class":4223,"line":4290},[4221,21434,21435],{"class":21048},"      \"image\"",[4221,21437,4587],{"class":4532},[4221,21439,21440],{"class":4558},"\".\u002Fassets\u002Fsplash-icon.png\"",[4221,21442,5391],{"class":4532},[4221,21444,21445,21448,21450,21453],{"class":4223,"line":4296},[4221,21446,21447],{"class":21048},"      \"resizeMode\"",[4221,21449,4587],{"class":4532},[4221,21451,21452],{"class":4558},"\"contain\"",[4221,21454,5391],{"class":4532},[4221,21456,21457,21460,21462],{"class":4223,"line":4302},[4221,21458,21459],{"class":21048},"      \"backgroundColor\"",[4221,21461,4587],{"class":4532},[4221,21463,21464],{"class":4558},"\"#ffffff\"\n",[4221,21466,21467],{"class":4223,"line":4308},[4221,21468,11905],{"class":4532},[4221,21470,21471,21473],{"class":4223,"line":4314},[4221,21472,21117],{"class":21048},[4221,21474,21088],{"class":4532},[4221,21476,21477,21480,21482],{"class":4223,"line":4319},[4221,21478,21479],{"class":21048},"      \"supportsTablet\"",[4221,21481,4587],{"class":4532},[4221,21483,21310],{"class":4571},[4221,21485,21486],{"class":4223,"line":4324},[4221,21487,11905],{"class":4532},[4221,21489,21490,21492],{"class":4223,"line":4330},[4221,21491,21105],{"class":21048},[4221,21493,21088],{"class":4532},[4221,21495,21496,21499],{"class":4223,"line":4336},[4221,21497,21498],{"class":21048},"      \"adaptiveIcon\"",[4221,21500,21088],{"class":4532},[4221,21502,21503,21506,21508,21511],{"class":4223,"line":4342},[4221,21504,21505],{"class":21048},"        \"foregroundImage\"",[4221,21507,4587],{"class":4532},[4221,21509,21510],{"class":4558},"\".\u002Fassets\u002Fadaptive-icon.png\"",[4221,21512,5391],{"class":4532},[4221,21514,21515,21518,21520],{"class":4223,"line":4348},[4221,21516,21517],{"class":21048},"        \"backgroundColor\"",[4221,21519,4587],{"class":4532},[4221,21521,21464],{"class":4558},[4221,21523,21524],{"class":4223,"line":4354},[4221,21525,21526],{"class":4532},"      },\n",[4221,21528,21529,21532,21534,21536],{"class":4223,"line":4360},[4221,21530,21531],{"class":21048},"      \"edgeToEdgeEnabled\"",[4221,21533,4587],{"class":4532},[4221,21535,9228],{"class":4571},[4221,21537,5391],{"class":4532},[4221,21539,21540,21543,21545],{"class":4223,"line":4365},[4221,21541,21542],{"class":21048},"      \"predictiveBackGestureEnabled\"",[4221,21544,4587],{"class":4532},[4221,21546,21547],{"class":4571},"false\n",[4221,21549,21550],{"class":4223,"line":4371},[4221,21551,11905],{"class":4532},[4221,21553,21554,21556],{"class":4223,"line":4377},[4221,21555,21129],{"class":21048},[4221,21557,21088],{"class":4532},[4221,21559,21560,21563,21565],{"class":4223,"line":4383},[4221,21561,21562],{"class":21048},"      \"favicon\"",[4221,21564,4587],{"class":4532},[4221,21566,21567],{"class":4558},"\".\u002Fassets\u002Ffavicon.png\"\n",[4221,21569,21570],{"class":4223,"line":4389},[4221,21571,11905],{"class":4532},[4221,21573,21574,21577,21580,21583],{"class":4223,"line":4395},[4221,21575,21576],{"class":21048},"    \"plugins\"",[4221,21578,21579],{"class":4532},": [",[4221,21581,21582],{"class":4558},"\"expo-router\"",[4221,21584,21585],{"class":4532},"]\n",[4221,21587,21588],{"class":4223,"line":4400},[4221,21589,16427],{"class":4532},[4221,21591,21592],{"class":4223,"line":4405},[4221,21593,4276],{"class":4532},[4212,21595,21598],{"className":21034,"code":21596,"filename":21597,"language":21037,"meta":4217,"style":4217},"{\n  \"extends\": \"expo\u002Ftsconfig.base\",\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"paths\": {\n      \"@\u002F*\": [\n        \".\u002Fsrc\u002F*\"\n      ]\n    }\n  },\n  \"include\": [\n    \"**\u002F*.ts\",\n    \"**\u002F*.tsx\"\n  ]\n}\n","tsconfig.json",[3750,21599,21600,21604,21616,21623,21634,21641,21649,21654,21659,21664,21668,21675,21682,21687,21692],{"__ignoreMap":4217},[4221,21601,21602],{"class":4223,"line":4224},[4221,21603,7200],{"class":4532},[4221,21605,21606,21609,21611,21614],{"class":4223,"line":4230},[4221,21607,21608],{"class":21048},"  \"extends\"",[4221,21610,4587],{"class":4532},[4221,21612,21613],{"class":4558},"\"expo\u002Ftsconfig.base\"",[4221,21615,5391],{"class":4532},[4221,21617,21618,21621],{"class":4223,"line":4236},[4221,21619,21620],{"class":21048},"  \"compilerOptions\"",[4221,21622,21088],{"class":4532},[4221,21624,21625,21628,21630,21632],{"class":4223,"line":4242},[4221,21626,21627],{"class":21048},"    \"strict\"",[4221,21629,4587],{"class":4532},[4221,21631,9228],{"class":4571},[4221,21633,5391],{"class":4532},[4221,21635,21636,21639],{"class":4223,"line":4249},[4221,21637,21638],{"class":21048},"    \"paths\"",[4221,21640,21088],{"class":4532},[4221,21642,21643,21646],{"class":4223,"line":4255},[4221,21644,21645],{"class":21048},"      \"@\u002F*\"",[4221,21647,21648],{"class":4532},": [\n",[4221,21650,21651],{"class":4223,"line":4261},[4221,21652,21653],{"class":4558},"        \".\u002Fsrc\u002F*\"\n",[4221,21655,21656],{"class":4223,"line":4267},[4221,21657,21658],{"class":4532},"      ]\n",[4221,21660,21661],{"class":4223,"line":4273},[4221,21662,21663],{"class":4532},"    }\n",[4221,21665,21666],{"class":4223,"line":4279},[4221,21667,6183],{"class":4532},[4221,21669,21670,21673],{"class":4223,"line":4284},[4221,21671,21672],{"class":21048},"  \"include\"",[4221,21674,21648],{"class":4532},[4221,21676,21677,21680],{"class":4223,"line":4290},[4221,21678,21679],{"class":4558},"    \"**\u002F*.ts\"",[4221,21681,5391],{"class":4532},[4221,21683,21684],{"class":4223,"line":4296},[4221,21685,21686],{"class":4558},"    \"**\u002F*.tsx\"\n",[4221,21688,21689],{"class":4223,"line":4302},[4221,21690,21691],{"class":4532},"  ]\n",[4221,21693,21694],{"class":4223,"line":4308},[4221,21695,4276],{"class":4532},[4212,21697,21700],{"className":4519,"code":21698,"filename":21699,"language":4521,"meta":4217,"style":4217},"import { Stack } from 'expo-router';\nimport { StatusBar } from 'expo-status-bar';\n\nimport { ThemeProvider, useTheme } from '@\u002Fshared\u002Ftheme';\n\nfunction RootNavigator() {\n  const { colors, scheme } = useTheme();\n\n  return (\n    \u003C>\n      \u003CStatusBar style={scheme === 'dark' ? 'light' : 'dark'} \u002F>\n      \u003CStack\n        screenOptions={{\n          headerShown: false,\n          contentStyle: { backgroundColor: colors.background },\n        }}\n      \u002F>\n    \u003C\u002F>\n  );\n}\n\nexport default function RootLayout() {\n  return (\n    \u003CThemeProvider>\n      \u003CRootNavigator \u002F>\n    \u003C\u002FThemeProvider>\n  );\n}\n","app\u002F_layout.tsx",[3750,21701,21702,21720,21738,21742,21763,21767,21776,21798,21802,21808,21813,21845,21852,21863,21873,21892,21899,21903,21908,21912,21916,21920,21933,21939,21947,21956,21964,21968],{"__ignoreMap":4217},[4221,21703,21704,21706,21708,21711,21713,21715,21718],{"class":4223,"line":4224},[4221,21705,4529],{"class":4528},[4221,21707,4533],{"class":4532},[4221,21709,21710],{"class":4536},"Stack",[4221,21712,4552],{"class":4532},[4221,21714,4555],{"class":4528},[4221,21716,21717],{"class":4558}," 'expo-router'",[4221,21719,4562],{"class":4532},[4221,21721,21722,21724,21726,21729,21731,21733,21736],{"class":4223,"line":4230},[4221,21723,4529],{"class":4528},[4221,21725,4533],{"class":4532},[4221,21727,21728],{"class":4536},"StatusBar",[4221,21730,4552],{"class":4532},[4221,21732,4555],{"class":4528},[4221,21734,21735],{"class":4558}," 'expo-status-bar'",[4221,21737,4562],{"class":4532},[4221,21739,21740],{"class":4223,"line":4236},[4221,21741,4246],{"emptyLinePlaceholder":4245},[4221,21743,21744,21746,21748,21750,21752,21754,21756,21758,21761],{"class":4223,"line":4242},[4221,21745,4529],{"class":4528},[4221,21747,4533],{"class":4532},[4221,21749,20833],{"class":4536},[4221,21751,3785],{"class":4532},[4221,21753,20885],{"class":4536},[4221,21755,4552],{"class":4532},[4221,21757,4555],{"class":4528},[4221,21759,21760],{"class":4558}," '@\u002Fshared\u002Ftheme'",[4221,21762,4562],{"class":4532},[4221,21764,21765],{"class":4223,"line":4249},[4221,21766,4246],{"emptyLinePlaceholder":4245},[4221,21768,21769,21771,21774],{"class":4223,"line":4255},[4221,21770,8846],{"class":4571},[4221,21772,21773],{"class":4706}," RootNavigator",[4221,21775,4710],{"class":4532},[4221,21777,21778,21780,21782,21785,21787,21790,21793,21795],{"class":4223,"line":4261},[4221,21779,5452],{"class":4571},[4221,21781,4533],{"class":4532},[4221,21783,21784],{"class":4619},"colors",[4221,21786,3785],{"class":4532},[4221,21788,21789],{"class":4619},"scheme",[4221,21791,21792],{"class":4532}," } = ",[4221,21794,20885],{"class":4706},[4221,21796,21797],{"class":4532},"();\n",[4221,21799,21800],{"class":4223,"line":4267},[4221,21801,4246],{"emptyLinePlaceholder":4245},[4221,21803,21804,21806],{"class":4223,"line":4273},[4221,21805,4715],{"class":4528},[4221,21807,4718],{"class":4532},[4221,21809,21810],{"class":4223,"line":4279},[4221,21811,21812],{"class":4723},"    \u003C>\n",[4221,21814,21815,21817,21819,21821,21823,21825,21827,21829,21832,21834,21837,21839,21841,21843],{"class":4223,"line":4284},[4221,21816,5635],{"class":4723},[4221,21818,21728],{"class":4575},[4221,21820,4807],{"class":4732},[4221,21822,4736],{"class":4532},[4221,21824,4739],{"class":4571},[4221,21826,21789],{"class":4536},[4221,21828,7212],{"class":4532},[4221,21830,21831],{"class":4558}," 'dark'",[4221,21833,7218],{"class":4532},[4221,21835,21836],{"class":4558}," 'light'",[4221,21838,7228],{"class":4532},[4221,21840,21831],{"class":4558},[4221,21842,4822],{"class":4571},[4221,21844,11204],{"class":4723},[4221,21846,21847,21849],{"class":4223,"line":4290},[4221,21848,5635],{"class":4723},[4221,21850,21851],{"class":4575},"Stack\n",[4221,21853,21854,21857,21859,21861],{"class":4223,"line":4296},[4221,21855,21856],{"class":4732},"        screenOptions",[4221,21858,4736],{"class":4532},[4221,21860,4739],{"class":4571},[4221,21862,7200],{"class":4756},[4221,21864,21865,21868,21871],{"class":4223,"line":4302},[4221,21866,21867],{"class":4536},"          headerShown:",[4221,21869,21870],{"class":4571}," false",[4221,21872,5391],{"class":4756},[4221,21874,21875,21878,21880,21882,21885,21887,21890],{"class":4223,"line":4308},[4221,21876,21877],{"class":4536},"          contentStyle:",[4221,21879,4533],{"class":4756},[4221,21881,5621],{"class":4536},[4221,21883,21884],{"class":4536}," colors",[4221,21886,3793],{"class":4756},[4221,21888,21889],{"class":4536},"background",[4221,21891,4650],{"class":4756},[4221,21893,21894,21897],{"class":4223,"line":4314},[4221,21895,21896],{"class":4756},"        }",[4221,21898,4276],{"class":4571},[4221,21900,21901],{"class":4223,"line":4319},[4221,21902,6023],{"class":4723},[4221,21904,21905],{"class":4223,"line":4324},[4221,21906,21907],{"class":4723},"    \u003C\u002F>\n",[4221,21909,21910],{"class":4223,"line":4330},[4221,21911,4893],{"class":4532},[4221,21913,21914],{"class":4223,"line":4336},[4221,21915,4276],{"class":4532},[4221,21917,21918],{"class":4223,"line":4342},[4221,21919,4246],{"emptyLinePlaceholder":4245},[4221,21921,21922,21924,21926,21928,21931],{"class":4223,"line":4348},[4221,21923,4700],{"class":4528},[4221,21925,5440],{"class":4528},[4221,21927,4703],{"class":4571},[4221,21929,21930],{"class":4706}," RootLayout",[4221,21932,4710],{"class":4532},[4221,21934,21935,21937],{"class":4223,"line":4354},[4221,21936,4715],{"class":4528},[4221,21938,4718],{"class":4532},[4221,21940,21941,21943,21945],{"class":4223,"line":4360},[4221,21942,4724],{"class":4723},[4221,21944,20833],{"class":4575},[4221,21946,4825],{"class":4723},[4221,21948,21949,21951,21954],{"class":4223,"line":4365},[4221,21950,5635],{"class":4723},[4221,21952,21953],{"class":4575},"RootNavigator",[4221,21955,11204],{"class":4723},[4221,21957,21958,21960,21962],{"class":4223,"line":4371},[4221,21959,6029],{"class":4723},[4221,21961,20833],{"class":4575},[4221,21963,4825],{"class":4723},[4221,21965,21966],{"class":4223,"line":4377},[4221,21967,4893],{"class":4532},[4221,21969,21970],{"class":4223,"line":4383},[4221,21971,4276],{"class":4532},[4212,21973,21976],{"className":4519,"code":21974,"filename":21975,"language":4521,"meta":4217,"style":4217},"import { useCallback, useState } from 'react';\nimport {\n  FlatList,\n  Pressable,\n  RefreshControl,\n  StyleSheet,\n  View,\n} from 'react-native';\nimport { FlashList } from '@shopify\u002Fflash-list';\n\nimport {\n  mockPlaces,\n  mockTrips,\n  PlaceChip,\n  TripCard,\n  type Place,\n  type Trip,\n} from '@\u002Ffeatures\u002Ftrips';\nimport { useTheme, type ThemePreference } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Button, Screen } from '@\u002Fshared\u002Fui';\n\nconst PREFS: { id: ThemePreference; label: string }[] = [\n  { id: 'system', label: 'Система' },\n  { id: 'light', label: 'Світла' },\n  { id: 'dark', label: 'Темна' },\n];\n\nexport default function HomeScreen() {\n  const { colors, spacing, preference, setPreference, scheme } = useTheme();\n  const [trips, setTrips] = useState\u003CTrip[]>(mockTrips);\n  const [places] = useState\u003CPlace[]>(mockPlaces);\n  const [refreshing, setRefreshing] = useState(false);\n\n  const handleOpenTrip = useCallback((trip: Trip) => {\n    console.log('TODO: відкрити поїздку', trip.id, trip.title);\n  }, []);\n\n  const handleOpenPlace = useCallback((place: Place) => {\n    console.log('TODO: відкрити місце', place.id, place.name);\n  }, []);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    \u002F\u002F Mock pull-to-refresh: «мережа» ще не підключена — імітуємо затримку.\n    setTimeout(() => {\n      setTrips([...mockTrips]);\n      setRefreshing(false);\n    }, 900);\n  }, []);\n\n  const renderTrip = useCallback(\n    ({ item }: { item: Trip }) => (\n      \u003CTripCard trip={item} onPress={handleOpenTrip} \u002F>\n    ),\n    [handleOpenTrip],\n  );\n\n  const keyExtractor = useCallback((item: Trip) => item.id, []);\n\n  \u002F\u002F Шапка списку: місця + підпис секції. Чіпи теми лишаються в sticky header (як у статті 08).\n  const listHeader = (\n    \u003CView style={{ gap: spacing.md, marginBottom: spacing.md }}>\n      {places.length > 0 ? (\n        \u003CView style={{ gap: spacing.sm }}>\n          \u003CAppText style={{ fontWeight: '600' }}>Останні місця\u003C\u002FAppText>\n          \u003CFlatList\n            horizontal\n            data={places}\n            keyExtractor={(item) => item.id}\n            renderItem={({ item }) => (\n              \u003CPlaceChip place={item} onPress={handleOpenPlace} \u002F>\n            )}\n            showsHorizontalScrollIndicator={false}\n            ItemSeparatorComponent={() => \u003CView style={{ width: spacing.sm }} \u002F>}\n            contentContainerStyle={{ paddingVertical: 2 }}\n          \u002F>\n        \u003C\u002FView>\n      ) : null}\n\n      \u003CAppText style={{ fontWeight: '600' }}>Ваші поїздки\u003C\u002FAppText>\n    \u003C\u002FView>\n  );\n\n  const listEmpty = (\n    \u003CView\n      style={[\n        styles.empty,\n        {\n          paddingHorizontal: spacing.sm,\n          paddingVertical: spacing.xl,\n          gap: spacing.sm,\n        },\n      ]}\n    >\n      \u003CAppText variant=\"subtitle\" style={styles.emptyTitle}>\n        Поки немає поїздок\n      \u003C\u002FAppText>\n      \u003CAppText\n        variant=\"caption\"\n        color={colors.textSecondary}\n        style={styles.emptyDesc}\n      >\n        Потягніть список униз, щоб «оновити», або натисніть «Нова поїздка».\n      \u003C\u002FAppText>\n    \u003C\u002FView>\n  );\n\n  return (\n    \u003CScreen style={styles.screen}>\n      {\u002F* Sticky header з 08: бренд + тема + чіпи — не скроляться зі списком *\u002F}\n      \u003CView\n        style={[\n          styles.header,\n          {\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.sm,\n            paddingBottom: spacing.md,\n            gap: spacing.xs,\n            borderBottomColor: colors.border,\n          },\n        ]}\n      >\n        \u003CAppText variant=\"title\">Мандрівник\u003C\u002FAppText>\n        \u003CAppText variant=\"caption\" style={{ marginTop: spacing.xs }}>\n          Щоденник подорожей · тема: {scheme === 'dark' ? 'темна' : 'світла'}\n        \u003C\u002FAppText>\n        \u003CAppText\n          variant=\"caption\"\n          style={{\n            marginTop: spacing.xs,\n            color: colors.primary,\n            fontWeight: '600',\n          }}\n        >\n          {trips.length > 0\n            ? `${trips.length} поїздок · ${places.length} місць`\n            : 'Список порожній'}\n        \u003C\u002FAppText>\n\n        \u003CView style={[styles.themeRow, { gap: spacing.sm, marginTop: spacing.sm }]}>\n          {PREFS.map((p) => {\n            const active = preference === p.id;\n            return (\n              \u003CPressable\n                key={p.id}\n                onPress={() => setPreference(p.id)}\n                style={[\n                  styles.themeChip,\n                  {\n                    backgroundColor: active ? colors.primary : colors.surface,\n                    borderColor: colors.border,\n                  },\n                ]}\n                accessibilityRole=\"button\"\n                accessibilityState={{ selected: active }}\n                accessibilityLabel={`Тема: ${p.label}`}\n              >\n                \u003CAppText\n                  variant=\"caption\"\n                  color={active ? colors.onPrimary : colors.text}\n                  style={styles.themeChipText}\n                >\n                  {p.label}\n                \u003C\u002FAppText>\n              \u003C\u002FPressable>\n            );\n          })}\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CView style={styles.listWrap}>\n        \u003CFlashList\n          data={trips}\n          renderItem={renderTrip}\n          keyExtractor={keyExtractor}\n          ListHeaderComponent={listHeader}\n          ListEmptyComponent={listEmpty}\n          contentContainerStyle={{\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.md,\n            paddingBottom: spacing.md,\n          }}\n          ItemSeparatorComponent={() => \u003CView style={{ height: spacing.md }} \u002F>}\n          refreshControl={\n            \u003CRefreshControl\n              refreshing={refreshing}\n              onRefresh={onRefresh}\n              tintColor={colors.primary}\n              colors={[colors.primary]}\n            \u002F>\n          }\n          showsVerticalScrollIndicator={false}\n        \u002F>\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.footer,\n          {\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.sm,\n            paddingBottom: spacing.md,\n            borderTopColor: colors.border,\n            backgroundColor: colors.background,\n          },\n        ]}\n      >\n        \u003CButton\n          label=\"Нова поїздка\"\n          onPress={() => {\n            console.log('TODO: відкрити створення поїздки');\n          }}\n        \u002F>\n      \u003C\u002FView>\n    \u003C\u002FScreen>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    paddingHorizontal: 0,\n  },\n  header: {\n    borderBottomWidth: 1,\n  },\n  themeRow: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n  },\n  themeChip: {\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    borderRadius: 8,\n    borderWidth: 1,\n  },\n  themeChipText: {\n    fontWeight: '600',\n  },\n  listWrap: {\n    flex: 1,\n  },\n  empty: {\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  emptyTitle: {\n    textAlign: 'center',\n  },\n  emptyDesc: {\n    textAlign: 'center',\n  },\n  footer: {\n    borderTopWidth: 1,\n  },\n});\n","app\u002Findex.tsx",[3750,21977,21978,21998,22004,22010,22016,22022,22028,22034,22044,22060,22064,22070,22077,22084,22091,22098,22108,22117,22128,22151,22176,22180,22208,22227,22244,22261,22265,22269,22282,22315,22344,22367,22389,22393,22418,22450,22454,22458,22484,22516,22520,22524,22540,22550,22555,22565,22577,22587,22596,22600,22604,22617,22637,22665,22670,22679,22683,22687,22718,22722,22727,22737,22777,22797,22826,22859,22865,22870,22883,22908,22927,22957,22964,22974,23016,23036,23040,23048,23058,23062,23095,23103,23107,23111,23120,23126,23137,23148,23153,23166,23180,23193,23198,23205,23210,23240,23245,23253,23260,23270,23288,23305,23310,23315,23323,23331,23335,23339,23345,23367,23376,23382,23392,23403,23408,23421,23434,23447,23461,23475,23480,23487,23491,23515,23550,23575,23583,23589,23598,23608,23621,23634,23643,23650,23654,23668,23700,23709,23717,23721,23768,23789,23814,23820,23826,23843,23871,23882,23894,23899,23925,23938,23943,23950,23960,23980,24006,24011,24018,24027,24058,24076,24081,24094,24103,24112,24117,24124,24132,24140,24145,24169,24176,24189,24203,24217,24232,24247,24259,24272,24285,24298,24305,24347,24357,24364,24378,24392,24410,24432,24438,24443,24453,24459,24468,24473,24480,24491,24502,24507,24520,24533,24546,24560,24574,24579,24586,24591,24599,24610,24625,24642,24649,24654,24663,24672,24677,24682,24687,24704,24711,24720,24725,24733,24743,24748,24756,24765,24776,24781,24789,24798,24807,24816,24825,24830,24838,24848,24853,24861,24870,24875,24882,24891,24900,24905,24912,24922,24927,24935,24944,24949,24956,24966,24971],{"__ignoreMap":4217},[4221,21979,21980,21982,21984,21986,21988,21990,21992,21994,21996],{"class":4223,"line":4224},[4221,21981,4529],{"class":4528},[4221,21983,4533],{"class":4532},[4221,21985,3900],{"class":4536},[4221,21987,3785],{"class":4532},[4221,21989,6347],{"class":4536},[4221,21991,4552],{"class":4532},[4221,21993,4555],{"class":4528},[4221,21995,6486],{"class":4558},[4221,21997,4562],{"class":4532},[4221,21999,22000,22002],{"class":4223,"line":4230},[4221,22001,4529],{"class":4528},[4221,22003,4579],{"class":4532},[4221,22005,22006,22008],{"class":4223,"line":4236},[4221,22007,6499],{"class":4536},[4221,22009,5391],{"class":4532},[4221,22011,22012,22014],{"class":4223,"line":4242},[4221,22013,6506],{"class":4536},[4221,22015,5391],{"class":4532},[4221,22017,22018,22020],{"class":4223,"line":4249},[4221,22019,8764],{"class":4536},[4221,22021,5391],{"class":4532},[4221,22023,22024,22026],{"class":4223,"line":4255},[4221,22025,6513],{"class":4536},[4221,22027,5391],{"class":4532},[4221,22029,22030,22032],{"class":4223,"line":4261},[4221,22031,6527],{"class":4536},[4221,22033,5391],{"class":4532},[4221,22035,22036,22038,22040,22042],{"class":4223,"line":4267},[4221,22037,6541],{"class":4532},[4221,22039,4555],{"class":4528},[4221,22041,4559],{"class":4558},[4221,22043,4562],{"class":4532},[4221,22045,22046,22048,22050,22052,22054,22056,22058],{"class":4223,"line":4273},[4221,22047,4529],{"class":4528},[4221,22049,4533],{"class":4532},[4221,22051,3792],{"class":4536},[4221,22053,4552],{"class":4532},[4221,22055,4555],{"class":4528},[4221,22057,14755],{"class":4558},[4221,22059,4562],{"class":4532},[4221,22061,22062],{"class":4223,"line":4279},[4221,22063,4246],{"emptyLinePlaceholder":4245},[4221,22065,22066,22068],{"class":4223,"line":4284},[4221,22067,4529],{"class":4528},[4221,22069,4579],{"class":4532},[4221,22071,22072,22075],{"class":4223,"line":4290},[4221,22073,22074],{"class":4536},"  mockPlaces",[4221,22076,5391],{"class":4532},[4221,22078,22079,22082],{"class":4223,"line":4296},[4221,22080,22081],{"class":4536},"  mockTrips",[4221,22083,5391],{"class":4532},[4221,22085,22086,22089],{"class":4223,"line":4302},[4221,22087,22088],{"class":4536},"  PlaceChip",[4221,22090,5391],{"class":4532},[4221,22092,22093,22096],{"class":4223,"line":4308},[4221,22094,22095],{"class":4536},"  TripCard",[4221,22097,5391],{"class":4532},[4221,22099,22100,22103,22106],{"class":4223,"line":4314},[4221,22101,22102],{"class":4528},"  type",[4221,22104,22105],{"class":4536}," Place",[4221,22107,5391],{"class":4532},[4221,22109,22110,22112,22115],{"class":4223,"line":4319},[4221,22111,22102],{"class":4528},[4221,22113,22114],{"class":4536}," Trip",[4221,22116,5391],{"class":4532},[4221,22118,22119,22121,22123,22126],{"class":4223,"line":4324},[4221,22120,6541],{"class":4532},[4221,22122,4555],{"class":4528},[4221,22124,22125],{"class":4558}," '@\u002Ffeatures\u002Ftrips'",[4221,22127,4562],{"class":4532},[4221,22129,22130,22132,22134,22136,22138,22140,22143,22145,22147,22149],{"class":4223,"line":4330},[4221,22131,4529],{"class":4528},[4221,22133,4533],{"class":4532},[4221,22135,20885],{"class":4536},[4221,22137,3785],{"class":4532},[4221,22139,5261],{"class":4528},[4221,22141,22142],{"class":4536}," ThemePreference",[4221,22144,4552],{"class":4532},[4221,22146,4555],{"class":4528},[4221,22148,21760],{"class":4558},[4221,22150,4562],{"class":4532},[4221,22152,22153,22155,22157,22159,22161,22163,22165,22167,22169,22171,22174],{"class":4223,"line":4336},[4221,22154,4529],{"class":4528},[4221,22156,4533],{"class":4532},[4221,22158,20902],{"class":4536},[4221,22160,3785],{"class":4532},[4221,22162,20905],{"class":4536},[4221,22164,3785],{"class":4532},[4221,22166,6233],{"class":4536},[4221,22168,4552],{"class":4532},[4221,22170,4555],{"class":4528},[4221,22172,22173],{"class":4558}," '@\u002Fshared\u002Fui'",[4221,22175,4562],{"class":4532},[4221,22177,22178],{"class":4223,"line":4342},[4221,22179,4246],{"emptyLinePlaceholder":4245},[4221,22181,22182,22184,22187,22189,22191,22193,22196,22198,22201,22203,22205],{"class":4223,"line":4348},[4221,22183,4616],{"class":4571},[4221,22185,22186],{"class":4619}," PREFS",[4221,22188,12655],{"class":4532},[4221,22190,4774],{"class":4536},[4221,22192,4587],{"class":4532},[4221,22194,22195],{"class":4575},"ThemePreference",[4221,22197,5276],{"class":4532},[4221,22199,22200],{"class":4536},"label",[4221,22202,4587],{"class":4532},[4221,22204,4590],{"class":4575},[4221,22206,22207],{"class":4532}," }[] = [\n",[4221,22209,22210,22212,22214,22217,22219,22222,22225],{"class":4223,"line":4354},[4221,22211,4633],{"class":4532},[4221,22213,4636],{"class":4536},[4221,22215,22216],{"class":4558}," 'system'",[4221,22218,3785],{"class":4532},[4221,22220,22221],{"class":4536},"label:",[4221,22223,22224],{"class":4558}," 'Система'",[4221,22226,4650],{"class":4532},[4221,22228,22229,22231,22233,22235,22237,22239,22242],{"class":4223,"line":4360},[4221,22230,4633],{"class":4532},[4221,22232,4636],{"class":4536},[4221,22234,21836],{"class":4558},[4221,22236,3785],{"class":4532},[4221,22238,22221],{"class":4536},[4221,22240,22241],{"class":4558}," 'Світла'",[4221,22243,4650],{"class":4532},[4221,22245,22246,22248,22250,22252,22254,22256,22259],{"class":4223,"line":4365},[4221,22247,4633],{"class":4532},[4221,22249,4636],{"class":4536},[4221,22251,21831],{"class":4558},[4221,22253,3785],{"class":4532},[4221,22255,22221],{"class":4536},[4221,22257,22258],{"class":4558}," 'Темна'",[4221,22260,4650],{"class":4532},[4221,22262,22263],{"class":4223,"line":4371},[4221,22264,4691],{"class":4532},[4221,22266,22267],{"class":4223,"line":4377},[4221,22268,4246],{"emptyLinePlaceholder":4245},[4221,22270,22271,22273,22275,22277,22280],{"class":4223,"line":4383},[4221,22272,4700],{"class":4528},[4221,22274,5440],{"class":4528},[4221,22276,4703],{"class":4571},[4221,22278,22279],{"class":4706}," HomeScreen",[4221,22281,4710],{"class":4532},[4221,22283,22284,22286,22288,22290,22292,22295,22297,22300,22302,22305,22307,22309,22311,22313],{"class":4223,"line":4389},[4221,22285,5452],{"class":4571},[4221,22287,4533],{"class":4532},[4221,22289,21784],{"class":4619},[4221,22291,3785],{"class":4532},[4221,22293,22294],{"class":4619},"spacing",[4221,22296,3785],{"class":4532},[4221,22298,22299],{"class":4619},"preference",[4221,22301,3785],{"class":4532},[4221,22303,22304],{"class":4619},"setPreference",[4221,22306,3785],{"class":4532},[4221,22308,21789],{"class":4619},[4221,22310,21792],{"class":4532},[4221,22312,20885],{"class":4706},[4221,22314,21797],{"class":4532},[4221,22316,22317,22319,22321,22323,22325,22328,22330,22332,22334,22336,22339,22342],{"class":4223,"line":4395},[4221,22318,5452],{"class":4571},[4221,22320,6741],{"class":4532},[4221,22322,8449],{"class":4619},[4221,22324,3785],{"class":4532},[4221,22326,22327],{"class":4619},"setTrips",[4221,22329,6751],{"class":4532},[4221,22331,6347],{"class":4706},[4221,22333,6756],{"class":4532},[4221,22335,8270],{"class":4575},[4221,22337,22338],{"class":4532},"[]>(",[4221,22340,22341],{"class":4536},"mockTrips",[4221,22343,8278],{"class":4532},[4221,22345,22346,22348,22350,22353,22355,22357,22359,22361,22363,22365],{"class":4223,"line":4400},[4221,22347,5452],{"class":4571},[4221,22349,6741],{"class":4532},[4221,22351,22352],{"class":4619},"places",[4221,22354,6751],{"class":4532},[4221,22356,6347],{"class":4706},[4221,22358,6756],{"class":4532},[4221,22360,20932],{"class":4575},[4221,22362,22338],{"class":4532},[4221,22364,20936],{"class":4536},[4221,22366,8278],{"class":4532},[4221,22368,22369,22371,22373,22375,22377,22379,22381,22383,22385,22387],{"class":4223,"line":4405},[4221,22370,5452],{"class":4571},[4221,22372,6741],{"class":4532},[4221,22374,8670],{"class":4619},[4221,22376,3785],{"class":4532},[4221,22378,9187],{"class":4619},[4221,22380,6751],{"class":4532},[4221,22382,6347],{"class":4706},[4221,22384,4757],{"class":4532},[4221,22386,8691],{"class":4571},[4221,22388,8278],{"class":4532},[4221,22390,22391],{"class":4223,"line":5860},[4221,22392,4246],{"emptyLinePlaceholder":4245},[4221,22394,22395,22397,22400,22402,22404,22406,22408,22410,22412,22414,22416],{"class":4223,"line":5873},[4221,22396,5452],{"class":4571},[4221,22398,22399],{"class":4619}," handleOpenTrip",[4221,22401,4911],{"class":4532},[4221,22403,3900],{"class":4706},[4221,22405,6856],{"class":4532},[4221,22407,14124],{"class":4536},[4221,22409,4587],{"class":4532},[4221,22411,8270],{"class":4575},[4221,22413,4763],{"class":4532},[4221,22415,4766],{"class":4571},[4221,22417,4579],{"class":4532},[4221,22419,22420,22423,22425,22427,22429,22432,22434,22436,22438,22440,22442,22444,22446,22448],{"class":4223,"line":5891},[4221,22421,22422],{"class":4536},"    console",[4221,22424,3793],{"class":4532},[4221,22426,11856],{"class":4706},[4221,22428,4757],{"class":4532},[4221,22430,22431],{"class":4558},"'TODO: відкрити поїздку'",[4221,22433,3785],{"class":4532},[4221,22435,14124],{"class":4536},[4221,22437,3793],{"class":4532},[4221,22439,4774],{"class":4536},[4221,22441,3785],{"class":4532},[4221,22443,14124],{"class":4536},[4221,22445,3793],{"class":4532},[4221,22447,4845],{"class":4536},[4221,22449,8278],{"class":4532},[4221,22451,22452],{"class":4223,"line":5899},[4221,22453,16764],{"class":4532},[4221,22455,22456],{"class":4223,"line":5905},[4221,22457,4246],{"emptyLinePlaceholder":4245},[4221,22459,22460,22462,22465,22467,22469,22471,22474,22476,22478,22480,22482],{"class":4223,"line":5955},[4221,22461,5452],{"class":4571},[4221,22463,22464],{"class":4619}," handleOpenPlace",[4221,22466,4911],{"class":4532},[4221,22468,3900],{"class":4706},[4221,22470,6856],{"class":4532},[4221,22472,22473],{"class":4536},"place",[4221,22475,4587],{"class":4532},[4221,22477,20932],{"class":4575},[4221,22479,4763],{"class":4532},[4221,22481,4766],{"class":4571},[4221,22483,4579],{"class":4532},[4221,22485,22486,22488,22490,22492,22494,22497,22499,22501,22503,22505,22507,22509,22511,22514],{"class":4223,"line":6002},[4221,22487,22422],{"class":4536},[4221,22489,3793],{"class":4532},[4221,22491,11856],{"class":4706},[4221,22493,4757],{"class":4532},[4221,22495,22496],{"class":4558},"'TODO: відкрити місце'",[4221,22498,3785],{"class":4532},[4221,22500,22473],{"class":4536},[4221,22502,3793],{"class":4532},[4221,22504,4774],{"class":4536},[4221,22506,3785],{"class":4532},[4221,22508,22473],{"class":4536},[4221,22510,3793],{"class":4532},[4221,22512,22513],{"class":4536},"name",[4221,22515,8278],{"class":4532},[4221,22517,22518],{"class":4223,"line":6012},[4221,22519,16764],{"class":4532},[4221,22521,22522],{"class":4223,"line":6020},[4221,22523,4246],{"emptyLinePlaceholder":4245},[4221,22525,22526,22528,22530,22532,22534,22536,22538],{"class":4223,"line":6026},[4221,22527,5452],{"class":4571},[4221,22529,9208],{"class":4619},[4221,22531,4911],{"class":4532},[4221,22533,3900],{"class":4706},[4221,22535,9163],{"class":4532},[4221,22537,4766],{"class":4571},[4221,22539,4579],{"class":4532},[4221,22541,22542,22544,22546,22548],{"class":4223,"line":6036},[4221,22543,9223],{"class":4706},[4221,22545,4757],{"class":4532},[4221,22547,9228],{"class":4571},[4221,22549,8278],{"class":4532},[4221,22551,22552],{"class":4223,"line":6041},[4221,22553,22554],{"class":6282},"    \u002F\u002F Mock pull-to-refresh: «мережа» ще не підключена — імітуємо затримку.\n",[4221,22556,22557,22559,22561,22563],{"class":4223,"line":6046},[4221,22558,9235],{"class":4706},[4221,22560,9163],{"class":4532},[4221,22562,4766],{"class":4571},[4221,22564,4579],{"class":4532},[4221,22566,22567,22570,22573,22575],{"class":4223,"line":6051},[4221,22568,22569],{"class":4706},"      setTrips",[4221,22571,22572],{"class":4532},"([...",[4221,22574,22341],{"class":4536},[4221,22576,9318],{"class":4532},[4221,22578,22579,22581,22583,22585],{"class":4223,"line":6068},[4221,22580,9292],{"class":4706},[4221,22582,4757],{"class":4532},[4221,22584,8691],{"class":4571},[4221,22586,8278],{"class":4532},[4221,22588,22589,22591,22594],{"class":4223,"line":6097},[4221,22590,9303],{"class":4532},[4221,22592,22593],{"class":4934},"900",[4221,22595,8278],{"class":4532},[4221,22597,22598],{"class":4223,"line":6126},[4221,22599,16764],{"class":4532},[4221,22601,22602],{"class":4223,"line":6140},[4221,22603,4246],{"emptyLinePlaceholder":4245},[4221,22605,22606,22608,22611,22613,22615],{"class":4223,"line":6148},[4221,22607,5452],{"class":4571},[4221,22609,22610],{"class":4619}," renderTrip",[4221,22612,4911],{"class":4532},[4221,22614,3900],{"class":4706},[4221,22616,11770],{"class":4532},[4221,22618,22619,22621,22623,22625,22627,22629,22631,22633,22635],{"class":4223,"line":6158},[4221,22620,11775],{"class":4532},[4221,22622,4760],{"class":4536},[4221,22624,11786],{"class":4532},[4221,22626,4760],{"class":4536},[4221,22628,4587],{"class":4532},[4221,22630,8270],{"class":4575},[4221,22632,4793],{"class":4532},[4221,22634,4766],{"class":4571},[4221,22636,4718],{"class":4532},[4221,22638,22639,22641,22643,22645,22647,22649,22651,22653,22655,22657,22659,22661,22663],{"class":4223,"line":6169},[4221,22640,5635],{"class":4723},[4221,22642,14382],{"class":4575},[4221,22644,14385],{"class":4732},[4221,22646,4736],{"class":4532},[4221,22648,4739],{"class":4571},[4221,22650,4760],{"class":4536},[4221,22652,4822],{"class":4571},[4221,22654,14396],{"class":4732},[4221,22656,4736],{"class":4532},[4221,22658,4739],{"class":4571},[4221,22660,14403],{"class":4536},[4221,22662,4822],{"class":4571},[4221,22664,11204],{"class":4723},[4221,22666,22667],{"class":4223,"line":6180},[4221,22668,22669],{"class":4532},"    ),\n",[4221,22671,22672,22675,22677],{"class":4223,"line":6186},[4221,22673,22674],{"class":4532},"    [",[4221,22676,14403],{"class":4536},[4221,22678,14422],{"class":4532},[4221,22680,22681],{"class":4223,"line":6212},[4221,22682,4893],{"class":4532},[4221,22684,22685],{"class":4223,"line":7314},[4221,22686,4246],{"emptyLinePlaceholder":4245},[4221,22688,22689,22691,22693,22695,22697,22699,22701,22703,22705,22707,22709,22711,22713,22715],{"class":4223,"line":7338},[4221,22690,5452],{"class":4571},[4221,22692,14721],{"class":4619},[4221,22694,4911],{"class":4532},[4221,22696,3900],{"class":4706},[4221,22698,6856],{"class":4532},[4221,22700,4760],{"class":4536},[4221,22702,4587],{"class":4532},[4221,22704,8270],{"class":4575},[4221,22706,4763],{"class":4532},[4221,22708,4766],{"class":4571},[4221,22710,4769],{"class":4536},[4221,22712,3793],{"class":4532},[4221,22714,4774],{"class":4536},[4221,22716,22717],{"class":4532},", []);\n",[4221,22719,22720],{"class":4223,"line":7381},[4221,22721,4246],{"emptyLinePlaceholder":4245},[4221,22723,22724],{"class":4223,"line":7421},[4221,22725,22726],{"class":6282},"  \u002F\u002F Шапка списку: місця + підпис секції. Чіпи теми лишаються в sticky header (як у статті 08).\n",[4221,22728,22729,22731,22734],{"class":4223,"line":7427},[4221,22730,5452],{"class":4571},[4221,22732,22733],{"class":4706}," listHeader",[4221,22735,22736],{"class":4532}," = (\n",[4221,22738,22739,22741,22743,22745,22747,22749,22751,22753,22756,22758,22761,22763,22765,22767,22769,22771,22773,22775],{"class":4223,"line":7433},[4221,22740,4724],{"class":4723},[4221,22742,4147],{"class":4575},[4221,22744,4807],{"class":4732},[4221,22746,4736],{"class":4532},[4221,22748,4739],{"class":4571},[4221,22750,5689],{"class":4756},[4221,22752,5813],{"class":4536},[4221,22754,22755],{"class":4536}," spacing",[4221,22757,3793],{"class":4756},[4221,22759,22760],{"class":4536},"md",[4221,22762,3785],{"class":4756},[4221,22764,5698],{"class":4536},[4221,22766,22755],{"class":4536},[4221,22768,3793],{"class":4756},[4221,22770,22760],{"class":4536},[4221,22772,5711],{"class":4756},[4221,22774,4822],{"class":4571},[4221,22776,4825],{"class":4723},[4221,22778,22779,22782,22784,22786,22788,22791,22793,22795],{"class":4223,"line":7443},[4221,22780,22781],{"class":4571},"      {",[4221,22783,22352],{"class":4536},[4221,22785,3793],{"class":4756},[4221,22787,6910],{"class":4536},[4221,22789,22790],{"class":4532}," >",[4221,22792,7215],{"class":4934},[4221,22794,7218],{"class":4532},[4221,22796,4718],{"class":4756},[4221,22798,22799,22801,22803,22805,22807,22809,22811,22813,22815,22817,22820,22822,22824],{"class":4223,"line":7452},[4221,22800,4802],{"class":4723},[4221,22802,4147],{"class":4575},[4221,22804,4807],{"class":4732},[4221,22806,4736],{"class":4532},[4221,22808,4739],{"class":4571},[4221,22810,5689],{"class":4756},[4221,22812,5813],{"class":4536},[4221,22814,22755],{"class":4536},[4221,22816,3793],{"class":4756},[4221,22818,22819],{"class":4536},"sm",[4221,22821,5711],{"class":4756},[4221,22823,4822],{"class":4571},[4221,22825,4825],{"class":4723},[4221,22827,22828,22830,22832,22834,22836,22838,22840,22842,22844,22846,22848,22850,22853,22855,22857],{"class":4223,"line":7457},[4221,22829,4830],{"class":4723},[4221,22831,20902],{"class":4575},[4221,22833,4807],{"class":4732},[4221,22835,4736],{"class":4532},[4221,22837,4739],{"class":4571},[4221,22839,5689],{"class":4756},[4221,22841,4975],{"class":4536},[4221,22843,7538],{"class":4558},[4221,22845,5711],{"class":4756},[4221,22847,4822],{"class":4571},[4221,22849,4850],{"class":4723},[4221,22851,22852],{"class":4756},"Останні місця",[4221,22854,4863],{"class":4723},[4221,22856,20902],{"class":4575},[4221,22858,4825],{"class":4723},[4221,22860,22861,22863],{"class":4223,"line":7476},[4221,22862,4830],{"class":4723},[4221,22864,4727],{"class":4575},[4221,22866,22867],{"class":4223,"line":7515},[4221,22868,22869],{"class":4732},"            horizontal\n",[4221,22871,22872,22875,22877,22879,22881],{"class":4223,"line":7563},[4221,22873,22874],{"class":4732},"            data",[4221,22876,4736],{"class":4532},[4221,22878,4739],{"class":4571},[4221,22880,22352],{"class":4536},[4221,22882,4276],{"class":4571},[4221,22884,22885,22888,22890,22892,22894,22896,22898,22900,22902,22904,22906],{"class":4223,"line":7572},[4221,22886,22887],{"class":4732},"            keyExtractor",[4221,22889,4736],{"class":4532},[4221,22891,4739],{"class":4571},[4221,22893,4757],{"class":4756},[4221,22895,4760],{"class":4536},[4221,22897,4763],{"class":4756},[4221,22899,4766],{"class":4571},[4221,22901,4769],{"class":4536},[4221,22903,3793],{"class":4756},[4221,22905,4774],{"class":4536},[4221,22907,4276],{"class":4571},[4221,22909,22910,22913,22915,22917,22919,22921,22923,22925],{"class":4223,"line":7579},[4221,22911,22912],{"class":4732},"            renderItem",[4221,22914,4736],{"class":4532},[4221,22916,4739],{"class":4571},[4221,22918,4788],{"class":4756},[4221,22920,4760],{"class":4536},[4221,22922,4793],{"class":4756},[4221,22924,4766],{"class":4571},[4221,22926,4718],{"class":4756},[4221,22928,22929,22931,22933,22936,22938,22940,22942,22944,22946,22948,22950,22953,22955],{"class":4223,"line":7584},[4221,22930,11187],{"class":4723},[4221,22932,20940],{"class":4575},[4221,22934,22935],{"class":4732}," place",[4221,22937,4736],{"class":4532},[4221,22939,4739],{"class":4571},[4221,22941,4760],{"class":4536},[4221,22943,4822],{"class":4571},[4221,22945,14396],{"class":4732},[4221,22947,4736],{"class":4532},[4221,22949,4739],{"class":4571},[4221,22951,22952],{"class":4536},"handleOpenPlace",[4221,22954,4822],{"class":4571},[4221,22956,11204],{"class":4723},[4221,22958,22959,22962],{"class":4223,"line":7593},[4221,22960,22961],{"class":4756},"            )",[4221,22963,4276],{"class":4571},[4221,22965,22966,22969,22971],{"class":4223,"line":7598},[4221,22967,22968],{"class":4732},"            showsHorizontalScrollIndicator",[4221,22970,4736],{"class":4532},[4221,22972,22973],{"class":4571},"{false}\n",[4221,22975,22976,22979,22981,22983,22985,22987,22989,22991,22993,22995,22997,22999,23002,23004,23006,23008,23010,23012,23014],{"class":4223,"line":7603},[4221,22977,22978],{"class":4732},"            ItemSeparatorComponent",[4221,22980,4736],{"class":4532},[4221,22982,4739],{"class":4571},[4221,22984,6845],{"class":4756},[4221,22986,4766],{"class":4571},[4221,22988,8064],{"class":4723},[4221,22990,4147],{"class":4575},[4221,22992,4807],{"class":4732},[4221,22994,4736],{"class":4532},[4221,22996,4739],{"class":4571},[4221,22998,5689],{"class":4756},[4221,23000,23001],{"class":4536},"width:",[4221,23003,22755],{"class":4536},[4221,23005,3793],{"class":4756},[4221,23007,22819],{"class":4536},[4221,23009,5711],{"class":4756},[4221,23011,4822],{"class":4571},[4221,23013,8081],{"class":4723},[4221,23015,4276],{"class":4571},[4221,23017,23018,23021,23023,23025,23027,23029,23032,23034],{"class":4223,"line":7608},[4221,23019,23020],{"class":4732},"            contentContainerStyle",[4221,23022,4736],{"class":4532},[4221,23024,4739],{"class":4571},[4221,23026,5689],{"class":4756},[4221,23028,11567],{"class":4536},[4221,23030,23031],{"class":4934}," 2",[4221,23033,5711],{"class":4756},[4221,23035,4276],{"class":4571},[4221,23037,23038],{"class":4223,"line":7625},[4221,23039,9622],{"class":4723},[4221,23041,23042,23044,23046],{"class":4223,"line":7650},[4221,23043,4872],{"class":4723},[4221,23045,4147],{"class":4575},[4221,23047,4825],{"class":4723},[4221,23049,23050,23053,23055],{"class":4223,"line":7678},[4221,23051,23052],{"class":4756},"      ) ",[4221,23054,4997],{"class":4532},[4221,23056,23057],{"class":4571}," null}\n",[4221,23059,23060],{"class":4223,"line":7686},[4221,23061,4246],{"emptyLinePlaceholder":4245},[4221,23063,23064,23066,23068,23070,23072,23074,23076,23078,23080,23082,23084,23086,23089,23091,23093],{"class":4223,"line":7696},[4221,23065,5635],{"class":4723},[4221,23067,20902],{"class":4575},[4221,23069,4807],{"class":4732},[4221,23071,4736],{"class":4532},[4221,23073,4739],{"class":4571},[4221,23075,5689],{"class":4756},[4221,23077,4975],{"class":4536},[4221,23079,7538],{"class":4558},[4221,23081,5711],{"class":4756},[4221,23083,4822],{"class":4571},[4221,23085,4850],{"class":4723},[4221,23087,23088],{"class":4532},"Ваші поїздки",[4221,23090,4863],{"class":4723},[4221,23092,20902],{"class":4575},[4221,23094,4825],{"class":4723},[4221,23096,23097,23099,23101],{"class":4223,"line":7707},[4221,23098,6029],{"class":4723},[4221,23100,4147],{"class":4575},[4221,23102,4825],{"class":4723},[4221,23104,23105],{"class":4223,"line":7716},[4221,23106,4893],{"class":4532},[4221,23108,23109],{"class":4223,"line":7721},[4221,23110,4246],{"emptyLinePlaceholder":4245},[4221,23112,23113,23115,23118],{"class":4223,"line":7742},[4221,23114,5452],{"class":4571},[4221,23116,23117],{"class":4706}," listEmpty",[4221,23119,22736],{"class":4532},[4221,23121,23122,23124],{"class":4223,"line":7768},[4221,23123,4724],{"class":4723},[4221,23125,5845],{"class":4575},[4221,23127,23128,23131,23133,23135],{"class":4223,"line":7783},[4221,23129,23130],{"class":4732},"      style",[4221,23132,4736],{"class":4532},[4221,23134,4739],{"class":4571},[4221,23136,5857],{"class":4756},[4221,23138,23139,23142,23144,23146],{"class":4223,"line":7791},[4221,23140,23141],{"class":4536},"        styles",[4221,23143,3793],{"class":4756},[4221,23145,7331],{"class":4536},[4221,23147,5391],{"class":4756},[4221,23149,23150],{"class":4223,"line":7801},[4221,23151,23152],{"class":4756},"        {\n",[4221,23154,23155,23158,23160,23162,23164],{"class":4223,"line":7812},[4221,23156,23157],{"class":4536},"          paddingHorizontal:",[4221,23159,22755],{"class":4536},[4221,23161,3793],{"class":4756},[4221,23163,22819],{"class":4536},[4221,23165,5391],{"class":4756},[4221,23167,23168,23171,23173,23175,23178],{"class":4223,"line":7822},[4221,23169,23170],{"class":4536},"          paddingVertical:",[4221,23172,22755],{"class":4536},[4221,23174,3793],{"class":4756},[4221,23176,23177],{"class":4536},"xl",[4221,23179,5391],{"class":4756},[4221,23181,23182,23185,23187,23189,23191],{"class":4223,"line":7832},[4221,23183,23184],{"class":4536},"          gap:",[4221,23186,22755],{"class":4536},[4221,23188,3793],{"class":4756},[4221,23190,22819],{"class":4536},[4221,23192,5391],{"class":4756},[4221,23194,23195],{"class":4223,"line":7842},[4221,23196,23197],{"class":4756},"        },\n",[4221,23199,23200,23203],{"class":4223,"line":7851},[4221,23201,23202],{"class":4756},"      ]",[4221,23204,4276],{"class":4571},[4221,23206,23207],{"class":4223,"line":7856},[4221,23208,23209],{"class":4723},"    >\n",[4221,23211,23212,23214,23216,23219,23221,23224,23226,23228,23230,23232,23234,23236,23238],{"class":4223,"line":7876},[4221,23213,5635],{"class":4723},[4221,23215,20902],{"class":4575},[4221,23217,23218],{"class":4732}," variant",[4221,23220,4736],{"class":4532},[4221,23222,23223],{"class":4558},"\"subtitle\"",[4221,23225,4807],{"class":4732},[4221,23227,4736],{"class":4532},[4221,23229,4739],{"class":4571},[4221,23231,4814],{"class":4536},[4221,23233,3793],{"class":4756},[4221,23235,7357],{"class":4536},[4221,23237,4822],{"class":4571},[4221,23239,4825],{"class":4723},[4221,23241,23242],{"class":4223,"line":7883},[4221,23243,23244],{"class":4532},"        Поки немає поїздок\n",[4221,23246,23247,23249,23251],{"class":4223,"line":7892},[4221,23248,5725],{"class":4723},[4221,23250,20902],{"class":4575},[4221,23252,4825],{"class":4723},[4221,23254,23255,23257],{"class":4223,"line":7901},[4221,23256,5635],{"class":4723},[4221,23258,23259],{"class":4575},"AppText\n",[4221,23261,23262,23265,23267],{"class":4223,"line":7910},[4221,23263,23264],{"class":4732},"        variant",[4221,23266,4736],{"class":4532},[4221,23268,23269],{"class":4558},"\"caption\"\n",[4221,23271,23272,23275,23277,23279,23281,23283,23286],{"class":4223,"line":7915},[4221,23273,23274],{"class":4732},"        color",[4221,23276,4736],{"class":4532},[4221,23278,4739],{"class":4571},[4221,23280,21784],{"class":4536},[4221,23282,3793],{"class":4756},[4221,23284,23285],{"class":4536},"textSecondary",[4221,23287,4276],{"class":4571},[4221,23289,23290,23292,23294,23296,23298,23300,23303],{"class":4223,"line":17209},[4221,23291,5740],{"class":4732},[4221,23293,4736],{"class":4532},[4221,23295,4739],{"class":4571},[4221,23297,4814],{"class":4536},[4221,23299,3793],{"class":4756},[4221,23301,23302],{"class":4536},"emptyDesc",[4221,23304,4276],{"class":4571},[4221,23306,23307],{"class":4223,"line":17218},[4221,23308,23309],{"class":4723},"      >\n",[4221,23311,23312],{"class":4223,"line":17248},[4221,23313,23314],{"class":4532},"        Потягніть список униз, щоб «оновити», або натисніть «Нова поїздка».\n",[4221,23316,23317,23319,23321],{"class":4223,"line":17253},[4221,23318,5725],{"class":4723},[4221,23320,20902],{"class":4575},[4221,23322,4825],{"class":4723},[4221,23324,23325,23327,23329],{"class":4223,"line":17262},[4221,23326,6029],{"class":4723},[4221,23328,4147],{"class":4575},[4221,23330,4825],{"class":4723},[4221,23332,23333],{"class":4223,"line":17295},[4221,23334,4893],{"class":4532},[4221,23336,23337],{"class":4223,"line":17300},[4221,23338,4246],{"emptyLinePlaceholder":4245},[4221,23340,23341,23343],{"class":4223,"line":17309},[4221,23342,4715],{"class":4528},[4221,23344,4718],{"class":4532},[4221,23346,23347,23349,23351,23353,23355,23357,23359,23361,23363,23365],{"class":4223,"line":17332},[4221,23348,4724],{"class":4723},[4221,23350,6233],{"class":4575},[4221,23352,4807],{"class":4732},[4221,23354,4736],{"class":4532},[4221,23356,4739],{"class":4571},[4221,23358,4814],{"class":4536},[4221,23360,3793],{"class":4756},[4221,23362,5615],{"class":4536},[4221,23364,4822],{"class":4571},[4221,23366,4825],{"class":4723},[4221,23368,23369,23371,23374],{"class":4223,"line":17364},[4221,23370,22781],{"class":4571},[4221,23372,23373],{"class":6282},"\u002F* Sticky header з 08: бренд + тема + чіпи — не скроляться зі списком *\u002F",[4221,23375,4276],{"class":4571},[4221,23377,23378,23380],{"class":4223,"line":17396},[4221,23379,5635],{"class":4723},[4221,23381,5845],{"class":4575},[4221,23383,23384,23386,23388,23390],{"class":4223,"line":17405},[4221,23385,5740],{"class":4732},[4221,23387,4736],{"class":4532},[4221,23389,4739],{"class":4571},[4221,23391,5857],{"class":4756},[4221,23393,23394,23397,23399,23401],{"class":4223,"line":17410},[4221,23395,23396],{"class":4536},"          styles",[4221,23398,3793],{"class":4756},[4221,23400,12683],{"class":4536},[4221,23402,5391],{"class":4756},[4221,23404,23405],{"class":4223,"line":17437},[4221,23406,23407],{"class":4756},"          {\n",[4221,23409,23410,23413,23415,23417,23419],{"class":4223,"line":17460},[4221,23411,23412],{"class":4536},"            paddingHorizontal:",[4221,23414,22755],{"class":4536},[4221,23416,3793],{"class":4756},[4221,23418,22760],{"class":4536},[4221,23420,5391],{"class":4756},[4221,23422,23423,23426,23428,23430,23432],{"class":4223,"line":17484},[4221,23424,23425],{"class":4536},"            paddingTop:",[4221,23427,22755],{"class":4536},[4221,23429,3793],{"class":4756},[4221,23431,22819],{"class":4536},[4221,23433,5391],{"class":4756},[4221,23435,23436,23439,23441,23443,23445],{"class":4223,"line":17507},[4221,23437,23438],{"class":4536},"            paddingBottom:",[4221,23440,22755],{"class":4536},[4221,23442,3793],{"class":4756},[4221,23444,22760],{"class":4536},[4221,23446,5391],{"class":4756},[4221,23448,23449,23452,23454,23456,23459],{"class":4223,"line":17516},[4221,23450,23451],{"class":4536},"            gap:",[4221,23453,22755],{"class":4536},[4221,23455,3793],{"class":4756},[4221,23457,23458],{"class":4536},"xs",[4221,23460,5391],{"class":4756},[4221,23462,23463,23466,23468,23470,23473],{"class":4223,"line":17525},[4221,23464,23465],{"class":4536},"            borderBottomColor:",[4221,23467,21884],{"class":4536},[4221,23469,3793],{"class":4756},[4221,23471,23472],{"class":4536},"border",[4221,23474,5391],{"class":4756},[4221,23476,23477],{"class":4223,"line":17532},[4221,23478,23479],{"class":4756},"          },\n",[4221,23481,23482,23485],{"class":4223,"line":17551},[4221,23483,23484],{"class":4756},"        ]",[4221,23486,4276],{"class":4571},[4221,23488,23489],{"class":4223,"line":17574},[4221,23490,23309],{"class":4723},[4221,23492,23493,23495,23497,23499,23501,23504,23506,23509,23511,23513],{"class":4223,"line":17613},[4221,23494,4802],{"class":4723},[4221,23496,20902],{"class":4575},[4221,23498,23218],{"class":4732},[4221,23500,4736],{"class":4532},[4221,23502,23503],{"class":4558},"\"title\"",[4221,23505,4850],{"class":4723},[4221,23507,23508],{"class":4532},"Мандрівник",[4221,23510,4863],{"class":4723},[4221,23512,20902],{"class":4575},[4221,23514,4825],{"class":4723},[4221,23516,23517,23519,23521,23523,23525,23528,23530,23532,23534,23536,23538,23540,23542,23544,23546,23548],{"class":4223,"line":17636},[4221,23518,4802],{"class":4723},[4221,23520,20902],{"class":4575},[4221,23522,23218],{"class":4732},[4221,23524,4736],{"class":4532},[4221,23526,23527],{"class":4558},"\"caption\"",[4221,23529,4807],{"class":4732},[4221,23531,4736],{"class":4532},[4221,23533,4739],{"class":4571},[4221,23535,5689],{"class":4756},[4221,23537,11227],{"class":4536},[4221,23539,22755],{"class":4536},[4221,23541,3793],{"class":4756},[4221,23543,23458],{"class":4536},[4221,23545,5711],{"class":4756},[4221,23547,4822],{"class":4571},[4221,23549,4825],{"class":4723},[4221,23551,23552,23555,23557,23559,23561,23563,23565,23568,23570,23573],{"class":4223,"line":17685},[4221,23553,23554],{"class":4532},"          Щоденник подорожей · тема: ",[4221,23556,4739],{"class":4571},[4221,23558,21789],{"class":4536},[4221,23560,7212],{"class":4532},[4221,23562,21831],{"class":4558},[4221,23564,7218],{"class":4532},[4221,23566,23567],{"class":4558}," 'темна'",[4221,23569,7228],{"class":4532},[4221,23571,23572],{"class":4558}," 'світла'",[4221,23574,4276],{"class":4571},[4221,23576,23577,23579,23581],{"class":4223,"line":17694},[4221,23578,4872],{"class":4723},[4221,23580,20902],{"class":4575},[4221,23582,4825],{"class":4723},[4221,23584,23585,23587],{"class":4223,"line":17703},[4221,23586,4802],{"class":4723},[4221,23588,23259],{"class":4575},[4221,23590,23591,23594,23596],{"class":4223,"line":17710},[4221,23592,23593],{"class":4732},"          variant",[4221,23595,4736],{"class":4532},[4221,23597,23269],{"class":4558},[4221,23599,23600,23602,23604,23606],{"class":4223,"line":17747},[4221,23601,6935],{"class":4732},[4221,23603,4736],{"class":4532},[4221,23605,4739],{"class":4571},[4221,23607,7200],{"class":4756},[4221,23609,23610,23613,23615,23617,23619],{"class":4223,"line":17752},[4221,23611,23612],{"class":4536},"            marginTop:",[4221,23614,22755],{"class":4536},[4221,23616,3793],{"class":4756},[4221,23618,23458],{"class":4536},[4221,23620,5391],{"class":4756},[4221,23622,23623,23626,23628,23630,23632],{"class":4223,"line":17761},[4221,23624,23625],{"class":4536},"            color:",[4221,23627,21884],{"class":4536},[4221,23629,3793],{"class":4756},[4221,23631,9597],{"class":4536},[4221,23633,5391],{"class":4756},[4221,23635,23636,23639,23641],{"class":4223,"line":17766},[4221,23637,23638],{"class":4536},"            fontWeight:",[4221,23640,7538],{"class":4558},[4221,23642,5391],{"class":4756},[4221,23644,23645,23648],{"class":4223,"line":17771},[4221,23646,23647],{"class":4756},"          }",[4221,23649,4276],{"class":4571},[4221,23651,23652],{"class":4223,"line":17776},[4221,23653,6963],{"class":4723},[4221,23655,23656,23658,23660,23662,23664,23666],{"class":4223,"line":17793},[4221,23657,16878],{"class":4571},[4221,23659,8449],{"class":4536},[4221,23661,3793],{"class":4756},[4221,23663,6910],{"class":4536},[4221,23665,22790],{"class":4532},[4221,23667,19926],{"class":4934},[4221,23669,23670,23672,23674,23676,23678,23680,23682,23684,23687,23689,23691,23693,23695,23697],{"class":4223,"line":17814},[4221,23671,19931],{"class":4532},[4221,23673,8905],{"class":4558},[4221,23675,5375],{"class":4571},[4221,23677,8449],{"class":4536},[4221,23679,3793],{"class":4756},[4221,23681,6910],{"class":4536},[4221,23683,4822],{"class":4571},[4221,23685,23686],{"class":4558}," поїздок · ",[4221,23688,5375],{"class":4571},[4221,23690,22352],{"class":4536},[4221,23692,3793],{"class":4756},[4221,23694,6910],{"class":4536},[4221,23696,4822],{"class":4571},[4221,23698,23699],{"class":4558}," місць`\n",[4221,23701,23702,23704,23707],{"class":4223,"line":17847},[4221,23703,19950],{"class":4532},[4221,23705,23706],{"class":4558}," 'Список порожній'",[4221,23708,4276],{"class":4571},[4221,23710,23711,23713,23715],{"class":4223,"line":17874},[4221,23712,4872],{"class":4723},[4221,23714,20902],{"class":4575},[4221,23716,4825],{"class":4723},[4221,23718,23719],{"class":4223,"line":17895},[4221,23720,4246],{"emptyLinePlaceholder":4245},[4221,23722,23723,23725,23727,23729,23731,23733,23735,23737,23739,23742,23744,23746,23748,23750,23752,23754,23756,23758,23760,23762,23764,23766],{"class":4223,"line":17920},[4221,23724,4802],{"class":4723},[4221,23726,4147],{"class":4575},[4221,23728,4807],{"class":4732},[4221,23730,4736],{"class":4532},[4221,23732,4739],{"class":4571},[4221,23734,5608],{"class":4756},[4221,23736,4814],{"class":4536},[4221,23738,3793],{"class":4756},[4221,23740,23741],{"class":4536},"themeRow",[4221,23743,5618],{"class":4756},[4221,23745,5813],{"class":4536},[4221,23747,22755],{"class":4536},[4221,23749,3793],{"class":4756},[4221,23751,22819],{"class":4536},[4221,23753,3785],{"class":4756},[4221,23755,11227],{"class":4536},[4221,23757,22755],{"class":4536},[4221,23759,3793],{"class":4756},[4221,23761,22819],{"class":4536},[4221,23763,5626],{"class":4756},[4221,23765,4822],{"class":4571},[4221,23767,4825],{"class":4723},[4221,23769,23770,23772,23775,23777,23779,23781,23783,23785,23787],{"class":4223,"line":17927},[4221,23771,16878],{"class":4571},[4221,23773,23774],{"class":4619},"PREFS",[4221,23776,3793],{"class":4756},[4221,23778,4019],{"class":4706},[4221,23780,6856],{"class":4756},[4221,23782,3743],{"class":4536},[4221,23784,4763],{"class":4756},[4221,23786,4766],{"class":4571},[4221,23788,4579],{"class":4756},[4221,23790,23791,23794,23797,23800,23803,23805,23808,23810,23812],{"class":4223,"line":17938},[4221,23792,23793],{"class":4571},"            const",[4221,23795,23796],{"class":4619}," active",[4221,23798,23799],{"class":4532}," =",[4221,23801,23802],{"class":4536}," preference",[4221,23804,7212],{"class":4532},[4221,23806,23807],{"class":4536}," p",[4221,23809,3793],{"class":4756},[4221,23811,4774],{"class":4536},[4221,23813,4562],{"class":4756},[4221,23815,23816,23818],{"class":4223,"line":17947},[4221,23817,15125],{"class":4528},[4221,23819,4718],{"class":4756},[4221,23821,23822,23824],{"class":4223,"line":17956},[4221,23823,11187],{"class":4723},[4221,23825,6833],{"class":4575},[4221,23827,23828,23831,23833,23835,23837,23839,23841],{"class":4223,"line":17965},[4221,23829,23830],{"class":4732},"                key",[4221,23832,4736],{"class":4532},[4221,23834,4739],{"class":4571},[4221,23836,3743],{"class":4536},[4221,23838,3793],{"class":4756},[4221,23840,4774],{"class":4536},[4221,23842,4276],{"class":4571},[4221,23844,23845,23848,23850,23852,23854,23856,23859,23861,23863,23865,23867,23869],{"class":4223,"line":17970},[4221,23846,23847],{"class":4732},"                onPress",[4221,23849,4736],{"class":4532},[4221,23851,4739],{"class":4571},[4221,23853,6845],{"class":4756},[4221,23855,4766],{"class":4571},[4221,23857,23858],{"class":4706}," setPreference",[4221,23860,4757],{"class":4756},[4221,23862,3743],{"class":4536},[4221,23864,3793],{"class":4756},[4221,23866,4774],{"class":4536},[4221,23868,3874],{"class":4756},[4221,23870,4276],{"class":4571},[4221,23872,23873,23876,23878,23880],{"class":4223,"line":17989},[4221,23874,23875],{"class":4732},"                style",[4221,23877,4736],{"class":4532},[4221,23879,4739],{"class":4571},[4221,23881,5857],{"class":4756},[4221,23883,23884,23887,23889,23892],{"class":4223,"line":18015},[4221,23885,23886],{"class":4536},"                  styles",[4221,23888,3793],{"class":4756},[4221,23890,23891],{"class":4536},"themeChip",[4221,23893,5391],{"class":4756},[4221,23895,23896],{"class":4223,"line":18035},[4221,23897,23898],{"class":4756},"                  {\n",[4221,23900,23901,23904,23906,23908,23910,23912,23914,23916,23918,23920,23923],{"class":4223,"line":18061},[4221,23902,23903],{"class":4536},"                    backgroundColor:",[4221,23905,23796],{"class":4536},[4221,23907,7218],{"class":4532},[4221,23909,21884],{"class":4536},[4221,23911,3793],{"class":4756},[4221,23913,9597],{"class":4536},[4221,23915,7228],{"class":4532},[4221,23917,21884],{"class":4536},[4221,23919,3793],{"class":4756},[4221,23921,23922],{"class":4536},"surface",[4221,23924,5391],{"class":4756},[4221,23926,23927,23930,23932,23934,23936],{"class":4223,"line":18075},[4221,23928,23929],{"class":4536},"                    borderColor:",[4221,23931,21884],{"class":4536},[4221,23933,3793],{"class":4756},[4221,23935,23472],{"class":4536},[4221,23937,5391],{"class":4756},[4221,23939,23940],{"class":4223,"line":18115},[4221,23941,23942],{"class":4756},"                  },\n",[4221,23944,23945,23948],{"class":4223,"line":18140},[4221,23946,23947],{"class":4756},"                ]",[4221,23949,4276],{"class":4571},[4221,23951,23952,23955,23957],{"class":4223,"line":18147},[4221,23953,23954],{"class":4732},"                accessibilityRole",[4221,23956,4736],{"class":4532},[4221,23958,23959],{"class":4558},"\"button\"\n",[4221,23961,23962,23965,23967,23969,23971,23974,23976,23978],{"class":4223,"line":18156},[4221,23963,23964],{"class":4732},"                accessibilityState",[4221,23966,4736],{"class":4532},[4221,23968,4739],{"class":4571},[4221,23970,5689],{"class":4756},[4221,23972,23973],{"class":4536},"selected:",[4221,23975,23796],{"class":4536},[4221,23977,5711],{"class":4756},[4221,23979,4276],{"class":4571},[4221,23981,23982,23985,23987,23989,23992,23994,23996,23998,24000,24002,24004],{"class":4223,"line":18165},[4221,23983,23984],{"class":4732},"                accessibilityLabel",[4221,23986,4736],{"class":4532},[4221,23988,4739],{"class":4571},[4221,23990,23991],{"class":4558},"`Тема: ",[4221,23993,5375],{"class":4571},[4221,23995,3743],{"class":4536},[4221,23997,3793],{"class":4756},[4221,23999,22200],{"class":4536},[4221,24001,4822],{"class":4571},[4221,24003,5388],{"class":4558},[4221,24005,4276],{"class":4571},[4221,24007,24008],{"class":4223,"line":18174},[4221,24009,24010],{"class":4723},"              >\n",[4221,24012,24013,24016],{"class":4223,"line":18183},[4221,24014,24015],{"class":4723},"                \u003C",[4221,24017,23259],{"class":4575},[4221,24019,24020,24023,24025],{"class":4223,"line":18192},[4221,24021,24022],{"class":4732},"                  variant",[4221,24024,4736],{"class":4532},[4221,24026,23269],{"class":4558},[4221,24028,24029,24032,24034,24036,24039,24041,24043,24045,24048,24050,24052,24054,24056],{"class":4223,"line":18197},[4221,24030,24031],{"class":4732},"                  color",[4221,24033,4736],{"class":4532},[4221,24035,4739],{"class":4571},[4221,24037,24038],{"class":4536},"active",[4221,24040,7218],{"class":4532},[4221,24042,21884],{"class":4536},[4221,24044,3793],{"class":4756},[4221,24046,24047],{"class":4536},"onPrimary",[4221,24049,7228],{"class":4532},[4221,24051,21884],{"class":4536},[4221,24053,3793],{"class":4756},[4221,24055,14937],{"class":4536},[4221,24057,4276],{"class":4571},[4221,24059,24060,24063,24065,24067,24069,24071,24074],{"class":4223,"line":18217},[4221,24061,24062],{"class":4732},"                  style",[4221,24064,4736],{"class":4532},[4221,24066,4739],{"class":4571},[4221,24068,4814],{"class":4536},[4221,24070,3793],{"class":4756},[4221,24072,24073],{"class":4536},"themeChipText",[4221,24075,4276],{"class":4571},[4221,24077,24078],{"class":4223,"line":18224},[4221,24079,24080],{"class":4723},"                >\n",[4221,24082,24083,24086,24088,24090,24092],{"class":4223,"line":18233},[4221,24084,24085],{"class":4571},"                  {",[4221,24087,3743],{"class":4536},[4221,24089,3793],{"class":4756},[4221,24091,22200],{"class":4536},[4221,24093,4276],{"class":4571},[4221,24095,24096,24099,24101],{"class":4223,"line":18242},[4221,24097,24098],{"class":4723},"                \u003C\u002F",[4221,24100,20902],{"class":4575},[4221,24102,4825],{"class":4723},[4221,24104,24105,24108,24110],{"class":4223,"line":18251},[4221,24106,24107],{"class":4723},"              \u003C\u002F",[4221,24109,4156],{"class":4575},[4221,24111,4825],{"class":4723},[4221,24113,24114],{"class":4223,"line":18261},[4221,24115,24116],{"class":4756},"            );\n",[4221,24118,24119,24122],{"class":4223,"line":18270},[4221,24120,24121],{"class":4756},"          })",[4221,24123,4276],{"class":4571},[4221,24125,24126,24128,24130],{"class":4223,"line":18275},[4221,24127,4872],{"class":4723},[4221,24129,4147],{"class":4575},[4221,24131,4825],{"class":4723},[4221,24133,24134,24136,24138],{"class":4223,"line":18300},[4221,24135,5725],{"class":4723},[4221,24137,4147],{"class":4575},[4221,24139,4825],{"class":4723},[4221,24141,24143],{"class":4223,"line":24142},170,[4221,24144,4246],{"emptyLinePlaceholder":4245},[4221,24146,24148,24150,24152,24154,24156,24158,24160,24162,24165,24167],{"class":4223,"line":24147},171,[4221,24149,5635],{"class":4723},[4221,24151,4147],{"class":4575},[4221,24153,4807],{"class":4732},[4221,24155,4736],{"class":4532},[4221,24157,4739],{"class":4571},[4221,24159,4814],{"class":4536},[4221,24161,3793],{"class":4756},[4221,24163,24164],{"class":4536},"listWrap",[4221,24166,4822],{"class":4571},[4221,24168,4825],{"class":4723},[4221,24170,24172,24174],{"class":4223,"line":24171},172,[4221,24173,4802],{"class":4723},[4221,24175,15015],{"class":4575},[4221,24177,24179,24181,24183,24185,24187],{"class":4223,"line":24178},173,[4221,24180,7205],{"class":4732},[4221,24182,4736],{"class":4532},[4221,24184,4739],{"class":4571},[4221,24186,8449],{"class":4536},[4221,24188,4276],{"class":4571},[4221,24190,24192,24195,24197,24199,24201],{"class":4223,"line":24191},174,[4221,24193,24194],{"class":4732},"          renderItem",[4221,24196,4736],{"class":4532},[4221,24198,4739],{"class":4571},[4221,24200,11953],{"class":4536},[4221,24202,4276],{"class":4571},[4221,24204,24206,24209,24211,24213,24215],{"class":4223,"line":24205},175,[4221,24207,24208],{"class":4732},"          keyExtractor",[4221,24210,4736],{"class":4532},[4221,24212,4739],{"class":4571},[4221,24214,3843],{"class":4536},[4221,24216,4276],{"class":4571},[4221,24218,24220,24223,24225,24227,24230],{"class":4223,"line":24219},176,[4221,24221,24222],{"class":4732},"          ListHeaderComponent",[4221,24224,4736],{"class":4532},[4221,24226,4739],{"class":4571},[4221,24228,24229],{"class":4536},"listHeader",[4221,24231,4276],{"class":4571},[4221,24233,24235,24238,24240,24242,24245],{"class":4223,"line":24234},177,[4221,24236,24237],{"class":4732},"          ListEmptyComponent",[4221,24239,4736],{"class":4532},[4221,24241,4739],{"class":4571},[4221,24243,24244],{"class":4536},"listEmpty",[4221,24246,4276],{"class":4571},[4221,24248,24250,24253,24255,24257],{"class":4223,"line":24249},178,[4221,24251,24252],{"class":4732},"          contentContainerStyle",[4221,24254,4736],{"class":4532},[4221,24256,4739],{"class":4571},[4221,24258,7200],{"class":4756},[4221,24260,24262,24264,24266,24268,24270],{"class":4223,"line":24261},179,[4221,24263,23412],{"class":4536},[4221,24265,22755],{"class":4536},[4221,24267,3793],{"class":4756},[4221,24269,22760],{"class":4536},[4221,24271,5391],{"class":4756},[4221,24273,24275,24277,24279,24281,24283],{"class":4223,"line":24274},180,[4221,24276,23425],{"class":4536},[4221,24278,22755],{"class":4536},[4221,24280,3793],{"class":4756},[4221,24282,22760],{"class":4536},[4221,24284,5391],{"class":4756},[4221,24286,24288,24290,24292,24294,24296],{"class":4223,"line":24287},181,[4221,24289,23438],{"class":4536},[4221,24291,22755],{"class":4536},[4221,24293,3793],{"class":4756},[4221,24295,22760],{"class":4536},[4221,24297,5391],{"class":4756},[4221,24299,24301,24303],{"class":4223,"line":24300},182,[4221,24302,23647],{"class":4756},[4221,24304,4276],{"class":4571},[4221,24306,24308,24311,24313,24315,24317,24319,24321,24323,24325,24327,24329,24331,24333,24335,24337,24339,24341,24343,24345],{"class":4223,"line":24307},183,[4221,24309,24310],{"class":4732},"          ItemSeparatorComponent",[4221,24312,4736],{"class":4532},[4221,24314,4739],{"class":4571},[4221,24316,6845],{"class":4756},[4221,24318,4766],{"class":4571},[4221,24320,8064],{"class":4723},[4221,24322,4147],{"class":4575},[4221,24324,4807],{"class":4732},[4221,24326,4736],{"class":4532},[4221,24328,4739],{"class":4571},[4221,24330,5689],{"class":4756},[4221,24332,13850],{"class":4536},[4221,24334,22755],{"class":4536},[4221,24336,3793],{"class":4756},[4221,24338,22760],{"class":4536},[4221,24340,5711],{"class":4756},[4221,24342,4822],{"class":4571},[4221,24344,8081],{"class":4723},[4221,24346,4276],{"class":4571},[4221,24348,24350,24353,24355],{"class":4223,"line":24349},184,[4221,24351,24352],{"class":4732},"          refreshControl",[4221,24354,4736],{"class":4532},[4221,24356,7200],{"class":4571},[4221,24358,24360,24362],{"class":4223,"line":24359},185,[4221,24361,5908],{"class":4723},[4221,24363,9559],{"class":4575},[4221,24365,24367,24370,24372,24374,24376],{"class":4223,"line":24366},186,[4221,24368,24369],{"class":4732},"              refreshing",[4221,24371,4736],{"class":4532},[4221,24373,4739],{"class":4571},[4221,24375,8670],{"class":4536},[4221,24377,4276],{"class":4571},[4221,24379,24381,24384,24386,24388,24390],{"class":4223,"line":24380},187,[4221,24382,24383],{"class":4732},"              onRefresh",[4221,24385,4736],{"class":4532},[4221,24387,4739],{"class":4571},[4221,24389,8678],{"class":4536},[4221,24391,4276],{"class":4571},[4221,24393,24395,24398,24400,24402,24404,24406,24408],{"class":4223,"line":24394},188,[4221,24396,24397],{"class":4732},"              tintColor",[4221,24399,4736],{"class":4532},[4221,24401,4739],{"class":4571},[4221,24403,21784],{"class":4536},[4221,24405,3793],{"class":4756},[4221,24407,9597],{"class":4536},[4221,24409,4276],{"class":4571},[4221,24411,24413,24416,24418,24420,24422,24424,24426,24428,24430],{"class":4223,"line":24412},189,[4221,24414,24415],{"class":4732},"              colors",[4221,24417,4736],{"class":4532},[4221,24419,4739],{"class":4571},[4221,24421,5608],{"class":4756},[4221,24423,21784],{"class":4536},[4221,24425,3793],{"class":4756},[4221,24427,9597],{"class":4536},[4221,24429,9615],{"class":4756},[4221,24431,4276],{"class":4571},[4221,24433,24435],{"class":4223,"line":24434},190,[4221,24436,24437],{"class":4723},"            \u002F>\n",[4221,24439,24441],{"class":4223,"line":24440},191,[4221,24442,6930],{"class":4571},[4221,24444,24446,24449,24451],{"class":4223,"line":24445},192,[4221,24447,24448],{"class":4732},"          showsVerticalScrollIndicator",[4221,24450,4736],{"class":4532},[4221,24452,22973],{"class":4571},[4221,24454,24456],{"class":4223,"line":24455},193,[4221,24457,24458],{"class":4723},"        \u002F>\n",[4221,24460,24462,24464,24466],{"class":4223,"line":24461},194,[4221,24463,5725],{"class":4723},[4221,24465,4147],{"class":4575},[4221,24467,4825],{"class":4723},[4221,24469,24471],{"class":4223,"line":24470},195,[4221,24472,4246],{"emptyLinePlaceholder":4245},[4221,24474,24476,24478],{"class":4223,"line":24475},196,[4221,24477,5635],{"class":4723},[4221,24479,5845],{"class":4575},[4221,24481,24483,24485,24487,24489],{"class":4223,"line":24482},197,[4221,24484,5740],{"class":4732},[4221,24486,4736],{"class":4532},[4221,24488,4739],{"class":4571},[4221,24490,5857],{"class":4756},[4221,24492,24494,24496,24498,24500],{"class":4223,"line":24493},198,[4221,24495,23396],{"class":4536},[4221,24497,3793],{"class":4756},[4221,24499,11178],{"class":4536},[4221,24501,5391],{"class":4756},[4221,24503,24505],{"class":4223,"line":24504},199,[4221,24506,23407],{"class":4756},[4221,24508,24510,24512,24514,24516,24518],{"class":4223,"line":24509},200,[4221,24511,23412],{"class":4536},[4221,24513,22755],{"class":4536},[4221,24515,3793],{"class":4756},[4221,24517,22760],{"class":4536},[4221,24519,5391],{"class":4756},[4221,24521,24523,24525,24527,24529,24531],{"class":4223,"line":24522},201,[4221,24524,23425],{"class":4536},[4221,24526,22755],{"class":4536},[4221,24528,3793],{"class":4756},[4221,24530,22819],{"class":4536},[4221,24532,5391],{"class":4756},[4221,24534,24536,24538,24540,24542,24544],{"class":4223,"line":24535},202,[4221,24537,23438],{"class":4536},[4221,24539,22755],{"class":4536},[4221,24541,3793],{"class":4756},[4221,24543,22760],{"class":4536},[4221,24545,5391],{"class":4756},[4221,24547,24549,24552,24554,24556,24558],{"class":4223,"line":24548},203,[4221,24550,24551],{"class":4536},"            borderTopColor:",[4221,24553,21884],{"class":4536},[4221,24555,3793],{"class":4756},[4221,24557,23472],{"class":4536},[4221,24559,5391],{"class":4756},[4221,24561,24563,24566,24568,24570,24572],{"class":4223,"line":24562},204,[4221,24564,24565],{"class":4536},"            backgroundColor:",[4221,24567,21884],{"class":4536},[4221,24569,3793],{"class":4756},[4221,24571,21889],{"class":4536},[4221,24573,5391],{"class":4756},[4221,24575,24577],{"class":4223,"line":24576},205,[4221,24578,23479],{"class":4756},[4221,24580,24582,24584],{"class":4223,"line":24581},206,[4221,24583,23484],{"class":4756},[4221,24585,4276],{"class":4571},[4221,24587,24589],{"class":4223,"line":24588},207,[4221,24590,23309],{"class":4723},[4221,24592,24594,24596],{"class":4223,"line":24593},208,[4221,24595,4802],{"class":4723},[4221,24597,24598],{"class":4575},"Button\n",[4221,24600,24602,24605,24607],{"class":4223,"line":24601},209,[4221,24603,24604],{"class":4732},"          label",[4221,24606,4736],{"class":4532},[4221,24608,24609],{"class":4558},"\"Нова поїздка\"\n",[4221,24611,24613,24615,24617,24619,24621,24623],{"class":4223,"line":24612},210,[4221,24614,6838],{"class":4732},[4221,24616,4736],{"class":4532},[4221,24618,4739],{"class":4571},[4221,24620,6845],{"class":4756},[4221,24622,4766],{"class":4571},[4221,24624,4579],{"class":4756},[4221,24626,24628,24631,24633,24635,24637,24640],{"class":4223,"line":24627},211,[4221,24629,24630],{"class":4536},"            console",[4221,24632,3793],{"class":4756},[4221,24634,11856],{"class":4706},[4221,24636,4757],{"class":4756},[4221,24638,24639],{"class":4558},"'TODO: відкрити створення поїздки'",[4221,24641,8278],{"class":4756},[4221,24643,24645,24647],{"class":4223,"line":24644},212,[4221,24646,23647],{"class":4756},[4221,24648,4276],{"class":4571},[4221,24650,24652],{"class":4223,"line":24651},213,[4221,24653,24458],{"class":4723},[4221,24655,24657,24659,24661],{"class":4223,"line":24656},214,[4221,24658,5725],{"class":4723},[4221,24660,4147],{"class":4575},[4221,24662,4825],{"class":4723},[4221,24664,24666,24668,24670],{"class":4223,"line":24665},215,[4221,24667,6029],{"class":4723},[4221,24669,6233],{"class":4575},[4221,24671,4825],{"class":4723},[4221,24673,24675],{"class":4223,"line":24674},216,[4221,24676,4893],{"class":4532},[4221,24678,24680],{"class":4223,"line":24679},217,[4221,24681,4276],{"class":4532},[4221,24683,24685],{"class":4223,"line":24684},218,[4221,24686,4246],{"emptyLinePlaceholder":4245},[4221,24688,24690,24692,24694,24696,24698,24700,24702],{"class":4223,"line":24689},219,[4221,24691,4616],{"class":4571},[4221,24693,4908],{"class":4619},[4221,24695,4911],{"class":4532},[4221,24697,4549],{"class":4536},[4221,24699,3793],{"class":4532},[4221,24701,4918],{"class":4706},[4221,24703,4921],{"class":4532},[4221,24705,24707,24709],{"class":4223,"line":24706},220,[4221,24708,6071],{"class":4536},[4221,24710,4579],{"class":4532},[4221,24712,24714,24716,24718],{"class":4223,"line":24713},221,[4221,24715,7689],{"class":4536},[4221,24717,7215],{"class":4934},[4221,24719,5391],{"class":4532},[4221,24721,24723],{"class":4223,"line":24722},222,[4221,24724,6183],{"class":4532},[4221,24726,24728,24731],{"class":4223,"line":24727},223,[4221,24729,24730],{"class":4536},"  header:",[4221,24732,4579],{"class":4532},[4221,24734,24736,24739,24741],{"class":4223,"line":24735},224,[4221,24737,24738],{"class":4536},"    borderBottomWidth:",[4221,24740,5383],{"class":4934},[4221,24742,5391],{"class":4532},[4221,24744,24746],{"class":4223,"line":24745},225,[4221,24747,6183],{"class":4532},[4221,24749,24751,24754],{"class":4223,"line":24750},226,[4221,24752,24753],{"class":4536},"  themeRow:",[4221,24755,4579],{"class":4532},[4221,24757,24759,24761,24763],{"class":4223,"line":24758},227,[4221,24760,9912],{"class":4536},[4221,24762,7661],{"class":4558},[4221,24764,5391],{"class":4532},[4221,24766,24768,24771,24774],{"class":4223,"line":24767},228,[4221,24769,24770],{"class":4536},"    flexWrap:",[4221,24772,24773],{"class":4558}," 'wrap'",[4221,24775,5391],{"class":4532},[4221,24777,24779],{"class":4223,"line":24778},229,[4221,24780,6183],{"class":4532},[4221,24782,24784,24787],{"class":4223,"line":24783},230,[4221,24785,24786],{"class":4536},"  themeChip:",[4221,24788,4579],{"class":4532},[4221,24790,24792,24794,24796],{"class":4223,"line":24791},231,[4221,24793,7689],{"class":4536},[4221,24795,6164],{"class":4934},[4221,24797,5391],{"class":4532},[4221,24799,24801,24803,24805],{"class":4223,"line":24800},232,[4221,24802,7699],{"class":4536},[4221,24804,5701],{"class":4934},[4221,24806,5391],{"class":4532},[4221,24808,24810,24812,24814],{"class":4223,"line":24809},233,[4221,24811,6161],{"class":4536},[4221,24813,5701],{"class":4934},[4221,24815,5391],{"class":4532},[4221,24817,24819,24821,24823],{"class":4223,"line":24818},234,[4221,24820,6151],{"class":4536},[4221,24822,5383],{"class":4934},[4221,24824,5391],{"class":4532},[4221,24826,24828],{"class":4223,"line":24827},235,[4221,24829,6183],{"class":4532},[4221,24831,24833,24836],{"class":4223,"line":24832},236,[4221,24834,24835],{"class":4536},"  themeChipText:",[4221,24837,4579],{"class":4532},[4221,24839,24841,24844,24846],{"class":4223,"line":24840},237,[4221,24842,24843],{"class":4536},"    fontWeight:",[4221,24845,7538],{"class":4558},[4221,24847,5391],{"class":4532},[4221,24849,24851],{"class":4223,"line":24850},238,[4221,24852,6183],{"class":4532},[4221,24854,24856,24859],{"class":4223,"line":24855},239,[4221,24857,24858],{"class":4536},"  listWrap:",[4221,24860,4579],{"class":4532},[4221,24862,24864,24866,24868],{"class":4223,"line":24863},240,[4221,24865,7794],{"class":4536},[4221,24867,5383],{"class":4934},[4221,24869,5391],{"class":4532},[4221,24871,24873],{"class":4223,"line":24872},241,[4221,24874,6183],{"class":4532},[4221,24876,24878,24880],{"class":4223,"line":24877},242,[4221,24879,7786],{"class":4536},[4221,24881,4579],{"class":4532},[4221,24883,24885,24887,24889],{"class":4223,"line":24884},243,[4221,24886,7815],{"class":4536},[4221,24888,7405],{"class":4558},[4221,24890,5391],{"class":4532},[4221,24892,24894,24896,24898],{"class":4223,"line":24893},244,[4221,24895,7825],{"class":4536},[4221,24897,7405],{"class":4558},[4221,24899,5391],{"class":4532},[4221,24901,24903],{"class":4223,"line":24902},245,[4221,24904,6183],{"class":4532},[4221,24906,24908,24910],{"class":4223,"line":24907},246,[4221,24909,7859],{"class":4536},[4221,24911,4579],{"class":4532},[4221,24913,24915,24918,24920],{"class":4223,"line":24914},247,[4221,24916,24917],{"class":4536},"    textAlign:",[4221,24919,7405],{"class":4558},[4221,24921,5391],{"class":4532},[4221,24923,24925],{"class":4223,"line":24924},248,[4221,24926,6183],{"class":4532},[4221,24928,24930,24933],{"class":4223,"line":24929},249,[4221,24931,24932],{"class":4536},"  emptyDesc:",[4221,24934,4579],{"class":4532},[4221,24936,24938,24940,24942],{"class":4223,"line":24937},250,[4221,24939,24917],{"class":4536},[4221,24941,7405],{"class":4558},[4221,24943,5391],{"class":4532},[4221,24945,24947],{"class":4223,"line":24946},251,[4221,24948,6183],{"class":4532},[4221,24950,24952,24954],{"class":4223,"line":24951},252,[4221,24953,11562],{"class":4536},[4221,24955,4579],{"class":4532},[4221,24957,24959,24962,24964],{"class":4223,"line":24958},253,[4221,24960,24961],{"class":4536},"    borderTopWidth:",[4221,24963,5383],{"class":4934},[4221,24965,5391],{"class":4532},[4221,24967,24969],{"class":4223,"line":24968},254,[4221,24970,6183],{"class":4532},[4221,24972,24974],{"class":4223,"line":24973},255,[4221,24975,4985],{"class":4532},[4212,24977,24980],{"className":8091,"code":24978,"filename":24979,"language":8093,"meta":4217,"style":4217},"export { mockTrips } from '.\u002Fmodel\u002FmockTrips';\nexport { mockPlaces } from '.\u002Fmodel\u002FmockPlaces';\nexport type { Trip, Place } from '.\u002Fmodel\u002Ftypes';\nexport { TripCard } from '.\u002Fui\u002FTripCard';\nexport { PlaceChip } from '.\u002Fui\u002FPlaceChip';\n","src\u002Ffeatures\u002Ftrips\u002Findex.ts",[3750,24981,24982,24999,25016,25040,25057],{"__ignoreMap":4217},[4221,24983,24984,24986,24988,24990,24992,24994,24997],{"class":4223,"line":4224},[4221,24985,4700],{"class":4528},[4221,24987,4533],{"class":4532},[4221,24989,22341],{"class":4536},[4221,24991,4552],{"class":4532},[4221,24993,4555],{"class":4528},[4221,24995,24996],{"class":4558}," '.\u002Fmodel\u002FmockTrips'",[4221,24998,4562],{"class":4532},[4221,25000,25001,25003,25005,25007,25009,25011,25014],{"class":4223,"line":4230},[4221,25002,4700],{"class":4528},[4221,25004,4533],{"class":4532},[4221,25006,20936],{"class":4536},[4221,25008,4552],{"class":4532},[4221,25010,4555],{"class":4528},[4221,25012,25013],{"class":4558}," '.\u002Fmodel\u002FmockPlaces'",[4221,25015,4562],{"class":4532},[4221,25017,25018,25020,25023,25025,25027,25029,25031,25033,25035,25038],{"class":4223,"line":4236},[4221,25019,4700],{"class":4528},[4221,25021,25022],{"class":4528}," type",[4221,25024,4533],{"class":4532},[4221,25026,8270],{"class":4536},[4221,25028,3785],{"class":4532},[4221,25030,20932],{"class":4536},[4221,25032,4552],{"class":4532},[4221,25034,4555],{"class":4528},[4221,25036,25037],{"class":4558}," '.\u002Fmodel\u002Ftypes'",[4221,25039,4562],{"class":4532},[4221,25041,25042,25044,25046,25048,25050,25052,25055],{"class":4223,"line":4242},[4221,25043,4700],{"class":4528},[4221,25045,4533],{"class":4532},[4221,25047,14382],{"class":4536},[4221,25049,4552],{"class":4532},[4221,25051,4555],{"class":4528},[4221,25053,25054],{"class":4558}," '.\u002Fui\u002FTripCard'",[4221,25056,4562],{"class":4532},[4221,25058,25059,25061,25063,25065,25067,25069,25072],{"class":4223,"line":4249},[4221,25060,4700],{"class":4528},[4221,25062,4533],{"class":4532},[4221,25064,20940],{"class":4536},[4221,25066,4552],{"class":4532},[4221,25068,4555],{"class":4528},[4221,25070,25071],{"class":4558}," '.\u002Fui\u002FPlaceChip'",[4221,25073,4562],{"class":4532},[4212,25075,25078],{"className":8091,"code":25076,"filename":25077,"language":8093,"meta":4217,"style":4217},"import type { Place } from '.\u002Ftypes';\n\n\u002F** Місця всередині поїздок — для горизонтальної стрічки на home. *\u002F\nexport const mockPlaces: Place[] = [\n  {\n    id: 'p1',\n    tripId: '1',\n    name: 'Говерла',\n    city: 'Карпати',\n    note: 'Схід сонця з вершини',\n  },\n  {\n    id: 'p2',\n    tripId: '1',\n    name: 'Котедж біля полонини',\n    city: 'Карпати',\n    note: 'Вечірній чай і камін',\n  },\n  {\n    id: 'p3',\n    tripId: '2',\n    name: 'Площа Ринок',\n    city: 'Львів',\n    note: 'Ратуша й кав’ярні',\n  },\n  {\n    id: 'p4',\n    tripId: '2',\n    name: 'Високий Замок',\n    city: 'Львів',\n    note: 'Панорама міста',\n  },\n  {\n    id: 'p5',\n    tripId: '3',\n    name: 'Дерибасівська',\n    city: 'Одеса',\n    note: 'Прогулянка ввечері',\n  },\n  {\n    id: 'p6',\n    tripId: '3',\n    name: 'Ланжерон',\n    city: 'Одеса',\n    note: 'Пляж і набережна',\n  },\n  {\n    id: 'p7',\n    tripId: '4',\n    name: 'Андріївський узвіз',\n    city: 'Київ',\n    note: 'Галереї й бруківка',\n  },\n  {\n    id: 'p8',\n    tripId: '6',\n    name: 'Стара фортеця',\n    city: 'Кам’янець',\n    note: 'Фото з мосту',\n  },\n  {\n    id: 'p9',\n    tripId: '9',\n    name: 'Ужгородський замок',\n    city: 'Ужгород',\n    note: 'Музей і сад',\n  },\n  {\n    id: 'p10',\n    tripId: '12',\n    name: 'Водоспад Пробій',\n    city: 'Яремче',\n    note: 'Шум води й місток',\n  },\n];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FmockPlaces.ts",[3750,25079,25080,25099,25103,25108,25123,25127,25136,25145,25155,25165,25175,25179,25183,25192,25200,25209,25217,25226,25230,25234,25243,25251,25260,25269,25278,25282,25286,25295,25303,25312,25320,25329,25333,25337,25346,25354,25363,25372,25381,25385,25389,25398,25406,25415,25423,25432,25436,25440,25449,25457,25466,25475,25484,25488,25492,25501,25509,25518,25527,25536,25540,25544,25553,25562,25571,25580,25589,25593,25597,25606,25615,25624,25633,25642,25646],{"__ignoreMap":4217},[4221,25081,25082,25084,25086,25088,25090,25092,25094,25097],{"class":4223,"line":4224},[4221,25083,4529],{"class":4528},[4221,25085,25022],{"class":4528},[4221,25087,4533],{"class":4532},[4221,25089,20932],{"class":4536},[4221,25091,4552],{"class":4532},[4221,25093,4555],{"class":4528},[4221,25095,25096],{"class":4558}," '.\u002Ftypes'",[4221,25098,4562],{"class":4532},[4221,25100,25101],{"class":4223,"line":4230},[4221,25102,4246],{"emptyLinePlaceholder":4245},[4221,25104,25105],{"class":4223,"line":4236},[4221,25106,25107],{"class":6282},"\u002F** Місця всередині поїздок — для горизонтальної стрічки на home. *\u002F\n",[4221,25109,25110,25112,25114,25117,25119,25121],{"class":4223,"line":4242},[4221,25111,4700],{"class":4528},[4221,25113,16008],{"class":4571},[4221,25115,25116],{"class":4619}," mockPlaces",[4221,25118,4587],{"class":4532},[4221,25120,20932],{"class":4575},[4221,25122,4628],{"class":4532},[4221,25124,25125],{"class":4223,"line":4249},[4221,25126,12374],{"class":4532},[4221,25128,25129,25131,25134],{"class":4223,"line":4255},[4221,25130,8902],{"class":4536},[4221,25132,25133],{"class":4558}," 'p1'",[4221,25135,5391],{"class":4532},[4221,25137,25138,25141,25143],{"class":4223,"line":4261},[4221,25139,25140],{"class":4536},"    tripId:",[4221,25142,12948],{"class":4558},[4221,25144,5391],{"class":4532},[4221,25146,25147,25150,25153],{"class":4223,"line":4267},[4221,25148,25149],{"class":4536},"    name:",[4221,25151,25152],{"class":4558}," 'Говерла'",[4221,25154,5391],{"class":4532},[4221,25156,25157,25160,25163],{"class":4223,"line":4273},[4221,25158,25159],{"class":4536},"    city:",[4221,25161,25162],{"class":4558}," 'Карпати'",[4221,25164,5391],{"class":4532},[4221,25166,25167,25170,25173],{"class":4223,"line":4279},[4221,25168,25169],{"class":4536},"    note:",[4221,25171,25172],{"class":4558}," 'Схід сонця з вершини'",[4221,25174,5391],{"class":4532},[4221,25176,25177],{"class":4223,"line":4284},[4221,25178,6183],{"class":4532},[4221,25180,25181],{"class":4223,"line":4290},[4221,25182,12374],{"class":4532},[4221,25184,25185,25187,25190],{"class":4223,"line":4296},[4221,25186,8902],{"class":4536},[4221,25188,25189],{"class":4558}," 'p2'",[4221,25191,5391],{"class":4532},[4221,25193,25194,25196,25198],{"class":4223,"line":4302},[4221,25195,25140],{"class":4536},[4221,25197,12948],{"class":4558},[4221,25199,5391],{"class":4532},[4221,25201,25202,25204,25207],{"class":4223,"line":4308},[4221,25203,25149],{"class":4536},[4221,25205,25206],{"class":4558}," 'Котедж біля полонини'",[4221,25208,5391],{"class":4532},[4221,25210,25211,25213,25215],{"class":4223,"line":4314},[4221,25212,25159],{"class":4536},[4221,25214,25162],{"class":4558},[4221,25216,5391],{"class":4532},[4221,25218,25219,25221,25224],{"class":4223,"line":4319},[4221,25220,25169],{"class":4536},[4221,25222,25223],{"class":4558}," 'Вечірній чай і камін'",[4221,25225,5391],{"class":4532},[4221,25227,25228],{"class":4223,"line":4324},[4221,25229,6183],{"class":4532},[4221,25231,25232],{"class":4223,"line":4330},[4221,25233,12374],{"class":4532},[4221,25235,25236,25238,25241],{"class":4223,"line":4336},[4221,25237,8902],{"class":4536},[4221,25239,25240],{"class":4558}," 'p3'",[4221,25242,5391],{"class":4532},[4221,25244,25245,25247,25249],{"class":4223,"line":4342},[4221,25246,25140],{"class":4536},[4221,25248,12972],{"class":4558},[4221,25250,5391],{"class":4532},[4221,25252,25253,25255,25258],{"class":4223,"line":4348},[4221,25254,25149],{"class":4536},[4221,25256,25257],{"class":4558}," 'Площа Ринок'",[4221,25259,5391],{"class":4532},[4221,25261,25262,25264,25267],{"class":4223,"line":4354},[4221,25263,25159],{"class":4536},[4221,25265,25266],{"class":4558}," 'Львів'",[4221,25268,5391],{"class":4532},[4221,25270,25271,25273,25276],{"class":4223,"line":4360},[4221,25272,25169],{"class":4536},[4221,25274,25275],{"class":4558}," 'Ратуша й кав’ярні'",[4221,25277,5391],{"class":4532},[4221,25279,25280],{"class":4223,"line":4365},[4221,25281,6183],{"class":4532},[4221,25283,25284],{"class":4223,"line":4371},[4221,25285,12374],{"class":4532},[4221,25287,25288,25290,25293],{"class":4223,"line":4377},[4221,25289,8902],{"class":4536},[4221,25291,25292],{"class":4558}," 'p4'",[4221,25294,5391],{"class":4532},[4221,25296,25297,25299,25301],{"class":4223,"line":4383},[4221,25298,25140],{"class":4536},[4221,25300,12972],{"class":4558},[4221,25302,5391],{"class":4532},[4221,25304,25305,25307,25310],{"class":4223,"line":4389},[4221,25306,25149],{"class":4536},[4221,25308,25309],{"class":4558}," 'Високий Замок'",[4221,25311,5391],{"class":4532},[4221,25313,25314,25316,25318],{"class":4223,"line":4395},[4221,25315,25159],{"class":4536},[4221,25317,25266],{"class":4558},[4221,25319,5391],{"class":4532},[4221,25321,25322,25324,25327],{"class":4223,"line":4400},[4221,25323,25169],{"class":4536},[4221,25325,25326],{"class":4558}," 'Панорама міста'",[4221,25328,5391],{"class":4532},[4221,25330,25331],{"class":4223,"line":4405},[4221,25332,6183],{"class":4532},[4221,25334,25335],{"class":4223,"line":5860},[4221,25336,12374],{"class":4532},[4221,25338,25339,25341,25344],{"class":4223,"line":5873},[4221,25340,8902],{"class":4536},[4221,25342,25343],{"class":4558}," 'p5'",[4221,25345,5391],{"class":4532},[4221,25347,25348,25350,25352],{"class":4223,"line":5891},[4221,25349,25140],{"class":4536},[4221,25351,12997],{"class":4558},[4221,25353,5391],{"class":4532},[4221,25355,25356,25358,25361],{"class":4223,"line":5899},[4221,25357,25149],{"class":4536},[4221,25359,25360],{"class":4558}," 'Дерибасівська'",[4221,25362,5391],{"class":4532},[4221,25364,25365,25367,25370],{"class":4223,"line":5905},[4221,25366,25159],{"class":4536},[4221,25368,25369],{"class":4558}," 'Одеса'",[4221,25371,5391],{"class":4532},[4221,25373,25374,25376,25379],{"class":4223,"line":5955},[4221,25375,25169],{"class":4536},[4221,25377,25378],{"class":4558}," 'Прогулянка ввечері'",[4221,25380,5391],{"class":4532},[4221,25382,25383],{"class":4223,"line":6002},[4221,25384,6183],{"class":4532},[4221,25386,25387],{"class":4223,"line":6012},[4221,25388,12374],{"class":4532},[4221,25390,25391,25393,25396],{"class":4223,"line":6020},[4221,25392,8902],{"class":4536},[4221,25394,25395],{"class":4558}," 'p6'",[4221,25397,5391],{"class":4532},[4221,25399,25400,25402,25404],{"class":4223,"line":6026},[4221,25401,25140],{"class":4536},[4221,25403,12997],{"class":4558},[4221,25405,5391],{"class":4532},[4221,25407,25408,25410,25413],{"class":4223,"line":6036},[4221,25409,25149],{"class":4536},[4221,25411,25412],{"class":4558}," 'Ланжерон'",[4221,25414,5391],{"class":4532},[4221,25416,25417,25419,25421],{"class":4223,"line":6041},[4221,25418,25159],{"class":4536},[4221,25420,25369],{"class":4558},[4221,25422,5391],{"class":4532},[4221,25424,25425,25427,25430],{"class":4223,"line":6046},[4221,25426,25169],{"class":4536},[4221,25428,25429],{"class":4558}," 'Пляж і набережна'",[4221,25431,5391],{"class":4532},[4221,25433,25434],{"class":4223,"line":6051},[4221,25435,6183],{"class":4532},[4221,25437,25438],{"class":4223,"line":6068},[4221,25439,12374],{"class":4532},[4221,25441,25442,25444,25447],{"class":4223,"line":6097},[4221,25443,8902],{"class":4536},[4221,25445,25446],{"class":4558}," 'p7'",[4221,25448,5391],{"class":4532},[4221,25450,25451,25453,25455],{"class":4223,"line":6126},[4221,25452,25140],{"class":4536},[4221,25454,13048],{"class":4558},[4221,25456,5391],{"class":4532},[4221,25458,25459,25461,25464],{"class":4223,"line":6140},[4221,25460,25149],{"class":4536},[4221,25462,25463],{"class":4558}," 'Андріївський узвіз'",[4221,25465,5391],{"class":4532},[4221,25467,25468,25470,25473],{"class":4223,"line":6148},[4221,25469,25159],{"class":4536},[4221,25471,25472],{"class":4558}," 'Київ'",[4221,25474,5391],{"class":4532},[4221,25476,25477,25479,25482],{"class":4223,"line":6158},[4221,25478,25169],{"class":4536},[4221,25480,25481],{"class":4558}," 'Галереї й бруківка'",[4221,25483,5391],{"class":4532},[4221,25485,25486],{"class":4223,"line":6169},[4221,25487,6183],{"class":4532},[4221,25489,25490],{"class":4223,"line":6180},[4221,25491,12374],{"class":4532},[4221,25493,25494,25496,25499],{"class":4223,"line":6186},[4221,25495,8902],{"class":4536},[4221,25497,25498],{"class":4558}," 'p8'",[4221,25500,5391],{"class":4532},[4221,25502,25503,25505,25507],{"class":4223,"line":6212},[4221,25504,25140],{"class":4536},[4221,25506,13124],{"class":4558},[4221,25508,5391],{"class":4532},[4221,25510,25511,25513,25516],{"class":4223,"line":7314},[4221,25512,25149],{"class":4536},[4221,25514,25515],{"class":4558}," 'Стара фортеця'",[4221,25517,5391],{"class":4532},[4221,25519,25520,25522,25525],{"class":4223,"line":7338},[4221,25521,25159],{"class":4536},[4221,25523,25524],{"class":4558}," 'Кам’янець'",[4221,25526,5391],{"class":4532},[4221,25528,25529,25531,25534],{"class":4223,"line":7381},[4221,25530,25169],{"class":4536},[4221,25532,25533],{"class":4558}," 'Фото з мосту'",[4221,25535,5391],{"class":4532},[4221,25537,25538],{"class":4223,"line":7421},[4221,25539,6183],{"class":4532},[4221,25541,25542],{"class":4223,"line":7427},[4221,25543,12374],{"class":4532},[4221,25545,25546,25548,25551],{"class":4223,"line":7433},[4221,25547,8902],{"class":4536},[4221,25549,25550],{"class":4558}," 'p9'",[4221,25552,5391],{"class":4532},[4221,25554,25555,25557,25560],{"class":4223,"line":7443},[4221,25556,25140],{"class":4536},[4221,25558,25559],{"class":4558}," '9'",[4221,25561,5391],{"class":4532},[4221,25563,25564,25566,25569],{"class":4223,"line":7452},[4221,25565,25149],{"class":4536},[4221,25567,25568],{"class":4558}," 'Ужгородський замок'",[4221,25570,5391],{"class":4532},[4221,25572,25573,25575,25578],{"class":4223,"line":7457},[4221,25574,25159],{"class":4536},[4221,25576,25577],{"class":4558}," 'Ужгород'",[4221,25579,5391],{"class":4532},[4221,25581,25582,25584,25587],{"class":4223,"line":7476},[4221,25583,25169],{"class":4536},[4221,25585,25586],{"class":4558}," 'Музей і сад'",[4221,25588,5391],{"class":4532},[4221,25590,25591],{"class":4223,"line":7515},[4221,25592,6183],{"class":4532},[4221,25594,25595],{"class":4223,"line":7563},[4221,25596,12374],{"class":4532},[4221,25598,25599,25601,25604],{"class":4223,"line":7572},[4221,25600,8902],{"class":4536},[4221,25602,25603],{"class":4558}," 'p10'",[4221,25605,5391],{"class":4532},[4221,25607,25608,25610,25613],{"class":4223,"line":7579},[4221,25609,25140],{"class":4536},[4221,25611,25612],{"class":4558}," '12'",[4221,25614,5391],{"class":4532},[4221,25616,25617,25619,25622],{"class":4223,"line":7584},[4221,25618,25149],{"class":4536},[4221,25620,25621],{"class":4558}," 'Водоспад Пробій'",[4221,25623,5391],{"class":4532},[4221,25625,25626,25628,25631],{"class":4223,"line":7593},[4221,25627,25159],{"class":4536},[4221,25629,25630],{"class":4558}," 'Яремче'",[4221,25632,5391],{"class":4532},[4221,25634,25635,25637,25640],{"class":4223,"line":7598},[4221,25636,25169],{"class":4536},[4221,25638,25639],{"class":4558}," 'Шум води й місток'",[4221,25641,5391],{"class":4532},[4221,25643,25644],{"class":4223,"line":7603},[4221,25645,6183],{"class":4532},[4221,25647,25648],{"class":4223,"line":7608},[4221,25649,4691],{"class":4532},[4212,25651,25654],{"className":8091,"code":25652,"filename":25653,"language":8093,"meta":4217,"style":4217},"import type { Trip } from '.\u002Ftypes';\n\n\u002F**\n * Mock-стрічка поїздок. Більше за 3–5 елементів — щоб віртуалізація\n * (FlashList \u002F FlatList) мала сенс на домашньому екрані.\n *\u002F\nexport const mockTrips: Trip[] = [\n  {\n    id: '1',\n    title: 'Карпати на вихідні',\n    dateLabel: '12–14 бер. 2026',\n    description: 'Говерла, полонини й вечірній чай біля каміну в котеджі.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80',\n    region: 'Карпати',\n  },\n  {\n    id: '2',\n    title: 'Львівський вікенд',\n    dateLabel: '2–4 трав. 2026',\n    description: 'Кава, площа Ринок, закапелки й нічний трамвай.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '3',\n    title: 'Одеса біля моря',\n    dateLabel: '18–22 лип. 2026',\n    description: 'Схід сонця на набережній, рибний ринок і вечірній Привоз.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80',\n    region: 'Південь',\n  },\n  {\n    id: '4',\n    title: 'Київ на три дні',\n    dateLabel: '5–7 черв. 2026',\n    description: 'Поділ, Андріївський узвіз, вечірня прогулянка Хрещатиком.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1565008576549-57569a49371d?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '5',\n    title: 'Чернівці: університет і дворики',\n    dateLabel: '20–22 вер. 2026',\n    description: 'Резиденція митрополитів, кава на Кобилянській, нічний двір.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1519681393784-d120267933ba?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '6',\n    title: 'Кам’янець-Подільський',\n    dateLabel: '11–13 квіт. 2026',\n    description: 'Фортеця, каньйон Смотрича, захід сонця з оглядового майданчика.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1506905925346-21bda4d32df4?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '7',\n    title: 'Харків: місто й парки',\n    dateLabel: '8–10 серп. 2026',\n    description: 'Саржин яр, набережна, вечірні вогні Сумської.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1449824913935-59a10b8d2000?w=800&q=80',\n    region: 'Схід',\n  },\n  {\n    id: '8',\n    title: 'Дніпро: мости й пагорби',\n    dateLabel: '15–17 трав. 2026',\n    description: 'Мереживо мостів, прогулянка набережною, кава з видом на річку.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1476514525535-07fb3b4ae5f1?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '9',\n    title: 'Ужгород і виноград',\n    dateLabel: '25–27 жовт. 2026',\n    description: 'Замок, липова алея, дегустація біля місцевих виноробів.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1500530855697-b586d89ba3ee?w=800&q=80',\n    region: 'Карпати',\n  },\n  {\n    id: '10',\n    title: 'Полтава: смаки й історія',\n    dateLabel: '3–5 лип. 2026',\n    description: 'Котлета по-київськи — ні, галушки; музей і тихі двори.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1469474968028-56623f02e42e?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '11',\n    title: 'Затока: пісок і шторм',\n    dateLabel: '1–7 серп. 2026',\n    description: 'Ранкові купання, вечірній вітер, книжка під парасолькою.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=600&q=80',\n    region: 'Південь',\n  },\n  {\n    id: '12',\n    title: 'Яремче: водоспад і ліс',\n    dateLabel: '19–21 черв. 2026',\n    description: 'Прогулянка до водоспаду, гуцульська кухня, туман над смереками.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1441974231531-c6227db76b6e?w=800&q=80',\n    region: 'Карпати',\n  },\n];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FmockTrips.ts",[3750,25655,25656,25674,25678,25683,25688,25693,25698,25713,25717,25725,25734,25744,25754,25759,25766,25775,25779,25783,25791,25800,25809,25818,25822,25829,25838,25842,25846,25854,25863,25872,25881,25885,25892,25901,25905,25909,25917,25926,25935,25944,25948,25955,25964,25968,25972,25980,25989,25998,26007,26011,26018,26026,26030,26034,26042,26051,26060,26069,26073,26080,26088,26092,26096,26104,26113,26122,26131,26135,26142,26151,26155,26159,26167,26176,26185,26194,26198,26205,26213,26217,26221,26229,26238,26247,26256,26260,26267,26275,26279,26283,26292,26301,26310,26319,26323,26330,26338,26342,26346,26355,26364,26373,26382,26386,26393,26401,26405,26409,26417,26426,26435,26444,26448,26455,26463,26467],{"__ignoreMap":4217},[4221,25657,25658,25660,25662,25664,25666,25668,25670,25672],{"class":4223,"line":4224},[4221,25659,4529],{"class":4528},[4221,25661,25022],{"class":4528},[4221,25663,4533],{"class":4532},[4221,25665,8270],{"class":4536},[4221,25667,4552],{"class":4532},[4221,25669,4555],{"class":4528},[4221,25671,25096],{"class":4558},[4221,25673,4562],{"class":4532},[4221,25675,25676],{"class":4223,"line":4230},[4221,25677,4246],{"emptyLinePlaceholder":4245},[4221,25679,25680],{"class":4223,"line":4236},[4221,25681,25682],{"class":6282},"\u002F**\n",[4221,25684,25685],{"class":4223,"line":4242},[4221,25686,25687],{"class":6282}," * Mock-стрічка поїздок. Більше за 3–5 елементів — щоб віртуалізація\n",[4221,25689,25690],{"class":4223,"line":4249},[4221,25691,25692],{"class":6282}," * (FlashList \u002F FlatList) мала сенс на домашньому екрані.\n",[4221,25694,25695],{"class":4223,"line":4255},[4221,25696,25697],{"class":6282}," *\u002F\n",[4221,25699,25700,25702,25704,25707,25709,25711],{"class":4223,"line":4261},[4221,25701,4700],{"class":4528},[4221,25703,16008],{"class":4571},[4221,25705,25706],{"class":4619}," mockTrips",[4221,25708,4587],{"class":4532},[4221,25710,8270],{"class":4575},[4221,25712,4628],{"class":4532},[4221,25714,25715],{"class":4223,"line":4267},[4221,25716,12374],{"class":4532},[4221,25718,25719,25721,25723],{"class":4223,"line":4273},[4221,25720,8902],{"class":4536},[4221,25722,12948],{"class":4558},[4221,25724,5391],{"class":4532},[4221,25726,25727,25729,25732],{"class":4223,"line":4279},[4221,25728,8929],{"class":4536},[4221,25730,25731],{"class":4558}," 'Карпати на вихідні'",[4221,25733,5391],{"class":4532},[4221,25735,25736,25739,25742],{"class":4223,"line":4284},[4221,25737,25738],{"class":4536},"    dateLabel:",[4221,25740,25741],{"class":4558}," '12–14 бер. 2026'",[4221,25743,5391],{"class":4532},[4221,25745,25746,25749,25752],{"class":4223,"line":4290},[4221,25747,25748],{"class":4536},"    description:",[4221,25750,25751],{"class":4558}," 'Говерла, полонини й вечірній чай біля каміну в котеджі.'",[4221,25753,5391],{"class":4532},[4221,25755,25756],{"class":4223,"line":4296},[4221,25757,25758],{"class":4536},"    coverUri:\n",[4221,25760,25761,25764],{"class":4223,"line":4302},[4221,25762,25763],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80'",[4221,25765,5391],{"class":4532},[4221,25767,25768,25771,25773],{"class":4223,"line":4308},[4221,25769,25770],{"class":4536},"    region:",[4221,25772,25162],{"class":4558},[4221,25774,5391],{"class":4532},[4221,25776,25777],{"class":4223,"line":4314},[4221,25778,6183],{"class":4532},[4221,25780,25781],{"class":4223,"line":4319},[4221,25782,12374],{"class":4532},[4221,25784,25785,25787,25789],{"class":4223,"line":4324},[4221,25786,8902],{"class":4536},[4221,25788,12972],{"class":4558},[4221,25790,5391],{"class":4532},[4221,25792,25793,25795,25798],{"class":4223,"line":4330},[4221,25794,8929],{"class":4536},[4221,25796,25797],{"class":4558}," 'Львівський вікенд'",[4221,25799,5391],{"class":4532},[4221,25801,25802,25804,25807],{"class":4223,"line":4336},[4221,25803,25738],{"class":4536},[4221,25805,25806],{"class":4558}," '2–4 трав. 2026'",[4221,25808,5391],{"class":4532},[4221,25810,25811,25813,25816],{"class":4223,"line":4342},[4221,25812,25748],{"class":4536},[4221,25814,25815],{"class":4558}," 'Кава, площа Ринок, закапелки й нічний трамвай.'",[4221,25817,5391],{"class":4532},[4221,25819,25820],{"class":4223,"line":4348},[4221,25821,25758],{"class":4536},[4221,25823,25824,25827],{"class":4223,"line":4354},[4221,25825,25826],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80'",[4221,25828,5391],{"class":4532},[4221,25830,25831,25833,25836],{"class":4223,"line":4360},[4221,25832,25770],{"class":4536},[4221,25834,25835],{"class":4558}," 'Захід'",[4221,25837,5391],{"class":4532},[4221,25839,25840],{"class":4223,"line":4365},[4221,25841,6183],{"class":4532},[4221,25843,25844],{"class":4223,"line":4371},[4221,25845,12374],{"class":4532},[4221,25847,25848,25850,25852],{"class":4223,"line":4377},[4221,25849,8902],{"class":4536},[4221,25851,12997],{"class":4558},[4221,25853,5391],{"class":4532},[4221,25855,25856,25858,25861],{"class":4223,"line":4383},[4221,25857,8929],{"class":4536},[4221,25859,25860],{"class":4558}," 'Одеса біля моря'",[4221,25862,5391],{"class":4532},[4221,25864,25865,25867,25870],{"class":4223,"line":4389},[4221,25866,25738],{"class":4536},[4221,25868,25869],{"class":4558}," '18–22 лип. 2026'",[4221,25871,5391],{"class":4532},[4221,25873,25874,25876,25879],{"class":4223,"line":4395},[4221,25875,25748],{"class":4536},[4221,25877,25878],{"class":4558}," 'Схід сонця на набережній, рибний ринок і вечірній Привоз.'",[4221,25880,5391],{"class":4532},[4221,25882,25883],{"class":4223,"line":4400},[4221,25884,25758],{"class":4536},[4221,25886,25887,25890],{"class":4223,"line":4405},[4221,25888,25889],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80'",[4221,25891,5391],{"class":4532},[4221,25893,25894,25896,25899],{"class":4223,"line":5860},[4221,25895,25770],{"class":4536},[4221,25897,25898],{"class":4558}," 'Південь'",[4221,25900,5391],{"class":4532},[4221,25902,25903],{"class":4223,"line":5873},[4221,25904,6183],{"class":4532},[4221,25906,25907],{"class":4223,"line":5891},[4221,25908,12374],{"class":4532},[4221,25910,25911,25913,25915],{"class":4223,"line":5899},[4221,25912,8902],{"class":4536},[4221,25914,13048],{"class":4558},[4221,25916,5391],{"class":4532},[4221,25918,25919,25921,25924],{"class":4223,"line":5905},[4221,25920,8929],{"class":4536},[4221,25922,25923],{"class":4558}," 'Київ на три дні'",[4221,25925,5391],{"class":4532},[4221,25927,25928,25930,25933],{"class":4223,"line":5955},[4221,25929,25738],{"class":4536},[4221,25931,25932],{"class":4558}," '5–7 черв. 2026'",[4221,25934,5391],{"class":4532},[4221,25936,25937,25939,25942],{"class":4223,"line":6002},[4221,25938,25748],{"class":4536},[4221,25940,25941],{"class":4558}," 'Поділ, Андріївський узвіз, вечірня прогулянка Хрещатиком.'",[4221,25943,5391],{"class":4532},[4221,25945,25946],{"class":4223,"line":6012},[4221,25947,25758],{"class":4536},[4221,25949,25950,25953],{"class":4223,"line":6020},[4221,25951,25952],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1565008576549-57569a49371d?w=800&q=80'",[4221,25954,5391],{"class":4532},[4221,25956,25957,25959,25962],{"class":4223,"line":6026},[4221,25958,25770],{"class":4536},[4221,25960,25961],{"class":4558}," 'Центр'",[4221,25963,5391],{"class":4532},[4221,25965,25966],{"class":4223,"line":6036},[4221,25967,6183],{"class":4532},[4221,25969,25970],{"class":4223,"line":6041},[4221,25971,12374],{"class":4532},[4221,25973,25974,25976,25978],{"class":4223,"line":6046},[4221,25975,8902],{"class":4536},[4221,25977,13072],{"class":4558},[4221,25979,5391],{"class":4532},[4221,25981,25982,25984,25987],{"class":4223,"line":6051},[4221,25983,8929],{"class":4536},[4221,25985,25986],{"class":4558}," 'Чернівці: університет і дворики'",[4221,25988,5391],{"class":4532},[4221,25990,25991,25993,25996],{"class":4223,"line":6068},[4221,25992,25738],{"class":4536},[4221,25994,25995],{"class":4558}," '20–22 вер. 2026'",[4221,25997,5391],{"class":4532},[4221,25999,26000,26002,26005],{"class":4223,"line":6097},[4221,26001,25748],{"class":4536},[4221,26003,26004],{"class":4558}," 'Резиденція митрополитів, кава на Кобилянській, нічний двір.'",[4221,26006,5391],{"class":4532},[4221,26008,26009],{"class":4223,"line":6126},[4221,26010,25758],{"class":4536},[4221,26012,26013,26016],{"class":4223,"line":6140},[4221,26014,26015],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1519681393784-d120267933ba?w=800&q=80'",[4221,26017,5391],{"class":4532},[4221,26019,26020,26022,26024],{"class":4223,"line":6148},[4221,26021,25770],{"class":4536},[4221,26023,25835],{"class":4558},[4221,26025,5391],{"class":4532},[4221,26027,26028],{"class":4223,"line":6158},[4221,26029,6183],{"class":4532},[4221,26031,26032],{"class":4223,"line":6169},[4221,26033,12374],{"class":4532},[4221,26035,26036,26038,26040],{"class":4223,"line":6180},[4221,26037,8902],{"class":4536},[4221,26039,13124],{"class":4558},[4221,26041,5391],{"class":4532},[4221,26043,26044,26046,26049],{"class":4223,"line":6186},[4221,26045,8929],{"class":4536},[4221,26047,26048],{"class":4558}," 'Кам’янець-Подільський'",[4221,26050,5391],{"class":4532},[4221,26052,26053,26055,26058],{"class":4223,"line":6212},[4221,26054,25738],{"class":4536},[4221,26056,26057],{"class":4558}," '11–13 квіт. 2026'",[4221,26059,5391],{"class":4532},[4221,26061,26062,26064,26067],{"class":4223,"line":7314},[4221,26063,25748],{"class":4536},[4221,26065,26066],{"class":4558}," 'Фортеця, каньйон Смотрича, захід сонця з оглядового майданчика.'",[4221,26068,5391],{"class":4532},[4221,26070,26071],{"class":4223,"line":7338},[4221,26072,25758],{"class":4536},[4221,26074,26075,26078],{"class":4223,"line":7381},[4221,26076,26077],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1506905925346-21bda4d32df4?w=800&q=80'",[4221,26079,5391],{"class":4532},[4221,26081,26082,26084,26086],{"class":4223,"line":7421},[4221,26083,25770],{"class":4536},[4221,26085,25835],{"class":4558},[4221,26087,5391],{"class":4532},[4221,26089,26090],{"class":4223,"line":7427},[4221,26091,6183],{"class":4532},[4221,26093,26094],{"class":4223,"line":7433},[4221,26095,12374],{"class":4532},[4221,26097,26098,26100,26102],{"class":4223,"line":7443},[4221,26099,8902],{"class":4536},[4221,26101,13149],{"class":4558},[4221,26103,5391],{"class":4532},[4221,26105,26106,26108,26111],{"class":4223,"line":7452},[4221,26107,8929],{"class":4536},[4221,26109,26110],{"class":4558}," 'Харків: місто й парки'",[4221,26112,5391],{"class":4532},[4221,26114,26115,26117,26120],{"class":4223,"line":7457},[4221,26116,25738],{"class":4536},[4221,26118,26119],{"class":4558}," '8–10 серп. 2026'",[4221,26121,5391],{"class":4532},[4221,26123,26124,26126,26129],{"class":4223,"line":7476},[4221,26125,25748],{"class":4536},[4221,26127,26128],{"class":4558}," 'Саржин яр, набережна, вечірні вогні Сумської.'",[4221,26130,5391],{"class":4532},[4221,26132,26133],{"class":4223,"line":7515},[4221,26134,25758],{"class":4536},[4221,26136,26137,26140],{"class":4223,"line":7563},[4221,26138,26139],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1449824913935-59a10b8d2000?w=800&q=80'",[4221,26141,5391],{"class":4532},[4221,26143,26144,26146,26149],{"class":4223,"line":7572},[4221,26145,25770],{"class":4536},[4221,26147,26148],{"class":4558}," 'Схід'",[4221,26150,5391],{"class":4532},[4221,26152,26153],{"class":4223,"line":7579},[4221,26154,6183],{"class":4532},[4221,26156,26157],{"class":4223,"line":7584},[4221,26158,12374],{"class":4532},[4221,26160,26161,26163,26165],{"class":4223,"line":7593},[4221,26162,8902],{"class":4536},[4221,26164,13174],{"class":4558},[4221,26166,5391],{"class":4532},[4221,26168,26169,26171,26174],{"class":4223,"line":7598},[4221,26170,8929],{"class":4536},[4221,26172,26173],{"class":4558}," 'Дніпро: мости й пагорби'",[4221,26175,5391],{"class":4532},[4221,26177,26178,26180,26183],{"class":4223,"line":7603},[4221,26179,25738],{"class":4536},[4221,26181,26182],{"class":4558}," '15–17 трав. 2026'",[4221,26184,5391],{"class":4532},[4221,26186,26187,26189,26192],{"class":4223,"line":7608},[4221,26188,25748],{"class":4536},[4221,26190,26191],{"class":4558}," 'Мереживо мостів, прогулянка набережною, кава з видом на річку.'",[4221,26193,5391],{"class":4532},[4221,26195,26196],{"class":4223,"line":7625},[4221,26197,25758],{"class":4536},[4221,26199,26200,26203],{"class":4223,"line":7650},[4221,26201,26202],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1476514525535-07fb3b4ae5f1?w=800&q=80'",[4221,26204,5391],{"class":4532},[4221,26206,26207,26209,26211],{"class":4223,"line":7678},[4221,26208,25770],{"class":4536},[4221,26210,25961],{"class":4558},[4221,26212,5391],{"class":4532},[4221,26214,26215],{"class":4223,"line":7686},[4221,26216,6183],{"class":4532},[4221,26218,26219],{"class":4223,"line":7696},[4221,26220,12374],{"class":4532},[4221,26222,26223,26225,26227],{"class":4223,"line":7707},[4221,26224,8902],{"class":4536},[4221,26226,25559],{"class":4558},[4221,26228,5391],{"class":4532},[4221,26230,26231,26233,26236],{"class":4223,"line":7716},[4221,26232,8929],{"class":4536},[4221,26234,26235],{"class":4558}," 'Ужгород і виноград'",[4221,26237,5391],{"class":4532},[4221,26239,26240,26242,26245],{"class":4223,"line":7721},[4221,26241,25738],{"class":4536},[4221,26243,26244],{"class":4558}," '25–27 жовт. 2026'",[4221,26246,5391],{"class":4532},[4221,26248,26249,26251,26254],{"class":4223,"line":7742},[4221,26250,25748],{"class":4536},[4221,26252,26253],{"class":4558}," 'Замок, липова алея, дегустація біля місцевих виноробів.'",[4221,26255,5391],{"class":4532},[4221,26257,26258],{"class":4223,"line":7768},[4221,26259,25758],{"class":4536},[4221,26261,26262,26265],{"class":4223,"line":7783},[4221,26263,26264],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1500530855697-b586d89ba3ee?w=800&q=80'",[4221,26266,5391],{"class":4532},[4221,26268,26269,26271,26273],{"class":4223,"line":7791},[4221,26270,25770],{"class":4536},[4221,26272,25162],{"class":4558},[4221,26274,5391],{"class":4532},[4221,26276,26277],{"class":4223,"line":7801},[4221,26278,6183],{"class":4532},[4221,26280,26281],{"class":4223,"line":7812},[4221,26282,12374],{"class":4532},[4221,26284,26285,26287,26290],{"class":4223,"line":7822},[4221,26286,8902],{"class":4536},[4221,26288,26289],{"class":4558}," '10'",[4221,26291,5391],{"class":4532},[4221,26293,26294,26296,26299],{"class":4223,"line":7832},[4221,26295,8929],{"class":4536},[4221,26297,26298],{"class":4558}," 'Полтава: смаки й історія'",[4221,26300,5391],{"class":4532},[4221,26302,26303,26305,26308],{"class":4223,"line":7842},[4221,26304,25738],{"class":4536},[4221,26306,26307],{"class":4558}," '3–5 лип. 2026'",[4221,26309,5391],{"class":4532},[4221,26311,26312,26314,26317],{"class":4223,"line":7851},[4221,26313,25748],{"class":4536},[4221,26315,26316],{"class":4558}," 'Котлета по-київськи — ні, галушки; музей і тихі двори.'",[4221,26318,5391],{"class":4532},[4221,26320,26321],{"class":4223,"line":7856},[4221,26322,25758],{"class":4536},[4221,26324,26325,26328],{"class":4223,"line":7876},[4221,26326,26327],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1469474968028-56623f02e42e?w=800&q=80'",[4221,26329,5391],{"class":4532},[4221,26331,26332,26334,26336],{"class":4223,"line":7883},[4221,26333,25770],{"class":4536},[4221,26335,25961],{"class":4558},[4221,26337,5391],{"class":4532},[4221,26339,26340],{"class":4223,"line":7892},[4221,26341,6183],{"class":4532},[4221,26343,26344],{"class":4223,"line":7901},[4221,26345,12374],{"class":4532},[4221,26347,26348,26350,26353],{"class":4223,"line":7910},[4221,26349,8902],{"class":4536},[4221,26351,26352],{"class":4558}," '11'",[4221,26354,5391],{"class":4532},[4221,26356,26357,26359,26362],{"class":4223,"line":7915},[4221,26358,8929],{"class":4536},[4221,26360,26361],{"class":4558}," 'Затока: пісок і шторм'",[4221,26363,5391],{"class":4532},[4221,26365,26366,26368,26371],{"class":4223,"line":17209},[4221,26367,25738],{"class":4536},[4221,26369,26370],{"class":4558}," '1–7 серп. 2026'",[4221,26372,5391],{"class":4532},[4221,26374,26375,26377,26380],{"class":4223,"line":17218},[4221,26376,25748],{"class":4536},[4221,26378,26379],{"class":4558}," 'Ранкові купання, вечірній вітер, книжка під парасолькою.'",[4221,26381,5391],{"class":4532},[4221,26383,26384],{"class":4223,"line":17248},[4221,26385,25758],{"class":4536},[4221,26387,26388,26391],{"class":4223,"line":17253},[4221,26389,26390],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=600&q=80'",[4221,26392,5391],{"class":4532},[4221,26394,26395,26397,26399],{"class":4223,"line":17262},[4221,26396,25770],{"class":4536},[4221,26398,25898],{"class":4558},[4221,26400,5391],{"class":4532},[4221,26402,26403],{"class":4223,"line":17295},[4221,26404,6183],{"class":4532},[4221,26406,26407],{"class":4223,"line":17300},[4221,26408,12374],{"class":4532},[4221,26410,26411,26413,26415],{"class":4223,"line":17309},[4221,26412,8902],{"class":4536},[4221,26414,25612],{"class":4558},[4221,26416,5391],{"class":4532},[4221,26418,26419,26421,26424],{"class":4223,"line":17332},[4221,26420,8929],{"class":4536},[4221,26422,26423],{"class":4558}," 'Яремче: водоспад і ліс'",[4221,26425,5391],{"class":4532},[4221,26427,26428,26430,26433],{"class":4223,"line":17364},[4221,26429,25738],{"class":4536},[4221,26431,26432],{"class":4558}," '19–21 черв. 2026'",[4221,26434,5391],{"class":4532},[4221,26436,26437,26439,26442],{"class":4223,"line":17396},[4221,26438,25748],{"class":4536},[4221,26440,26441],{"class":4558}," 'Прогулянка до водоспаду, гуцульська кухня, туман над смереками.'",[4221,26443,5391],{"class":4532},[4221,26445,26446],{"class":4223,"line":17405},[4221,26447,25758],{"class":4536},[4221,26449,26450,26453],{"class":4223,"line":17410},[4221,26451,26452],{"class":4558},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1441974231531-c6227db76b6e?w=800&q=80'",[4221,26454,5391],{"class":4532},[4221,26456,26457,26459,26461],{"class":4223,"line":17437},[4221,26458,25770],{"class":4536},[4221,26460,25162],{"class":4558},[4221,26462,5391],{"class":4532},[4221,26464,26465],{"class":4223,"line":17460},[4221,26466,6183],{"class":4532},[4221,26468,26469],{"class":4223,"line":17484},[4221,26470,4691],{"class":4532},[4212,26472,26475],{"className":8091,"code":26473,"filename":26474,"language":8093,"meta":4217,"style":4217},"export type Trip = {\n  id: string;\n  title: string;\n  dateLabel: string;\n  description: string;\n  coverUri: string;\n  \u002F** Рік \u002F період для групування (навчальні секції пізніше). *\u002F\n  region: string;\n};\n\nexport type Place = {\n  id: string;\n  tripId: string;\n  name: string;\n  city: string;\n  note: string;\n};\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes.ts",[3750,26476,26477,26487,26497,26507,26518,26529,26540,26545,26556,26560,26564,26574,26584,26595,26606,26617,26628],{"__ignoreMap":4217},[4221,26478,26479,26481,26483,26485],{"class":4223,"line":4224},[4221,26480,4700],{"class":4528},[4221,26482,25022],{"class":4571},[4221,26484,22114],{"class":4575},[4221,26486,15868],{"class":4532},[4221,26488,26489,26491,26493,26495],{"class":4223,"line":4230},[4221,26490,4584],{"class":4536},[4221,26492,4587],{"class":4532},[4221,26494,4590],{"class":4575},[4221,26496,4562],{"class":4532},[4221,26498,26499,26501,26503,26505],{"class":4223,"line":4236},[4221,26500,4597],{"class":4536},[4221,26502,4587],{"class":4532},[4221,26504,4590],{"class":4575},[4221,26506,4562],{"class":4532},[4221,26508,26509,26512,26514,26516],{"class":4223,"line":4242},[4221,26510,26511],{"class":4536},"  dateLabel",[4221,26513,4587],{"class":4532},[4221,26515,4590],{"class":4575},[4221,26517,4562],{"class":4532},[4221,26519,26520,26523,26525,26527],{"class":4223,"line":4249},[4221,26521,26522],{"class":4536},"  description",[4221,26524,4587],{"class":4532},[4221,26526,4590],{"class":4575},[4221,26528,4562],{"class":4532},[4221,26530,26531,26534,26536,26538],{"class":4223,"line":4255},[4221,26532,26533],{"class":4536},"  coverUri",[4221,26535,4587],{"class":4532},[4221,26537,4590],{"class":4575},[4221,26539,4562],{"class":4532},[4221,26541,26542],{"class":4223,"line":4261},[4221,26543,26544],{"class":6282},"  \u002F** Рік \u002F період для групування (навчальні секції пізніше). *\u002F\n",[4221,26546,26547,26550,26552,26554],{"class":4223,"line":4267},[4221,26548,26549],{"class":4536},"  region",[4221,26551,4587],{"class":4532},[4221,26553,4590],{"class":4575},[4221,26555,4562],{"class":4532},[4221,26557,26558],{"class":4223,"line":4273},[4221,26559,15933],{"class":4532},[4221,26561,26562],{"class":4223,"line":4279},[4221,26563,4246],{"emptyLinePlaceholder":4245},[4221,26565,26566,26568,26570,26572],{"class":4223,"line":4284},[4221,26567,4700],{"class":4528},[4221,26569,25022],{"class":4571},[4221,26571,22105],{"class":4575},[4221,26573,15868],{"class":4532},[4221,26575,26576,26578,26580,26582],{"class":4223,"line":4290},[4221,26577,4584],{"class":4536},[4221,26579,4587],{"class":4532},[4221,26581,4590],{"class":4575},[4221,26583,4562],{"class":4532},[4221,26585,26586,26589,26591,26593],{"class":4223,"line":4296},[4221,26587,26588],{"class":4536},"  tripId",[4221,26590,4587],{"class":4532},[4221,26592,4590],{"class":4575},[4221,26594,4562],{"class":4532},[4221,26596,26597,26600,26602,26604],{"class":4223,"line":4302},[4221,26598,26599],{"class":4536},"  name",[4221,26601,4587],{"class":4532},[4221,26603,4590],{"class":4575},[4221,26605,4562],{"class":4532},[4221,26607,26608,26611,26613,26615],{"class":4223,"line":4308},[4221,26609,26610],{"class":4536},"  city",[4221,26612,4587],{"class":4532},[4221,26614,4590],{"class":4575},[4221,26616,4562],{"class":4532},[4221,26618,26619,26622,26624,26626],{"class":4223,"line":4314},[4221,26620,26621],{"class":4536},"  note",[4221,26623,4587],{"class":4532},[4221,26625,4590],{"class":4575},[4221,26627,4562],{"class":4532},[4221,26629,26630],{"class":4223,"line":4319},[4221,26631,15933],{"class":4532},[4212,26633,26636],{"className":4519,"code":26634,"filename":26635,"language":4521,"meta":4217,"style":4217},"import { memo } from 'react';\nimport { Pressable, StyleSheet } from 'react-native';\n\nimport type { Place } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '@\u002Fshared\u002Fui';\n\ntype PlaceChipProps = {\n  place: Place;\n  onPress?: (place: Place) => void;\n};\n\nfunction PlaceChipComponent({ place, onPress }: PlaceChipProps) {\n  const { colors, spacing, radius } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      accessibilityLabel={`Місце ${place.name}, ${place.city}`}\n      onPress={() => onPress?.(place)}\n      style={({ pressed }) => [\n        styles.chip,\n        {\n          backgroundColor: colors.surface,\n          borderColor: colors.border,\n          borderRadius: radius.md,\n          padding: spacing.sm,\n          opacity: pressed ? 0.9 : 1,\n        },\n      ]}\n    >\n      \u003CAppText variant=\"subtitle\" numberOfLines={1} style={styles.name}>\n        {place.name}\n      \u003C\u002FAppText>\n      \u003CAppText variant=\"caption\" color={colors.primary} style={styles.city}>\n        {place.city}\n      \u003C\u002FAppText>\n      \u003CAppText variant=\"caption\" numberOfLines={2} style={styles.note}>\n        {place.note}\n      \u003C\u002FAppText>\n    \u003C\u002FPressable>\n  );\n}\n\nexport const PlaceChip = memo(PlaceChipComponent);\n\nconst styles = StyleSheet.create({\n  chip: {\n    width: 160,\n    borderWidth: 1,\n    minHeight: 96,\n  },\n  name: {\n    fontSize: 16,\n  },\n  city: {\n    marginTop: 4,\n    fontWeight: '600',\n  },\n  note: {\n    marginTop: 6,\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FPlaceChip.tsx",[3750,26637,26638,26654,26674,26678,26697,26713,26729,26733,26742,26753,26776,26780,26784,26807,26830,26834,26840,26846,26855,26894,26918,26937,26948,26952,26965,26978,26992,27005,27024,27028,27034,27038,27077,27089,27097,27139,27151,27159,27197,27209,27217,27225,27229,27233,27237,27257,27261,27277,27284,27294,27302,27311,27315,27322,27331,27335,27342,27351,27359,27363,27370,27378,27382],{"__ignoreMap":4217},[4221,26639,26640,26642,26644,26646,26648,26650,26652],{"class":4223,"line":4224},[4221,26641,4529],{"class":4528},[4221,26643,4533],{"class":4532},[4221,26645,5107],{"class":4536},[4221,26647,4552],{"class":4532},[4221,26649,4555],{"class":4528},[4221,26651,6486],{"class":4558},[4221,26653,4562],{"class":4532},[4221,26655,26656,26658,26660,26662,26664,26666,26668,26670,26672],{"class":4223,"line":4230},[4221,26657,4529],{"class":4528},[4221,26659,4533],{"class":4532},[4221,26661,4156],{"class":4536},[4221,26663,3785],{"class":4532},[4221,26665,4549],{"class":4536},[4221,26667,4552],{"class":4532},[4221,26669,4555],{"class":4528},[4221,26671,4559],{"class":4558},[4221,26673,4562],{"class":4532},[4221,26675,26676],{"class":4223,"line":4236},[4221,26677,4246],{"emptyLinePlaceholder":4245},[4221,26679,26680,26682,26684,26686,26688,26690,26692,26695],{"class":4223,"line":4242},[4221,26681,4529],{"class":4528},[4221,26683,25022],{"class":4528},[4221,26685,4533],{"class":4532},[4221,26687,20932],{"class":4536},[4221,26689,4552],{"class":4532},[4221,26691,4555],{"class":4528},[4221,26693,26694],{"class":4558}," '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes'",[4221,26696,4562],{"class":4532},[4221,26698,26699,26701,26703,26705,26707,26709,26711],{"class":4223,"line":4249},[4221,26700,4529],{"class":4528},[4221,26702,4533],{"class":4532},[4221,26704,20885],{"class":4536},[4221,26706,4552],{"class":4532},[4221,26708,4555],{"class":4528},[4221,26710,21760],{"class":4558},[4221,26712,4562],{"class":4532},[4221,26714,26715,26717,26719,26721,26723,26725,26727],{"class":4223,"line":4255},[4221,26716,4529],{"class":4528},[4221,26718,4533],{"class":4532},[4221,26720,20902],{"class":4536},[4221,26722,4552],{"class":4532},[4221,26724,4555],{"class":4528},[4221,26726,22173],{"class":4558},[4221,26728,4562],{"class":4532},[4221,26730,26731],{"class":4223,"line":4261},[4221,26732,4246],{"emptyLinePlaceholder":4245},[4221,26734,26735,26737,26740],{"class":4223,"line":4267},[4221,26736,5261],{"class":4571},[4221,26738,26739],{"class":4575}," PlaceChipProps",[4221,26741,15868],{"class":4532},[4221,26743,26744,26747,26749,26751],{"class":4223,"line":4273},[4221,26745,26746],{"class":4536},"  place",[4221,26748,4587],{"class":4532},[4221,26750,20932],{"class":4575},[4221,26752,4562],{"class":4532},[4221,26754,26755,26758,26761,26763,26765,26767,26769,26771,26774],{"class":4223,"line":4279},[4221,26756,26757],{"class":4706},"  onPress",[4221,26759,26760],{"class":4532},"?: (",[4221,26762,22473],{"class":4536},[4221,26764,4587],{"class":4532},[4221,26766,20932],{"class":4575},[4221,26768,4763],{"class":4532},[4221,26770,4766],{"class":4571},[4221,26772,26773],{"class":4575}," void",[4221,26775,4562],{"class":4532},[4221,26777,26778],{"class":4223,"line":4284},[4221,26779,15933],{"class":4532},[4221,26781,26782],{"class":4223,"line":4290},[4221,26783,4246],{"emptyLinePlaceholder":4245},[4221,26785,26786,26788,26791,26793,26795,26797,26799,26802,26805],{"class":4223,"line":4296},[4221,26787,8846],{"class":4571},[4221,26789,26790],{"class":4706}," PlaceChipComponent",[4221,26792,4788],{"class":4532},[4221,26794,22473],{"class":4536},[4221,26796,3785],{"class":4532},[4221,26798,14128],{"class":4536},[4221,26800,26801],{"class":4532}," }: ",[4221,26803,26804],{"class":4575},"PlaceChipProps",[4221,26806,11846],{"class":4532},[4221,26808,26809,26811,26813,26815,26817,26819,26821,26824,26826,26828],{"class":4223,"line":4302},[4221,26810,5452],{"class":4571},[4221,26812,4533],{"class":4532},[4221,26814,21784],{"class":4619},[4221,26816,3785],{"class":4532},[4221,26818,22294],{"class":4619},[4221,26820,3785],{"class":4532},[4221,26822,26823],{"class":4619},"radius",[4221,26825,21792],{"class":4532},[4221,26827,20885],{"class":4706},[4221,26829,21797],{"class":4532},[4221,26831,26832],{"class":4223,"line":4308},[4221,26833,4246],{"emptyLinePlaceholder":4245},[4221,26835,26836,26838],{"class":4223,"line":4314},[4221,26837,4715],{"class":4528},[4221,26839,4718],{"class":4532},[4221,26841,26842,26844],{"class":4223,"line":4319},[4221,26843,4724],{"class":4723},[4221,26845,6833],{"class":4575},[4221,26847,26848,26851,26853],{"class":4223,"line":4324},[4221,26849,26850],{"class":4732},"      accessibilityRole",[4221,26852,4736],{"class":4532},[4221,26854,23959],{"class":4558},[4221,26856,26857,26860,26862,26864,26867,26869,26871,26873,26875,26877,26879,26881,26883,26885,26888,26890,26892],{"class":4223,"line":4330},[4221,26858,26859],{"class":4732},"      accessibilityLabel",[4221,26861,4736],{"class":4532},[4221,26863,4739],{"class":4571},[4221,26865,26866],{"class":4558},"`Місце ",[4221,26868,5375],{"class":4571},[4221,26870,22473],{"class":4536},[4221,26872,3793],{"class":4756},[4221,26874,22513],{"class":4536},[4221,26876,4822],{"class":4571},[4221,26878,3785],{"class":4558},[4221,26880,5375],{"class":4571},[4221,26882,22473],{"class":4536},[4221,26884,3793],{"class":4756},[4221,26886,26887],{"class":4536},"city",[4221,26889,4822],{"class":4571},[4221,26891,5388],{"class":4558},[4221,26893,4276],{"class":4571},[4221,26895,26896,26899,26901,26903,26905,26907,26909,26912,26914,26916],{"class":4223,"line":4336},[4221,26897,26898],{"class":4732},"      onPress",[4221,26900,4736],{"class":4532},[4221,26902,4739],{"class":4571},[4221,26904,6845],{"class":4756},[4221,26906,4766],{"class":4571},[4221,26908,14396],{"class":4706},[4221,26910,26911],{"class":4756},"?.(",[4221,26913,22473],{"class":4536},[4221,26915,3874],{"class":4756},[4221,26917,4276],{"class":4571},[4221,26919,26920,26922,26924,26926,26928,26931,26933,26935],{"class":4223,"line":4342},[4221,26921,23130],{"class":4732},[4221,26923,4736],{"class":4532},[4221,26925,4739],{"class":4571},[4221,26927,4788],{"class":4756},[4221,26929,26930],{"class":4536},"pressed",[4221,26932,4793],{"class":4756},[4221,26934,4766],{"class":4571},[4221,26936,6866],{"class":4756},[4221,26938,26939,26941,26943,26946],{"class":4223,"line":4348},[4221,26940,23141],{"class":4536},[4221,26942,3793],{"class":4756},[4221,26944,26945],{"class":4536},"chip",[4221,26947,5391],{"class":4756},[4221,26949,26950],{"class":4223,"line":4354},[4221,26951,23152],{"class":4756},[4221,26953,26954,26957,26959,26961,26963],{"class":4223,"line":4360},[4221,26955,26956],{"class":4536},"          backgroundColor:",[4221,26958,21884],{"class":4536},[4221,26960,3793],{"class":4756},[4221,26962,23922],{"class":4536},[4221,26964,5391],{"class":4756},[4221,26966,26967,26970,26972,26974,26976],{"class":4223,"line":4365},[4221,26968,26969],{"class":4536},"          borderColor:",[4221,26971,21884],{"class":4536},[4221,26973,3793],{"class":4756},[4221,26975,23472],{"class":4536},[4221,26977,5391],{"class":4756},[4221,26979,26980,26983,26986,26988,26990],{"class":4223,"line":4371},[4221,26981,26982],{"class":4536},"          borderRadius:",[4221,26984,26985],{"class":4536}," radius",[4221,26987,3793],{"class":4756},[4221,26989,22760],{"class":4536},[4221,26991,5391],{"class":4756},[4221,26993,26994,26997,26999,27001,27003],{"class":4223,"line":4377},[4221,26995,26996],{"class":4536},"          padding:",[4221,26998,22755],{"class":4536},[4221,27000,3793],{"class":4756},[4221,27002,22819],{"class":4536},[4221,27004,5391],{"class":4756},[4221,27006,27007,27010,27013,27015,27018,27020,27022],{"class":4223,"line":4383},[4221,27008,27009],{"class":4536},"          opacity:",[4221,27011,27012],{"class":4536}," pressed",[4221,27014,7218],{"class":4532},[4221,27016,27017],{"class":4934}," 0.9",[4221,27019,7228],{"class":4532},[4221,27021,5383],{"class":4934},[4221,27023,5391],{"class":4756},[4221,27025,27026],{"class":4223,"line":4389},[4221,27027,23197],{"class":4756},[4221,27029,27030,27032],{"class":4223,"line":4395},[4221,27031,23202],{"class":4756},[4221,27033,4276],{"class":4571},[4221,27035,27036],{"class":4223,"line":4400},[4221,27037,23209],{"class":4723},[4221,27039,27040,27042,27044,27046,27048,27050,27053,27055,27057,27059,27061,27063,27065,27067,27069,27071,27073,27075],{"class":4223,"line":4405},[4221,27041,5635],{"class":4723},[4221,27043,20902],{"class":4575},[4221,27045,23218],{"class":4732},[4221,27047,4736],{"class":4532},[4221,27049,23223],{"class":4558},[4221,27051,27052],{"class":4732}," numberOfLines",[4221,27054,4736],{"class":4532},[4221,27056,4739],{"class":4571},[4221,27058,5132],{"class":4934},[4221,27060,4822],{"class":4571},[4221,27062,4807],{"class":4732},[4221,27064,4736],{"class":4532},[4221,27066,4739],{"class":4571},[4221,27068,4814],{"class":4536},[4221,27070,3793],{"class":4756},[4221,27072,22513],{"class":4536},[4221,27074,4822],{"class":4571},[4221,27076,4825],{"class":4723},[4221,27078,27079,27081,27083,27085,27087],{"class":4223,"line":5860},[4221,27080,11003],{"class":4571},[4221,27082,22473],{"class":4536},[4221,27084,3793],{"class":4756},[4221,27086,22513],{"class":4536},[4221,27088,4276],{"class":4571},[4221,27090,27091,27093,27095],{"class":4223,"line":5873},[4221,27092,5725],{"class":4723},[4221,27094,20902],{"class":4575},[4221,27096,4825],{"class":4723},[4221,27098,27099,27101,27103,27105,27107,27109,27111,27113,27115,27117,27119,27121,27123,27125,27127,27129,27131,27133,27135,27137],{"class":4223,"line":5891},[4221,27100,5635],{"class":4723},[4221,27102,20902],{"class":4575},[4221,27104,23218],{"class":4732},[4221,27106,4736],{"class":4532},[4221,27108,23527],{"class":4558},[4221,27110,11193],{"class":4732},[4221,27112,4736],{"class":4532},[4221,27114,4739],{"class":4571},[4221,27116,21784],{"class":4536},[4221,27118,3793],{"class":4756},[4221,27120,9597],{"class":4536},[4221,27122,4822],{"class":4571},[4221,27124,4807],{"class":4732},[4221,27126,4736],{"class":4532},[4221,27128,4739],{"class":4571},[4221,27130,4814],{"class":4536},[4221,27132,3793],{"class":4756},[4221,27134,26887],{"class":4536},[4221,27136,4822],{"class":4571},[4221,27138,4825],{"class":4723},[4221,27140,27141,27143,27145,27147,27149],{"class":4223,"line":5899},[4221,27142,11003],{"class":4571},[4221,27144,22473],{"class":4536},[4221,27146,3793],{"class":4756},[4221,27148,26887],{"class":4536},[4221,27150,4276],{"class":4571},[4221,27152,27153,27155,27157],{"class":4223,"line":5905},[4221,27154,5725],{"class":4723},[4221,27156,20902],{"class":4575},[4221,27158,4825],{"class":4723},[4221,27160,27161,27163,27165,27167,27169,27171,27173,27175,27177,27179,27181,27183,27185,27187,27189,27191,27193,27195],{"class":4223,"line":5955},[4221,27162,5635],{"class":4723},[4221,27164,20902],{"class":4575},[4221,27166,23218],{"class":4732},[4221,27168,4736],{"class":4532},[4221,27170,23527],{"class":4558},[4221,27172,27052],{"class":4732},[4221,27174,4736],{"class":4532},[4221,27176,4739],{"class":4571},[4221,27178,5405],{"class":4934},[4221,27180,4822],{"class":4571},[4221,27182,4807],{"class":4732},[4221,27184,4736],{"class":4532},[4221,27186,4739],{"class":4571},[4221,27188,4814],{"class":4536},[4221,27190,3793],{"class":4756},[4221,27192,3928],{"class":4536},[4221,27194,4822],{"class":4571},[4221,27196,4825],{"class":4723},[4221,27198,27199,27201,27203,27205,27207],{"class":4223,"line":6002},[4221,27200,11003],{"class":4571},[4221,27202,22473],{"class":4536},[4221,27204,3793],{"class":4756},[4221,27206,3928],{"class":4536},[4221,27208,4276],{"class":4571},[4221,27210,27211,27213,27215],{"class":4223,"line":6012},[4221,27212,5725],{"class":4723},[4221,27214,20902],{"class":4575},[4221,27216,4825],{"class":4723},[4221,27218,27219,27221,27223],{"class":4223,"line":6020},[4221,27220,6029],{"class":4723},[4221,27222,4156],{"class":4575},[4221,27224,4825],{"class":4723},[4221,27226,27227],{"class":4223,"line":6026},[4221,27228,4893],{"class":4532},[4221,27230,27231],{"class":4223,"line":6036},[4221,27232,4276],{"class":4532},[4221,27234,27235],{"class":4223,"line":6041},[4221,27236,4246],{"emptyLinePlaceholder":4245},[4221,27238,27239,27241,27243,27246,27248,27250,27252,27255],{"class":4223,"line":6046},[4221,27240,4700],{"class":4528},[4221,27242,16008],{"class":4571},[4221,27244,27245],{"class":4619}," PlaceChip",[4221,27247,4911],{"class":4532},[4221,27249,5107],{"class":4706},[4221,27251,4757],{"class":4532},[4221,27253,27254],{"class":4536},"PlaceChipComponent",[4221,27256,8278],{"class":4532},[4221,27258,27259],{"class":4223,"line":6051},[4221,27260,4246],{"emptyLinePlaceholder":4245},[4221,27262,27263,27265,27267,27269,27271,27273,27275],{"class":4223,"line":6068},[4221,27264,4616],{"class":4571},[4221,27266,4908],{"class":4619},[4221,27268,4911],{"class":4532},[4221,27270,4549],{"class":4536},[4221,27272,3793],{"class":4532},[4221,27274,4918],{"class":4706},[4221,27276,4921],{"class":4532},[4221,27278,27279,27282],{"class":4223,"line":6097},[4221,27280,27281],{"class":4536},"  chip:",[4221,27283,4579],{"class":4532},[4221,27285,27286,27289,27292],{"class":4223,"line":6126},[4221,27287,27288],{"class":4536},"    width:",[4221,27290,27291],{"class":4934}," 160",[4221,27293,5391],{"class":4532},[4221,27295,27296,27298,27300],{"class":4223,"line":6140},[4221,27297,6151],{"class":4536},[4221,27299,5383],{"class":4934},[4221,27301,5391],{"class":4532},[4221,27303,27304,27306,27309],{"class":4223,"line":6148},[4221,27305,7804],{"class":4536},[4221,27307,27308],{"class":4934}," 96",[4221,27310,5391],{"class":4532},[4221,27312,27313],{"class":4223,"line":6158},[4221,27314,6183],{"class":4532},[4221,27316,27317,27320],{"class":4223,"line":6169},[4221,27318,27319],{"class":4536},"  name:",[4221,27321,4579],{"class":4532},[4221,27323,27324,27327,27329],{"class":4223,"line":6180},[4221,27325,27326],{"class":4536},"    fontSize:",[4221,27328,4935],{"class":4934},[4221,27330,5391],{"class":4532},[4221,27332,27333],{"class":4223,"line":6186},[4221,27334,6183],{"class":4532},[4221,27336,27337,27340],{"class":4223,"line":6212},[4221,27338,27339],{"class":4536},"  city:",[4221,27341,4579],{"class":4532},[4221,27343,27344,27347,27349],{"class":4223,"line":7314},[4221,27345,27346],{"class":4536},"    marginTop:",[4221,27348,6121],{"class":4934},[4221,27350,5391],{"class":4532},[4221,27352,27353,27355,27357],{"class":4223,"line":7338},[4221,27354,24843],{"class":4536},[4221,27356,7538],{"class":4558},[4221,27358,5391],{"class":4532},[4221,27360,27361],{"class":4223,"line":7381},[4221,27362,6183],{"class":4532},[4221,27364,27365,27368],{"class":4223,"line":7421},[4221,27366,27367],{"class":4536},"  note:",[4221,27369,4579],{"class":4532},[4221,27371,27372,27374,27376],{"class":4223,"line":7427},[4221,27373,27346],{"class":4536},[4221,27375,17829],{"class":4934},[4221,27377,5391],{"class":4532},[4221,27379,27380],{"class":4223,"line":7433},[4221,27381,6183],{"class":4532},[4221,27383,27384],{"class":4223,"line":7443},[4221,27385,4985],{"class":4532},[4212,27387,27390],{"className":4519,"code":27388,"filename":27389,"language":4521,"meta":4217,"style":4217},"import { memo } from 'react';\nimport { Image, Platform, Pressable, StyleSheet, View } from 'react-native';\n\nimport type { Trip } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '@\u002Fshared\u002Fui';\n\ntype TripCardProps = {\n  trip: Trip;\n  onPress?: (trip: Trip) => void;\n};\n\nfunction TripCardComponent({ trip, onPress }: TripCardProps) {\n  const { colors, spacing, radius } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      accessibilityLabel={`Поїздка ${trip.title}`}\n      onPress={() => onPress?.(trip)}\n      style={({ pressed }) => [\n        styles.card,\n        {\n          backgroundColor: colors.surface,\n          borderColor: colors.border,\n          borderRadius: radius.lg,\n        },\n        pressed && styles.cardPressed,\n      ]}\n    >\n      \u003CImage\n        source={{ uri: trip.coverUri }}\n        style={[styles.cover, { backgroundColor: colors.border }]}\n        resizeMode=\"cover\"\n        accessibilityIgnoresInvertColors\n      \u002F>\n      \u003CView style={[styles.body, { padding: spacing.md, gap: spacing.xs }]}>\n        \u003CView style={[styles.titleRow, { gap: spacing.sm }]}>\n          \u003CAppText variant=\"subtitle\" numberOfLines={1} style={styles.titleFlex}>\n            {trip.title}\n          \u003C\u002FAppText>\n          \u003CAppText variant=\"caption\" style={styles.dates}>\n            {trip.dateLabel}\n          \u003C\u002FAppText>\n        \u003C\u002FView>\n        \u003CAppText variant=\"caption\" color={colors.primary} style={styles.region}>\n          {trip.region}\n        \u003C\u002FAppText>\n        \u003CAppText\n          numberOfLines={2}\n          style={{ marginTop: spacing.xs, color: colors.textSecondary }}\n        >\n          {trip.description}\n        \u003C\u002FAppText>\n        \u003CView style={[styles.footer, { marginTop: spacing.sm }]}>\n          \u003CAppText variant=\"caption\" color={colors.primary}>\n            Відкрити\n          \u003C\u002FAppText>\n        \u003C\u002FView>\n      \u003C\u002FView>\n    \u003C\u002FPressable>\n  );\n}\n\n\u002F** memo: рядок списку не перемальовується, якщо props ті самі. *\u002F\nexport const TripCard = memo(TripCardComponent);\n\nconst styles = StyleSheet.create({\n  card: {\n    borderWidth: 1,\n    overflow: 'hidden',\n    ...Platform.select({\n      ios: {\n        shadowColor: '#000',\n        shadowOpacity: 0.08,\n        shadowRadius: 10,\n        shadowOffset: { width: 0, height: 4 },\n      },\n      android: {\n        elevation: 3,\n      },\n      default: {},\n    }),\n  },\n  cardPressed: {\n    opacity: 0.92,\n  },\n  cover: {\n    width: '100%',\n    height: 160,\n  },\n  body: {},\n  titleRow: {\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  titleFlex: {\n    flex: 1,\n  },\n  dates: {\n    flexShrink: 0,\n  },\n  region: {\n    fontWeight: '600',\n  },\n  footer: {\n    alignItems: 'flex-start',\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FTripCard.tsx",[3750,27391,27392,27408,27441,27445,27463,27479,27495,27499,27508,27519,27539,27543,27547,27569,27591,27595,27601,27607,27615,27640,27662,27680,27690,27694,27706,27718,27731,27735,27752,27758,27762,27769,27793,27824,27834,27839,27843,27890,27927,27966,27979,27987,28016,28029,28037,28045,28088,28100,28108,28114,28127,28159,28163,28176,28184,28220,28248,28253,28261,28269,28277,28285,28289,28293,28297,28302,28322,28326,28342,28348,28356,28366,28380,28387,28397,28407,28416,28435,28439,28446,28456,28460,28468,28473,28477,28484,28494,28498,28505,28514,28523,28527,28534,28541,28549,28557,28561,28568,28576,28580,28587,28596,28600,28607,28615,28619,28625,28634,28638],{"__ignoreMap":4217},[4221,27393,27394,27396,27398,27400,27402,27404,27406],{"class":4223,"line":4224},[4221,27395,4529],{"class":4528},[4221,27397,4533],{"class":4532},[4221,27399,5107],{"class":4536},[4221,27401,4552],{"class":4532},[4221,27403,4555],{"class":4528},[4221,27405,6486],{"class":4558},[4221,27407,4562],{"class":4532},[4221,27409,27410,27412,27414,27416,27418,27421,27423,27425,27427,27429,27431,27433,27435,27437,27439],{"class":4223,"line":4230},[4221,27411,4529],{"class":4528},[4221,27413,4533],{"class":4532},[4221,27415,4153],{"class":4536},[4221,27417,3785],{"class":4532},[4221,27419,27420],{"class":4536},"Platform",[4221,27422,3785],{"class":4532},[4221,27424,4156],{"class":4536},[4221,27426,3785],{"class":4532},[4221,27428,4549],{"class":4536},[4221,27430,3785],{"class":4532},[4221,27432,4147],{"class":4536},[4221,27434,4552],{"class":4532},[4221,27436,4555],{"class":4528},[4221,27438,4559],{"class":4558},[4221,27440,4562],{"class":4532},[4221,27442,27443],{"class":4223,"line":4236},[4221,27444,4246],{"emptyLinePlaceholder":4245},[4221,27446,27447,27449,27451,27453,27455,27457,27459,27461],{"class":4223,"line":4242},[4221,27448,4529],{"class":4528},[4221,27450,25022],{"class":4528},[4221,27452,4533],{"class":4532},[4221,27454,8270],{"class":4536},[4221,27456,4552],{"class":4532},[4221,27458,4555],{"class":4528},[4221,27460,26694],{"class":4558},[4221,27462,4562],{"class":4532},[4221,27464,27465,27467,27469,27471,27473,27475,27477],{"class":4223,"line":4249},[4221,27466,4529],{"class":4528},[4221,27468,4533],{"class":4532},[4221,27470,20885],{"class":4536},[4221,27472,4552],{"class":4532},[4221,27474,4555],{"class":4528},[4221,27476,21760],{"class":4558},[4221,27478,4562],{"class":4532},[4221,27480,27481,27483,27485,27487,27489,27491,27493],{"class":4223,"line":4255},[4221,27482,4529],{"class":4528},[4221,27484,4533],{"class":4532},[4221,27486,20902],{"class":4536},[4221,27488,4552],{"class":4532},[4221,27490,4555],{"class":4528},[4221,27492,22173],{"class":4558},[4221,27494,4562],{"class":4532},[4221,27496,27497],{"class":4223,"line":4261},[4221,27498,4246],{"emptyLinePlaceholder":4245},[4221,27500,27501,27503,27506],{"class":4223,"line":4267},[4221,27502,5261],{"class":4571},[4221,27504,27505],{"class":4575}," TripCardProps",[4221,27507,15868],{"class":4532},[4221,27509,27510,27513,27515,27517],{"class":4223,"line":4273},[4221,27511,27512],{"class":4536},"  trip",[4221,27514,4587],{"class":4532},[4221,27516,8270],{"class":4575},[4221,27518,4562],{"class":4532},[4221,27520,27521,27523,27525,27527,27529,27531,27533,27535,27537],{"class":4223,"line":4279},[4221,27522,26757],{"class":4706},[4221,27524,26760],{"class":4532},[4221,27526,14124],{"class":4536},[4221,27528,4587],{"class":4532},[4221,27530,8270],{"class":4575},[4221,27532,4763],{"class":4532},[4221,27534,4766],{"class":4571},[4221,27536,26773],{"class":4575},[4221,27538,4562],{"class":4532},[4221,27540,27541],{"class":4223,"line":4284},[4221,27542,15933],{"class":4532},[4221,27544,27545],{"class":4223,"line":4290},[4221,27546,4246],{"emptyLinePlaceholder":4245},[4221,27548,27549,27551,27554,27556,27558,27560,27562,27564,27567],{"class":4223,"line":4296},[4221,27550,8846],{"class":4571},[4221,27552,27553],{"class":4706}," TripCardComponent",[4221,27555,4788],{"class":4532},[4221,27557,14124],{"class":4536},[4221,27559,3785],{"class":4532},[4221,27561,14128],{"class":4536},[4221,27563,26801],{"class":4532},[4221,27565,27566],{"class":4575},"TripCardProps",[4221,27568,11846],{"class":4532},[4221,27570,27571,27573,27575,27577,27579,27581,27583,27585,27587,27589],{"class":4223,"line":4302},[4221,27572,5452],{"class":4571},[4221,27574,4533],{"class":4532},[4221,27576,21784],{"class":4619},[4221,27578,3785],{"class":4532},[4221,27580,22294],{"class":4619},[4221,27582,3785],{"class":4532},[4221,27584,26823],{"class":4619},[4221,27586,21792],{"class":4532},[4221,27588,20885],{"class":4706},[4221,27590,21797],{"class":4532},[4221,27592,27593],{"class":4223,"line":4308},[4221,27594,4246],{"emptyLinePlaceholder":4245},[4221,27596,27597,27599],{"class":4223,"line":4314},[4221,27598,4715],{"class":4528},[4221,27600,4718],{"class":4532},[4221,27602,27603,27605],{"class":4223,"line":4319},[4221,27604,4724],{"class":4723},[4221,27606,6833],{"class":4575},[4221,27608,27609,27611,27613],{"class":4223,"line":4324},[4221,27610,26850],{"class":4732},[4221,27612,4736],{"class":4532},[4221,27614,23959],{"class":4558},[4221,27616,27617,27619,27621,27623,27626,27628,27630,27632,27634,27636,27638],{"class":4223,"line":4330},[4221,27618,26859],{"class":4732},[4221,27620,4736],{"class":4532},[4221,27622,4739],{"class":4571},[4221,27624,27625],{"class":4558},"`Поїздка ",[4221,27627,5375],{"class":4571},[4221,27629,14124],{"class":4536},[4221,27631,3793],{"class":4756},[4221,27633,4845],{"class":4536},[4221,27635,4822],{"class":4571},[4221,27637,5388],{"class":4558},[4221,27639,4276],{"class":4571},[4221,27641,27642,27644,27646,27648,27650,27652,27654,27656,27658,27660],{"class":4223,"line":4336},[4221,27643,26898],{"class":4732},[4221,27645,4736],{"class":4532},[4221,27647,4739],{"class":4571},[4221,27649,6845],{"class":4756},[4221,27651,4766],{"class":4571},[4221,27653,14396],{"class":4706},[4221,27655,26911],{"class":4756},[4221,27657,14124],{"class":4536},[4221,27659,3874],{"class":4756},[4221,27661,4276],{"class":4571},[4221,27663,27664,27666,27668,27670,27672,27674,27676,27678],{"class":4223,"line":4342},[4221,27665,23130],{"class":4732},[4221,27667,4736],{"class":4532},[4221,27669,4739],{"class":4571},[4221,27671,4788],{"class":4756},[4221,27673,26930],{"class":4536},[4221,27675,4793],{"class":4756},[4221,27677,4766],{"class":4571},[4221,27679,6866],{"class":4756},[4221,27681,27682,27684,27686,27688],{"class":4223,"line":4348},[4221,27683,23141],{"class":4536},[4221,27685,3793],{"class":4756},[4221,27687,4819],{"class":4536},[4221,27689,5391],{"class":4756},[4221,27691,27692],{"class":4223,"line":4354},[4221,27693,23152],{"class":4756},[4221,27695,27696,27698,27700,27702,27704],{"class":4223,"line":4360},[4221,27697,26956],{"class":4536},[4221,27699,21884],{"class":4536},[4221,27701,3793],{"class":4756},[4221,27703,23922],{"class":4536},[4221,27705,5391],{"class":4756},[4221,27707,27708,27710,27712,27714,27716],{"class":4223,"line":4365},[4221,27709,26969],{"class":4536},[4221,27711,21884],{"class":4536},[4221,27713,3793],{"class":4756},[4221,27715,23472],{"class":4536},[4221,27717,5391],{"class":4756},[4221,27719,27720,27722,27724,27726,27729],{"class":4223,"line":4371},[4221,27721,26982],{"class":4536},[4221,27723,26985],{"class":4536},[4221,27725,3793],{"class":4756},[4221,27727,27728],{"class":4536},"lg",[4221,27730,5391],{"class":4756},[4221,27732,27733],{"class":4223,"line":4377},[4221,27734,23197],{"class":4756},[4221,27736,27737,27740,27743,27745,27747,27750],{"class":4223,"line":4383},[4221,27738,27739],{"class":4536},"        pressed",[4221,27741,27742],{"class":4532}," &&",[4221,27744,4908],{"class":4536},[4221,27746,3793],{"class":4756},[4221,27748,27749],{"class":4536},"cardPressed",[4221,27751,5391],{"class":4756},[4221,27753,27754,27756],{"class":4223,"line":4389},[4221,27755,23202],{"class":4756},[4221,27757,4276],{"class":4571},[4221,27759,27760],{"class":4223,"line":4395},[4221,27761,23209],{"class":4723},[4221,27763,27764,27766],{"class":4223,"line":4400},[4221,27765,5635],{"class":4723},[4221,27767,27768],{"class":4575},"Image\n",[4221,27770,27771,27774,27776,27778,27780,27783,27785,27787,27789,27791],{"class":4223,"line":4405},[4221,27772,27773],{"class":4732},"        source",[4221,27775,4736],{"class":4532},[4221,27777,4739],{"class":4571},[4221,27779,5689],{"class":4756},[4221,27781,27782],{"class":4536},"uri:",[4221,27784,14385],{"class":4536},[4221,27786,3793],{"class":4756},[4221,27788,14907],{"class":4536},[4221,27790,5711],{"class":4756},[4221,27792,4276],{"class":4571},[4221,27794,27795,27797,27799,27801,27803,27805,27807,27810,27812,27814,27816,27818,27820,27822],{"class":4223,"line":5860},[4221,27796,5740],{"class":4732},[4221,27798,4736],{"class":4532},[4221,27800,4739],{"class":4571},[4221,27802,5608],{"class":4756},[4221,27804,4814],{"class":4536},[4221,27806,3793],{"class":4756},[4221,27808,27809],{"class":4536},"cover",[4221,27811,5618],{"class":4756},[4221,27813,5621],{"class":4536},[4221,27815,21884],{"class":4536},[4221,27817,3793],{"class":4756},[4221,27819,23472],{"class":4536},[4221,27821,5626],{"class":4756},[4221,27823,4276],{"class":4571},[4221,27825,27826,27829,27831],{"class":4223,"line":5873},[4221,27827,27828],{"class":4732},"        resizeMode",[4221,27830,4736],{"class":4532},[4221,27832,27833],{"class":4558},"\"cover\"\n",[4221,27835,27836],{"class":4223,"line":5891},[4221,27837,27838],{"class":4732},"        accessibilityIgnoresInvertColors\n",[4221,27840,27841],{"class":4223,"line":5899},[4221,27842,6023],{"class":4723},[4221,27844,27845,27847,27849,27851,27853,27855,27857,27859,27861,27864,27866,27868,27870,27872,27874,27876,27878,27880,27882,27884,27886,27888],{"class":4223,"line":5905},[4221,27846,5635],{"class":4723},[4221,27848,4147],{"class":4575},[4221,27850,4807],{"class":4732},[4221,27852,4736],{"class":4532},[4221,27854,4739],{"class":4571},[4221,27856,5608],{"class":4756},[4221,27858,4814],{"class":4536},[4221,27860,3793],{"class":4756},[4221,27862,27863],{"class":4536},"body",[4221,27865,5618],{"class":4756},[4221,27867,4931],{"class":4536},[4221,27869,22755],{"class":4536},[4221,27871,3793],{"class":4756},[4221,27873,22760],{"class":4536},[4221,27875,3785],{"class":4756},[4221,27877,5813],{"class":4536},[4221,27879,22755],{"class":4536},[4221,27881,3793],{"class":4756},[4221,27883,23458],{"class":4536},[4221,27885,5626],{"class":4756},[4221,27887,4822],{"class":4571},[4221,27889,4825],{"class":4723},[4221,27891,27892,27894,27896,27898,27900,27902,27904,27906,27908,27911,27913,27915,27917,27919,27921,27923,27925],{"class":4223,"line":5955},[4221,27893,4802],{"class":4723},[4221,27895,4147],{"class":4575},[4221,27897,4807],{"class":4732},[4221,27899,4736],{"class":4532},[4221,27901,4739],{"class":4571},[4221,27903,5608],{"class":4756},[4221,27905,4814],{"class":4536},[4221,27907,3793],{"class":4756},[4221,27909,27910],{"class":4536},"titleRow",[4221,27912,5618],{"class":4756},[4221,27914,5813],{"class":4536},[4221,27916,22755],{"class":4536},[4221,27918,3793],{"class":4756},[4221,27920,22819],{"class":4536},[4221,27922,5626],{"class":4756},[4221,27924,4822],{"class":4571},[4221,27926,4825],{"class":4723},[4221,27928,27929,27931,27933,27935,27937,27939,27941,27943,27945,27947,27949,27951,27953,27955,27957,27959,27962,27964],{"class":4223,"line":6002},[4221,27930,4830],{"class":4723},[4221,27932,20902],{"class":4575},[4221,27934,23218],{"class":4732},[4221,27936,4736],{"class":4532},[4221,27938,23223],{"class":4558},[4221,27940,27052],{"class":4732},[4221,27942,4736],{"class":4532},[4221,27944,4739],{"class":4571},[4221,27946,5132],{"class":4934},[4221,27948,4822],{"class":4571},[4221,27950,4807],{"class":4732},[4221,27952,4736],{"class":4532},[4221,27954,4739],{"class":4571},[4221,27956,4814],{"class":4536},[4221,27958,3793],{"class":4756},[4221,27960,27961],{"class":4536},"titleFlex",[4221,27963,4822],{"class":4571},[4221,27965,4825],{"class":4723},[4221,27967,27968,27971,27973,27975,27977],{"class":4223,"line":6012},[4221,27969,27970],{"class":4571},"            {",[4221,27972,14124],{"class":4536},[4221,27974,3793],{"class":4756},[4221,27976,4845],{"class":4536},[4221,27978,4276],{"class":4571},[4221,27980,27981,27983,27985],{"class":4223,"line":6020},[4221,27982,6005],{"class":4723},[4221,27984,20902],{"class":4575},[4221,27986,4825],{"class":4723},[4221,27988,27989,27991,27993,27995,27997,27999,28001,28003,28005,28007,28009,28012,28014],{"class":4223,"line":6026},[4221,27990,4830],{"class":4723},[4221,27992,20902],{"class":4575},[4221,27994,23218],{"class":4732},[4221,27996,4736],{"class":4532},[4221,27998,23527],{"class":4558},[4221,28000,4807],{"class":4732},[4221,28002,4736],{"class":4532},[4221,28004,4739],{"class":4571},[4221,28006,4814],{"class":4536},[4221,28008,3793],{"class":4756},[4221,28010,28011],{"class":4536},"dates",[4221,28013,4822],{"class":4571},[4221,28015,4825],{"class":4723},[4221,28017,28018,28020,28022,28024,28027],{"class":4223,"line":6036},[4221,28019,27970],{"class":4571},[4221,28021,14124],{"class":4536},[4221,28023,3793],{"class":4756},[4221,28025,28026],{"class":4536},"dateLabel",[4221,28028,4276],{"class":4571},[4221,28030,28031,28033,28035],{"class":4223,"line":6041},[4221,28032,6005],{"class":4723},[4221,28034,20902],{"class":4575},[4221,28036,4825],{"class":4723},[4221,28038,28039,28041,28043],{"class":4223,"line":6046},[4221,28040,4872],{"class":4723},[4221,28042,4147],{"class":4575},[4221,28044,4825],{"class":4723},[4221,28046,28047,28049,28051,28053,28055,28057,28059,28061,28063,28065,28067,28069,28071,28073,28075,28077,28079,28081,28084,28086],{"class":4223,"line":6051},[4221,28048,4802],{"class":4723},[4221,28050,20902],{"class":4575},[4221,28052,23218],{"class":4732},[4221,28054,4736],{"class":4532},[4221,28056,23527],{"class":4558},[4221,28058,11193],{"class":4732},[4221,28060,4736],{"class":4532},[4221,28062,4739],{"class":4571},[4221,28064,21784],{"class":4536},[4221,28066,3793],{"class":4756},[4221,28068,9597],{"class":4536},[4221,28070,4822],{"class":4571},[4221,28072,4807],{"class":4732},[4221,28074,4736],{"class":4532},[4221,28076,4739],{"class":4571},[4221,28078,4814],{"class":4536},[4221,28080,3793],{"class":4756},[4221,28082,28083],{"class":4536},"region",[4221,28085,4822],{"class":4571},[4221,28087,4825],{"class":4723},[4221,28089,28090,28092,28094,28096,28098],{"class":4223,"line":6068},[4221,28091,16878],{"class":4571},[4221,28093,14124],{"class":4536},[4221,28095,3793],{"class":4756},[4221,28097,28083],{"class":4536},[4221,28099,4276],{"class":4571},[4221,28101,28102,28104,28106],{"class":4223,"line":6097},[4221,28103,4872],{"class":4723},[4221,28105,20902],{"class":4575},[4221,28107,4825],{"class":4723},[4221,28109,28110,28112],{"class":4223,"line":6126},[4221,28111,4802],{"class":4723},[4221,28113,23259],{"class":4575},[4221,28115,28116,28119,28121,28123,28125],{"class":4223,"line":6140},[4221,28117,28118],{"class":4732},"          numberOfLines",[4221,28120,4736],{"class":4532},[4221,28122,4739],{"class":4571},[4221,28124,5405],{"class":4934},[4221,28126,4276],{"class":4571},[4221,28128,28129,28131,28133,28135,28137,28139,28141,28143,28145,28147,28149,28151,28153,28155,28157],{"class":4223,"line":6148},[4221,28130,6935],{"class":4732},[4221,28132,4736],{"class":4532},[4221,28134,4739],{"class":4571},[4221,28136,5689],{"class":4756},[4221,28138,11227],{"class":4536},[4221,28140,22755],{"class":4536},[4221,28142,3793],{"class":4756},[4221,28144,23458],{"class":4536},[4221,28146,3785],{"class":4756},[4221,28148,5657],{"class":4536},[4221,28150,21884],{"class":4536},[4221,28152,3793],{"class":4756},[4221,28154,23285],{"class":4536},[4221,28156,5711],{"class":4756},[4221,28158,4276],{"class":4571},[4221,28160,28161],{"class":4223,"line":6158},[4221,28162,6963],{"class":4723},[4221,28164,28165,28167,28169,28171,28174],{"class":4223,"line":6169},[4221,28166,16878],{"class":4571},[4221,28168,14124],{"class":4536},[4221,28170,3793],{"class":4756},[4221,28172,28173],{"class":4536},"description",[4221,28175,4276],{"class":4571},[4221,28177,28178,28180,28182],{"class":4223,"line":6180},[4221,28179,4872],{"class":4723},[4221,28181,20902],{"class":4575},[4221,28183,4825],{"class":4723},[4221,28185,28186,28188,28190,28192,28194,28196,28198,28200,28202,28204,28206,28208,28210,28212,28214,28216,28218],{"class":4223,"line":6186},[4221,28187,4802],{"class":4723},[4221,28189,4147],{"class":4575},[4221,28191,4807],{"class":4732},[4221,28193,4736],{"class":4532},[4221,28195,4739],{"class":4571},[4221,28197,5608],{"class":4756},[4221,28199,4814],{"class":4536},[4221,28201,3793],{"class":4756},[4221,28203,11178],{"class":4536},[4221,28205,5618],{"class":4756},[4221,28207,11227],{"class":4536},[4221,28209,22755],{"class":4536},[4221,28211,3793],{"class":4756},[4221,28213,22819],{"class":4536},[4221,28215,5626],{"class":4756},[4221,28217,4822],{"class":4571},[4221,28219,4825],{"class":4723},[4221,28221,28222,28224,28226,28228,28230,28232,28234,28236,28238,28240,28242,28244,28246],{"class":4223,"line":6212},[4221,28223,4830],{"class":4723},[4221,28225,20902],{"class":4575},[4221,28227,23218],{"class":4732},[4221,28229,4736],{"class":4532},[4221,28231,23527],{"class":4558},[4221,28233,11193],{"class":4732},[4221,28235,4736],{"class":4532},[4221,28237,4739],{"class":4571},[4221,28239,21784],{"class":4536},[4221,28241,3793],{"class":4756},[4221,28243,9597],{"class":4536},[4221,28245,4822],{"class":4571},[4221,28247,4825],{"class":4723},[4221,28249,28250],{"class":4223,"line":7314},[4221,28251,28252],{"class":4532},"            Відкрити\n",[4221,28254,28255,28257,28259],{"class":4223,"line":7338},[4221,28256,6005],{"class":4723},[4221,28258,20902],{"class":4575},[4221,28260,4825],{"class":4723},[4221,28262,28263,28265,28267],{"class":4223,"line":7381},[4221,28264,4872],{"class":4723},[4221,28266,4147],{"class":4575},[4221,28268,4825],{"class":4723},[4221,28270,28271,28273,28275],{"class":4223,"line":7421},[4221,28272,5725],{"class":4723},[4221,28274,4147],{"class":4575},[4221,28276,4825],{"class":4723},[4221,28278,28279,28281,28283],{"class":4223,"line":7427},[4221,28280,6029],{"class":4723},[4221,28282,4156],{"class":4575},[4221,28284,4825],{"class":4723},[4221,28286,28287],{"class":4223,"line":7433},[4221,28288,4893],{"class":4532},[4221,28290,28291],{"class":4223,"line":7443},[4221,28292,4276],{"class":4532},[4221,28294,28295],{"class":4223,"line":7452},[4221,28296,4246],{"emptyLinePlaceholder":4245},[4221,28298,28299],{"class":4223,"line":7457},[4221,28300,28301],{"class":6282},"\u002F** memo: рядок списку не перемальовується, якщо props ті самі. *\u002F\n",[4221,28303,28304,28306,28308,28311,28313,28315,28317,28320],{"class":4223,"line":7476},[4221,28305,4700],{"class":4528},[4221,28307,16008],{"class":4571},[4221,28309,28310],{"class":4619}," TripCard",[4221,28312,4911],{"class":4532},[4221,28314,5107],{"class":4706},[4221,28316,4757],{"class":4532},[4221,28318,28319],{"class":4536},"TripCardComponent",[4221,28321,8278],{"class":4532},[4221,28323,28324],{"class":4223,"line":7515},[4221,28325,4246],{"emptyLinePlaceholder":4245},[4221,28327,28328,28330,28332,28334,28336,28338,28340],{"class":4223,"line":7563},[4221,28329,4616],{"class":4571},[4221,28331,4908],{"class":4619},[4221,28333,4911],{"class":4532},[4221,28335,4549],{"class":4536},[4221,28337,3793],{"class":4532},[4221,28339,4918],{"class":4706},[4221,28341,4921],{"class":4532},[4221,28343,28344,28346],{"class":4223,"line":7572},[4221,28345,4926],{"class":4536},[4221,28347,4579],{"class":4532},[4221,28349,28350,28352,28354],{"class":4223,"line":7579},[4221,28351,6151],{"class":4536},[4221,28353,5383],{"class":4934},[4221,28355,5391],{"class":4532},[4221,28357,28358,28361,28364],{"class":4223,"line":7584},[4221,28359,28360],{"class":4536},"    overflow:",[4221,28362,28363],{"class":4558}," 'hidden'",[4221,28365,5391],{"class":4532},[4221,28367,28368,28371,28373,28375,28378],{"class":4223,"line":7593},[4221,28369,28370],{"class":4532},"    ...",[4221,28372,27420],{"class":4536},[4221,28374,3793],{"class":4532},[4221,28376,28377],{"class":4706},"select",[4221,28379,4921],{"class":4532},[4221,28381,28382,28385],{"class":4223,"line":7598},[4221,28383,28384],{"class":4536},"      ios:",[4221,28386,4579],{"class":4532},[4221,28388,28389,28392,28395],{"class":4223,"line":7603},[4221,28390,28391],{"class":4536},"        shadowColor:",[4221,28393,28394],{"class":4558}," '#000'",[4221,28396,5391],{"class":4532},[4221,28398,28399,28402,28405],{"class":4223,"line":7608},[4221,28400,28401],{"class":4536},"        shadowOpacity:",[4221,28403,28404],{"class":4934}," 0.08",[4221,28406,5391],{"class":4532},[4221,28408,28409,28412,28414],{"class":4223,"line":7625},[4221,28410,28411],{"class":4536},"        shadowRadius:",[4221,28413,7702],{"class":4934},[4221,28415,5391],{"class":4532},[4221,28417,28418,28421,28423,28425,28427,28429,28431,28433],{"class":4223,"line":7650},[4221,28419,28420],{"class":4536},"        shadowOffset:",[4221,28422,4533],{"class":4532},[4221,28424,23001],{"class":4536},[4221,28426,7215],{"class":4934},[4221,28428,3785],{"class":4532},[4221,28430,13850],{"class":4536},[4221,28432,6121],{"class":4934},[4221,28434,4650],{"class":4532},[4221,28436,28437],{"class":4223,"line":7678},[4221,28438,21526],{"class":4532},[4221,28440,28441,28444],{"class":4223,"line":7686},[4221,28442,28443],{"class":4536},"      android:",[4221,28445,4579],{"class":4532},[4221,28447,28448,28451,28454],{"class":4223,"line":7696},[4221,28449,28450],{"class":4536},"        elevation:",[4221,28452,28453],{"class":4934}," 3",[4221,28455,5391],{"class":4532},[4221,28457,28458],{"class":4223,"line":7707},[4221,28459,21526],{"class":4532},[4221,28461,28462,28465],{"class":4223,"line":7716},[4221,28463,28464],{"class":4536},"      default:",[4221,28466,28467],{"class":4532}," {},\n",[4221,28469,28470],{"class":4223,"line":7721},[4221,28471,28472],{"class":4532},"    }),\n",[4221,28474,28475],{"class":4223,"line":7742},[4221,28476,6183],{"class":4532},[4221,28478,28479,28482],{"class":4223,"line":7768},[4221,28480,28481],{"class":4536},"  cardPressed:",[4221,28483,4579],{"class":4532},[4221,28485,28486,28489,28492],{"class":4223,"line":7783},[4221,28487,28488],{"class":4536},"    opacity:",[4221,28490,28491],{"class":4934}," 0.92",[4221,28493,5391],{"class":4532},[4221,28495,28496],{"class":4223,"line":7791},[4221,28497,6183],{"class":4532},[4221,28499,28500,28503],{"class":4223,"line":7801},[4221,28501,28502],{"class":4536},"  cover:",[4221,28504,4579],{"class":4532},[4221,28506,28507,28509,28512],{"class":4223,"line":7812},[4221,28508,27288],{"class":4536},[4221,28510,28511],{"class":4558}," '100%'",[4221,28513,5391],{"class":4532},[4221,28515,28516,28519,28521],{"class":4223,"line":7822},[4221,28517,28518],{"class":4536},"    height:",[4221,28520,27291],{"class":4934},[4221,28522,5391],{"class":4532},[4221,28524,28525],{"class":4223,"line":7832},[4221,28526,6183],{"class":4532},[4221,28528,28529,28532],{"class":4223,"line":7842},[4221,28530,28531],{"class":4536},"  body:",[4221,28533,28467],{"class":4532},[4221,28535,28536,28539],{"class":4223,"line":7851},[4221,28537,28538],{"class":4536},"  titleRow:",[4221,28540,4579],{"class":4532},[4221,28542,28543,28545,28547],{"class":4223,"line":7856},[4221,28544,9912],{"class":4536},[4221,28546,7661],{"class":4558},[4221,28548,5391],{"class":4532},[4221,28550,28551,28553,28555],{"class":4223,"line":7876},[4221,28552,7815],{"class":4536},[4221,28554,7405],{"class":4558},[4221,28556,5391],{"class":4532},[4221,28558,28559],{"class":4223,"line":7883},[4221,28560,6183],{"class":4532},[4221,28562,28563,28566],{"class":4223,"line":7892},[4221,28564,28565],{"class":4536},"  titleFlex:",[4221,28567,4579],{"class":4532},[4221,28569,28570,28572,28574],{"class":4223,"line":7901},[4221,28571,7794],{"class":4536},[4221,28573,5383],{"class":4934},[4221,28575,5391],{"class":4532},[4221,28577,28578],{"class":4223,"line":7910},[4221,28579,6183],{"class":4532},[4221,28581,28582,28585],{"class":4223,"line":7915},[4221,28583,28584],{"class":4536},"  dates:",[4221,28586,4579],{"class":4532},[4221,28588,28589,28592,28594],{"class":4223,"line":17209},[4221,28590,28591],{"class":4536},"    flexShrink:",[4221,28593,7215],{"class":4934},[4221,28595,5391],{"class":4532},[4221,28597,28598],{"class":4223,"line":17218},[4221,28599,6183],{"class":4532},[4221,28601,28602,28605],{"class":4223,"line":17248},[4221,28603,28604],{"class":4536},"  region:",[4221,28606,4579],{"class":4532},[4221,28608,28609,28611,28613],{"class":4223,"line":17253},[4221,28610,24843],{"class":4536},[4221,28612,7538],{"class":4558},[4221,28614,5391],{"class":4532},[4221,28616,28617],{"class":4223,"line":17262},[4221,28618,6183],{"class":4532},[4221,28620,28621,28623],{"class":4223,"line":17295},[4221,28622,11562],{"class":4536},[4221,28624,4579],{"class":4532},[4221,28626,28627,28629,28632],{"class":4223,"line":17300},[4221,28628,7815],{"class":4536},[4221,28630,28631],{"class":4558}," 'flex-start'",[4221,28633,5391],{"class":4532},[4221,28635,28636],{"class":4223,"line":17309},[4221,28637,6183],{"class":4532},[4221,28639,28640],{"class":4223,"line":17332},[4221,28641,4985],{"class":4532},[4212,28643,28646],{"className":4519,"code":28644,"filename":28645,"language":4521,"meta":4217,"style":4217},"import {\n  createContext,\n  ReactNode,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n} from 'react';\nimport { useColorScheme as useSystemColorScheme } from 'react-native';\n\nimport {\n  colorsForScheme,\n  type ColorSchemeName,\n  type ColorTokens,\n} from '.\u002Fcolors';\nimport { fontSize, radius, space } from '.\u002Ftokens';\n\n\u002F** Що обрав користувач: слідувати системі або примусово light\u002Fdark. *\u002F\nexport type ThemePreference = 'system' | ColorSchemeName;\n\ntype ThemeContextValue = {\n  \u002F** Фактична схема, якою малюємо UI. *\u002F\n  scheme: ColorSchemeName;\n  preference: ThemePreference;\n  setPreference: (value: ThemePreference) => void;\n  colors: ColorTokens;\n  spacing: typeof space;\n  radius: typeof radius;\n  fontSize: typeof fontSize;\n};\n\nconst ThemeContext = createContext\u003CThemeContextValue | null>(null);\n\nfunction resolveScheme(\n  preference: ThemePreference,\n  system: string | null | undefined,\n): ColorSchemeName {\n  if (preference === 'light' || preference === 'dark') {\n    return preference;\n  }\n  return system === 'dark' ? 'dark' : 'light';\n}\n\ntype ThemeProviderProps = {\n  children: ReactNode;\n  \u002F** Початкова перевага (за замовчуванням — як у системі). *\u002F\n  initialPreference?: ThemePreference;\n};\n\nexport function ThemeProvider({\n  children,\n  initialPreference = 'system',\n}: ThemeProviderProps) {\n  const systemScheme = useSystemColorScheme();\n  const [preference, setPreferenceState] =\n    useState\u003CThemePreference>(initialPreference);\n\n  const setPreference = useCallback((value: ThemePreference) => {\n    setPreferenceState(value);\n  }, []);\n\n  const scheme = resolveScheme(preference, systemScheme);\n  const colors = useMemo(() => colorsForScheme(scheme), [scheme]);\n\n  const value = useMemo\u003CThemeContextValue>(\n    () => ({\n      scheme,\n      preference,\n      setPreference,\n      colors,\n      spacing: space,\n      radius,\n      fontSize,\n    }),\n    [scheme, preference, setPreference, colors],\n  );\n\n  return (\n    \u003CThemeContext.Provider value={value}>{children}\u003C\u002FThemeContext.Provider>\n  );\n}\n\nexport function useTheme(): ThemeContextValue {\n  const ctx = useContext(ThemeContext);\n  if (!ctx) {\n    throw new Error('useTheme() потрібно викликати всередині \u003CThemeProvider>.');\n  }\n  return ctx;\n}\n","src\u002Fshared\u002Ftheme\u002FThemeProvider.tsx",[3750,28647,28648,28654,28661,28668,28675,28682,28689,28696,28706,28728,28732,28738,28745,28754,28763,28774,28801,28805,28810,28831,28835,28844,28849,28860,28871,28894,28906,28921,28934,28948,28952,28956,28984,28988,28997,29007,29026,29034,29059,29067,29071,29092,29096,29100,29109,29121,29126,29138,29142,29146,29157,29163,29173,29183,29197,29213,29229,29233,29257,29268,29272,29276,29299,29326,29330,29348,29357,29364,29371,29378,29385,29394,29401,29408,29412,29432,29436,29440,29446,29478,29482,29486,29490,29506,29525,29537,29555,29559,29567],{"__ignoreMap":4217},[4221,28649,28650,28652],{"class":4223,"line":4224},[4221,28651,4529],{"class":4528},[4221,28653,4579],{"class":4532},[4221,28655,28656,28659],{"class":4223,"line":4230},[4221,28657,28658],{"class":4536},"  createContext",[4221,28660,5391],{"class":4532},[4221,28662,28663,28666],{"class":4223,"line":4236},[4221,28664,28665],{"class":4536},"  ReactNode",[4221,28667,5391],{"class":4532},[4221,28669,28670,28673],{"class":4223,"line":4242},[4221,28671,28672],{"class":4536},"  useCallback",[4221,28674,5391],{"class":4532},[4221,28676,28677,28680],{"class":4223,"line":4249},[4221,28678,28679],{"class":4536},"  useContext",[4221,28681,5391],{"class":4532},[4221,28683,28684,28687],{"class":4223,"line":4255},[4221,28685,28686],{"class":4536},"  useMemo",[4221,28688,5391],{"class":4532},[4221,28690,28691,28694],{"class":4223,"line":4261},[4221,28692,28693],{"class":4536},"  useState",[4221,28695,5391],{"class":4532},[4221,28697,28698,28700,28702,28704],{"class":4223,"line":4267},[4221,28699,6541],{"class":4532},[4221,28701,4555],{"class":4528},[4221,28703,6486],{"class":4558},[4221,28705,4562],{"class":4532},[4221,28707,28708,28710,28712,28714,28717,28720,28722,28724,28726],{"class":4223,"line":4273},[4221,28709,4529],{"class":4528},[4221,28711,4533],{"class":4532},[4221,28713,5244],{"class":4536},[4221,28715,28716],{"class":4528}," as",[4221,28718,28719],{"class":4536}," useSystemColorScheme",[4221,28721,4552],{"class":4532},[4221,28723,4555],{"class":4528},[4221,28725,4559],{"class":4558},[4221,28727,4562],{"class":4532},[4221,28729,28730],{"class":4223,"line":4279},[4221,28731,4246],{"emptyLinePlaceholder":4245},[4221,28733,28734,28736],{"class":4223,"line":4284},[4221,28735,4529],{"class":4528},[4221,28737,4579],{"class":4532},[4221,28739,28740,28743],{"class":4223,"line":4290},[4221,28741,28742],{"class":4536},"  colorsForScheme",[4221,28744,5391],{"class":4532},[4221,28746,28747,28749,28752],{"class":4223,"line":4296},[4221,28748,22102],{"class":4528},[4221,28750,28751],{"class":4536}," ColorSchemeName",[4221,28753,5391],{"class":4532},[4221,28755,28756,28758,28761],{"class":4223,"line":4302},[4221,28757,22102],{"class":4528},[4221,28759,28760],{"class":4536}," ColorTokens",[4221,28762,5391],{"class":4532},[4221,28764,28765,28767,28769,28772],{"class":4223,"line":4308},[4221,28766,6541],{"class":4532},[4221,28768,4555],{"class":4528},[4221,28770,28771],{"class":4558}," '.\u002Fcolors'",[4221,28773,4562],{"class":4532},[4221,28775,28776,28778,28780,28783,28785,28787,28789,28792,28794,28796,28799],{"class":4223,"line":4314},[4221,28777,4529],{"class":4528},[4221,28779,4533],{"class":4532},[4221,28781,28782],{"class":4536},"fontSize",[4221,28784,3785],{"class":4532},[4221,28786,26823],{"class":4536},[4221,28788,3785],{"class":4532},[4221,28790,28791],{"class":4536},"space",[4221,28793,4552],{"class":4532},[4221,28795,4555],{"class":4528},[4221,28797,28798],{"class":4558}," '.\u002Ftokens'",[4221,28800,4562],{"class":4532},[4221,28802,28803],{"class":4223,"line":4319},[4221,28804,4246],{"emptyLinePlaceholder":4245},[4221,28806,28807],{"class":4223,"line":4324},[4221,28808,28809],{"class":6282},"\u002F** Що обрав користувач: слідувати системі або примусово light\u002Fdark. *\u002F\n",[4221,28811,28812,28814,28816,28818,28820,28823,28826,28829],{"class":4223,"line":4330},[4221,28813,4700],{"class":4528},[4221,28815,25022],{"class":4571},[4221,28817,22142],{"class":4575},[4221,28819,4911],{"class":4532},[4221,28821,28822],{"class":4558},"'system'",[4221,28824,28825],{"class":4532}," | ",[4221,28827,28828],{"class":4575},"ColorSchemeName",[4221,28830,4562],{"class":4532},[4221,28832,28833],{"class":4223,"line":4336},[4221,28834,4246],{"emptyLinePlaceholder":4245},[4221,28836,28837,28839,28842],{"class":4223,"line":4342},[4221,28838,5261],{"class":4571},[4221,28840,28841],{"class":4575}," ThemeContextValue",[4221,28843,15868],{"class":4532},[4221,28845,28846],{"class":4223,"line":4348},[4221,28847,28848],{"class":6282},"  \u002F** Фактична схема, якою малюємо UI. *\u002F\n",[4221,28850,28851,28854,28856,28858],{"class":4223,"line":4354},[4221,28852,28853],{"class":4536},"  scheme",[4221,28855,4587],{"class":4532},[4221,28857,28828],{"class":4575},[4221,28859,4562],{"class":4532},[4221,28861,28862,28865,28867,28869],{"class":4223,"line":4360},[4221,28863,28864],{"class":4536},"  preference",[4221,28866,4587],{"class":4532},[4221,28868,22195],{"class":4575},[4221,28870,4562],{"class":4532},[4221,28872,28873,28876,28879,28882,28884,28886,28888,28890,28892],{"class":4223,"line":4365},[4221,28874,28875],{"class":4706},"  setPreference",[4221,28877,28878],{"class":4532},": (",[4221,28880,28881],{"class":4536},"value",[4221,28883,4587],{"class":4532},[4221,28885,22195],{"class":4575},[4221,28887,4763],{"class":4532},[4221,28889,4766],{"class":4571},[4221,28891,26773],{"class":4575},[4221,28893,4562],{"class":4532},[4221,28895,28896,28899,28901,28904],{"class":4223,"line":4371},[4221,28897,28898],{"class":4536},"  colors",[4221,28900,4587],{"class":4532},[4221,28902,28903],{"class":4575},"ColorTokens",[4221,28905,4562],{"class":4532},[4221,28907,28908,28911,28913,28916,28919],{"class":4223,"line":4377},[4221,28909,28910],{"class":4536},"  spacing",[4221,28912,4587],{"class":4532},[4221,28914,28915],{"class":4571},"typeof",[4221,28917,28918],{"class":4536}," space",[4221,28920,4562],{"class":4532},[4221,28922,28923,28926,28928,28930,28932],{"class":4223,"line":4383},[4221,28924,28925],{"class":4536},"  radius",[4221,28927,4587],{"class":4532},[4221,28929,28915],{"class":4571},[4221,28931,26985],{"class":4536},[4221,28933,4562],{"class":4532},[4221,28935,28936,28939,28941,28943,28946],{"class":4223,"line":4389},[4221,28937,28938],{"class":4536},"  fontSize",[4221,28940,4587],{"class":4532},[4221,28942,28915],{"class":4571},[4221,28944,28945],{"class":4536}," fontSize",[4221,28947,4562],{"class":4532},[4221,28949,28950],{"class":4223,"line":4395},[4221,28951,15933],{"class":4532},[4221,28953,28954],{"class":4223,"line":4400},[4221,28955,4246],{"emptyLinePlaceholder":4245},[4221,28957,28958,28960,28963,28965,28968,28970,28973,28975,28977,28980,28982],{"class":4223,"line":4405},[4221,28959,4616],{"class":4571},[4221,28961,28962],{"class":4619}," ThemeContext",[4221,28964,4911],{"class":4532},[4221,28966,28967],{"class":4706},"createContext",[4221,28969,6756],{"class":4532},[4221,28971,28972],{"class":4575},"ThemeContextValue",[4221,28974,28825],{"class":4532},[4221,28976,6457],{"class":4575},[4221,28978,28979],{"class":4532},">(",[4221,28981,6457],{"class":4571},[4221,28983,8278],{"class":4532},[4221,28985,28986],{"class":4223,"line":5860},[4221,28987,4246],{"emptyLinePlaceholder":4245},[4221,28989,28990,28992,28995],{"class":4223,"line":5873},[4221,28991,8846],{"class":4571},[4221,28993,28994],{"class":4706}," resolveScheme",[4221,28996,11770],{"class":4532},[4221,28998,28999,29001,29003,29005],{"class":4223,"line":5891},[4221,29000,28864],{"class":4536},[4221,29002,4587],{"class":4532},[4221,29004,22195],{"class":4575},[4221,29006,5391],{"class":4532},[4221,29008,29009,29012,29014,29016,29018,29020,29022,29024],{"class":4223,"line":5899},[4221,29010,29011],{"class":4536},"  system",[4221,29013,4587],{"class":4532},[4221,29015,4590],{"class":4575},[4221,29017,28825],{"class":4532},[4221,29019,6457],{"class":4575},[4221,29021,28825],{"class":4532},[4221,29023,6460],{"class":4575},[4221,29025,5391],{"class":4532},[4221,29027,29028,29030,29032],{"class":4223,"line":5905},[4221,29029,8861],{"class":4532},[4221,29031,28828],{"class":4575},[4221,29033,4579],{"class":4532},[4221,29035,29036,29039,29041,29043,29045,29048,29051,29053,29055,29057],{"class":4223,"line":5955},[4221,29037,29038],{"class":4528},"  if",[4221,29040,10727],{"class":4532},[4221,29042,22299],{"class":4536},[4221,29044,5408],{"class":4532},[4221,29046,29047],{"class":4558},"'light'",[4221,29049,29050],{"class":4532}," || ",[4221,29052,22299],{"class":4536},[4221,29054,5408],{"class":4532},[4221,29056,5465],{"class":4558},[4221,29058,11846],{"class":4532},[4221,29060,29061,29063,29065],{"class":4223,"line":6002},[4221,29062,10425],{"class":4528},[4221,29064,23802],{"class":4536},[4221,29066,4562],{"class":4532},[4221,29068,29069],{"class":4223,"line":6012},[4221,29070,16427],{"class":4532},[4221,29072,29073,29075,29078,29080,29082,29084,29086,29088,29090],{"class":4223,"line":6020},[4221,29074,4715],{"class":4528},[4221,29076,29077],{"class":4536}," system",[4221,29079,5408],{"class":4532},[4221,29081,5465],{"class":4558},[4221,29083,5413],{"class":4532},[4221,29085,5465],{"class":4558},[4221,29087,5419],{"class":4532},[4221,29089,29047],{"class":4558},[4221,29091,4562],{"class":4532},[4221,29093,29094],{"class":4223,"line":6026},[4221,29095,4276],{"class":4532},[4221,29097,29098],{"class":4223,"line":6036},[4221,29099,4246],{"emptyLinePlaceholder":4245},[4221,29101,29102,29104,29107],{"class":4223,"line":6041},[4221,29103,5261],{"class":4571},[4221,29105,29106],{"class":4575}," ThemeProviderProps",[4221,29108,15868],{"class":4532},[4221,29110,29111,29114,29116,29119],{"class":4223,"line":6046},[4221,29112,29113],{"class":4536},"  children",[4221,29115,4587],{"class":4532},[4221,29117,29118],{"class":4575},"ReactNode",[4221,29120,4562],{"class":4532},[4221,29122,29123],{"class":4223,"line":6051},[4221,29124,29125],{"class":6282},"  \u002F** Початкова перевага (за замовчуванням — як у системі). *\u002F\n",[4221,29127,29128,29131,29134,29136],{"class":4223,"line":6068},[4221,29129,29130],{"class":4536},"  initialPreference",[4221,29132,29133],{"class":4532},"?: ",[4221,29135,22195],{"class":4575},[4221,29137,4562],{"class":4532},[4221,29139,29140],{"class":4223,"line":6097},[4221,29141,15933],{"class":4532},[4221,29143,29144],{"class":4223,"line":6126},[4221,29145,4246],{"emptyLinePlaceholder":4245},[4221,29147,29148,29150,29152,29155],{"class":4223,"line":6140},[4221,29149,4700],{"class":4528},[4221,29151,4703],{"class":4571},[4221,29153,29154],{"class":4706}," ThemeProvider",[4221,29156,4921],{"class":4532},[4221,29158,29159,29161],{"class":4223,"line":6148},[4221,29160,29113],{"class":4536},[4221,29162,5391],{"class":4532},[4221,29164,29165,29167,29169,29171],{"class":4223,"line":6158},[4221,29166,29130],{"class":4536},[4221,29168,4911],{"class":4532},[4221,29170,28822],{"class":4558},[4221,29172,5391],{"class":4532},[4221,29174,29175,29178,29181],{"class":4223,"line":6169},[4221,29176,29177],{"class":4532},"}: ",[4221,29179,29180],{"class":4575},"ThemeProviderProps",[4221,29182,11846],{"class":4532},[4221,29184,29185,29187,29190,29192,29195],{"class":4223,"line":6180},[4221,29186,5452],{"class":4571},[4221,29188,29189],{"class":4619}," systemScheme",[4221,29191,4911],{"class":4532},[4221,29193,29194],{"class":4706},"useSystemColorScheme",[4221,29196,21797],{"class":4532},[4221,29198,29199,29201,29203,29205,29207,29210],{"class":4223,"line":6186},[4221,29200,5452],{"class":4571},[4221,29202,6741],{"class":4532},[4221,29204,22299],{"class":4619},[4221,29206,3785],{"class":4532},[4221,29208,29209],{"class":4619},"setPreferenceState",[4221,29211,29212],{"class":4532},"] =\n",[4221,29214,29215,29218,29220,29222,29224,29227],{"class":4223,"line":6212},[4221,29216,29217],{"class":4706},"    useState",[4221,29219,6756],{"class":4532},[4221,29221,22195],{"class":4575},[4221,29223,28979],{"class":4532},[4221,29225,29226],{"class":4536},"initialPreference",[4221,29228,8278],{"class":4532},[4221,29230,29231],{"class":4223,"line":7314},[4221,29232,4246],{"emptyLinePlaceholder":4245},[4221,29234,29235,29237,29239,29241,29243,29245,29247,29249,29251,29253,29255],{"class":4223,"line":7338},[4221,29236,5452],{"class":4571},[4221,29238,23858],{"class":4619},[4221,29240,4911],{"class":4532},[4221,29242,3900],{"class":4706},[4221,29244,6856],{"class":4532},[4221,29246,28881],{"class":4536},[4221,29248,4587],{"class":4532},[4221,29250,22195],{"class":4575},[4221,29252,4763],{"class":4532},[4221,29254,4766],{"class":4571},[4221,29256,4579],{"class":4532},[4221,29258,29259,29262,29264,29266],{"class":4223,"line":7381},[4221,29260,29261],{"class":4706},"    setPreferenceState",[4221,29263,4757],{"class":4532},[4221,29265,28881],{"class":4536},[4221,29267,8278],{"class":4532},[4221,29269,29270],{"class":4223,"line":7421},[4221,29271,16764],{"class":4532},[4221,29273,29274],{"class":4223,"line":7427},[4221,29275,4246],{"emptyLinePlaceholder":4245},[4221,29277,29278,29280,29283,29285,29288,29290,29292,29294,29297],{"class":4223,"line":7433},[4221,29279,5452],{"class":4571},[4221,29281,29282],{"class":4619}," scheme",[4221,29284,4911],{"class":4532},[4221,29286,29287],{"class":4706},"resolveScheme",[4221,29289,4757],{"class":4532},[4221,29291,22299],{"class":4536},[4221,29293,3785],{"class":4532},[4221,29295,29296],{"class":4536},"systemScheme",[4221,29298,8278],{"class":4532},[4221,29300,29301,29303,29305,29307,29309,29311,29313,29316,29318,29320,29322,29324],{"class":4223,"line":7443},[4221,29302,5452],{"class":4571},[4221,29304,21884],{"class":4619},[4221,29306,4911],{"class":4532},[4221,29308,15773],{"class":4706},[4221,29310,9163],{"class":4532},[4221,29312,4766],{"class":4571},[4221,29314,29315],{"class":4706}," colorsForScheme",[4221,29317,4757],{"class":4532},[4221,29319,21789],{"class":4536},[4221,29321,16638],{"class":4532},[4221,29323,21789],{"class":4536},[4221,29325,9318],{"class":4532},[4221,29327,29328],{"class":4223,"line":7452},[4221,29329,4246],{"emptyLinePlaceholder":4245},[4221,29331,29332,29334,29337,29339,29341,29343,29345],{"class":4223,"line":7457},[4221,29333,5452],{"class":4571},[4221,29335,29336],{"class":4619}," value",[4221,29338,4911],{"class":4532},[4221,29340,15773],{"class":4706},[4221,29342,6756],{"class":4532},[4221,29344,28972],{"class":4575},[4221,29346,29347],{"class":4532},">(\n",[4221,29349,29350,29353,29355],{"class":4223,"line":7476},[4221,29351,29352],{"class":4532},"    () ",[4221,29354,4766],{"class":4571},[4221,29356,5346],{"class":4532},[4221,29358,29359,29362],{"class":4223,"line":7515},[4221,29360,29361],{"class":4536},"      scheme",[4221,29363,5391],{"class":4532},[4221,29365,29366,29369],{"class":4223,"line":7563},[4221,29367,29368],{"class":4536},"      preference",[4221,29370,5391],{"class":4532},[4221,29372,29373,29376],{"class":4223,"line":7572},[4221,29374,29375],{"class":4536},"      setPreference",[4221,29377,5391],{"class":4532},[4221,29379,29380,29383],{"class":4223,"line":7579},[4221,29381,29382],{"class":4536},"      colors",[4221,29384,5391],{"class":4532},[4221,29386,29387,29390,29392],{"class":4223,"line":7584},[4221,29388,29389],{"class":4536},"      spacing:",[4221,29391,28918],{"class":4536},[4221,29393,5391],{"class":4532},[4221,29395,29396,29399],{"class":4223,"line":7593},[4221,29397,29398],{"class":4536},"      radius",[4221,29400,5391],{"class":4532},[4221,29402,29403,29406],{"class":4223,"line":7598},[4221,29404,29405],{"class":4536},"      fontSize",[4221,29407,5391],{"class":4532},[4221,29409,29410],{"class":4223,"line":7603},[4221,29411,28472],{"class":4532},[4221,29413,29414,29416,29418,29420,29422,29424,29426,29428,29430],{"class":4223,"line":7608},[4221,29415,22674],{"class":4532},[4221,29417,21789],{"class":4536},[4221,29419,3785],{"class":4532},[4221,29421,22299],{"class":4536},[4221,29423,3785],{"class":4532},[4221,29425,22304],{"class":4536},[4221,29427,3785],{"class":4532},[4221,29429,21784],{"class":4536},[4221,29431,14422],{"class":4532},[4221,29433,29434],{"class":4223,"line":7625},[4221,29435,4893],{"class":4532},[4221,29437,29438],{"class":4223,"line":7650},[4221,29439,4246],{"emptyLinePlaceholder":4245},[4221,29441,29442,29444],{"class":4223,"line":7678},[4221,29443,4715],{"class":4528},[4221,29445,4718],{"class":4532},[4221,29447,29448,29450,29453,29455,29457,29459,29461,29463,29465,29467,29470,29472,29474,29476],{"class":4223,"line":7686},[4221,29449,4724],{"class":4723},[4221,29451,29452],{"class":4575},"ThemeContext.Provider",[4221,29454,29336],{"class":4732},[4221,29456,4736],{"class":4532},[4221,29458,4739],{"class":4571},[4221,29460,28881],{"class":4536},[4221,29462,4822],{"class":4571},[4221,29464,4850],{"class":4723},[4221,29466,4739],{"class":4571},[4221,29468,29469],{"class":4536},"children",[4221,29471,4822],{"class":4571},[4221,29473,4863],{"class":4723},[4221,29475,29452],{"class":4575},[4221,29477,4825],{"class":4723},[4221,29479,29480],{"class":4223,"line":7696},[4221,29481,4893],{"class":4532},[4221,29483,29484],{"class":4223,"line":7707},[4221,29485,4276],{"class":4532},[4221,29487,29488],{"class":4223,"line":7716},[4221,29489,4246],{"emptyLinePlaceholder":4245},[4221,29491,29492,29494,29496,29499,29502,29504],{"class":4223,"line":7721},[4221,29493,4700],{"class":4528},[4221,29495,4703],{"class":4571},[4221,29497,29498],{"class":4706}," useTheme",[4221,29500,29501],{"class":4532},"(): ",[4221,29503,28972],{"class":4575},[4221,29505,4579],{"class":4532},[4221,29507,29508,29510,29513,29515,29518,29520,29523],{"class":4223,"line":7742},[4221,29509,5452],{"class":4571},[4221,29511,29512],{"class":4619}," ctx",[4221,29514,4911],{"class":4532},[4221,29516,29517],{"class":4706},"useContext",[4221,29519,4757],{"class":4532},[4221,29521,29522],{"class":4536},"ThemeContext",[4221,29524,8278],{"class":4532},[4221,29526,29527,29529,29532,29535],{"class":4223,"line":7768},[4221,29528,29038],{"class":4528},[4221,29530,29531],{"class":4532}," (!",[4221,29533,29534],{"class":4536},"ctx",[4221,29536,11846],{"class":4532},[4221,29538,29539,29542,29545,29548,29550,29553],{"class":4223,"line":7783},[4221,29540,29541],{"class":4528},"    throw",[4221,29543,29544],{"class":4571}," new",[4221,29546,29547],{"class":4706}," Error",[4221,29549,4757],{"class":4532},[4221,29551,29552],{"class":4558},"'useTheme() потрібно викликати всередині \u003CThemeProvider>.'",[4221,29554,8278],{"class":4532},[4221,29556,29557],{"class":4223,"line":7791},[4221,29558,16427],{"class":4532},[4221,29560,29561,29563,29565],{"class":4223,"line":7801},[4221,29562,4715],{"class":4528},[4221,29564,29512],{"class":4536},[4221,29566,4562],{"class":4532},[4221,29568,29569],{"class":4223,"line":7812},[4221,29570,4276],{"class":4532},[4212,29572,29575],{"className":8091,"code":29573,"filename":29574,"language":8093,"meta":4217,"style":4217},"\u002F**\n * Семантичні кольори: назва = роль на екрані, не «синій-500».\n * light \u002F dark — дві палітри з однаковими ключами.\n *\u002F\n\nexport const lightColors = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  primaryPressed: '#1D4ED8',\n  border: '#E2E8F0',\n  danger: '#DC2626',\n  onPrimary: '#FFFFFF',\n} as const;\n\nexport const darkColors = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  primaryPressed: '#2563EB',\n  border: '#3A3A3C',\n  danger: '#F87171',\n  onPrimary: '#FFFFFF',\n} as const;\n\nexport type ColorTokens = {\n  [K in keyof typeof lightColors]: string;\n};\n\nexport type ColorSchemeName = 'light' | 'dark';\n\nexport function colorsForScheme(scheme: ColorSchemeName): ColorTokens {\n  return scheme === 'dark' ? { ...darkColors } : { ...lightColors };\n}\n","src\u002Fshared\u002Ftheme\u002Fcolors.ts",[3750,29576,29577,29581,29586,29591,29595,29599,29610,29619,29629,29638,29647,29656,29666,29675,29685,29694,29704,29708,29719,29728,29737,29746,29755,29764,29772,29781,29790,29798,29808,29812,29822,29847,29851,29855,29873,29877,29899,29923],{"__ignoreMap":4217},[4221,29578,29579],{"class":4223,"line":4224},[4221,29580,25682],{"class":6282},[4221,29582,29583],{"class":4223,"line":4230},[4221,29584,29585],{"class":6282}," * Семантичні кольори: назва = роль на екрані, не «синій-500».\n",[4221,29587,29588],{"class":4223,"line":4236},[4221,29589,29590],{"class":6282}," * light \u002F dark — дві палітри з однаковими ключами.\n",[4221,29592,29593],{"class":4223,"line":4242},[4221,29594,25697],{"class":6282},[4221,29596,29597],{"class":4223,"line":4249},[4221,29598,4246],{"emptyLinePlaceholder":4245},[4221,29600,29601,29603,29605,29608],{"class":4223,"line":4255},[4221,29602,4700],{"class":4528},[4221,29604,16008],{"class":4571},[4221,29606,29607],{"class":4619}," lightColors",[4221,29609,15868],{"class":4532},[4221,29611,29612,29615,29617],{"class":4223,"line":4261},[4221,29613,29614],{"class":4536},"  background:",[4221,29616,17809],{"class":4558},[4221,29618,5391],{"class":4532},[4221,29620,29621,29624,29627],{"class":4223,"line":4267},[4221,29622,29623],{"class":4536},"  surface:",[4221,29625,29626],{"class":4558}," '#FFFFFF'",[4221,29628,5391],{"class":4532},[4221,29630,29631,29634,29636],{"class":4223,"line":4273},[4221,29632,29633],{"class":4536},"  text:",[4221,29635,17869],{"class":4558},[4221,29637,5391],{"class":4532},[4221,29639,29640,29643,29645],{"class":4223,"line":4279},[4221,29641,29642],{"class":4536},"  textSecondary:",[4221,29644,17884],{"class":4558},[4221,29646,5391],{"class":4532},[4221,29648,29649,29652,29654],{"class":4223,"line":4284},[4221,29650,29651],{"class":4536},"  primary:",[4221,29653,17933],{"class":4558},[4221,29655,5391],{"class":4532},[4221,29657,29658,29661,29664],{"class":4223,"line":4290},[4221,29659,29660],{"class":4536},"  primaryPressed:",[4221,29662,29663],{"class":4558}," '#1D4ED8'",[4221,29665,5391],{"class":4532},[4221,29667,29668,29671,29673],{"class":4223,"line":4296},[4221,29669,29670],{"class":4536},"  border:",[4221,29672,17842],{"class":4558},[4221,29674,5391],{"class":4532},[4221,29676,29677,29680,29683],{"class":4223,"line":4302},[4221,29678,29679],{"class":4536},"  danger:",[4221,29681,29682],{"class":4558}," '#DC2626'",[4221,29684,5391],{"class":4532},[4221,29686,29687,29690,29692],{"class":4223,"line":4308},[4221,29688,29689],{"class":4536},"  onPrimary:",[4221,29691,29626],{"class":4558},[4221,29693,5391],{"class":4532},[4221,29695,29696,29698,29700,29702],{"class":4223,"line":4314},[4221,29697,6541],{"class":4532},[4221,29699,16005],{"class":4528},[4221,29701,16008],{"class":4571},[4221,29703,4562],{"class":4532},[4221,29705,29706],{"class":4223,"line":4319},[4221,29707,4246],{"emptyLinePlaceholder":4245},[4221,29709,29710,29712,29714,29717],{"class":4223,"line":4324},[4221,29711,4700],{"class":4528},[4221,29713,16008],{"class":4571},[4221,29715,29716],{"class":4619}," darkColors",[4221,29718,15868],{"class":4532},[4221,29720,29721,29723,29726],{"class":4223,"line":4330},[4221,29722,29614],{"class":4536},[4221,29724,29725],{"class":4558}," '#000000'",[4221,29727,5391],{"class":4532},[4221,29729,29730,29732,29735],{"class":4223,"line":4336},[4221,29731,29623],{"class":4536},[4221,29733,29734],{"class":4558}," '#1C1C1E'",[4221,29736,5391],{"class":4532},[4221,29738,29739,29741,29744],{"class":4223,"line":4342},[4221,29740,29633],{"class":4536},[4221,29742,29743],{"class":4558}," '#F5F5F7'",[4221,29745,5391],{"class":4532},[4221,29747,29748,29750,29753],{"class":4223,"line":4348},[4221,29749,29642],{"class":4536},[4221,29751,29752],{"class":4558}," '#A1A1AA'",[4221,29754,5391],{"class":4532},[4221,29756,29757,29759,29762],{"class":4223,"line":4354},[4221,29758,29651],{"class":4536},[4221,29760,29761],{"class":4558}," '#3B82F6'",[4221,29763,5391],{"class":4532},[4221,29765,29766,29768,29770],{"class":4223,"line":4360},[4221,29767,29660],{"class":4536},[4221,29769,17933],{"class":4558},[4221,29771,5391],{"class":4532},[4221,29773,29774,29776,29779],{"class":4223,"line":4365},[4221,29775,29670],{"class":4536},[4221,29777,29778],{"class":4558}," '#3A3A3C'",[4221,29780,5391],{"class":4532},[4221,29782,29783,29785,29788],{"class":4223,"line":4371},[4221,29784,29679],{"class":4536},[4221,29786,29787],{"class":4558}," '#F87171'",[4221,29789,5391],{"class":4532},[4221,29791,29792,29794,29796],{"class":4223,"line":4377},[4221,29793,29689],{"class":4536},[4221,29795,29626],{"class":4558},[4221,29797,5391],{"class":4532},[4221,29799,29800,29802,29804,29806],{"class":4223,"line":4383},[4221,29801,6541],{"class":4532},[4221,29803,16005],{"class":4528},[4221,29805,16008],{"class":4571},[4221,29807,4562],{"class":4532},[4221,29809,29810],{"class":4223,"line":4389},[4221,29811,4246],{"emptyLinePlaceholder":4245},[4221,29813,29814,29816,29818,29820],{"class":4223,"line":4395},[4221,29815,4700],{"class":4528},[4221,29817,25022],{"class":4571},[4221,29819,28760],{"class":4575},[4221,29821,15868],{"class":4532},[4221,29823,29824,29826,29829,29832,29835,29838,29840,29843,29845],{"class":4223,"line":4400},[4221,29825,14417],{"class":4532},[4221,29827,29828],{"class":4575},"K",[4221,29830,29831],{"class":4571}," in",[4221,29833,29834],{"class":4571}," keyof",[4221,29836,29837],{"class":4571}," typeof",[4221,29839,29607],{"class":4536},[4221,29841,29842],{"class":4532},"]: ",[4221,29844,4590],{"class":4575},[4221,29846,4562],{"class":4532},[4221,29848,29849],{"class":4223,"line":4405},[4221,29850,15933],{"class":4532},[4221,29852,29853],{"class":4223,"line":5860},[4221,29854,4246],{"emptyLinePlaceholder":4245},[4221,29856,29857,29859,29861,29863,29865,29867,29869,29871],{"class":4223,"line":5873},[4221,29858,4700],{"class":4528},[4221,29860,25022],{"class":4571},[4221,29862,28751],{"class":4575},[4221,29864,4911],{"class":4532},[4221,29866,29047],{"class":4558},[4221,29868,28825],{"class":4532},[4221,29870,5465],{"class":4558},[4221,29872,4562],{"class":4532},[4221,29874,29875],{"class":4223,"line":5891},[4221,29876,4246],{"emptyLinePlaceholder":4245},[4221,29878,29879,29881,29883,29885,29887,29889,29891,29893,29895,29897],{"class":4223,"line":5899},[4221,29880,4700],{"class":4528},[4221,29882,4703],{"class":4571},[4221,29884,29315],{"class":4706},[4221,29886,4757],{"class":4532},[4221,29888,21789],{"class":4536},[4221,29890,4587],{"class":4532},[4221,29892,28828],{"class":4575},[4221,29894,8861],{"class":4532},[4221,29896,28903],{"class":4575},[4221,29898,4579],{"class":4532},[4221,29900,29901,29903,29905,29907,29909,29912,29915,29918,29921],{"class":4223,"line":5905},[4221,29902,4715],{"class":4528},[4221,29904,29282],{"class":4536},[4221,29906,5408],{"class":4532},[4221,29908,5465],{"class":4558},[4221,29910,29911],{"class":4532}," ? { ...",[4221,29913,29914],{"class":4536},"darkColors",[4221,29916,29917],{"class":4532}," } : { ...",[4221,29919,29920],{"class":4536},"lightColors",[4221,29922,5294],{"class":4532},[4221,29924,29925],{"class":4223,"line":5955},[4221,29926,4276],{"class":4532},[4212,29928,29931],{"className":8091,"code":29929,"filename":29930,"language":8093,"meta":4217,"style":4217},"export { lightColors, darkColors, colorsForScheme } from '.\u002Fcolors';\nexport type { ColorTokens, ColorSchemeName } from '.\u002Fcolors';\nexport { tokens, space, radius, fontSize } from '.\u002Ftokens';\nexport type { Tokens } from '.\u002Ftokens';\nexport { ThemeProvider, useTheme } from '.\u002FThemeProvider';\nexport type { ThemePreference } from '.\u002FThemeProvider';\n","src\u002Fshared\u002Ftheme\u002Findex.ts",[3750,29932,29933,29958,29980,30009,30028,30049],{"__ignoreMap":4217},[4221,29934,29935,29937,29939,29941,29943,29945,29947,29950,29952,29954,29956],{"class":4223,"line":4224},[4221,29936,4700],{"class":4528},[4221,29938,4533],{"class":4532},[4221,29940,29920],{"class":4536},[4221,29942,3785],{"class":4532},[4221,29944,29914],{"class":4536},[4221,29946,3785],{"class":4532},[4221,29948,29949],{"class":4536},"colorsForScheme",[4221,29951,4552],{"class":4532},[4221,29953,4555],{"class":4528},[4221,29955,28771],{"class":4558},[4221,29957,4562],{"class":4532},[4221,29959,29960,29962,29964,29966,29968,29970,29972,29974,29976,29978],{"class":4223,"line":4230},[4221,29961,4700],{"class":4528},[4221,29963,25022],{"class":4528},[4221,29965,4533],{"class":4532},[4221,29967,28903],{"class":4536},[4221,29969,3785],{"class":4532},[4221,29971,28828],{"class":4536},[4221,29973,4552],{"class":4532},[4221,29975,4555],{"class":4528},[4221,29977,28771],{"class":4558},[4221,29979,4562],{"class":4532},[4221,29981,29982,29984,29986,29989,29991,29993,29995,29997,29999,30001,30003,30005,30007],{"class":4223,"line":4236},[4221,29983,4700],{"class":4528},[4221,29985,4533],{"class":4532},[4221,29987,29988],{"class":4536},"tokens",[4221,29990,3785],{"class":4532},[4221,29992,28791],{"class":4536},[4221,29994,3785],{"class":4532},[4221,29996,26823],{"class":4536},[4221,29998,3785],{"class":4532},[4221,30000,28782],{"class":4536},[4221,30002,4552],{"class":4532},[4221,30004,4555],{"class":4528},[4221,30006,28798],{"class":4558},[4221,30008,4562],{"class":4532},[4221,30010,30011,30013,30015,30017,30020,30022,30024,30026],{"class":4223,"line":4242},[4221,30012,4700],{"class":4528},[4221,30014,25022],{"class":4528},[4221,30016,4533],{"class":4532},[4221,30018,30019],{"class":4536},"Tokens",[4221,30021,4552],{"class":4532},[4221,30023,4555],{"class":4528},[4221,30025,28798],{"class":4558},[4221,30027,4562],{"class":4532},[4221,30029,30030,30032,30034,30036,30038,30040,30042,30044,30047],{"class":4223,"line":4249},[4221,30031,4700],{"class":4528},[4221,30033,4533],{"class":4532},[4221,30035,20833],{"class":4536},[4221,30037,3785],{"class":4532},[4221,30039,20885],{"class":4536},[4221,30041,4552],{"class":4532},[4221,30043,4555],{"class":4528},[4221,30045,30046],{"class":4558}," '.\u002FThemeProvider'",[4221,30048,4562],{"class":4532},[4221,30050,30051,30053,30055,30057,30059,30061,30063,30065],{"class":4223,"line":4255},[4221,30052,4700],{"class":4528},[4221,30054,25022],{"class":4528},[4221,30056,4533],{"class":4532},[4221,30058,22195],{"class":4536},[4221,30060,4552],{"class":4532},[4221,30062,4555],{"class":4528},[4221,30064,30046],{"class":4558},[4221,30066,4562],{"class":4532},[4212,30068,30071],{"className":8091,"code":30069,"filename":30070,"language":8093,"meta":4217,"style":4217},"\u002F**\n * Токени, що **не** залежать від light\u002Fdark:\n * відступи, радіуси, розміри шрифтів.\n * Кольори — у colors.ts + ThemeProvider.\n *\u002F\n\nexport const space = {\n  xs: 4,\n  sm: 8,\n  md: 16,\n  lg: 24,\n  xl: 32,\n} as const;\n\nexport const radius = {\n  sm: 8,\n  md: 12,\n  lg: 16,\n} as const;\n\nexport const fontSize = {\n  sm: 14,\n  md: 16,\n  lg: 20,\n  xl: 28,\n} as const;\n\n\u002F** @deprecated Використовуйте useTheme() для кольорів; space\u002Fradius\u002FfontSize — нижче. *\u002F\nexport const tokens = {\n  \u002F** Світла палітра (fallback, якщо хтось імпортує tokens.colors без теми). *\u002F\n  colors: {\n    background: '#F8FAFC',\n    surface: '#FFFFFF',\n    text: '#0F172A',\n    textSecondary: '#64748B',\n    primary: '#2563EB',\n    primaryPressed: '#1D4ED8',\n    border: '#E2E8F0',\n    danger: '#DC2626',\n    onPrimary: '#FFFFFF',\n  },\n  spacing: space,\n  radius,\n  fontSize,\n} as const;\n\nexport type Tokens = typeof tokens;\n","src\u002Fshared\u002Ftheme\u002Ftokens.ts",[3750,30072,30073,30077,30082,30087,30092,30096,30100,30110,30119,30128,30137,30146,30156,30166,30170,30180,30188,30196,30204,30214,30218,30228,30236,30244,30252,30261,30271,30275,30286,30297,30302,30309,30318,30327,30336,30345,30354,30363,30372,30381,30390,30394,30403,30409,30415,30425,30429],{"__ignoreMap":4217},[4221,30074,30075],{"class":4223,"line":4224},[4221,30076,25682],{"class":6282},[4221,30078,30079],{"class":4223,"line":4230},[4221,30080,30081],{"class":6282}," * Токени, що **не** залежать від light\u002Fdark:\n",[4221,30083,30084],{"class":4223,"line":4236},[4221,30085,30086],{"class":6282}," * відступи, радіуси, розміри шрифтів.\n",[4221,30088,30089],{"class":4223,"line":4242},[4221,30090,30091],{"class":6282}," * Кольори — у colors.ts + ThemeProvider.\n",[4221,30093,30094],{"class":4223,"line":4249},[4221,30095,25697],{"class":6282},[4221,30097,30098],{"class":4223,"line":4255},[4221,30099,4246],{"emptyLinePlaceholder":4245},[4221,30101,30102,30104,30106,30108],{"class":4223,"line":4261},[4221,30103,4700],{"class":4528},[4221,30105,16008],{"class":4571},[4221,30107,28918],{"class":4619},[4221,30109,15868],{"class":4532},[4221,30111,30112,30115,30117],{"class":4223,"line":4267},[4221,30113,30114],{"class":4536},"  xs:",[4221,30116,6121],{"class":4934},[4221,30118,5391],{"class":4532},[4221,30120,30121,30124,30126],{"class":4223,"line":4273},[4221,30122,30123],{"class":4536},"  sm:",[4221,30125,5701],{"class":4934},[4221,30127,5391],{"class":4532},[4221,30129,30130,30133,30135],{"class":4223,"line":4279},[4221,30131,30132],{"class":4536},"  md:",[4221,30134,4935],{"class":4934},[4221,30136,5391],{"class":4532},[4221,30138,30139,30142,30144],{"class":4223,"line":4284},[4221,30140,30141],{"class":4536},"  lg:",[4221,30143,6092],{"class":4934},[4221,30145,5391],{"class":4532},[4221,30147,30148,30151,30154],{"class":4223,"line":4290},[4221,30149,30150],{"class":4536},"  xl:",[4221,30152,30153],{"class":4934}," 32",[4221,30155,5391],{"class":4532},[4221,30157,30158,30160,30162,30164],{"class":4223,"line":4296},[4221,30159,6541],{"class":4532},[4221,30161,16005],{"class":4528},[4221,30163,16008],{"class":4571},[4221,30165,4562],{"class":4532},[4221,30167,30168],{"class":4223,"line":4302},[4221,30169,4246],{"emptyLinePlaceholder":4245},[4221,30171,30172,30174,30176,30178],{"class":4223,"line":4308},[4221,30173,4700],{"class":4528},[4221,30175,16008],{"class":4571},[4221,30177,26985],{"class":4619},[4221,30179,15868],{"class":4532},[4221,30181,30182,30184,30186],{"class":4223,"line":4314},[4221,30183,30123],{"class":4536},[4221,30185,5701],{"class":4934},[4221,30187,5391],{"class":4532},[4221,30189,30190,30192,30194],{"class":4223,"line":4319},[4221,30191,30132],{"class":4536},[4221,30193,6164],{"class":4934},[4221,30195,5391],{"class":4532},[4221,30197,30198,30200,30202],{"class":4223,"line":4324},[4221,30199,30141],{"class":4536},[4221,30201,4935],{"class":4934},[4221,30203,5391],{"class":4532},[4221,30205,30206,30208,30210,30212],{"class":4223,"line":4330},[4221,30207,6541],{"class":4532},[4221,30209,16005],{"class":4528},[4221,30211,16008],{"class":4571},[4221,30213,4562],{"class":4532},[4221,30215,30216],{"class":4223,"line":4336},[4221,30217,4246],{"emptyLinePlaceholder":4245},[4221,30219,30220,30222,30224,30226],{"class":4223,"line":4342},[4221,30221,4700],{"class":4528},[4221,30223,16008],{"class":4571},[4221,30225,28945],{"class":4619},[4221,30227,15868],{"class":4532},[4221,30229,30230,30232,30234],{"class":4223,"line":4348},[4221,30231,30123],{"class":4536},[4221,30233,6175],{"class":4934},[4221,30235,5391],{"class":4532},[4221,30237,30238,30240,30242],{"class":4223,"line":4354},[4221,30239,30132],{"class":4536},[4221,30241,4935],{"class":4934},[4221,30243,5391],{"class":4532},[4221,30245,30246,30248,30250],{"class":4223,"line":4360},[4221,30247,30141],{"class":4536},[4221,30249,6107],{"class":4934},[4221,30251,5391],{"class":4532},[4221,30253,30254,30256,30259],{"class":4223,"line":4365},[4221,30255,30150],{"class":4536},[4221,30257,30258],{"class":4934}," 28",[4221,30260,5391],{"class":4532},[4221,30262,30263,30265,30267,30269],{"class":4223,"line":4371},[4221,30264,6541],{"class":4532},[4221,30266,16005],{"class":4528},[4221,30268,16008],{"class":4571},[4221,30270,4562],{"class":4532},[4221,30272,30273],{"class":4223,"line":4377},[4221,30274,4246],{"emptyLinePlaceholder":4245},[4221,30276,30277,30280,30283],{"class":4223,"line":4383},[4221,30278,30279],{"class":6282},"\u002F** ",[4221,30281,30282],{"class":4571},"@deprecated",[4221,30284,30285],{"class":6282}," Використовуйте useTheme() для кольорів; space\u002Fradius\u002FfontSize — нижче. *\u002F\n",[4221,30287,30288,30290,30292,30295],{"class":4223,"line":4389},[4221,30289,4700],{"class":4528},[4221,30291,16008],{"class":4571},[4221,30293,30294],{"class":4619}," tokens",[4221,30296,15868],{"class":4532},[4221,30298,30299],{"class":4223,"line":4395},[4221,30300,30301],{"class":6282},"  \u002F** Світла палітра (fallback, якщо хтось імпортує tokens.colors без теми). *\u002F\n",[4221,30303,30304,30307],{"class":4223,"line":4400},[4221,30305,30306],{"class":4536},"  colors:",[4221,30308,4579],{"class":4532},[4221,30310,30311,30314,30316],{"class":4223,"line":4405},[4221,30312,30313],{"class":4536},"    background:",[4221,30315,17809],{"class":4558},[4221,30317,5391],{"class":4532},[4221,30319,30320,30323,30325],{"class":4223,"line":5860},[4221,30321,30322],{"class":4536},"    surface:",[4221,30324,29626],{"class":4558},[4221,30326,5391],{"class":4532},[4221,30328,30329,30332,30334],{"class":4223,"line":5873},[4221,30330,30331],{"class":4536},"    text:",[4221,30333,17869],{"class":4558},[4221,30335,5391],{"class":4532},[4221,30337,30338,30341,30343],{"class":4223,"line":5891},[4221,30339,30340],{"class":4536},"    textSecondary:",[4221,30342,17884],{"class":4558},[4221,30344,5391],{"class":4532},[4221,30346,30347,30350,30352],{"class":4223,"line":5899},[4221,30348,30349],{"class":4536},"    primary:",[4221,30351,17933],{"class":4558},[4221,30353,5391],{"class":4532},[4221,30355,30356,30359,30361],{"class":4223,"line":5905},[4221,30357,30358],{"class":4536},"    primaryPressed:",[4221,30360,29663],{"class":4558},[4221,30362,5391],{"class":4532},[4221,30364,30365,30368,30370],{"class":4223,"line":5955},[4221,30366,30367],{"class":4536},"    border:",[4221,30369,17842],{"class":4558},[4221,30371,5391],{"class":4532},[4221,30373,30374,30377,30379],{"class":4223,"line":6002},[4221,30375,30376],{"class":4536},"    danger:",[4221,30378,29682],{"class":4558},[4221,30380,5391],{"class":4532},[4221,30382,30383,30386,30388],{"class":4223,"line":6012},[4221,30384,30385],{"class":4536},"    onPrimary:",[4221,30387,29626],{"class":4558},[4221,30389,5391],{"class":4532},[4221,30391,30392],{"class":4223,"line":6020},[4221,30393,6183],{"class":4532},[4221,30395,30396,30399,30401],{"class":4223,"line":6026},[4221,30397,30398],{"class":4536},"  spacing:",[4221,30400,28918],{"class":4536},[4221,30402,5391],{"class":4532},[4221,30404,30405,30407],{"class":4223,"line":6036},[4221,30406,28925],{"class":4536},[4221,30408,5391],{"class":4532},[4221,30410,30411,30413],{"class":4223,"line":6041},[4221,30412,28938],{"class":4536},[4221,30414,5391],{"class":4532},[4221,30416,30417,30419,30421,30423],{"class":4223,"line":6046},[4221,30418,6541],{"class":4532},[4221,30420,16005],{"class":4528},[4221,30422,16008],{"class":4571},[4221,30424,4562],{"class":4532},[4221,30426,30427],{"class":4223,"line":6051},[4221,30428,4246],{"emptyLinePlaceholder":4245},[4221,30430,30431,30433,30435,30438,30440,30442,30444],{"class":4223,"line":6068},[4221,30432,4700],{"class":4528},[4221,30434,25022],{"class":4571},[4221,30436,30437],{"class":4575}," Tokens",[4221,30439,4911],{"class":4532},[4221,30441,28915],{"class":4571},[4221,30443,30294],{"class":4536},[4221,30445,4562],{"class":4532},[4212,30447,30450],{"className":4519,"code":30448,"filename":30449,"language":4521,"meta":4217,"style":4217},"import { ReactNode } from 'react';\nimport { StyleSheet, Text, TextProps, TextStyle } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype AppTextVariant = 'body' | 'title' | 'subtitle' | 'caption';\n\ntype AppTextProps = TextProps & {\n  children: ReactNode;\n  variant?: AppTextVariant;\n  \u002F** Якщо не передано — body\u002Ftitle\u002Fsubtitle → text, caption → textSecondary. *\u002F\n  color?: string;\n  style?: TextStyle | TextStyle[];\n};\n\nexport function AppText({\n  children,\n  variant = 'body',\n  color,\n  style,\n  ...rest\n}: AppTextProps) {\n  const { colors, fontSize } = useTheme();\n  const resolvedColor =\n    color ??\n    (variant === 'caption' ? colors.textSecondary : colors.text);\n\n  return (\n    \u003CText\n      style={[\n        styles.base,\n        variant === 'body' && { fontSize: fontSize.md, lineHeight: 24 },\n        variant === 'title' && {\n          fontSize: fontSize.xl,\n          fontWeight: '700',\n          lineHeight: 34,\n        },\n        variant === 'subtitle' && {\n          fontSize: fontSize.lg,\n          fontWeight: '600',\n          lineHeight: 28,\n        },\n        variant === 'caption' && {\n          fontSize: fontSize.sm,\n          lineHeight: 20,\n        },\n        { color: resolvedColor },\n        style,\n      ]}\n      {...rest}\n    >\n      {children}\n    \u003C\u002FText>\n  );\n}\n\nconst styles = StyleSheet.create({\n  base: {},\n});\n","src\u002Fshared\u002Fui\u002FAppText.tsx",[3750,30451,30452,30468,30498,30502,30518,30522,30551,30555,30569,30579,30591,30596,30607,30622,30626,30630,30641,30647,30657,30663,30669,30677,30686,30704,30713,30721,30751,30755,30761,30768,30778,30789,30818,30831,30844,30853,30863,30867,30880,30892,30900,30908,30912,30925,30937,30945,30949,30960,30966,30972,30984,30988,30996,31004,31008,31012,31016,31032,31039],{"__ignoreMap":4217},[4221,30453,30454,30456,30458,30460,30462,30464,30466],{"class":4223,"line":4224},[4221,30455,4529],{"class":4528},[4221,30457,4533],{"class":4532},[4221,30459,29118],{"class":4536},[4221,30461,4552],{"class":4532},[4221,30463,4555],{"class":4528},[4221,30465,6486],{"class":4558},[4221,30467,4562],{"class":4532},[4221,30469,30470,30472,30474,30476,30478,30480,30482,30485,30487,30490,30492,30494,30496],{"class":4223,"line":4230},[4221,30471,4529],{"class":4528},[4221,30473,4533],{"class":4532},[4221,30475,4549],{"class":4536},[4221,30477,3785],{"class":4532},[4221,30479,4150],{"class":4536},[4221,30481,3785],{"class":4532},[4221,30483,30484],{"class":4536},"TextProps",[4221,30486,3785],{"class":4532},[4221,30488,30489],{"class":4536},"TextStyle",[4221,30491,4552],{"class":4532},[4221,30493,4555],{"class":4528},[4221,30495,4559],{"class":4558},[4221,30497,4562],{"class":4532},[4221,30499,30500],{"class":4223,"line":4236},[4221,30501,4246],{"emptyLinePlaceholder":4245},[4221,30503,30504,30506,30508,30510,30512,30514,30516],{"class":4223,"line":4242},[4221,30505,4529],{"class":4528},[4221,30507,4533],{"class":4532},[4221,30509,20885],{"class":4536},[4221,30511,4552],{"class":4532},[4221,30513,4555],{"class":4528},[4221,30515,21760],{"class":4558},[4221,30517,4562],{"class":4532},[4221,30519,30520],{"class":4223,"line":4249},[4221,30521,4246],{"emptyLinePlaceholder":4245},[4221,30523,30524,30526,30529,30531,30534,30536,30539,30541,30544,30546,30549],{"class":4223,"line":4255},[4221,30525,5261],{"class":4571},[4221,30527,30528],{"class":4575}," AppTextVariant",[4221,30530,4911],{"class":4532},[4221,30532,30533],{"class":4558},"'body'",[4221,30535,28825],{"class":4532},[4221,30537,30538],{"class":4558},"'title'",[4221,30540,28825],{"class":4532},[4221,30542,30543],{"class":4558},"'subtitle'",[4221,30545,28825],{"class":4532},[4221,30547,30548],{"class":4558},"'caption'",[4221,30550,4562],{"class":4532},[4221,30552,30553],{"class":4223,"line":4261},[4221,30554,4246],{"emptyLinePlaceholder":4245},[4221,30556,30557,30559,30562,30564,30566],{"class":4223,"line":4267},[4221,30558,5261],{"class":4571},[4221,30560,30561],{"class":4575}," AppTextProps",[4221,30563,4911],{"class":4532},[4221,30565,30484],{"class":4575},[4221,30567,30568],{"class":4532}," & {\n",[4221,30570,30571,30573,30575,30577],{"class":4223,"line":4273},[4221,30572,29113],{"class":4536},[4221,30574,4587],{"class":4532},[4221,30576,29118],{"class":4575},[4221,30578,4562],{"class":4532},[4221,30580,30581,30584,30586,30589],{"class":4223,"line":4279},[4221,30582,30583],{"class":4536},"  variant",[4221,30585,29133],{"class":4532},[4221,30587,30588],{"class":4575},"AppTextVariant",[4221,30590,4562],{"class":4532},[4221,30592,30593],{"class":4223,"line":4284},[4221,30594,30595],{"class":6282},"  \u002F** Якщо не передано — body\u002Ftitle\u002Fsubtitle → text, caption → textSecondary. *\u002F\n",[4221,30597,30598,30601,30603,30605],{"class":4223,"line":4290},[4221,30599,30600],{"class":4536},"  color",[4221,30602,29133],{"class":4532},[4221,30604,4590],{"class":4575},[4221,30606,4562],{"class":4532},[4221,30608,30609,30612,30614,30616,30618,30620],{"class":4223,"line":4296},[4221,30610,30611],{"class":4536},"  style",[4221,30613,29133],{"class":4532},[4221,30615,30489],{"class":4575},[4221,30617,28825],{"class":4532},[4221,30619,30489],{"class":4575},[4221,30621,12347],{"class":4532},[4221,30623,30624],{"class":4223,"line":4302},[4221,30625,15933],{"class":4532},[4221,30627,30628],{"class":4223,"line":4308},[4221,30629,4246],{"emptyLinePlaceholder":4245},[4221,30631,30632,30634,30636,30639],{"class":4223,"line":4314},[4221,30633,4700],{"class":4528},[4221,30635,4703],{"class":4571},[4221,30637,30638],{"class":4706}," AppText",[4221,30640,4921],{"class":4532},[4221,30642,30643,30645],{"class":4223,"line":4319},[4221,30644,29113],{"class":4536},[4221,30646,5391],{"class":4532},[4221,30648,30649,30651,30653,30655],{"class":4223,"line":4324},[4221,30650,30583],{"class":4536},[4221,30652,4911],{"class":4532},[4221,30654,30533],{"class":4558},[4221,30656,5391],{"class":4532},[4221,30658,30659,30661],{"class":4223,"line":4330},[4221,30660,30600],{"class":4536},[4221,30662,5391],{"class":4532},[4221,30664,30665,30667],{"class":4223,"line":4336},[4221,30666,30611],{"class":4536},[4221,30668,5391],{"class":4532},[4221,30670,30671,30674],{"class":4223,"line":4342},[4221,30672,30673],{"class":4532},"  ...",[4221,30675,30676],{"class":4536},"rest\n",[4221,30678,30679,30681,30684],{"class":4223,"line":4348},[4221,30680,29177],{"class":4532},[4221,30682,30683],{"class":4575},"AppTextProps",[4221,30685,11846],{"class":4532},[4221,30687,30688,30690,30692,30694,30696,30698,30700,30702],{"class":4223,"line":4354},[4221,30689,5452],{"class":4571},[4221,30691,4533],{"class":4532},[4221,30693,21784],{"class":4619},[4221,30695,3785],{"class":4532},[4221,30697,28782],{"class":4619},[4221,30699,21792],{"class":4532},[4221,30701,20885],{"class":4706},[4221,30703,21797],{"class":4532},[4221,30705,30706,30708,30711],{"class":4223,"line":4360},[4221,30707,5452],{"class":4571},[4221,30709,30710],{"class":4619}," resolvedColor",[4221,30712,14874],{"class":4532},[4221,30714,30715,30718],{"class":4223,"line":4365},[4221,30716,30717],{"class":4536},"    color",[4221,30719,30720],{"class":4532}," ??\n",[4221,30722,30723,30726,30729,30731,30733,30735,30737,30739,30741,30743,30745,30747,30749],{"class":4223,"line":4371},[4221,30724,30725],{"class":4532},"    (",[4221,30727,30728],{"class":4536},"variant",[4221,30730,5408],{"class":4532},[4221,30732,30548],{"class":4558},[4221,30734,5413],{"class":4532},[4221,30736,21784],{"class":4536},[4221,30738,3793],{"class":4532},[4221,30740,23285],{"class":4536},[4221,30742,5419],{"class":4532},[4221,30744,21784],{"class":4536},[4221,30746,3793],{"class":4532},[4221,30748,14937],{"class":4536},[4221,30750,8278],{"class":4532},[4221,30752,30753],{"class":4223,"line":4377},[4221,30754,4246],{"emptyLinePlaceholder":4245},[4221,30756,30757,30759],{"class":4223,"line":4383},[4221,30758,4715],{"class":4528},[4221,30760,4718],{"class":4532},[4221,30762,30763,30765],{"class":4223,"line":4389},[4221,30764,4724],{"class":4723},[4221,30766,30767],{"class":4575},"Text\n",[4221,30769,30770,30772,30774,30776],{"class":4223,"line":4395},[4221,30771,23130],{"class":4732},[4221,30773,4736],{"class":4532},[4221,30775,4739],{"class":4571},[4221,30777,5857],{"class":4756},[4221,30779,30780,30782,30784,30787],{"class":4223,"line":4400},[4221,30781,23141],{"class":4536},[4221,30783,3793],{"class":4756},[4221,30785,30786],{"class":4536},"base",[4221,30788,5391],{"class":4756},[4221,30790,30791,30793,30795,30798,30800,30802,30804,30806,30808,30810,30812,30814,30816],{"class":4223,"line":4405},[4221,30792,23264],{"class":4536},[4221,30794,7212],{"class":4532},[4221,30796,30797],{"class":4558}," 'body'",[4221,30799,27742],{"class":4532},[4221,30801,4533],{"class":4756},[4221,30803,4968],{"class":4536},[4221,30805,28945],{"class":4536},[4221,30807,3793],{"class":4756},[4221,30809,22760],{"class":4536},[4221,30811,3785],{"class":4756},[4221,30813,7410],{"class":4536},[4221,30815,6092],{"class":4934},[4221,30817,4650],{"class":4756},[4221,30819,30820,30822,30824,30827,30829],{"class":4223,"line":5860},[4221,30821,23264],{"class":4536},[4221,30823,7212],{"class":4532},[4221,30825,30826],{"class":4558}," 'title'",[4221,30828,27742],{"class":4532},[4221,30830,4579],{"class":4756},[4221,30832,30833,30836,30838,30840,30842],{"class":4223,"line":5873},[4221,30834,30835],{"class":4536},"          fontSize:",[4221,30837,28945],{"class":4536},[4221,30839,3793],{"class":4756},[4221,30841,23177],{"class":4536},[4221,30843,5391],{"class":4756},[4221,30845,30846,30849,30851],{"class":4223,"line":5891},[4221,30847,30848],{"class":4536},"          fontWeight:",[4221,30850,6201],{"class":4558},[4221,30852,5391],{"class":4756},[4221,30854,30855,30858,30861],{"class":4223,"line":5899},[4221,30856,30857],{"class":4536},"          lineHeight:",[4221,30859,30860],{"class":4934}," 34",[4221,30862,5391],{"class":4756},[4221,30864,30865],{"class":4223,"line":5905},[4221,30866,23197],{"class":4756},[4221,30868,30869,30871,30873,30876,30878],{"class":4223,"line":5955},[4221,30870,23264],{"class":4536},[4221,30872,7212],{"class":4532},[4221,30874,30875],{"class":4558}," 'subtitle'",[4221,30877,27742],{"class":4532},[4221,30879,4579],{"class":4756},[4221,30881,30882,30884,30886,30888,30890],{"class":4223,"line":6002},[4221,30883,30835],{"class":4536},[4221,30885,28945],{"class":4536},[4221,30887,3793],{"class":4756},[4221,30889,27728],{"class":4536},[4221,30891,5391],{"class":4756},[4221,30893,30894,30896,30898],{"class":4223,"line":6012},[4221,30895,30848],{"class":4536},[4221,30897,7538],{"class":4558},[4221,30899,5391],{"class":4756},[4221,30901,30902,30904,30906],{"class":4223,"line":6020},[4221,30903,30857],{"class":4536},[4221,30905,30258],{"class":4934},[4221,30907,5391],{"class":4756},[4221,30909,30910],{"class":4223,"line":6026},[4221,30911,23197],{"class":4756},[4221,30913,30914,30916,30918,30921,30923],{"class":4223,"line":6036},[4221,30915,23264],{"class":4536},[4221,30917,7212],{"class":4532},[4221,30919,30920],{"class":4558}," 'caption'",[4221,30922,27742],{"class":4532},[4221,30924,4579],{"class":4756},[4221,30926,30927,30929,30931,30933,30935],{"class":4223,"line":6041},[4221,30928,30835],{"class":4536},[4221,30930,28945],{"class":4536},[4221,30932,3793],{"class":4756},[4221,30934,22819],{"class":4536},[4221,30936,5391],{"class":4756},[4221,30938,30939,30941,30943],{"class":4223,"line":6046},[4221,30940,30857],{"class":4536},[4221,30942,6107],{"class":4934},[4221,30944,5391],{"class":4756},[4221,30946,30947],{"class":4223,"line":6051},[4221,30948,23197],{"class":4756},[4221,30950,30951,30954,30956,30958],{"class":4223,"line":6068},[4221,30952,30953],{"class":4756},"        { ",[4221,30955,5657],{"class":4536},[4221,30957,30710],{"class":4536},[4221,30959,4650],{"class":4756},[4221,30961,30962,30964],{"class":4223,"line":6097},[4221,30963,5740],{"class":4536},[4221,30965,5391],{"class":4756},[4221,30967,30968,30970],{"class":4223,"line":6126},[4221,30969,23202],{"class":4756},[4221,30971,4276],{"class":4571},[4221,30973,30974,30976,30979,30982],{"class":4223,"line":6140},[4221,30975,22781],{"class":4571},[4221,30977,30978],{"class":4532},"...",[4221,30980,30981],{"class":4536},"rest",[4221,30983,4276],{"class":4571},[4221,30985,30986],{"class":4223,"line":6148},[4221,30987,23209],{"class":4723},[4221,30989,30990,30992,30994],{"class":4223,"line":6158},[4221,30991,22781],{"class":4571},[4221,30993,29469],{"class":4536},[4221,30995,4276],{"class":4571},[4221,30997,30998,31000,31002],{"class":4223,"line":6169},[4221,30999,6029],{"class":4723},[4221,31001,4150],{"class":4575},[4221,31003,4825],{"class":4723},[4221,31005,31006],{"class":4223,"line":6180},[4221,31007,4893],{"class":4532},[4221,31009,31010],{"class":4223,"line":6186},[4221,31011,4276],{"class":4532},[4221,31013,31014],{"class":4223,"line":6212},[4221,31015,4246],{"emptyLinePlaceholder":4245},[4221,31017,31018,31020,31022,31024,31026,31028,31030],{"class":4223,"line":7314},[4221,31019,4616],{"class":4571},[4221,31021,4908],{"class":4619},[4221,31023,4911],{"class":4532},[4221,31025,4549],{"class":4536},[4221,31027,3793],{"class":4532},[4221,31029,4918],{"class":4706},[4221,31031,4921],{"class":4532},[4221,31033,31034,31037],{"class":4223,"line":7338},[4221,31035,31036],{"class":4536},"  base:",[4221,31038,28467],{"class":4532},[4221,31040,31041],{"class":4223,"line":7381},[4221,31042,4985],{"class":4532},[4212,31044,31047],{"className":4519,"code":31045,"filename":31046,"language":4521,"meta":4217,"style":4217},"import { Pressable, StyleSheet, Text, ViewStyle } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype ButtonProps = {\n  label: string;\n  onPress: () => void;\n  disabled?: boolean;\n  style?: ViewStyle;\n};\n\nexport function Button({ label, onPress, disabled = false, style }: ButtonProps) {\n  const { colors, spacing, radius, fontSize } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      disabled={disabled}\n      onPress={onPress}\n      style={({ pressed }) => [\n        styles.base,\n        {\n          backgroundColor: colors.primary,\n          paddingVertical: spacing.sm + 4,\n          paddingHorizontal: spacing.md,\n          borderRadius: radius.md,\n        },\n        pressed && !disabled ? { backgroundColor: colors.primaryPressed } : null,\n        disabled ? styles.disabled : null,\n        style,\n      ]}\n    >\n      \u003CText\n        style={[\n          styles.label,\n          { color: colors.onPrimary, fontSize: fontSize.md },\n        ]}\n      >\n        {label}\n      \u003C\u002FText>\n    \u003C\u002FPressable>\n  );\n}\n\nconst styles = StyleSheet.create({\n  base: {\n    alignItems: 'center',\n  },\n  disabled: {\n    opacity: 0.5,\n  },\n  label: {\n    fontWeight: '600',\n  },\n});\n","src\u002Fshared\u002Fui\u002FButton.tsx",[3750,31048,31049,31078,31082,31098,31102,31111,31122,31135,31146,31156,31160,31164,31201,31227,31231,31237,31243,31251,31264,31276,31294,31304,31308,31320,31336,31348,31360,31364,31396,31415,31421,31427,31431,31437,31447,31457,31482,31488,31492,31500,31508,31516,31520,31524,31528,31544,31550,31558,31562,31569,31577,31581,31588,31596,31600],{"__ignoreMap":4217},[4221,31050,31051,31053,31055,31057,31059,31061,31063,31065,31067,31070,31072,31074,31076],{"class":4223,"line":4224},[4221,31052,4529],{"class":4528},[4221,31054,4533],{"class":4532},[4221,31056,4156],{"class":4536},[4221,31058,3785],{"class":4532},[4221,31060,4549],{"class":4536},[4221,31062,3785],{"class":4532},[4221,31064,4150],{"class":4536},[4221,31066,3785],{"class":4532},[4221,31068,31069],{"class":4536},"ViewStyle",[4221,31071,4552],{"class":4532},[4221,31073,4555],{"class":4528},[4221,31075,4559],{"class":4558},[4221,31077,4562],{"class":4532},[4221,31079,31080],{"class":4223,"line":4230},[4221,31081,4246],{"emptyLinePlaceholder":4245},[4221,31083,31084,31086,31088,31090,31092,31094,31096],{"class":4223,"line":4236},[4221,31085,4529],{"class":4528},[4221,31087,4533],{"class":4532},[4221,31089,20885],{"class":4536},[4221,31091,4552],{"class":4532},[4221,31093,4555],{"class":4528},[4221,31095,21760],{"class":4558},[4221,31097,4562],{"class":4532},[4221,31099,31100],{"class":4223,"line":4242},[4221,31101,4246],{"emptyLinePlaceholder":4245},[4221,31103,31104,31106,31109],{"class":4223,"line":4249},[4221,31105,5261],{"class":4571},[4221,31107,31108],{"class":4575}," ButtonProps",[4221,31110,15868],{"class":4532},[4221,31112,31113,31116,31118,31120],{"class":4223,"line":4255},[4221,31114,31115],{"class":4536},"  label",[4221,31117,4587],{"class":4532},[4221,31119,4590],{"class":4575},[4221,31121,4562],{"class":4532},[4221,31123,31124,31126,31129,31131,31133],{"class":4223,"line":4261},[4221,31125,26757],{"class":4706},[4221,31127,31128],{"class":4532},": () ",[4221,31130,4766],{"class":4571},[4221,31132,26773],{"class":4575},[4221,31134,4562],{"class":4532},[4221,31136,31137,31140,31142,31144],{"class":4223,"line":4267},[4221,31138,31139],{"class":4536},"  disabled",[4221,31141,29133],{"class":4532},[4221,31143,5144],{"class":4575},[4221,31145,4562],{"class":4532},[4221,31147,31148,31150,31152,31154],{"class":4223,"line":4273},[4221,31149,30611],{"class":4536},[4221,31151,29133],{"class":4532},[4221,31153,31069],{"class":4575},[4221,31155,4562],{"class":4532},[4221,31157,31158],{"class":4223,"line":4279},[4221,31159,15933],{"class":4532},[4221,31161,31162],{"class":4223,"line":4284},[4221,31163,4246],{"emptyLinePlaceholder":4245},[4221,31165,31166,31168,31170,31173,31175,31177,31179,31181,31183,31186,31188,31190,31192,31194,31196,31199],{"class":4223,"line":4290},[4221,31167,4700],{"class":4528},[4221,31169,4703],{"class":4571},[4221,31171,31172],{"class":4706}," Button",[4221,31174,4788],{"class":4532},[4221,31176,22200],{"class":4536},[4221,31178,3785],{"class":4532},[4221,31180,14128],{"class":4536},[4221,31182,3785],{"class":4532},[4221,31184,31185],{"class":4536},"disabled",[4221,31187,4911],{"class":4532},[4221,31189,8691],{"class":4571},[4221,31191,3785],{"class":4532},[4221,31193,5085],{"class":4536},[4221,31195,26801],{"class":4532},[4221,31197,31198],{"class":4575},"ButtonProps",[4221,31200,11846],{"class":4532},[4221,31202,31203,31205,31207,31209,31211,31213,31215,31217,31219,31221,31223,31225],{"class":4223,"line":4296},[4221,31204,5452],{"class":4571},[4221,31206,4533],{"class":4532},[4221,31208,21784],{"class":4619},[4221,31210,3785],{"class":4532},[4221,31212,22294],{"class":4619},[4221,31214,3785],{"class":4532},[4221,31216,26823],{"class":4619},[4221,31218,3785],{"class":4532},[4221,31220,28782],{"class":4619},[4221,31222,21792],{"class":4532},[4221,31224,20885],{"class":4706},[4221,31226,21797],{"class":4532},[4221,31228,31229],{"class":4223,"line":4302},[4221,31230,4246],{"emptyLinePlaceholder":4245},[4221,31232,31233,31235],{"class":4223,"line":4308},[4221,31234,4715],{"class":4528},[4221,31236,4718],{"class":4532},[4221,31238,31239,31241],{"class":4223,"line":4314},[4221,31240,4724],{"class":4723},[4221,31242,6833],{"class":4575},[4221,31244,31245,31247,31249],{"class":4223,"line":4319},[4221,31246,26850],{"class":4732},[4221,31248,4736],{"class":4532},[4221,31250,23959],{"class":4558},[4221,31252,31253,31256,31258,31260,31262],{"class":4223,"line":4324},[4221,31254,31255],{"class":4732},"      disabled",[4221,31257,4736],{"class":4532},[4221,31259,4739],{"class":4571},[4221,31261,31185],{"class":4536},[4221,31263,4276],{"class":4571},[4221,31265,31266,31268,31270,31272,31274],{"class":4223,"line":4330},[4221,31267,26898],{"class":4732},[4221,31269,4736],{"class":4532},[4221,31271,4739],{"class":4571},[4221,31273,14128],{"class":4536},[4221,31275,4276],{"class":4571},[4221,31277,31278,31280,31282,31284,31286,31288,31290,31292],{"class":4223,"line":4336},[4221,31279,23130],{"class":4732},[4221,31281,4736],{"class":4532},[4221,31283,4739],{"class":4571},[4221,31285,4788],{"class":4756},[4221,31287,26930],{"class":4536},[4221,31289,4793],{"class":4756},[4221,31291,4766],{"class":4571},[4221,31293,6866],{"class":4756},[4221,31295,31296,31298,31300,31302],{"class":4223,"line":4342},[4221,31297,23141],{"class":4536},[4221,31299,3793],{"class":4756},[4221,31301,30786],{"class":4536},[4221,31303,5391],{"class":4756},[4221,31305,31306],{"class":4223,"line":4348},[4221,31307,23152],{"class":4756},[4221,31309,31310,31312,31314,31316,31318],{"class":4223,"line":4354},[4221,31311,26956],{"class":4536},[4221,31313,21884],{"class":4536},[4221,31315,3793],{"class":4756},[4221,31317,9597],{"class":4536},[4221,31319,5391],{"class":4756},[4221,31321,31322,31324,31326,31328,31330,31332,31334],{"class":4223,"line":4360},[4221,31323,23170],{"class":4536},[4221,31325,22755],{"class":4536},[4221,31327,3793],{"class":4756},[4221,31329,22819],{"class":4536},[4221,31331,5380],{"class":4532},[4221,31333,6121],{"class":4934},[4221,31335,5391],{"class":4756},[4221,31337,31338,31340,31342,31344,31346],{"class":4223,"line":4365},[4221,31339,23157],{"class":4536},[4221,31341,22755],{"class":4536},[4221,31343,3793],{"class":4756},[4221,31345,22760],{"class":4536},[4221,31347,5391],{"class":4756},[4221,31349,31350,31352,31354,31356,31358],{"class":4223,"line":4371},[4221,31351,26982],{"class":4536},[4221,31353,26985],{"class":4536},[4221,31355,3793],{"class":4756},[4221,31357,22760],{"class":4536},[4221,31359,5391],{"class":4756},[4221,31361,31362],{"class":4223,"line":4377},[4221,31363,23197],{"class":4756},[4221,31365,31366,31368,31370,31372,31374,31376,31378,31380,31382,31384,31387,31389,31391,31394],{"class":4223,"line":4383},[4221,31367,27739],{"class":4536},[4221,31369,27742],{"class":4532},[4221,31371,11262],{"class":4532},[4221,31373,31185],{"class":4536},[4221,31375,7218],{"class":4532},[4221,31377,4533],{"class":4756},[4221,31379,5621],{"class":4536},[4221,31381,21884],{"class":4536},[4221,31383,3793],{"class":4756},[4221,31385,31386],{"class":4536},"primaryPressed",[4221,31388,4552],{"class":4756},[4221,31390,4997],{"class":4532},[4221,31392,31393],{"class":4571}," null",[4221,31395,5391],{"class":4756},[4221,31397,31398,31401,31403,31405,31407,31409,31411,31413],{"class":4223,"line":4389},[4221,31399,31400],{"class":4536},"        disabled",[4221,31402,7218],{"class":4532},[4221,31404,4908],{"class":4536},[4221,31406,3793],{"class":4756},[4221,31408,31185],{"class":4536},[4221,31410,7228],{"class":4532},[4221,31412,31393],{"class":4571},[4221,31414,5391],{"class":4756},[4221,31416,31417,31419],{"class":4223,"line":4395},[4221,31418,5740],{"class":4536},[4221,31420,5391],{"class":4756},[4221,31422,31423,31425],{"class":4223,"line":4400},[4221,31424,23202],{"class":4756},[4221,31426,4276],{"class":4571},[4221,31428,31429],{"class":4223,"line":4405},[4221,31430,23209],{"class":4723},[4221,31432,31433,31435],{"class":4223,"line":5860},[4221,31434,5635],{"class":4723},[4221,31436,30767],{"class":4575},[4221,31438,31439,31441,31443,31445],{"class":4223,"line":5873},[4221,31440,5740],{"class":4732},[4221,31442,4736],{"class":4532},[4221,31444,4739],{"class":4571},[4221,31446,5857],{"class":4756},[4221,31448,31449,31451,31453,31455],{"class":4223,"line":5891},[4221,31450,23396],{"class":4536},[4221,31452,3793],{"class":4756},[4221,31454,22200],{"class":4536},[4221,31456,5391],{"class":4756},[4221,31458,31459,31462,31464,31466,31468,31470,31472,31474,31476,31478,31480],{"class":4223,"line":5899},[4221,31460,31461],{"class":4756},"          { ",[4221,31463,5657],{"class":4536},[4221,31465,21884],{"class":4536},[4221,31467,3793],{"class":4756},[4221,31469,24047],{"class":4536},[4221,31471,3785],{"class":4756},[4221,31473,4968],{"class":4536},[4221,31475,28945],{"class":4536},[4221,31477,3793],{"class":4756},[4221,31479,22760],{"class":4536},[4221,31481,4650],{"class":4756},[4221,31483,31484,31486],{"class":4223,"line":5905},[4221,31485,23484],{"class":4756},[4221,31487,4276],{"class":4571},[4221,31489,31490],{"class":4223,"line":5955},[4221,31491,23309],{"class":4723},[4221,31493,31494,31496,31498],{"class":4223,"line":6002},[4221,31495,11003],{"class":4571},[4221,31497,22200],{"class":4536},[4221,31499,4276],{"class":4571},[4221,31501,31502,31504,31506],{"class":4223,"line":6012},[4221,31503,5725],{"class":4723},[4221,31505,4150],{"class":4575},[4221,31507,4825],{"class":4723},[4221,31509,31510,31512,31514],{"class":4223,"line":6020},[4221,31511,6029],{"class":4723},[4221,31513,4156],{"class":4575},[4221,31515,4825],{"class":4723},[4221,31517,31518],{"class":4223,"line":6026},[4221,31519,4893],{"class":4532},[4221,31521,31522],{"class":4223,"line":6036},[4221,31523,4276],{"class":4532},[4221,31525,31526],{"class":4223,"line":6041},[4221,31527,4246],{"emptyLinePlaceholder":4245},[4221,31529,31530,31532,31534,31536,31538,31540,31542],{"class":4223,"line":6046},[4221,31531,4616],{"class":4571},[4221,31533,4908],{"class":4619},[4221,31535,4911],{"class":4532},[4221,31537,4549],{"class":4536},[4221,31539,3793],{"class":4532},[4221,31541,4918],{"class":4706},[4221,31543,4921],{"class":4532},[4221,31545,31546,31548],{"class":4223,"line":6051},[4221,31547,31036],{"class":4536},[4221,31549,4579],{"class":4532},[4221,31551,31552,31554,31556],{"class":4223,"line":6068},[4221,31553,7815],{"class":4536},[4221,31555,7405],{"class":4558},[4221,31557,5391],{"class":4532},[4221,31559,31560],{"class":4223,"line":6097},[4221,31561,6183],{"class":4532},[4221,31563,31564,31567],{"class":4223,"line":6126},[4221,31565,31566],{"class":4536},"  disabled:",[4221,31568,4579],{"class":4532},[4221,31570,31571,31573,31575],{"class":4223,"line":6140},[4221,31572,28488],{"class":4536},[4221,31574,8401],{"class":4934},[4221,31576,5391],{"class":4532},[4221,31578,31579],{"class":4223,"line":6148},[4221,31580,6183],{"class":4532},[4221,31582,31583,31586],{"class":4223,"line":6158},[4221,31584,31585],{"class":4536},"  label:",[4221,31587,4579],{"class":4532},[4221,31589,31590,31592,31594],{"class":4223,"line":6169},[4221,31591,24843],{"class":4536},[4221,31593,7538],{"class":4558},[4221,31595,5391],{"class":4532},[4221,31597,31598],{"class":4223,"line":6180},[4221,31599,6183],{"class":4532},[4221,31601,31602],{"class":4223,"line":6186},[4221,31603,4985],{"class":4532},[4212,31605,31608],{"className":4519,"code":31606,"filename":31607,"language":4521,"meta":4217,"style":4217},"import { ReactNode } from 'react';\nimport { StyleSheet, ViewStyle } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nimport { space, useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype ScreenProps = {\n  children: ReactNode;\n  style?: ViewStyle;\n};\n\nexport function Screen({ children, style }: ScreenProps) {\n  const { colors } = useTheme();\n\n  return (\n    \u003CSafeAreaView\n      style={[styles.root, { backgroundColor: colors.background }, style]}\n    >\n      {children}\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  root: {\n    flex: 1,\n    paddingHorizontal: space.md,\n  },\n});\n","src\u002Fshared\u002Fui\u002FScreen.tsx",[3750,31609,31610,31626,31646,31662,31666,31686,31690,31699,31709,31719,31723,31727,31751,31765,31769,31775,31782,31818,31822,31830,31838,31842,31846,31850,31866,31873,31881,31893,31897],{"__ignoreMap":4217},[4221,31611,31612,31614,31616,31618,31620,31622,31624],{"class":4223,"line":4224},[4221,31613,4529],{"class":4528},[4221,31615,4533],{"class":4532},[4221,31617,29118],{"class":4536},[4221,31619,4552],{"class":4532},[4221,31621,4555],{"class":4528},[4221,31623,6486],{"class":4558},[4221,31625,4562],{"class":4532},[4221,31627,31628,31630,31632,31634,31636,31638,31640,31642,31644],{"class":4223,"line":4230},[4221,31629,4529],{"class":4528},[4221,31631,4533],{"class":4532},[4221,31633,4549],{"class":4536},[4221,31635,3785],{"class":4532},[4221,31637,31069],{"class":4536},[4221,31639,4552],{"class":4532},[4221,31641,4555],{"class":4528},[4221,31643,4559],{"class":4558},[4221,31645,4562],{"class":4532},[4221,31647,31648,31650,31652,31654,31656,31658,31660],{"class":4223,"line":4236},[4221,31649,4529],{"class":4528},[4221,31651,4533],{"class":4532},[4221,31653,15846],{"class":4536},[4221,31655,4552],{"class":4532},[4221,31657,4555],{"class":4528},[4221,31659,15853],{"class":4558},[4221,31661,4562],{"class":4532},[4221,31663,31664],{"class":4223,"line":4242},[4221,31665,4246],{"emptyLinePlaceholder":4245},[4221,31667,31668,31670,31672,31674,31676,31678,31680,31682,31684],{"class":4223,"line":4249},[4221,31669,4529],{"class":4528},[4221,31671,4533],{"class":4532},[4221,31673,28791],{"class":4536},[4221,31675,3785],{"class":4532},[4221,31677,20885],{"class":4536},[4221,31679,4552],{"class":4532},[4221,31681,4555],{"class":4528},[4221,31683,21760],{"class":4558},[4221,31685,4562],{"class":4532},[4221,31687,31688],{"class":4223,"line":4255},[4221,31689,4246],{"emptyLinePlaceholder":4245},[4221,31691,31692,31694,31697],{"class":4223,"line":4261},[4221,31693,5261],{"class":4571},[4221,31695,31696],{"class":4575}," ScreenProps",[4221,31698,15868],{"class":4532},[4221,31700,31701,31703,31705,31707],{"class":4223,"line":4267},[4221,31702,29113],{"class":4536},[4221,31704,4587],{"class":4532},[4221,31706,29118],{"class":4575},[4221,31708,4562],{"class":4532},[4221,31710,31711,31713,31715,31717],{"class":4223,"line":4273},[4221,31712,30611],{"class":4536},[4221,31714,29133],{"class":4532},[4221,31716,31069],{"class":4575},[4221,31718,4562],{"class":4532},[4221,31720,31721],{"class":4223,"line":4279},[4221,31722,15933],{"class":4532},[4221,31724,31725],{"class":4223,"line":4284},[4221,31726,4246],{"emptyLinePlaceholder":4245},[4221,31728,31729,31731,31733,31736,31738,31740,31742,31744,31746,31749],{"class":4223,"line":4290},[4221,31730,4700],{"class":4528},[4221,31732,4703],{"class":4571},[4221,31734,31735],{"class":4706}," Screen",[4221,31737,4788],{"class":4532},[4221,31739,29469],{"class":4536},[4221,31741,3785],{"class":4532},[4221,31743,5085],{"class":4536},[4221,31745,26801],{"class":4532},[4221,31747,31748],{"class":4575},"ScreenProps",[4221,31750,11846],{"class":4532},[4221,31752,31753,31755,31757,31759,31761,31763],{"class":4223,"line":4296},[4221,31754,5452],{"class":4571},[4221,31756,4533],{"class":4532},[4221,31758,21784],{"class":4619},[4221,31760,21792],{"class":4532},[4221,31762,20885],{"class":4706},[4221,31764,21797],{"class":4532},[4221,31766,31767],{"class":4223,"line":4302},[4221,31768,4246],{"emptyLinePlaceholder":4245},[4221,31770,31771,31773],{"class":4223,"line":4308},[4221,31772,4715],{"class":4528},[4221,31774,4718],{"class":4532},[4221,31776,31777,31779],{"class":4223,"line":4314},[4221,31778,4724],{"class":4723},[4221,31780,31781],{"class":4575},"SafeAreaView\n",[4221,31783,31784,31786,31788,31790,31792,31794,31796,31799,31801,31803,31805,31807,31809,31812,31814,31816],{"class":4223,"line":4319},[4221,31785,23130],{"class":4732},[4221,31787,4736],{"class":4532},[4221,31789,4739],{"class":4571},[4221,31791,5608],{"class":4756},[4221,31793,4814],{"class":4536},[4221,31795,3793],{"class":4756},[4221,31797,31798],{"class":4536},"root",[4221,31800,5618],{"class":4756},[4221,31802,5621],{"class":4536},[4221,31804,21884],{"class":4536},[4221,31806,3793],{"class":4756},[4221,31808,21889],{"class":4536},[4221,31810,31811],{"class":4756}," }, ",[4221,31813,5085],{"class":4536},[4221,31815,9615],{"class":4756},[4221,31817,4276],{"class":4571},[4221,31819,31820],{"class":4223,"line":4324},[4221,31821,23209],{"class":4723},[4221,31823,31824,31826,31828],{"class":4223,"line":4330},[4221,31825,22781],{"class":4571},[4221,31827,29469],{"class":4536},[4221,31829,4276],{"class":4571},[4221,31831,31832,31834,31836],{"class":4223,"line":4336},[4221,31833,6029],{"class":4723},[4221,31835,15846],{"class":4575},[4221,31837,4825],{"class":4723},[4221,31839,31840],{"class":4223,"line":4342},[4221,31841,4893],{"class":4532},[4221,31843,31844],{"class":4223,"line":4348},[4221,31845,4276],{"class":4532},[4221,31847,31848],{"class":4223,"line":4354},[4221,31849,4246],{"emptyLinePlaceholder":4245},[4221,31851,31852,31854,31856,31858,31860,31862,31864],{"class":4223,"line":4360},[4221,31853,4616],{"class":4571},[4221,31855,4908],{"class":4619},[4221,31857,4911],{"class":4532},[4221,31859,4549],{"class":4536},[4221,31861,3793],{"class":4532},[4221,31863,4918],{"class":4706},[4221,31865,4921],{"class":4532},[4221,31867,31868,31871],{"class":4223,"line":4365},[4221,31869,31870],{"class":4536},"  root:",[4221,31872,4579],{"class":4532},[4221,31874,31875,31877,31879],{"class":4223,"line":4371},[4221,31876,7794],{"class":4536},[4221,31878,5383],{"class":4934},[4221,31880,5391],{"class":4532},[4221,31882,31883,31885,31887,31889,31891],{"class":4223,"line":4377},[4221,31884,7689],{"class":4536},[4221,31886,28918],{"class":4536},[4221,31888,3793],{"class":4532},[4221,31890,22760],{"class":4536},[4221,31892,5391],{"class":4532},[4221,31894,31895],{"class":4223,"line":4383},[4221,31896,6183],{"class":4532},[4221,31898,31899],{"class":4223,"line":4389},[4221,31900,4985],{"class":4532},[4212,31902,31905],{"className":8091,"code":31903,"filename":31904,"language":8093,"meta":4217,"style":4217},"export { AppText } from '.\u002FAppText';\nexport { Button } from '.\u002FButton';\nexport { Screen } from '.\u002FScreen';\n","src\u002Fshared\u002Fui\u002Findex.ts",[3750,31906,31907,31924,31941],{"__ignoreMap":4217},[4221,31908,31909,31911,31913,31915,31917,31919,31922],{"class":4223,"line":4224},[4221,31910,4700],{"class":4528},[4221,31912,4533],{"class":4532},[4221,31914,20902],{"class":4536},[4221,31916,4552],{"class":4532},[4221,31918,4555],{"class":4528},[4221,31920,31921],{"class":4558}," '.\u002FAppText'",[4221,31923,4562],{"class":4532},[4221,31925,31926,31928,31930,31932,31934,31936,31939],{"class":4223,"line":4230},[4221,31927,4700],{"class":4528},[4221,31929,4533],{"class":4532},[4221,31931,20905],{"class":4536},[4221,31933,4552],{"class":4532},[4221,31935,4555],{"class":4528},[4221,31937,31938],{"class":4558}," '.\u002FButton'",[4221,31940,4562],{"class":4532},[4221,31942,31943,31945,31947,31949,31951,31953,31956],{"class":4223,"line":4236},[4221,31944,4700],{"class":4528},[4221,31946,4533],{"class":4532},[4221,31948,6233],{"class":4536},[4221,31950,4552],{"class":4532},[4221,31952,4555],{"class":4528},[4221,31954,31955],{"class":4558}," '.\u002FScreen'",[4221,31957,4562],{"class":4532},[4131,31959,31961],{"id":31960},"перевірка","Перевірка",[3814,31963,31964,31971,31974,31977],{},[3817,31965,31966,31967,31970],{},"Чіпи теми в шапці ",[3770,31968,31969],{},"залишились"," і працюють (light\u002Fdark\u002Fsystem).",[3817,31972,31973],{},"Стрічка поїздок скролиться (12 карток); місця — горизонтально під шапкою (у header списку).",[3817,31975,31976],{},"Pull-to-refresh — спінер ~0.9 с.",[3817,31978,31979],{},"Sticky «Нова поїздка» внизу на місці.",[4131,31981,31983],{"id":31982},"коміт","Коміт",[3743,31985,31986,31987,31989],{},"Якщо збирали вручну (не через ",[3750,31988,20985],{}," на вже запушений репо):",[4212,31991,31993],{"className":14639,"code":31992,"language":14641,"meta":4217,"style":4217},"cd \u002Fpath\u002Fto\u002Fnomad\ngit add -A\ngit commit -m \"$(cat \u003C\u003C'EOF'\nfeat: virtualized trips and places lists\n\nMaterial: content\u002F15.react-native\u002F09.lists-and-virtualization.md\nEOF\n)\"\ngit push\n",[3750,31994,31995,32001,32011,32033,32038,32042,32047,32052,32057],{"__ignoreMap":4217},[4221,31996,31997,31999],{"class":4223,"line":4224},[4221,31998,21000],{"class":4706},[4221,32000,21003],{"class":4558},[4221,32002,32003,32005,32008],{"class":4223,"line":4230},[4221,32004,21008],{"class":4706},[4221,32006,32007],{"class":4558}," add",[4221,32009,32010],{"class":4571}," -A\n",[4221,32012,32013,32015,32018,32021,32024,32027,32030],{"class":4223,"line":4236},[4221,32014,21008],{"class":4706},[4221,32016,32017],{"class":4558}," commit",[4221,32019,32020],{"class":4571}," -m",[4221,32022,32023],{"class":4558}," \"$(",[4221,32025,32026],{"class":4706},"cat",[4221,32028,32029],{"class":4532}," \u003C\u003C",[4221,32031,32032],{"class":4558},"'EOF'\n",[4221,32034,32035],{"class":4223,"line":4242},[4221,32036,32037],{"class":4558},"feat: virtualized trips and places lists\n",[4221,32039,32040],{"class":4223,"line":4249},[4221,32041,4246],{"emptyLinePlaceholder":4245},[4221,32043,32044],{"class":4223,"line":4255},[4221,32045,32046],{"class":4558},"Material: content\u002F15.react-native\u002F09.lists-and-virtualization.md\n",[4221,32048,32049],{"class":4223,"line":4261},[4221,32050,32051],{"class":4558},"EOF\n",[4221,32053,32054],{"class":4223,"line":4267},[4221,32055,32056],{"class":4558},")\"\n",[4221,32058,32059,32061],{"class":4223,"line":4273},[4221,32060,21008],{"class":4706},[4221,32062,32063],{"class":4558}," push\n",[3743,32065,32066,32067,32070,32071,32073],{},"У публічному репо цей коміт ",[3770,32068,32069],{},"уже є"," — після ",[3750,32072,20985],{}," повторно комітити не потрібно, якщо ви не змінювали код локально.",[4131,32075,32077],{"id":32076},"результат-превю","Результат (прев’ю)",[3743,32079,32080,32081,4016,32083,4016,32086,32088,32089,32092],{},"Самодостатнє демо для сайту (core RN). У репо — ",[3750,32082,3792],{},[3750,32084,32085],{},"@\u002F…",[3750,32087,20833],{}," (див. дерево вище). ",[3770,32090,32091],{},"Чіпи теми"," й sticky CTA — як у живому Nomad.",[5209,32094,32098],{"device":5211,"filename":32095,"height":32096,"title":32097},"NomadLists.tsx",720,"Nomad · theme + lists",[4212,32099,32101],{"className":4519,"code":32100,"language":4521,"meta":4217,"style":4217},"import { useCallback, useState } from 'react';\nimport {\n  FlatList,\n  Image,\n  Pressable,\n  RefreshControl,\n  StyleSheet,\n  Text,\n  View,\n  useColorScheme,\n} from 'react-native';\n\ntype Trip = {\n  id: string;\n  title: string;\n  dateLabel: string;\n  region: string;\n  coverUri: string;\n};\n\ntype Place = { id: string; name: string; city: string };\n\nconst light = {\n  bg: '#F8FAFC', surface: '#fff', text: '#0f172a', muted: '#64748b',\n  primary: '#2563eb', border: '#e2e8f0', onPrimary: '#fff',\n};\nconst dark = {\n  bg: '#000', surface: '#1c1c1e', text: '#f5f5f7', muted: '#a1a1aa',\n  primary: '#3b82f6', border: '#3a3a3c', onPrimary: '#fff',\n};\n\nconst TRIPS: Trip[] = Array.from({ length: 12 }, (_, i) => ({\n  id: String(i + 1),\n  title: ['Карпати', 'Львів', 'Одеса', 'Київ', 'Чернівці', 'Кам’янець',\n    'Харків', 'Дніпро', 'Ужгород', 'Полтава', 'Затока', 'Яремче'][i],\n  dateLabel: `${i + 1}–${i + 3} бер. 2026`,\n  region: i % 2 === 0 ? 'Карпати' : 'Місто',\n  coverUri: `https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fnomad${i}\u002F800\u002F400`,\n}));\n\nconst PLACES: Place[] = [\n  { id: 'p1', name: 'Говерла', city: 'Карпати' },\n  { id: 'p2', name: 'Ринок', city: 'Львів' },\n  { id: 'p3', name: 'Ланжерон', city: 'Одеса' },\n  { id: 'p4', name: 'Поділ', city: 'Київ' },\n  { id: 'p5', name: 'Фортеця', city: 'Кам’янець' },\n];\n\nexport default function App() {\n  const systemDark = useColorScheme() === 'dark';\n  const [pref, setPref] = useState\u003C'system' | 'light' | 'dark'>('system');\n  const isDark = pref === 'dark' || (pref === 'system' && systemDark);\n  const c = isDark ? dark : light;\n\n  const [trips, setTrips] = useState(TRIPS);\n  const [refreshing, setRefreshing] = useState(false);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    setTimeout(() => {\n      setTrips([...TRIPS]);\n      setRefreshing(false);\n    }, 700);\n  }, []);\n\n  const listHeader = (\n    \u003CView style={{ gap: 12, marginBottom: 12 }}>\n      \u003CText style={{ color: c.text, fontWeight: '700' }}>Останні місця\u003C\u002FText>\n      \u003CFlatList\n        horizontal\n        data={PLACES}\n        keyExtractor={(p) => p.id}\n        showsHorizontalScrollIndicator={false}\n        ItemSeparatorComponent={() => \u003CView style={{ width: 8 }} \u002F>}\n        renderItem={({ item }) => (\n          \u003CView style={[styles.place, { backgroundColor: c.surface, borderColor: c.border }]}>\n            \u003CText style={{ color: c.text, fontWeight: '700' }}>{item.name}\u003C\u002FText>\n            \u003CText style={{ color: c.primary, marginTop: 4, fontSize: 12 }}>{item.city}\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u002F>\n      \u003CText style={{ color: c.text, fontWeight: '700' }}>Ваші поїздки\u003C\u002FText>\n    \u003C\u002FView>\n  );\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: c.bg }]}>\n      \u003CView style={[styles.top, { borderColor: c.border }]}>\n        \u003CText style={[styles.brand, { color: c.text }]}>Мандрівник\u003C\u002FText>\n        \u003CText style={{ color: c.muted, fontSize: 13, marginTop: 4 }}>\n          тема: {isDark ? 'темна' : 'світла'} · {trips.length} поїздок · {PLACES.length} місць\n        \u003C\u002FText>\n        \u003CView style={styles.chips}>\n          {([\n            ['system', 'Система'],\n            ['light', 'Світла'],\n            ['dark', 'Темна'],\n          ] as const).map(([id, label]) => {\n            const on = pref === id;\n            return (\n              \u003CPressable\n                key={id}\n                onPress={() => setPref(id)}\n                style={[\n                  styles.chip,\n                  {\n                    backgroundColor: on ? c.primary : c.surface,\n                    borderColor: c.border,\n                  },\n                ]}\n              >\n                \u003CText style={{ color: on ? c.onPrimary : c.text, fontWeight: '700', fontSize: 12 }}>\n                  {label}\n                \u003C\u002FText>\n              \u003C\u002FPressable>\n            );\n          })}\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CFlatList\n        style={{ flex: 1 }}\n        data={trips}\n        keyExtractor={(t) => t.id}\n        ListHeaderComponent={listHeader}\n        contentContainerStyle={{ padding: 16, paddingBottom: 12 }}\n        ItemSeparatorComponent={() => \u003CView style={{ height: 12 }} \u002F>}\n        refreshControl={\n          \u003CRefreshControl\n            refreshing={refreshing}\n            onRefresh={onRefresh}\n            tintColor={c.primary}\n            colors={[c.primary]}\n          \u002F>\n        }\n        renderItem={({ item }) => (\n          \u003CView style={[styles.card, { backgroundColor: c.surface, borderColor: c.border }]}>\n            \u003CImage source={{ uri: item.coverUri }} style={styles.cover} \u002F>\n            \u003CView style={{ padding: 12 }}>\n              \u003CText style={{ color: c.text, fontWeight: '700', fontSize: 16 }}>{item.title}\u003C\u002FText>\n              \u003CText style={{ color: c.muted, marginTop: 4, fontSize: 13 }}>\n                {item.dateLabel} · {item.region}\n              \u003C\u002FText>\n            \u003C\u002FView>\n          \u003C\u002FView>\n        )}\n      \u002F>\n\n      \u003CView style={[styles.footer, { borderColor: c.border, backgroundColor: c.bg }]}>\n        \u003CPressable style={[styles.cta, { backgroundColor: c.primary }]}>\n          \u003CText style={{ color: c.onPrimary, fontWeight: '800' }}>Нова поїздка\u003C\u002FText>\n        \u003C\u002FPressable>\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1 },\n  top: { padding: 16, borderBottomWidth: 1 },\n  brand: { fontSize: 24, fontWeight: '800' },\n  chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, marginTop: 10 },\n  chip: { paddingHorizontal: 12, paddingVertical: 8, borderRadius: 8, borderWidth: 1 },\n  place: { width: 140, borderWidth: 1, borderRadius: 12, padding: 10, minHeight: 72 },\n  card: { borderWidth: 1, borderRadius: 16, overflow: 'hidden' },\n  cover: { width: '100%', height: 120, backgroundColor: '#cbd5e1' },\n  footer: { borderTopWidth: 1, padding: 16 },\n  cta: { paddingVertical: 14, borderRadius: 12, alignItems: 'center' },\n});\n",[3750,32102,32103,32123,32129,32135,32142,32148,32154,32160,32166,32172,32178,32188,32192,32200,32210,32220,32230,32240,32250,32254,32258,32290,32294,32303,32335,32359,32363,32371,32400,32422,32426,32430,32469,32485,32521,32558,32593,32617,32636,32640,32644,32657,32681,32704,32726,32749,32772,32776,32780,32792,32809,32845,32877,32899,32903,32926,32948,32952,32968,32978,32988,32998,33008,33016,33020,33024,33032,33062,33104,33110,33115,33128,33152,33161,33197,33215,33261,33311,33367,33375,33381,33385,33427,33435,33439,33443,33449,33486,33523,33568,33608,33654,33662,33685,33692,33706,33719,33732,33759,33778,33784,33790,33802,33825,33835,33845,33849,33873,33885,33889,33895,33899,33951,33959,33967,33975,33979,33985,33993,34001,34005,34011,34029,34041,34067,34079,34103,34139,34147,34153,34165,34177,34194,34214,34218,34222,34240,34286,34329,34353,34409,34449,34474,34482,34490,34498,34504,34508,34512,34558,34595,34638,34646,34654,34662,34666,34670,34674,34690,34702,34721,34740,34772,34802,34841,34866,34892,34911,34936],{"__ignoreMap":4217},[4221,32104,32105,32107,32109,32111,32113,32115,32117,32119,32121],{"class":4223,"line":4224},[4221,32106,4529],{"class":4528},[4221,32108,4533],{"class":4532},[4221,32110,3900],{"class":4536},[4221,32112,3785],{"class":4532},[4221,32114,6347],{"class":4536},[4221,32116,4552],{"class":4532},[4221,32118,4555],{"class":4528},[4221,32120,6486],{"class":4558},[4221,32122,4562],{"class":4532},[4221,32124,32125,32127],{"class":4223,"line":4230},[4221,32126,4529],{"class":4528},[4221,32128,4579],{"class":4532},[4221,32130,32131,32133],{"class":4223,"line":4236},[4221,32132,6499],{"class":4536},[4221,32134,5391],{"class":4532},[4221,32136,32137,32140],{"class":4223,"line":4242},[4221,32138,32139],{"class":4536},"  Image",[4221,32141,5391],{"class":4532},[4221,32143,32144,32146],{"class":4223,"line":4249},[4221,32145,6506],{"class":4536},[4221,32147,5391],{"class":4532},[4221,32149,32150,32152],{"class":4223,"line":4255},[4221,32151,8764],{"class":4536},[4221,32153,5391],{"class":4532},[4221,32155,32156,32158],{"class":4223,"line":4261},[4221,32157,6513],{"class":4536},[4221,32159,5391],{"class":4532},[4221,32161,32162,32164],{"class":4223,"line":4267},[4221,32163,6520],{"class":4536},[4221,32165,5391],{"class":4532},[4221,32167,32168,32170],{"class":4223,"line":4273},[4221,32169,6527],{"class":4536},[4221,32171,5391],{"class":4532},[4221,32173,32174,32176],{"class":4223,"line":4279},[4221,32175,6534],{"class":4536},[4221,32177,5391],{"class":4532},[4221,32179,32180,32182,32184,32186],{"class":4223,"line":4284},[4221,32181,6541],{"class":4532},[4221,32183,4555],{"class":4528},[4221,32185,4559],{"class":4558},[4221,32187,4562],{"class":4532},[4221,32189,32190],{"class":4223,"line":4290},[4221,32191,4246],{"emptyLinePlaceholder":4245},[4221,32193,32194,32196,32198],{"class":4223,"line":4296},[4221,32195,5261],{"class":4571},[4221,32197,22114],{"class":4575},[4221,32199,15868],{"class":4532},[4221,32201,32202,32204,32206,32208],{"class":4223,"line":4302},[4221,32203,4584],{"class":4536},[4221,32205,4587],{"class":4532},[4221,32207,4590],{"class":4575},[4221,32209,4562],{"class":4532},[4221,32211,32212,32214,32216,32218],{"class":4223,"line":4308},[4221,32213,4597],{"class":4536},[4221,32215,4587],{"class":4532},[4221,32217,4590],{"class":4575},[4221,32219,4562],{"class":4532},[4221,32221,32222,32224,32226,32228],{"class":4223,"line":4314},[4221,32223,26511],{"class":4536},[4221,32225,4587],{"class":4532},[4221,32227,4590],{"class":4575},[4221,32229,4562],{"class":4532},[4221,32231,32232,32234,32236,32238],{"class":4223,"line":4319},[4221,32233,26549],{"class":4536},[4221,32235,4587],{"class":4532},[4221,32237,4590],{"class":4575},[4221,32239,4562],{"class":4532},[4221,32241,32242,32244,32246,32248],{"class":4223,"line":4324},[4221,32243,26533],{"class":4536},[4221,32245,4587],{"class":4532},[4221,32247,4590],{"class":4575},[4221,32249,4562],{"class":4532},[4221,32251,32252],{"class":4223,"line":4330},[4221,32253,15933],{"class":4532},[4221,32255,32256],{"class":4223,"line":4336},[4221,32257,4246],{"emptyLinePlaceholder":4245},[4221,32259,32260,32262,32264,32266,32268,32270,32272,32274,32276,32278,32280,32282,32284,32286,32288],{"class":4223,"line":4342},[4221,32261,5261],{"class":4571},[4221,32263,22105],{"class":4575},[4221,32265,5267],{"class":4532},[4221,32267,4774],{"class":4536},[4221,32269,4587],{"class":4532},[4221,32271,4590],{"class":4575},[4221,32273,5276],{"class":4532},[4221,32275,22513],{"class":4536},[4221,32277,4587],{"class":4532},[4221,32279,4590],{"class":4575},[4221,32281,5276],{"class":4532},[4221,32283,26887],{"class":4536},[4221,32285,4587],{"class":4532},[4221,32287,4590],{"class":4575},[4221,32289,5294],{"class":4532},[4221,32291,32292],{"class":4223,"line":4348},[4221,32293,4246],{"emptyLinePlaceholder":4245},[4221,32295,32296,32298,32301],{"class":4223,"line":4354},[4221,32297,4616],{"class":4571},[4221,32299,32300],{"class":4619}," light",[4221,32302,15868],{"class":4532},[4221,32304,32305,32308,32310,32312,32315,32317,32319,32322,32325,32327,32330,32333],{"class":4223,"line":4360},[4221,32306,32307],{"class":4536},"  bg:",[4221,32309,17809],{"class":4558},[4221,32311,3785],{"class":4532},[4221,32313,32314],{"class":4536},"surface:",[4221,32316,7731],{"class":4558},[4221,32318,3785],{"class":4532},[4221,32320,32321],{"class":4536},"text:",[4221,32323,32324],{"class":4558}," '#0f172a'",[4221,32326,3785],{"class":4532},[4221,32328,32329],{"class":4536},"muted:",[4221,32331,32332],{"class":4558}," '#64748b'",[4221,32334,5391],{"class":4532},[4221,32336,32337,32339,32342,32344,32347,32350,32352,32355,32357],{"class":4223,"line":4365},[4221,32338,29651],{"class":4536},[4221,32340,32341],{"class":4558}," '#2563eb'",[4221,32343,3785],{"class":4532},[4221,32345,32346],{"class":4536},"border:",[4221,32348,32349],{"class":4558}," '#e2e8f0'",[4221,32351,3785],{"class":4532},[4221,32353,32354],{"class":4536},"onPrimary:",[4221,32356,7731],{"class":4558},[4221,32358,5391],{"class":4532},[4221,32360,32361],{"class":4223,"line":4371},[4221,32362,15933],{"class":4532},[4221,32364,32365,32367,32369],{"class":4223,"line":4377},[4221,32366,4616],{"class":4571},[4221,32368,5455],{"class":4619},[4221,32370,15868],{"class":4532},[4221,32372,32373,32375,32377,32379,32381,32384,32386,32388,32391,32393,32395,32398],{"class":4223,"line":4383},[4221,32374,32307],{"class":4536},[4221,32376,28394],{"class":4558},[4221,32378,3785],{"class":4532},[4221,32380,32314],{"class":4536},[4221,32382,32383],{"class":4558}," '#1c1c1e'",[4221,32385,3785],{"class":4532},[4221,32387,32321],{"class":4536},[4221,32389,32390],{"class":4558}," '#f5f5f7'",[4221,32392,3785],{"class":4532},[4221,32394,32329],{"class":4536},[4221,32396,32397],{"class":4558}," '#a1a1aa'",[4221,32399,5391],{"class":4532},[4221,32401,32402,32404,32407,32409,32411,32414,32416,32418,32420],{"class":4223,"line":4389},[4221,32403,29651],{"class":4536},[4221,32405,32406],{"class":4558}," '#3b82f6'",[4221,32408,3785],{"class":4532},[4221,32410,32346],{"class":4536},[4221,32412,32413],{"class":4558}," '#3a3a3c'",[4221,32415,3785],{"class":4532},[4221,32417,32354],{"class":4536},[4221,32419,7731],{"class":4558},[4221,32421,5391],{"class":4532},[4221,32423,32424],{"class":4223,"line":4395},[4221,32425,15933],{"class":4532},[4221,32427,32428],{"class":4223,"line":4400},[4221,32429,4246],{"emptyLinePlaceholder":4245},[4221,32431,32432,32434,32437,32439,32441,32443,32445,32447,32449,32451,32453,32455,32457,32459,32461,32463,32465,32467],{"class":4223,"line":4405},[4221,32433,4616],{"class":4571},[4221,32435,32436],{"class":4619}," TRIPS",[4221,32438,4587],{"class":4532},[4221,32440,8270],{"class":4575},[4221,32442,5313],{"class":4532},[4221,32444,5316],{"class":4536},[4221,32446,3793],{"class":4532},[4221,32448,4555],{"class":4706},[4221,32450,4788],{"class":4532},[4221,32452,5325],{"class":4536},[4221,32454,6164],{"class":4934},[4221,32456,5331],{"class":4532},[4221,32458,5334],{"class":4536},[4221,32460,3785],{"class":4532},[4221,32462,5339],{"class":4536},[4221,32464,4763],{"class":4532},[4221,32466,4766],{"class":4571},[4221,32468,5346],{"class":4532},[4221,32470,32471,32473,32475,32477,32479,32481,32483],{"class":4223,"line":5860},[4221,32472,5351],{"class":4536},[4221,32474,5354],{"class":4706},[4221,32476,4757],{"class":4532},[4221,32478,5339],{"class":4536},[4221,32480,4016],{"class":4532},[4221,32482,5132],{"class":4934},[4221,32484,5365],{"class":4532},[4221,32486,32487,32489,32491,32494,32496,32499,32501,32504,32506,32509,32511,32514,32516,32519],{"class":4223,"line":5873},[4221,32488,4963],{"class":4536},[4221,32490,6741],{"class":4532},[4221,32492,32493],{"class":4558},"'Карпати'",[4221,32495,3785],{"class":4532},[4221,32497,32498],{"class":4558},"'Львів'",[4221,32500,3785],{"class":4532},[4221,32502,32503],{"class":4558},"'Одеса'",[4221,32505,3785],{"class":4532},[4221,32507,32508],{"class":4558},"'Київ'",[4221,32510,3785],{"class":4532},[4221,32512,32513],{"class":4558},"'Чернівці'",[4221,32515,3785],{"class":4532},[4221,32517,32518],{"class":4558},"'Кам’янець'",[4221,32520,5391],{"class":4532},[4221,32522,32523,32526,32528,32531,32533,32536,32538,32541,32543,32546,32548,32551,32554,32556],{"class":4223,"line":5891},[4221,32524,32525],{"class":4558},"    'Харків'",[4221,32527,3785],{"class":4532},[4221,32529,32530],{"class":4558},"'Дніпро'",[4221,32532,3785],{"class":4532},[4221,32534,32535],{"class":4558},"'Ужгород'",[4221,32537,3785],{"class":4532},[4221,32539,32540],{"class":4558},"'Полтава'",[4221,32542,3785],{"class":4532},[4221,32544,32545],{"class":4558},"'Затока'",[4221,32547,3785],{"class":4532},[4221,32549,32550],{"class":4558},"'Яремче'",[4221,32552,32553],{"class":4532},"][",[4221,32555,5339],{"class":4536},[4221,32557,14422],{"class":4532},[4221,32559,32560,32563,32565,32567,32569,32571,32573,32575,32578,32580,32582,32584,32586,32588,32591],{"class":4223,"line":5899},[4221,32561,32562],{"class":4536},"  dateLabel:",[4221,32564,8905],{"class":4558},[4221,32566,5375],{"class":4571},[4221,32568,5339],{"class":4536},[4221,32570,5380],{"class":4532},[4221,32572,5383],{"class":4934},[4221,32574,4822],{"class":4571},[4221,32576,32577],{"class":4558},"–",[4221,32579,5375],{"class":4571},[4221,32581,5339],{"class":4536},[4221,32583,5380],{"class":4532},[4221,32585,28453],{"class":4934},[4221,32587,4822],{"class":4571},[4221,32589,32590],{"class":4558}," бер. 2026`",[4221,32592,5391],{"class":4532},[4221,32594,32595,32597,32599,32601,32603,32605,32607,32609,32611,32613,32615],{"class":4223,"line":5905},[4221,32596,28604],{"class":4536},[4221,32598,5399],{"class":4536},[4221,32600,5402],{"class":4532},[4221,32602,5405],{"class":4934},[4221,32604,5408],{"class":4532},[4221,32606,5128],{"class":4934},[4221,32608,5413],{"class":4532},[4221,32610,32493],{"class":4558},[4221,32612,5419],{"class":4532},[4221,32614,5422],{"class":4558},[4221,32616,5391],{"class":4532},[4221,32618,32619,32622,32625,32627,32629,32631,32634],{"class":4223,"line":5955},[4221,32620,32621],{"class":4536},"  coverUri:",[4221,32623,32624],{"class":4558}," `https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fnomad",[4221,32626,5375],{"class":4571},[4221,32628,5339],{"class":4536},[4221,32630,4822],{"class":4571},[4221,32632,32633],{"class":4558},"\u002F800\u002F400`",[4221,32635,5391],{"class":4532},[4221,32637,32638],{"class":4223,"line":6002},[4221,32639,5429],{"class":4532},[4221,32641,32642],{"class":4223,"line":6012},[4221,32643,4246],{"emptyLinePlaceholder":4245},[4221,32645,32646,32648,32651,32653,32655],{"class":4223,"line":6020},[4221,32647,4616],{"class":4571},[4221,32649,32650],{"class":4619}," PLACES",[4221,32652,4587],{"class":4532},[4221,32654,20932],{"class":4575},[4221,32656,4628],{"class":4532},[4221,32658,32659,32661,32663,32665,32667,32670,32672,32674,32677,32679],{"class":4223,"line":6026},[4221,32660,4633],{"class":4532},[4221,32662,4636],{"class":4536},[4221,32664,25133],{"class":4558},[4221,32666,3785],{"class":4532},[4221,32668,32669],{"class":4536},"name:",[4221,32671,25152],{"class":4558},[4221,32673,3785],{"class":4532},[4221,32675,32676],{"class":4536},"city:",[4221,32678,25162],{"class":4558},[4221,32680,4650],{"class":4532},[4221,32682,32683,32685,32687,32689,32691,32693,32696,32698,32700,32702],{"class":4223,"line":6036},[4221,32684,4633],{"class":4532},[4221,32686,4636],{"class":4536},[4221,32688,25189],{"class":4558},[4221,32690,3785],{"class":4532},[4221,32692,32669],{"class":4536},[4221,32694,32695],{"class":4558}," 'Ринок'",[4221,32697,3785],{"class":4532},[4221,32699,32676],{"class":4536},[4221,32701,25266],{"class":4558},[4221,32703,4650],{"class":4532},[4221,32705,32706,32708,32710,32712,32714,32716,32718,32720,32722,32724],{"class":4223,"line":6041},[4221,32707,4633],{"class":4532},[4221,32709,4636],{"class":4536},[4221,32711,25240],{"class":4558},[4221,32713,3785],{"class":4532},[4221,32715,32669],{"class":4536},[4221,32717,25412],{"class":4558},[4221,32719,3785],{"class":4532},[4221,32721,32676],{"class":4536},[4221,32723,25369],{"class":4558},[4221,32725,4650],{"class":4532},[4221,32727,32728,32730,32732,32734,32736,32738,32741,32743,32745,32747],{"class":4223,"line":6046},[4221,32729,4633],{"class":4532},[4221,32731,4636],{"class":4536},[4221,32733,25292],{"class":4558},[4221,32735,3785],{"class":4532},[4221,32737,32669],{"class":4536},[4221,32739,32740],{"class":4558}," 'Поділ'",[4221,32742,3785],{"class":4532},[4221,32744,32676],{"class":4536},[4221,32746,25472],{"class":4558},[4221,32748,4650],{"class":4532},[4221,32750,32751,32753,32755,32757,32759,32761,32764,32766,32768,32770],{"class":4223,"line":6051},[4221,32752,4633],{"class":4532},[4221,32754,4636],{"class":4536},[4221,32756,25343],{"class":4558},[4221,32758,3785],{"class":4532},[4221,32760,32669],{"class":4536},[4221,32762,32763],{"class":4558}," 'Фортеця'",[4221,32765,3785],{"class":4532},[4221,32767,32676],{"class":4536},[4221,32769,25524],{"class":4558},[4221,32771,4650],{"class":4532},[4221,32773,32774],{"class":4223,"line":6068},[4221,32775,4691],{"class":4532},[4221,32777,32778],{"class":4223,"line":6097},[4221,32779,4246],{"emptyLinePlaceholder":4245},[4221,32781,32782,32784,32786,32788,32790],{"class":4223,"line":6126},[4221,32783,4700],{"class":4528},[4221,32785,5440],{"class":4528},[4221,32787,4703],{"class":4571},[4221,32789,5445],{"class":4706},[4221,32791,4710],{"class":4532},[4221,32793,32794,32796,32799,32801,32803,32805,32807],{"class":4223,"line":6140},[4221,32795,5452],{"class":4571},[4221,32797,32798],{"class":4619}," systemDark",[4221,32800,4911],{"class":4532},[4221,32802,5244],{"class":4706},[4221,32804,5462],{"class":4532},[4221,32806,5465],{"class":4558},[4221,32808,4562],{"class":4532},[4221,32810,32811,32813,32815,32818,32820,32823,32825,32827,32829,32831,32833,32835,32837,32839,32841,32843],{"class":4223,"line":6148},[4221,32812,5452],{"class":4571},[4221,32814,6741],{"class":4532},[4221,32816,32817],{"class":4619},"pref",[4221,32819,3785],{"class":4532},[4221,32821,32822],{"class":4619},"setPref",[4221,32824,6751],{"class":4532},[4221,32826,6347],{"class":4706},[4221,32828,6756],{"class":4532},[4221,32830,28822],{"class":4558},[4221,32832,28825],{"class":4532},[4221,32834,29047],{"class":4558},[4221,32836,28825],{"class":4532},[4221,32838,5465],{"class":4558},[4221,32840,28979],{"class":4532},[4221,32842,28822],{"class":4558},[4221,32844,8278],{"class":4532},[4221,32846,32847,32849,32852,32854,32856,32858,32860,32863,32865,32867,32869,32872,32875],{"class":4223,"line":6158},[4221,32848,5452],{"class":4571},[4221,32850,32851],{"class":4619}," isDark",[4221,32853,4911],{"class":4532},[4221,32855,32817],{"class":4536},[4221,32857,5408],{"class":4532},[4221,32859,5465],{"class":4558},[4221,32861,32862],{"class":4532}," || (",[4221,32864,32817],{"class":4536},[4221,32866,5408],{"class":4532},[4221,32868,28822],{"class":4558},[4221,32870,32871],{"class":4532}," && ",[4221,32873,32874],{"class":4536},"systemDark",[4221,32876,8278],{"class":4532},[4221,32878,32879,32881,32884,32886,32889,32891,32893,32895,32897],{"class":4223,"line":6169},[4221,32880,5452],{"class":4571},[4221,32882,32883],{"class":4619}," c",[4221,32885,4911],{"class":4532},[4221,32887,32888],{"class":4536},"isDark",[4221,32890,5413],{"class":4532},[4221,32892,5479],{"class":4536},[4221,32894,5419],{"class":4532},[4221,32896,20892],{"class":4536},[4221,32898,4562],{"class":4532},[4221,32900,32901],{"class":4223,"line":6180},[4221,32902,4246],{"emptyLinePlaceholder":4245},[4221,32904,32905,32907,32909,32911,32913,32915,32917,32919,32921,32924],{"class":4223,"line":6186},[4221,32906,5452],{"class":4571},[4221,32908,6741],{"class":4532},[4221,32910,8449],{"class":4619},[4221,32912,3785],{"class":4532},[4221,32914,22327],{"class":4619},[4221,32916,6751],{"class":4532},[4221,32918,6347],{"class":4706},[4221,32920,4757],{"class":4532},[4221,32922,32923],{"class":4619},"TRIPS",[4221,32925,8278],{"class":4532},[4221,32927,32928,32930,32932,32934,32936,32938,32940,32942,32944,32946],{"class":4223,"line":6212},[4221,32929,5452],{"class":4571},[4221,32931,6741],{"class":4532},[4221,32933,8670],{"class":4619},[4221,32935,3785],{"class":4532},[4221,32937,9187],{"class":4619},[4221,32939,6751],{"class":4532},[4221,32941,6347],{"class":4706},[4221,32943,4757],{"class":4532},[4221,32945,8691],{"class":4571},[4221,32947,8278],{"class":4532},[4221,32949,32950],{"class":4223,"line":7314},[4221,32951,4246],{"emptyLinePlaceholder":4245},[4221,32953,32954,32956,32958,32960,32962,32964,32966],{"class":4223,"line":7338},[4221,32955,5452],{"class":4571},[4221,32957,9208],{"class":4619},[4221,32959,4911],{"class":4532},[4221,32961,3900],{"class":4706},[4221,32963,9163],{"class":4532},[4221,32965,4766],{"class":4571},[4221,32967,4579],{"class":4532},[4221,32969,32970,32972,32974,32976],{"class":4223,"line":7381},[4221,32971,9223],{"class":4706},[4221,32973,4757],{"class":4532},[4221,32975,9228],{"class":4571},[4221,32977,8278],{"class":4532},[4221,32979,32980,32982,32984,32986],{"class":4223,"line":7421},[4221,32981,9235],{"class":4706},[4221,32983,9163],{"class":4532},[4221,32985,4766],{"class":4571},[4221,32987,4579],{"class":4532},[4221,32989,32990,32992,32994,32996],{"class":4223,"line":7427},[4221,32991,22569],{"class":4706},[4221,32993,22572],{"class":4532},[4221,32995,32923],{"class":4619},[4221,32997,9318],{"class":4532},[4221,32999,33000,33002,33004,33006],{"class":4223,"line":7433},[4221,33001,9292],{"class":4706},[4221,33003,4757],{"class":4532},[4221,33005,8691],{"class":4571},[4221,33007,8278],{"class":4532},[4221,33009,33010,33012,33014],{"class":4223,"line":7443},[4221,33011,9303],{"class":4532},[4221,33013,10865],{"class":4934},[4221,33015,8278],{"class":4532},[4221,33017,33018],{"class":4223,"line":7452},[4221,33019,16764],{"class":4532},[4221,33021,33022],{"class":4223,"line":7457},[4221,33023,4246],{"emptyLinePlaceholder":4245},[4221,33025,33026,33028,33030],{"class":4223,"line":7476},[4221,33027,5452],{"class":4571},[4221,33029,22733],{"class":4706},[4221,33031,22736],{"class":4532},[4221,33033,33034,33036,33038,33040,33042,33044,33046,33048,33050,33052,33054,33056,33058,33060],{"class":4223,"line":7515},[4221,33035,4724],{"class":4723},[4221,33037,4147],{"class":4575},[4221,33039,4807],{"class":4732},[4221,33041,4736],{"class":4532},[4221,33043,4739],{"class":4571},[4221,33045,5689],{"class":4756},[4221,33047,5813],{"class":4536},[4221,33049,6164],{"class":4934},[4221,33051,3785],{"class":4756},[4221,33053,5698],{"class":4536},[4221,33055,6164],{"class":4934},[4221,33057,5711],{"class":4756},[4221,33059,4822],{"class":4571},[4221,33061,4825],{"class":4723},[4221,33063,33064,33066,33068,33070,33072,33074,33076,33078,33080,33082,33084,33086,33088,33090,33092,33094,33096,33098,33100,33102],{"class":4223,"line":7563},[4221,33065,5635],{"class":4723},[4221,33067,4150],{"class":4575},[4221,33069,4807],{"class":4732},[4221,33071,4736],{"class":4532},[4221,33073,4739],{"class":4571},[4221,33075,5689],{"class":4756},[4221,33077,5657],{"class":4536},[4221,33079,32883],{"class":4536},[4221,33081,3793],{"class":4756},[4221,33083,14937],{"class":4536},[4221,33085,3785],{"class":4756},[4221,33087,4975],{"class":4536},[4221,33089,6201],{"class":4558},[4221,33091,5711],{"class":4756},[4221,33093,4822],{"class":4571},[4221,33095,4850],{"class":4723},[4221,33097,22852],{"class":4532},[4221,33099,4863],{"class":4723},[4221,33101,4150],{"class":4575},[4221,33103,4825],{"class":4723},[4221,33105,33106,33108],{"class":4223,"line":7572},[4221,33107,5635],{"class":4723},[4221,33109,4727],{"class":4575},[4221,33111,33112],{"class":4223,"line":7579},[4221,33113,33114],{"class":4732},"        horizontal\n",[4221,33116,33117,33119,33121,33123,33126],{"class":4223,"line":7584},[4221,33118,5758],{"class":4732},[4221,33120,4736],{"class":4532},[4221,33122,4739],{"class":4571},[4221,33124,33125],{"class":4619},"PLACES",[4221,33127,4276],{"class":4571},[4221,33129,33130,33132,33134,33136,33138,33140,33142,33144,33146,33148,33150],{"class":4223,"line":7593},[4221,33131,5772],{"class":4732},[4221,33133,4736],{"class":4532},[4221,33135,4739],{"class":4571},[4221,33137,4757],{"class":4756},[4221,33139,3743],{"class":4536},[4221,33141,4763],{"class":4756},[4221,33143,4766],{"class":4571},[4221,33145,23807],{"class":4536},[4221,33147,3793],{"class":4756},[4221,33149,4774],{"class":4536},[4221,33151,4276],{"class":4571},[4221,33153,33154,33157,33159],{"class":4223,"line":7598},[4221,33155,33156],{"class":4732},"        showsHorizontalScrollIndicator",[4221,33158,4736],{"class":4532},[4221,33160,22973],{"class":4571},[4221,33162,33163,33165,33167,33169,33171,33173,33175,33177,33179,33181,33183,33185,33187,33189,33191,33193,33195],{"class":4223,"line":7603},[4221,33164,13827],{"class":4732},[4221,33166,4736],{"class":4532},[4221,33168,4739],{"class":4571},[4221,33170,6845],{"class":4756},[4221,33172,4766],{"class":4571},[4221,33174,8064],{"class":4723},[4221,33176,4147],{"class":4575},[4221,33178,4807],{"class":4732},[4221,33180,4736],{"class":4532},[4221,33182,4739],{"class":4571},[4221,33184,5689],{"class":4756},[4221,33186,23001],{"class":4536},[4221,33188,5701],{"class":4934},[4221,33190,5711],{"class":4756},[4221,33192,4822],{"class":4571},[4221,33194,8081],{"class":4723},[4221,33196,4276],{"class":4571},[4221,33198,33199,33201,33203,33205,33207,33209,33211,33213],{"class":4223,"line":7608},[4221,33200,5824],{"class":4732},[4221,33202,4736],{"class":4532},[4221,33204,4739],{"class":4571},[4221,33206,4788],{"class":4756},[4221,33208,4760],{"class":4536},[4221,33210,4793],{"class":4756},[4221,33212,4766],{"class":4571},[4221,33214,4718],{"class":4756},[4221,33216,33217,33219,33221,33223,33225,33227,33229,33231,33233,33235,33237,33239,33241,33243,33245,33247,33249,33251,33253,33255,33257,33259],{"class":4223,"line":7625},[4221,33218,4830],{"class":4723},[4221,33220,4147],{"class":4575},[4221,33222,4807],{"class":4732},[4221,33224,4736],{"class":4532},[4221,33226,4739],{"class":4571},[4221,33228,5608],{"class":4756},[4221,33230,4814],{"class":4536},[4221,33232,3793],{"class":4756},[4221,33234,22473],{"class":4536},[4221,33236,5618],{"class":4756},[4221,33238,5621],{"class":4536},[4221,33240,32883],{"class":4536},[4221,33242,3793],{"class":4756},[4221,33244,23922],{"class":4536},[4221,33246,3785],{"class":4756},[4221,33248,4953],{"class":4536},[4221,33250,32883],{"class":4536},[4221,33252,3793],{"class":4756},[4221,33254,23472],{"class":4536},[4221,33256,5626],{"class":4756},[4221,33258,4822],{"class":4571},[4221,33260,4825],{"class":4723},[4221,33262,33263,33265,33267,33269,33271,33273,33275,33277,33279,33281,33283,33285,33287,33289,33291,33293,33295,33297,33299,33301,33303,33305,33307,33309],{"class":4223,"line":7650},[4221,33264,5908],{"class":4723},[4221,33266,4150],{"class":4575},[4221,33268,4807],{"class":4732},[4221,33270,4736],{"class":4532},[4221,33272,4739],{"class":4571},[4221,33274,5689],{"class":4756},[4221,33276,5657],{"class":4536},[4221,33278,32883],{"class":4536},[4221,33280,3793],{"class":4756},[4221,33282,14937],{"class":4536},[4221,33284,3785],{"class":4756},[4221,33286,4975],{"class":4536},[4221,33288,6201],{"class":4558},[4221,33290,5711],{"class":4756},[4221,33292,4822],{"class":4571},[4221,33294,4850],{"class":4723},[4221,33296,4739],{"class":4571},[4221,33298,4760],{"class":4536},[4221,33300,3793],{"class":4756},[4221,33302,22513],{"class":4536},[4221,33304,4822],{"class":4571},[4221,33306,4863],{"class":4723},[4221,33308,4150],{"class":4575},[4221,33310,4825],{"class":4723},[4221,33312,33313,33315,33317,33319,33321,33323,33325,33327,33329,33331,33333,33335,33337,33339,33341,33343,33345,33347,33349,33351,33353,33355,33357,33359,33361,33363,33365],{"class":4223,"line":7678},[4221,33314,5908],{"class":4723},[4221,33316,4150],{"class":4575},[4221,33318,4807],{"class":4732},[4221,33320,4736],{"class":4532},[4221,33322,4739],{"class":4571},[4221,33324,5689],{"class":4756},[4221,33326,5657],{"class":4536},[4221,33328,32883],{"class":4536},[4221,33330,3793],{"class":4756},[4221,33332,9597],{"class":4536},[4221,33334,3785],{"class":4756},[4221,33336,11227],{"class":4536},[4221,33338,6121],{"class":4934},[4221,33340,3785],{"class":4756},[4221,33342,4968],{"class":4536},[4221,33344,6164],{"class":4934},[4221,33346,5711],{"class":4756},[4221,33348,4822],{"class":4571},[4221,33350,4850],{"class":4723},[4221,33352,4739],{"class":4571},[4221,33354,4760],{"class":4536},[4221,33356,3793],{"class":4756},[4221,33358,26887],{"class":4536},[4221,33360,4822],{"class":4571},[4221,33362,4863],{"class":4723},[4221,33364,4150],{"class":4575},[4221,33366,4825],{"class":4723},[4221,33368,33369,33371,33373],{"class":4223,"line":7686},[4221,33370,6005],{"class":4723},[4221,33372,4147],{"class":4575},[4221,33374,4825],{"class":4723},[4221,33376,33377,33379],{"class":4223,"line":7696},[4221,33378,6015],{"class":4756},[4221,33380,4276],{"class":4571},[4221,33382,33383],{"class":4223,"line":7707},[4221,33384,6023],{"class":4723},[4221,33386,33387,33389,33391,33393,33395,33397,33399,33401,33403,33405,33407,33409,33411,33413,33415,33417,33419,33421,33423,33425],{"class":4223,"line":7716},[4221,33388,5635],{"class":4723},[4221,33390,4150],{"class":4575},[4221,33392,4807],{"class":4732},[4221,33394,4736],{"class":4532},[4221,33396,4739],{"class":4571},[4221,33398,5689],{"class":4756},[4221,33400,5657],{"class":4536},[4221,33402,32883],{"class":4536},[4221,33404,3793],{"class":4756},[4221,33406,14937],{"class":4536},[4221,33408,3785],{"class":4756},[4221,33410,4975],{"class":4536},[4221,33412,6201],{"class":4558},[4221,33414,5711],{"class":4756},[4221,33416,4822],{"class":4571},[4221,33418,4850],{"class":4723},[4221,33420,23088],{"class":4532},[4221,33422,4863],{"class":4723},[4221,33424,4150],{"class":4575},[4221,33426,4825],{"class":4723},[4221,33428,33429,33431,33433],{"class":4223,"line":7721},[4221,33430,6029],{"class":4723},[4221,33432,4147],{"class":4575},[4221,33434,4825],{"class":4723},[4221,33436,33437],{"class":4223,"line":7742},[4221,33438,4893],{"class":4532},[4221,33440,33441],{"class":4223,"line":7768},[4221,33442,4246],{"emptyLinePlaceholder":4245},[4221,33444,33445,33447],{"class":4223,"line":7783},[4221,33446,4715],{"class":4528},[4221,33448,4718],{"class":4532},[4221,33450,33451,33453,33455,33457,33459,33461,33463,33465,33467,33469,33471,33473,33475,33477,33480,33482,33484],{"class":4223,"line":7791},[4221,33452,4724],{"class":4723},[4221,33454,4147],{"class":4575},[4221,33456,4807],{"class":4732},[4221,33458,4736],{"class":4532},[4221,33460,4739],{"class":4571},[4221,33462,5608],{"class":4756},[4221,33464,4814],{"class":4536},[4221,33466,3793],{"class":4756},[4221,33468,5615],{"class":4536},[4221,33470,5618],{"class":4756},[4221,33472,5621],{"class":4536},[4221,33474,32883],{"class":4536},[4221,33476,3793],{"class":4756},[4221,33478,33479],{"class":4536},"bg",[4221,33481,5626],{"class":4756},[4221,33483,4822],{"class":4571},[4221,33485,4825],{"class":4723},[4221,33487,33488,33490,33492,33494,33496,33498,33500,33502,33504,33507,33509,33511,33513,33515,33517,33519,33521],{"class":4223,"line":7801},[4221,33489,5635],{"class":4723},[4221,33491,4147],{"class":4575},[4221,33493,4807],{"class":4732},[4221,33495,4736],{"class":4532},[4221,33497,4739],{"class":4571},[4221,33499,5608],{"class":4756},[4221,33501,4814],{"class":4536},[4221,33503,3793],{"class":4756},[4221,33505,33506],{"class":4536},"top",[4221,33508,5618],{"class":4756},[4221,33510,4953],{"class":4536},[4221,33512,32883],{"class":4536},[4221,33514,3793],{"class":4756},[4221,33516,23472],{"class":4536},[4221,33518,5626],{"class":4756},[4221,33520,4822],{"class":4571},[4221,33522,4825],{"class":4723},[4221,33524,33525,33527,33529,33531,33533,33535,33537,33539,33541,33544,33546,33548,33550,33552,33554,33556,33558,33560,33562,33564,33566],{"class":4223,"line":7812},[4221,33526,4802],{"class":4723},[4221,33528,4150],{"class":4575},[4221,33530,4807],{"class":4732},[4221,33532,4736],{"class":4532},[4221,33534,4739],{"class":4571},[4221,33536,5608],{"class":4756},[4221,33538,4814],{"class":4536},[4221,33540,3793],{"class":4756},[4221,33542,33543],{"class":4536},"brand",[4221,33545,5618],{"class":4756},[4221,33547,5657],{"class":4536},[4221,33549,32883],{"class":4536},[4221,33551,3793],{"class":4756},[4221,33553,14937],{"class":4536},[4221,33555,5626],{"class":4756},[4221,33557,4822],{"class":4571},[4221,33559,4850],{"class":4723},[4221,33561,23508],{"class":4532},[4221,33563,4863],{"class":4723},[4221,33565,4150],{"class":4575},[4221,33567,4825],{"class":4723},[4221,33569,33570,33572,33574,33576,33578,33580,33582,33584,33586,33588,33590,33592,33594,33596,33598,33600,33602,33604,33606],{"class":4223,"line":7822},[4221,33571,4802],{"class":4723},[4221,33573,4150],{"class":4575},[4221,33575,4807],{"class":4732},[4221,33577,4736],{"class":4532},[4221,33579,4739],{"class":4571},[4221,33581,5689],{"class":4756},[4221,33583,5657],{"class":4536},[4221,33585,32883],{"class":4536},[4221,33587,3793],{"class":4756},[4221,33589,16869],{"class":4536},[4221,33591,3785],{"class":4756},[4221,33593,4968],{"class":4536},[4221,33595,5708],{"class":4934},[4221,33597,3785],{"class":4756},[4221,33599,11227],{"class":4536},[4221,33601,6121],{"class":4934},[4221,33603,5711],{"class":4756},[4221,33605,4822],{"class":4571},[4221,33607,4825],{"class":4723},[4221,33609,33610,33613,33615,33617,33619,33621,33623,33625,33627,33629,33631,33633,33635,33637,33639,33641,33643,33645,33647,33649,33651],{"class":4223,"line":7832},[4221,33611,33612],{"class":4532},"          тема: ",[4221,33614,4739],{"class":4571},[4221,33616,32888],{"class":4536},[4221,33618,7218],{"class":4532},[4221,33620,23567],{"class":4558},[4221,33622,7228],{"class":4532},[4221,33624,23572],{"class":4558},[4221,33626,4822],{"class":4571},[4221,33628,17494],{"class":4532},[4221,33630,4739],{"class":4571},[4221,33632,8449],{"class":4536},[4221,33634,3793],{"class":4756},[4221,33636,6910],{"class":4536},[4221,33638,4822],{"class":4571},[4221,33640,23686],{"class":4532},[4221,33642,4739],{"class":4571},[4221,33644,33125],{"class":4619},[4221,33646,3793],{"class":4756},[4221,33648,6910],{"class":4536},[4221,33650,4822],{"class":4571},[4221,33652,33653],{"class":4532}," місць\n",[4221,33655,33656,33658,33660],{"class":4223,"line":7842},[4221,33657,4872],{"class":4723},[4221,33659,4150],{"class":4575},[4221,33661,4825],{"class":4723},[4221,33663,33664,33666,33668,33670,33672,33674,33676,33678,33681,33683],{"class":4223,"line":7851},[4221,33665,4802],{"class":4723},[4221,33667,4147],{"class":4575},[4221,33669,4807],{"class":4732},[4221,33671,4736],{"class":4532},[4221,33673,4739],{"class":4571},[4221,33675,4814],{"class":4536},[4221,33677,3793],{"class":4756},[4221,33679,33680],{"class":4536},"chips",[4221,33682,4822],{"class":4571},[4221,33684,4825],{"class":4723},[4221,33686,33687,33689],{"class":4223,"line":7856},[4221,33688,16878],{"class":4571},[4221,33690,33691],{"class":4756},"([\n",[4221,33693,33694,33697,33699,33701,33704],{"class":4223,"line":7876},[4221,33695,33696],{"class":4756},"            [",[4221,33698,28822],{"class":4558},[4221,33700,3785],{"class":4756},[4221,33702,33703],{"class":4558},"'Система'",[4221,33705,14422],{"class":4756},[4221,33707,33708,33710,33712,33714,33717],{"class":4223,"line":7883},[4221,33709,33696],{"class":4756},[4221,33711,29047],{"class":4558},[4221,33713,3785],{"class":4756},[4221,33715,33716],{"class":4558},"'Світла'",[4221,33718,14422],{"class":4756},[4221,33720,33721,33723,33725,33727,33730],{"class":4223,"line":7892},[4221,33722,33696],{"class":4756},[4221,33724,5465],{"class":4558},[4221,33726,3785],{"class":4756},[4221,33728,33729],{"class":4558},"'Темна'",[4221,33731,14422],{"class":4756},[4221,33733,33734,33737,33739,33741,33743,33745,33747,33749,33751,33753,33755,33757],{"class":4223,"line":7901},[4221,33735,33736],{"class":4756},"          ] ",[4221,33738,16005],{"class":4528},[4221,33740,16008],{"class":4571},[4221,33742,3909],{"class":4756},[4221,33744,4019],{"class":4706},[4221,33746,16454],{"class":4756},[4221,33748,4774],{"class":4536},[4221,33750,3785],{"class":4756},[4221,33752,22200],{"class":4536},[4221,33754,16465],{"class":4756},[4221,33756,4766],{"class":4571},[4221,33758,4579],{"class":4756},[4221,33760,33761,33763,33766,33768,33771,33773,33776],{"class":4223,"line":7910},[4221,33762,23793],{"class":4571},[4221,33764,33765],{"class":4619}," on",[4221,33767,23799],{"class":4532},[4221,33769,33770],{"class":4536}," pref",[4221,33772,7212],{"class":4532},[4221,33774,33775],{"class":4536}," id",[4221,33777,4562],{"class":4756},[4221,33779,33780,33782],{"class":4223,"line":7915},[4221,33781,15125],{"class":4528},[4221,33783,4718],{"class":4756},[4221,33785,33786,33788],{"class":4223,"line":17209},[4221,33787,11187],{"class":4723},[4221,33789,6833],{"class":4575},[4221,33791,33792,33794,33796,33798,33800],{"class":4223,"line":17218},[4221,33793,23830],{"class":4732},[4221,33795,4736],{"class":4532},[4221,33797,4739],{"class":4571},[4221,33799,4774],{"class":4536},[4221,33801,4276],{"class":4571},[4221,33803,33804,33806,33808,33810,33812,33814,33817,33819,33821,33823],{"class":4223,"line":17248},[4221,33805,23847],{"class":4732},[4221,33807,4736],{"class":4532},[4221,33809,4739],{"class":4571},[4221,33811,6845],{"class":4756},[4221,33813,4766],{"class":4571},[4221,33815,33816],{"class":4706}," setPref",[4221,33818,4757],{"class":4756},[4221,33820,4774],{"class":4536},[4221,33822,3874],{"class":4756},[4221,33824,4276],{"class":4571},[4221,33826,33827,33829,33831,33833],{"class":4223,"line":17253},[4221,33828,23875],{"class":4732},[4221,33830,4736],{"class":4532},[4221,33832,4739],{"class":4571},[4221,33834,5857],{"class":4756},[4221,33836,33837,33839,33841,33843],{"class":4223,"line":17262},[4221,33838,23886],{"class":4536},[4221,33840,3793],{"class":4756},[4221,33842,26945],{"class":4536},[4221,33844,5391],{"class":4756},[4221,33846,33847],{"class":4223,"line":17295},[4221,33848,23898],{"class":4756},[4221,33850,33851,33853,33855,33857,33859,33861,33863,33865,33867,33869,33871],{"class":4223,"line":17300},[4221,33852,23903],{"class":4536},[4221,33854,33765],{"class":4536},[4221,33856,7218],{"class":4532},[4221,33858,32883],{"class":4536},[4221,33860,3793],{"class":4756},[4221,33862,9597],{"class":4536},[4221,33864,7228],{"class":4532},[4221,33866,32883],{"class":4536},[4221,33868,3793],{"class":4756},[4221,33870,23922],{"class":4536},[4221,33872,5391],{"class":4756},[4221,33874,33875,33877,33879,33881,33883],{"class":4223,"line":17309},[4221,33876,23929],{"class":4536},[4221,33878,32883],{"class":4536},[4221,33880,3793],{"class":4756},[4221,33882,23472],{"class":4536},[4221,33884,5391],{"class":4756},[4221,33886,33887],{"class":4223,"line":17332},[4221,33888,23942],{"class":4756},[4221,33890,33891,33893],{"class":4223,"line":17364},[4221,33892,23947],{"class":4756},[4221,33894,4276],{"class":4571},[4221,33896,33897],{"class":4223,"line":17396},[4221,33898,24010],{"class":4723},[4221,33900,33901,33903,33905,33907,33909,33911,33913,33915,33917,33919,33921,33923,33925,33927,33929,33931,33933,33935,33937,33939,33941,33943,33945,33947,33949],{"class":4223,"line":17405},[4221,33902,24015],{"class":4723},[4221,33904,4150],{"class":4575},[4221,33906,4807],{"class":4732},[4221,33908,4736],{"class":4532},[4221,33910,4739],{"class":4571},[4221,33912,5689],{"class":4756},[4221,33914,5657],{"class":4536},[4221,33916,33765],{"class":4536},[4221,33918,7218],{"class":4532},[4221,33920,32883],{"class":4536},[4221,33922,3793],{"class":4756},[4221,33924,24047],{"class":4536},[4221,33926,7228],{"class":4532},[4221,33928,32883],{"class":4536},[4221,33930,3793],{"class":4756},[4221,33932,14937],{"class":4536},[4221,33934,3785],{"class":4756},[4221,33936,4975],{"class":4536},[4221,33938,6201],{"class":4558},[4221,33940,3785],{"class":4756},[4221,33942,4968],{"class":4536},[4221,33944,6164],{"class":4934},[4221,33946,5711],{"class":4756},[4221,33948,4822],{"class":4571},[4221,33950,4825],{"class":4723},[4221,33952,33953,33955,33957],{"class":4223,"line":17410},[4221,33954,24085],{"class":4571},[4221,33956,22200],{"class":4536},[4221,33958,4276],{"class":4571},[4221,33960,33961,33963,33965],{"class":4223,"line":17437},[4221,33962,24098],{"class":4723},[4221,33964,4150],{"class":4575},[4221,33966,4825],{"class":4723},[4221,33968,33969,33971,33973],{"class":4223,"line":17460},[4221,33970,24107],{"class":4723},[4221,33972,4156],{"class":4575},[4221,33974,4825],{"class":4723},[4221,33976,33977],{"class":4223,"line":17484},[4221,33978,24116],{"class":4756},[4221,33980,33981,33983],{"class":4223,"line":17507},[4221,33982,24121],{"class":4756},[4221,33984,4276],{"class":4571},[4221,33986,33987,33989,33991],{"class":4223,"line":17516},[4221,33988,4872],{"class":4723},[4221,33990,4147],{"class":4575},[4221,33992,4825],{"class":4723},[4221,33994,33995,33997,33999],{"class":4223,"line":17525},[4221,33996,5725],{"class":4723},[4221,33998,4147],{"class":4575},[4221,34000,4825],{"class":4723},[4221,34002,34003],{"class":4223,"line":17532},[4221,34004,4246],{"emptyLinePlaceholder":4245},[4221,34006,34007,34009],{"class":4223,"line":17551},[4221,34008,5635],{"class":4723},[4221,34010,4727],{"class":4575},[4221,34012,34013,34015,34017,34019,34021,34023,34025,34027],{"class":4223,"line":17574},[4221,34014,5740],{"class":4732},[4221,34016,4736],{"class":4532},[4221,34018,4739],{"class":4571},[4221,34020,5689],{"class":4756},[4221,34022,6076],{"class":4536},[4221,34024,5383],{"class":4934},[4221,34026,5711],{"class":4756},[4221,34028,4276],{"class":4571},[4221,34030,34031,34033,34035,34037,34039],{"class":4223,"line":17613},[4221,34032,5758],{"class":4732},[4221,34034,4736],{"class":4532},[4221,34036,4739],{"class":4571},[4221,34038,8449],{"class":4536},[4221,34040,4276],{"class":4571},[4221,34042,34043,34045,34047,34049,34051,34054,34056,34058,34061,34063,34065],{"class":4223,"line":17636},[4221,34044,5772],{"class":4732},[4221,34046,4736],{"class":4532},[4221,34048,4739],{"class":4571},[4221,34050,4757],{"class":4756},[4221,34052,34053],{"class":4536},"t",[4221,34055,4763],{"class":4756},[4221,34057,4766],{"class":4571},[4221,34059,34060],{"class":4536}," t",[4221,34062,3793],{"class":4756},[4221,34064,4774],{"class":4536},[4221,34066,4276],{"class":4571},[4221,34068,34069,34071,34073,34075,34077],{"class":4223,"line":17685},[4221,34070,7253],{"class":4732},[4221,34072,4736],{"class":4532},[4221,34074,4739],{"class":4571},[4221,34076,24229],{"class":4536},[4221,34078,4276],{"class":4571},[4221,34080,34081,34083,34085,34087,34089,34091,34093,34095,34097,34099,34101],{"class":4223,"line":17694},[4221,34082,5797],{"class":4732},[4221,34084,4736],{"class":4532},[4221,34086,4739],{"class":4571},[4221,34088,5689],{"class":4756},[4221,34090,4931],{"class":4536},[4221,34092,4935],{"class":4934},[4221,34094,3785],{"class":4756},[4221,34096,5806],{"class":4536},[4221,34098,6164],{"class":4934},[4221,34100,5711],{"class":4756},[4221,34102,4276],{"class":4571},[4221,34104,34105,34107,34109,34111,34113,34115,34117,34119,34121,34123,34125,34127,34129,34131,34133,34135,34137],{"class":4223,"line":17703},[4221,34106,13827],{"class":4732},[4221,34108,4736],{"class":4532},[4221,34110,4739],{"class":4571},[4221,34112,6845],{"class":4756},[4221,34114,4766],{"class":4571},[4221,34116,8064],{"class":4723},[4221,34118,4147],{"class":4575},[4221,34120,4807],{"class":4732},[4221,34122,4736],{"class":4532},[4221,34124,4739],{"class":4571},[4221,34126,5689],{"class":4756},[4221,34128,13850],{"class":4536},[4221,34130,6164],{"class":4934},[4221,34132,5711],{"class":4756},[4221,34134,4822],{"class":4571},[4221,34136,8081],{"class":4723},[4221,34138,4276],{"class":4571},[4221,34140,34141,34143,34145],{"class":4223,"line":17710},[4221,34142,9548],{"class":4732},[4221,34144,4736],{"class":4532},[4221,34146,7200],{"class":4571},[4221,34148,34149,34151],{"class":4223,"line":17747},[4221,34150,4830],{"class":4723},[4221,34152,9559],{"class":4575},[4221,34154,34155,34157,34159,34161,34163],{"class":4223,"line":17752},[4221,34156,9564],{"class":4732},[4221,34158,4736],{"class":4532},[4221,34160,4739],{"class":4571},[4221,34162,8670],{"class":4536},[4221,34164,4276],{"class":4571},[4221,34166,34167,34169,34171,34173,34175],{"class":4223,"line":17761},[4221,34168,9577],{"class":4732},[4221,34170,4736],{"class":4532},[4221,34172,4739],{"class":4571},[4221,34174,8678],{"class":4536},[4221,34176,4276],{"class":4571},[4221,34178,34179,34181,34183,34185,34188,34190,34192],{"class":4223,"line":17766},[4221,34180,9590],{"class":4732},[4221,34182,4736],{"class":4532},[4221,34184,4739],{"class":4571},[4221,34186,34187],{"class":4536},"c",[4221,34189,3793],{"class":4756},[4221,34191,9597],{"class":4536},[4221,34193,4276],{"class":4571},[4221,34195,34196,34198,34200,34202,34204,34206,34208,34210,34212],{"class":4223,"line":17771},[4221,34197,9604],{"class":4732},[4221,34199,4736],{"class":4532},[4221,34201,4739],{"class":4571},[4221,34203,5608],{"class":4756},[4221,34205,34187],{"class":4536},[4221,34207,3793],{"class":4756},[4221,34209,9597],{"class":4536},[4221,34211,9615],{"class":4756},[4221,34213,4276],{"class":4571},[4221,34215,34216],{"class":4223,"line":17776},[4221,34217,9622],{"class":4723},[4221,34219,34220],{"class":4223,"line":17793},[4221,34221,7248],{"class":4571},[4221,34223,34224,34226,34228,34230,34232,34234,34236,34238],{"class":4223,"line":17814},[4221,34225,5824],{"class":4732},[4221,34227,4736],{"class":4532},[4221,34229,4739],{"class":4571},[4221,34231,4788],{"class":4756},[4221,34233,4760],{"class":4536},[4221,34235,4793],{"class":4756},[4221,34237,4766],{"class":4571},[4221,34239,4718],{"class":4756},[4221,34241,34242,34244,34246,34248,34250,34252,34254,34256,34258,34260,34262,34264,34266,34268,34270,34272,34274,34276,34278,34280,34282,34284],{"class":4223,"line":17847},[4221,34243,4830],{"class":4723},[4221,34245,4147],{"class":4575},[4221,34247,4807],{"class":4732},[4221,34249,4736],{"class":4532},[4221,34251,4739],{"class":4571},[4221,34253,5608],{"class":4756},[4221,34255,4814],{"class":4536},[4221,34257,3793],{"class":4756},[4221,34259,4819],{"class":4536},[4221,34261,5618],{"class":4756},[4221,34263,5621],{"class":4536},[4221,34265,32883],{"class":4536},[4221,34267,3793],{"class":4756},[4221,34269,23922],{"class":4536},[4221,34271,3785],{"class":4756},[4221,34273,4953],{"class":4536},[4221,34275,32883],{"class":4536},[4221,34277,3793],{"class":4756},[4221,34279,23472],{"class":4536},[4221,34281,5626],{"class":4756},[4221,34283,4822],{"class":4571},[4221,34285,4825],{"class":4723},[4221,34287,34288,34290,34292,34295,34297,34299,34301,34303,34305,34307,34309,34311,34313,34315,34317,34319,34321,34323,34325,34327],{"class":4223,"line":17874},[4221,34289,5908],{"class":4723},[4221,34291,4153],{"class":4575},[4221,34293,34294],{"class":4732}," source",[4221,34296,4736],{"class":4532},[4221,34298,4739],{"class":4571},[4221,34300,5689],{"class":4756},[4221,34302,27782],{"class":4536},[4221,34304,4769],{"class":4536},[4221,34306,3793],{"class":4756},[4221,34308,14907],{"class":4536},[4221,34310,5711],{"class":4756},[4221,34312,4822],{"class":4571},[4221,34314,4807],{"class":4732},[4221,34316,4736],{"class":4532},[4221,34318,4739],{"class":4571},[4221,34320,4814],{"class":4536},[4221,34322,3793],{"class":4756},[4221,34324,27809],{"class":4536},[4221,34326,4822],{"class":4571},[4221,34328,11204],{"class":4723},[4221,34330,34331,34333,34335,34337,34339,34341,34343,34345,34347,34349,34351],{"class":4223,"line":17895},[4221,34332,5908],{"class":4723},[4221,34334,4147],{"class":4575},[4221,34336,4807],{"class":4732},[4221,34338,4736],{"class":4532},[4221,34340,4739],{"class":4571},[4221,34342,5689],{"class":4756},[4221,34344,4931],{"class":4536},[4221,34346,6164],{"class":4934},[4221,34348,5711],{"class":4756},[4221,34350,4822],{"class":4571},[4221,34352,4825],{"class":4723},[4221,34354,34355,34357,34359,34361,34363,34365,34367,34369,34371,34373,34375,34377,34379,34381,34383,34385,34387,34389,34391,34393,34395,34397,34399,34401,34403,34405,34407],{"class":4223,"line":17920},[4221,34356,11187],{"class":4723},[4221,34358,4150],{"class":4575},[4221,34360,4807],{"class":4732},[4221,34362,4736],{"class":4532},[4221,34364,4739],{"class":4571},[4221,34366,5689],{"class":4756},[4221,34368,5657],{"class":4536},[4221,34370,32883],{"class":4536},[4221,34372,3793],{"class":4756},[4221,34374,14937],{"class":4536},[4221,34376,3785],{"class":4756},[4221,34378,4975],{"class":4536},[4221,34380,6201],{"class":4558},[4221,34382,3785],{"class":4756},[4221,34384,4968],{"class":4536},[4221,34386,4935],{"class":4934},[4221,34388,5711],{"class":4756},[4221,34390,4822],{"class":4571},[4221,34392,4850],{"class":4723},[4221,34394,4739],{"class":4571},[4221,34396,4760],{"class":4536},[4221,34398,3793],{"class":4756},[4221,34400,4845],{"class":4536},[4221,34402,4822],{"class":4571},[4221,34404,4863],{"class":4723},[4221,34406,4150],{"class":4575},[4221,34408,4825],{"class":4723},[4221,34410,34411,34413,34415,34417,34419,34421,34423,34425,34427,34429,34431,34433,34435,34437,34439,34441,34443,34445,34447],{"class":4223,"line":17927},[4221,34412,11187],{"class":4723},[4221,34414,4150],{"class":4575},[4221,34416,4807],{"class":4732},[4221,34418,4736],{"class":4532},[4221,34420,4739],{"class":4571},[4221,34422,5689],{"class":4756},[4221,34424,5657],{"class":4536},[4221,34426,32883],{"class":4536},[4221,34428,3793],{"class":4756},[4221,34430,16869],{"class":4536},[4221,34432,3785],{"class":4756},[4221,34434,11227],{"class":4536},[4221,34436,6121],{"class":4934},[4221,34438,3785],{"class":4756},[4221,34440,4968],{"class":4536},[4221,34442,5708],{"class":4934},[4221,34444,5711],{"class":4756},[4221,34446,4822],{"class":4571},[4221,34448,4825],{"class":4723},[4221,34450,34451,34454,34456,34458,34460,34462,34464,34466,34468,34470,34472],{"class":4223,"line":17938},[4221,34452,34453],{"class":4571},"                {",[4221,34455,4760],{"class":4536},[4221,34457,3793],{"class":4756},[4221,34459,28026],{"class":4536},[4221,34461,4822],{"class":4571},[4221,34463,17494],{"class":4756},[4221,34465,4739],{"class":4571},[4221,34467,4760],{"class":4536},[4221,34469,3793],{"class":4756},[4221,34471,28083],{"class":4536},[4221,34473,4276],{"class":4571},[4221,34475,34476,34478,34480],{"class":4223,"line":17947},[4221,34477,24107],{"class":4723},[4221,34479,4150],{"class":4575},[4221,34481,4825],{"class":4723},[4221,34483,34484,34486,34488],{"class":4223,"line":17956},[4221,34485,7436],{"class":4723},[4221,34487,4147],{"class":4575},[4221,34489,4825],{"class":4723},[4221,34491,34492,34494,34496],{"class":4223,"line":17965},[4221,34493,6005],{"class":4723},[4221,34495,4147],{"class":4575},[4221,34497,4825],{"class":4723},[4221,34499,34500,34502],{"class":4223,"line":17970},[4221,34501,6015],{"class":4756},[4221,34503,4276],{"class":4571},[4221,34505,34506],{"class":4223,"line":17989},[4221,34507,6023],{"class":4723},[4221,34509,34510],{"class":4223,"line":18015},[4221,34511,4246],{"emptyLinePlaceholder":4245},[4221,34513,34514,34516,34518,34520,34522,34524,34526,34528,34530,34532,34534,34536,34538,34540,34542,34544,34546,34548,34550,34552,34554,34556],{"class":4223,"line":18035},[4221,34515,5635],{"class":4723},[4221,34517,4147],{"class":4575},[4221,34519,4807],{"class":4732},[4221,34521,4736],{"class":4532},[4221,34523,4739],{"class":4571},[4221,34525,5608],{"class":4756},[4221,34527,4814],{"class":4536},[4221,34529,3793],{"class":4756},[4221,34531,11178],{"class":4536},[4221,34533,5618],{"class":4756},[4221,34535,4953],{"class":4536},[4221,34537,32883],{"class":4536},[4221,34539,3793],{"class":4756},[4221,34541,23472],{"class":4536},[4221,34543,3785],{"class":4756},[4221,34545,5621],{"class":4536},[4221,34547,32883],{"class":4536},[4221,34549,3793],{"class":4756},[4221,34551,33479],{"class":4536},[4221,34553,5626],{"class":4756},[4221,34555,4822],{"class":4571},[4221,34557,4825],{"class":4723},[4221,34559,34560,34562,34564,34566,34568,34570,34572,34574,34576,34579,34581,34583,34585,34587,34589,34591,34593],{"class":4223,"line":18061},[4221,34561,4802],{"class":4723},[4221,34563,4156],{"class":4575},[4221,34565,4807],{"class":4732},[4221,34567,4736],{"class":4532},[4221,34569,4739],{"class":4571},[4221,34571,5608],{"class":4756},[4221,34573,4814],{"class":4536},[4221,34575,3793],{"class":4756},[4221,34577,34578],{"class":4536},"cta",[4221,34580,5618],{"class":4756},[4221,34582,5621],{"class":4536},[4221,34584,32883],{"class":4536},[4221,34586,3793],{"class":4756},[4221,34588,9597],{"class":4536},[4221,34590,5626],{"class":4756},[4221,34592,4822],{"class":4571},[4221,34594,4825],{"class":4723},[4221,34596,34597,34599,34601,34603,34605,34607,34609,34611,34613,34615,34617,34619,34621,34623,34625,34627,34629,34632,34634,34636],{"class":4223,"line":18075},[4221,34598,4830],{"class":4723},[4221,34600,4150],{"class":4575},[4221,34602,4807],{"class":4732},[4221,34604,4736],{"class":4532},[4221,34606,4739],{"class":4571},[4221,34608,5689],{"class":4756},[4221,34610,5657],{"class":4536},[4221,34612,32883],{"class":4536},[4221,34614,3793],{"class":4756},[4221,34616,24047],{"class":4536},[4221,34618,3785],{"class":4756},[4221,34620,4975],{"class":4536},[4221,34622,6114],{"class":4558},[4221,34624,5711],{"class":4756},[4221,34626,4822],{"class":4571},[4221,34628,4850],{"class":4723},[4221,34630,34631],{"class":4532},"Нова поїздка",[4221,34633,4863],{"class":4723},[4221,34635,4150],{"class":4575},[4221,34637,4825],{"class":4723},[4221,34639,34640,34642,34644],{"class":4223,"line":18115},[4221,34641,4872],{"class":4723},[4221,34643,4156],{"class":4575},[4221,34645,4825],{"class":4723},[4221,34647,34648,34650,34652],{"class":4223,"line":18140},[4221,34649,5725],{"class":4723},[4221,34651,4147],{"class":4575},[4221,34653,4825],{"class":4723},[4221,34655,34656,34658,34660],{"class":4223,"line":18147},[4221,34657,6029],{"class":4723},[4221,34659,4147],{"class":4575},[4221,34661,4825],{"class":4723},[4221,34663,34664],{"class":4223,"line":18156},[4221,34665,4893],{"class":4532},[4221,34667,34668],{"class":4223,"line":18165},[4221,34669,4276],{"class":4532},[4221,34671,34672],{"class":4223,"line":18174},[4221,34673,4246],{"emptyLinePlaceholder":4245},[4221,34675,34676,34678,34680,34682,34684,34686,34688],{"class":4223,"line":18183},[4221,34677,4616],{"class":4571},[4221,34679,4908],{"class":4619},[4221,34681,4911],{"class":4532},[4221,34683,4549],{"class":4536},[4221,34685,3793],{"class":4532},[4221,34687,4918],{"class":4706},[4221,34689,4921],{"class":4532},[4221,34691,34692,34694,34696,34698,34700],{"class":4223,"line":18192},[4221,34693,6071],{"class":4536},[4221,34695,4533],{"class":4532},[4221,34697,6076],{"class":4536},[4221,34699,5383],{"class":4934},[4221,34701,4650],{"class":4532},[4221,34703,34704,34707,34709,34711,34713,34715,34717,34719],{"class":4223,"line":18197},[4221,34705,34706],{"class":4536},"  top:",[4221,34708,4533],{"class":4532},[4221,34710,4931],{"class":4536},[4221,34712,4935],{"class":4934},[4221,34714,3785],{"class":4532},[4221,34716,4940],{"class":4536},[4221,34718,5383],{"class":4934},[4221,34720,4650],{"class":4532},[4221,34722,34723,34726,34728,34730,34732,34734,34736,34738],{"class":4223,"line":18217},[4221,34724,34725],{"class":4536},"  brand:",[4221,34727,4533],{"class":4532},[4221,34729,4968],{"class":4536},[4221,34731,6092],{"class":4934},[4221,34733,3785],{"class":4532},[4221,34735,4975],{"class":4536},[4221,34737,6114],{"class":4558},[4221,34739,4650],{"class":4532},[4221,34741,34742,34745,34747,34749,34751,34753,34756,34758,34760,34762,34764,34766,34768,34770],{"class":4223,"line":18224},[4221,34743,34744],{"class":4536},"  chips:",[4221,34746,4533],{"class":4532},[4221,34748,7658],{"class":4536},[4221,34750,7661],{"class":4558},[4221,34752,3785],{"class":4532},[4221,34754,34755],{"class":4536},"flexWrap:",[4221,34757,24773],{"class":4558},[4221,34759,3785],{"class":4532},[4221,34761,5813],{"class":4536},[4221,34763,5701],{"class":4934},[4221,34765,3785],{"class":4532},[4221,34767,11227],{"class":4536},[4221,34769,7702],{"class":4934},[4221,34771,4650],{"class":4532},[4221,34773,34774,34776,34778,34780,34782,34784,34786,34788,34790,34792,34794,34796,34798,34800],{"class":4223,"line":18233},[4221,34775,27281],{"class":4536},[4221,34777,4533],{"class":4532},[4221,34779,18048],{"class":4536},[4221,34781,6164],{"class":4934},[4221,34783,3785],{"class":4532},[4221,34785,11567],{"class":4536},[4221,34787,5701],{"class":4934},[4221,34789,3785],{"class":4532},[4221,34791,11547],{"class":4536},[4221,34793,5701],{"class":4934},[4221,34795,3785],{"class":4532},[4221,34797,7062],{"class":4536},[4221,34799,5383],{"class":4934},[4221,34801,4650],{"class":4532},[4221,34803,34804,34807,34809,34811,34814,34816,34818,34820,34822,34824,34826,34828,34830,34832,34834,34836,34839],{"class":4223,"line":18242},[4221,34805,34806],{"class":4536},"  place:",[4221,34808,4533],{"class":4532},[4221,34810,23001],{"class":4536},[4221,34812,34813],{"class":4934}," 140",[4221,34815,3785],{"class":4532},[4221,34817,7062],{"class":4536},[4221,34819,5383],{"class":4934},[4221,34821,3785],{"class":4532},[4221,34823,11547],{"class":4536},[4221,34825,6164],{"class":4934},[4221,34827,3785],{"class":4532},[4221,34829,4931],{"class":4536},[4221,34831,7702],{"class":4934},[4221,34833,3785],{"class":4532},[4221,34835,18088],{"class":4536},[4221,34837,34838],{"class":4934}," 72",[4221,34840,4650],{"class":4532},[4221,34842,34843,34845,34847,34849,34851,34853,34855,34857,34859,34862,34864],{"class":4223,"line":18251},[4221,34844,4926],{"class":4536},[4221,34846,4533],{"class":4532},[4221,34848,7062],{"class":4536},[4221,34850,5383],{"class":4934},[4221,34852,3785],{"class":4532},[4221,34854,11547],{"class":4536},[4221,34856,4935],{"class":4934},[4221,34858,3785],{"class":4532},[4221,34860,34861],{"class":4536},"overflow:",[4221,34863,28363],{"class":4558},[4221,34865,4650],{"class":4532},[4221,34867,34868,34870,34872,34874,34876,34878,34880,34883,34885,34887,34890],{"class":4223,"line":18261},[4221,34869,28502],{"class":4536},[4221,34871,4533],{"class":4532},[4221,34873,23001],{"class":4536},[4221,34875,28511],{"class":4558},[4221,34877,3785],{"class":4532},[4221,34879,13850],{"class":4536},[4221,34881,34882],{"class":4934}," 120",[4221,34884,3785],{"class":4532},[4221,34886,5621],{"class":4536},[4221,34888,34889],{"class":4558}," '#cbd5e1'",[4221,34891,4650],{"class":4532},[4221,34893,34894,34896,34898,34901,34903,34905,34907,34909],{"class":4223,"line":18270},[4221,34895,11562],{"class":4536},[4221,34897,4533],{"class":4532},[4221,34899,34900],{"class":4536},"borderTopWidth:",[4221,34902,5383],{"class":4934},[4221,34904,3785],{"class":4532},[4221,34906,4931],{"class":4536},[4221,34908,4935],{"class":4934},[4221,34910,4650],{"class":4532},[4221,34912,34913,34916,34918,34920,34922,34924,34926,34928,34930,34932,34934],{"class":4223,"line":18275},[4221,34914,34915],{"class":4536},"  cta:",[4221,34917,4533],{"class":4532},[4221,34919,11567],{"class":4536},[4221,34921,6175],{"class":4934},[4221,34923,3785],{"class":4532},[4221,34925,11547],{"class":4536},[4221,34927,6164],{"class":4934},[4221,34929,3785],{"class":4532},[4221,34931,11574],{"class":4536},[4221,34933,7405],{"class":4558},[4221,34935,4650],{"class":4532},[4221,34937,34938],{"class":4223,"line":18300},[4221,34939,4985],{"class":4532},[3960,34941],{},[3738,34943,34945],{"id":34944},"практичні-завдання","Практичні завдання",[4131,34947,34949],{"id":34948},"базовий-рівень","Базовий рівень",[3814,34951,34952,34962,34973],{},[3817,34953,34954,34955,4016,34957,34959,34960,3793],{},"Своїми словами пояснити, чим ",[3750,34956,3752],{},[3750,34958,4019],{}," відрізняється від ",[3750,34961,3784],{},[3817,34963,34964,34965,34967,34968,34970,34971,3793],{},"Зібрати ",[3750,34966,3784],{}," на 30 рядків з ",[3750,34969,3843],{}," по ",[3750,34972,4774],{},[3817,34974,34975,34976,34978,34979,3793],{},"Додати ",[3750,34977,3853],{}," і кнопку, що очищує ",[3750,34980,3837],{},[4131,34982,34984],{"id":34983},"середній-рівень","Середній рівень",[3814,34986,34987,34993,35002],{},[3817,34988,34989,34990,34992],{},"Міні-проєкт «Каталог книг»: 200+ items, ",[3750,34991,3788],{}," за жанром, pull-to-refresh.",[3817,34994,34995,34996,34998,34999,35001],{},"У Nomad тимчасово підмінити ",[3750,34997,3792],{}," на ",[3750,35000,3784],{}," і назад — порівняти код (майже drop-in).",[3817,35003,35004,35005,35007],{},"Додати mock ",[3750,35006,3873],{},": дописувати по 5 поїздок, поки не стане 30.",[4131,35009,35011],{"id":35010},"професійний-рівень","Професійний рівень",[3814,35013,35014,35017,35027],{},[3817,35015,35016],{},"Error-state: кнопка «Симулювати помилку» ховає список і показує «Спробувати знову».",[3817,35018,35019,35021,35022,6386,35025,3909],{},[3750,35020,3896],{}," + логіка «чому рядок ререндериться» (тимчасовий ",[3750,35023,35024],{},"console.log",[3750,35026,14382],{},[3817,35028,35029,35030,35032,35033,35035],{},"Горизонтальний ",[3750,35031,3792],{}," місць замість ",[3750,35034,3784],{}," (якщо версія API це зручно підтримує) і нотатка про nested scrolling.",[3960,35037],{},[3738,35039,35041],{"id":35040},"часті-запитання","Часті запитання",[35043,35044,35045,35066,35081,35099,35117,35130,35149],"accordion",{},[35046,35047,35050,35051,35053,35054,35057,35058,35061,35062,5035,35064,3909],"accordion-item",{"icon":35048,"label":35049},"i-lucide-circle-help","У яких випадках виправдано використання ScrollView + map замість віртуалізованого списку?","Пряма ітерація масиву усередині ",[3750,35052,3752],{}," є архітектурно допустимою виключно тоді, коли вибірка є ",[3770,35055,35056],{},"гарантовано обмеженою"," (до 5–10 елементів), контент має ",[3770,35059,35060],{},"гетерогенну природу"," (наприклад, екран налаштувань профілю або складна форма реєстрації) і не передбачає динамічного росту. Як тільки сутності представляють однотипну колекцію, що надходить з бекенду або бази даних, інженерним стандартом є застосування віртуалізованого списку (",[3750,35063,3784],{},[3750,35065,3792],{},[35046,35067,35069,35070,35073,35074,35076,35077,35080],{"icon":35048,"label":35068},"Чому FlatList не скролиться або має нульову висоту на екрані?","Головною причиною є порушення ",[3770,35071,35072],{},"правила обмеженої висоти (Bounded Height Constraint)"," у дереві Flexbox. Список розраховує свій скрол відносно жорстких меж батьківського контейнера. Якщо батьківський блок не має властивості ",[3750,35075,5089],{}," або висоти, заданої у фізичних одиницях (",[3750,35078,35079],{},"height: 300","), висота списку схлопується до нуля або він намагається розтягнути полотно на всю висоту контенту без активації внутрішнього нативного скролу.",[35046,35082,35084,35086,35087,35089,35090,35092,35093,35095,35096,35098],{"icon":35048,"label":35083},"Для чого потрібен параметр extraData і коли його необхідно передавати?",[3750,35085,3784],{}," оптимізує рендеринг за рахунок неглибокого порівняння посилання на масив ",[3750,35088,3837],{},". Якщо візуальний стан рядка залежить від зовнішніх змінних (наприклад, ID виділеного елемента ",[3750,35091,14331],{},", активна мова застосунку, стан глобальної теми), зміна цих змінних не змінює посилання на ",[3750,35094,3837],{},". Передача таких залежностей у проп ",[3750,35097,14335],{}," інвалідує внутрішній кеш віртуалізатора і форсує перерендер видимих комірок.",[35046,35100,35102,35103,35105,35106,3803,35108,35110,35111,35113,35114,35116],{"icon":35048,"label":35101},"Чи є бібліотека FlashList обов'язковою для кожного мобільного проєкту?","Ні. Для невеликих або середніх списків із відносно простими картками стандартного ",[3750,35104,3784],{}," із ",[3750,35107,3896],{},[3750,35109,3904],{}," більш ніж достатньо. Бібліотеку ",[3750,35112,14496],{}," варто інтегрувати в проєкт, коли екран містить важкі динамічні стрічки (соціальні мережі, маркетплейси), де ",[3750,35115,3784],{}," демонструє появу білих порожнеч при швидкому скролі через витрати на циклічне створення та видалення нативних представлень.",[35046,35118,35120,35121,35123,35124,35126,35127,35129],{"icon":35048,"label":35119},"Чому в онлайн-прев'ю на сайті курсу використовується FlatList, а не FlashList?","Пісочниця ",[3750,35122,3943],{}," працює на базі ",[3750,35125,3947],{}," у браузерному середовищі, куди підключено лише стандартний набір компонентів ядра React Native. Бібліотека ",[3750,35128,14496],{}," містить платформозалежний C++\u002Fнативний код і призначена для запуску на реальних мобільних пристроях або в симуляторах iOS\u002FAndroid (включно з клієнтом Expo Go).",[35046,35131,35133,35135,35136,35139,35140,35142,35143,35145,35146,35148],{"icon":35048,"label":35132},"У чому перевага SectionList перед вертикальним стеком із кількох FlatList?",[3750,35134,3788],{}," формує ",[3770,35137,35138],{},"єдине віртуалізоване вікно перегляду"," для всіх секцій одночасно, спільно управляючи пам'яттю та чергою рендерингу. Розміщення кількох вертикальних ",[3750,35141,3784],{}," один під одним усередині загального ",[3750,35144,3752],{}," призводить до конфліктів скролу (Nested Scroll Conflicts), втрати віртуалізації та надлишкового споживання ресурсів. Водночас розміщення горизонтального списку в ",[3750,35147,3857],{}," вертикального списку є стандартним і безпечним патерном.",[35046,35150,35152,35153,35156,35157,35159,35160,35162,35163,35165,35166,35168,35169,35171,35172,35174,35175,35177],{"icon":35048,"label":35151},"Чому жест Pull-to-refresh не ініціюється або не відображає спінер?","Жест pull-to-refresh працює виключно для ",[3770,35154,35155],{},"вертикальних скролів",". Перевірте, що компонент ",[3750,35158,5119],{}," передано безпосередньо у проп ",[3750,35161,8657],{}," списку, а не обгорнуто в зовнішній ",[3750,35164,4147],{},". Також переконайтеся, що стан ",[3750,35167,8670],{}," змінюється на ",[3750,35170,9228],{}," у функції ",[3750,35173,8678],{}," та коректно скидається у ",[3750,35176,8691],{}," після завершення асинхронної операції.",[3960,35179],{},[3738,35181,35183],{"id":35182},"що-далі","Що далі",[3743,35185,35186,35187,4587,35190,35193,35194,35197],{},"Далі — ",[3770,35188,35189],{},"форми",[3750,35191,35192],{},"TextInput",", клавіатура, валідація (RHF + Zod), екран створення поїздки. Списки вже вміють показувати результат; форми навчать ",[3770,35195,35196],{},"додавати"," дані в ці списки.",[3743,35199,35200,17494,35204,17494,35208,17494,35212,17494,35216,17494,35220],{},[16457,35201,3784],{"href":35202,"rel":35203},"https:\u002F\u002Freactnative.dev\u002Fdocs\u002Fflatlist",[20980],[16457,35205,3788],{"href":35206,"rel":35207},"https:\u002F\u002Freactnative.dev\u002Fdocs\u002Fsectionlist",[20980],[16457,35209,4433],{"href":35210,"rel":35211},"https:\u002F\u002Freactnative.dev\u002Fdocs\u002Fvirtualizedlist",[20980],[16457,35213,3865],{"href":35214,"rel":35215},"https:\u002F\u002Freactnative.dev\u002Fdocs\u002Frefreshcontrol",[20980],[16457,35217,3792],{"href":35218,"rel":35219},"https:\u002F\u002Fshopify.github.io\u002Fflash-list\u002F",[20980],[16457,35221,20981],{"href":20978,"rel":35222},[20980],[5085,35224,35225],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s8xlr, html code.shiki .s8xlr{--shiki-light:#AF00DB;--shiki-default:#C586C0;--shiki-dark:#C586C0}html pre.shiki code .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .siwwj, html code.shiki .siwwj{--shiki-light:#001080;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .sN1BT, html code.shiki .sN1BT{--shiki-light:#267F99;--shiki-default:#4EC9B0;--shiki-dark:#4EC9B0}html pre.shiki code .s-QsJ, html code.shiki .s-QsJ{--shiki-light:#0070C1;--shiki-default:#4FC1FF;--shiki-dark:#4FC1FF}html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .s0P7L, html code.shiki .s0P7L{--shiki-light:#800000;--shiki-default:#808080;--shiki-dark:#808080}html pre.shiki code .sa4r_, html code.shiki .sa4r_{--shiki-light:#E50000;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sD7JJ, html code.shiki .sD7JJ{--shiki-light:#000000FF;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}html pre.shiki code .spJ8K, html code.shiki .spJ8K{--shiki-light:#008000;--shiki-default:#6A9955;--shiki-dark:#6A9955}html pre.shiki code .se1LK, html code.shiki .se1LK{--shiki-light:#CD3131;--shiki-default:#F44747;--shiki-dark:#F44747}html pre.shiki code .sLwNe, html code.shiki .sLwNe{--shiki-light:#0451A5;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}",{"title":4217,"searchDepth":4230,"depth":4230,"links":35227},[35228,35229,35230,35237,35238,35245,35249,35252,35254,35258,35263,35269,35271,35272,35280,35292,35301,35302,35317,35325,35330,35331],{"id":3740,"depth":4230,"text":3741},{"id":3964,"depth":4230,"text":3965},{"id":4123,"depth":4230,"text":4124,"children":35231},[35232,35233,35234,35235,35236],{"id":4133,"depth":4236,"text":4134},{"id":4140,"depth":4236,"text":4141},{"id":4160,"depth":4236,"text":4161},{"id":4170,"depth":4236,"text":4171},{"id":4190,"depth":4236,"text":4191},{"id":4413,"depth":4230,"text":4414},{"id":4505,"depth":4230,"text":35239,"children":35240},"FlatList — архітектура та анатомія базового списку",[35241,35243],{"id":4988,"depth":4236,"text":35242},"Повний огляд параметрів (Props) FlatList",{"id":5204,"depth":4236,"text":35244},"Демо: простий FlatList",{"id":6255,"depth":4230,"text":35246,"children":35247},"keyExtractor: алгоритм узгодження та стабільність ідентичності",[35248],{"id":6329,"depth":4236,"text":6330},{"id":6411,"depth":4230,"text":6412,"children":35250},[35251],{"id":6418,"depth":4236,"text":6419},{"id":7943,"depth":4230,"text":35253},"Мультиколонкові сітки (Grids): numColumns та динамічна перебудова",{"id":8183,"depth":4230,"text":35255,"children":35256},"Імперативне управління скролом: робота з ref",[35257],{"id":8466,"depth":4236,"text":8467},{"id":8600,"depth":4230,"text":8601,"children":35259},[35260,35262],{"id":8645,"depth":4236,"text":35261},"Життєвий цикл та UI-контракт RefreshControl",{"id":8717,"depth":4236,"text":8718},{"id":9961,"depth":4230,"text":35264,"children":35265},"Пагінація UI: нескінченний скрол та onEndReached",[35266,35267,35268],{"id":9973,"depth":4236,"text":9974},{"id":10135,"depth":4236,"text":10136},{"id":10189,"depth":4236,"text":10190},{"id":11587,"depth":4230,"text":35270},"Відстеження видимості елементів: viewabilityConfig та аналітика показів",{"id":12023,"depth":4230,"text":12024},{"id":12215,"depth":4230,"text":35273,"children":35274},"SectionList — ієрархічні та груповані структури даних",[35275,35276,35278,35279],{"id":12241,"depth":4236,"text":12242},{"id":12510,"depth":4236,"text":35277},"Анатомія рендерингу SectionList",{"id":12749,"depth":4236,"text":12750},{"id":12796,"depth":4236,"text":12797},{"id":14071,"depth":4230,"text":14072,"children":35281},[35282,35283,35285,35287,35288,35290],{"id":14103,"depth":4236,"text":14104},{"id":14109,"depth":4236,"text":35284},"1. Ізоляція та мемоізація компонента рядка (React.memo)",{"id":14132,"depth":4236,"text":35286},"2. Стабільність функціональних посилань (useCallback)",{"id":14161,"depth":4236,"text":14162},{"id":14192,"depth":4236,"text":35289},"4. Попереднє обчислення геометрії (getItemLayout)",{"id":14316,"depth":4236,"text":35291},"5. Інвалідація віртуалізації через extraData",{"id":14460,"depth":4230,"text":35293,"children":35294},"FlashList — парадигма Cell Recycling",[35295,35296,35298,35299],{"id":14487,"depth":4236,"text":14488},{"id":14539,"depth":4236,"text":35297},"Порівняльний аналіз FlatList та FlashList",{"id":14635,"depth":4236,"text":14636},{"id":14828,"depth":4236,"text":35300},"Гетерогенні списки та типізація комірок (getItemType)",{"id":15253,"depth":4230,"text":15254},{"id":15441,"depth":4230,"text":35303,"children":35304},"Міні-проєкт: «Каталог книг» на базі SectionList",[35305,35306,35307,35308,35309,35310,35312,35313,35314,35315,35316],{"id":15447,"depth":4236,"text":15448},{"id":15522,"depth":4236,"text":15523},{"id":15642,"depth":4236,"text":15643},{"id":15648,"depth":4236,"text":15649},{"id":15659,"depth":4236,"text":15660},{"id":15684,"depth":4236,"text":35311},"3. Конфігурація компонента SectionList",{"id":15706,"depth":4236,"text":15707},{"id":15723,"depth":4236,"text":15724},{"id":15736,"depth":4236,"text":15737},{"id":15743,"depth":4236,"text":15744},{"id":18305,"depth":4236,"text":18306},{"id":20805,"depth":4230,"text":20806,"children":35318},[35319,35320,35321,35322,35323,35324],{"id":20809,"depth":4236,"text":20810},{"id":20869,"depth":4236,"text":20870},{"id":20968,"depth":4236,"text":20969},{"id":31960,"depth":4236,"text":31961},{"id":31982,"depth":4236,"text":31983},{"id":32076,"depth":4236,"text":32077},{"id":34944,"depth":4230,"text":34945,"children":35326},[35327,35328,35329],{"id":34948,"depth":4236,"text":34949},{"id":34983,"depth":4236,"text":34984},{"id":35010,"depth":4236,"text":35011},{"id":35040,"depth":4230,"text":35041},{"id":35182,"depth":4230,"text":35183},"FlatList, SectionList, FlashList, pull-to-refresh, порожній і помилковий стан, пагінація UI — каталог книг і стрічки поїздок\u002Fмісць у Nomad",null,{},{"title":3424,"description":35332},"HSKYlwbMmfR7vkPPa5KzvsX3X9_6nkCyOvj3hyYwhko",[35338,35340],{"title":3420,"path":3421,"stem":3422,"description":35339,"children":-1},"StyleSheet.create, масиви стилів, семантичні токени кольорів, useColorScheme і перемикач світлої\u002Fтемної теми в Nomad",{"title":3428,"path":3429,"stem":3430,"description":35341,"children":-1},"Усі основні контроли форми в React Native — TextInput, Pressable, Button, Switch, Checkbox, Slider, Picker, date picker; клавіатура; React Hook Form і Zod; реєстрація на подію та створення поїздки в Nomad",1788069958457]