update at 2025-10-08 19:45:28

This commit is contained in:
douboer
2025-10-08 19:45:28 +08:00
parent 5d32c0f5e7
commit 3460669602
20 changed files with 3325 additions and 101 deletions

View File

@@ -1,4 +1,13 @@
/* 文件xiaohongshu/preview-view.ts — 小红书预览视图组件:顶部工具栏、分页导航、底部切图按钮。 */
/**
* xiaohongshu/xhs-preview.ts
*
*
*
* 1.
* 2.
* 3. /
* 4.
*/
import { Notice, TFile } from 'obsidian';
import { NMPSettings } from '../settings';
@@ -7,9 +16,9 @@ import { paginateArticle, renderPage, PageInfo } from './paginator';
import { sliceCurrentPage, sliceAllPages } from './slice';
/**
*
*
*/
export class XiaohongshuPreviewView {
export class XiaohongshuPreview {
container: HTMLElement;
settings: NMPSettings;
assetsManager: AssetsManager;
@@ -17,16 +26,16 @@ export class XiaohongshuPreviewView {
currentFile: TFile | null = null;
// UI 元素
topToolbar: HTMLDivElement;
templateSelect: HTMLSelectElement;
themeSelect: HTMLSelectElement;
fontSelect: HTMLSelectElement;
fontSizeDisplay: HTMLSpanElement;
topToolbar!: HTMLDivElement;
templateSelect!: HTMLSelectElement;
themeSelect!: HTMLSelectElement;
fontSelect!: HTMLSelectElement;
fontSizeDisplay!: HTMLSpanElement;
pageContainer: HTMLDivElement;
bottomToolbar: HTMLDivElement;
pageNavigation: HTMLDivElement;
pageNumberDisplay: HTMLSpanElement;
pageContainer!: HTMLDivElement;
bottomToolbar!: HTMLDivElement;
pageNavigation!: HTMLDivElement;
pageNumberDisplay!: HTMLSpanElement;
// 分页数据
pages: PageInfo[] = [];
@@ -289,7 +298,7 @@ export class XiaohongshuPreviewView {
new Notice('✅ 当前页切图完成');
} catch (error) {
console.error('切图失败:', error);
new Notice('❌ 切图失败: ' + error.message);
new Notice('❌ 切图失败: ' + (error instanceof Error ? error.message : String(error)));
}
}
@@ -342,7 +351,42 @@ export class XiaohongshuPreviewView {
new Notice(`✅ 全部页切图完成:共 ${this.pages.length}`);
} catch (error) {
console.error('批量切图失败:', error);
new Notice('❌ 批量切图失败: ' + error.message);
new Notice('❌ 批量切图失败: ' + (error instanceof Error ? error.message : String(error)));
}
}
/**
*
*/
show(): void {
if (this.container) {
this.container.style.display = 'flex';
}
}
/**
*
*/
hide(): void {
if (this.container) {
this.container.style.display = 'none';
}
}
/**
*
*/
destroy(): void {
this.topToolbar = null as any;
this.templateSelect = null as any;
this.themeSelect = null as any;
this.fontSelect = null as any;
this.fontSizeDisplay = null as any;
this.pageContainer = null as any;
this.bottomToolbar = null as any;
this.pageNavigation = null as any;
this.pageNumberDisplay = null as any;
this.pages = [];
this.currentFile = null;
}
}