update at 2025-10-08 19:45:28
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user