import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/LibraryAiWiki - Генератор AI Wiki'/>

# Класс LibraryAiWiki

Класс `LibraryAiWiki` отвечает за генерацию необходимых файлов для отображения списка UI компонентов в AI Wiki. Он идентифицирует компоненты, у которых есть реализация для AI Wiki, и генерирует как файл данных библиотеки, так и Vue-компонент для их отображения.

## Ключевые особенности

- **Поиск компонентов**: Сканирует элементы библиотеки для поиска компонентов с файлами `*AiWiki.vue`.
- **Генерация библиотеки**: Создает файл `wiki.ts`, содержащий импорты и список всех идентифицированных компонентов AI Wiki.
- **Интеграция с UI**: Генерирует компонент `AiWiki.vue`, который использует созданный список для рендеринга списка якорей и самих компонентов.

## Инициализация

Инициализируйте `LibraryAiWiki`, предоставив экземпляр `LibraryItems`.

**Параметры:**
- `items: LibraryItems` — объект для работы со списком компонентов и предоставления функциональности записи.

```typescript
import { LibraryItems, LibraryAiWiki } from '@dxtmisha/scripts'

const items = new LibraryItems()
const aiWiki = new LibraryAiWiki(items)

// Запуск процесса генерации
aiWiki.make()
```

## Методы

### Генерация

- `make(): void` — основная точка входа, которая запускает процесс генерации. Координирует создание файла списка компонентов и самого UI-компонента.

## Примеры

### Пример сгенерированного файла данных (`ai-list.wiki.ts`)
```typescript
// This file is generated by a script, do not edit.
import DxtButton from '../../components/DxtButton/DxtButtonAiWiki.vue'
import DxtInput from '../../components/DxtInput/DxtInputAiWiki.vue'

export const aiList: any[] = [
  DxtButton,
  DxtInput
]
```

### Пример сгенерированного компонента (`AiWiki.vue`)
```vue
<script setup lang="ts">
import { DxtTestPage, DxtTestWikiAnchor } from '@dxtmisha/test'
import { aiList } from '../library/ai-list.wiki'

defineOptions({
  name: 'AiWiki'
})
</script>

<template>
  <DxtTestPage title="..." description="...">
    <DxtTestWikiAnchor :list="aiList"/>
    <component v-for="(item, key) in aiList" :is="item" :key="key"/>
  </DxtTestPage>
</template>
```
