sa2kit 1.6.47 → 1.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,51 +1,18 @@
1
1
  // src/showmasterpiece/types/index.ts
2
- var CollectionCategory = /* @__PURE__ */ ((CollectionCategory2) => {
3
- CollectionCategory2["COLLECTION"] = "collection";
4
- CollectionCategory2["ACRYLIC"] = "acrylic";
5
- CollectionCategory2["BADGE"] = "badge";
6
- CollectionCategory2["COLOR_PAPER"] = "color_paper";
7
- CollectionCategory2["TRANSPARENT_CARD"] = "transparent_card";
8
- CollectionCategory2["POSTCARD"] = "postcard";
9
- CollectionCategory2["LASER_TICKET"] = "laser_ticket";
10
- CollectionCategory2["CANVAS_BAG"] = "canvas_bag";
11
- CollectionCategory2["SPIRAL_NOTEBOOK"] = "spiral_notebook";
12
- CollectionCategory2["MOUSE_PAD"] = "mouse_pad";
13
- CollectionCategory2["SUPPORT_STICK"] = "support_stick";
14
- CollectionCategory2["KEYCHAIN"] = "keychain";
15
- CollectionCategory2["OTHER"] = "other";
16
- return CollectionCategory2;
17
- })(CollectionCategory || {});
18
- var defaultHomeTabCategoryOrder = [
19
- "canvas_bag" /* CANVAS_BAG */,
20
- "spiral_notebook" /* SPIRAL_NOTEBOOK */,
21
- "mouse_pad" /* MOUSE_PAD */,
22
- "acrylic" /* ACRYLIC */,
23
- "badge" /* BADGE */,
24
- "color_paper" /* COLOR_PAPER */,
25
- "keychain" /* KEYCHAIN */,
26
- "transparent_card" /* TRANSPARENT_CARD */,
27
- "laser_ticket" /* LASER_TICKET */
28
- ];
29
2
  function buildDefaultHomeTabConfig() {
30
- const config = [];
31
- let order = 0;
32
- defaultHomeTabCategoryOrder.forEach((category) => {
33
- config.push({ category, visible: true, order });
34
- order += 1;
35
- });
36
- return config;
3
+ return [];
37
4
  }
