@mk-kit/ui 0.55.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"mk-kit-ui-locales-uk.mjs","sources":["../../../projects/mk-kit/locales/uk/uk.ts","../../../projects/mk-kit/locales/uk/index.ts","../../../projects/mk-kit/locales/uk/mk-kit-ui-locales-uk.ts"],"sourcesContent":["import type { Provider } from '@angular/core';\nimport {\n type MkBlockEditorStrings,\n type MkDateNames,\n type MkI18nOverrides,\n type MkI18nStrings,\n type MkValidationStrings,\n provideMkI18n,\n} from '@mk-kit/ui/core';\n\n/**\n * Picks the Ukrainian plural form for a count — CLDR's `uk` rules for\n * integers: `one` when the number ends in 1 (but not 11), `few` when it ends\n * in 2–4 (but not 12–14), `many` otherwise.\n *\n * ```ts\n * mkPluralUk(1, 'результат', 'результати', 'результатів'); // 'результат'\n * mkPluralUk(3, 'результат', 'результати', 'результатів'); // 'результати'\n * mkPluralUk(11, 'результат', 'результати', 'результатів'); // 'результатів'\n * ```\n */\nexport function mkPluralUk(\n count: number,\n one: string,\n few: string,\n many: string,\n): string {\n const n = Math.abs(Math.trunc(count));\n const mod10 = n % 10;\n const mod100 = n % 100;\n if (mod10 === 1 && mod100 !== 11) return one;\n if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) return few;\n return many;\n}\n\nconst plural = mkPluralUk;\n\n/** Ukrainian month and weekday names (Sunday-first, lowercase as in `Intl`). */\nexport const MK_UK_DATE_NAMES: MkDateNames = {\n months: [\n 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень',\n 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень',\n ],\n monthsShort: [\n 'січ', 'лют', 'бер', 'кві', 'тра', 'чер',\n 'лип', 'сер', 'вер', 'жов', 'лис', 'гру',\n ],\n weekdays: [\n 'неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'пʼятниця', 'субота',\n ],\n weekdaysShort: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n weekdaysNarrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],\n};\n\n/** Ukrainian validation messages rendered by `mk-form-field`. */\nexport const MK_UK_VALIDATION: MkValidationStrings = {\n required: 'Це поле є обовʼязковим',\n email: 'Введіть дійсну адресу електронної пошти',\n min: ({ min }) => `Значення не може бути меншим за ${min}`,\n max: ({ max }) => `Значення не може бути більшим за ${max}`,\n minlength: ({ requiredLength }) =>\n `Введіть щонайменше ${requiredLength} ${plural(requiredLength, 'символ', 'символи', 'символів')}`,\n maxlength: ({ requiredLength }) =>\n `Введіть не більше ${requiredLength} ${plural(requiredLength, 'символа', 'символів', 'символів')}`,\n pattern: 'Введіть значення в очікуваному форматі',\n mkMinDate: ({ min }) =>\n `Дата не може бути ранішою за ${min.toLocaleDateString('uk-UA')}`,\n mkMaxDate: ({ max }) =>\n `Дата не може бути пізнішою за ${max.toLocaleDateString('uk-UA')}`,\n mkDateFilter: 'Ця дата недоступна',\n mkDateRangeIncomplete: 'Виберіть початкову та кінцеву дати',\n mkMinTime: ({ min }) => `Час не може бути ранішим за ${min}`,\n mkMaxTime: ({ max }) => `Час не може бути пізнішим за ${max}`,\n mkMaxItems: ({ max }) =>\n `Виберіть не більше ${max} ${plural(max, 'елемента', 'елементів', 'елементів')}`,\n mkFileSize: ({ name, maxLabel }) => `Файл ${name} перевищує ${maxLabel}`,\n mkFileType: ({ name }) => `Файл ${name} має неприпустимий тип`,\n cardNumber: 'Введіть дійсний номер картки',\n iban: ({ expectedLength }) =>\n expectedLength\n ? `Введіть дійсний IBAN (${expectedLength} символів)`\n : 'Введіть дійсний IBAN',\n postalCode: ({ example }) => `Введіть дійсний поштовий індекс, напр. ${example}`,\n taxId: ({ label, example }) => `Введіть дійсний ${label}, напр. ${example}`,\n unknown: 'Недійсне значення',\n};\n\n/** Ukrainian strings of the block editor's chrome. */\nexport const MK_UK_BLOCK_EDITOR: MkBlockEditorStrings = {\n addBlock: 'Додати блок',\n addFirstBlock: 'Додати перший блок',\n insertBlockHere: 'Вставити блок тут',\n blockInserter: 'Вставлення блоків',\n searchBlocks: 'Пошук блоків…',\n blocks: 'Блоки',\n moveBlockUp: 'Перемістити блок вище',\n moveBlockDown: 'Перемістити блок нижче',\n blockOptions: 'Параметри блока',\n duplicate: 'Дублювати',\n remove: 'Видалити',\n textFormatting: 'Форматування тексту',\n altText: 'Альтернативний текст',\n caption: 'Підпис',\n alignment: 'Вирівнювання',\n replaceImage: 'Замінити зображення',\n imageUrl: 'URL-адреса зображення',\n externalContent: 'Зовнішній вміст',\n embedUrl: 'URL-адреса вбудовування',\n columnSettings: 'Налаштування колонок',\n columns: 'Колонки',\n ratio: 'Пропорції',\n gap: 'Проміжок',\n align: 'Вирівняти',\n justify: 'Розподілити',\n headingLevel: (level) => `Заголовок рівня ${level}`,\n editorLabel: 'Редактор блокового вмісту',\n emptyBlockPlaceholder: 'Введіть /, щоб вибрати блок, або просто почніть писати…',\n dragHandle: 'Ручка перетягування',\n turnInto: (label) => `Перетворити на: ${label}`,\n unknownBlock: (type) => `Невідомий блок: ${type}`,\n blockAdded: (label) => `Додано: ${label}`,\n blockDuplicated: 'Блок продубльовано',\n blockDeleted: (label) => `Видалено: ${label}`,\n blockMovedUp: 'Блок переміщено вище',\n blockMovedDown: 'Блок переміщено нижче',\n turnedInto: (label) => `Перетворено на: ${label}`,\n noBlocksMatch: (query) => `Немає блоків, що відповідають «${query}».`,\n groupText: 'Текст',\n groupMedia: 'Медіа',\n groupLayout: 'Макет',\n blockParagraph: 'Абзац',\n blockParagraphDesc: 'Текст із вбудованим форматуванням.',\n blockHeading: 'Заголовок',\n blockHeadingDesc: 'Назва розділу (H1–H4).',\n blockList: 'Список',\n blockListDesc: 'Маркований або нумерований список.',\n blockQuote: 'Цитата',\n blockQuoteDesc: 'Блокова цитата з необовʼязковим джерелом.',\n blockCode: 'Код',\n blockCodeDesc: 'Відформатований моноширинний код.',\n blockImage: 'Зображення',\n blockImageDesc: 'Завантажте зображення або додайте посилання.',\n blockEmbed: 'Вбудовування',\n blockEmbedDesc: 'YouTube, Vimeo або будь-яка URL-адреса.',\n blockButton: 'Кнопка',\n blockButtonDesc: 'Кнопка із закликом до дії.',\n blockDivider: 'Розділювач',\n blockDividerDesc: 'Горизонтальна розділювальна лінія.',\n blockColumns: 'Колонки',\n blockColumnsDesc: 'Адаптивний багатоколонковий макет.',\n bold: 'Жирний',\n italic: 'Курсив',\n underline: 'Підкреслений',\n strikethrough: 'Закреслений',\n inlineCode: 'Вбудований код',\n link: 'Посилання',\n clearFormatting: 'Очистити форматування',\n linkUrlPrompt: 'URL-адреса посилання',\n editableText: 'Текст для редагування',\n headingPlaceholder: (level) => `Заголовок ${level}`,\n headingLevelGroup: 'Рівень заголовка',\n listStyle: 'Стиль списку',\n bulleted: 'Маркований',\n numbered: 'Нумерований',\n listItem: 'Елемент списку',\n quoteText: 'Текст цитати',\n citation: 'Джерело',\n addCitation: '— Додати джерело',\n codeLanguage: 'Мова коду',\n codeLanguagePlaceholder: 'мова (необовʼязково)',\n enterCode: 'Введіть код…',\n imageWidth: (percent) => `Ширина: ${percent}%`,\n uploading: 'Завантаження…',\n dropImagePrompt: 'Перетягніть зображення сюди або',\n chooseFile: 'Виберіть файл',\n pasteImageUrl: '…або вставте URL-адресу зображення',\n notAnImage: 'Виберіть файл зображення.',\n uploadFailed: 'Не вдалося завантажити. Спробуйте ще раз або вставте URL-адресу.',\n imageAdded: 'Зображення додано',\n pasteEmbedUrl: 'Вставте URL-адресу з YouTube, Vimeo чи іншу…',\n embedFallbackNote: 'Цю адресу не можна вбудувати, але її буде показано як посилання.',\n embedTitle: (provider) => `Вбудовування ${provider}`,\n embedAdded: (provider) => `Додано вбудовування ${provider}`,\n embeddedContent: 'Вбудований вміст',\n buttonLabel: 'Напис',\n buttonLink: 'Посилання (href)',\n buttonTone: 'Тон',\n buttonVariant: 'Варіант',\n buttonDefaultLabel: 'Натисніть',\n alignLeft: 'Ліворуч',\n alignCenter: 'По центру',\n alignRight: 'Праворуч',\n tonePrimary: 'Основний',\n toneNeutral: 'Нейтральний',\n toneSuccess: 'Успіх',\n toneWarning: 'Попередження',\n toneDanger: 'Небезпека',\n toneInfo: 'Інформація',\n variantSolid: 'Заповнений',\n variantSoft: 'Мʼякий',\n variantOutline: 'Контурний',\n ratioEqual: 'Рівні',\n alignStretch: 'Розтягнути',\n alignTop: 'Угорі',\n alignMiddle: 'Посередині',\n alignBottom: 'Унизу',\n justifyStart: 'На початку',\n justifyCenter: 'По центру',\n justifyEnd: 'У кінці',\n justifyBetween: 'Рівномірно',\n};\n\nconst PASSWORD_STRENGTH_LABELS = ['Слабкий', 'Слабкий', 'Посередній', 'Хороший', 'Надійний'];\n\n/**\n * The complete Ukrainian string map — every key of {@link MkI18nStrings},\n * `locale: 'uk-UA'` and `currency: 'UAH'` for the formatting pipes.\n * Provide it whole with {@link provideMkI18nUk}, or pass it as the base of\n * `provideMkI18n(overrides, MK_UK_I18N)`.\n */\nexport const MK_UK_I18N: MkI18nStrings = {\n locale: 'uk-UA',\n currency: 'UAH',\n\n validation: MK_UK_VALIDATION,\n\n close: 'Закрити',\n dismiss: 'Відхилити',\n clear: 'Очистити',\n confirm: 'Підтвердити',\n cancel: 'Скасувати',\n ok: 'OK',\n save: 'Зберегти',\n submit: 'Надіслати',\n edit: 'Редагувати',\n remove: 'Видалити',\n removeItem: (name) => `Видалити ${name}`,\n empty: 'Порожньо',\n optional: 'Необовʼязково',\n filter: 'Фільтрувати…',\n confirmMessage: 'Ви впевнені?',\n decrease: 'Зменшити',\n increase: 'Збільшити',\n\n loading: 'Завантаження…',\n noOptions: 'Немає варіантів',\n noResults: 'Немає результатів',\n noData: 'Немає даних для відображення',\n resultsCount: (count) =>\n `${count} ${plural(count, 'результат', 'результати', 'результатів')}`,\n\n previousPage: 'Перейти до попередньої сторінки',\n nextPage: 'Перейти до наступної сторінки',\n goToPage: (page) => `Перейти до сторінки ${page}`,\n paginationLabel: 'Пагінація',\n previousSlide: 'Попередній слайд',\n nextSlide: 'Наступний слайд',\n goToSlide: (slide) => `Перейти до слайда ${slide}`,\n carouselLabel: 'Карусель',\n pauseSlideshow: 'Призупинити показ слайдів',\n playSlideshow: 'Продовжити показ слайдів',\n slideOf: (slide, total) => `Слайд ${slide} з ${total}`,\n\n dateNames: MK_UK_DATE_NAMES,\n previousMonth: 'Попередній місяць',\n nextMonth: 'Наступний місяць',\n previousYear: 'Попередній рік',\n nextYear: 'Наступний рік',\n previousYears: 'Попередні роки',\n nextYears: 'Наступні роки',\n selectDate: 'Виберіть дату…',\n selectRange: 'Виберіть діапазон…',\n selectTime: 'Виберіть час…',\n selectMonth: 'Виберіть місяць…',\n selectYear: 'Виберіть рік…',\n selectWeek: 'Виберіть тиждень…',\n selectPlaceholder: 'Виберіть…',\n chooseDate: 'Вибір дати',\n chooseDateRange: 'Вибір діапазону дат',\n chooseMonth: 'Вибір місяця',\n chooseYear: 'Вибір року',\n chooseWeek: 'Вибір тижня',\n openCalendar: 'Відкрити календар',\n openTimeList: 'Відкрити список часу',\n moreActions: 'Більше дій',\n selectDateTime: 'Виберіть дату й час…',\n chooseDateTime: 'Вибір дати й часу',\n chooseTime: 'Вибір часу',\n openDateTimePicker: 'Відкрити вибір дати й часу',\n daySegment: 'День',\n monthSegment: 'Місяць',\n yearSegment: 'Рік',\n countdownDays: 'дн.',\n countdownHours: 'год',\n countdownMinutes: 'хв',\n countdownSeconds: 'с',\n countdownFinished: 'Завершено',\n dayEvents: (count, titles) =>\n `${count} ${plural(count, 'подія', 'події', 'подій')}${titles ? `: ${titles}` : ''}`,\n moreEvents: (count) => `+${count} ще`,\n\n selectAllRows: 'Вибрати всі рядки',\n selectRow: (row) => (row ? `Вибрати рядок ${row}` : 'Вибрати рядок'),\n expandHeader: 'Розгорнути',\n expandRow: 'Розгорнути рядок',\n collapseRow: 'Згорнути рядок',\n expandTreeRow: 'Показати дочірні рядки',\n collapseTreeRow: 'Сховати дочірні рядки',\n expandGroup: 'Розгорнути групу',\n collapseGroup: 'Згорнути групу',\n groupCount: (count) =>\n `${count} ${plural(count, 'елемент', 'елементи', 'елементів')}`,\n resizeColumn: 'Змінити ширину колонки',\n columnWidth: (column, width) => `Ширина колонки ${column}: ${width} пкс`,\n columnMoved: (column, position, total) =>\n `Колонку ${column} переміщено на позицію ${position} з ${total}`,\n editCell: 'Натисніть Enter, щоб редагувати',\n cellSaved: (value) => `Збережено ${value}`,\n sortedBy: (column, direction) =>\n `Відсортовано за ${column} ${direction === 'asc' ? 'за зростанням' : 'за спаданням'}`,\n sortingCleared: (column) => `Сортування за ${column} скасовано`,\n\n showPassword: 'Показати пароль',\n hidePassword: 'Сховати пароль',\n passwordRuleMinLength: (length) =>\n `Щонайменше ${length} ${plural(length, 'символ', 'символи', 'символів')}`,\n passwordRuleUppercase: 'Велика літера',\n passwordRuleNumber: 'Цифра',\n passwordRuleSymbol: 'Спеціальний символ',\n passwordStrength: (score) =>\n PASSWORD_STRENGTH_LABELS[Math.max(0, Math.min(4, score))],\n passwordStrengthLabel: 'Надійність пароля:',\n ruleMet: 'Виконано:',\n ruleNotMet: 'Не виконано:',\n oneTimeCode: 'Одноразовий код',\n otpDigit: (position) => `Цифра ${position}`,\n numericKeypadLabel: 'Цифрова клавіатура',\n keypadClear: 'Очистити',\n keypadBackspace: 'Backspace',\n keypadDigitsEntered: (count, length) => `Введено ${count} з ${length} цифр`,\n onScreenKeyboardLabel: 'Екранна клавіатура',\n keyboardShift: 'Shift',\n keyboardSpace: 'Пробіл',\n keyboardEnter: 'Enter',\n keyboardAltLayer: 'Більше символів',\n keyboardBaseLayer: 'Літери',\n ratingLabel: 'Оцінка',\n ratingValueText: (value, max) =>\n `${value} з ${max} ${plural(max, 'зірки', 'зірок', 'зірок')}`,\n minimum: 'Мінімум',\n maximum: 'Максимум',\n chooseColor: 'Виберіть колір',\n hexValue: 'Шістнадцяткове значення',\n presetColors: 'Стандартні кольори',\n chooseCountry: 'Виберіть країну',\n searchCountries: 'Пошук країни…',\n phoneNumber: 'Номер телефону',\n postalCode: 'Поштовий індекс',\n amount: 'Сума',\n cardNumber: 'Номер картки',\n cardBrand: (brand) => `Тип картки: ${brand}`,\n iban: 'IBAN',\n taxId: 'Податковий номер',\n signature: 'Підпис',\n jsonLabel: 'JSON',\n\n logViewerLabel: 'Журнал подій',\n logFollow: 'Стежити',\n logCopyAll: 'Копіювати журнал',\n logWrapLines: 'Переносити рядки',\n\n orgChartLabel: 'Організаційна структура',\n orgChartExpand: 'Розгорнути {label}',\n orgChartCollapse: 'Згорнути {label}',\n\n chatLabel: 'Розмова',\n chatComposerLabel: 'Повідомлення',\n chatPlaceholder: 'Напишіть повідомлення…',\n chatSend: 'Надіслати',\n chatStop: 'Зупинити генерування',\n chatAttach: 'Додати файли',\n chatRemoveAttachment: 'Видалити вкладення',\n chatAttachments: 'Вкладення',\n chatSuggestions: 'Пропозиції',\n chatCopy: 'Копіювати повідомлення',\n chatRetry: 'Повторити',\n chatTyping: 'Пише…',\n chatStreaming: 'Генерування…',\n chatJumpToLatest: 'Перейти до найновіших',\n chatEmpty: 'Немає повідомлень',\n chatYou: 'Ви',\n chatAssistant: 'Асистент',\n chatToolRunning: 'Виконується',\n chatToolDone: 'Готово',\n chatToolError: 'Помилка',\n\n dynamicFormAdd: 'Додати',\n dynamicFormRemove: (index) => `Видалити елемент ${index}`,\n\n queryBuilderLabel: 'Умови фільтрування',\n queryAddRule: 'Додати правило',\n queryAddGroup: 'Додати групу',\n queryRemoveRule: 'Видалити правило',\n queryRemoveGroup: 'Видалити групу',\n queryAnd: 'Та',\n queryOr: 'Або',\n queryNot: 'Не',\n queryField: 'Поле',\n queryOperator: 'Оператор',\n queryValue: 'Значення',\n queryValueFrom: 'Від',\n queryValueTo: 'До',\n queryEmptyGroup: 'Немає умов',\n queryTrue: 'Істина',\n queryFalse: 'Хиба',\n queryOpEq: 'дорівнює',\n queryOpNeq: 'не дорівнює',\n queryOpContains: 'містить',\n queryOpNotContains: 'не містить',\n queryOpStartsWith: 'починається з',\n queryOpEndsWith: 'закінчується на',\n queryOpGt: 'більше ніж',\n queryOpGte: 'щонайменше',\n queryOpLt: 'менше ніж',\n queryOpLte: 'щонайбільше',\n queryOpBetween: 'між',\n queryOpIn: 'є одним із',\n queryOpNotIn: 'не є жодним із',\n queryOpBefore: 'до',\n queryOpAfter: 'після',\n queryOpEmpty: 'порожнє',\n queryOpNotEmpty: 'не порожнє',\n\n dialogMove: 'Перемістити вікно (стрілки; Home повертає)',\n dialogResize: 'Змінити розмір вікна (стрілки; Home повертає)',\n\n listboxFilter: 'Фільтрувати варіанти',\n listboxEmpty: 'Немає відповідних варіантів',\n\n eventCalendarGrabbed: (title, from, to) =>\n `Піднято ${title}, ${from} – ${to}. Стрілки переміщують, ` +\n 'Shift зі стрілкою вгору або вниз змінює час завершення, ' +\n 'Enter зберігає, Escape скасовує.',\n eventCalendarPosition: (title, day, from, to) =>\n `${title}, ${day}, ${from} – ${to}.`,\n eventCalendarMoved: (title, day, from, to) =>\n `${title} переміщено на ${day}, ${from} – ${to}.`,\n eventCalendarResized: (title, to) => `${title} тепер закінчується о ${to}.`,\n eventCalendarEditCancelled:\n 'Переміщення скасовано. Подія зберігає початковий час.',\n eventCalendarMovableEvent: 'Подія, яку можна переміщувати',\n\n previousImage: 'Попереднє зображення',\n nextImage: 'Наступне зображення',\n imageOf: (index, total) => `Зображення ${index} з ${total}`,\n viewImage: (alt) => (alt ? `Переглянути ${alt}` : 'Переглянути зображення'),\n imageFailed: 'Не вдалося завантажити зображення',\n zoom: 'Масштаб',\n zoomIn: 'Збільшити',\n zoomOut: 'Зменшити',\n mediaLibrary: 'Медіатека',\n dropzoneLabel: 'Перетягніть файли сюди або натисніть, щоб вибрати',\n uploadFailed: 'Не вдалося завантажити',\n retryUpload: 'Повторити завантаження',\n errorSummaryTitle: 'Виникла проблема',\n\n available: 'Доступні',\n selected: 'Вибрані',\n transferSelected: (target) => `Перемістити вибрані до: ${target}`,\n transferAll: (target) => `Перемістити всі до: ${target}`,\n itemsMoved: (count, target) =>\n `Переміщено ${count} ${plural(count, 'елемент', 'елементи', 'елементів')} до: ${target}`,\n\n notificationsTitle: 'Сповіщення',\n allCaughtUp: 'Усе прочитано',\n markAllRead: 'Позначити всі як прочитані',\n notificationsUnread: (count) =>\n `Сповіщення, ${count} ${plural(count, 'непрочитане', 'непрочитані', 'непрочитаних')}`,\n unread: 'Непрочитані',\n tourStepOf: (step, total) => `Крок ${step} з ${total}`,\n tourSkip: 'Пропустити',\n tourPrevious: 'Назад',\n tourNext: 'Далі',\n tourDone: 'Готово',\n\n commandPalettePlaceholder: 'Введіть команду або шукайте…',\n commandPaletteLabel: 'Палітра команд',\n stepCompleted: 'Завершено',\n stepError: 'Містить помилки',\n diffAddedLine: 'Додано:',\n diffRemovedLine: 'Видалено:',\n itemAdded: (name) => `Додано ${name}`,\n itemRemoved: (name) => `Видалено ${name}`,\n resizePanes: 'Змінити розмір панелей',\n backToTop: 'Повернутися нагору',\n breadcrumbLabel: 'Навігаційний ланцюжок',\n fabLabel: 'Дії',\n diffBefore: 'До',\n diffAfter: 'Після',\n diffChanges: 'Зміни',\n skipToContent: 'Перейти до вмісту',\n primaryNav: 'Головна',\n\n dndPickedUp: (position, total) =>\n `Піднято. Елемент ${position} з ${total}. ` +\n 'Стрілки переміщують, пробіл або Enter опускає, Escape скасовує.',\n dndMoved: (position, total) => `Переміщено на позицію ${position} з ${total}.`,\n dndMovedToList: (list, position, total) =>\n `Переміщено до: ${list}, позиція ${position} з ${total}.`,\n dndDropped: (position) => `Опущено на позиції ${position}.`,\n dndMovedToZone: (zone) => `Переміщено до: ${zone}. Пробіл або Enter опускає тут.`,\n dndDroppedInZone: (zone) => `Опущено в: ${zone}.`,\n dndCancelled: 'Переміщення скасовано. Елемент повернувся на початкове місце.',\n\n repeaterAddRow: 'Додати рядок',\n repeaterRemoveRow: (index) => `Видалити рядок ${index}`,\n repeaterReorderRow: (index) => `Змінити порядок рядка ${index}`,\n repeaterRowMoved: (from, to) =>\n `Рядок переміщено з позиції ${from} на позицію ${to}.`,\n\n fileRejectedType: (name) => `${name}: непідтримуваний тип`,\n fileRejectedSize: (name, limit) => `${name}: перевищує ${limit}`,\n fileRejectedCount: (name, max) =>\n `${name}: перевищено ліміт ${max} ${plural(max, 'файлу', 'файлів', 'файлів')}`,\n\n chartCategory: 'Категорія',\n chartValue: 'Значення',\n chartSeries: 'Серія',\n chartSlice: 'Сегмент',\n chartStage: 'Етап',\n chartConversion: 'Конверсія',\n chartAxis: 'Вісь',\n chartShare: 'Частка',\n chartLabel: 'Мітка',\n\n qrCodeLabel: (text) => `QR-код: ${text}`,\n\n sortableListLabel: 'Список із сортуванням',\n filterColumn: (column) => `Фільтрувати ${column}`,\n clearFilter: (column) => `Очистити фільтр колонки ${column}`,\n filterAny: 'Усі',\n filterMin: 'Мін',\n\n blockEditor: MK_UK_BLOCK_EDITOR,\n};\n\n/**\n * Provides the Ukrainian strings — {@link MK_UK_I18N} with any `overrides`\n * merged on top (deep for `dateNames`, `blockEditor` and `validation`, like\n * `provideMkI18n`).\n *\n * ```ts\n * bootstrapApplication(App, {\n * providers: [provideMkI18nUk({ noData: 'Тут нічого немає' })],\n * });\n * ```\n */\nexport function provideMkI18nUk(overrides: MkI18nOverrides = {}): Provider {\n return provideMkI18n(overrides, MK_UK_I18N);\n}\n","/**\n * Ukrainian locale pack for @mk-kit/ui — `@mk-kit/ui/locales/uk`.\n *\n * Its own entry point so an app carries only the locales it provides.\n */\nexport * from './uk';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAUA;;;;;;;;;;AAUG;AACG,SAAU,UAAU,CACxB,KAAa,EACb,GAAW,EACX,GAAW,EACX,IAAY,EAAA;AAEZ,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;AACpB,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG;AACtB,IAAA,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,EAAE;AAAE,QAAA,OAAO,GAAG;AAC5C,IAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAAE,QAAA,OAAO,GAAG;AACxE,IAAA,OAAO,IAAI;AACb;AAEA,MAAM,MAAM,GAAG,UAAU;AAEzB;AACO,MAAM,gBAAgB,GAAgB;AAC3C,IAAA,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;QAC9D,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS;AAClE,KAAA;AACD,IAAA,WAAW,EAAE;QACX,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QACxC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AACzC,KAAA;AACD,IAAA,QAAQ,EAAE;QACR,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;AAC5E,KAAA;AACD,IAAA,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzD,IAAA,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;AAGrD;AACO,MAAM,gBAAgB,GAAwB;AACnD,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,KAAK,EAAE,yCAAyC;IAChD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAA,gCAAA,EAAmC,GAAG,CAAA,CAAE;IAC1D,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAA,iCAAA,EAAoC,GAAG,CAAA,CAAE;IAC3D,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,KAC5B,CAAA,mBAAA,EAAsB,cAAc,IAAI,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA,CAAE;IACnG,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,KAC5B,CAAA,kBAAA,EAAqB,cAAc,IAAI,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA,CAAE;AACpG,IAAA,OAAO,EAAE,wCAAwC;AACjD,IAAA,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KACjB,CAAA,6BAAA,EAAgC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA,CAAE;AACnE,IAAA,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KACjB,CAAA,8BAAA,EAAiC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA,CAAE;AACpE,IAAA,YAAY,EAAE,oBAAoB;AAClC,IAAA,qBAAqB,EAAE,oCAAoC;IAC3D,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE;IAC5D,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAA,6BAAA,EAAgC,GAAG,CAAA,CAAE;IAC7D,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,KAClB,CAAA,mBAAA,EAAsB,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA,CAAE;AAClF,IAAA,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAA,KAAA,EAAQ,IAAI,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE;IACxE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAA,KAAA,EAAQ,IAAI,CAAA,sBAAA,CAAwB;AAC9D,IAAA,UAAU,EAAE,8BAA8B;IAC1C,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,KACvB;UACI,CAAA,sBAAA,EAAyB,cAAc,CAAA,UAAA;AACzC,UAAE,sBAAsB;IAC5B,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAA,uCAAA,EAA0C,OAAO,CAAA,CAAE;AAChF,IAAA,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAA,gBAAA,EAAmB,KAAK,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE;AAC3E,IAAA,OAAO,EAAE,mBAAmB;;AAG9B;AACO,MAAM,kBAAkB,GAAyB;AACtD,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,eAAe,EAAE,mBAAmB;AACpC,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,WAAW,EAAE,uBAAuB;AACpC,IAAA,aAAa,EAAE,wBAAwB;AACvC,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,cAAc,EAAE,qBAAqB;AACrC,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,YAAY,EAAE,qBAAqB;AACnC,IAAA,QAAQ,EAAE,uBAAuB;AACjC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,QAAQ,EAAE,yBAAyB;AACnC,IAAA,cAAc,EAAE,sBAAsB;AACtC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,OAAO,EAAE,aAAa;IACtB,YAAY,EAAE,CAAC,KAAK,KAAK,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE;AACnD,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,qBAAqB,EAAE,yDAAyD;AAChF,IAAA,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE;IAC/C,YAAY,EAAE,CAAC,IAAI,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAE;IACjD,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;AACzC,IAAA,eAAe,EAAE,oBAAoB;IACrC,YAAY,EAAE,CAAC,KAAK,KAAK,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE;AAC7C,IAAA,YAAY,EAAE,sBAAsB;AACpC,IAAA,cAAc,EAAE,uBAAuB;IACvC,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE;IACjD,aAAa,EAAE,CAAC,KAAK,KAAK,CAAA,+BAAA,EAAkC,KAAK,CAAA,EAAA,CAAI;AACrE,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,cAAc,EAAE,OAAO;AACvB,IAAA,kBAAkB,EAAE,oCAAoC;AACxD,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,gBAAgB,EAAE,wBAAwB;AAC1C,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,aAAa,EAAE,oCAAoC;AACnD,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,2CAA2C;AAC3D,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,aAAa,EAAE,mCAAmC;AAClD,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,cAAc,EAAE,8CAA8C;AAC9D,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,cAAc,EAAE,yCAAyC;AACzD,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,eAAe,EAAE,4BAA4B;AAC7C,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,gBAAgB,EAAE,oCAAoC;AACtD,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,gBAAgB,EAAE,oCAAoC;AACtD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,aAAa,EAAE,aAAa;AAC5B,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,eAAe,EAAE,uBAAuB;AACxC,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,YAAY,EAAE,uBAAuB;IACrC,kBAAkB,EAAE,CAAC,KAAK,KAAK,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE;AACnD,IAAA,iBAAiB,EAAE,kBAAkB;AACrC,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,uBAAuB,EAAE,sBAAsB;AAC/C,IAAA,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,CAAC,OAAO,KAAK,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,CAAG;AAC9C,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,eAAe,EAAE,iCAAiC;AAClD,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,aAAa,EAAE,oCAAoC;AACnD,IAAA,UAAU,EAAE,2BAA2B;AACvC,IAAA,YAAY,EAAE,kEAAkE;AAChF,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,aAAa,EAAE,8CAA8C;AAC7D,IAAA,iBAAiB,EAAE,kEAAkE;IACrF,UAAU,EAAE,CAAC,QAAQ,KAAK,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE;IACpD,UAAU,EAAE,CAAC,QAAQ,KAAK,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAE;AAC3D,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,kBAAkB,EAAE,WAAW;AAC/B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,cAAc,EAAE,WAAW;AAC3B,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,aAAa,EAAE,WAAW;AAC1B,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,cAAc,EAAE,YAAY;;AAG9B,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC;AAE5F;;;;;AAKG;AACI,MAAM,UAAU,GAAkB;AACvC,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,QAAQ,EAAE,KAAK;AAEf,IAAA,UAAU,EAAE,gBAAgB;AAE5B,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,KAAK,EAAE,UAAU;AACjB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,CAAC,IAAI,KAAK,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE;AACxC,IAAA,KAAK,EAAE,UAAU;AACjB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,cAAc,EAAE,cAAc;AAC9B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,QAAQ,EAAE,WAAW;AAErB,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,SAAS,EAAE,mBAAmB;AAC9B,IAAA,MAAM,EAAE,8BAA8B;AACtC,IAAA,YAAY,EAAE,CAAC,KAAK,KAClB,GAAG,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA,CAAE;AAEvE,IAAA,YAAY,EAAE,iCAAiC;AAC/C,IAAA,QAAQ,EAAE,+BAA+B;IACzC,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAA,oBAAA,EAAuB,IAAI,CAAA,CAAE;AACjD,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,aAAa,EAAE,kBAAkB;AACjC,IAAA,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,CAAC,KAAK,KAAK,CAAA,kBAAA,EAAqB,KAAK,CAAA,CAAE;AAClD,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,aAAa,EAAE,0BAA0B;AACzC,IAAA,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAA,MAAA,EAAS,KAAK,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE;AAEtD,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,YAAY,EAAE,gBAAgB;AAC9B,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,YAAY,EAAE,mBAAmB;AACjC,IAAA,YAAY,EAAE,sBAAsB;AACpC,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,cAAc,EAAE,sBAAsB;AACtC,IAAA,cAAc,EAAE,mBAAmB;AACnC,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,kBAAkB,EAAE,4BAA4B;AAChD,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,gBAAgB,EAAE,GAAG;AACrB,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KACvB,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA,EAAG,MAAM,GAAG,CAAA,EAAA,EAAK,MAAM,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE;IACtF,UAAU,EAAE,CAAC,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,GAAA,CAAK;AAErC,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,iBAAiB,GAAG,CAAA,CAAE,GAAG,eAAe,CAAC;AACpE,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,aAAa,EAAE,wBAAwB;AACvC,IAAA,eAAe,EAAE,uBAAuB;AACxC,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,UAAU,EAAE,CAAC,KAAK,KAChB,GAAG,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA,CAAE;AACjE,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAA,EAAA,EAAK,KAAK,CAAA,IAAA,CAAM;AACxE,IAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,KACnC,WAAW,MAAM,CAAA,uBAAA,EAA0B,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE;AAClE,IAAA,QAAQ,EAAE,iCAAiC;IAC3C,SAAS,EAAE,CAAC,KAAK,KAAK,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE;IAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAC1B,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAA,EAAI,SAAS,KAAK,KAAK,GAAG,eAAe,GAAG,cAAc,CAAA,CAAE;IACvF,cAAc,EAAE,CAAC,MAAM,KAAK,CAAA,cAAA,EAAiB,MAAM,CAAA,UAAA,CAAY;AAE/D,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,YAAY,EAAE,gBAAgB;AAC9B,IAAA,qBAAqB,EAAE,CAAC,MAAM,KAC5B,cAAc,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA,CAAE;AAC3E,IAAA,qBAAqB,EAAE,eAAe;AACtC,IAAA,kBAAkB,EAAE,OAAO;AAC3B,IAAA,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,CAAC,KAAK,KACtB,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3D,IAAA,qBAAqB,EAAE,oBAAoB;AAC3C,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,WAAW,EAAE,iBAAiB;IAC9B,QAAQ,EAAE,CAAC,QAAQ,KAAK,CAAA,MAAA,EAAS,QAAQ,CAAA,CAAE;AAC3C,IAAA,kBAAkB,EAAE,oBAAoB;AACxC,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAA,QAAA,EAAW,KAAK,CAAA,GAAA,EAAM,MAAM,CAAA,KAAA,CAAO;AAC3E,IAAA,qBAAqB,EAAE,oBAAoB;AAC3C,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,aAAa,EAAE,QAAQ;AACvB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,gBAAgB,EAAE,iBAAiB;AACnC,IAAA,iBAAiB,EAAE,QAAQ;AAC3B,IAAA,WAAW,EAAE,QAAQ;IACrB,eAAe,EAAE,CAAC,KAAK,EAAE,GAAG,KAC1B,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA,CAAE;AAC/D,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,QAAQ,EAAE,yBAAyB;AACnC,IAAA,YAAY,EAAE,oBAAoB;AAClC,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,CAAC,KAAK,KAAK,CAAA,YAAA,EAAe,KAAK,CAAA,CAAE;AAC5C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,kBAAkB;AACzB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,SAAS,EAAE,MAAM;AAEjB,IAAA,cAAc,EAAE,cAAc;AAC9B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,YAAY,EAAE,kBAAkB;AAEhC,IAAA,aAAa,EAAE,yBAAyB;AACxC,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,gBAAgB,EAAE,kBAAkB;AAEpC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,iBAAiB,EAAE,cAAc;AACjC,IAAA,eAAe,EAAE,wBAAwB;AACzC,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,QAAQ,EAAE,sBAAsB;AAChC,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,oBAAoB,EAAE,oBAAoB;AAC1C,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,gBAAgB,EAAE,uBAAuB;AACzC,IAAA,SAAS,EAAE,mBAAmB;AAC9B,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,eAAe,EAAE,aAAa;AAC9B,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,aAAa,EAAE,SAAS;AAExB,IAAA,cAAc,EAAE,QAAQ;IACxB,iBAAiB,EAAE,CAAC,KAAK,KAAK,CAAA,iBAAA,EAAoB,KAAK,CAAA,CAAE;AAEzD,IAAA,iBAAiB,EAAE,oBAAoB;AACvC,IAAA,YAAY,EAAE,gBAAgB;AAC9B,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,gBAAgB,EAAE,gBAAgB;AAClC,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,kBAAkB,EAAE,YAAY;AAChC,IAAA,iBAAiB,EAAE,eAAe;AAClC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,YAAY,EAAE,gBAAgB;AAC9B,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,eAAe,EAAE,YAAY;AAE7B,IAAA,UAAU,EAAE,4CAA4C;AACxD,IAAA,YAAY,EAAE,+CAA+C;AAE7D,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,YAAY,EAAE,6BAA6B;AAE3C,IAAA,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KACpC,WAAW,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,GAAA,EAAM,EAAE,CAAA,uBAAA,CAAyB;QAC1D,0DAA0D;QAC1D,kCAAkC;IACpC,qBAAqB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAC1C,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,GAAG,KAAK,IAAI,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,CAAG;IACtC,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KACvC,CAAA,EAAG,KAAK,CAAA,eAAA,EAAkB,GAAG,KAAK,IAAI,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,CAAG;AACnD,IAAA,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,CAAA,EAAG,KAAK,CAAA,sBAAA,EAAyB,EAAE,CAAA,CAAA,CAAG;AAC3E,IAAA,0BAA0B,EACxB,uDAAuD;AACzD,IAAA,yBAAyB,EAAE,+BAA+B;AAE1D,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAA,WAAA,EAAc,KAAK,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE;AAC3D,IAAA,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,eAAe,GAAG,CAAA,CAAE,GAAG,wBAAwB,CAAC;AAC3E,IAAA,WAAW,EAAE,mCAAmC;AAChD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,aAAa,EAAE,mDAAmD;AAClE,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,iBAAiB,EAAE,kBAAkB;AAErC,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,CAAC,MAAM,KAAK,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAE;IACjE,WAAW,EAAE,CAAC,MAAM,KAAK,CAAA,oBAAA,EAAuB,MAAM,CAAA,CAAE;IACxD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KACxB,CAAA,WAAA,EAAc,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE;AAE1F,IAAA,kBAAkB,EAAE,YAAY;AAChC,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,WAAW,EAAE,4BAA4B;AACzC,IAAA,mBAAmB,EAAE,CAAC,KAAK,KACzB,eAAe,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA,CAAE;AACvF,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAA,KAAA,EAAQ,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE;AACtD,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,QAAQ;AAElB,IAAA,yBAAyB,EAAE,8BAA8B;AACzD,IAAA,mBAAmB,EAAE,gBAAgB;AACrC,IAAA,aAAa,EAAE,WAAW;AAC1B,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,eAAe,EAAE,WAAW;IAC5B,SAAS,EAAE,CAAC,IAAI,KAAK,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE;IACrC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE;AACzC,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,SAAS,EAAE,oBAAoB;AAC/B,IAAA,eAAe,EAAE,uBAAuB;AACxC,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,UAAU,EAAE,SAAS;AAErB,IAAA,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,KAC3B,CAAA,iBAAA,EAAoB,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,EAAA,CAAI;QAC3C,iEAAiE;AACnE,IAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAA,sBAAA,EAAyB,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG;AAC9E,IAAA,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,KACpC,kBAAkB,IAAI,CAAA,UAAA,EAAa,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG;IAC3D,UAAU,EAAE,CAAC,QAAQ,KAAK,CAAA,mBAAA,EAAsB,QAAQ,CAAA,CAAA,CAAG;IAC3D,cAAc,EAAE,CAAC,IAAI,KAAK,CAAA,eAAA,EAAkB,IAAI,CAAA,+BAAA,CAAiC;IACjF,gBAAgB,EAAE,CAAC,IAAI,KAAK,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,CAAG;AACjD,IAAA,YAAY,EAAE,+DAA+D;AAE7E,IAAA,cAAc,EAAE,cAAc;IAC9B,iBAAiB,EAAE,CAAC,KAAK,KAAK,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAE;IACvD,kBAAkB,EAAE,CAAC,KAAK,KAAK,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE;AAC/D,IAAA,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,KACzB,CAAA,2BAAA,EAA8B,IAAI,CAAA,YAAA,EAAe,EAAE,CAAA,CAAA,CAAG;IAExD,gBAAgB,EAAE,CAAC,IAAI,KAAK,CAAA,EAAG,IAAI,CAAA,qBAAA,CAAuB;AAC1D,IAAA,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,KAAK,CAAA,CAAE;IAChE,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,KAC3B,CAAA,EAAG,IAAI,CAAA,mBAAA,EAAsB,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAE;AAEhF,IAAA,aAAa,EAAE,WAAW;AAC1B,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,UAAU,EAAE,OAAO;IAEnB,WAAW,EAAE,CAAC,IAAI,KAAK,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE;AAExC,IAAA,iBAAiB,EAAE,uBAAuB;IAC1C,YAAY,EAAE,CAAC,MAAM,KAAK,CAAA,YAAA,EAAe,MAAM,CAAA,CAAE;IACjD,WAAW,EAAE,CAAC,MAAM,KAAK,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAE;AAC5D,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,SAAS,EAAE,KAAK;AAEhB,IAAA,WAAW,EAAE,kBAAkB;;AAGjC;;;;;;;;;;AAUG;AACG,SAAU,eAAe,CAAC,SAAA,GAA6B,EAAE,EAAA;AAC7D,IAAA,OAAO,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC;AAC7C;;AC/iBA;;;;AAIG;;ACJH;;AAEG;;;;"}
1
+ {"version":3,"file":"mk-kit-ui-locales-uk.mjs","sources":["../../../projects/mk-kit/locales/uk/uk.ts","../../../projects/mk-kit/locales/uk/index.ts","../../../projects/mk-kit/locales/uk/mk-kit-ui-locales-uk.ts"],"sourcesContent":["import type { Provider } from '@angular/core';\nimport {\n type MkBlockEditorStrings,\n type MkDateNames,\n type MkI18nOverrides,\n type MkI18nStrings,\n type MkValidationStrings,\n provideMkI18n,\n} from '@mk-kit/ui/core';\n\n/**\n * Picks the Ukrainian plural form for a count — CLDR's `uk` rules for\n * integers: `one` when the number ends in 1 (but not 11), `few` when it ends\n * in 2–4 (but not 12–14), `many` otherwise.\n *\n * ```ts\n * mkPluralUk(1, 'результат', 'результати', 'результатів'); // 'результат'\n * mkPluralUk(3, 'результат', 'результати', 'результатів'); // 'результати'\n * mkPluralUk(11, 'результат', 'результати', 'результатів'); // 'результатів'\n * ```\n */\nexport function mkPluralUk(\n count: number,\n one: string,\n few: string,\n many: string,\n): string {\n const n = Math.abs(Math.trunc(count));\n const mod10 = n % 10;\n const mod100 = n % 100;\n if (mod10 === 1 && mod100 !== 11) return one;\n if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) return few;\n return many;\n}\n\nconst plural = mkPluralUk;\n\n/** Ukrainian month and weekday names (Sunday-first, lowercase as in `Intl`). */\nexport const MK_UK_DATE_NAMES: MkDateNames = {\n months: [\n 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень',\n 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень',\n ],\n monthsShort: [\n 'січ', 'лют', 'бер', 'кві', 'тра', 'чер',\n 'лип', 'сер', 'вер', 'жов', 'лис', 'гру',\n ],\n weekdays: [\n 'неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'пʼятниця', 'субота',\n ],\n weekdaysShort: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n weekdaysNarrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],\n};\n\n/** Ukrainian validation messages rendered by `mk-form-field`. */\nexport const MK_UK_VALIDATION: MkValidationStrings = {\n required: 'Це поле є обовʼязковим',\n email: 'Введіть дійсну адресу електронної пошти',\n min: ({ min }) => `Значення не може бути меншим за ${min}`,\n max: ({ max }) => `Значення не може бути більшим за ${max}`,\n minlength: ({ requiredLength }) =>\n `Введіть щонайменше ${requiredLength} ${plural(requiredLength, 'символ', 'символи', 'символів')}`,\n maxlength: ({ requiredLength }) =>\n `Введіть не більше ${requiredLength} ${plural(requiredLength, 'символа', 'символів', 'символів')}`,\n pattern: 'Введіть значення в очікуваному форматі',\n mkMinDate: ({ min }) =>\n `Дата не може бути ранішою за ${min.toLocaleDateString('uk-UA')}`,\n mkMaxDate: ({ max }) =>\n `Дата не може бути пізнішою за ${max.toLocaleDateString('uk-UA')}`,\n mkDateFilter: 'Ця дата недоступна',\n mkDateRangeIncomplete: 'Виберіть початкову та кінцеву дати',\n mkMinTime: ({ min }) => `Час не може бути ранішим за ${min}`,\n mkMaxTime: ({ max }) => `Час не може бути пізнішим за ${max}`,\n mkMaxItems: ({ max }) =>\n `Виберіть не більше ${max} ${plural(max, 'елемента', 'елементів', 'елементів')}`,\n mkFileSize: ({ name, maxLabel }) => `Файл ${name} перевищує ${maxLabel}`,\n mkFileType: ({ name }) => `Файл ${name} має неприпустимий тип`,\n cardNumber: 'Введіть дійсний номер картки',\n iban: ({ expectedLength }) =>\n expectedLength\n ? `Введіть дійсний IBAN (${expectedLength} символів)`\n : 'Введіть дійсний IBAN',\n postalCode: ({ example }) => `Введіть дійсний поштовий індекс, напр. ${example}`,\n taxId: ({ label, example }) => `Введіть дійсний ${label}, напр. ${example}`,\n unknown: 'Недійсне значення',\n};\n\n/** Ukrainian strings of the block editor's chrome. */\nexport const MK_UK_BLOCK_EDITOR: MkBlockEditorStrings = {\n addBlock: 'Додати блок',\n addFirstBlock: 'Додати перший блок',\n insertBlockHere: 'Вставити блок тут',\n blockInserter: 'Вставлення блоків',\n searchBlocks: 'Пошук блоків…',\n blocks: 'Блоки',\n moveBlockUp: 'Перемістити блок вище',\n moveBlockDown: 'Перемістити блок нижче',\n blockOptions: 'Параметри блока',\n duplicate: 'Дублювати',\n remove: 'Видалити',\n textFormatting: 'Форматування тексту',\n altText: 'Альтернативний текст',\n caption: 'Підпис',\n alignment: 'Вирівнювання',\n replaceImage: 'Замінити зображення',\n imageUrl: 'URL-адреса зображення',\n externalContent: 'Зовнішній вміст',\n embedUrl: 'URL-адреса вбудовування',\n columnSettings: 'Налаштування колонок',\n columns: 'Колонки',\n ratio: 'Пропорції',\n gap: 'Проміжок',\n align: 'Вирівняти',\n justify: 'Розподілити',\n headingLevel: (level) => `Заголовок рівня ${level}`,\n editorLabel: 'Редактор блокового вмісту',\n emptyBlockPlaceholder: 'Введіть /, щоб вибрати блок, або просто почніть писати…',\n dragHandle: 'Ручка перетягування',\n turnInto: (label) => `Перетворити на: ${label}`,\n unknownBlock: (type) => `Невідомий блок: ${type}`,\n blockAdded: (label) => `Додано: ${label}`,\n blockDuplicated: 'Блок продубльовано',\n blockDeleted: (label) => `Видалено: ${label}`,\n blockMovedUp: 'Блок переміщено вище',\n blockMovedDown: 'Блок переміщено нижче',\n turnedInto: (label) => `Перетворено на: ${label}`,\n noBlocksMatch: (query) => `Немає блоків, що відповідають «${query}».`,\n groupText: 'Текст',\n groupMedia: 'Медіа',\n groupLayout: 'Макет',\n blockParagraph: 'Абзац',\n blockParagraphDesc: 'Текст із вбудованим форматуванням.',\n blockHeading: 'Заголовок',\n blockHeadingDesc: 'Назва розділу (H1–H4).',\n blockList: 'Список',\n blockListDesc: 'Маркований або нумерований список.',\n blockQuote: 'Цитата',\n blockQuoteDesc: 'Блокова цитата з необовʼязковим джерелом.',\n blockCode: 'Код',\n blockCodeDesc: 'Відформатований моноширинний код.',\n blockImage: 'Зображення',\n blockImageDesc: 'Завантажте зображення або додайте посилання.',\n blockEmbed: 'Вбудовування',\n blockEmbedDesc: 'YouTube, Vimeo або будь-яка URL-адреса.',\n blockButton: 'Кнопка',\n blockButtonDesc: 'Кнопка із закликом до дії.',\n blockDivider: 'Розділювач',\n blockDividerDesc: 'Горизонтальна розділювальна лінія.',\n blockColumns: 'Колонки',\n blockColumnsDesc: 'Адаптивний багатоколонковий макет.',\n bold: 'Жирний',\n italic: 'Курсив',\n underline: 'Підкреслений',\n strikethrough: 'Закреслений',\n inlineCode: 'Вбудований код',\n link: 'Посилання',\n clearFormatting: 'Очистити форматування',\n linkUrlPrompt: 'URL-адреса посилання',\n editableText: 'Текст для редагування',\n headingPlaceholder: (level) => `Заголовок ${level}`,\n headingLevelGroup: 'Рівень заголовка',\n listStyle: 'Стиль списку',\n bulleted: 'Маркований',\n numbered: 'Нумерований',\n listItem: 'Елемент списку',\n quoteText: 'Текст цитати',\n citation: 'Джерело',\n addCitation: '— Додати джерело',\n codeLanguage: 'Мова коду',\n codeLanguagePlaceholder: 'мова (необовʼязково)',\n enterCode: 'Введіть код…',\n imageWidth: (percent) => `Ширина: ${percent}%`,\n uploading: 'Завантаження…',\n dropImagePrompt: 'Перетягніть зображення сюди або',\n chooseFile: 'Виберіть файл',\n pasteImageUrl: '…або вставте URL-адресу зображення',\n notAnImage: 'Виберіть файл зображення.',\n uploadFailed: 'Не вдалося завантажити. Спробуйте ще раз або вставте URL-адресу.',\n imageAdded: 'Зображення додано',\n pasteEmbedUrl: 'Вставте URL-адресу з YouTube, Vimeo чи іншу…',\n embedFallbackNote: 'Цю адресу не можна вбудувати, але її буде показано як посилання.',\n embedTitle: (provider) => `Вбудовування ${provider}`,\n embedAdded: (provider) => `Додано вбудовування ${provider}`,\n embeddedContent: 'Вбудований вміст',\n buttonLabel: 'Напис',\n buttonLink: 'Посилання (href)',\n buttonTone: 'Тон',\n buttonVariant: 'Варіант',\n buttonDefaultLabel: 'Натисніть',\n alignLeft: 'Ліворуч',\n alignCenter: 'По центру',\n alignRight: 'Праворуч',\n tonePrimary: 'Основний',\n toneNeutral: 'Нейтральний',\n toneSuccess: 'Успіх',\n toneWarning: 'Попередження',\n toneDanger: 'Небезпека',\n toneInfo: 'Інформація',\n variantSolid: 'Заповнений',\n variantSoft: 'Мʼякий',\n variantOutline: 'Контурний',\n ratioEqual: 'Рівні',\n alignStretch: 'Розтягнути',\n alignTop: 'Угорі',\n alignMiddle: 'Посередині',\n alignBottom: 'Унизу',\n justifyStart: 'На початку',\n justifyCenter: 'По центру',\n justifyEnd: 'У кінці',\n justifyBetween: 'Рівномірно',\n};\n\nconst PASSWORD_STRENGTH_LABELS = ['Слабкий', 'Слабкий', 'Посередній', 'Хороший', 'Надійний'];\n\n/**\n * The complete Ukrainian string map — every key of {@link MkI18nStrings},\n * `locale: 'uk-UA'` and `currency: 'UAH'` for the formatting pipes.\n * Provide it whole with {@link provideMkI18nUk}, or pass it as the base of\n * `provideMkI18n(overrides, MK_UK_I18N)`.\n */\nexport const MK_UK_I18N: MkI18nStrings = {\n locale: 'uk-UA',\n currency: 'UAH',\n\n validation: MK_UK_VALIDATION,\n\n close: 'Закрити',\n dismiss: 'Відхилити',\n clear: 'Очистити',\n confirm: 'Підтвердити',\n cancel: 'Скасувати',\n ok: 'OK',\n save: 'Зберегти',\n submit: 'Надіслати',\n edit: 'Редагувати',\n remove: 'Видалити',\n removeItem: (name) => `Видалити ${name}`,\n empty: 'Порожньо',\n optional: 'Необовʼязково',\n filter: 'Фільтрувати…',\n confirmMessage: 'Ви впевнені?',\n decrease: 'Зменшити',\n increase: 'Збільшити',\n\n loading: 'Завантаження…',\n noOptions: 'Немає варіантів',\n noResults: 'Немає результатів',\n noData: 'Немає даних для відображення',\n translationEditorSearch: 'Пошук ключів і тексту',\n translationEditorAll: 'Усі',\n translationEditorOverridden: 'Змінені',\n translationEditorMissing: 'Відсутні',\n translationEditorKey: 'Ключ',\n translationEditorReset: 'Відновити оригінальний текст',\n translationEditorExport: 'Експортувати CSV',\n translationEditorKeys: 'ключів',\n resultsCount: (count) =>\n `${count} ${plural(count, 'результат', 'результати', 'результатів')}`,\n\n previousPage: 'Перейти до попередньої сторінки',\n nextPage: 'Перейти до наступної сторінки',\n goToPage: (page) => `Перейти до сторінки ${page}`,\n paginationLabel: 'Пагінація',\n previousSlide: 'Попередній слайд',\n nextSlide: 'Наступний слайд',\n goToSlide: (slide) => `Перейти до слайда ${slide}`,\n carouselLabel: 'Карусель',\n pauseSlideshow: 'Призупинити показ слайдів',\n playSlideshow: 'Продовжити показ слайдів',\n slideOf: (slide, total) => `Слайд ${slide} з ${total}`,\n\n dateNames: MK_UK_DATE_NAMES,\n previousMonth: 'Попередній місяць',\n nextMonth: 'Наступний місяць',\n previousYear: 'Попередній рік',\n nextYear: 'Наступний рік',\n previousYears: 'Попередні роки',\n nextYears: 'Наступні роки',\n selectDate: 'Виберіть дату…',\n selectRange: 'Виберіть діапазон…',\n selectTime: 'Виберіть час…',\n selectMonth: 'Виберіть місяць…',\n selectYear: 'Виберіть рік…',\n selectWeek: 'Виберіть тиждень…',\n selectPlaceholder: 'Виберіть…',\n chooseDate: 'Вибір дати',\n chooseDateRange: 'Вибір діапазону дат',\n chooseMonth: 'Вибір місяця',\n chooseYear: 'Вибір року',\n chooseWeek: 'Вибір тижня',\n openCalendar: 'Відкрити календар',\n openTimeList: 'Відкрити список часу',\n moreActions: 'Більше дій',\n selectDateTime: 'Виберіть дату й час…',\n chooseDateTime: 'Вибір дати й часу',\n chooseTime: 'Вибір часу',\n openDateTimePicker: 'Відкрити вибір дати й часу',\n daySegment: 'День',\n monthSegment: 'Місяць',\n yearSegment: 'Рік',\n countdownDays: 'дн.',\n countdownHours: 'год',\n countdownMinutes: 'хв',\n countdownSeconds: 'с',\n countdownFinished: 'Завершено',\n dayEvents: (count, titles) =>\n `${count} ${plural(count, 'подія', 'події', 'подій')}${titles ? `: ${titles}` : ''}`,\n moreEvents: (count) => `+${count} ще`,\n\n selectAllRows: 'Вибрати всі рядки',\n selectRow: (row) => (row ? `Вибрати рядок ${row}` : 'Вибрати рядок'),\n expandHeader: 'Розгорнути',\n expandRow: 'Розгорнути рядок',\n collapseRow: 'Згорнути рядок',\n expandTreeRow: 'Показати дочірні рядки',\n collapseTreeRow: 'Сховати дочірні рядки',\n expandGroup: 'Розгорнути групу',\n collapseGroup: 'Згорнути групу',\n groupCount: (count) =>\n `${count} ${plural(count, 'елемент', 'елементи', 'елементів')}`,\n resizeColumn: 'Змінити ширину колонки',\n columnWidth: (column, width) => `Ширина колонки ${column}: ${width} пкс`,\n columnMoved: (column, position, total) =>\n `Колонку ${column} переміщено на позицію ${position} з ${total}`,\n editCell: 'Натисніть Enter, щоб редагувати',\n cellSaved: (value) => `Збережено ${value}`,\n sortedBy: (column, direction) =>\n `Відсортовано за ${column} ${direction === 'asc' ? 'за зростанням' : 'за спаданням'}`,\n sortingCleared: (column) => `Сортування за ${column} скасовано`,\n\n showPassword: 'Показати пароль',\n hidePassword: 'Сховати пароль',\n passwordRuleMinLength: (length) =>\n `Щонайменше ${length} ${plural(length, 'символ', 'символи', 'символів')}`,\n passwordRuleUppercase: 'Велика літера',\n passwordRuleNumber: 'Цифра',\n passwordRuleSymbol: 'Спеціальний символ',\n passwordStrength: (score) =>\n PASSWORD_STRENGTH_LABELS[Math.max(0, Math.min(4, score))],\n passwordStrengthLabel: 'Надійність пароля:',\n ruleMet: 'Виконано:',\n ruleNotMet: 'Не виконано:',\n oneTimeCode: 'Одноразовий код',\n otpDigit: (position) => `Цифра ${position}`,\n numericKeypadLabel: 'Цифрова клавіатура',\n keypadClear: 'Очистити',\n keypadBackspace: 'Backspace',\n keypadDigitsEntered: (count, length) => `Введено ${count} з ${length} цифр`,\n onScreenKeyboardLabel: 'Екранна клавіатура',\n keyboardShift: 'Shift',\n keyboardSpace: 'Пробіл',\n keyboardEnter: 'Enter',\n keyboardAltLayer: 'Більше символів',\n keyboardBaseLayer: 'Літери',\n ratingLabel: 'Оцінка',\n ratingValueText: (value, max) =>\n `${value} з ${max} ${plural(max, 'зірки', 'зірок', 'зірок')}`,\n minimum: 'Мінімум',\n maximum: 'Максимум',\n chooseColor: 'Виберіть колір',\n hexValue: 'Шістнадцяткове значення',\n presetColors: 'Стандартні кольори',\n chooseCountry: 'Виберіть країну',\n searchCountries: 'Пошук країни…',\n phoneNumber: 'Номер телефону',\n postalCode: 'Поштовий індекс',\n amount: 'Сума',\n cardNumber: 'Номер картки',\n cardBrand: (brand) => `Тип картки: ${brand}`,\n iban: 'IBAN',\n taxId: 'Податковий номер',\n signature: 'Підпис',\n jsonLabel: 'JSON',\n\n logViewerLabel: 'Журнал подій',\n logFollow: 'Стежити',\n logCopyAll: 'Копіювати журнал',\n logWrapLines: 'Переносити рядки',\n\n orgChartLabel: 'Організаційна структура',\n orgChartExpand: 'Розгорнути {label}',\n orgChartCollapse: 'Згорнути {label}',\n\n chatLabel: 'Розмова',\n chatComposerLabel: 'Повідомлення',\n chatPlaceholder: 'Напишіть повідомлення…',\n chatSend: 'Надіслати',\n chatStop: 'Зупинити генерування',\n chatAttach: 'Додати файли',\n chatRemoveAttachment: 'Видалити вкладення',\n chatAttachments: 'Вкладення',\n chatSuggestions: 'Пропозиції',\n chatCopy: 'Копіювати повідомлення',\n chatRetry: 'Повторити',\n chatTyping: 'Пише…',\n chatStreaming: 'Генерування…',\n chatJumpToLatest: 'Перейти до найновіших',\n chatEmpty: 'Немає повідомлень',\n chatYou: 'Ви',\n chatAssistant: 'Асистент',\n chatToolRunning: 'Виконується',\n chatToolDone: 'Готово',\n chatToolError: 'Помилка',\n\n dynamicFormAdd: 'Додати',\n dynamicFormRemove: (index) => `Видалити елемент ${index}`,\n\n queryBuilderLabel: 'Умови фільтрування',\n queryAddRule: 'Додати правило',\n queryAddGroup: 'Додати групу',\n queryRemoveRule: 'Видалити правило',\n queryRemoveGroup: 'Видалити групу',\n queryAnd: 'Та',\n queryOr: 'Або',\n queryNot: 'Не',\n queryField: 'Поле',\n queryOperator: 'Оператор',\n queryValue: 'Значення',\n queryValueFrom: 'Від',\n queryValueTo: 'До',\n queryEmptyGroup: 'Немає умов',\n queryTrue: 'Істина',\n queryFalse: 'Хиба',\n queryOpEq: 'дорівнює',\n queryOpNeq: 'не дорівнює',\n queryOpContains: 'містить',\n queryOpNotContains: 'не містить',\n queryOpStartsWith: 'починається з',\n queryOpEndsWith: 'закінчується на',\n queryOpGt: 'більше ніж',\n queryOpGte: 'щонайменше',\n queryOpLt: 'менше ніж',\n queryOpLte: 'щонайбільше',\n queryOpBetween: 'між',\n queryOpIn: 'є одним із',\n queryOpNotIn: 'не є жодним із',\n queryOpBefore: 'до',\n queryOpAfter: 'після',\n queryOpEmpty: 'порожнє',\n queryOpNotEmpty: 'не порожнє',\n\n dialogMove: 'Перемістити вікно (стрілки; Home повертає)',\n dialogResize: 'Змінити розмір вікна (стрілки; Home повертає)',\n\n listboxFilter: 'Фільтрувати варіанти',\n listboxEmpty: 'Немає відповідних варіантів',\n\n eventCalendarGrabbed: (title, from, to) =>\n `Піднято ${title}, ${from} – ${to}. Стрілки переміщують, ` +\n 'Shift зі стрілкою вгору або вниз змінює час завершення, ' +\n 'Enter зберігає, Escape скасовує.',\n eventCalendarPosition: (title, day, from, to) =>\n `${title}, ${day}, ${from} – ${to}.`,\n eventCalendarMoved: (title, day, from, to) =>\n `${title} переміщено на ${day}, ${from} – ${to}.`,\n eventCalendarResized: (title, to) => `${title} тепер закінчується о ${to}.`,\n eventCalendarEditCancelled:\n 'Переміщення скасовано. Подія зберігає початковий час.',\n eventCalendarMovableEvent: 'Подія, яку можна переміщувати',\n\n previousImage: 'Попереднє зображення',\n nextImage: 'Наступне зображення',\n imageOf: (index, total) => `Зображення ${index} з ${total}`,\n viewImage: (alt) => (alt ? `Переглянути ${alt}` : 'Переглянути зображення'),\n imageFailed: 'Не вдалося завантажити зображення',\n zoom: 'Масштаб',\n zoomIn: 'Збільшити',\n zoomOut: 'Зменшити',\n mediaLibrary: 'Медіатека',\n dropzoneLabel: 'Перетягніть файли сюди або натисніть, щоб вибрати',\n uploadFailed: 'Не вдалося завантажити',\n retryUpload: 'Повторити завантаження',\n errorSummaryTitle: 'Виникла проблема',\n\n available: 'Доступні',\n selected: 'Вибрані',\n transferSelected: (target) => `Перемістити вибрані до: ${target}`,\n transferAll: (target) => `Перемістити всі до: ${target}`,\n itemsMoved: (count, target) =>\n `Переміщено ${count} ${plural(count, 'елемент', 'елементи', 'елементів')} до: ${target}`,\n\n notificationsTitle: 'Сповіщення',\n allCaughtUp: 'Усе прочитано',\n markAllRead: 'Позначити всі як прочитані',\n notificationsUnread: (count) =>\n `Сповіщення, ${count} ${plural(count, 'непрочитане', 'непрочитані', 'непрочитаних')}`,\n unread: 'Непрочитані',\n tourStepOf: (step, total) => `Крок ${step} з ${total}`,\n tourSkip: 'Пропустити',\n tourPrevious: 'Назад',\n tourNext: 'Далі',\n tourDone: 'Готово',\n\n commandPalettePlaceholder: 'Введіть команду або шукайте…',\n commandPaletteLabel: 'Палітра команд',\n stepCompleted: 'Завершено',\n stepError: 'Містить помилки',\n diffAddedLine: 'Додано:',\n diffRemovedLine: 'Видалено:',\n itemAdded: (name) => `Додано ${name}`,\n itemRemoved: (name) => `Видалено ${name}`,\n resizePanes: 'Змінити розмір панелей',\n backToTop: 'Повернутися нагору',\n breadcrumbLabel: 'Навігаційний ланцюжок',\n fabLabel: 'Дії',\n diffBefore: 'До',\n diffAfter: 'Після',\n diffChanges: 'Зміни',\n skipToContent: 'Перейти до вмісту',\n primaryNav: 'Головна',\n\n dndPickedUp: (position, total) =>\n `Піднято. Елемент ${position} з ${total}. ` +\n 'Стрілки переміщують, пробіл або Enter опускає, Escape скасовує.',\n dndMoved: (position, total) => `Переміщено на позицію ${position} з ${total}.`,\n dndMovedToList: (list, position, total) =>\n `Переміщено до: ${list}, позиція ${position} з ${total}.`,\n dndDropped: (position) => `Опущено на позиції ${position}.`,\n dndMovedToZone: (zone) => `Переміщено до: ${zone}. Пробіл або Enter опускає тут.`,\n dndDroppedInZone: (zone) => `Опущено в: ${zone}.`,\n dndCancelled: 'Переміщення скасовано. Елемент повернувся на початкове місце.',\n\n repeaterAddRow: 'Додати рядок',\n repeaterRemoveRow: (index) => `Видалити рядок ${index}`,\n repeaterReorderRow: (index) => `Змінити порядок рядка ${index}`,\n repeaterRowMoved: (from, to) =>\n `Рядок переміщено з позиції ${from} на позицію ${to}.`,\n\n fileRejectedType: (name) => `${name}: непідтримуваний тип`,\n fileRejectedSize: (name, limit) => `${name}: перевищує ${limit}`,\n fileRejectedCount: (name, max) =>\n `${name}: перевищено ліміт ${max} ${plural(max, 'файлу', 'файлів', 'файлів')}`,\n\n chartCategory: 'Категорія',\n chartValue: 'Значення',\n chartSeries: 'Серія',\n chartSlice: 'Сегмент',\n chartStage: 'Етап',\n chartConversion: 'Конверсія',\n chartAxis: 'Вісь',\n chartShare: 'Частка',\n chartLabel: 'Мітка',\n\n qrCodeLabel: (text) => `QR-код: ${text}`,\n\n sortableListLabel: 'Список із сортуванням',\n filterColumn: (column) => `Фільтрувати ${column}`,\n clearFilter: (column) => `Очистити фільтр колонки ${column}`,\n filterAny: 'Усі',\n filterMin: 'Мін',\n\n blockEditor: MK_UK_BLOCK_EDITOR,\n};\n\n/**\n * Provides the Ukrainian strings — {@link MK_UK_I18N} with any `overrides`\n * merged on top (deep for `dateNames`, `blockEditor` and `validation`, like\n * `provideMkI18n`).\n *\n * ```ts\n * bootstrapApplication(App, {\n * providers: [provideMkI18nUk({ noData: 'Тут нічого немає' })],\n * });\n * ```\n */\nexport function provideMkI18nUk(overrides: MkI18nOverrides = {}): Provider {\n return provideMkI18n(overrides, MK_UK_I18N);\n}\n","/**\n * Ukrainian locale pack for @mk-kit/ui — `@mk-kit/ui/locales/uk`.\n *\n * Its own entry point so an app carries only the locales it provides.\n */\nexport * from './uk';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, output, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { MK_I18N } from '@mk-kit/ui/core';
4
+ import { MkButton } from '@mk-kit/ui/button';
5
+ import { MkIcon } from '@mk-kit/ui/icon';
6
+ import { MkInlineEdit } from '@mk-kit/ui/data';
7
+ import { MkInput } from '@mk-kit/ui/forms';
8
+ import { mkExportCsv, MkTable, MkTableCell } from '@mk-kit/ui/table';
9
+
10
+ /**
11
+ * Translation editor — keys as rows, locales as columns, click a cell to
12
+ * edit. The base strings are your bundled files; edits are **overrides**
13
+ * kept apart from them, so a rebuild never loses them and a cell can be
14
+ * restored to the file text. Search by key or text, filter to the keys a
15
+ * locale is missing or the ones already edited, export the grid as CSV.
16
+ * Persistence is yours: every edit is emitted as `changed`, feed the result
17
+ * back through `overrides`.
18
+ *
19
+ * ```html
20
+ * <mk-translation-editor
21
+ * [locales]="['pl', 'en', 'ru']"
22
+ * [base]="base()"
23
+ * [overrides]="overrides()"
24
+ * (changed)="save($event)" />
25
+ * ```
26
+ */
27
+ class MkTranslationEditor {
28
+ i18n = inject(MK_I18N);
29
+ /** Locale codes, in column order. The first one is the reference language. */
30
+ locales = input.required(/* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "locales" }] : /* istanbul ignore next */ []));
32
+ /** Bundled strings per locale, flat (`'a.b.c': 'text'`) or nested. */
33
+ base = input.required(/* @ts-ignore */
34
+ ...(ngDevMode ? [{ debugName: "base" }] : /* istanbul ignore next */ []));
35
+ /** Edits per locale, flat. Missing locales are fine. */
36
+ overrides = input({}, /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "overrides" }] : /* istanbul ignore next */ []));
38
+ /** Show but do not edit. */
39
+ readonly = input(false, /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
41
+ /** File name of the CSV export. */
42
+ exportFilename = input('translations.csv', /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "exportFilename" }] : /* istanbul ignore next */ []));
44
+ /** An edit or a restore; persist it and update `overrides`. */
45
+ changed = output();
46
+ query = signal('', /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
48
+ filter = signal('all', /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
50
+ /** Every key any locale knows, sorted. */
51
+ keys = computed(() => {
52
+ const set = new Set();
53
+ for (const locale of this.locales()) {
54
+ for (const k of Object.keys(this.base()[locale] ?? {}))
55
+ set.add(k);
56
+ for (const k of Object.keys(this.overrides()[locale] ?? {}))
57
+ set.add(k);
58
+ }
59
+ return [...set].sort();
60
+ }, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "keys" }] : /* istanbul ignore next */ []));
62
+ /** Per-locale counts shown as filter chips. */
63
+ stats = computed(() => this.locales().map((locale) => {
64
+ const b = this.base()[locale] ?? {};
65
+ const o = this.overrides()[locale] ?? {};
66
+ let missing = 0;
67
+ for (const k of this.keys())
68
+ if (!(k in b) && !(k in o))
69
+ missing++;
70
+ return { locale, missing, overridden: Object.keys(o).length };
71
+ }), /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "stats" }] : /* istanbul ignore next */ []));
73
+ overriddenTotal = computed(() => this.stats().reduce((n, s) => n + s.overridden, 0), /* @ts-ignore */
74
+ ...(ngDevMode ? [{ debugName: "overriddenTotal" }] : /* istanbul ignore next */ []));
75
+ rows = computed(() => {
76
+ const q = this.query().trim().toLowerCase();
77
+ const filter = this.filter();
78
+ const locales = this.locales();
79
+ const out = [];
80
+ for (const key of this.keys()) {
81
+ if (filter === 'overridden' && !locales.some((l) => this.hasOverride(l, key)))
82
+ continue;
83
+ if (filter.startsWith('missing:')) {
84
+ const l = filter.slice('missing:'.length);
85
+ if (this.effective(l, key) !== null)
86
+ continue;
87
+ }
88
+ const row = { key };
89
+ for (const l of locales)
90
+ row[l] = this.effective(l, key) ?? '';
91
+ if (q && !key.toLowerCase().includes(q) && !locales.some((l) => row[l].toLowerCase().includes(q)))
92
+ continue;
93
+ out.push(row);
94
+ }
95
+ return out;
96
+ }, /* @ts-ignore */
97
+ ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
98
+ columns = computed(() => [
99
+ { key: 'key', header: this.i18n.translationEditorKey, width: '32%', pinned: 'left' },
100
+ ...this.locales().map((locale) => ({ key: locale, header: locale.toUpperCase() })),
101
+ ], /* @ts-ignore */
102
+ ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
103
+ effective(locale, key) {
104
+ const o = this.overrides()[locale]?.[key];
105
+ if (o !== undefined)
106
+ return o;
107
+ const b = this.base()[locale]?.[key];
108
+ return b === undefined ? null : b;
109
+ }
110
+ hasOverride(locale, key) {
111
+ return this.overrides()[locale]?.[key] !== undefined;
112
+ }
113
+ isMissing(locale, key) {
114
+ return this.effective(locale, key) === null;
115
+ }
116
+ onSaved(locale, key, value) {
117
+ if (this.readonly())
118
+ return;
119
+ const previous = this.effective(locale, key);
120
+ const next = value.trim();
121
+ // Typing the file text back is a restore, not an override.
122
+ if (next === (this.base()[locale]?.[key] ?? '')) {
123
+ if (this.hasOverride(locale, key))
124
+ this.changed.emit({ locale, key, value: null, previous });
125
+ return;
126
+ }
127
+ if (next === previous)
128
+ return;
129
+ this.changed.emit({ locale, key, value: next, previous });
130
+ }
131
+ reset(locale, key) {
132
+ if (this.readonly() || !this.hasOverride(locale, key))
133
+ return;
134
+ this.changed.emit({ locale, key, value: null, previous: this.effective(locale, key) });
135
+ }
136
+ setFilter(next) {
137
+ const filter = next;
138
+ this.filter.set(this.filter() === filter && filter !== 'all' ? 'all' : filter);
139
+ }
140
+ exportCsv() {
141
+ const locales = this.locales();
142
+ mkExportCsv(this.rows(), [{ key: 'key', header: 'key' }, ...locales.map((l) => ({ key: l, header: l }))], { filename: this.exportFilename() });
143
+ }
144
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MkTranslationEditor, deps: [], target: i0.ɵɵFactoryTarget.Component });
145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MkTranslationEditor, isStandalone: true, selector: "mk-translation-editor", inputs: { locales: { classPropertyName: "locales", publicName: "locales", isSignal: true, isRequired: true, transformFunction: null }, base: { classPropertyName: "base", publicName: "base", isSignal: true, isRequired: true, transformFunction: null }, overrides: { classPropertyName: "overrides", publicName: "overrides", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, exportFilename: { classPropertyName: "exportFilename", publicName: "exportFilename", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "mk-translation-editor" }, ngImport: i0, template: "<div class=\"mk-translation-editor__toolbar\">\n <input\n mkInput\n type=\"search\"\n class=\"mk-translation-editor__search\"\n [value]=\"query()\"\n (input)=\"query.set($any($event.target).value)\"\n [placeholder]=\"i18n.translationEditorSearch\"\n [attr.aria-label]=\"i18n.translationEditorSearch\"\n />\n <div class=\"mk-translation-editor__filters\" role=\"group\">\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'all' ? 'solid' : 'outline'\"\n (click)=\"setFilter('all')\"\n >\n {{ i18n.translationEditorAll }} \u00B7 {{ keys().length }}\n </button>\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'overridden' ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'overridden'\"\n (click)=\"setFilter('overridden')\"\n >\n {{ i18n.translationEditorOverridden }} \u00B7 {{ overriddenTotal() }}\n </button>\n @for (s of stats(); track s.locale) {\n @if (s.missing > 0) {\n <button\n mkButton\n size=\"sm\"\n tone=\"warning\"\n [variant]=\"filter() === 'missing:' + s.locale ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'missing:' + s.locale\"\n (click)=\"setFilter('missing:' + s.locale)\"\n >\n {{ i18n.translationEditorMissing }} {{ s.locale.toUpperCase() }} \u00B7 {{ s.missing }}\n </button>\n }\n }\n </div>\n <span class=\"mk-translation-editor__count\">{{ rows().length }} {{ i18n.translationEditorKeys }}</span>\n <button mkButton size=\"sm\" variant=\"ghost\" (click)=\"exportCsv()\">\n <mk-icon name=\"download\" [size]=\"16\" />\n {{ i18n.translationEditorExport }}\n </button>\n</div>\n\n<mk-table\n [columns]=\"columns()\"\n [data]=\"rows()\"\n density=\"compact\"\n stickyHeader\n virtual\n [rowHeight]=\"44\"\n class=\"mk-translation-editor__table\"\n>\n <ng-template mkTableCell=\"key\" let-row=\"row\">\n <code class=\"mk-translation-editor__key\">{{ row.key }}</code>\n </ng-template>\n @for (locale of locales(); track locale) {\n <ng-template [mkTableCell]=\"locale\" let-row=\"row\">\n <div\n class=\"mk-translation-editor__cell\"\n [class.mk-translation-editor__cell--overridden]=\"hasOverride(locale, row.key)\"\n [class.mk-translation-editor__cell--missing]=\"isMissing(locale, row.key)\"\n >\n <mk-inline-edit\n size=\"sm\"\n [value]=\"row[locale]\"\n [disabled]=\"readonly()\"\n [placeholder]=\"isMissing(locale, row.key) ? i18n.translationEditorMissing : i18n.empty\"\n [ariaLabel]=\"row.key + ' \u00B7 ' + locale\"\n (saved)=\"onSaved(locale, row.key, $event)\"\n />\n @if (hasOverride(locale, row.key) && !readonly()) {\n <button\n mkButton\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n class=\"mk-translation-editor__reset\"\n [attr.aria-label]=\"i18n.translationEditorReset\"\n [attr.title]=\"i18n.translationEditorReset\"\n (click)=\"reset(locale, row.key)\"\n >\n <mk-icon name=\"undo\" [size]=\"16\" />\n </button>\n }\n </div>\n </ng-template>\n }\n</mk-table>\n", styles: [":host{display:flex;flex-direction:column;gap:var(--mk-space-3);min-height:0}.mk-translation-editor__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--mk-space-2)}.mk-translation-editor__search{flex:1 1 16rem;min-width:12rem}.mk-translation-editor__filters{display:flex;flex-wrap:wrap;gap:var(--mk-space-1)}.mk-translation-editor__count{margin-inline-start:auto;color:var(--mk-text-muted);font-size:var(--mk-font-size-sm)}.mk-translation-editor__table{flex:1 1 auto;min-height:0;max-height:70vh}.mk-translation-editor__key{font-family:var(--mk-font-mono);font-size:var(--mk-font-size-sm);color:var(--mk-text-muted);word-break:break-all}.mk-translation-editor__cell{display:flex;align-items:center;gap:var(--mk-space-1);min-width:0}.mk-translation-editor__cell mk-inline-edit{flex:1 1 auto;min-width:0}.mk-translation-editor__cell--overridden{border-inline-start:2px solid var(--mk-primary);padding-inline-start:var(--mk-space-2)}.mk-translation-editor__cell--missing{border-inline-start:2px solid var(--mk-warning);padding-inline-start:var(--mk-space-2)}.mk-translation-editor__reset{flex:none;opacity:.6}.mk-translation-editor__reset:hover,.mk-translation-editor__reset:focus-visible{opacity:1}\n"], dependencies: [{ kind: "component", type: MkTable, selector: "mk-table", inputs: ["columns", "data", "stickyHeader", "zebra", "hover", "density", "stackAt", "clickableRows", "emptyMessage", "selectable", "selected", "trackKey", "rowClass", "expandable", "singleExpand", "resizableColumns", "reorderableColumns", "groupBy", "groupLabel", "virtual", "rowHeight", "overscan", "height", "maxHeight", "filterable", "filters", "clientFilter", "childrenKey"], outputs: ["selectedChange", "filtersChange", "sortChange", "rowClick", "selectionChange", "expandedChange", "columnResize", "columnReorder", "cellEdit", "groupToggle", "treeToggle"] }, { kind: "directive", type: MkTableCell, selector: "[mkTableCell]", inputs: ["mkTableCell"] }, { kind: "component", type: MkInlineEdit, selector: "mk-inline-edit", inputs: ["value", "placeholder", "multiline", "saveOnBlur", "ariaLabel", "disabled", "invalid", "size"], outputs: ["valueChange", "saved", "cancelled"] }, { kind: "component", type: MkInput, selector: "input[mkInput], textarea[mkInput]", inputs: ["size", "invalid"] }, { kind: "component", type: MkButton, selector: "button[mkButton], a[mkButton]", inputs: ["variant", "tone", "size", "loading", "fullWidth", "iconOnly", "disabled"] }, { kind: "component", type: MkIcon, selector: "mk-icon", inputs: ["name", "size", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
+ }
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MkTranslationEditor, decorators: [{
148
+ type: Component,
149
+ args: [{ selector: 'mk-translation-editor', imports: [MkTable, MkTableCell, MkInlineEdit, MkInput, MkButton, MkIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'mk-translation-editor' }, template: "<div class=\"mk-translation-editor__toolbar\">\n <input\n mkInput\n type=\"search\"\n class=\"mk-translation-editor__search\"\n [value]=\"query()\"\n (input)=\"query.set($any($event.target).value)\"\n [placeholder]=\"i18n.translationEditorSearch\"\n [attr.aria-label]=\"i18n.translationEditorSearch\"\n />\n <div class=\"mk-translation-editor__filters\" role=\"group\">\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'all' ? 'solid' : 'outline'\"\n (click)=\"setFilter('all')\"\n >\n {{ i18n.translationEditorAll }} \u00B7 {{ keys().length }}\n </button>\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'overridden' ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'overridden'\"\n (click)=\"setFilter('overridden')\"\n >\n {{ i18n.translationEditorOverridden }} \u00B7 {{ overriddenTotal() }}\n </button>\n @for (s of stats(); track s.locale) {\n @if (s.missing > 0) {\n <button\n mkButton\n size=\"sm\"\n tone=\"warning\"\n [variant]=\"filter() === 'missing:' + s.locale ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'missing:' + s.locale\"\n (click)=\"setFilter('missing:' + s.locale)\"\n >\n {{ i18n.translationEditorMissing }} {{ s.locale.toUpperCase() }} \u00B7 {{ s.missing }}\n </button>\n }\n }\n </div>\n <span class=\"mk-translation-editor__count\">{{ rows().length }} {{ i18n.translationEditorKeys }}</span>\n <button mkButton size=\"sm\" variant=\"ghost\" (click)=\"exportCsv()\">\n <mk-icon name=\"download\" [size]=\"16\" />\n {{ i18n.translationEditorExport }}\n </button>\n</div>\n\n<mk-table\n [columns]=\"columns()\"\n [data]=\"rows()\"\n density=\"compact\"\n stickyHeader\n virtual\n [rowHeight]=\"44\"\n class=\"mk-translation-editor__table\"\n>\n <ng-template mkTableCell=\"key\" let-row=\"row\">\n <code class=\"mk-translation-editor__key\">{{ row.key }}</code>\n </ng-template>\n @for (locale of locales(); track locale) {\n <ng-template [mkTableCell]=\"locale\" let-row=\"row\">\n <div\n class=\"mk-translation-editor__cell\"\n [class.mk-translation-editor__cell--overridden]=\"hasOverride(locale, row.key)\"\n [class.mk-translation-editor__cell--missing]=\"isMissing(locale, row.key)\"\n >\n <mk-inline-edit\n size=\"sm\"\n [value]=\"row[locale]\"\n [disabled]=\"readonly()\"\n [placeholder]=\"isMissing(locale, row.key) ? i18n.translationEditorMissing : i18n.empty\"\n [ariaLabel]=\"row.key + ' \u00B7 ' + locale\"\n (saved)=\"onSaved(locale, row.key, $event)\"\n />\n @if (hasOverride(locale, row.key) && !readonly()) {\n <button\n mkButton\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n class=\"mk-translation-editor__reset\"\n [attr.aria-label]=\"i18n.translationEditorReset\"\n [attr.title]=\"i18n.translationEditorReset\"\n (click)=\"reset(locale, row.key)\"\n >\n <mk-icon name=\"undo\" [size]=\"16\" />\n </button>\n }\n </div>\n </ng-template>\n }\n</mk-table>\n", styles: [":host{display:flex;flex-direction:column;gap:var(--mk-space-3);min-height:0}.mk-translation-editor__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--mk-space-2)}.mk-translation-editor__search{flex:1 1 16rem;min-width:12rem}.mk-translation-editor__filters{display:flex;flex-wrap:wrap;gap:var(--mk-space-1)}.mk-translation-editor__count{margin-inline-start:auto;color:var(--mk-text-muted);font-size:var(--mk-font-size-sm)}.mk-translation-editor__table{flex:1 1 auto;min-height:0;max-height:70vh}.mk-translation-editor__key{font-family:var(--mk-font-mono);font-size:var(--mk-font-size-sm);color:var(--mk-text-muted);word-break:break-all}.mk-translation-editor__cell{display:flex;align-items:center;gap:var(--mk-space-1);min-width:0}.mk-translation-editor__cell mk-inline-edit{flex:1 1 auto;min-width:0}.mk-translation-editor__cell--overridden{border-inline-start:2px solid var(--mk-primary);padding-inline-start:var(--mk-space-2)}.mk-translation-editor__cell--missing{border-inline-start:2px solid var(--mk-warning);padding-inline-start:var(--mk-space-2)}.mk-translation-editor__reset{flex:none;opacity:.6}.mk-translation-editor__reset:hover,.mk-translation-editor__reset:focus-visible{opacity:1}\n"] }]
150
+ }], propDecorators: { locales: [{ type: i0.Input, args: [{ isSignal: true, alias: "locales", required: true }] }], base: [{ type: i0.Input, args: [{ isSignal: true, alias: "base", required: true }] }], overrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "overrides", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], exportFilename: [{ type: i0.Input, args: [{ isSignal: true, alias: "exportFilename", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
151
+
152
+ /**
153
+ * Generated bundle index. Do not edit.
154
+ */
155
+
156
+ export { MkTranslationEditor };
157
+ //# sourceMappingURL=mk-kit-ui-translate-editor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mk-kit-ui-translate-editor.mjs","sources":["../../../projects/mk-kit/translate/editor/translation-editor.ts","../../../projects/mk-kit/translate/editor/translation-editor.html","../../../projects/mk-kit/translate/editor/mk-kit-ui-translate-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { MK_I18N } from '@mk-kit/ui/core';\nimport { MkButton } from '@mk-kit/ui/button';\nimport { MkIcon } from '@mk-kit/ui/icon';\nimport { MkInlineEdit } from '@mk-kit/ui/data';\nimport { MkInput } from '@mk-kit/ui/forms';\nimport { MkTable, MkTableCell, type MkTableColumn, mkExportCsv } from '@mk-kit/ui/table';\nimport type { MkFlatTranslations } from '@mk-kit/ui/translate';\n\n/** One edit made in the editor. `value: null` clears the override. */\nexport interface MkTranslationChange {\n locale: string;\n key: string;\n value: string | null;\n /** The text shown before the edit (override, or the base string). */\n previous: string | null;\n}\n\n/** A row of the editor: the key plus the effective text per locale. */\nexport interface MkTranslationRow {\n key: string;\n [locale: string]: string;\n}\n\ntype Filter = 'all' | 'overridden' | `missing:${string}`;\n\n/**\n * Translation editor — keys as rows, locales as columns, click a cell to\n * edit. The base strings are your bundled files; edits are **overrides**\n * kept apart from them, so a rebuild never loses them and a cell can be\n * restored to the file text. Search by key or text, filter to the keys a\n * locale is missing or the ones already edited, export the grid as CSV.\n * Persistence is yours: every edit is emitted as `changed`, feed the result\n * back through `overrides`.\n *\n * ```html\n * <mk-translation-editor\n * [locales]=\"['pl', 'en', 'ru']\"\n * [base]=\"base()\"\n * [overrides]=\"overrides()\"\n * (changed)=\"save($event)\" />\n * ```\n */\n@Component({\n selector: 'mk-translation-editor',\n imports: [MkTable, MkTableCell, MkInlineEdit, MkInput, MkButton, MkIcon],\n templateUrl: './translation-editor.html',\n styleUrl: './translation-editor.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'mk-translation-editor' },\n})\nexport class MkTranslationEditor {\n protected readonly i18n = inject(MK_I18N);\n\n /** Locale codes, in column order. The first one is the reference language. */\n readonly locales = input.required<string[]>();\n /** Bundled strings per locale, flat (`'a.b.c': 'text'`) or nested. */\n readonly base = input.required<Record<string, MkFlatTranslations>>();\n /** Edits per locale, flat. Missing locales are fine. */\n readonly overrides = input<Record<string, MkFlatTranslations>>({});\n /** Show but do not edit. */\n readonly readonly = input(false);\n /** File name of the CSV export. */\n readonly exportFilename = input('translations.csv');\n\n /** An edit or a restore; persist it and update `overrides`. */\n readonly changed = output<MkTranslationChange>();\n\n protected readonly query = signal('');\n protected readonly filter = signal<Filter>('all');\n\n /** Every key any locale knows, sorted. */\n protected readonly keys = computed(() => {\n const set = new Set<string>();\n for (const locale of this.locales()) {\n for (const k of Object.keys(this.base()[locale] ?? {})) set.add(k);\n for (const k of Object.keys(this.overrides()[locale] ?? {})) set.add(k);\n }\n return [...set].sort();\n });\n\n /** Per-locale counts shown as filter chips. */\n protected readonly stats = computed(() =>\n this.locales().map((locale) => {\n const b = this.base()[locale] ?? {};\n const o = this.overrides()[locale] ?? {};\n let missing = 0;\n for (const k of this.keys()) if (!(k in b) && !(k in o)) missing++;\n return { locale, missing, overridden: Object.keys(o).length };\n }),\n );\n\n protected readonly overriddenTotal = computed(() =>\n this.stats().reduce((n, s) => n + s.overridden, 0),\n );\n\n protected readonly rows = computed<MkTranslationRow[]>(() => {\n const q = this.query().trim().toLowerCase();\n const filter = this.filter();\n const locales = this.locales();\n const out: MkTranslationRow[] = [];\n for (const key of this.keys()) {\n if (filter === 'overridden' && !locales.some((l) => this.hasOverride(l, key))) continue;\n if (filter.startsWith('missing:')) {\n const l = filter.slice('missing:'.length);\n if (this.effective(l, key) !== null) continue;\n }\n const row: MkTranslationRow = { key };\n for (const l of locales) row[l] = this.effective(l, key) ?? '';\n if (q && !key.toLowerCase().includes(q) && !locales.some((l) => row[l].toLowerCase().includes(q))) continue;\n out.push(row);\n }\n return out;\n });\n\n protected readonly columns = computed<MkTableColumn<MkTranslationRow>[]>(() => [\n { key: 'key', header: this.i18n.translationEditorKey, width: '32%', pinned: 'left' },\n ...this.locales().map((locale) => ({ key: locale, header: locale.toUpperCase() })),\n ]);\n\n protected effective(locale: string, key: string): string | null {\n const o = this.overrides()[locale]?.[key];\n if (o !== undefined) return o;\n const b = this.base()[locale]?.[key];\n return b === undefined ? null : b;\n }\n\n protected hasOverride(locale: string, key: string): boolean {\n return this.overrides()[locale]?.[key] !== undefined;\n }\n\n protected isMissing(locale: string, key: string): boolean {\n return this.effective(locale, key) === null;\n }\n\n protected onSaved(locale: string, key: string, value: string): void {\n if (this.readonly()) return;\n const previous = this.effective(locale, key);\n const next = value.trim();\n // Typing the file text back is a restore, not an override.\n if (next === (this.base()[locale]?.[key] ?? '')) {\n if (this.hasOverride(locale, key)) this.changed.emit({ locale, key, value: null, previous });\n return;\n }\n if (next === previous) return;\n this.changed.emit({ locale, key, value: next, previous });\n }\n\n protected reset(locale: string, key: string): void {\n if (this.readonly() || !this.hasOverride(locale, key)) return;\n this.changed.emit({ locale, key, value: null, previous: this.effective(locale, key) });\n }\n\n protected setFilter(next: string): void {\n const filter = next as Filter;\n this.filter.set(this.filter() === filter && filter !== 'all' ? 'all' : filter);\n }\n\n protected exportCsv(): void {\n const locales = this.locales();\n mkExportCsv(\n this.rows(),\n [{ key: 'key', header: 'key' }, ...locales.map((l) => ({ key: l, header: l }))],\n { filename: this.exportFilename() },\n );\n }\n}\n","<div class=\"mk-translation-editor__toolbar\">\n <input\n mkInput\n type=\"search\"\n class=\"mk-translation-editor__search\"\n [value]=\"query()\"\n (input)=\"query.set($any($event.target).value)\"\n [placeholder]=\"i18n.translationEditorSearch\"\n [attr.aria-label]=\"i18n.translationEditorSearch\"\n />\n <div class=\"mk-translation-editor__filters\" role=\"group\">\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'all' ? 'solid' : 'outline'\"\n (click)=\"setFilter('all')\"\n >\n {{ i18n.translationEditorAll }} · {{ keys().length }}\n </button>\n <button\n mkButton\n size=\"sm\"\n [variant]=\"filter() === 'overridden' ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'overridden'\"\n (click)=\"setFilter('overridden')\"\n >\n {{ i18n.translationEditorOverridden }} · {{ overriddenTotal() }}\n </button>\n @for (s of stats(); track s.locale) {\n @if (s.missing > 0) {\n <button\n mkButton\n size=\"sm\"\n tone=\"warning\"\n [variant]=\"filter() === 'missing:' + s.locale ? 'solid' : 'outline'\"\n [attr.aria-pressed]=\"filter() === 'missing:' + s.locale\"\n (click)=\"setFilter('missing:' + s.locale)\"\n >\n {{ i18n.translationEditorMissing }} {{ s.locale.toUpperCase() }} · {{ s.missing }}\n </button>\n }\n }\n </div>\n <span class=\"mk-translation-editor__count\">{{ rows().length }} {{ i18n.translationEditorKeys }}</span>\n <button mkButton size=\"sm\" variant=\"ghost\" (click)=\"exportCsv()\">\n <mk-icon name=\"download\" [size]=\"16\" />\n {{ i18n.translationEditorExport }}\n </button>\n</div>\n\n<mk-table\n [columns]=\"columns()\"\n [data]=\"rows()\"\n density=\"compact\"\n stickyHeader\n virtual\n [rowHeight]=\"44\"\n class=\"mk-translation-editor__table\"\n>\n <ng-template mkTableCell=\"key\" let-row=\"row\">\n <code class=\"mk-translation-editor__key\">{{ row.key }}</code>\n </ng-template>\n @for (locale of locales(); track locale) {\n <ng-template [mkTableCell]=\"locale\" let-row=\"row\">\n <div\n class=\"mk-translation-editor__cell\"\n [class.mk-translation-editor__cell--overridden]=\"hasOverride(locale, row.key)\"\n [class.mk-translation-editor__cell--missing]=\"isMissing(locale, row.key)\"\n >\n <mk-inline-edit\n size=\"sm\"\n [value]=\"row[locale]\"\n [disabled]=\"readonly()\"\n [placeholder]=\"isMissing(locale, row.key) ? i18n.translationEditorMissing : i18n.empty\"\n [ariaLabel]=\"row.key + ' · ' + locale\"\n (saved)=\"onSaved(locale, row.key, $event)\"\n />\n @if (hasOverride(locale, row.key) && !readonly()) {\n <button\n mkButton\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n class=\"mk-translation-editor__reset\"\n [attr.aria-label]=\"i18n.translationEditorReset\"\n [attr.title]=\"i18n.translationEditorReset\"\n (click)=\"reset(locale, row.key)\"\n >\n <mk-icon name=\"undo\" [size]=\"16\" />\n </button>\n }\n </div>\n </ng-template>\n }\n</mk-table>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}