@inkra/react 0.8.0 → 0.10.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.
Files changed (76) hide show
  1. package/README.md +137 -2
  2. package/THIRD_PARTY_NOTICES.md +9 -0
  3. package/Xiaolai-OFL.txt +94 -0
  4. package/dist/PencilIcon.d.ts +14 -1
  5. package/dist/PencilIcon.js +88 -52
  6. package/dist/PencilText.js +4 -1
  7. package/dist/assets/ui-hand-xiaolai-extended.woff2 +0 -0
  8. package/dist/assets/ui-hand-xiaolai.woff2 +0 -0
  9. package/dist/assets/xiaolai.css +17 -0
  10. package/dist/form/EditablePencilText.js +4 -2
  11. package/dist/guide/index.d.ts +77 -0
  12. package/dist/guide/index.js +379 -0
  13. package/dist/i18n/catalog.d.ts +1 -1
  14. package/dist/i18n/catalog.js +8 -0
  15. package/dist/image-viewer/index.d.ts +2 -0
  16. package/dist/image-viewer/index.js +28 -28
  17. package/dist/index.d.ts +4 -0
  18. package/dist/index.js +4 -0
  19. package/dist/infinite-scroll/gesture.d.ts +19 -0
  20. package/dist/infinite-scroll/gesture.js +218 -0
  21. package/dist/infinite-scroll/index.d.ts +55 -0
  22. package/dist/infinite-scroll/index.js +543 -0
  23. package/dist/infinite-scroll/model.d.ts +33 -0
  24. package/dist/infinite-scroll/model.js +168 -0
  25. package/dist/internal/iconFill.d.ts +16 -0
  26. package/dist/internal/iconFill.js +275 -0
  27. package/dist/internal/surfaceRenderer.d.ts +4 -4
  28. package/dist/internal/surfaceRenderer.js +2 -2
  29. package/dist/internal/textRenderer.d.ts +1 -1
  30. package/dist/internal/textRenderer.js +23 -11
  31. package/dist/inventory-grid/index.js +13 -3
  32. package/dist/inventory-grid/outline.d.ts +9 -0
  33. package/dist/inventory-grid/outline.js +54 -0
  34. package/dist/loading/index.d.ts +58 -0
  35. package/dist/loading/index.js +188 -0
  36. package/dist/loading/locales.d.ts +15 -0
  37. package/dist/loading/locales.js +34 -0
  38. package/dist/loading/model.d.ts +6 -0
  39. package/dist/loading/model.js +29 -0
  40. package/dist/masonry/index.d.ts +25 -0
  41. package/dist/masonry/index.js +227 -0
  42. package/dist/masonry/layout.d.ts +35 -0
  43. package/dist/masonry/layout.js +67 -0
  44. package/dist/number-ticker/RollingValue.d.ts +6 -0
  45. package/dist/number-ticker/RollingValue.js +10 -0
  46. package/dist/number-ticker/index.d.ts +4 -0
  47. package/dist/number-ticker/index.js +55 -7
  48. package/dist/number-ticker/rolling.d.ts +35 -0
  49. package/dist/number-ticker/rolling.js +87 -0
  50. package/dist/selection/CircularSwitchVisual.d.ts +8 -0
  51. package/dist/selection/CircularSwitchVisual.js +82 -0
  52. package/dist/selection/Switch.d.ts +7 -0
  53. package/dist/selection/Switch.js +15 -3
  54. package/dist/slider/circular.d.ts +35 -0
  55. package/dist/slider/circular.js +196 -0
  56. package/dist/slider/circularMath.d.ts +10 -0
  57. package/dist/slider/circularMath.js +34 -0
  58. package/dist/slider/index.d.ts +5 -0
  59. package/dist/slider/index.js +5 -3
  60. package/dist/styles/base.css +4 -2
  61. package/dist/styles/breadcrumb.css +1 -1
  62. package/dist/styles/guide.css +202 -0
  63. package/dist/styles/image-viewer.css +20 -0
  64. package/dist/styles/infinite-scroll.css +171 -0
  65. package/dist/styles/inventory-grid.css +20 -8
  66. package/dist/styles/loading.css +348 -0
  67. package/dist/styles/markdown.css +1 -1
  68. package/dist/styles/masonry.css +68 -0
  69. package/dist/styles/number-ticker.css +47 -1
  70. package/dist/styles/selection.css +50 -0
  71. package/dist/styles/slider.css +65 -0
  72. package/dist/styles/slot.css +1 -1
  73. package/dist/styles.css +1180 -192
  74. package/dist/toast/manager.d.ts +4 -4
  75. package/dist/tokens.css +13 -10
  76. package/package.json +28 -2