38
5
  function normalizeHomeTabConfig(input) {
39
6
  if (!input || input.length === 0) {
40
- return buildDefaultHomeTabConfig();
7
+ return [];
41
8
  }
42
- const filtered = input.filter((item) => item && isValidCategory(item.category)).map((item) => ({
9
+ const filtered = input.filter((item) => item && typeof item.category === "string" && item.category.trim().length > 0).map((item) => ({
43
10
  category: item.category,
44
11
  visible: item.visible ?? true,
45
12
  order: Number.isFinite(item.order) ? Number(item.order) : 0
46
13
  }));
47
14
  if (filtered.length === 0) {
48
- return buildDefaultHomeTabConfig();
15
+ return [];
49
16
  }
50
17
  filtered.sort((a, b) => a.order - b.order);
51
18
  const normalized = filtered.map((item, index) => ({ ...item, order: index }));
@@ -57,15 +24,6 @@ function normalizeHomeTabConfig(input) {
57
24
  }
58
25
  return normalized;
59
26
  }
60
- function getAvailableCategories() {
61
- return Object.values(CollectionCategory);
62
- }
63
- function isValidCategory(category) {
64
- if (typeof category !== "string") {
65
- return false;
66
- }
67
- return category.trim().length > 0;
68
- }
69
27
  var categories = {
70
28
  ["collection" /* COLLECTION */]: {
71
29
  value: "collection" /* COLLECTION */,
@@ -158,6 +116,6 @@ if (!Object.getOwnPropertyDescriptor(String.prototype, "categoryInfo")) {
158
116
  });
159
117
  }
160
118
 
161
- export { buildDefaultHomeTabConfig, getAvailableCategories, getCategoryDisplayName, normalizeHomeTabConfig };
162
- //# sourceMappingURL=chunk-EONPKLEJ.mjs.map
163
- //# sourceMappingURL=chunk-EONPKLEJ.mjs.map
119
+ export { buildDefaultHomeTabConfig, getCategoryDisplayName, normalizeHomeTabConfig };
120
+ //# sourceMappingURL=chunk-6ZREZAGB.mjs.map
121
+ //# sourceMappingURL=chunk-6ZREZAGB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/showmasterpiece/types/index.ts"],"names":[],"mappings":"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","file":"chunk-6ZREZAGB.mjs","sourcesContent":["/**\n * ShowMasterpiece 模块类型定义\n * \n * 包含画集、作品、配置等相关的TypeScript类型定义\n */\n\n// ===== 画集分类枚举 =====\n\n/**\n * 画集分类枚举\n * \n * 定义画集的各种分类:\n * - COLLECTION: 画集 - 用于展示艺术作品\n * - ACRYLIC: 立牌 - 立牌制品\n * - BADGE: 吧唧 - 徽章类商品\n * - COLOR_PAPER: 色纸 - 彩色纸张制品\n * - POSTCARD: 明信片 - 明信片类商品\n * - LASER_TICKET: 镭射票 - 镭射票类商品\n * - CANVAS_BAG: 帆布包 - 帆布包类商品\n * - SUPPORT_STICK: 应援棒 - 应援棒类商品\n * - OTHER: 挂件/钥匙扣 - 挂件/钥匙扣类商品\n */\nexport enum CollectionCategory {\n /** 画集 - 用于展示艺术作品 */\n COLLECTION = 'collection',\n /** 立牌 - 立牌制品 */\n ACRYLIC = 'acrylic',\n /** 吧唧 - 徽章类商品 */\n BADGE = 'badge',\n /** 色纸 - 彩色纸张制品 */\n COLOR_PAPER = 'color_paper',\n /** 透卡 - 透明卡片制品 */\n TRANSPARENT_CARD = 'transparent_card',\n /** 明信片 - 明信片类商品 */\n POSTCARD = 'postcard',\n /** 镭射票 - 镭射票类商品 */\n LASER_TICKET = 'laser_ticket',\n /** 帆布包 - 帆布包类商品 */\n CANVAS_BAG = 'canvas_bag',\n /** 线圈笔记本 - 线圈装订笔记本 */\n SPIRAL_NOTEBOOK = 'spiral_notebook',\n /** 鼠标垫 - 鼠标垫类商品 */\n MOUSE_PAD = 'mouse_pad',\n /** 应援棒 - 应援棒类商品 */\n SUPPORT_STICK = 'support_stick',\n /** 挂件/钥匙扣 - 挂件/钥匙扣类商品 */\n KEYCHAIN = 'keychain',\n /** 其它 */\n OTHER = 'other'\n}\n\n/**\n * 画集分类类型\n * 使用枚举值作为类型\n */\nexport type CollectionCategoryType = `${CollectionCategory}` | string;\n\n/**\n * 分类信息接口\n * 包含分类值和显示名称\n */\nexport interface CategoryInfo {\n /** 分类值 */\n value: CollectionCategoryType;\n /** 显示名称 */\n displayName: string;\n /** 描述信息 */\n description?: string;\n}\n\n// ===== 基础类型定义 =====\n\n/**\n * 艺术作品页面数据结构\n * \n * 表示画集中的单个作品页面,包含图片、标题、描述等信息。\n * 每个画集包含多个这样的作品页面。\n */\nexport interface ArtworkPage {\n /** 作品的唯一标识符 */\n id: number;\n \n /** 作品标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 作品图片(支持URL或base64编码) */\n image: string;\n \n /** 通用文件服务的图片文件ID(新架构,可选) */\n fileId?: string;\n \n /** 作品描述 */\n description: string;\n \n /** 创作时间(可选) */\n createdTime?: string;\n \n /** 作品主题(可选) */\n theme?: string;\n \n /** 作品年份(可选) */\n year?: string;\n \n /** 创作媒介(可选) */\n medium?: string;\n \n /** 作品尺寸(可选) */\n dimensions?: string;\n \n /** 在画集中的显示顺序 */\n pageOrder: number;\n \n /** 是否激活(可选,默认true) */\n isActive?: boolean;\n \n /** 创建时间(可选) */\n createdAt?: string;\n \n /** 更新时间(可选) */\n updatedAt?: string;\n}\n\n/**\n * 艺术画集数据结构\n * \n * 表示一个完整的艺术画集,包含多个作品页面和相关元数据。\n * 这是系统中的核心数据模型之一。\n */\nexport interface ArtCollection {\n /** 画集的唯一标识符 */\n id: number;\n \n /** 画集标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 画集封面图片路径 */\n coverImage: string;\n \n /** 通用文件服务的封面图片文件ID(新架构,可选) */\n coverImageFileId?: string;\n \n /** 画集描述 */\n description: string;\n \n /** 画集包含的所有作品页面 */\n pages: ArtworkPage[];\n \n /** 画集分类(使用枚举值) */\n category: CollectionCategoryType;\n \n /** 画集标签列表(可选) */\n tags?: string[];\n \n /** 是否已发布(可选,默认true) */\n isPublished?: boolean;\n \n /** 画集价格(单位:元,可选) */\n price?: number;\n \n /** 创建时间(可选) */\n createdAt?: string;\n \n /** 更新时间(可选) */\n updatedAt?: string;\n}\n\n// ===== 配置相关类型 =====\n\n/**\n * 系统配置数据结构\n * \n * 存储ShowMasterpiece模块的全局配置信息,\n * 包括网站设置、显示选项、功能开关等。\n */\nexport interface MasterpiecesConfig {\n /** 网站名称 */\n siteName: string;\n \n /** 网站描述 */\n siteDescription?: string;\n \n /** 首页主标题 */\n heroTitle: string;\n \n /** 首页副标题 */\n heroSubtitle?: string;\n \n /** 每页显示的最大画集数量 */\n maxCollectionsPerPage: number;\n \n /** 是否启用搜索功能 */\n enableSearch: boolean;\n \n /** 是否启用分类功能 */\n enableCategories: boolean;\n\n /** 首页分类Tab配置 */\n homeTabConfig: HomeTabConfigItem[];\n \n /** 默认分类 */\n defaultCategory: string;\n \n /** 主题模式:light(浅色)、dark(深色)、auto(自动) */\n theme: 'light' | 'dark' | 'auto';\n \n /** 界面语言:zh(中文)、en(英文) */\n language: 'zh' | 'en';\n}\n\nexport interface HomeTabConfigItem {\n category: CollectionCategoryType;\n visible: boolean;\n order: number;\n}\n\nexport const defaultHomeTabCategoryOrder: CollectionCategoryType[] = [\n CollectionCategory.CANVAS_BAG,\n CollectionCategory.SPIRAL_NOTEBOOK,\n CollectionCategory.MOUSE_PAD,\n CollectionCategory.ACRYLIC,\n CollectionCategory.BADGE,\n CollectionCategory.COLOR_PAPER,\n CollectionCategory.KEYCHAIN,\n CollectionCategory.TRANSPARENT_CARD,\n CollectionCategory.LASER_TICKET,\n];\n\nexport function buildDefaultHomeTabConfig(): HomeTabConfigItem[] {\n return [];\n}\n\nexport function normalizeHomeTabConfig(\n input?: HomeTabConfigItem[] | null,\n): HomeTabConfigItem[] {\n if (!input || input.length === 0) {\n return [];\n }\n\n const filtered = input\n .filter((item) => item && typeof item.category === 'string' && item.category.trim().length > 0)\n .map((item) => ({\n category: item.category,\n visible: item.visible ?? true,\n order: Number.isFinite(item.order) ? Number(item.order) : 0,\n }));\n\n if (filtered.length === 0) {\n return [];\n }\n\n filtered.sort((a, b) => a.order - b.order);\n const normalized = filtered.map((item, index) => ({ ...item, order: index }));\n\n if (!normalized.some((item) => item.visible)) {\n const firstItem = normalized[0];\n if (firstItem) {\n normalized[0] = { ...firstItem, visible: true };\n }\n }\n\n return normalized;\n}\n\n// ===== 表单数据类型 =====\n\n/**\n * 画集表单数据结构\n * \n * 用于创建和编辑画集时的表单数据\n */\nexport interface CollectionFormData {\n /** 画集标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 封面图片 */\n coverImage: string;\n \n /** 通用文件服务的封面图片文件ID */\n coverImageFileId?: string;\n \n /** 画集描述 */\n description: string;\n \n /** 画集分类(使用枚举值) */\n category: CollectionCategoryType;\n \n /** 画集标签列表 */\ntags: string[];\n \n /** 是否已发布 */\n isPublished: boolean;\n \n /** 画集价格(单位:元,可选) */\n price?: number;\n}\n\n/**\n * 作品表单数据结构\n * \n * 用于创建和编辑作品时的表单数据\n */\nexport interface ArtworkFormData {\n /** 作品标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 作品图片 */\n image?: string;\n \n /** 通用文件服务的图片文件ID */\n fileId?: string;\n \n /** 作品描述 */\n description: string;\n \n /** 创作时间 */\n createdTime: string;\n \n /** 作品主题 */\n theme: string;\n}\n\n/**\n * 配置表单数据结构\n * \n * 用于编辑系统配置时的表单数据\n */\nexport interface ConfigFormData {\n /** 网站名称 */\n siteName: string;\n \n /** 网站描述 */\n siteDescription: string;\n \n /** 首页主标题 */\n heroTitle: string;\n \n /** 首页副标题 */\n heroSubtitle: string;\n \n /** 每页显示的最大画集数量 */\n maxCollectionsPerPage: number;\n \n /** 是否启用搜索功能 */\n enableSearch: boolean;\n \n /** 是否启用分类功能 */\n enableCategories: boolean;\n\n /** 首页分类Tab配置 */\n homeTabConfig: HomeTabConfigItem[];\n \n /** 默认分类 */\n defaultCategory: string;\n \n /** 主题模式 */\n theme: 'light' | 'dark' | 'auto';\n \n /** 界面语言 */\n language: 'zh' | 'en';\n}\n\n// ===== 工具函数 =====\n\n/**\n * 获取所有可用的画集分类\n * \n * @returns 分类枚举值数组\n */\nexport function getAvailableCategories(): CollectionCategoryType[] {\n return [];\n}\n\n/**\n * 验证分类是否为有效值\n * \n * @param category - 要验证的分类值\n * @returns 是否为有效分类\n */\nexport function isValidCategory(category: string): category is CollectionCategoryType {\n if (typeof category !== 'string') {\n return false;\n }\n return category.trim().length > 0;\n}\n\n/**\n * 分类信息映射\n * 为每个分类提供完整的信息对象\n */\nexport const categories = {\n [CollectionCategory.COLLECTION]: {\n value: CollectionCategory.COLLECTION,\n displayName: '画集',\n description: '用于展示艺术作品'\n },\n [CollectionCategory.ACRYLIC]: {\n value: CollectionCategory.ACRYLIC,\n displayName: '立牌',\n description: '立牌制品'\n },\n [CollectionCategory.BADGE]: {\n value: CollectionCategory.BADGE,\n displayName: '吧唧',\n description: '徽章类商品'\n },\n [CollectionCategory.COLOR_PAPER]: {\n value: CollectionCategory.COLOR_PAPER,\n displayName: '色纸',\n description: '彩色纸张制品'\n },\n [CollectionCategory.TRANSPARENT_CARD]: {\n value: CollectionCategory.TRANSPARENT_CARD,\n displayName: '透卡',\n description: '透明卡片制品'\n },\n [CollectionCategory.POSTCARD]: {\n value: CollectionCategory.POSTCARD,\n displayName: '明信片',\n description: '明信片类商品'\n },\n [CollectionCategory.LASER_TICKET]: {\n value: CollectionCategory.LASER_TICKET,\n displayName: '镭射票',\n description: '镭射票类商品'\n },\n [CollectionCategory.CANVAS_BAG]: {\n value: CollectionCategory.CANVAS_BAG,\n displayName: '帆布包',\n description: '帆布包类商品'\n },\n [CollectionCategory.SPIRAL_NOTEBOOK]: {\n value: CollectionCategory.SPIRAL_NOTEBOOK,\n displayName: '线圈笔记本',\n description: '线圈装订笔记本'\n },\n [CollectionCategory.MOUSE_PAD]: {\n value: CollectionCategory.MOUSE_PAD,\n displayName: '鼠标垫',\n description: '鼠标垫类商品'\n },\n [CollectionCategory.SUPPORT_STICK]: {\n value: CollectionCategory.SUPPORT_STICK,\n displayName: '应援棒',\n description: '应援棒类商品'\n },\n [CollectionCategory.KEYCHAIN]: {\n value: CollectionCategory.KEYCHAIN,\n displayName: '挂件/钥匙扣',\n description: '挂件/钥匙扣类商品'\n },\n [CollectionCategory.OTHER]: {\n value: CollectionCategory.OTHER,\n displayName: '其它',\n description: '其他类型商品'\n }\n} as const satisfies Record<CollectionCategory, CategoryInfo>;\n\n\n/**\n * 获取分类的显示名称\n * 支持 collection.category.displayName 的调用方式\n */\nexport function getCategoryDisplayName(category: CollectionCategoryType): string {\n return categories[category as CollectionCategory]?.displayName || category;\n}\n\n/**\n * 获取分类的完整信息\n * 支持 collection.category.displayName 的调用方式\n */\nexport function getCategoryInfo(category: CollectionCategoryType): CategoryInfo {\n return categories[category as CollectionCategory] || {\n value: category,\n displayName: category,\n description: ''\n };\n}\n\n/**\n * 扩展 CollectionCategoryType,使其支持 displayName 属性访问\n * 使用方式: collection.category.displayName\n */\ndeclare global {\n interface String {\n get displayName(): string;\n get categoryInfo(): CategoryInfo;\n }\n}\n\n// 为字符串类型添加 displayName getter(避免重复定义)\nif (!Object.getOwnPropertyDescriptor(String.prototype, 'displayName')) {\n Object.defineProperty(String.prototype, 'displayName', {\n get(this: string): string {\n return getCategoryDisplayName(this as CollectionCategoryType);\n }\n });\n}\n\n// 为字符串类型添加 categoryInfo getter(避免重复定义)\nif (!Object.getOwnPropertyDescriptor(String.prototype, 'categoryInfo')) {\n Object.defineProperty(String.prototype, 'categoryInfo', {\n get(this: string): CategoryInfo {\n return getCategoryInfo(this as CollectionCategoryType);\n }\n });\n}\n\n/**\n * 获取分类的描述信息 (枚举调用方式)\n */\nexport const CategoryDescription = {\n [CollectionCategory.COLLECTION]: '用于展示艺术作品,包含多个作品页面的画集',\n [CollectionCategory.ACRYLIC]: '立牌制品,如亚克力立牌、展示立牌等',\n [CollectionCategory.BADGE]: '徽章类商品,如徽章、钥匙扣等',\n [CollectionCategory.COLOR_PAPER]: '彩色纸张制品,如彩色卡纸、彩色打印纸等',\n [CollectionCategory.TRANSPARENT_CARD]: '透明卡片制品,如透明卡片、透明卡等',\n [CollectionCategory.POSTCARD]: '明信片类商品,如艺术明信片、纪念明信片等',\n [CollectionCategory.LASER_TICKET]: '镭射票类商品,如演唱会门票、电影票等',\n [CollectionCategory.CANVAS_BAG]: '帆布包类商品,如帆布袋、帆布背包等',\n [CollectionCategory.SPIRAL_NOTEBOOK]: '线圈装订笔记本,如线圈笔记本、线圈装订笔记本等',\n [CollectionCategory.MOUSE_PAD]: '鼠标垫类商品,如鼠标垫、鼠标垫等',\n [CollectionCategory.SUPPORT_STICK]: '应援棒类商品,如荧光棒、应援棒等',\n [CollectionCategory.KEYCHAIN]: '挂件/钥匙扣类商品,如装饰挂件、钥匙扣等',\n [CollectionCategory.OTHER]: '挂件/钥匙扣类商品,如装饰挂件、钥匙扣等'\n} as const;\n\n// ===== 上下文类型导出 =====\nexport type { CartContextState } from './context'; \n"]}
@@ -1,53 +1,20 @@
1
1
  'use strict';
2
2
 
3
3
  // src/showmasterpiece/types/index.ts
4
- var CollectionCategory = /* @__PURE__ */ ((CollectionCategory2) => {
5
- CollectionCategory2["COLLECTION"] = "collection";
6
- CollectionCategory2["ACRYLIC"] = "acrylic";
7
- CollectionCategory2["BADGE"] = "badge";
8
- CollectionCategory2["COLOR_PAPER"] = "color_paper";
9
- CollectionCategory2["TRANSPARENT_CARD"] = "transparent_card";
10
- CollectionCategory2["POSTCARD"] = "postcard";
11
- CollectionCategory2["LASER_TICKET"] = "laser_ticket";
12
- CollectionCategory2["CANVAS_BAG"] = "canvas_bag";
13
- CollectionCategory2["SPIRAL_NOTEBOOK"] = "spiral_notebook";
14
- CollectionCategory2["MOUSE_PAD"] = "mouse_pad";
15
- CollectionCategory2["SUPPORT_STICK"] = "support_stick";
16
- CollectionCategory2["KEYCHAIN"] = "keychain";
17
- CollectionCategory2["OTHER"] = "other";
18
- return CollectionCategory2;
19
- })(CollectionCategory || {});
20
- var defaultHomeTabCategoryOrder = [
21
- "canvas_bag" /* CANVAS_BAG */,
22
- "spiral_notebook" /* SPIRAL_NOTEBOOK */,
23
- "mouse_pad" /* MOUSE_PAD */,
24
- "acrylic" /* ACRYLIC */,
25
- "badge" /* BADGE */,
26
- "color_paper" /* COLOR_PAPER */,
27
- "keychain" /* KEYCHAIN */,
28
- "transparent_card" /* TRANSPARENT_CARD */,
29
- "laser_ticket" /* LASER_TICKET */
30
- ];
31
4
  function buildDefaultHomeTabConfig() {
32
- const config = [];
33
- let order = 0;
34
- defaultHomeTabCategoryOrder.forEach((category) => {
35
- config.push({ category, visible: true, order });
36
- order += 1;
37
- });
38
- return config;
5
+ return [];
39
6
  }
40
7
  function normalizeHomeTabConfig(input) {
41
8
  if (!input || input.length === 0) {
42
- return buildDefaultHomeTabConfig();
9
+ return [];
43
10
  }
44
- const filtered = input.filter((item) => item && isValidCategory(item.category)).map((item) => ({
11
+ const filtered = input.filter((item) => item && typeof item.category === "string" && item.category.trim().length > 0).map((item) => ({
45
12
  category: item.category,
46
13
  visible: item.visible ?? true,
47
14
  order: Number.isFinite(item.order) ? Number(item.order) : 0
48
15
  }));
49
16
  if (filtered.length === 0) {
50
- return buildDefaultHomeTabConfig();
17
+ return [];
51
18
  }
52
19
  filtered.sort((a, b) => a.order - b.order);
53
20
  const normalized = filtered.map((item, index) => ({ ...item, order: index }));
@@ -59,15 +26,6 @@ function normalizeHomeTabConfig(input) {
59
26
  }
60
27
  return normalized;
61
28
  }
62
- function getAvailableCategories() {
63
- return Object.values(CollectionCategory);
64
- }
65
- function isValidCategory(category) {
66
- if (typeof category !== "string") {
67
- return false;
68
- }
69
- return category.trim().length > 0;
70
- }
71
29
  var categories = {
72
30
  ["collection" /* COLLECTION */]: {
73
31
  value: "collection" /* COLLECTION */,
@@ -161,8 +119,7 @@ if (!Object.getOwnPropertyDescriptor(String.prototype, "categoryInfo")) {
161
119
  }
162
120
 
163
121
  exports.buildDefaultHomeTabConfig = buildDefaultHomeTabConfig;
164
- exports.getAvailableCategories = getAvailableCategories;
165
122
  exports.getCategoryDisplayName = getCategoryDisplayName;
166
123
  exports.normalizeHomeTabConfig = normalizeHomeTabConfig;
167
- //# sourceMappingURL=chunk-3TNR6IMC.js.map
168
- //# sourceMappingURL=chunk-3TNR6IMC.js.map
124
+ //# sourceMappingURL=chunk-ERNZE5CJ.js.map
125
+ //# sourceMappingURL=chunk-ERNZE5CJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/showmasterpiece/types/index.ts"],"names":[],"mappings":"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","file":"chunk-ERNZE5CJ.js","sourcesContent":["/**\n * ShowMasterpiece 模块类型定义\n * \n * 包含画集、作品、配置等相关的TypeScript类型定义\n */\n\n// ===== 画集分类枚举 =====\n\n/**\n * 画集分类枚举\n * \n * 定义画集的各种分类:\n * - COLLECTION: 画集 - 用于展示艺术作品\n * - ACRYLIC: 立牌 - 立牌制品\n * - BADGE: 吧唧 - 徽章类商品\n * - COLOR_PAPER: 色纸 - 彩色纸张制品\n * - POSTCARD: 明信片 - 明信片类商品\n * - LASER_TICKET: 镭射票 - 镭射票类商品\n * - CANVAS_BAG: 帆布包 - 帆布包类商品\n * - SUPPORT_STICK: 应援棒 - 应援棒类商品\n * - OTHER: 挂件/钥匙扣 - 挂件/钥匙扣类商品\n */\nexport enum CollectionCategory {\n /** 画集 - 用于展示艺术作品 */\n COLLECTION = 'collection',\n /** 立牌 - 立牌制品 */\n ACRYLIC = 'acrylic',\n /** 吧唧 - 徽章类商品 */\n BADGE = 'badge',\n /** 色纸 - 彩色纸张制品 */\n COLOR_PAPER = 'color_paper',\n /** 透卡 - 透明卡片制品 */\n TRANSPARENT_CARD = 'transparent_card',\n /** 明信片 - 明信片类商品 */\n POSTCARD = 'postcard',\n /** 镭射票 - 镭射票类商品 */\n LASER_TICKET = 'laser_ticket',\n /** 帆布包 - 帆布包类商品 */\n CANVAS_BAG = 'canvas_bag',\n /** 线圈笔记本 - 线圈装订笔记本 */\n SPIRAL_NOTEBOOK = 'spiral_notebook',\n /** 鼠标垫 - 鼠标垫类商品 */\n MOUSE_PAD = 'mouse_pad',\n /** 应援棒 - 应援棒类商品 */\n SUPPORT_STICK = 'support_stick',\n /** 挂件/钥匙扣 - 挂件/钥匙扣类商品 */\n KEYCHAIN = 'keychain',\n /** 其它 */\n OTHER = 'other'\n}\n\n/**\n * 画集分类类型\n * 使用枚举值作为类型\n */\nexport type CollectionCategoryType = `${CollectionCategory}` | string;\n\n/**\n * 分类信息接口\n * 包含分类值和显示名称\n */\nexport interface CategoryInfo {\n /** 分类值 */\n value: CollectionCategoryType;\n /** 显示名称 */\n displayName: string;\n /** 描述信息 */\n description?: string;\n}\n\n// ===== 基础类型定义 =====\n\n/**\n * 艺术作品页面数据结构\n * \n * 表示画集中的单个作品页面,包含图片、标题、描述等信息。\n * 每个画集包含多个这样的作品页面。\n */\nexport interface ArtworkPage {\n /** 作品的唯一标识符 */\n id: number;\n \n /** 作品标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 作品图片(支持URL或base64编码) */\n image: string;\n \n /** 通用文件服务的图片文件ID(新架构,可选) */\n fileId?: string;\n \n /** 作品描述 */\n description: string;\n \n /** 创作时间(可选) */\n createdTime?: string;\n \n /** 作品主题(可选) */\n theme?: string;\n \n /** 作品年份(可选) */\n year?: string;\n \n /** 创作媒介(可选) */\n medium?: string;\n \n /** 作品尺寸(可选) */\n dimensions?: string;\n \n /** 在画集中的显示顺序 */\n pageOrder: number;\n \n /** 是否激活(可选,默认true) */\n isActive?: boolean;\n \n /** 创建时间(可选) */\n createdAt?: string;\n \n /** 更新时间(可选) */\n updatedAt?: string;\n}\n\n/**\n * 艺术画集数据结构\n * \n * 表示一个完整的艺术画集,包含多个作品页面和相关元数据。\n * 这是系统中的核心数据模型之一。\n */\nexport interface ArtCollection {\n /** 画集的唯一标识符 */\n id: number;\n \n /** 画集标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 画集封面图片路径 */\n coverImage: string;\n \n /** 通用文件服务的封面图片文件ID(新架构,可选) */\n coverImageFileId?: string;\n \n /** 画集描述 */\n description: string;\n \n /** 画集包含的所有作品页面 */\n pages: ArtworkPage[];\n \n /** 画集分类(使用枚举值) */\n category: CollectionCategoryType;\n \n /** 画集标签列表(可选) */\n tags?: string[];\n \n /** 是否已发布(可选,默认true) */\n isPublished?: boolean;\n \n /** 画集价格(单位:元,可选) */\n price?: number;\n \n /** 创建时间(可选) */\n createdAt?: string;\n \n /** 更新时间(可选) */\n updatedAt?: string;\n}\n\n// ===== 配置相关类型 =====\n\n/**\n * 系统配置数据结构\n * \n * 存储ShowMasterpiece模块的全局配置信息,\n * 包括网站设置、显示选项、功能开关等。\n */\nexport interface MasterpiecesConfig {\n /** 网站名称 */\n siteName: string;\n \n /** 网站描述 */\n siteDescription?: string;\n \n /** 首页主标题 */\n heroTitle: string;\n \n /** 首页副标题 */\n heroSubtitle?: string;\n \n /** 每页显示的最大画集数量 */\n maxCollectionsPerPage: number;\n \n /** 是否启用搜索功能 */\n enableSearch: boolean;\n \n /** 是否启用分类功能 */\n enableCategories: boolean;\n\n /** 首页分类Tab配置 */\n homeTabConfig: HomeTabConfigItem[];\n \n /** 默认分类 */\n defaultCategory: string;\n \n /** 主题模式:light(浅色)、dark(深色)、auto(自动) */\n theme: 'light' | 'dark' | 'auto';\n \n /** 界面语言:zh(中文)、en(英文) */\n language: 'zh' | 'en';\n}\n\nexport interface HomeTabConfigItem {\n category: CollectionCategoryType;\n visible: boolean;\n order: number;\n}\n\nexport const defaultHomeTabCategoryOrder: CollectionCategoryType[] = [\n CollectionCategory.CANVAS_BAG,\n CollectionCategory.SPIRAL_NOTEBOOK,\n CollectionCategory.MOUSE_PAD,\n CollectionCategory.ACRYLIC,\n CollectionCategory.BADGE,\n CollectionCategory.COLOR_PAPER,\n CollectionCategory.KEYCHAIN,\n CollectionCategory.TRANSPARENT_CARD,\n CollectionCategory.LASER_TICKET,\n];\n\nexport function buildDefaultHomeTabConfig(): HomeTabConfigItem[] {\n return [];\n}\n\nexport function normalizeHomeTabConfig(\n input?: HomeTabConfigItem[] | null,\n): HomeTabConfigItem[] {\n if (!input || input.length === 0) {\n return [];\n }\n\n const filtered = input\n .filter((item) => item && typeof item.category === 'string' && item.category.trim().length > 0)\n .map((item) => ({\n category: item.category,\n visible: item.visible ?? true,\n order: Number.isFinite(item.order) ? Number(item.order) : 0,\n }));\n\n if (filtered.length === 0) {\n return [];\n }\n\n filtered.sort((a, b) => a.order - b.order);\n const normalized = filtered.map((item, index) => ({ ...item, order: index }));\n\n if (!normalized.some((item) => item.visible)) {\n const firstItem = normalized[0];\n if (firstItem) {\n normalized[0] = { ...firstItem, visible: true };\n }\n }\n\n return normalized;\n}\n\n// ===== 表单数据类型 =====\n\n/**\n * 画集表单数据结构\n * \n * 用于创建和编辑画集时的表单数据\n */\nexport interface CollectionFormData {\n /** 画集标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 封面图片 */\n coverImage: string;\n \n /** 通用文件服务的封面图片文件ID */\n coverImageFileId?: string;\n \n /** 画集描述 */\n description: string;\n \n /** 画集分类(使用枚举值) */\n category: CollectionCategoryType;\n \n /** 画集标签列表 */\ntags: string[];\n \n /** 是否已发布 */\n isPublished: boolean;\n \n /** 画集价格(单位:元,可选) */\n price?: number;\n}\n\n/**\n * 作品表单数据结构\n * \n * 用于创建和编辑作品时的表单数据\n */\nexport interface ArtworkFormData {\n /** 作品标题 */\n title: string;\n \n /** 编号 */\n number: string;\n \n /** 作品图片 */\n image?: string;\n \n /** 通用文件服务的图片文件ID */\n fileId?: string;\n \n /** 作品描述 */\n description: string;\n \n /** 创作时间 */\n createdTime: string;\n \n /** 作品主题 */\n theme: string;\n}\n\n/**\n * 配置表单数据结构\n * \n * 用于编辑系统配置时的表单数据\n */\nexport interface ConfigFormData {\n /** 网站名称 */\n siteName: string;\n \n /** 网站描述 */\n siteDescription: string;\n \n /** 首页主标题 */\n heroTitle: string;\n \n /** 首页副标题 */\n heroSubtitle: string;\n \n /** 每页显示的最大画集数量 */\n maxCollectionsPerPage: number;\n \n /** 是否启用搜索功能 */\n enableSearch: boolean;\n \n /** 是否启用分类功能 */\n enableCategories: boolean;\n\n /** 首页分类Tab配置 */\n homeTabConfig: HomeTabConfigItem[];\n \n /** 默认分类 */\n defaultCategory: string;\n \n /** 主题模式 */\n theme: 'light' | 'dark' | 'auto';\n \n /** 界面语言 */\n language: 'zh' | 'en';\n}\n\n// ===== 工具函数 =====\n\n/**\n * 获取所有可用的画集分类\n * \n * @returns 分类枚举值数组\n */\nexport function getAvailableCategories(): CollectionCategoryType[] {\n return [];\n}\n\n/**\n * 验证分类是否为有效值\n * \n * @param category - 要验证的分类值\n * @returns 是否为有效分类\n */\nexport function isValidCategory(category: string): category is CollectionCategoryType {\n if (typeof category !== 'string') {\n return false;\n }\n return category.trim().length > 0;\n}\n\n/**\n * 分类信息映射\n * 为每个分类提供完整的信息对象\n */\nexport const categories = {\n [CollectionCategory.COLLECTION]: {\n value: CollectionCategory.COLLECTION,\n displayName: '画集',\n description: '用于展示艺术作品'\n },\n [CollectionCategory.ACRYLIC]: {\n value: CollectionCategory.ACRYLIC,\n displayName: '立牌',\n description: '立牌制品'\n },\n [CollectionCategory.BADGE]: {\n value: CollectionCategory.BADGE,\n displayName: '吧唧',\n description: '徽章类商品'\n },\n [CollectionCategory.COLOR_PAPER]: {\n value: CollectionCategory.COLOR_PAPER,\n displayName: '色纸',\n description: '彩色纸张制品'\n },\n [CollectionCategory.TRANSPARENT_CARD]: {\n value: CollectionCategory.TRANSPARENT_CARD,\n displayName: '透卡',\n description: '透明卡片制品'\n },\n [CollectionCategory.POSTCARD]: {\n value: CollectionCategory.POSTCARD,\n displayName: '明信片',\n description: '明信片类商品'\n },\n [CollectionCategory.LASER_TICKET]: {\n value: CollectionCategory.LASER_TICKET,\n displayName: '镭射票',\n description: '镭射票类商品'\n },\n [CollectionCategory.CANVAS_BAG]: {\n value: CollectionCategory.CANVAS_BAG,\n displayName: '帆布包',\n description: '帆布包类商品'\n },\n [CollectionCategory.SPIRAL_NOTEBOOK]: {\n value: CollectionCategory.SPIRAL_NOTEBOOK,\n displayName: '线圈笔记本',\n description: '线圈装订笔记本'\n },\n [CollectionCategory.MOUSE_PAD]: {\n value: CollectionCategory.MOUSE_PAD,\n displayName: '鼠标垫',\n description: '鼠标垫类商品'\n },\n [CollectionCategory.SUPPORT_STICK]: {\n value: CollectionCategory.SUPPORT_STICK,\n displayName: '应援棒',\n description: '应援棒类商品'\n },\n [CollectionCategory.KEYCHAIN]: {\n value: CollectionCategory.KEYCHAIN,\n displayName: '挂件/钥匙扣',\n description: '挂件/钥匙扣类商品'\n },\n [CollectionCategory.OTHER]: {\n value: CollectionCategory.OTHER,\n displayName: '其它',\n description: '其他类型商品'\n }\n} as const satisfies Record<CollectionCategory, CategoryInfo>;\n\n\n/**\n * 获取分类的显示名称\n * 支持 collection.category.displayName 的调用方式\n */\nexport function getCategoryDisplayName(category: CollectionCategoryType): string {\n return categories[category as CollectionCategory]?.displayName || category;\n}\n\n/**\n * 获取分类的完整信息\n * 支持 collection.category.displayName 的调用方式\n */\nexport function getCategoryInfo(category: CollectionCategoryType): CategoryInfo {\n return categories[category as CollectionCategory] || {\n value: category,\n displayName: category,\n description: ''\n };\n}\n\n/**\n * 扩展 CollectionCategoryType,使其支持 displayName 属性访问\n * 使用方式: collection.category.displayName\n */\ndeclare global {\n interface String {\n get displayName(): string;\n get categoryInfo(): CategoryInfo;\n }\n}\n\n// 为字符串类型添加 displayName getter(避免重复定义)\nif (!Object.getOwnPropertyDescriptor(String.prototype, 'displayName')) {\n Object.defineProperty(String.prototype, 'displayName', {\n get(this: string): string {\n return getCategoryDisplayName(this as CollectionCategoryType);\n }\n });\n}\n\n// 为字符串类型添加 categoryInfo getter(避免重复定义)\nif (!Object.getOwnPropertyDescriptor(String.prototype, 'categoryInfo')) {\n Object.defineProperty(String.prototype, 'categoryInfo', {\n get(this: string): CategoryInfo {\n return getCategoryInfo(this as CollectionCategoryType);\n }\n });\n}\n\n/**\n * 获取分类的描述信息 (枚举调用方式)\n */\nexport const CategoryDescription = {\n [CollectionCategory.COLLECTION]: '用于展示艺术作品,包含多个作品页面的画集',\n [CollectionCategory.ACRYLIC]: '立牌制品,如亚克力立牌、展示立牌等',\n [CollectionCategory.BADGE]: '徽章类商品,如徽章、钥匙扣等',\n [CollectionCategory.COLOR_PAPER]: '彩色纸张制品,如彩色卡纸、彩色打印纸等',\n [CollectionCategory.TRANSPARENT_CARD]: '透明卡片制品,如透明卡片、透明卡等',\n [CollectionCategory.POSTCARD]: '明信片类商品,如艺术明信片、纪念明信片等',\n [CollectionCategory.LASER_TICKET]: '镭射票类商品,如演唱会门票、电影票等',\n [CollectionCategory.CANVAS_BAG]: '帆布包类商品,如帆布袋、帆布背包等',\n [CollectionCategory.SPIRAL_NOTEBOOK]: '线圈装订笔记本,如线圈笔记本、线圈装订笔记本等',\n [CollectionCategory.MOUSE_PAD]: '鼠标垫类商品,如鼠标垫、鼠标垫等',\n [CollectionCategory.SUPPORT_STICK]: '应援棒类商品,如荧光棒、应援棒等',\n [CollectionCategory.KEYCHAIN]: '挂件/钥匙扣类商品,如装饰挂件、钥匙扣等',\n [CollectionCategory.OTHER]: '挂件/钥匙扣类商品,如装饰挂件、钥匙扣等'\n} as const;\n\n// ===== 上下文类型导出 =====\nexport type { CartContextState } from './context'; \n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk3TNR6IMC_js = require('./chunk-3TNR6IMC.js');
3
+ var chunkERNZE5CJ_js = require('./chunk-ERNZE5CJ.js');
4
4
  var drizzleOrm = require('drizzle-orm');
5
5
  var pgCore = require('drizzle-orm/pg-core');
6
6
 
@@ -900,7 +900,7 @@ var MasterpiecesConfigDbService = class {
900
900
  maxCollectionsPerPage: configData.maxCollectionsPerPage || 9,
901
901
  enableSearch: configData.enableSearch ?? true,
902
902
  enableCategories: configData.enableCategories ?? true,
903
- homeTabConfig: chunk3TNR6IMC_js.normalizeHomeTabConfig(configData.homeTabConfig),
903
+ homeTabConfig: chunkERNZE5CJ_js.normalizeHomeTabConfig(configData.homeTabConfig),
904
904
  defaultCategory: configData.defaultCategory || "all",
905
905
  theme: configData.theme || "light",
906
906
  language: configData.language || "zh",
@@ -916,7 +916,7 @@ var MasterpiecesConfigDbService = class {
916
916
  if (configData.maxCollectionsPerPage !== void 0) updateData.maxCollectionsPerPage = configData.maxCollectionsPerPage;
917
917
  if (configData.enableSearch !== void 0) updateData.enableSearch = configData.enableSearch;
918
918
  if (configData.enableCategories !== void 0) updateData.enableCategories = configData.enableCategories;
919
- if (configData.homeTabConfig !== void 0) updateData.homeTabConfig = chunk3TNR6IMC_js.normalizeHomeTabConfig(configData.homeTabConfig);
919
+ if (configData.homeTabConfig !== void 0) updateData.homeTabConfig = chunkERNZE5CJ_js.normalizeHomeTabConfig(configData.homeTabConfig);
920
920
  if (configData.defaultCategory !== void 0) updateData.defaultCategory = configData.defaultCategory;
921
921
  if (configData.theme !== void 0) updateData.theme = configData.theme;
922
922
  if (configData.language !== void 0) updateData.language = configData.language;
@@ -937,7 +937,7 @@ var MasterpiecesConfigDbService = class {
937
937
  maxCollectionsPerPage: 9,
938
938
  enableSearch: true,
939
939
  enableCategories: true,
940
- homeTabConfig: chunk3TNR6IMC_js.buildDefaultHomeTabConfig(),
940
+ homeTabConfig: chunkERNZE5CJ_js.buildDefaultHomeTabConfig(),
941
941
  defaultCategory: "all",
942
942
  theme: "light",
943
943
  language: "zh"
@@ -953,7 +953,7 @@ var MasterpiecesConfigDbService = class {
953
953
  maxCollectionsPerPage: dbConfig.maxCollectionsPerPage,
954
954
  enableSearch: dbConfig.enableSearch,
955
955
  enableCategories: dbConfig.enableCategories,
956
- homeTabConfig: chunk3TNR6IMC_js.normalizeHomeTabConfig(dbConfig.homeTabConfig),
956
+ homeTabConfig: chunkERNZE5CJ_js.normalizeHomeTabConfig(dbConfig.homeTabConfig),
957
957
  defaultCategory: dbConfig.defaultCategory,
958
958
  theme: dbConfig.theme,
959
959
  language: dbConfig.language
@@ -1025,7 +1025,7 @@ var MasterpiecesConfigDbService2 = class {
1025
1025
  maxCollectionsPerPage: configData.maxCollectionsPerPage || 9,
1026
1026
  enableSearch: configData.enableSearch ?? true,
1027
1027
  enableCategories: configData.enableCategories ?? true,
1028
- homeTabConfig: chunk3TNR6IMC_js.normalizeHomeTabConfig(configData.homeTabConfig),
1028
+ homeTabConfig: chunkERNZE5CJ_js.normalizeHomeTabConfig(configData.homeTabConfig),
1029
1029
  defaultCategory: configData.defaultCategory || "all",
1030
1030
  theme: configData.theme || "light",
1031
1031
  language: configData.language || "zh",
@@ -1043,7 +1043,7 @@ var MasterpiecesConfigDbService2 = class {
1043
1043
  if (configData.maxCollectionsPerPage !== void 0) updateData.maxCollectionsPerPage = configData.maxCollectionsPerPage;
1044
1044
  if (configData.enableSearch !== void 0) updateData.enableSearch = configData.enableSearch;
1045
1045
  if (configData.enableCategories !== void 0) updateData.enableCategories = configData.enableCategories;
1046
- if (configData.homeTabConfig !== void 0) updateData.homeTabConfig = chunk3TNR6IMC_js.normalizeHomeTabConfig(configData.homeTabConfig);
1046
+ if (configData.homeTabConfig !== void 0) updateData.homeTabConfig = chunkERNZE5CJ_js.normalizeHomeTabConfig(configData.homeTabConfig);
1047
1047
  if (configData.defaultCategory !== void 0) updateData.defaultCategory = configData.defaultCategory;
1048
1048
  if (configData.theme !== void 0) updateData.theme = configData.theme;
1049
1049
  if (configData.language !== void 0) updateData.language = configData.language;
@@ -1067,7 +1067,7 @@ var MasterpiecesConfigDbService2 = class {
1067
1067
  maxCollectionsPerPage: 9,
1068
1068
  enableSearch: true,
1069
1069
  enableCategories: true,
1070
- homeTabConfig: chunk3TNR6IMC_js.buildDefaultHomeTabConfig(),
1070
+ homeTabConfig: chunkERNZE5CJ_js.buildDefaultHomeTabConfig(),
1071
1071
  defaultCategory: "all",
1072
1072
  theme: "light",
1073
1073
  language: "zh"
@@ -1084,7 +1084,7 @@ var MasterpiecesConfigDbService2 = class {
1084
1084
  maxCollectionsPerPage: dbConfig.maxCollectionsPerPage,
1085
1085
  enableSearch: dbConfig.enableSearch,
1086
1086
  enableCategories: dbConfig.enableCategories,
1087
- homeTabConfig: chunk3TNR6IMC_js.normalizeHomeTabConfig(dbConfig.homeTabConfig),
1087
+ homeTabConfig: chunkERNZE5CJ_js.normalizeHomeTabConfig(dbConfig.homeTabConfig),
1088
1088
  defaultCategory: dbConfig.defaultCategory,
1089
1089
  theme: dbConfig.theme,
1090
1090
  language: dbConfig.language
@@ -2810,5 +2810,5 @@ exports.showmasterConfigHistory = showmasterConfigHistory;
2810
2810
  exports.showmasterConfigItems = showmasterConfigItems;
2811
2811
  exports.showmasterConfigPermissions = showmasterConfigPermissions;
2812
2812
  exports.tagsDbService = tagsDbService;
2813
- //# sourceMappingURL=chunk-Z3G3IXEF.js.map
2814
- //# sourceMappingURL=chunk-Z3G3IXEF.js.map
2813
+ //# sourceMappingURL=chunk-J6KKMP7V.js.map
2814
+ //# sourceMappingURL=chunk-J6KKMP7V.js.map