sa2kit 1.6.46 → 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.
- package/dist/{chunk-EONPKLEJ.mjs → chunk-6ZREZAGB.mjs} +7 -49
- package/dist/chunk-6ZREZAGB.mjs.map +1 -0
- package/dist/{chunk-3TNR6IMC.js → chunk-ERNZE5CJ.js} +6 -49
- package/dist/chunk-ERNZE5CJ.js.map +1 -0
- package/dist/{chunk-Z3G3IXEF.js → chunk-J6KKMP7V.js} +11 -11
- package/dist/{chunk-Z3G3IXEF.js.map → chunk-J6KKMP7V.js.map} +1 -1
- package/dist/{chunk-VBQFVXOW.mjs → chunk-RZCEWMOR.mjs} +3 -3
- package/dist/{chunk-VBQFVXOW.mjs.map → chunk-RZCEWMOR.mjs.map} +1 -1
- package/dist/showmasterpiece/index.js +33 -40
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +21 -28
- package/dist/showmasterpiece/index.mjs.map +1 -1
- package/dist/showmasterpiece/migration/index.js +29 -29
- package/dist/showmasterpiece/migration/index.mjs +2 -2
- package/dist/showmasterpiece/server/index.js +43 -43
- package/dist/showmasterpiece/server/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-3TNR6IMC.js.map +0 -1
- package/dist/chunk-EONPKLEJ.mjs.map +0 -1
|
@@ -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
|
-
|
|
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
|
|
7
|
+
return [];
|
|
41
8
|
}
|
|
42
|
-
const filtered = input.filter((item) => 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
|
|
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,
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
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
|
-
|
|
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
|
|
9
|
+
return [];
|
|
43
10
|
}
|
|
44
|
-
const filtered = input.filter((item) => 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
|
|
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-
|
|
168
|
-
//# sourceMappingURL=chunk-
|
|
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
|
|
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:
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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 =
|
|
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:
|
|
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:
|
|
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-
|
|
2814
|
-
//# sourceMappingURL=chunk-
|
|
2813
|
+
//# sourceMappingURL=chunk-J6KKMP7V.js.map
|
|
2814
|
+
//# sourceMappingURL=chunk-J6KKMP7V.js.map
|