import { window } from 'vscode' ; import { LocaleTreeItem , ProgressSubmenuItem } from '~/views' ; import { CurrentFile , Global , Node , LocaleNode , LocaleRecord , ActionSource } from '~/core' ; import i18n from '~/i18n' ; export interface CommandOptions { keypath : string ; locale ? : string ; from ? : string ; locales ? : string [ ] ; keyIndex ? : number ; actionSource ? : ActionSource ; } export function getNodeOrRecord ( item ? ) { if ( ! item ) return ; if ( item instanceof LocaleTreeItem ) { return item . node . type !== 'tree' ? item . node : undefined ; } if ( item . locale ) return CurrentFile . loader . getRecordByKey ( item . keypath , item . locale , true ) ; else return CurrentFile . loader . getNodeByKey ( item . keypath , true ) ; } export function getNode ( item ? ) { if ( ! item ) return ; if ( item instanceof ProgressSubmenuItem ) return ; if ( item instanceof LocaleTreeItem ) { if ( item . node . type === 'node' ) return item . node ; return ; } return CurrentFile . loader . getNodeByKey ( item . keypath , true ) ; } export async function getRecordFromNode ( node , defaultLocale ? ) { if ( node . type === 'tree' ) return ; if ( node . type === 'record' ) return node ; if ( node . type === 'node' ) { const locales = CurrentFile . loader . getShadowLocales ( node ) ; const locale = defaultLocale || await window . showQuickPick ( Global . visibleLocales , { placeHolder : i18n . t ( 'prompt.choice_locale' ) } ) ; if ( ! locale ) return ; return locales [ locale ] ; } }