Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 6x 6x 6x 5x 5x 5x 5x 13x 13x 13x 2x 5x 8x 1x 4x 1x 1x 1x 5x 8x 1x 4x 1x 1x 1x 5x | import { SaveState } from '@3cr/viewer-types-ts';
import { defineStore } from 'pinia';
import { computed, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
const stateTextTimeoutMs = 5000;
let timeout: number | undefined = undefined;
export const useSaveStore = defineStore('saveState', () => {
const { t } = useI18n();
const state = ref<SaveState>(SaveState.SAVED_CLOUD);
const showText = ref<boolean>(true);
watch(
state,
() => {
clearTimeout(timeout);
showText.value = true;
timeout = setTimeout(() => {
showText.value = false;
}, stateTextTimeoutMs);
},
{ immediate: true },
);
const text = computed(() => {
switch (state.value) {
case SaveState.SAVING:
return t('enums.saveState.saving');
case SaveState.SAVED_CLOUD:
return t('enums.saveState.savedCloud');
case SaveState.SAVED_TEMPORARY:
return t('enums.saveState.savedTemporary');
case SaveState.UNSAVED:
return t('enums.saveState.unsaved');
case SaveState.ERROR:
return t('enums.saveState.error');
}
});
const icon = computed(() => {
switch (state.value) {
case SaveState.SAVING:
return 'autorenew';
case SaveState.SAVED_CLOUD:
return 'cloud_done';
case SaveState.SAVED_TEMPORARY:
return 'sync_saved_locally';
case SaveState.UNSAVED:
return 'warning';
case SaveState.ERROR:
return 'error';
}
});
return { state, text, icon, showText };
});
|