@@ -1,4 +1,4 @@
1
- export declare const messageRows: readonly [readonly ["color.invalid", "Use #RGB, #RGBA, #RRGGBB, or #RRGGBBAA.", "请使用 #RGB、#RGBA、#RRGGBB 或 #RRGGBBAA。", "#RGB、#RGBA、#RRGGBB、#RRGGBBAA のいずれかを入力してください。", "#RGB, #RGBA, #RRGGBB 또는 #RRGGBBAA를 입력하세요.", "Utilisez #RGB, #RGBA, #RRGGBB ou #RRGGBBAA."], readonly ["editable.invalid", "Value is invalid", "内容无效", "値が無効です", "잘못된 값입니다", "Valeur non valide"], readonly ["rangeSlider.minimum", "Minimum value", "最小值", "最小値", "최솟값", "Valeur minimale"], readonly ["rangeSlider.maximum", "Maximum value", "最大值", "最大値", "최댓값", "Valeur maximale"], readonly ["sparkline.empty", "No data", "暂无数据", "データがありません", "데이터 없음", "Aucune donnée"], readonly ["sparkline.summary", "Current {current}, min {minimum}, max {maximum}", "当前 {current},最小 {minimum},最大 {maximum}", "現在 {current}、最小 {minimum}、最大 {maximum}", "현재 {current}, 최솟값 {minimum}, 최댓값 {maximum}", "Actuel {current}, min {minimum}, max {maximum}"], readonly ["sparkline.point", "Point {index}: {value}", "第 {index} 点:{value}", "点 {index}:{value}", "지점 {index}: {value}", "Point {index} : {value}"], readonly ["sparkline.missing", "Point {index}: missing", "第 {index} 点:缺失", "点 {index}:欠損", "지점 {index}: 누락", "Point {index} : manquant"], readonly ["common.clear", "Clear", "清空", "消去", "지우기", "Effacer"], readonly ["map.label", "Map", "地图", "地図", "지도", "Carte"], readonly ["graph.nodeInstructions", "Press enter or space to select a node. Press delete to remove it and escape to cancel.", "按 Enter 或空格选择节点,按 Delete 删除,按 Escape 取消。", "Enter または Space でノードを選択し、Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 노드를 선택하고 Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un nœud, Suppr pour le supprimer et Échap pour annuler."], readonly ["graph.nodeMoveInstructions", "Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.", "按 Enter 或空格选择节点,使用方向键移动,按 Delete 删除,按 Escape 取消。", "Enter または Space でノードを選択し、矢印キーで移動します。Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 노드를 선택하고 방향키로 이동합니다. Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un nœud, puis utilisez les flèches pour le déplacer. Suppr le supprime et Échap annule."], readonly ["graph.nodeMoved", "Moved selected node. New position, x: {x}, y: {y}", "已移动所选节点。新位置:x {x},y {y}", "選択したノードを移動しました。新しい位置:x {x}、y {y}", "선택한 노드가 이동했습니다. 새 위치: x {x}, y {y}", "Nœud sélectionné déplacé. Nouvelle position : x {x}, y {y}"], readonly ["graph.edgeInstructions", "Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.", "按 Enter 或空格选择连线,按 Delete 删除,按 Escape 取消。", "Enter または Space でエッジを選択し、Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 연결선을 선택하고 Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un lien, Suppr pour le supprimer ou Échap pour annuler."], readonly ["graph.handle", "Handle", "连接点", "接続点", "연결점", "Point de connexion"], readonly ["common.close", "Close", "关闭", "閉じる", "닫기", "Fermer"], readonly ["common.cancel", "Cancel", "取消", "キャンセル", "취소", "Annuler"], readonly ["common.save", "Save", "保存", "保存", "저장", "Enregistrer"], readonly ["common.apply", "Apply", "确定", "適用", "적용", "Appliquer"], readonly ["common.retry", "Retry", "重试", "再試行", "다시 시도", "Réessayer"], readonly ["common.remove", "Remove", "移除", "削除", "제거", "Retirer"], readonly ["common.all", "All", "全部", "すべて", "전체", "Tout"], readonly ["common.selected", "Selected", "已选择", "選択済み", "선택됨", "Sélectionné"], readonly ["common.noItems", "No items", "暂无内容", "項目がありません", "항목 없음", "Aucun élément"], readonly ["common.previousPage", "Previous page", "上一页", "前のページ", "이전 페이지", "Page précédente"], readonly ["common.nextPage", "Next page", "下一页", "次のページ", "다음 페이지", "Page suivante"], readonly ["common.zoomIn", "Zoom in", "放大", "拡大", "확대", "Agrandir"], readonly ["common.zoomOut", "Zoom out", "缩小", "縮小", "축소", "Réduire"], readonly ["common.resetView", "Reset view", "重置视图", "表示をリセット", "보기 초기화", "Réinitialiser la vue"], readonly ["common.missing", "Missing", "缺失", "欠損", "누락", "Manquant"], readonly ["input.clear", "Clear input", "清空输入", "入力を消去", "입력 지우기", "Effacer la saisie"], readonly ["input.showPassword", "Show password", "显示密码", "パスワードを表示", "비밀번호 표시", "Afficher le mot de passe"], readonly ["input.hidePassword", "Hide password", "隐藏密码", "パスワードを非表示", "비밀번호 숨기기", "Masquer le mot de passe"], readonly ["inputNumber.decrease", "Decrease value", "减小数值", "値を減らす", "값 줄이기", "Diminuer la valeur"], readonly ["inputNumber.increase", "Increase value", "增大数值", "値を増やす", "값 늘리기", "Augmenter la valeur"], readonly ["textarea.resize", "Resize text area", "调整文本框大小", "テキストエリアのサイズを変更", "텍스트 영역 크기 조절", "Redimensionner la zone de texte"], readonly ["textarea.remaining", "{count} characters remaining", "还可输入 {count} 个字符", "残り {count} 文字", "{count}자 남음", "{count} caractères restants"], readonly ["select.placeholder", "Select an option", "请选择选项", "選択してください", "옵션 선택", "Sélectionner une option"], readonly ["select.search", "Search options", "搜索选项", "選択肢を検索", "옵션 검색", "Rechercher une option"], readonly ["select.empty", "No matching options", "没有匹配的选项", "一致する選択肢がありません", "일치하는 옵션 없음", "Aucune option correspondante"], readonly ["select.clear", "Clear selection", "清空选择", "選択を解除", "선택 지우기", "Effacer la sélection"], readonly ["select.open", "Show options", "显示选项", "選択肢を表示", "옵션 표시", "Afficher les options"], readonly ["select.previous", "Select previous option", "选择上一个选项", "前の選択肢を選択", "이전 옵션 선택", "Sélectionner l’option précédente"], readonly ["select.next", "Select next option", "选择下一个选项", "次の選択肢を選択", "다음 옵션 선택", "Sélectionner l’option suivante"], readonly ["treeSelect.placeholder", "Select an item", "请选择项目", "項目を選択", "항목 선택", "Sélectionner un élément"], readonly ["treeSelect.search", "Search tree", "搜索树节点", "ツリーを検索", "트리 검색", "Rechercher dans l’arbre"], readonly ["treeSelect.empty", "No matching items", "没有匹配的项目", "一致する項目がありません", "일치하는 항목 없음", "Aucun élément correspondant"], readonly ["treeSelect.options", "Tree options", "树选项", "ツリーの選択肢", "트리 옵션", "Options de l’arbre"], readonly ["tree.expand", "Expand item", "展开项目", "項目を展開", "항목 펼치기", "Développer l’élément"], readonly ["tree.collapse", "Collapse item", "收起项目", "項目を折りたたむ", "항목 접기", "Réduire l’élément"], readonly ["hotkey.clear", "Clear shortcut", "清除快捷键", "ショートカットを消去", "단축키 지우기", "Effacer le raccourci"], readonly ["hotkey.conflict", "Shortcut already assigned", "快捷键已被占用", "このショートカットは使用中です", "이미 지정된 단축키", "Raccourci déjà attribué"], readonly ["hotkey.placeholder", "Press shortcut", "请按下快捷键", "ショートカットを入力", "단축키를 누르세요", "Saisir un raccourci"], readonly ["hotkey.recording", "Recording shortcut", "正在录入快捷键", "ショートカットを記録中", "단축키 기록 중", "Enregistrement du raccourci"], readonly ["editable.edit", "Edit value", "编辑内容", "値を編集", "값 편집", "Modifier la valeur"], readonly ["editable.failed", "Could not save value", "无法保存内容", "保存できませんでした", "값을 저장할 수 없습니다", "Impossible d’enregistrer la valeur"], readonly ["tagInput.list", "Selected tags", "已选标签", "選択済みタグ", "선택한 태그", "Étiquettes sélectionnées"], readonly ["tagInput.clear", "Clear all tags", "清空全部标签", "すべてのタグを削除", "모든 태그 지우기", "Effacer toutes les étiquettes"], readonly ["tagInput.fewer", "Show fewer tags", "收起标签", "タグを折りたたむ", "태그 접기", "Afficher moins d’étiquettes"], readonly ["tagInput.more", "Show {count} more tags", "显示另外 {count} 个标签", "他の {count} 件のタグを表示", "태그 {count}개 더 보기", "Afficher {count} étiquettes de plus"], readonly ["tagInput.remove", "Remove {label}", "移除 {label}", "{label} を削除", "{label} 제거", "Retirer {label}"], readonly ["tagInput.duplicate", "{label} is already added.", "{label} 已添加。", "{label} は追加済みです。", "{label}은(는) 이미 추가되었습니다.", "{label} a déjà été ajouté."], readonly ["tagInput.maximum", "You can add up to {count} tags.", "最多可添加 {count} 个标签。", "タグは {count} 件まで追加できます。", "태그는 최대 {count}개까지 추가할 수 있습니다.", "Vous pouvez ajouter jusqu’à {count} étiquettes."], readonly ["tagInput.invalid", "{label} is not a valid tag.", "{label} 不是有效标签。", "{label} は有効なタグではありません。", "{label}은(는) 유효한 태그가 아닙니다.", "{label} n’est pas une étiquette valide."], readonly ["datePicker.calendar", "Choose date", "选择日期", "日付を選択", "날짜 선택", "Choisir une date"], readonly ["datePicker.placeholder", "Choose a date", "选择日期", "日付を選択", "날짜 선택", "Choisir une date"], readonly ["datePicker.range", "Choose a date range", "选择日期范围", "期間を選択", "날짜 범위 선택", "Choisir une période"], readonly ["datePicker.clear", "Clear date", "清空日期", "日付を消去", "날짜 지우기", "Effacer la date"], readonly ["datePicker.open", "Open date picker", "打开日期选择器", "日付選択を開く", "날짜 선택기 열기", "Ouvrir le sélecteur de date"], readonly ["datePicker.previous", "Previous month", "上个月", "前の月", "이전 달", "Mois précédent"], readonly ["datePicker.next", "Next month", "下个月", "次の月", "다음 달", "Mois suivant"], readonly ["datePicker.selected", "selected", "已选择", "選択済み", "선택됨", "sélectionné"], readonly ["datePicker.today", "today", "今天", "今日", "오늘", "aujourd’hui"], readonly ["timePicker.title", "Choose time", "选择时间", "時刻を選択", "시간 선택", "Choisir une heure"], readonly ["timePicker.hour", "Hour", "时", "時", "시", "Heure"], readonly ["timePicker.minute", "Minute", "分", "分", "분", "Minute"], readonly ["timePicker.second", "Second", "秒", "秒", "초", "Seconde"], readonly ["timePicker.period", "Period", "时段", "時間帯", "시간대", "Période"], readonly ["timePicker.am", "AM", "上午", "午前", "오전", "AM"], readonly ["timePicker.pm", "PM", "下午", "午後", "오후", "PM"], readonly ["timePicker.clear", "Clear time", "清空时间", "時刻を消去", "시간 지우기", "Effacer l’heure"], readonly ["timePicker.invalid", "Choose a time within the allowed range and step.", "请选择符合时间范围和步进的时间。", "指定された範囲と間隔に合う時刻を選択してください。", "허용된 범위와 간격에 맞는 시간을 선택하세요.", "Choisissez une heure respectant la plage et le pas autorisés."], readonly ["agenda.empty", "No events", "暂无日程", "予定がありません", "일정 없음", "Aucun événement"], readonly ["agenda.pending", "Time pending", "时间待定", "時刻未定", "시간 미정", "Horaire à définir"], readonly ["agenda.previous", "Previous day", "前一天", "前の日", "이전 날", "Jour précédent"], readonly ["agenda.next", "Next day", "后一天", "次の日", "다음 날", "Jour suivant"], readonly ["agenda.fewer", "Show fewer events", "收起日程", "予定を折りたたむ", "일정 접기", "Afficher moins d’événements"], readonly ["agenda.all", "Show all {count} events", "显示全部 {count} 项日程", "{count} 件の予定をすべて表示", "일정 {count}개 모두 보기", "Afficher les {count} événements"], readonly ["agenda.count", "{count} events", "{count} 项日程", "{count} 件の予定", "일정 {count}개", "{count} événements"], readonly ["pagination.nav", "Pagination", "分页", "ページ切り替え", "페이지 탐색", "Pagination"], readonly ["pagination.first", "First page", "第一页", "最初のページ", "첫 페이지", "Première page"], readonly ["pagination.last", "Last page", "最后一页", "最後のページ", "마지막 페이지", "Dernière page"], readonly ["pagination.page", "Page {page}", "第 {page} 页", "{page} ページ", "{page}페이지", "Page {page}"], readonly ["pagination.more", "More pages", "更多页", "他のページ", "더 많은 페이지", "Autres pages"], readonly ["pagination.pageSize", "Items per page", "每页条数", "1ページの件数", "페이지당 항목 수", "Éléments par page"], readonly ["pagination.pageSizeOption", "{pageSize} / page", "{pageSize} 条 / 页", "{pageSize} 件 / ページ", "페이지당 {pageSize}개", "{pageSize} / page"], readonly ["pagination.status", "Page {page} of {total}", "第 {page} 页,共 {total} 页", "{total} ページ中 {page} ページ", "총 {total}페이지 중 {page}페이지", "Page {page} sur {total}"], readonly ["tabs.more", "More tabs", "更多标签页", "その他のタブ", "더 많은 탭", "Autres onglets"], readonly ["tabs.previous", "Scroll to previous tabs", "滚动到前面的标签页", "前のタブへスクロール", "이전 탭으로 스크롤", "Faire défiler vers les onglets précédents"], readonly ["tabs.next", "Scroll to next tabs", "滚动到后面的标签页", "次のタブへスクロール", "다음 탭으로 스크롤", "Faire défiler vers les onglets suivants"], readonly ["breadcrumb.label", "Breadcrumb", "面包屑导航", "パンくずリスト", "탐색 경로", "Fil d’Ariane"], readonly ["steps.label", "Progress", "进度", "進捗", "진행 상황", "Progression"], readonly ["timeline.label", "Timeline", "时间线", "タイムライン", "타임라인", "Chronologie"], readonly ["toast.close", "Close notification", "关闭通知", "通知を閉じる", "알림 닫기", "Fermer la notification"], readonly ["toast.viewport", "Notifications", "通知", "通知", "알림", "Notifications"], readonly ["alert.dismiss", "Dismiss notification", "关闭提示", "通知を閉じる", "알림 닫기", "Fermer la notification"], readonly ["rating.label", "Rating", "评分", "評価", "평점", "Évaluation"], readonly ["rating.value", "{value} of {count}", "{value} 分,满分 {count} 分", "{count} 点中 {value} 点", "{count}점 중 {value}점", "{value} sur {count}"], readonly ["keypad.label", "Keypad", "输入面板", "キーパッド", "키패드", "Clavier numérique"], readonly ["resizable.label", "Resize panels", "调整面板大小", "パネルのサイズを変更", "패널 크기 조절", "Redimensionner les panneaux"], readonly ["panZoom.label", "Pan and zoom content", "平移和缩放内容", "コンテンツを移動・拡大縮小", "콘텐츠 이동 및 확대/축소", "Déplacer et zoomer le contenu"], readonly ["dockable.move", "Move panel", "移动面板", "パネルを移動", "패널 이동", "Déplacer le panneau"], readonly ["dockable.collapse", "Collapse panel", "收起面板", "パネルを折りたたむ", "패널 접기", "Réduire le panneau"], readonly ["dockable.expand", "Expand panel", "展开面板", "パネルを展開", "패널 펼치기", "Développer le panneau"], readonly ["dockable.reset", "Restore panel position", "恢复面板位置", "パネルの位置を戻す", "패널 위치 복원", "Rétablir la position du panneau"], readonly ["dockable.instructions", "Use the arrow keys to move this panel. Hold Shift for larger steps. Press Home to restore its position.", "使用方向键移动面板,按住 Shift 加速,按 Home 恢复位置。", "矢印キーで移動します。Shift を押すと移動幅が大きくなり、Home で元の位置に戻ります。", "방향키로 패널을 이동합니다. Shift를 누르면 이동 폭이 커지고 Home을 누르면 원래 위치로 돌아갑니다.", "Déplacez le panneau avec les flèches. Maintenez Maj pour un déplacement plus grand. Appuyez sur Début pour rétablir sa position."], readonly ["markdown.code", "Code block", "代码块", "コードブロック", "코드 블록", "Bloc de code"], readonly ["markdown.plain", "Plain text", "纯文本", "プレーンテキスト", "일반 텍스트", "Texte brut"], readonly ["markdown.copy", "Copy code", "复制代码", "コードをコピー", "코드 복사", "Copier le code"], readonly ["markdown.copied", "Code copied", "代码已复制", "コードをコピーしました", "코드 복사됨", "Code copié"], readonly ["markdown.copyFailed", "Copy failed. Select the code to copy it manually.", "复制失败,请选择代码手动复制。", "コピーできませんでした。コードを選択して手動でコピーしてください。", "복사하지 못했습니다. 코드를 선택하여 직접 복사하세요.", "Échec de la copie. Sélectionnez le code pour le copier manuellement."], readonly ["markdown.table", "Markdown table", "Markdown 表格", "Markdown テーブル", "Markdown 표", "Tableau Markdown"], readonly ["markdown.checked", "Completed task", "已完成任务", "完了したタスク", "완료된 작업", "Tâche terminée"], readonly ["markdown.unchecked", "Incomplete task", "未完成任务", "未完了のタスク", "미완료 작업", "Tâche non terminée"], readonly ["color.label", "Color", "颜色", "色", "색상", "Couleur"], readonly ["color.palette", "Open color palette", "打开调色板", "カラーパレットを開く", "색상 팔레트 열기", "Ouvrir la palette de couleurs"], readonly ["color.value", "Color value", "颜色值", "色の値", "색상 값", "Valeur de couleur"], readonly ["color.alpha", "Opacity", "不透明度", "不透明度", "불투명도", "Opacité"], readonly ["color.presets", "Color presets", "颜色预设", "色のプリセット", "색상 프리셋", "Couleurs prédéfinies"], readonly ["gradient.type", "Color type", "颜色类型", "色の種類", "색상 유형", "Type de couleur"], readonly ["gradient.solid", "Solid", "纯色", "単色", "단색", "Uni"], readonly ["gradient.linear", "Linear", "线性渐变", "線形", "선형", "Linéaire"], readonly ["gradient.radial", "Radial", "径向渐变", "放射状", "방사형", "Radial"], readonly ["gradient.conic", "Conic", "锥形渐变", "円錐形", "원뿔형", "Conique"], readonly ["gradient.preview", "Gradient preview", "渐变预览", "グラデーションのプレビュー", "그라데이션 미리 보기", "Aperçu du dégradé"], readonly ["gradient.stops", "Color stops", "色标", "カラーストップ", "색상 중지점", "Points de couleur"], readonly ["gradient.stop", "Stop", "色标", "ストップ", "중지점", "Point"], readonly ["gradient.stopColor", "Stop color", "色标颜色", "ストップの色", "중지점 색상", "Couleur du point"], readonly ["gradient.add", "Add stop", "添加色标", "ストップを追加", "중지점 추가", "Ajouter un point"], readonly ["gradient.remove", "Remove stop", "移除色标", "ストップを削除", "중지점 제거", "Retirer le point"], readonly ["gradient.reverse", "Reverse gradient", "反转渐变", "グラデーションを反転", "그라데이션 반전", "Inverser le dégradé"], readonly ["gradient.position", "Stop position", "色标位置", "ストップの位置", "중지점 위치", "Position du point"], readonly ["gradient.angle", "Angle", "角度", "角度", "각도", "Angle"], readonly ["gradient.centerX", "Center X", "中心 X", "中心 X", "중심 X", "Centre X"], readonly ["gradient.centerY", "Center Y", "中心 Y", "中心 Y", "중심 Y", "Centre Y"], readonly ["hotkey.recordingPrompt", "Press a shortcut...", "请按下组合键…", "ショートカットを入力…", "단축키를 누르세요…", "Saisissez un raccourci…"], readonly ["tagInput.all", "Show all {count} tags", "显示全部 {count} 个标签", "{count} 件のタグをすべて表示", "태그 {count}개 모두 보기", "Afficher les {count} étiquettes"], readonly ["textarea.overLimit", "{count} over limit", "超出 {count} 个字符", "{count} 文字超過", "{count}자 초과", "{count} caractères en trop"], readonly ["textarea.countRemaining", "{count} remaining", "剩余 {count} 个字符", "残り {count} 文字", "{count}자 남음", "{count} caractères restants"], readonly ["table.ascending", "{column}: sorted ascending", "{column}:升序", "{column}:昇順", "{column}: 오름차순 정렬", "{column} : tri croissant"], readonly ["table.descending", "{column}: sorted descending", "{column}:降序", "{column}:降順", "{column}: 내림차순 정렬", "{column} : tri décroissant"], readonly ["video.error", "Video playback could not start.", "无法开始播放视频。", "動画を再生できませんでした。", "동영상을 재생할 수 없습니다.", "Impossible de démarrer la vidéo."], readonly ["map.credits", "Map credits", "地图来源", "地図の出典", "지도 출처", "Crédits de la carte"], readonly ["overflow.more", "More items ({count})", "更多项目({count})", "その他の項目({count})", "항목 더 보기 ({count})", "Autres éléments ({count})"], readonly ["panZoom.instructions", "Use arrow keys to pan, plus or minus to zoom, and 0 to reset.", "使用方向键平移,加减号缩放,按 0 重置。", "矢印キーで移動、プラス・マイナスで拡大縮小、0 でリセットします。", "방향키로 이동하고 더하기/빼기로 확대/축소하며 0으로 초기화합니다.", "Utilisez les flèches pour déplacer, plus ou moins pour zoomer, et 0 pour réinitialiser."], readonly ["panZoom.modifierInstructions", "Use Control or Command with the mouse wheel to zoom. Use arrow keys to pan, plus or minus to zoom, and 0 to reset.", "按住 Control 或 Command 并滚动滚轮缩放。使用方向键平移,加减号缩放,按 0 重置。", "Control または Command とマウスホイールで拡大縮小します。矢印キーで移動、プラス・マイナスで拡大縮小、0 でリセットします。", "Control 또는 Command를 누른 채 마우스 휠로 확대/축소합니다. 방향키로 이동하고 더하기/빼기로 확대/축소하며 0으로 초기화합니다.", "Maintenez Contrôle ou Commande en utilisant la molette pour zoomer. Utilisez les flèches pour déplacer, plus ou moins pour zoomer, et 0 pour réinitialiser."], readonly ["table.unsorted", "{column}: not sorted", "{column}:未排序", "{column}:並べ替えなし", "{column}: 정렬 안 됨", "{column} : non trié"], readonly ["transfer.count", "{selected} selected · {visible}/{total}", "已选 {selected} 项 · {visible}/{total}", "{selected} 件選択済み · {visible}/{total}", "{selected}개 선택됨 · {visible}/{total}", "{selected} sélectionnés · {visible}/{total}"], readonly ["gradient.shape", "Shape", "形状", "形状", "모양", "Forme"], readonly ["gradient.circle", "Circle", "圆形", "円", "원", "Cercle"], readonly ["gradient.ellipse", "Ellipse", "椭圆", "楕円", "타원", "Ellipse"], readonly ["gradient.extent", "Extent", "范围", "範囲", "범위", "Étendue"], readonly ["gradient.closestSide", "Closest side", "最近边", "最も近い辺", "가장 가까운 변", "Côté le plus proche"], readonly ["gradient.closestCorner", "Closest corner", "最近角", "最も近い角", "가장 가까운 모서리", "Coin le plus proche"], readonly ["gradient.farthestSide", "Farthest side", "最远边", "最も遠い辺", "가장 먼 변", "Côté le plus éloigné"], readonly ["gradient.farthestCorner", "Farthest corner", "最远角", "最も遠い角", "가장 먼 모서리", "Coin le plus éloigné"], readonly ["gradient.repeat", "Repeat gradient", "重复渐变", "グラデーションを繰り返す", "그라데이션 반복", "Répéter le dégradé"], readonly ["upload.browse", "Choose files", "选择文件", "ファイルを選択", "파일 선택", "Choisir des fichiers"], readonly ["upload.drop", "or drop files here", "或拖放文件到这里", "またはここにファイルをドロップ", "또는 여기에 파일을 놓으세요", "ou déposez des fichiers ici"], readonly ["upload.upload", "Upload", "上传", "アップロード", "업로드", "Téléverser"], readonly ["upload.uploading", "Uploading", "上传中", "アップロード中", "업로드 중", "Téléversement en cours"], readonly ["upload.success", "Uploaded", "已上传", "アップロード済み", "업로드됨", "Téléversé"], readonly ["upload.failed", "Upload failed", "上传失败", "アップロード失敗", "업로드 실패", "Échec du téléversement"], readonly ["upload.cancelled", "Cancelled", "已取消", "キャンセル済み", "취소됨", "Annulé"], readonly ["upload.rejected", "Files not added", "未添加的文件", "追加されなかったファイル", "추가되지 않은 파일", "Fichiers non ajoutés"], readonly ["upload.acceptError", "This file type is not accepted.", "不支持此文件类型。", "このファイル形式は使用できません。", "지원하지 않는 파일 형식입니다.", "Ce type de fichier n’est pas accepté."], readonly ["upload.sizeError", "File exceeds the {size} limit.", "文件超过 {size} 的大小限制。", "ファイルが {size} の制限を超えています。", "파일이 {size} 제한을 초과했습니다.", "Le fichier dépasse la limite de {size}."], readonly ["upload.countError", "Only {count} files may be selected.", "最多可选择 {count} 个文件。", "選択できるファイルは {count} 件までです。", "파일은 최대 {count}개까지 선택할 수 있습니다.", "Vous pouvez sélectionner au maximum {count} fichiers."], readonly ["upload.countErrorOne", "Only 1 file may be selected.", "最多可选择 1 个文件。", "選択できるファイルは 1 件までです。", "파일은 1개만 선택할 수 있습니다.", "Vous ne pouvez sélectionner qu’un fichier."], readonly ["table.filter", "Filter rows", "筛选行", "行を絞り込む", "행 필터", "Filtrer les lignes"], readonly ["table.loading", "Loading rows", "正在加载行", "行を読み込み中", "행 불러오는 중", "Chargement des lignes"], readonly ["table.empty", "No rows", "暂无数据", "行がありません", "행 없음", "Aucune ligne"], readonly ["table.selectAll", "Select all rows on this page", "选择本页全部行", "このページの全行を選択", "이 페이지의 모든 행 선택", "Sélectionner toutes les lignes de cette page"], readonly ["table.selectRow", "Select row {row}", "选择第 {row} 行", "{row} 行目を選択", "{row}행 선택", "Sélectionner la ligne {row}"], readonly ["table.pagination", "Table pagination", "表格分页", "テーブルのページ切り替え", "표 페이지 탐색", "Pagination du tableau"], readonly ["table.sort", "Sort {column}", "按 {column} 排序", "{column} で並べ替え", "{column} 정렬", "Trier par {column}"], readonly ["table.selection", "{selected} of {total} rows selected", "已选择 {selected} 行,共 {total} 行", "{total} 行中 {selected} 行を選択", "{total}행 중 {selected}행 선택됨", "{selected} lignes sélectionnées sur {total}"], readonly ["log.filters", "Filter log levels", "筛选日志级别", "ログレベルを絞り込む", "로그 수준 필터", "Filtrer les niveaux de journal"], readonly ["log.pause", "Pause automatic follow", "暂停自动跟随", "自動追従を一時停止", "자동 따라가기 일시 정지", "Suspendre le suivi automatique"], readonly ["log.resume", "Resume automatic follow", "恢复自动跟随", "自動追従を再開", "자동 따라가기 재개", "Reprendre le suivi automatique"], readonly ["log.latest", "Go to latest record", "跳转至最新记录", "最新の記録へ移動", "최신 기록으로 이동", "Aller au dernier enregistrement"], readonly ["log.empty", "No records yet", "暂无记录", "記録がありません", "기록 없음", "Aucun enregistrement"], readonly ["log.noMatches", "No records match the selected levels", "没有符合所选级别的记录", "選択したレベルに一致する記録がありません", "선택한 수준과 일치하는 기록 없음", "Aucun enregistrement ne correspond aux niveaux sélectionnés"], readonly ["log.list", "Log records", "日志记录", "ログ記録", "로그 기록", "Enregistrements du journal"], readonly ["radar.series", "Series", "系列", "系列", "계열", "Séries"], readonly ["radar.caption", "Radar data", "雷达图数据", "レーダーチャートのデータ", "레이더 차트 데이터", "Données du radar"], readonly ["radar.empty", "No radar data", "暂无雷达图数据", "レーダーデータがありません", "레이더 데이터 없음", "Aucune donnée radar"], readonly ["heatmap.intensity", "Intensity", "强度", "強度", "강도", "Intensité"], readonly ["heatmap.rows", "Rows", "行", "行", "행", "Lignes"], readonly ["heatmap.empty", "No heatmap data", "暂无热力图数据", "ヒートマップのデータがありません", "히트맵 데이터 없음", "Aucune donnée de carte thermique"], readonly ["sparkline.label", "Sparkline", "迷你图", "スパークライン", "스파크라인", "Mini-graphique"], readonly ["graph.fit", "Fit graph to view", "适配图形到视图", "グラフを表示範囲に合わせる", "그래프를 화면에 맞추기", "Adapter le graphe à la vue"], readonly ["graph.empty", "No nodes yet", "暂无节点", "ノードがありません", "노드 없음", "Aucun nœud"], readonly ["graph.label", "Node graph", "节点图", "ノードグラフ", "노드 그래프", "Graphe de nœuds"], readonly ["map.unavailable", "Map unavailable. Choose a place below.", "地图不可用,请在下方选择地点。", "地図を表示できません。下から場所を選んでください。", "지도를 사용할 수 없습니다. 아래에서 장소를 선택하세요.", "Carte indisponible. Choisissez un lieu ci-dessous."], readonly ["transfer.available", "Available", "可选项", "選択可能", "선택 가능", "Disponible"], readonly ["transfer.sourceSearch", "Search available items", "搜索可选项", "選択可能な項目を検索", "선택 가능한 항목 검색", "Rechercher les éléments disponibles"], readonly ["transfer.targetSearch", "Search selected items", "搜索已选项", "選択済みの項目を検索", "선택한 항목 검색", "Rechercher les éléments sélectionnés"], readonly ["transfer.sourceClear", "Clear available item search", "清除可选项搜索", "選択可能な項目の検索を消去", "선택 가능한 항목 검색 지우기", "Effacer la recherche des éléments disponibles"], readonly ["transfer.targetClear", "Clear selected item search", "清除已选项搜索", "選択済み項目の検索を消去", "선택한 항목 검색 지우기", "Effacer la recherche des éléments sélectionnés"], readonly ["transfer.sourcePlaceholder", "Search available", "搜索可选项", "選択可能な項目を検索", "선택 가능한 항목 검색", "Rechercher les éléments disponibles"], readonly ["transfer.targetPlaceholder", "Search selected", "搜索已选项", "選択済みの項目を検索", "선택한 항목 검색", "Rechercher les éléments sélectionnés"], readonly ["transfer.allSource", "Select all visible available items", "选择全部可见的可选项", "表示中の選択可能な項目をすべて選択", "표시된 선택 가능 항목 모두 선택", "Sélectionner tous les éléments disponibles visibles"], readonly ["transfer.allTarget", "Select all visible selected items", "选择全部可见的已选项", "表示中の選択済み項目をすべて選択", "표시된 선택 항목 모두 선택", "Sélectionner tous les éléments sélectionnés visibles"], readonly ["transfer.sourceEmpty", "No available items", "没有可选项", "選択可能な項目がありません", "선택 가능한 항목 없음", "Aucun élément disponible"], readonly ["transfer.targetEmpty", "No selected items", "没有已选项", "選択済み項目がありません", "선택한 항목 없음", "Aucun élément sélectionné"], readonly ["transfer.sourceNoResults", "No available items match this search", "没有匹配的可选项", "検索に一致する選択可能な項目がありません", "검색과 일치하는 선택 가능 항목 없음", "Aucun élément disponible ne correspond à cette recherche"], readonly ["transfer.targetNoResults", "No selected items match this search", "没有匹配的已选项", "検索に一致する選択済み項目がありません", "검색과 일치하는 선택 항목 없음", "Aucun élément sélectionné ne correspond à cette recherche"], readonly ["transfer.toTarget", "Move to selected", "移到已选", "選択済みへ移動", "선택 항목으로 이동", "Déplacer vers la sélection"], readonly ["transfer.toSource", "Move to available", "移回可选", "選択可能へ戻す", "선택 가능 항목으로 이동", "Remettre dans les éléments disponibles"], readonly ["transfer.selectedToTarget", "Move selected visible items to selected", "将勾选的可见项移到已选", "チェックした表示項目を選択済みへ移動", "체크한 표시 항목을 선택 항목으로 이동", "Déplacer les éléments visibles cochés vers la sélection"], readonly ["transfer.selectedToSource", "Move selected visible items to available", "将勾选的可见项移回可选", "チェックした表示項目を選択可能へ戻す", "체크한 표시 항목을 선택 가능 항목으로 이동", "Remettre les éléments visibles cochés dans les éléments disponibles"], readonly ["transfer.batch", "Transfer selected visible items", "移动勾选的可见项", "チェックした表示項目を移動", "체크한 표시 항목 이동", "Transférer les éléments visibles cochés"], readonly ["audio.controls", "Audio controls", "音频控制", "音声コントロール", "오디오 컨트롤", "Commandes audio"], readonly ["audio.label", "Audio", "音频", "音声", "오디오", "Audio"], readonly ["audio.play", "Play", "播放", "再生", "재생", "Lire"], readonly ["audio.pause", "Pause", "暂停", "一時停止", "일시 정지", "Mettre en pause"], readonly ["audio.mute", "Mute", "静音", "ミュート", "음소거", "Couper le son"], readonly ["audio.unmute", "Unmute", "取消静音", "ミュート解除", "음소거 해제", "Rétablir le son"], readonly ["audio.seek", "Seek", "播放进度", "再生位置", "재생 위치", "Position de lecture"], readonly ["audio.volume", "Volume", "音量", "音量", "음량", "Volume"], readonly ["audio.rate", "Playback speed", "播放速度", "再生速度", "재생 속도", "Vitesse de lecture"], readonly ["audio.loading", "Loading audio", "正在加载音频", "音声を読み込み中", "오디오 불러오는 중", "Chargement de l’audio"], readonly ["audio.blocked", "Playback was blocked. Press play to try again.", "播放被阻止,请点击播放重试。", "再生がブロックされました。再生を押して再試行してください。", "재생이 차단되었습니다. 재생 버튼을 눌러 다시 시도하세요.", "La lecture a été bloquée. Appuyez sur Lire pour réessayer."], readonly ["audio.error", "Audio failed to load.", "音频加载失败。", "音声を読み込めませんでした。", "오디오를 불러오지 못했습니다.", "Impossible de charger l’audio."], readonly ["video.controls", "Video controls", "视频控制", "動画コントロール", "동영상 컨트롤", "Commandes vidéo"], readonly ["video.play", "Play video", "播放视频", "動画を再生", "동영상 재생", "Lire la vidéo"], readonly ["video.pause", "Pause video", "暂停视频", "動画を一時停止", "동영상 일시 정지", "Mettre la vidéo en pause"], readonly ["video.seek", "Seek video", "视频进度", "動画の再生位置", "동영상 재생 위치", "Position de la vidéo"], readonly ["video.mute", "Mute video", "视频静音", "動画をミュート", "동영상 음소거", "Couper le son de la vidéo"], readonly ["video.unmute", "Unmute video", "取消视频静音", "動画のミュートを解除", "동영상 음소거 해제", "Rétablir le son de la vidéo"], readonly ["video.volume", "Video volume", "视频音量", "動画の音量", "동영상 음량", "Volume de la vidéo"], readonly ["carousel.label", "Carousel", "轮播", "カルーセル", "캐러셀", "Carrousel"], readonly ["carousel.previous", "Previous slide", "上一张", "前のスライド", "이전 슬라이드", "Diapositive précédente"], readonly ["carousel.next", "Next slide", "下一张", "次のスライド", "다음 슬라이드", "Diapositive suivante"], readonly ["carousel.pages", "Carousel pages", "轮播分页", "カルーセルのページ", "캐러셀 페이지", "Pages du carrousel"], readonly ["carousel.pause", "Pause autoplay", "暂停自动播放", "自動再生を一時停止", "자동 재생 일시 정지", "Suspendre la lecture automatique"], readonly ["carousel.play", "Play autoplay", "开始自动播放", "自動再生を開始", "자동 재생 시작", "Démarrer la lecture automatique"], readonly ["carousel.slide", "Slide {index} of {total}", "第 {index} 张,共 {total} 张", "{total} 枚中 {index} 枚目", "총 {total}개 중 {index}번째 슬라이드", "Diapositive {index} sur {total}"], readonly ["carousel.page", "Go to page {index} of {total}", "跳转到第 {index} 页,共 {total} 页", "{total} ページ中 {index} ページへ移動", "총 {total}페이지 중 {index}페이지로 이동", "Aller à la page {index} sur {total}"], readonly ["viewer.title", "Image viewer", "图片查看器", "画像ビューアー", "이미지 뷰어", "Visionneuse d’images"], readonly ["viewer.description", "Use the previous and next controls or arrow keys to browse images.", "使用前后按钮或方向键浏览图片。", "前後のボタンまたは矢印キーで画像を切り替えます。", "이전 및 다음 버튼이나 방향키로 이미지를 탐색합니다.", "Utilisez les boutons précédent et suivant ou les flèches pour parcourir les images."], readonly ["viewer.close", "Close image viewer", "关闭图片查看器", "画像ビューアーを閉じる", "이미지 뷰어 닫기", "Fermer la visionneuse"], readonly ["viewer.previous", "Previous image", "上一张图片", "前の画像", "이전 이미지", "Image précédente"], readonly ["viewer.next", "Next image", "下一张图片", "次の画像", "다음 이미지", "Image suivante"], readonly ["viewer.thumbnails", "Image thumbnails", "图片缩略图", "画像のサムネイル", "이미지 미리 보기", "Miniatures des images"], readonly ["viewer.position", "{current} of {total}", "第 {current} 项,共 {total} 项", "{total} 件中 {current} 件目", "총 {total}개 중 {current}번째", "{current} sur {total}"], readonly ["viewer.thumbnail", "Show {label}, {current} of {total}", "查看 {label},第 {current} 项,共 {total} 项", "{label} を表示、{total} 件中 {current} 件目", "{label} 표시, 총 {total}개 중 {current}번째", "Afficher {label}, {current} sur {total}"], readonly ["viewer.failed", "Image unavailable", "图片不可用", "画像を表示できません", "이미지를 사용할 수 없음", "Image indisponible"], readonly ["viewer.failedDescription", "{label} could not be loaded.", "无法加载 {label}。", "{label} を読み込めませんでした。", "{label}을(를) 불러오지 못했습니다.", "Impossible de charger {label}."], readonly ["viewer.reset", "Reset zoom", "重置缩放", "ズームをリセット", "확대/축소 초기화", "Réinitialiser le zoom"], readonly ["viewer.rotate", "Rotate clockwise", "顺时针旋转", "右に回転", "시계 방향 회전", "Tourner dans le sens horaire"], readonly ["viewer.panZoom", "Pan and zoom {label}", "平移和缩放 {label}", "{label} を移動・拡大縮小", "{label} 이동 및 확대/축소", "Déplacer et zoomer {label}"], readonly ["viewer.empty", "No images", "暂无图片", "画像がありません", "이미지 없음", "Aucune image"], readonly ["viewer.emptyDescription", "There are no images to show.", "没有可展示的图片。", "表示する画像がありません。", "표시할 이미지가 없습니다.", "Il n’y a aucune image à afficher."], readonly ["cropper.label", "Image crop area", "图片裁剪区域", "画像の切り抜き範囲", "이미지 자르기 영역", "Zone de recadrage"], readonly ["cropper.instructions", "Use pointer gestures or arrow keys to move the image. Use the zoom control. In free aspect mode, use the size controls or Alt plus arrow keys to resize the crop area.", "使用手势或方向键移动图片,使用缩放控件调整大小。自由比例下可通过尺寸控件或 Alt 加方向键调整裁剪区域。", "ジェスチャーや矢印キーで画像を移動し、ズームで拡大縮小します。自由比率ではサイズ操作または Alt と矢印キーで切り抜き範囲を調整できます。", "제스처 또는 방향키로 이미지를 이동하고 확대/축소 컨트롤을 사용하세요. 자유 비율 모드에서는 크기 컨트롤이나 Alt와 방향키로 자르기 영역을 조절합니다.", "Déplacez l’image avec des gestes ou les flèches, et utilisez le zoom. En mode libre, ajustez la zone avec les commandes de taille ou Alt et les flèches."], readonly ["cropper.loading", "Loading image", "正在加载图片", "画像を読み込み中", "이미지 불러오는 중", "Chargement de l’image"], readonly ["cropper.failedDescription", "The image could not be loaded. Check the source and try again.", "无法加载图片,请检查来源后重试。", "画像を読み込めませんでした。参照先を確認して再試行してください。", "이미지를 불러오지 못했습니다. 주소를 확인하고 다시 시도하세요.", "Impossible de charger l’image. Vérifiez la source et réessayez."], readonly ["cropper.retry", "Retry image", "重新加载图片", "画像を再読み込み", "이미지 다시 불러오기", "Recharger l’image"], readonly ["cropper.zoom", "Zoom", "缩放", "ズーム", "확대/축소", "Zoom"], readonly ["cropper.width", "Crop width", "裁剪宽度", "切り抜き幅", "자르기 너비", "Largeur du recadrage"], readonly ["cropper.height", "Crop height", "裁剪高度", "切り抜き高さ", "자르기 높이", "Hauteur du recadrage"], readonly ["cropper.reset", "Reset crop", "重置裁剪", "切り抜きをリセット", "자르기 초기화", "Réinitialiser le recadrage"], readonly ["cropper.export", "Export crop", "导出裁剪", "切り抜きを書き出す", "자른 이미지 내보내기", "Exporter le recadrage"], readonly ["cropper.exporting", "Exporting crop", "正在导出裁剪", "切り抜きを書き出し中", "자른 이미지 내보내는 중", "Exportation du recadrage"], readonly ["inventoryGrid.instructions", "Press Space or Enter to pick up. Arrow keys move one cell, R rotates, Page Up or Page Down switches containers. Space or Enter drops; Escape cancels.", "按空格或 Enter 拿起,方向键逐格移动,R 旋转,Page Up 或 Page Down 切换背包。空格或 Enter 放下,Escape 取消。", "Space または Enter でつかみ、矢印キーで移動、R で回転、Page Up または Page Down でコンテナーを切り替えます。Space または Enter で配置、Escape でキャンセルします。", "Space 또는 Enter로 집고 방향키로 이동합니다. R로 회전하고 Page Up 또는 Page Down으로 보관함을 바꿉니다. Space 또는 Enter로 놓고 Escape로 취소합니다.", "Espace ou Entrée pour saisir, flèches pour déplacer, R pour tourner, Page précédente ou suivante pour changer de conteneur. Espace ou Entrée pour déposer, Échap pour annuler."], readonly ["inventoryGrid.rotate", "Rotate item", "旋转物品", "アイテムを回転", "물품 회전", "Tourner l’objet"], readonly ["inventoryGrid.pickedUp", "Picked up {item}.", "已拾取 {item}。", "{item} をつかみました。", "{item}을(를) 집었습니다.", "{item} saisi."], readonly ["inventoryGrid.position", "{item}, {container}, column {column}, row {row}, {rotation} degrees.", "{item},{container},第 {column} 列、第 {row} 行,{rotation} 度。", "{item}、{container}、{column} 列、{row} 行、{rotation} 度。", "{item}, {container}, {column}열, {row}행, {rotation}도.", "{item}, {container}, colonne {column}, ligne {row}, {rotation} degrés."], readonly ["inventoryGrid.invalid", "Cannot place here.", "此位置无法放置。", "ここには配置できません。", "여기에 놓을 수 없습니다.", "Placement impossible ici."], readonly ["inventoryGrid.requested", "Move requested for {item}.", "已请求移动 {item}。", "{item} の移動をリクエストしました。", "{item} 이동을 요청했습니다.", "Déplacement de {item} demandé."], readonly ["inventoryGrid.cancelled", "Move cancelled for {item}.", "已取消移动 {item}。", "{item} の移動をキャンセルしました。", "{item} 이동을 취소했습니다.", "Déplacement de {item} annulé."], readonly ["sortable.handle", "Drag item", "拖动项目", "項目をドラッグ", "항목 끌기", "Faire glisser l’élément"], readonly ["sortable.instructions", "Press Space or Enter to pick up an item. Use the arrow keys to move it, Space or Enter to drop it, and Escape to cancel.", "按空格或 Enter 拿起项目,用方向键移动,再按空格或 Enter 放下,按 Escape 取消。", "Space または Enter で項目をつかみ、矢印キーで移動します。Space または Enter で配置し、Escape でキャンセルします。", "Space 또는 Enter로 항목을 선택하고 방향키로 이동합니다. Space 또는 Enter로 놓고 Escape로 취소합니다.", "Appuyez sur Espace ou Entrée pour saisir un élément, utilisez les flèches pour le déplacer, Espace ou Entrée pour le déposer et Échap pour annuler."], readonly ["sortable.pickedUp", "Picked up {item}, item {position} of {count} in {container}.", "已拿起 {item},位于 {container} 的第 {position} 项,共 {count} 项。", "{item} をつかみました。{container} の {count} 件中 {position} 件目です。", "{item} 선택됨. {container}의 {count}개 중 {position}번째 항목입니다.", "{item} saisi, élément {position} sur {count} dans {container}."], readonly ["sortable.movedOver", "{item} is over position {position} of {count} in {container}.", "{item} 已移至 {container} 的第 {position} 个位置,共 {count} 项。", "{item} は {container} の {count} 件中 {position} 番目の位置にあります。", "{item}은(는) {container}의 {count}개 중 {position}번째 위치에 있습니다.", "{item} se trouve à la position {position} sur {count} dans {container}."], readonly ["sortable.dropped", "Dropped {item} at position {position} of {count} in {container}.", "已将 {item} 放在 {container} 的第 {position} 个位置,共 {count} 项。", "{item} を {container} の {count} 件中 {position} 番目に配置しました。", "{item}을(를) {container}의 {count}개 중 {position}번째 위치에 놓았습니다.", "{item} déposé à la position {position} sur {count} dans {container}."], readonly ["sortable.cancelled", "Sorting cancelled. {item} returned to its original position.", "已取消排序,{item} 返回原位。", "並べ替えをキャンセルしました。{item} は元の位置に戻りました。", "정렬이 취소되었습니다. {item}이(가) 원래 위치로 돌아갔습니다.", "Tri annulé. {item} a retrouvé sa position initiale."]];
1
+ export declare const messageRows: readonly [readonly ["color.invalid", "Use #RGB, #RGBA, #RRGGBB, or #RRGGBBAA.", "请使用 #RGB、#RGBA、#RRGGBB 或 #RRGGBBAA。", "#RGB、#RGBA、#RRGGBB、#RRGGBBAA のいずれかを入力してください。", "#RGB, #RGBA, #RRGGBB 또는 #RRGGBBAA를 입력하세요.", "Utilisez #RGB, #RGBA, #RRGGBB ou #RRGGBBAA."], readonly ["editable.invalid", "Value is invalid", "内容无效", "値が無効です", "잘못된 값입니다", "Valeur non valide"], readonly ["rangeSlider.minimum", "Minimum value", "最小值", "最小値", "최솟값", "Valeur minimale"], readonly ["rangeSlider.maximum", "Maximum value", "最大值", "最大値", "최댓값", "Valeur maximale"], readonly ["sparkline.empty", "No data", "暂无数据", "データがありません", "데이터 없음", "Aucune donnée"], readonly ["sparkline.summary", "Current {current}, min {minimum}, max {maximum}", "当前 {current},最小 {minimum},最大 {maximum}", "現在 {current}、最小 {minimum}、最大 {maximum}", "현재 {current}, 최솟값 {minimum}, 최댓값 {maximum}", "Actuel {current}, min {minimum}, max {maximum}"], readonly ["sparkline.point", "Point {index}: {value}", "第 {index} 点:{value}", "点 {index}:{value}", "지점 {index}: {value}", "Point {index} : {value}"], readonly ["sparkline.missing", "Point {index}: missing", "第 {index} 点:缺失", "点 {index}:欠損", "지점 {index}: 누락", "Point {index} : manquant"], readonly ["common.clear", "Clear", "清空", "消去", "지우기", "Effacer"], readonly ["map.label", "Map", "地图", "地図", "지도", "Carte"], readonly ["graph.nodeInstructions", "Press enter or space to select a node. Press delete to remove it and escape to cancel.", "按 Enter 或空格选择节点,按 Delete 删除,按 Escape 取消。", "Enter または Space でノードを選択し、Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 노드를 선택하고 Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un nœud, Suppr pour le supprimer et Échap pour annuler."], readonly ["graph.nodeMoveInstructions", "Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.", "按 Enter 或空格选择节点,使用方向键移动,按 Delete 删除,按 Escape 取消。", "Enter または Space でノードを選択し、矢印キーで移動します。Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 노드를 선택하고 방향키로 이동합니다. Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un nœud, puis utilisez les flèches pour le déplacer. Suppr le supprime et Échap annule."], readonly ["graph.nodeMoved", "Moved selected node. New position, x: {x}, y: {y}", "已移动所选节点。新位置:x {x},y {y}", "選択したノードを移動しました。新しい位置:x {x}、y {y}", "선택한 노드가 이동했습니다. 새 위치: x {x}, y {y}", "Nœud sélectionné déplacé. Nouvelle position : x {x}, y {y}"], readonly ["graph.edgeInstructions", "Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.", "按 Enter 或空格选择连线,按 Delete 删除,按 Escape 取消。", "Enter または Space でエッジを選択し、Delete で削除、Escape でキャンセルします。", "Enter 또는 Space로 연결선을 선택하고 Delete로 삭제하거나 Escape로 취소하세요.", "Appuyez sur Entrée ou Espace pour sélectionner un lien, Suppr pour le supprimer ou Échap pour annuler."], readonly ["graph.handle", "Handle", "连接点", "接続点", "연결점", "Point de connexion"], readonly ["switch.on", "On", "开", "オン", "켜짐", "Oui"], readonly ["switch.off", "Off", "关", "オフ", "꺼짐", "Non"], readonly ["common.close", "Close", "关闭", "閉じる", "닫기", "Fermer"], readonly ["common.cancel", "Cancel", "取消", "キャンセル", "취소", "Annuler"], readonly ["common.save", "Save", "保存", "保存", "저장", "Enregistrer"], readonly ["common.apply", "Apply", "确定", "適用", "적용", "Appliquer"], readonly ["common.retry", "Retry", "重试", "再試行", "다시 시도", "Réessayer"], readonly ["common.remove", "Remove", "移除", "削除", "제거", "Retirer"], readonly ["common.all", "All", "全部", "すべて", "전체", "Tout"], readonly ["common.selected", "Selected", "已选择", "選択済み", "선택됨", "Sélectionné"], readonly ["common.noItems", "No items", "暂无内容", "項目がありません", "항목 없음", "Aucun élément"], readonly ["common.previousPage", "Previous page", "上一页", "前のページ", "이전 페이지", "Page précédente"], readonly ["common.nextPage", "Next page", "下一页", "次のページ", "다음 페이지", "Page suivante"], readonly ["guide.previous", "Previous", "上一步", "前へ", "이전", "Précédent"], readonly ["guide.next", "Next", "下一步", "次へ", "다음", "Suivant"], readonly ["guide.finish", "Finish", "完成", "完了", "완료", "Terminer"], readonly ["guide.skip", "Skip tour", "跳过引导", "ツアーをスキップ", "둘러보기 건너뛰기", "Ignorer la visite"], readonly ["guide.close", "Close guide", "关闭引导", "ガイドを閉じる", "가이드 닫기", "Fermer le guide"], readonly ["guide.progress", "Step {current} of {total}", "第 {current} 步,共 {total} 步", "{total} ステップ中 {current}", "총 {total}단계 중 {current}단계", "Étape {current} sur {total}"], readonly ["common.zoomIn", "Zoom in", "放大", "拡大", "확대", "Agrandir"], readonly ["common.zoomOut", "Zoom out", "缩小", "縮小", "축소", "Réduire"], readonly ["common.resetView", "Reset view", "重置视图", "表示をリセット", "보기 초기화", "Réinitialiser la vue"], readonly ["common.missing", "Missing", "缺失", "欠損", "누락", "Manquant"], readonly ["input.clear", "Clear input", "清空输入", "入力を消去", "입력 지우기", "Effacer la saisie"], readonly ["input.showPassword", "Show password", "显示密码", "パスワードを表示", "비밀번호 표시", "Afficher le mot de passe"], readonly ["input.hidePassword", "Hide password", "隐藏密码", "パスワードを非表示", "비밀번호 숨기기", "Masquer le mot de passe"], readonly ["inputNumber.decrease", "Decrease value", "减小数值", "値を減らす", "값 줄이기", "Diminuer la valeur"], readonly ["inputNumber.increase", "Increase value", "增大数值", "値を増やす", "값 늘리기", "Augmenter la valeur"], readonly ["textarea.resize", "Resize text area", "调整文本框大小", "テキストエリアのサイズを変更", "텍스트 영역 크기 조절", "Redimensionner la zone de texte"], readonly ["textarea.remaining", "{count} characters remaining", "还可输入 {count} 个字符", "残り {count} 文字", "{count}자 남음", "{count} caractères restants"], readonly ["select.placeholder", "Select an option", "请选择选项", "選択してください", "옵션 선택", "Sélectionner une option"], readonly ["select.search", "Search options", "搜索选项", "選択肢を検索", "옵션 검색", "Rechercher une option"], readonly ["select.empty", "No matching options", "没有匹配的选项", "一致する選択肢がありません", "일치하는 옵션 없음", "Aucune option correspondante"], readonly ["select.clear", "Clear selection", "清空选择", "選択を解除", "선택 지우기", "Effacer la sélection"], readonly ["select.open", "Show options", "显示选项", "選択肢を表示", "옵션 표시", "Afficher les options"], readonly ["select.previous", "Select previous option", "选择上一个选项", "前の選択肢を選択", "이전 옵션 선택", "Sélectionner l’option précédente"], readonly ["select.next", "Select next option", "选择下一个选项", "次の選択肢を選択", "다음 옵션 선택", "Sélectionner l’option suivante"], readonly ["treeSelect.placeholder", "Select an item", "请选择项目", "項目を選択", "항목 선택", "Sélectionner un élément"], readonly ["treeSelect.search", "Search tree", "搜索树节点", "ツリーを検索", "트리 검색", "Rechercher dans l’arbre"], readonly ["treeSelect.empty", "No matching items", "没有匹配的项目", "一致する項目がありません", "일치하는 항목 없음", "Aucun élément correspondant"], readonly ["treeSelect.options", "Tree options", "树选项", "ツリーの選択肢", "트리 옵션", "Options de l’arbre"], readonly ["tree.expand", "Expand item", "展开项目", "項目を展開", "항목 펼치기", "Développer l’élément"], readonly ["tree.collapse", "Collapse item", "收起项目", "項目を折りたたむ", "항목 접기", "Réduire l’élément"], readonly ["hotkey.clear", "Clear shortcut", "清除快捷键", "ショートカットを消去", "단축키 지우기", "Effacer le raccourci"], readonly ["hotkey.conflict", "Shortcut already assigned", "快捷键已被占用", "このショートカットは使用中です", "이미 지정된 단축키", "Raccourci déjà attribué"], readonly ["hotkey.placeholder", "Press shortcut", "请按下快捷键", "ショートカットを入力", "단축키를 누르세요", "Saisir un raccourci"], readonly ["hotkey.recording", "Recording shortcut", "正在录入快捷键", "ショートカットを記録中", "단축키 기록 중", "Enregistrement du raccourci"], readonly ["editable.edit", "Edit value", "编辑内容", "値を編集", "값 편집", "Modifier la valeur"], readonly ["editable.failed", "Could not save value", "无法保存内容", "保存できませんでした", "값을 저장할 수 없습니다", "Impossible d’enregistrer la valeur"], readonly ["tagInput.list", "Selected tags", "已选标签", "選択済みタグ", "선택한 태그", "Étiquettes sélectionnées"], readonly ["tagInput.clear", "Clear all tags", "清空全部标签", "すべてのタグを削除", "모든 태그 지우기", "Effacer toutes les étiquettes"], readonly ["tagInput.fewer", "Show fewer tags", "收起标签", "タグを折りたたむ", "태그 접기", "Afficher moins d’étiquettes"], readonly ["tagInput.more", "Show {count} more tags", "显示另外 {count} 个标签", "他の {count} 件のタグを表示", "태그 {count}개 더 보기", "Afficher {count} étiquettes de plus"], readonly ["tagInput.remove", "Remove {label}", "移除 {label}", "{label} を削除", "{label} 제거", "Retirer {label}"], readonly ["tagInput.duplicate", "{label} is already added.", "{label} 已添加。", "{label} は追加済みです。", "{label}은(는) 이미 추가되었습니다.", "{label} a déjà été ajouté."], readonly ["tagInput.maximum", "You can add up to {count} tags.", "最多可添加 {count} 个标签。", "タグは {count} 件まで追加できます。", "태그는 최대 {count}개까지 추가할 수 있습니다.", "Vous pouvez ajouter jusqu’à {count} étiquettes."], readonly ["tagInput.invalid", "{label} is not a valid tag.", "{label} 不是有效标签。", "{label} は有効なタグではありません。", "{label}은(는) 유효한 태그가 아닙니다.", "{label} n’est pas une étiquette valide."], readonly ["datePicker.calendar", "Choose date", "选择日期", "日付を選択", "날짜 선택", "Choisir une date"], readonly ["datePicker.placeholder", "Choose a date", "选择日期", "日付を選択", "날짜 선택", "Choisir une date"], readonly ["datePicker.range", "Choose a date range", "选择日期范围", "期間を選択", "날짜 범위 선택", "Choisir une période"], readonly ["datePicker.clear", "Clear date", "清空日期", "日付を消去", "날짜 지우기", "Effacer la date"], readonly ["datePicker.open", "Open date picker", "打开日期选择器", "日付選択を開く", "날짜 선택기 열기", "Ouvrir le sélecteur de date"], readonly ["datePicker.previous", "Previous month", "上个月", "前の月", "이전 달", "Mois précédent"], readonly ["datePicker.next", "Next month", "下个月", "次の月", "다음 달", "Mois suivant"], readonly ["datePicker.selected", "selected", "已选择", "選択済み", "선택됨", "sélectionné"], readonly ["datePicker.today", "today", "今天", "今日", "오늘", "aujourd’hui"], readonly ["timePicker.title", "Choose time", "选择时间", "時刻を選択", "시간 선택", "Choisir une heure"], readonly ["timePicker.hour", "Hour", "时", "時", "시", "Heure"], readonly ["timePicker.minute", "Minute", "分", "分", "분", "Minute"], readonly ["timePicker.second", "Second", "秒", "秒", "초", "Seconde"], readonly ["timePicker.period", "Period", "时段", "時間帯", "시간대", "Période"], readonly ["timePicker.am", "AM", "上午", "午前", "오전", "AM"], readonly ["timePicker.pm", "PM", "下午", "午後", "오후", "PM"], readonly ["timePicker.clear", "Clear time", "清空时间", "時刻を消去", "시간 지우기", "Effacer l’heure"], readonly ["timePicker.invalid", "Choose a time within the allowed range and step.", "请选择符合时间范围和步进的时间。", "指定された範囲と間隔に合う時刻を選択してください。", "허용된 범위와 간격에 맞는 시간을 선택하세요.", "Choisissez une heure respectant la plage et le pas autorisés."], readonly ["agenda.empty", "No events", "暂无日程", "予定がありません", "일정 없음", "Aucun événement"], readonly ["agenda.pending", "Time pending", "时间待定", "時刻未定", "시간 미정", "Horaire à définir"], readonly ["agenda.previous", "Previous day", "前一天", "前の日", "이전 날", "Jour précédent"], readonly ["agenda.next", "Next day", "后一天", "次の日", "다음 날", "Jour suivant"], readonly ["agenda.fewer", "Show fewer events", "收起日程", "予定を折りたたむ", "일정 접기", "Afficher moins d’événements"], readonly ["agenda.all", "Show all {count} events", "显示全部 {count} 项日程", "{count} 件の予定をすべて表示", "일정 {count}개 모두 보기", "Afficher les {count} événements"], readonly ["agenda.count", "{count} events", "{count} 项日程", "{count} 件の予定", "일정 {count}개", "{count} événements"], readonly ["pagination.nav", "Pagination", "分页", "ページ切り替え", "페이지 탐색", "Pagination"], readonly ["pagination.first", "First page", "第一页", "最初のページ", "첫 페이지", "Première page"], readonly ["pagination.last", "Last page", "最后一页", "最後のページ", "마지막 페이지", "Dernière page"], readonly ["pagination.page", "Page {page}", "第 {page} 页", "{page} ページ", "{page}페이지", "Page {page}"], readonly ["pagination.more", "More pages", "更多页", "他のページ", "더 많은 페이지", "Autres pages"], readonly ["pagination.pageSize", "Items per page", "每页条数", "1ページの件数", "페이지당 항목 수", "Éléments par page"], readonly ["pagination.pageSizeOption", "{pageSize} / page", "{pageSize} 条 / 页", "{pageSize} 件 / ページ", "페이지당 {pageSize}개", "{pageSize} / page"], readonly ["pagination.status", "Page {page} of {total}", "第 {page} 页,共 {total} 页", "{total} ページ中 {page} ページ", "총 {total}페이지 중 {page}페이지", "Page {page} sur {total}"], readonly ["tabs.more", "More tabs", "更多标签页", "その他のタブ", "더 많은 탭", "Autres onglets"], readonly ["tabs.previous", "Scroll to previous tabs", "滚动到前面的标签页", "前のタブへスクロール", "이전 탭으로 스크롤", "Faire défiler vers les onglets précédents"], readonly ["tabs.next", "Scroll to next tabs", "滚动到后面的标签页", "次のタブへスクロール", "다음 탭으로 스크롤", "Faire défiler vers les onglets suivants"], readonly ["breadcrumb.label", "Breadcrumb", "面包屑导航", "パンくずリスト", "탐색 경로", "Fil d’Ariane"], readonly ["steps.label", "Progress", "进度", "進捗", "진행 상황", "Progression"], readonly ["timeline.label", "Timeline", "时间线", "タイムライン", "타임라인", "Chronologie"], readonly ["toast.close", "Close notification", "关闭通知", "通知を閉じる", "알림 닫기", "Fermer la notification"], readonly ["toast.viewport", "Notifications", "通知", "通知", "알림", "Notifications"], readonly ["alert.dismiss", "Dismiss notification", "关闭提示", "通知を閉じる", "알림 닫기", "Fermer la notification"], readonly ["rating.label", "Rating", "评分", "評価", "평점", "Évaluation"], readonly ["rating.value", "{value} of {count}", "{value} 分,满分 {count} 分", "{count} 点中 {value} 点", "{count}점 중 {value}점", "{value} sur {count}"], readonly ["keypad.label", "Keypad", "输入面板", "キーパッド", "키패드", "Clavier numérique"], readonly ["resizable.label", "Resize panels", "调整面板大小", "パネルのサイズを変更", "패널 크기 조절", "Redimensionner les panneaux"], readonly ["panZoom.label", "Pan and zoom content", "平移和缩放内容", "コンテンツを移動・拡大縮小", "콘텐츠 이동 및 확대/축소", "Déplacer et zoomer le contenu"], readonly ["dockable.move", "Move panel", "移动面板", "パネルを移動", "패널 이동", "Déplacer le panneau"], readonly ["dockable.collapse", "Collapse panel", "收起面板", "パネルを折りたたむ", "패널 접기", "Réduire le panneau"], readonly ["dockable.expand", "Expand panel", "展开面板", "パネルを展開", "패널 펼치기", "Développer le panneau"], readonly ["dockable.reset", "Restore panel position", "恢复面板位置", "パネルの位置を戻す", "패널 위치 복원", "Rétablir la position du panneau"], readonly ["dockable.instructions", "Use the arrow keys to move this panel. Hold Shift for larger steps. Press Home to restore its position.", "使用方向键移动面板,按住 Shift 加速,按 Home 恢复位置。", "矢印キーで移動します。Shift を押すと移動幅が大きくなり、Home で元の位置に戻ります。", "방향키로 패널을 이동합니다. Shift를 누르면 이동 폭이 커지고 Home을 누르면 원래 위치로 돌아갑니다.", "Déplacez le panneau avec les flèches. Maintenez Maj pour un déplacement plus grand. Appuyez sur Début pour rétablir sa position."], readonly ["markdown.code", "Code block", "代码块", "コードブロック", "코드 블록", "Bloc de code"], readonly ["markdown.plain", "Plain text", "纯文本", "プレーンテキスト", "일반 텍스트", "Texte brut"], readonly ["markdown.copy", "Copy code", "复制代码", "コードをコピー", "코드 복사", "Copier le code"], readonly ["markdown.copied", "Code copied", "代码已复制", "コードをコピーしました", "코드 복사됨", "Code copié"], readonly ["markdown.copyFailed", "Copy failed. Select the code to copy it manually.", "复制失败,请选择代码手动复制。", "コピーできませんでした。コードを選択して手動でコピーしてください。", "복사하지 못했습니다. 코드를 선택하여 직접 복사하세요.", "Échec de la copie. Sélectionnez le code pour le copier manuellement."], readonly ["markdown.table", "Markdown table", "Markdown 表格", "Markdown テーブル", "Markdown 표", "Tableau Markdown"], readonly ["markdown.checked", "Completed task", "已完成任务", "完了したタスク", "완료된 작업", "Tâche terminée"], readonly ["markdown.unchecked", "Incomplete task", "未完成任务", "未完了のタスク", "미완료 작업", "Tâche non terminée"], readonly ["color.label", "Color", "颜色", "色", "색상", "Couleur"], readonly ["color.palette", "Open color palette", "打开调色板", "カラーパレットを開く", "색상 팔레트 열기", "Ouvrir la palette de couleurs"], readonly ["color.value", "Color value", "颜色值", "色の値", "색상 값", "Valeur de couleur"], readonly ["color.alpha", "Opacity", "不透明度", "不透明度", "불투명도", "Opacité"], readonly ["color.presets", "Color presets", "颜色预设", "色のプリセット", "색상 프리셋", "Couleurs prédéfinies"], readonly ["gradient.type", "Color type", "颜色类型", "色の種類", "색상 유형", "Type de couleur"], readonly ["gradient.solid", "Solid", "纯色", "単色", "단색", "Uni"], readonly ["gradient.linear", "Linear", "线性渐变", "線形", "선형", "Linéaire"], readonly ["gradient.radial", "Radial", "径向渐变", "放射状", "방사형", "Radial"], readonly ["gradient.conic", "Conic", "锥形渐变", "円錐形", "원뿔형", "Conique"], readonly ["gradient.preview", "Gradient preview", "渐变预览", "グラデーションのプレビュー", "그라데이션 미리 보기", "Aperçu du dégradé"], readonly ["gradient.stops", "Color stops", "色标", "カラーストップ", "색상 중지점", "Points de couleur"], readonly ["gradient.stop", "Stop", "色标", "ストップ", "중지점", "Point"], readonly ["gradient.stopColor", "Stop color", "色标颜色", "ストップの色", "중지점 색상", "Couleur du point"], readonly ["gradient.add", "Add stop", "添加色标", "ストップを追加", "중지점 추가", "Ajouter un point"], readonly ["gradient.remove", "Remove stop", "移除色标", "ストップを削除", "중지점 제거", "Retirer le point"], readonly ["gradient.reverse", "Reverse gradient", "反转渐变", "グラデーションを反転", "그라데이션 반전", "Inverser le dégradé"], readonly ["gradient.position", "Stop position", "色标位置", "ストップの位置", "중지점 위치", "Position du point"], readonly ["gradient.angle", "Angle", "角度", "角度", "각도", "Angle"], readonly ["gradient.centerX", "Center X", "中心 X", "中心 X", "중심 X", "Centre X"], readonly ["gradient.centerY", "Center Y", "中心 Y", "中心 Y", "중심 Y", "Centre Y"], readonly ["hotkey.recordingPrompt", "Press a shortcut...", "请按下组合键…", "ショートカットを入力…", "단축키를 누르세요…", "Saisissez un raccourci…"], readonly ["tagInput.all", "Show all {count} tags", "显示全部 {count} 个标签", "{count} 件のタグをすべて表示", "태그 {count}개 모두 보기", "Afficher les {count} étiquettes"], readonly ["textarea.overLimit", "{count} over limit", "超出 {count} 个字符", "{count} 文字超過", "{count}자 초과", "{count} caractères en trop"], readonly ["textarea.countRemaining", "{count} remaining", "剩余 {count} 个字符", "残り {count} 文字", "{count}자 남음", "{count} caractères restants"], readonly ["table.ascending", "{column}: sorted ascending", "{column}:升序", "{column}:昇順", "{column}: 오름차순 정렬", "{column} : tri croissant"], readonly ["table.descending", "{column}: sorted descending", "{column}:降序", "{column}:降順", "{column}: 내림차순 정렬", "{column} : tri décroissant"], readonly ["video.error", "Video playback could not start.", "无法开始播放视频。", "動画を再生できませんでした。", "동영상을 재생할 수 없습니다.", "Impossible de démarrer la vidéo."], readonly ["map.credits", "Map credits", "地图来源", "地図の出典", "지도 출처", "Crédits de la carte"], readonly ["overflow.more", "More items ({count})", "更多项目({count})", "その他の項目({count})", "항목 더 보기 ({count})", "Autres éléments ({count})"], readonly ["panZoom.instructions", "Use arrow keys to pan, plus or minus to zoom, and 0 to reset.", "使用方向键平移,加减号缩放,按 0 重置。", "矢印キーで移動、プラス・マイナスで拡大縮小、0 でリセットします。", "방향키로 이동하고 더하기/빼기로 확대/축소하며 0으로 초기화합니다.", "Utilisez les flèches pour déplacer, plus ou moins pour zoomer, et 0 pour réinitialiser."], readonly ["panZoom.modifierInstructions", "Use Control or Command with the mouse wheel to zoom. Use arrow keys to pan, plus or minus to zoom, and 0 to reset.", "按住 Control 或 Command 并滚动滚轮缩放。使用方向键平移,加减号缩放,按 0 重置。", "Control または Command とマウスホイールで拡大縮小します。矢印キーで移動、プラス・マイナスで拡大縮小、0 でリセットします。", "Control 또는 Command를 누른 채 마우스 휠로 확대/축소합니다. 방향키로 이동하고 더하기/빼기로 확대/축소하며 0으로 초기화합니다.", "Maintenez Contrôle ou Commande en utilisant la molette pour zoomer. Utilisez les flèches pour déplacer, plus ou moins pour zoomer, et 0 pour réinitialiser."], readonly ["table.unsorted", "{column}: not sorted", "{column}:未排序", "{column}:並べ替えなし", "{column}: 정렬 안 됨", "{column} : non trié"], readonly ["transfer.count", "{selected} selected · {visible}/{total}", "已选 {selected} 项 · {visible}/{total}", "{selected} 件選択済み · {visible}/{total}", "{selected}개 선택됨 · {visible}/{total}", "{selected} sélectionnés · {visible}/{total}"], readonly ["gradient.shape", "Shape", "形状", "形状", "모양", "Forme"], readonly ["gradient.circle", "Circle", "圆形", "円", "원", "Cercle"], readonly ["gradient.ellipse", "Ellipse", "椭圆", "楕円", "타원", "Ellipse"], readonly ["gradient.extent", "Extent", "范围", "範囲", "범위", "Étendue"], readonly ["gradient.closestSide", "Closest side", "最近边", "最も近い辺", "가장 가까운 변", "Côté le plus proche"], readonly ["gradient.closestCorner", "Closest corner", "最近角", "最も近い角", "가장 가까운 모서리", "Coin le plus proche"], readonly ["gradient.farthestSide", "Farthest side", "最远边", "最も遠い辺", "가장 먼 변", "Côté le plus éloigné"], readonly ["gradient.farthestCorner", "Farthest corner", "最远角", "最も遠い角", "가장 먼 모서리", "Coin le plus éloigné"], readonly ["gradient.repeat", "Repeat gradient", "重复渐变", "グラデーションを繰り返す", "그라데이션 반복", "Répéter le dégradé"], readonly ["upload.browse", "Choose files", "选择文件", "ファイルを選択", "파일 선택", "Choisir des fichiers"], readonly ["upload.drop", "or drop files here", "或拖放文件到这里", "またはここにファイルをドロップ", "또는 여기에 파일을 놓으세요", "ou déposez des fichiers ici"], readonly ["upload.upload", "Upload", "上传", "アップロード", "업로드", "Téléverser"], readonly ["upload.uploading", "Uploading", "上传中", "アップロード中", "업로드 중", "Téléversement en cours"], readonly ["upload.success", "Uploaded", "已上传", "アップロード済み", "업로드됨", "Téléversé"], readonly ["upload.failed", "Upload failed", "上传失败", "アップロード失敗", "업로드 실패", "Échec du téléversement"], readonly ["upload.cancelled", "Cancelled", "已取消", "キャンセル済み", "취소됨", "Annulé"], readonly ["upload.rejected", "Files not added", "未添加的文件", "追加されなかったファイル", "추가되지 않은 파일", "Fichiers non ajoutés"], readonly ["upload.acceptError", "This file type is not accepted.", "不支持此文件类型。", "このファイル形式は使用できません。", "지원하지 않는 파일 형식입니다.", "Ce type de fichier n’est pas accepté."], readonly ["upload.sizeError", "File exceeds the {size} limit.", "文件超过 {size} 的大小限制。", "ファイルが {size} の制限を超えています。", "파일이 {size} 제한을 초과했습니다.", "Le fichier dépasse la limite de {size}."], readonly ["upload.countError", "Only {count} files may be selected.", "最多可选择 {count} 个文件。", "選択できるファイルは {count} 件までです。", "파일은 최대 {count}개까지 선택할 수 있습니다.", "Vous pouvez sélectionner au maximum {count} fichiers."], readonly ["upload.countErrorOne", "Only 1 file may be selected.", "最多可选择 1 个文件。", "選択できるファイルは 1 件までです。", "파일은 1개만 선택할 수 있습니다.", "Vous ne pouvez sélectionner qu’un fichier."], readonly ["table.filter", "Filter rows", "筛选行", "行を絞り込む", "행 필터", "Filtrer les lignes"], readonly ["table.loading", "Loading rows", "正在加载行", "行を読み込み中", "행 불러오는 중", "Chargement des lignes"], readonly ["table.empty", "No rows", "暂无数据", "行がありません", "행 없음", "Aucune ligne"], readonly ["table.selectAll", "Select all rows on this page", "选择本页全部行", "このページの全行を選択", "이 페이지의 모든 행 선택", "Sélectionner toutes les lignes de cette page"], readonly ["table.selectRow", "Select row {row}", "选择第 {row} 行", "{row} 行目を選択", "{row}행 선택", "Sélectionner la ligne {row}"], readonly ["table.pagination", "Table pagination", "表格分页", "テーブルのページ切り替え", "표 페이지 탐색", "Pagination du tableau"], readonly ["table.sort", "Sort {column}", "按 {column} 排序", "{column} で並べ替え", "{column} 정렬", "Trier par {column}"], readonly ["table.selection", "{selected} of {total} rows selected", "已选择 {selected} 行,共 {total} 行", "{total} 行中 {selected} 行を選択", "{total}행 중 {selected}행 선택됨", "{selected} lignes sélectionnées sur {total}"], readonly ["log.filters", "Filter log levels", "筛选日志级别", "ログレベルを絞り込む", "로그 수준 필터", "Filtrer les niveaux de journal"], readonly ["log.pause", "Pause automatic follow", "暂停自动跟随", "自動追従を一時停止", "자동 따라가기 일시 정지", "Suspendre le suivi automatique"], readonly ["log.resume", "Resume automatic follow", "恢复自动跟随", "自動追従を再開", "자동 따라가기 재개", "Reprendre le suivi automatique"], readonly ["log.latest", "Go to latest record", "跳转至最新记录", "最新の記録へ移動", "최신 기록으로 이동", "Aller au dernier enregistrement"], readonly ["log.empty", "No records yet", "暂无记录", "記録がありません", "기록 없음", "Aucun enregistrement"], readonly ["log.noMatches", "No records match the selected levels", "没有符合所选级别的记录", "選択したレベルに一致する記録がありません", "선택한 수준과 일치하는 기록 없음", "Aucun enregistrement ne correspond aux niveaux sélectionnés"], readonly ["log.list", "Log records", "日志记录", "ログ記録", "로그 기록", "Enregistrements du journal"], readonly ["radar.series", "Series", "系列", "系列", "계열", "Séries"], readonly ["radar.caption", "Radar data", "雷达图数据", "レーダーチャートのデータ", "레이더 차트 데이터", "Données du radar"], readonly ["radar.empty", "No radar data", "暂无雷达图数据", "レーダーデータがありません", "레이더 데이터 없음", "Aucune donnée radar"], readonly ["heatmap.intensity", "Intensity", "强度", "強度", "강도", "Intensité"], readonly ["heatmap.rows", "Rows", "行", "行", "행", "Lignes"], readonly ["heatmap.empty", "No heatmap data", "暂无热力图数据", "ヒートマップのデータがありません", "히트맵 데이터 없음", "Aucune donnée de carte thermique"], readonly ["sparkline.label", "Sparkline", "迷你图", "スパークライン", "스파크라인", "Mini-graphique"], readonly ["graph.fit", "Fit graph to view", "适配图形到视图", "グラフを表示範囲に合わせる", "그래프를 화면에 맞추기", "Adapter le graphe à la vue"], readonly ["graph.empty", "No nodes yet", "暂无节点", "ノードがありません", "노드 없음", "Aucun nœud"], readonly ["graph.label", "Node graph", "节点图", "ノードグラフ", "노드 그래프", "Graphe de nœuds"], readonly ["map.unavailable", "Map unavailable. Choose a place below.", "地图不可用,请在下方选择地点。", "地図を表示できません。下から場所を選んでください。", "지도를 사용할 수 없습니다. 아래에서 장소를 선택하세요.", "Carte indisponible. Choisissez un lieu ci-dessous."], readonly ["transfer.available", "Available", "可选项", "選択可能", "선택 가능", "Disponible"], readonly ["transfer.sourceSearch", "Search available items", "搜索可选项", "選択可能な項目を検索", "선택 가능한 항목 검색", "Rechercher les éléments disponibles"], readonly ["transfer.targetSearch", "Search selected items", "搜索已选项", "選択済みの項目を検索", "선택한 항목 검색", "Rechercher les éléments sélectionnés"], readonly ["transfer.sourceClear", "Clear available item search", "清除可选项搜索", "選択可能な項目の検索を消去", "선택 가능한 항목 검색 지우기", "Effacer la recherche des éléments disponibles"], readonly ["transfer.targetClear", "Clear selected item search", "清除已选项搜索", "選択済み項目の検索を消去", "선택한 항목 검색 지우기", "Effacer la recherche des éléments sélectionnés"], readonly ["transfer.sourcePlaceholder", "Search available", "搜索可选项", "選択可能な項目を検索", "선택 가능한 항목 검색", "Rechercher les éléments disponibles"], readonly ["transfer.targetPlaceholder", "Search selected", "搜索已选项", "選択済みの項目を検索", "선택한 항목 검색", "Rechercher les éléments sélectionnés"], readonly ["transfer.allSource", "Select all visible available items", "选择全部可见的可选项", "表示中の選択可能な項目をすべて選択", "표시된 선택 가능 항목 모두 선택", "Sélectionner tous les éléments disponibles visibles"], readonly ["transfer.allTarget", "Select all visible selected items", "选择全部可见的已选项", "表示中の選択済み項目をすべて選択", "표시된 선택 항목 모두 선택", "Sélectionner tous les éléments sélectionnés visibles"], readonly ["transfer.sourceEmpty", "No available items", "没有可选项", "選択可能な項目がありません", "선택 가능한 항목 없음", "Aucun élément disponible"], readonly ["transfer.targetEmpty", "No selected items", "没有已选项", "選択済み項目がありません", "선택한 항목 없음", "Aucun élément sélectionné"], readonly ["transfer.sourceNoResults", "No available items match this search", "没有匹配的可选项", "検索に一致する選択可能な項目がありません", "검색과 일치하는 선택 가능 항목 없음", "Aucun élément disponible ne correspond à cette recherche"], readonly ["transfer.targetNoResults", "No selected items match this search", "没有匹配的已选项", "検索に一致する選択済み項目がありません", "검색과 일치하는 선택 항목 없음", "Aucun élément sélectionné ne correspond à cette recherche"], readonly ["transfer.toTarget", "Move to selected", "移到已选", "選択済みへ移動", "선택 항목으로 이동", "Déplacer vers la sélection"], readonly ["transfer.toSource", "Move to available", "移回可选", "選択可能へ戻す", "선택 가능 항목으로 이동", "Remettre dans les éléments disponibles"], readonly ["transfer.selectedToTarget", "Move selected visible items to selected", "将勾选的可见项移到已选", "チェックした表示項目を選択済みへ移動", "체크한 표시 항목을 선택 항목으로 이동", "Déplacer les éléments visibles cochés vers la sélection"], readonly ["transfer.selectedToSource", "Move selected visible items to available", "将勾选的可见项移回可选", "チェックした表示項目を選択可能へ戻す", "체크한 표시 항목을 선택 가능 항목으로 이동", "Remettre les éléments visibles cochés dans les éléments disponibles"], readonly ["transfer.batch", "Transfer selected visible items", "移动勾选的可见项", "チェックした表示項目を移動", "체크한 표시 항목 이동", "Transférer les éléments visibles cochés"], readonly ["audio.controls", "Audio controls", "音频控制", "音声コントロール", "오디오 컨트롤", "Commandes audio"], readonly ["audio.label", "Audio", "音频", "音声", "오디오", "Audio"], readonly ["audio.play", "Play", "播放", "再生", "재생", "Lire"], readonly ["audio.pause", "Pause", "暂停", "一時停止", "일시 정지", "Mettre en pause"], readonly ["audio.mute", "Mute", "静音", "ミュート", "음소거", "Couper le son"], readonly ["audio.unmute", "Unmute", "取消静音", "ミュート解除", "음소거 해제", "Rétablir le son"], readonly ["audio.seek", "Seek", "播放进度", "再生位置", "재생 위치", "Position de lecture"], readonly ["audio.volume", "Volume", "音量", "音量", "음량", "Volume"], readonly ["audio.rate", "Playback speed", "播放速度", "再生速度", "재생 속도", "Vitesse de lecture"], readonly ["audio.loading", "Loading audio", "正在加载音频", "音声を読み込み中", "오디오 불러오는 중", "Chargement de l’audio"], readonly ["audio.blocked", "Playback was blocked. Press play to try again.", "播放被阻止,请点击播放重试。", "再生がブロックされました。再生を押して再試行してください。", "재생이 차단되었습니다. 재생 버튼을 눌러 다시 시도하세요.", "La lecture a été bloquée. Appuyez sur Lire pour réessayer."], readonly ["audio.error", "Audio failed to load.", "音频加载失败。", "音声を読み込めませんでした。", "오디오를 불러오지 못했습니다.", "Impossible de charger l’audio."], readonly ["video.controls", "Video controls", "视频控制", "動画コントロール", "동영상 컨트롤", "Commandes vidéo"], readonly ["video.play", "Play video", "播放视频", "動画を再生", "동영상 재생", "Lire la vidéo"], readonly ["video.pause", "Pause video", "暂停视频", "動画を一時停止", "동영상 일시 정지", "Mettre la vidéo en pause"], readonly ["video.seek", "Seek video", "视频进度", "動画の再生位置", "동영상 재생 위치", "Position de la vidéo"], readonly ["video.mute", "Mute video", "视频静音", "動画をミュート", "동영상 음소거", "Couper le son de la vidéo"], readonly ["video.unmute", "Unmute video", "取消视频静音", "動画のミュートを解除", "동영상 음소거 해제", "Rétablir le son de la vidéo"], readonly ["video.volume", "Video volume", "视频音量", "動画の音量", "동영상 음량", "Volume de la vidéo"], readonly ["carousel.label", "Carousel", "轮播", "カルーセル", "캐러셀", "Carrousel"], readonly ["carousel.previous", "Previous slide", "上一张", "前のスライド", "이전 슬라이드", "Diapositive précédente"], readonly ["carousel.next", "Next slide", "下一张", "次のスライド", "다음 슬라이드", "Diapositive suivante"], readonly ["carousel.pages", "Carousel pages", "轮播分页", "カルーセルのページ", "캐러셀 페이지", "Pages du carrousel"], readonly ["carousel.pause", "Pause autoplay", "暂停自动播放", "自動再生を一時停止", "자동 재생 일시 정지", "Suspendre la lecture automatique"], readonly ["carousel.play", "Play autoplay", "开始自动播放", "自動再生を開始", "자동 재생 시작", "Démarrer la lecture automatique"], readonly ["carousel.slide", "Slide {index} of {total}", "第 {index} 张,共 {total} 张", "{total} 枚中 {index} 枚目", "총 {total}개 중 {index}번째 슬라이드", "Diapositive {index} sur {total}"], readonly ["carousel.page", "Go to page {index} of {total}", "跳转到第 {index} 页,共 {total} 页", "{total} ページ中 {index} ページへ移動", "총 {total}페이지 중 {index}페이지로 이동", "Aller à la page {index} sur {total}"], readonly ["viewer.title", "Image viewer", "图片查看器", "画像ビューアー", "이미지 뷰어", "Visionneuse d’images"], readonly ["viewer.description", "Use the previous and next controls or arrow keys to browse images.", "使用前后按钮或方向键浏览图片。", "前後のボタンまたは矢印キーで画像を切り替えます。", "이전 및 다음 버튼이나 방향키로 이미지를 탐색합니다.", "Utilisez les boutons précédent et suivant ou les flèches pour parcourir les images."], readonly ["viewer.close", "Close image viewer", "关闭图片查看器", "画像ビューアーを閉じる", "이미지 뷰어 닫기", "Fermer la visionneuse"], readonly ["viewer.previous", "Previous image", "上一张图片", "前の画像", "이전 이미지", "Image précédente"], readonly ["viewer.next", "Next image", "下一张图片", "次の画像", "다음 이미지", "Image suivante"], readonly ["viewer.thumbnails", "Image thumbnails", "图片缩略图", "画像のサムネイル", "이미지 미리 보기", "Miniatures des images"], readonly ["viewer.position", "{current} of {total}", "第 {current} 项,共 {total} 项", "{total} 件中 {current} 件目", "총 {total}개 중 {current}번째", "{current} sur {total}"], readonly ["viewer.thumbnail", "Show {label}, {current} of {total}", "查看 {label},第 {current} 项,共 {total} 项", "{label} を表示、{total} 件中 {current} 件目", "{label} 표시, 총 {total}개 중 {current}번째", "Afficher {label}, {current} sur {total}"], readonly ["viewer.failed", "Image unavailable", "图片不可用", "画像を表示できません", "이미지를 사용할 수 없음", "Image indisponible"], readonly ["viewer.failedDescription", "{label} could not be loaded.", "无法加载 {label}。", "{label} を読み込めませんでした。", "{label}을(를) 불러오지 못했습니다.", "Impossible de charger {label}."], readonly ["viewer.reset", "Reset zoom", "重置缩放", "ズームをリセット", "확대/축소 초기화", "Réinitialiser le zoom"], readonly ["viewer.rotate", "Rotate clockwise", "顺时针旋转", "右に回転", "시계 방향 회전", "Tourner dans le sens horaire"], readonly ["viewer.panZoom", "Pan and zoom {label}", "平移和缩放 {label}", "{label} を移動・拡大縮小", "{label} 이동 및 확대/축소", "Déplacer et zoomer {label}"], readonly ["viewer.empty", "No images", "暂无图片", "画像がありません", "이미지 없음", "Aucune image"], readonly ["viewer.emptyDescription", "There are no images to show.", "没有可展示的图片。", "表示する画像がありません。", "표시할 이미지가 없습니다.", "Il n’y a aucune image à afficher."], readonly ["cropper.label", "Image crop area", "图片裁剪区域", "画像の切り抜き範囲", "이미지 자르기 영역", "Zone de recadrage"], readonly ["cropper.instructions", "Use pointer gestures or arrow keys to move the image. Use the zoom control. In free aspect mode, use the size controls or Alt plus arrow keys to resize the crop area.", "使用手势或方向键移动图片,使用缩放控件调整大小。自由比例下可通过尺寸控件或 Alt 加方向键调整裁剪区域。", "ジェスチャーや矢印キーで画像を移動し、ズームで拡大縮小します。自由比率ではサイズ操作または Alt と矢印キーで切り抜き範囲を調整できます。", "제스처 또는 방향키로 이미지를 이동하고 확대/축소 컨트롤을 사용하세요. 자유 비율 모드에서는 크기 컨트롤이나 Alt와 방향키로 자르기 영역을 조절합니다.", "Déplacez l’image avec des gestes ou les flèches, et utilisez le zoom. En mode libre, ajustez la zone avec les commandes de taille ou Alt et les flèches."], readonly ["cropper.loading", "Loading image", "正在加载图片", "画像を読み込み中", "이미지 불러오는 중", "Chargement de l’image"], readonly ["cropper.failedDescription", "The image could not be loaded. Check the source and try again.", "无法加载图片,请检查来源后重试。", "画像を読み込めませんでした。参照先を確認して再試行してください。", "이미지를 불러오지 못했습니다. 주소를 확인하고 다시 시도하세요.", "Impossible de charger l’image. Vérifiez la source et réessayez."], readonly ["cropper.retry", "Retry image", "重新加载图片", "画像を再読み込み", "이미지 다시 불러오기", "Recharger l’image"], readonly ["cropper.zoom", "Zoom", "缩放", "ズーム", "확대/축소", "Zoom"], readonly ["cropper.width", "Crop width", "裁剪宽度", "切り抜き幅", "자르기 너비", "Largeur du recadrage"], readonly ["cropper.height", "Crop height", "裁剪高度", "切り抜き高さ", "자르기 높이", "Hauteur du recadrage"], readonly ["cropper.reset", "Reset crop", "重置裁剪", "切り抜きをリセット", "자르기 초기화", "Réinitialiser le recadrage"], readonly ["cropper.export", "Export crop", "导出裁剪", "切り抜きを書き出す", "자른 이미지 내보내기", "Exporter le recadrage"], readonly ["cropper.exporting", "Exporting crop", "正在导出裁剪", "切り抜きを書き出し中", "자른 이미지 내보내는 중", "Exportation du recadrage"], readonly ["inventoryGrid.instructions", "Press Space or Enter to pick up. Arrow keys move one cell, R rotates, Page Up or Page Down switches containers. Space or Enter drops; Escape cancels.", "按空格或 Enter 拿起,方向键逐格移动,R 旋转,Page Up 或 Page Down 切换背包。空格或 Enter 放下,Escape 取消。", "Space または Enter でつかみ、矢印キーで移動、R で回転、Page Up または Page Down でコンテナーを切り替えます。Space または Enter で配置、Escape でキャンセルします。", "Space 또는 Enter로 집고 방향키로 이동합니다. R로 회전하고 Page Up 또는 Page Down으로 보관함을 바꿉니다. Space 또는 Enter로 놓고 Escape로 취소합니다.", "Espace ou Entrée pour saisir, flèches pour déplacer, R pour tourner, Page précédente ou suivante pour changer de conteneur. Espace ou Entrée pour déposer, Échap pour annuler."], readonly ["inventoryGrid.rotate", "Rotate item", "旋转物品", "アイテムを回転", "물품 회전", "Tourner l’objet"], readonly ["inventoryGrid.pickedUp", "Picked up {item}.", "已拾取 {item}。", "{item} をつかみました。", "{item}을(를) 집었습니다.", "{item} saisi."], readonly ["inventoryGrid.position", "{item}, {container}, column {column}, row {row}, {rotation} degrees.", "{item},{container},第 {column} 列、第 {row} 行,{rotation} 度。", "{item}、{container}、{column} 列、{row} 行、{rotation} 度。", "{item}, {container}, {column}열, {row}행, {rotation}도.", "{item}, {container}, colonne {column}, ligne {row}, {rotation} degrés."], readonly ["inventoryGrid.invalid", "Cannot place here.", "此位置无法放置。", "ここには配置できません。", "여기에 놓을 수 없습니다.", "Placement impossible ici."], readonly ["inventoryGrid.requested", "Move requested for {item}.", "已请求移动 {item}。", "{item} の移動をリクエストしました。", "{item} 이동을 요청했습니다.", "Déplacement de {item} demandé."], readonly ["inventoryGrid.cancelled", "Move cancelled for {item}.", "已取消移动 {item}。", "{item} の移動をキャンセルしました。", "{item} 이동을 취소했습니다.", "Déplacement de {item} annulé."], readonly ["sortable.handle", "Drag item", "拖动项目", "項目をドラッグ", "항목 끌기", "Faire glisser l’élément"], readonly ["sortable.instructions", "Press Space or Enter to pick up an item. Use the arrow keys to move it, Space or Enter to drop it, and Escape to cancel.", "按空格或 Enter 拿起项目,用方向键移动,再按空格或 Enter 放下,按 Escape 取消。", "Space または Enter で項目をつかみ、矢印キーで移動します。Space または Enter で配置し、Escape でキャンセルします。", "Space 또는 Enter로 항목을 선택하고 방향키로 이동합니다. Space 또는 Enter로 놓고 Escape로 취소합니다.", "Appuyez sur Espace ou Entrée pour saisir un élément, utilisez les flèches pour le déplacer, Espace ou Entrée pour le déposer et Échap pour annuler."], readonly ["sortable.pickedUp", "Picked up {item}, item {position} of {count} in {container}.", "已拿起 {item},位于 {container} 的第 {position} 项,共 {count} 项。", "{item} をつかみました。{container} の {count} 件中 {position} 件目です。", "{item} 선택됨. {container}의 {count}개 중 {position}번째 항목입니다.", "{item} saisi, élément {position} sur {count} dans {container}."], readonly ["sortable.movedOver", "{item} is over position {position} of {count} in {container}.", "{item} 已移至 {container} 的第 {position} 个位置,共 {count} 项。", "{item} は {container} の {count} 件中 {position} 番目の位置にあります。", "{item}은(는) {container}의 {count}개 중 {position}번째 위치에 있습니다.", "{item} se trouve à la position {position} sur {count} dans {container}."], readonly ["sortable.dropped", "Dropped {item} at position {position} of {count} in {container}.", "已将 {item} 放在 {container} 的第 {position} 个位置,共 {count} 项。", "{item} を {container} の {count} 件中 {position} 番目に配置しました。", "{item}을(를) {container}의 {count}개 중 {position}번째 위치에 놓았습니다.", "{item} déposé à la position {position} sur {count} dans {container}."], readonly ["sortable.cancelled", "Sorting cancelled. {item} returned to its original position.", "已取消排序,{item} 返回原位。", "並べ替えをキャンセルしました。{item} は元の位置に戻りました。", "정렬이 취소되었습니다. {item}이(가) 원래 위치로 돌아갔습니다.", "Tri annulé. {item} a retrouvé sa position initiale."]];
2
2
  export type InkraMessageKey = typeof messageRows[number][0];
