性能优化和样式更新
This commit is contained in:
@@ -45,6 +45,8 @@ const selectedFolderId = computed({
|
||||
// 保存预设时是否同时标记为收藏
|
||||
const saveAsFavorite = ref(false);
|
||||
const viewMode = ref<'compact' | 'detail'>('compact');
|
||||
// 左侧光标所在的 token 序号,用于在右侧映射中定位高亮
|
||||
const activeTokenIndex = ref<number | null>(null);
|
||||
const showPresetDropdown = ref(false);
|
||||
const showTranslationPopup = ref(false);
|
||||
const translationTargetToken = ref<string | null>(null);
|
||||
@@ -829,6 +831,7 @@ const unmappedTokens = computed(() => {
|
||||
});
|
||||
|
||||
function isUnmapped(key: string): boolean {
|
||||
void store.mappingVersion; // 追踪映射变更以触发响应式刷新
|
||||
const { core } = parseDetailedToken(key);
|
||||
const tag = store.getTagByKey(core);
|
||||
return !tag || !tag.translation?.[selectedLang.value];
|
||||
@@ -842,6 +845,7 @@ function handleApplyTranslation(results: { key: string; trans: string }[]) {
|
||||
}
|
||||
|
||||
function displayTrans(key: string): string {
|
||||
void store.mappingVersion; // 追踪映射变更以触发响应式刷新
|
||||
const { core, weight, wrappers, prefix, suffix } = parseDetailedToken(key);
|
||||
const tag = store.getTagByKey(core);
|
||||
const translatedCore = tag?.translation?.[selectedLang.value] ?? tag?.key ?? core;
|
||||
@@ -870,11 +874,13 @@ function isRemoveDisabled(token: string): boolean {
|
||||
:get-suggestions="(prefix, limit) => store.getSuggestions(prefix, limit)"
|
||||
@update-suggestions="updateSuggestionsFromText" @copy="copyLeft" @replace-cn-comma="replaceCnComma"
|
||||
@format-prompt="formatPrompt" @unify-priority="unifyPriorityStyle" @toggle-underscore="toggleUnderscoreSpace"
|
||||
@add-tag="handleAddTag" @drag-tag-start="handleQuickAddDragStart" @drag-tag-end="handleQuickAddDragEnd" />
|
||||
@add-tag="handleAddTag" @drag-tag-start="handleQuickAddDragStart" @drag-tag-end="handleQuickAddDragEnd"
|
||||
@locate-token="(i) => activeTokenIndex = i >= 0 ? i : null" />
|
||||
|
||||
<TokenMappingPanel ref="tokenMappingRef" :tokens="tokens" :selected-lang="selectedLang"
|
||||
v-model:view-mode="viewMode" :dragging-index="draggingIndex" :over-index="overIndex" :insert-side="insertSide"
|
||||
:is-dragging="isDragging" :edit-suggestions="editSuggestions" :numeric-mode="numericMode"
|
||||
:active-index="activeTokenIndex"
|
||||
:display-trans="displayTrans" :is-unmapped="isUnmapped" :get-token-wrapper-info="getTokenWrapperInfo"
|
||||
:has-weight-suffix="hasWeightSuffix" :get-suggestions="(prefix, limit) => store.getSuggestions(prefix, limit)"
|
||||
@pointer-down="onPointerDown" @panel-dragover="handlePanelDragOver" @panel-dragleave="handlePanelDragLeave"
|
||||
|
||||
Reference in New Issue
Block a user