前端修饰与渲染处理

This commit is contained in:
2026-04-26 03:42:23 +08:00
parent 801809c5a5
commit d3f4e3faf5

View File

@@ -0,0 +1,78 @@
import { defineStore } from 'pinia';
import { ref, watch } from 'vue';
export const useMessageRenderStore = defineStore('messageRender', () => {
// State - load from localStorage or use defaults
const renderMarkdown = ref<boolean>(() => {
const stored = localStorage.getItem('message-render-markdown');
return stored ? JSON.parse(stored) : true;
});
const renderHTML = ref<boolean>(() => {
const stored = localStorage.getItem('message-render-html');
return stored ? JSON.parse(stored) : true;
});
const enableDynamicTables = ref<boolean>(() => {
const stored = localStorage.getItem('message-render-tables');
return stored ? JSON.parse(stored) : false;
});
const enableDrawing = ref<boolean>(() => {
const stored = localStorage.getItem('message-render-drawing');
return stored ? JSON.parse(stored) : false;
});
// Watch for changes and persist to localStorage
watch(renderMarkdown, (value) => {
localStorage.setItem('message-render-markdown', JSON.stringify(value));
});
watch(renderHTML, (value) => {
localStorage.setItem('message-render-html', JSON.stringify(value));
});
watch(enableDynamicTables, (value) => {
localStorage.setItem('message-render-tables', JSON.stringify(value));
});
watch(enableDrawing, (value) => {
localStorage.setItem('message-render-drawing', JSON.stringify(value));
});
// Actions
function toggleMarkdown() {
renderMarkdown.value = !renderMarkdown.value;
}
function toggleHTML() {
renderHTML.value = !renderHTML.value;
}
function toggleDynamicTables() {
enableDynamicTables.value = !enableDynamicTables.value;
}
function toggleDrawing() {
enableDrawing.value = !enableDrawing.value;
}
function resetAll() {
renderMarkdown.value = true;
renderHTML.value = true;
enableDynamicTables.value = false;
enableDrawing.value = false;
}
return {
renderMarkdown,
renderHTML,
enableDynamicTables,
enableDrawing,
toggleMarkdown,
toggleHTML,
toggleDynamicTables,
toggleDrawing,
resetAll,
};
});