3
3
  export type InkraMessages = Readonly<Record<InkraMessageKey, string>>;
4
4
  export type InkraLocale = 'en' | 'zh-CN' | 'ja' | 'ko' | 'fr';
@@ -15,6 +15,8 @@ export const messageRows = [
15
15
  ['graph.nodeMoved', 'Moved selected node. New position, x: {x}, y: {y}', '已移动所选节点。新位置:x {x},y {y}', '選択したノードを移動しました。新しい位置:x {x}、y {y}', '선택한 노드가 이동했습니다. 새 위치: x {x}, y {y}', 'Nœud sélectionné déplacé. Nouvelle position : x {x}, y {y}'],
16
16
  ['graph.edgeInstructions', 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.', '按 Enter 或空格选择连线,按 Delete 删除,按 Escape 取消。', 'Enter または Space でエッジを選択し、Delete で削除、Escape でキャンセルします。', 'Enter 또는 Space로 연결선을 선택하고 Delete로 삭제하거나 Escape로 취소하세요.', 'Appuyez sur Entrée ou Espace pour sélectionner un lien, Suppr pour le supprimer ou Échap pour annuler.'],
17
17
  ['graph.handle', 'Handle', '连接点', '接続点', '연결점', 'Point de connexion'],
18
+ ['switch.on', 'On', '开', 'オン', '켜짐', 'Oui'],
19
+ ['switch.off', 'Off', '关', 'オフ', '꺼짐', 'Non'],
18
20
  ['common.close', 'Close', '关闭', '閉じる', '닫기', 'Fermer'],
19
21
  ['common.cancel', 'Cancel', '取消', 'キャンセル', '취소', 'Annuler'],
20
22
  ['common.save', 'Save', '保存', '保存', '저장', 'Enregistrer'],
@@ -26,6 +28,12 @@ export const messageRows = [
26
28
  ['common.noItems', 'No items', '暂无内容', '項目がありません', '항목 없음', 'Aucun élément'],
27
29
  ['common.previousPage', 'Previous page', '上一页', '前のページ', '이전 페이지', 'Page précédente'],
28
30
  ['common.nextPage', 'Next page', '下一页', '次のページ', '다음 페이지', 'Page suivante'],
31
+ ['guide.previous', 'Previous', '上一步', '前へ', '이전', 'Précédent'],
32
+ ['guide.next', 'Next', '下一步', '次へ', '다음', 'Suivant'],
33
+ ['guide.finish', 'Finish', '完成', '完了', '완료', 'Terminer'],
34
+ ['guide.skip', 'Skip tour', '跳过引导', 'ツアーをスキップ', '둘러보기 건너뛰기', 'Ignorer la visite'],
35
+ ['guide.close', 'Close guide', '关闭引导', 'ガイドを閉じる', '가이드 닫기', 'Fermer le guide'],
36
+ ['guide.progress', 'Step {current} of {total}', '第 {current} 步,共 {total} 步', '{total} ステップ中 {current}', '총 {total}단계 중 {current}단계', 'Étape {current} sur {total}'],
29
37
  ['common.zoomIn', 'Zoom in', '放大', '拡大', '확대', 'Agrandir'],
30
38
  ['common.zoomOut', 'Zoom out', '缩小', '縮小', '축소', 'Réduire'],
31
39
  ['common.resetView', 'Reset view', '重置视图', '表示をリセット', '보기 초기화', 'Réinitialiser la vue'],
@@ -64,6 +64,8 @@ export interface ImageViewerImageRenderProps {
64
64
  export interface ImageViewerContentProps extends Omit<OverlayContentProps, 'children' | 'layout'> {
65
65
  labels?: Partial<ImageViewerLabels>;
66
66
  showThumbnails?: boolean;
67
+ showCounter?: boolean;
68
+ toolbarPosition?: 'top' | 'bottom';
67
69
  renderImage?: (item: ImageViewerItem, props: ImageViewerImageRenderProps) => ReactNode;
68
70
  emptyState?: ReactNode;
69
71
  zoomable?: boolean;
@@ -114,7 +114,7 @@ const defaultLabels = (t) => ({
114
114
  function directionFor(node) {
115
115
  return getComputedStyle(node).direction === 'rtl' ? 'rtl' : 'ltr';
116
116
  }
117
- export const ImageViewerContent = forwardRef(function ImageViewerContent({ className, emptyState, labels: labelOverrides, onOpenAutoFocus, renderImage, rotatable = false, showThumbnails = true, zoomable = true, minScale = 0.5, maxScale = 6, videoLabels, wheel = 'modifier', ...props }, forwardedRef) {
117
+ export const ImageViewerContent = forwardRef(function ImageViewerContent({ className, emptyState, labels: labelOverrides, onOpenAutoFocus, renderImage, rotatable = false, showThumbnails = true, showCounter = false, toolbarPosition = 'top', zoomable = true, minScale = 0.5, maxScale = 6, videoLabels, wheel = 'modifier', ...props }, forwardedRef) {
118
118
  const { t } = useInkraLocale();
119
119
  const { activeIndex, activeItem, items, loop, open, selectIndex, step } = useImageViewerContext();
120
120
  const labels = { ...defaultLabels(t), ...labelOverrides };
@@ -213,33 +213,33 @@ export const ImageViewerContent = forwardRef(function ImageViewerContent({ class
213
213
  return;
214
214
  event.preventDefault();
215
215
  stageRef.current?.focus();
216
- }, ref: forwardedRef, surfaceRadius: 0, surfaceVariant: "ghost", children: [_jsx(OverlayTitle, { className: "inkra-image-viewer__accessible-label", children: labels.title }), _jsx(OverlayDescription, { className: "inkra-image-viewer__accessible-label", children: labels.description }), _jsxs("div", { className: "inkra-image-viewer__close-control", children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__close-paper", radius: 8, seed: "image-viewer-close-paper", variant: "paper" }), _jsx(OverlayCloseButton, { className: "inkra-image-viewer__close", label: labels.close })] }), _jsx("div", { className: "inkra-image-viewer__body", children: activeItem && activeItemKey ? _jsx(_Fragment, { children: _jsxs("div", { "aria-label": activeItem.alt, className: "inkra-image-viewer__stage", onKeyDown: handleStageKeyDown, ref: stageRef, tabIndex: 0, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__stage-focus", radius: 6, seed: `image-viewer-stage-${activeItem.id}`, variant: "outline" }), failed ? _jsxs("div", { className: "inkra-image-viewer__state", role: "alert", children: [_jsx(PencilIcon, { decorative: true, paths: imageOffPaths, size: 48, sourceSize: 24 }), _jsx(PencilText, { as: "h3", children: labels.failedTitle }), _jsx(PencilText, { as: "p", children: labels.failedDescription(activeItem) }), _jsx(Button, { variant: "outline", onClick: () => {
217
- if (!activeItemKey)
218
- return;
219
- const failedKey = activeItemKey;
220
- setFailedResources(current => {
221
- const next = new Set(current);
222
- next.delete(failedKey);
223
- return next;
224
- });
225
- setAttempts(current => ({ ...current, [failedKey]: (current[failedKey] ?? 0) + 1 }));
226
- }, children: labels.retry })] }) : activeItemType === 'video' && open ? _jsx(VideoResource, { alt: activeItem.alt, labels: videoLabels, onError: () => setFailedResources(current => new Set(current).add(activeItemKey)), onLoad: () => setFailedResources(current => {
227
- if (!current.has(activeItemKey))
228
- return current;
229
- const next = new Set(current);
230
- next.delete(activeItemKey);
231
- return next;
232
- }), poster: activeItem.poster, src: activeItem.src }, activeItemKey) : imageProps ? _jsx(PanZoom, { "aria-label": labels.panZoom(activeItem), centerOnInit: true, className: "inkra-image-viewer__pan-zoom", fitOnInit: "contain", keyboard: zoomable, maxScale: maxScale, minScale: minScale, pan: zoomable, pinch: zoomable, readOnly: !zoomable, ref: panZoomRef, wheel: zoomable ? wheel : 'disabled', children: _jsx("div", { className: "inkra-image-viewer__image-transform", style: { transform: `rotate(${rotation}deg)` }, children: (renderImage ?? renderDefaultImage)(activeItem, imageProps) }) }, activeItemKey) : null, total > 1 && activeItemType === 'image' ? _jsxs("div", { className: "inkra-image-viewer__navigation", children: [_jsx(Button, { "aria-label": labels.previous, className: "inkra-image-viewer__previous", disabled: !loop && atStart, onClick: () => step(-1), size: "icon", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronLeftPaths, size: 30, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.next, className: "inkra-image-viewer__next", disabled: !loop && atEnd, onClick: () => step(1), size: "icon", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronRightPaths, size: 30, sourceSize: 24 }) })] }) : null] }) }) : _jsxs("div", { className: "inkra-image-viewer__state", ref: stageRef, tabIndex: 0, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__stage-focus", radius: 6, seed: "image-viewer-empty-stage", variant: "outline" }), emptyState ?? _jsxs(_Fragment, { children: [_jsx(PencilIcon, { decorative: true, paths: imageOffPaths, size: 48, sourceSize: 24 }), _jsx(PencilText, { as: "h3", children: labels.emptyTitle }), _jsx(PencilText, { as: "p", children: labels.emptyDescription })] })] }) }), (activeItem || (showThumbnails && total > 1)) ? _jsxs("div", { className: "inkra-image-viewer__bottom", children: [_jsxs("div", { className: "inkra-image-viewer__bottom-row", children: [total > 0 ? _jsx(PencilText, { as: "span", className: "inkra-image-viewer__counter", dir: "auto", children: labels.imagePosition(activeIndex + 1, total) }) : null, activeItem && activeItemType === 'image' && !failed && (zoomable || rotatable) ? _jsxs("div", { className: "inkra-image-viewer__tools", role: "group", "aria-label": labels.panZoom(activeItem), "data-pan-zoom-no-drag": true, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__tools-paper", radius: 8, seed: `image-viewer-tools-${activeItem.id}`, variant: "paper" }), zoomable ? _jsxs(_Fragment, { children: [_jsx(Button, { "aria-label": labels.zoomOut, onClick: () => void panZoomRef.current?.zoomOut(), size: "icon-sm", variant: "outline", children: _jsx(PencilIcon, { decorative: true, paths: zoomOutPaths, size: 24, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.resetZoom, onClick: () => void panZoomRef.current?.reset(), size: "sm", variant: "outline", children: "100%" }), _jsx(Button, { "aria-label": labels.zoomIn, onClick: () => void panZoomRef.current?.zoomIn(), size: "icon-sm", variant: "outline", children: _jsx(PencilIcon, { decorative: true, paths: zoomInPaths, size: 24, sourceSize: 24 }) })] }) : null, rotatable ? _jsx(Button, { "aria-label": labels.rotate, onClick: () => {
233
- setRotation(current => (current + 90) % 360);
234
- if (fitFrameRef.current !== null)
235
- cancelAnimationFrame(fitFrameRef.current);
236
- const resourceKey = activeItemKey;
237
- fitFrameRef.current = requestAnimationFrame(() => {
238
- fitFrameRef.current = null;
239
- if (activeResourceRef.current === resourceKey)
240
- void panZoomRef.current?.fit({ mode: 'contain' });
241
- });
242
- }, size: "icon-sm", variant: "outline", children: _jsx(PencilIcon, { decorative: true, paths: rotatePaths, size: 24, sourceSize: 24 }) }) : null] }) : null, activeItem && activeItemType === 'video' && total > 1 ? _jsxs("div", { className: "inkra-image-viewer__video-navigation", role: "group", "aria-label": labels.thumbnails, children: [_jsx(Button, { "aria-label": labels.previous, disabled: !loop && atStart, onClick: () => step(-1), size: "icon-sm", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronLeftPaths, size: 24, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.next, disabled: !loop && atEnd, onClick: () => step(1), size: "icon-sm", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronRightPaths, size: 24, sourceSize: 24 }) })] }) : null] }), showThumbnails && total > 1 ? _jsx("div", { "aria-label": labels.thumbnails, className: "inkra-image-viewer__thumbnails", ref: thumbnailsRef, role: "listbox", children: items.map((item, index) => {
216
+ }, ref: forwardedRef, surfaceRadius: 0, surfaceVariant: "ghost", children: [_jsx(OverlayTitle, { className: "inkra-image-viewer__accessible-label", children: labels.title }), _jsx(OverlayDescription, { className: "inkra-image-viewer__accessible-label", children: labels.description }), _jsxs("div", { className: "inkra-image-viewer__close-control", children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__close-paper", radius: 8, seed: "image-viewer-close-paper", variant: "paper" }), _jsx(OverlayCloseButton, { className: "inkra-image-viewer__close", label: labels.close })] }), _jsxs("div", { className: "inkra-image-viewer__body", children: [activeItem && activeItemKey ? _jsx(_Fragment, { children: _jsxs("div", { "aria-label": activeItem.alt, className: "inkra-image-viewer__stage", onKeyDown: handleStageKeyDown, ref: stageRef, tabIndex: 0, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__stage-focus", radius: 6, seed: `image-viewer-stage-${activeItem.id}`, variant: "outline" }), failed ? _jsxs("div", { className: "inkra-image-viewer__state", role: "alert", children: [_jsx(PencilIcon, { decorative: true, paths: imageOffPaths, size: 48, sourceSize: 24 }), _jsx(PencilText, { as: "h3", children: labels.failedTitle }), _jsx(PencilText, { as: "p", children: labels.failedDescription(activeItem) }), _jsx(Button, { variant: "outline", onClick: () => {
217
+ if (!activeItemKey)
218
+ return;
219
+ const failedKey = activeItemKey;
220
+ setFailedResources(current => {
221
+ const next = new Set(current);
222
+ next.delete(failedKey);
223
+ return next;
224
+ });
225
+ setAttempts(current => ({ ...current, [failedKey]: (current[failedKey] ?? 0) + 1 }));
226
+ }, children: labels.retry })] }) : activeItemType === 'video' && open ? _jsx(VideoResource, { alt: activeItem.alt, labels: videoLabels, onError: () => setFailedResources(current => new Set(current).add(activeItemKey)), onLoad: () => setFailedResources(current => {
227
+ if (!current.has(activeItemKey))
228
+ return current;
229
+ const next = new Set(current);
230
+ next.delete(activeItemKey);
231
+ return next;
232
+ }), poster: activeItem.poster, src: activeItem.src }, activeItemKey) : imageProps ? _jsx(PanZoom, { "aria-label": labels.panZoom(activeItem), centerOnInit: true, className: "inkra-image-viewer__pan-zoom", fitOnInit: "contain", keyboard: zoomable, maxScale: maxScale, minScale: minScale, pan: zoomable, pinch: zoomable, readOnly: !zoomable, ref: panZoomRef, wheel: zoomable ? wheel : 'disabled', children: _jsx("div", { className: "inkra-image-viewer__image-transform", style: { transform: `rotate(${rotation}deg)` }, children: (renderImage ?? renderDefaultImage)(activeItem, imageProps) }) }, activeItemKey) : null, total > 1 && activeItemType === 'image' ? _jsxs("div", { className: "inkra-image-viewer__navigation", children: [_jsx(Button, { "aria-label": labels.previous, className: "inkra-image-viewer__previous", disabled: !loop && atStart, onClick: () => step(-1), size: "icon", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronLeftPaths, size: 30, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.next, className: "inkra-image-viewer__next", disabled: !loop && atEnd, onClick: () => step(1), size: "icon", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronRightPaths, size: 30, sourceSize: 24 }) })] }) : null] }) }) : _jsxs("div", { className: "inkra-image-viewer__state", ref: stageRef, tabIndex: 0, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__stage-focus", radius: 6, seed: "image-viewer-empty-stage", variant: "outline" }), emptyState ?? _jsxs(_Fragment, { children: [_jsx(PencilIcon, { decorative: true, paths: imageOffPaths, size: 48, sourceSize: 24 }), _jsx(PencilText, { as: "h3", children: labels.emptyTitle }), _jsx(PencilText, { as: "p", children: labels.emptyDescription })] })] }), activeItem && activeItemType === 'image' && !failed && (zoomable || rotatable) ? _jsx("div", { className: "inkra-image-viewer__floating-tools", "data-position": toolbarPosition, children: _jsxs("div", { className: "inkra-image-viewer__tools", role: "group", "aria-label": labels.panZoom(activeItem), "data-pan-zoom-no-drag": true, children: [_jsx(PencilSurface, { "aria-hidden": "true", className: "inkra-image-viewer__tools-paper", radius: 8, seed: `image-viewer-tools-${activeItem.id}`, variant: "paper" }), zoomable ? _jsxs(_Fragment, { children: [_jsx(Button, { "aria-label": labels.zoomOut, title: labels.zoomOut, onClick: () => void panZoomRef.current?.zoomOut(), size: "icon-sm", variant: "ghost", children: _jsx(PencilIcon, { decorative: true, paths: zoomOutPaths, size: 24, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.resetZoom, title: labels.resetZoom, onClick: () => void panZoomRef.current?.reset(), size: "sm", variant: "ghost", children: "100%" }), _jsx(Button, { "aria-label": labels.zoomIn, title: labels.zoomIn, onClick: () => void panZoomRef.current?.zoomIn(), size: "icon-sm", variant: "ghost", children: _jsx(PencilIcon, { decorative: true, paths: zoomInPaths, size: 24, sourceSize: 24 }) })] }) : null, rotatable ? _jsx(Button, { "aria-label": labels.rotate, title: labels.rotate, onClick: () => {
233
+ setRotation(current => (current + 90) % 360);
234
+ if (fitFrameRef.current !== null)
235
+ cancelAnimationFrame(fitFrameRef.current);
236
+ const resourceKey = activeItemKey;
237
+ fitFrameRef.current = requestAnimationFrame(() => {
238
+ fitFrameRef.current = null;
239
+ if (activeResourceRef.current === resourceKey)
240
+ void panZoomRef.current?.fit({ mode: 'contain' });
241
+ });
242
+ }, size: "icon-sm", variant: "ghost", children: _jsx(PencilIcon, { decorative: true, paths: rotatePaths, size: 24, sourceSize: 24 }) }) : null] }) }) : null] }), ((showCounter && total > 0) || (activeItemType === 'video' && total > 1) || (showThumbnails && total > 1)) ? _jsxs("div", { className: "inkra-image-viewer__bottom", children: [((showCounter && total > 0) || (activeItemType === 'video' && total > 1)) ? _jsxs("div", { className: "inkra-image-viewer__bottom-row", children: [showCounter && total > 0 ? _jsx(PencilText, { as: "span", className: "inkra-image-viewer__counter", dir: "auto", children: labels.imagePosition(activeIndex + 1, total) }) : null, activeItem && activeItemType === 'video' && total > 1 ? _jsxs("div", { className: "inkra-image-viewer__video-navigation", role: "group", "aria-label": labels.thumbnails, children: [_jsx(Button, { "aria-label": labels.previous, disabled: !loop && atStart, onClick: () => step(-1), size: "icon-sm", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronLeftPaths, size: 24, sourceSize: 24 }) }), _jsx(Button, { "aria-label": labels.next, disabled: !loop && atEnd, onClick: () => step(1), size: "icon-sm", variant: "secondary", children: _jsx(PencilIcon, { decorative: true, paths: chevronRightPaths, size: 24, sourceSize: 24 }) })] }) : null] }) : null, showThumbnails && total > 1 ? _jsx("div", { "aria-label": labels.thumbnails, className: "inkra-image-viewer__thumbnails", ref: thumbnailsRef, role: "listbox", children: items.map((item, index) => {
243
243
  const selected = index === activeIndex;
244
244
  return _jsxs("button", { "aria-label": labels.thumbnail(item, index + 1, total), "aria-selected": selected, className: "inkra-image-viewer__thumbnail", onClick: () => selectIndex(index, 'thumbnail'), onKeyDown: (event) => {
245
245
  const rtl = directionFor(event.currentTarget) === 'rtl';
package/dist/index.d.ts CHANGED
@@ -2,6 +2,10 @@ export { Button, ButtonGroup, ButtonLink } from './Button.js';
2
2
  export * from './i18n/index.js';
3
3
  export * from './theme/index.js';
4
4
  export * from './overlay/index.js';
5
+ export * from './guide/index.js';
6
+ export * from './loading/index.js';
7
+ export * from './infinite-scroll/index.js';
8
+ export * from './masonry/index.js';
5
9
  export * from './form/index.js';
6
10
  export * from './input-number/index.js';
7
11
  export * from './slider/index.js';
package/dist/index.js CHANGED
@@ -2,6 +2,10 @@ export { Button, ButtonGroup, ButtonLink } from './Button.js';
2
2
  export * from './i18n/index.js';
3
3
  export * from './theme/index.js';
4
4
  export * from './overlay/index.js';
5
+ export * from './guide/index.js';
6
+ export * from './loading/index.js';
7
+ export * from './infinite-scroll/index.js';
8
+ export * from './masonry/index.js';
5
9
  export * from './form/index.js';
6
10
  export * from './input-number/index.js';
7
11
  export * from './slider/index.js';
@@ -0,0 +1,19 @@
1
+ import { type InfiniteScrollDirection } from './model.js';
2
+ export interface InfiniteScrollGestureOptions {
3
+ root: HTMLElement | null;
4
+ container: HTMLElement | null;
5
+ directions: readonly InfiniteScrollDirection[];
6
+ isEnabled: (direction: InfiniteScrollDirection) => boolean;
7
+ isExplicitlyEnabled: (direction: InfiniteScrollDirection) => boolean;
8
+ threshold: (direction: InfiniteScrollDirection) => number;
9
+ sentinel: (direction: InfiniteScrollDirection) => HTMLElement | null;
10
+ systemGestureInset: number;
11
+ onPull: (direction: InfiniteScrollDirection | null, distance: number, threshold: number, ready: boolean) => void;
12
+ onCommit: (direction: InfiniteScrollDirection) => void;
13
+ }
14
+ export declare function createInfiniteScrollGesture(read: () => InfiniteScrollGestureOptions): {
15
+ start: (event: TouchEvent) => void;
16
+ wheel: (event: WheelEvent) => void;
17
+ cancel: () => void;
18
+ dispose: () => void;
19
+ };