+
+ class="float-right">
{{ t('dialog.gallery_icons.consume_bundle') }}
@@ -533,6 +535,7 @@
import { Button } from '@/components/ui/button';
import { ButtonGroup } from '@/components/ui/button-group';
import { ElMessageBox } from 'element-plus';
+ import { VirtualCombobox } from '@/components/ui/virtual-combobox';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -589,6 +592,9 @@
const { showFullscreenImageDialog } = useGalleryStore();
const { currentUser, isLocalUserVrcPlusSupporter } = storeToRefs(useUserStore());
const { cachedConfig } = storeToRefs(useAuthStore());
+ const cachedConfigTyped = computed(
+ () => /** @type {{ maxUserEmoji?: number, maxUserStickers?: number }} */ (cachedConfig.value ?? {})
+ );
const emojiAnimFps = ref(15);
const emojiAnimFrameCount = ref(4);
@@ -596,6 +602,19 @@
const emojiAnimationStyle = ref('Stop');
const emojiAnimLoopPingPong = ref(false);
+ const emojiStylePickerGroups = computed(() => [
+ {
+ key: 'emojiAnimationStyles',
+ label: t('dialog.gallery_icons.emoji_animation_styles'),
+ items: Object.entries(emojiAnimationStyleList).map(([styleName, fileName]) => ({
+ value: styleName,
+ label: styleName,
+ search: styleName,
+ fileName
+ }))
+ }
+ ]);
+
const pendingUploads = ref(0);
const isUploading = computed(() => pendingUploads.value > 0);