sa2kit 1.6.70 → 1.6.72
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/festivalCard/core/index.d.mts +1 -1
- package/dist/festivalCard/core/index.d.ts +1 -1
- package/dist/festivalCard/core/index.js +4 -2
- package/dist/festivalCard/core/index.js.map +1 -1
- package/dist/festivalCard/core/index.mjs +4 -2
- package/dist/festivalCard/core/index.mjs.map +1 -1
- package/dist/festivalCard/index.d.mts +2 -2
- package/dist/festivalCard/index.d.ts +2 -2
- package/dist/festivalCard/index.js +79 -139
- package/dist/festivalCard/index.js.map +1 -1
- package/dist/festivalCard/index.mjs +79 -139
- package/dist/festivalCard/index.mjs.map +1 -1
- package/dist/festivalCard/miniapp/index.d.mts +3 -3
- package/dist/festivalCard/miniapp/index.d.ts +3 -3
- package/dist/festivalCard/miniapp/index.js +21 -15
- package/dist/festivalCard/miniapp/index.js.map +1 -1
- package/dist/festivalCard/miniapp/index.mjs +21 -15
- package/dist/festivalCard/miniapp/index.mjs.map +1 -1
- package/dist/festivalCard/routes/index.d.mts +1 -1
- package/dist/festivalCard/routes/index.d.ts +1 -1
- package/dist/festivalCard/routes/index.js +4 -2
- package/dist/festivalCard/routes/index.js.map +1 -1
- package/dist/festivalCard/routes/index.mjs +4 -2
- package/dist/festivalCard/routes/index.mjs.map +1 -1
- package/dist/festivalCard/server/index.d.mts +1 -1
- package/dist/festivalCard/server/index.d.ts +1 -1
- package/dist/festivalCard/web/index.d.mts +3 -3
- package/dist/festivalCard/web/index.d.ts +3 -3
- package/dist/festivalCard/web/index.js +79 -139
- package/dist/festivalCard/web/index.js.map +1 -1
- package/dist/festivalCard/web/index.mjs +79 -139
- package/dist/festivalCard/web/index.mjs.map +1 -1
- package/dist/{festivalCardService-CgNBOjjO.d.mts → festivalCardService-CqBTVC6x.d.mts} +1 -1
- package/dist/{festivalCardService-ClJiAP6P.d.ts → festivalCardService-iFKu0k9q.d.ts} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +79 -139
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -139
- package/dist/index.mjs.map +1 -1
- package/dist/{types-COyg0XDw.d.mts → types-D2WetAPc.d.mts} +1 -0
- package/dist/{types-COyg0XDw.d.ts → types-D2WetAPc.d.ts} +1 -0
- package/package.json +1 -1
|
@@ -55,7 +55,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
55
55
|
src: "https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80",
|
|
56
56
|
fit: "cover",
|
|
57
57
|
borderRadius: 16,
|
|
58
|
-
alt: "holiday"
|
|
58
|
+
alt: "holiday",
|
|
59
|
+
isBackground: false
|
|
59
60
|
}
|
|
60
61
|
]
|
|
61
62
|
},
|
|
@@ -114,7 +115,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
114
115
|
src: "https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80",
|
|
115
116
|
fit: "cover",
|
|
116
117
|
borderRadius: 14,
|
|
117
|
-
alt: "gift"
|
|
118
|
+
alt: "gift",
|
|
119
|
+
isBackground: false
|
|
118
120
|
},
|
|
119
121
|
{
|
|
120
122
|
id: "p3-text-1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/festivalCard/core/defaults.ts","../../../src/festivalCard/core/normalize.ts"],"names":[],"mappings":";;;AAEO,IAAM,4BAAA,GAAmD;AAAA,EAC9D,EAAA,EAAI,uBAAA;AAAA,EACJ,IAAA,EAAM,cAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,UAAA,EAAY,gBAAA;AAAA,EACZ,aAAA,EAAe,qBAAA;AAAA,EACf,UAAA,EAAY;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,KAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,EAAA,EAAI,QAAA;AAAA,MACJ,KAAA,EAAO,cAAA;AAAA,MACP,UAAA,EAAY,EAAE,KAAA,EAAO,SAAA,EAAU;AAAA,MAC/B,QAAA,EAAU;AAAA,QACR;AAAA,UACE,EAAA,EAAI,WAAA;AAAA,UACJ,IAAA,EAAM,MAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,OAAA,EAAS,0BAAA;AAAA,UACT,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,EAAA,EAAI,WAAA;AAAA,UACJ,IAAA,EAAM,MAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,OAAA,EAAS,kDAAA;AAAA,UACT,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,EAAA,EAAI,YAAA;AAAA,UACJ,IAAA,EAAM,OAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,GAAA,EAAK,+FAAA;AAAA,UACL,GAAA,EAAK,OAAA;AAAA,UACL,YAAA,EAAc,EAAA;AAAA,UACd,GAAA,EAAK;AAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/festivalCard/core/defaults.ts","../../../src/festivalCard/core/normalize.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { FestivalCardConfig } from '../types';\n\nexport const DEFAULT_FESTIVAL_CARD_CONFIG: FestivalCardConfig = {\n id: 'default-festival-card',\n name: 'Holiday Card',\n theme: 'winter',\n coverTitle: 'Happy Holidays',\n coverSubtitle: 'Warm wishes for you',\n background: {\n colorA: '#0c1a34',\n colorB: '#1f4f8a',\n },\n backgroundMusic: {\n src: '',\n loop: true,\n autoPlay: false,\n volume: 0.5,\n },\n pages: [\n {\n id: 'page-1',\n title: '封面',\n background: { color: '#11284d' },\n elements: [\n {\n id: 'p1-text-1',\n type: 'text',\n x: 50,\n y: 20,\n content: '新年快乐',\n fontSize: 34,\n fontWeight: 700,\n align: 'center',\n color: '#f8fafc',\n },\n {\n id: 'p1-text-2',\n type: 'text',\n x: 50,\n y: 36,\n content: '愿这一年平安喜乐',\n fontSize: 18,\n fontWeight: 500,\n align: 'center',\n color: '#dbeafe',\n },\n {\n id: 'p1-image-1',\n type: 'image',\n x: 50,\n y: 68,\n width: 72,\n height: 42,\n src: 'https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80',\n fit: 'cover',\n borderRadius: 16,\n alt: 'holiday',\n isBackground: false,\n },\n ],\n },\n {\n id: 'page-2',\n title: '祝福',\n background: { color: '#1a3766' },\n elements: [\n {\n id: 'p2-text-1',\n type: 'text',\n x: 50,\n y: 28,\n content: '愿你新岁:',\n fontSize: 28,\n fontWeight: 700,\n align: 'center',\n color: '#fef3c7',\n },\n {\n id: 'p2-text-2',\n type: 'text',\n x: 50,\n y: 42,\n content: '所得皆所期,所失亦无碍',\n fontSize: 18,\n fontWeight: 500,\n align: 'center',\n color: '#f8fafc',\n },\n {\n id: 'p2-text-3',\n type: 'text',\n x: 50,\n y: 55,\n content: '愿你的每一步都走向光亮',\n fontSize: 16,\n fontWeight: 400,\n align: 'center',\n color: '#dbeafe',\n },\n ],\n },\n {\n id: 'page-3',\n title: '落款',\n background: { color: '#11284d' },\n elements: [\n {\n id: 'p3-image-1',\n type: 'image',\n x: 50,\n y: 34,\n width: 60,\n height: 42,\n src: 'https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80',\n fit: 'cover',\n borderRadius: 14,\n alt: 'gift',\n isBackground: false,\n },\n {\n id: 'p3-text-1',\n type: 'text',\n x: 50,\n y: 72,\n content: 'Best wishes, from SA2Kit',\n fontSize: 18,\n fontWeight: 600,\n align: 'center',\n color: '#f8fafc',\n },\n ],\n },\n ],\n};\n","import { DEFAULT_FESTIVAL_CARD_CONFIG } from './defaults';\nimport type { FestivalCardConfig, FestivalCardPage } from '../types';\n\nconst ensurePage = (page: FestivalCardPage, index: number): FestivalCardPage => ({\n id: page.id || `page-${index + 1}`,\n title: page.title || `第 ${index + 1} 页`,\n elements: Array.isArray(page.elements) ? page.elements : [],\n background: page.background || {},\n});\n\nexport const normalizeFestivalCardConfig = (\n config?: Partial<FestivalCardConfig> | null\n): FestivalCardConfig => {\n const pages = config?.pages && config.pages.length > 0 ? config.pages : DEFAULT_FESTIVAL_CARD_CONFIG.pages;\n\n return {\n ...DEFAULT_FESTIVAL_CARD_CONFIG,\n ...config,\n background: {\n ...DEFAULT_FESTIVAL_CARD_CONFIG.background,\n ...(config?.background || {}),\n },\n backgroundMusic: {\n ...DEFAULT_FESTIVAL_CARD_CONFIG.backgroundMusic,\n ...(config?.backgroundMusic || {}),\n src: config?.backgroundMusic?.src ?? DEFAULT_FESTIVAL_CARD_CONFIG.backgroundMusic?.src ?? '',\n },\n pages: pages.map(ensurePage),\n };\n};\n\nexport const resizeFestivalCardPages = (config: FestivalCardConfig, pageCount: number): FestivalCardConfig => {\n const safeCount = Math.max(1, Math.min(12, Math.floor(pageCount || 1)));\n const nextPages = [...config.pages];\n\n while (nextPages.length < safeCount) {\n const idx = nextPages.length;\n nextPages.push({\n id: `page-${idx + 1}`,\n title: `第 ${idx + 1} 页`,\n elements: [],\n background: {},\n });\n }\n\n return {\n ...config,\n pages: nextPages.slice(0, safeCount),\n };\n};\n"]}
|
|
@@ -53,7 +53,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
53
53
|
src: "https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80",
|
|
54
54
|
fit: "cover",
|
|
55
55
|
borderRadius: 16,
|
|
56
|
-
alt: "holiday"
|
|
56
|
+
alt: "holiday",
|
|
57
|
+
isBackground: false
|
|
57
58
|
}
|
|
58
59
|
]
|
|
59
60
|
},
|
|
@@ -112,7 +113,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
112
113
|
src: "https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80",
|
|
113
114
|
fit: "cover",
|
|
114
115
|
borderRadius: 14,
|
|
115
|
-
alt: "gift"
|
|
116
|
+
alt: "gift",
|
|
117
|
+
isBackground: false
|
|
116
118
|
},
|
|
117
119
|
{
|
|
118
120
|
id: "p3-text-1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/festivalCard/core/defaults.ts","../../../src/festivalCard/core/normalize.ts"],"names":[],"mappings":";AAEO,IAAM,4BAAA,GAAmD;AAAA,EAC9D,EAAA,EAAI,uBAAA;AAAA,EACJ,IAAA,EAAM,cAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,UAAA,EAAY,gBAAA;AAAA,EACZ,aAAA,EAAe,qBAAA;AAAA,EACf,UAAA,EAAY;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,KAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,EAAA,EAAI,QAAA;AAAA,MACJ,KAAA,EAAO,cAAA;AAAA,MACP,UAAA,EAAY,EAAE,KAAA,EAAO,SAAA,EAAU;AAAA,MAC/B,QAAA,EAAU;AAAA,QACR;AAAA,UACE,EAAA,EAAI,WAAA;AAAA,UACJ,IAAA,EAAM,MAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,OAAA,EAAS,0BAAA;AAAA,UACT,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,EAAA,EAAI,WAAA;AAAA,UACJ,IAAA,EAAM,MAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,OAAA,EAAS,kDAAA;AAAA,UACT,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,GAAA;AAAA,UACZ,KAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,EAAA,EAAI,YAAA;AAAA,UACJ,IAAA,EAAM,OAAA;AAAA,UACN,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAG,EAAA;AAAA,UACH,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,GAAA,EAAK,+FAAA;AAAA,UACL,GAAA,EAAK,OAAA;AAAA,UACL,YAAA,EAAc,EAAA;AAAA,UACd,GAAA,EAAK;AAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/festivalCard/core/defaults.ts","../../../src/festivalCard/core/normalize.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { FestivalCardConfig } from '../types';\n\nexport const DEFAULT_FESTIVAL_CARD_CONFIG: FestivalCardConfig = {\n id: 'default-festival-card',\n name: 'Holiday Card',\n theme: 'winter',\n coverTitle: 'Happy Holidays',\n coverSubtitle: 'Warm wishes for you',\n background: {\n colorA: '#0c1a34',\n colorB: '#1f4f8a',\n },\n backgroundMusic: {\n src: '',\n loop: true,\n autoPlay: false,\n volume: 0.5,\n },\n pages: [\n {\n id: 'page-1',\n title: '封面',\n background: { color: '#11284d' },\n elements: [\n {\n id: 'p1-text-1',\n type: 'text',\n x: 50,\n y: 20,\n content: '新年快乐',\n fontSize: 34,\n fontWeight: 700,\n align: 'center',\n color: '#f8fafc',\n },\n {\n id: 'p1-text-2',\n type: 'text',\n x: 50,\n y: 36,\n content: '愿这一年平安喜乐',\n fontSize: 18,\n fontWeight: 500,\n align: 'center',\n color: '#dbeafe',\n },\n {\n id: 'p1-image-1',\n type: 'image',\n x: 50,\n y: 68,\n width: 72,\n height: 42,\n src: 'https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80',\n fit: 'cover',\n borderRadius: 16,\n alt: 'holiday',\n isBackground: false,\n },\n ],\n },\n {\n id: 'page-2',\n title: '祝福',\n background: { color: '#1a3766' },\n elements: [\n {\n id: 'p2-text-1',\n type: 'text',\n x: 50,\n y: 28,\n content: '愿你新岁:',\n fontSize: 28,\n fontWeight: 700,\n align: 'center',\n color: '#fef3c7',\n },\n {\n id: 'p2-text-2',\n type: 'text',\n x: 50,\n y: 42,\n content: '所得皆所期,所失亦无碍',\n fontSize: 18,\n fontWeight: 500,\n align: 'center',\n color: '#f8fafc',\n },\n {\n id: 'p2-text-3',\n type: 'text',\n x: 50,\n y: 55,\n content: '愿你的每一步都走向光亮',\n fontSize: 16,\n fontWeight: 400,\n align: 'center',\n color: '#dbeafe',\n },\n ],\n },\n {\n id: 'page-3',\n title: '落款',\n background: { color: '#11284d' },\n elements: [\n {\n id: 'p3-image-1',\n type: 'image',\n x: 50,\n y: 34,\n width: 60,\n height: 42,\n src: 'https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80',\n fit: 'cover',\n borderRadius: 14,\n alt: 'gift',\n isBackground: false,\n },\n {\n id: 'p3-text-1',\n type: 'text',\n x: 50,\n y: 72,\n content: 'Best wishes, from SA2Kit',\n fontSize: 18,\n fontWeight: 600,\n align: 'center',\n color: '#f8fafc',\n },\n ],\n },\n ],\n};\n","import { DEFAULT_FESTIVAL_CARD_CONFIG } from './defaults';\nimport type { FestivalCardConfig, FestivalCardPage } from '../types';\n\nconst ensurePage = (page: FestivalCardPage, index: number): FestivalCardPage => ({\n id: page.id || `page-${index + 1}`,\n title: page.title || `第 ${index + 1} 页`,\n elements: Array.isArray(page.elements) ? page.elements : [],\n background: page.background || {},\n});\n\nexport const normalizeFestivalCardConfig = (\n config?: Partial<FestivalCardConfig> | null\n): FestivalCardConfig => {\n const pages = config?.pages && config.pages.length > 0 ? config.pages : DEFAULT_FESTIVAL_CARD_CONFIG.pages;\n\n return {\n ...DEFAULT_FESTIVAL_CARD_CONFIG,\n ...config,\n background: {\n ...DEFAULT_FESTIVAL_CARD_CONFIG.background,\n ...(config?.background || {}),\n },\n backgroundMusic: {\n ...DEFAULT_FESTIVAL_CARD_CONFIG.backgroundMusic,\n ...(config?.backgroundMusic || {}),\n src: config?.backgroundMusic?.src ?? DEFAULT_FESTIVAL_CARD_CONFIG.backgroundMusic?.src ?? '',\n },\n pages: pages.map(ensurePage),\n };\n};\n\nexport const resizeFestivalCardPages = (config: FestivalCardConfig, pageCount: number): FestivalCardConfig => {\n const safeCount = Math.max(1, Math.min(12, Math.floor(pageCount || 1)));\n const nextPages = [...config.pages];\n\n while (nextPages.length < safeCount) {\n const idx = nextPages.length;\n nextPages.push({\n id: `page-${idx + 1}`,\n title: `第 ${idx + 1} 页`,\n elements: [],\n background: {},\n });\n }\n\n return {\n ...config,\n pages: nextPages.slice(0, safeCount),\n };\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DEFAULT_FESTIVAL_CARD_CONFIG, normalizeFestivalCardConfig, resizeFestivalCardPages } from './core/index.mjs';
|
|
2
|
-
export { F as FestivalCardService, c as createInMemoryFestivalCardDb, u as useFestivalCardConfig } from '../festivalCardService-
|
|
2
|
+
export { F as FestivalCardService, c as createInMemoryFestivalCardDb, u as useFestivalCardConfig } from '../festivalCardService-CqBTVC6x.mjs';
|
|
3
3
|
export { FestivalCardBook3D, FestivalCardBook3DProps, FestivalCardConfigEditor, FestivalCardConfigPage, FestivalCardManagedPage, FestivalCardPageRenderer, FestivalCardStudio } from './web/index.mjs';
|
|
4
|
-
export { g as FestivalCardAudioConfig, F as FestivalCardConfig, h as FestivalCardConfigSummary, i as FestivalCardDbAdapter, e as FestivalCardElement, b as FestivalCardElementBase, a as FestivalCardElementType, d as FestivalCardImageElement, f as FestivalCardPage, j as FestivalCardServiceOptions, c as FestivalCardTextElement } from '../types-
|
|
4
|
+
export { g as FestivalCardAudioConfig, F as FestivalCardConfig, h as FestivalCardConfigSummary, i as FestivalCardDbAdapter, e as FestivalCardElement, b as FestivalCardElementBase, a as FestivalCardElementType, d as FestivalCardImageElement, f as FestivalCardPage, j as FestivalCardServiceOptions, c as FestivalCardTextElement } from '../types-D2WetAPc.mjs';
|
|
5
5
|
import 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DEFAULT_FESTIVAL_CARD_CONFIG, normalizeFestivalCardConfig, resizeFestivalCardPages } from './core/index.js';
|
|
2
|
-
export { F as FestivalCardService, c as createInMemoryFestivalCardDb, u as useFestivalCardConfig } from '../festivalCardService-
|
|
2
|
+
export { F as FestivalCardService, c as createInMemoryFestivalCardDb, u as useFestivalCardConfig } from '../festivalCardService-iFKu0k9q.js';
|
|
3
3
|
export { FestivalCardBook3D, FestivalCardBook3DProps, FestivalCardConfigEditor, FestivalCardConfigPage, FestivalCardManagedPage, FestivalCardPageRenderer, FestivalCardStudio } from './web/index.js';
|
|
4
|
-
export { g as FestivalCardAudioConfig, F as FestivalCardConfig, h as FestivalCardConfigSummary, i as FestivalCardDbAdapter, e as FestivalCardElement, b as FestivalCardElementBase, a as FestivalCardElementType, d as FestivalCardImageElement, f as FestivalCardPage, j as FestivalCardServiceOptions, c as FestivalCardTextElement } from '../types-
|
|
4
|
+
export { g as FestivalCardAudioConfig, F as FestivalCardConfig, h as FestivalCardConfigSummary, i as FestivalCardDbAdapter, e as FestivalCardElement, b as FestivalCardElementBase, a as FestivalCardElementType, d as FestivalCardImageElement, f as FestivalCardPage, j as FestivalCardServiceOptions, c as FestivalCardTextElement } from '../types-D2WetAPc.js';
|
|
5
5
|
import 'react';
|
|
@@ -61,7 +61,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
61
61
|
src: "https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80",
|
|
62
62
|
fit: "cover",
|
|
63
63
|
borderRadius: 16,
|
|
64
|
-
alt: "holiday"
|
|
64
|
+
alt: "holiday",
|
|
65
|
+
isBackground: false
|
|
65
66
|
}
|
|
66
67
|
]
|
|
67
68
|
},
|
|
@@ -120,7 +121,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
120
121
|
src: "https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80",
|
|
121
122
|
fit: "cover",
|
|
122
123
|
borderRadius: 14,
|
|
123
|
-
alt: "gift"
|
|
124
|
+
alt: "gift",
|
|
125
|
+
isBackground: false
|
|
124
126
|
},
|
|
125
127
|
{
|
|
126
128
|
id: "p3-text-1",
|
|
@@ -186,9 +188,10 @@ var useFestivalCardConfig = (options) => {
|
|
|
186
188
|
const [loading, setLoading] = React3.useState(Boolean(options?.fetchConfig));
|
|
187
189
|
const [saving, setSaving] = React3.useState(false);
|
|
188
190
|
React3.useEffect(() => {
|
|
189
|
-
|
|
191
|
+
const fetchConfig = options?.fetchConfig;
|
|
192
|
+
if (!fetchConfig) return;
|
|
190
193
|
let active = true;
|
|
191
|
-
void
|
|
194
|
+
void fetchConfig().then((value) => {
|
|
192
195
|
if (!active) return;
|
|
193
196
|
setConfig(normalizeFestivalCardConfig(value));
|
|
194
197
|
}).finally(() => {
|
|
@@ -197,16 +200,17 @@ var useFestivalCardConfig = (options) => {
|
|
|
197
200
|
return () => {
|
|
198
201
|
active = false;
|
|
199
202
|
};
|
|
200
|
-
}, [options]);
|
|
203
|
+
}, [options?.fetchConfig]);
|
|
201
204
|
const save = React3.useCallback(async () => {
|
|
202
|
-
|
|
205
|
+
const onSave = options?.onSave;
|
|
206
|
+
if (!onSave) return;
|
|
203
207
|
setSaving(true);
|
|
204
208
|
try {
|
|
205
|
-
await
|
|
209
|
+
await onSave(config);
|
|
206
210
|
} finally {
|
|
207
211
|
setSaving(false);
|
|
208
212
|
}
|
|
209
|
-
}, [config, options]);
|
|
213
|
+
}, [config, options?.onSave]);
|
|
210
214
|
return React3.useMemo(
|
|
211
215
|
() => ({
|
|
212
216
|
config,
|
|
@@ -220,6 +224,7 @@ var useFestivalCardConfig = (options) => {
|
|
|
220
224
|
};
|
|
221
225
|
var elementStyle = (element) => ({
|
|
222
226
|
position: "absolute",
|
|
227
|
+
zIndex: 2,
|
|
223
228
|
left: `${element.x}%`,
|
|
224
229
|
top: `${element.y}%`,
|
|
225
230
|
width: `${element.width ?? 70}%`,
|
|
@@ -262,22 +267,23 @@ var renderElement = (element) => {
|
|
|
262
267
|
);
|
|
263
268
|
};
|
|
264
269
|
var FestivalCardPageRenderer = ({ page }) => {
|
|
270
|
+
const backgroundElement = page.elements.find(
|
|
271
|
+
(element) => element.type === "image" && Boolean(element.isBackground)
|
|
272
|
+
);
|
|
273
|
+
const foregroundElements = page.elements.filter((element) => !(element.type === "image" && element.isBackground));
|
|
265
274
|
return /* @__PURE__ */ React3__default.default.createElement(
|
|
266
275
|
"div",
|
|
267
276
|
{
|
|
277
|
+
className: "relative h-full w-full overflow-hidden rounded-2xl",
|
|
268
278
|
style: {
|
|
269
|
-
position: "relative",
|
|
270
|
-
width: "100%",
|
|
271
|
-
height: "100%",
|
|
272
|
-
overflow: "hidden",
|
|
273
|
-
borderRadius: 16,
|
|
274
279
|
backgroundColor: page.background?.color || "#0f172a",
|
|
275
|
-
backgroundImage: page.background?.image ? `url(${page.background.image})` : void 0,
|
|
280
|
+
backgroundImage: backgroundElement ? `url(${backgroundElement.src})` : page.background?.image ? `url(${page.background.image})` : void 0,
|
|
276
281
|
backgroundSize: "cover",
|
|
277
282
|
backgroundPosition: "center"
|
|
278
283
|
}
|
|
279
284
|
},
|
|
280
|
-
|
|
285
|
+
/* @__PURE__ */ React3__default.default.createElement("div", { className: "absolute inset-0 bg-slate-950/20" }),
|
|
286
|
+
foregroundElements.map(renderElement)
|
|
281
287
|
);
|
|
282
288
|
};
|
|
283
289
|
|
|
@@ -291,100 +297,31 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
291
297
|
return /* @__PURE__ */ React3__default.default.createElement("div", { className }, /* @__PURE__ */ React3__default.default.createElement(
|
|
292
298
|
"div",
|
|
293
299
|
{
|
|
300
|
+
className: "w-full min-h-[560px] rounded-3xl p-6 shadow-2xl shadow-slate-900/50",
|
|
294
301
|
style: {
|
|
295
|
-
|
|
296
|
-
minHeight: 560,
|
|
297
|
-
borderRadius: 24,
|
|
298
|
-
padding: 24,
|
|
299
|
-
background: `linear-gradient(145deg, ${normalized.background?.colorA || "#0c1a34"} 0%, ${normalized.background?.colorB || "#1f4f8a"} 100%)`,
|
|
300
|
-
boxShadow: "0 26px 70px rgba(2, 6, 23, 0.45)"
|
|
302
|
+
background: `linear-gradient(145deg, ${normalized.background?.colorA || "#0c1a34"} 0%, ${normalized.background?.colorB || "#1f4f8a"} 100%)`
|
|
301
303
|
}
|
|
302
304
|
},
|
|
303
|
-
/* @__PURE__ */ React3__default.default.createElement(
|
|
304
|
-
|
|
305
|
-
{
|
|
306
|
-
style: {
|
|
307
|
-
marginBottom: 14,
|
|
308
|
-
color: "#f8fafc",
|
|
309
|
-
fontSize: 14,
|
|
310
|
-
opacity: 0.9,
|
|
311
|
-
textAlign: "center"
|
|
312
|
-
}
|
|
313
|
-
},
|
|
314
|
-
normalized.coverTitle || "Festival Card",
|
|
315
|
-
" \xB7 \u7B2C ",
|
|
316
|
-
currentPage + 1,
|
|
317
|
-
" / ",
|
|
318
|
-
pages.length,
|
|
319
|
-
" \u9875"
|
|
320
|
-
),
|
|
321
|
-
/* @__PURE__ */ React3__default.default.createElement("div", { style: { perspective: 1400, width: "100%", maxWidth: 920, margin: "0 auto" } }, /* @__PURE__ */ React3__default.default.createElement(
|
|
305
|
+
/* @__PURE__ */ React3__default.default.createElement("div", { className: "mx-auto w-full max-w-5xl text-center text-slate-100" }, /* @__PURE__ */ React3__default.default.createElement("h3", { className: "mb-4 text-lg font-semibold" }, normalized.coverTitle || "Festival Card")),
|
|
306
|
+
/* @__PURE__ */ React3__default.default.createElement("div", { className: "mx-auto w-full max-w-5xl" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "relative h-[460px]" }, pages.map((page, index) => /* @__PURE__ */ React3__default.default.createElement(
|
|
322
307
|
"div",
|
|
323
308
|
{
|
|
309
|
+
key: page.id,
|
|
310
|
+
className: "absolute inset-0 transition-opacity duration-500 ease-out",
|
|
324
311
|
style: {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
transformStyle: "preserve-3d"
|
|
312
|
+
opacity: index === currentPage ? 1 : 0,
|
|
313
|
+
pointerEvents: index === currentPage ? "auto" : "none"
|
|
328
314
|
}
|
|
329
315
|
},
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
return /* @__PURE__ */ React3__default.default.createElement(
|
|
334
|
-
"div",
|
|
335
|
-
{
|
|
336
|
-
key: page.id,
|
|
337
|
-
style: {
|
|
338
|
-
position: "absolute",
|
|
339
|
-
inset: 0,
|
|
340
|
-
transformStyle: "preserve-3d",
|
|
341
|
-
transformOrigin: "left center",
|
|
342
|
-
transform: `rotateY(${isFlipped ? -170 : 0}deg)`,
|
|
343
|
-
transition: "transform 600ms cubic-bezier(0.2, 0.8, 0.2, 1)",
|
|
344
|
-
zIndex
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
/* @__PURE__ */ React3__default.default.createElement(
|
|
348
|
-
"div",
|
|
349
|
-
{
|
|
350
|
-
style: {
|
|
351
|
-
position: "absolute",
|
|
352
|
-
inset: 0,
|
|
353
|
-
backfaceVisibility: "hidden"
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
|
-
/* @__PURE__ */ React3__default.default.createElement(FestivalCardPageRenderer, { page })
|
|
357
|
-
),
|
|
358
|
-
/* @__PURE__ */ React3__default.default.createElement(
|
|
359
|
-
"div",
|
|
360
|
-
{
|
|
361
|
-
style: {
|
|
362
|
-
position: "absolute",
|
|
363
|
-
inset: 0,
|
|
364
|
-
transform: "rotateY(180deg)",
|
|
365
|
-
backfaceVisibility: "hidden",
|
|
366
|
-
borderRadius: 16,
|
|
367
|
-
background: "#0f172a"
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
)
|
|
371
|
-
);
|
|
372
|
-
})
|
|
373
|
-
)),
|
|
374
|
-
/* @__PURE__ */ React3__default.default.createElement("div", { style: { display: "flex", justifyContent: "center", gap: 12, marginTop: 18 } }, /* @__PURE__ */ React3__default.default.createElement(
|
|
316
|
+
/* @__PURE__ */ React3__default.default.createElement(FestivalCardPageRenderer, { page })
|
|
317
|
+
)))),
|
|
318
|
+
/* @__PURE__ */ React3__default.default.createElement("div", { className: "mt-5 flex justify-center gap-3" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
375
319
|
"button",
|
|
376
320
|
{
|
|
377
321
|
type: "button",
|
|
378
322
|
disabled: !canPrev,
|
|
379
323
|
onClick: () => setCurrentPage((p) => Math.max(0, p - 1)),
|
|
380
|
-
|
|
381
|
-
border: "none",
|
|
382
|
-
borderRadius: 999,
|
|
383
|
-
padding: "9px 16px",
|
|
384
|
-
fontSize: 14,
|
|
385
|
-
cursor: canPrev ? "pointer" : "not-allowed",
|
|
386
|
-
opacity: canPrev ? 1 : 0.4
|
|
387
|
-
}
|
|
324
|
+
className: "rounded-full bg-white px-5 py-2 text-sm font-medium text-slate-900 disabled:cursor-not-allowed disabled:opacity-45"
|
|
388
325
|
},
|
|
389
326
|
"\u4E0A\u4E00\u9875"
|
|
390
327
|
), /* @__PURE__ */ React3__default.default.createElement(
|
|
@@ -393,14 +330,7 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
393
330
|
type: "button",
|
|
394
331
|
disabled: !canNext,
|
|
395
332
|
onClick: () => setCurrentPage((p) => Math.min(pages.length - 1, p + 1)),
|
|
396
|
-
|
|
397
|
-
border: "none",
|
|
398
|
-
borderRadius: 999,
|
|
399
|
-
padding: "9px 16px",
|
|
400
|
-
fontSize: 14,
|
|
401
|
-
cursor: canNext ? "pointer" : "not-allowed",
|
|
402
|
-
opacity: canNext ? 1 : 0.4
|
|
403
|
-
}
|
|
333
|
+
className: "rounded-full bg-sky-300 px-5 py-2 text-sm font-medium text-slate-900 disabled:cursor-not-allowed disabled:opacity-45"
|
|
404
334
|
},
|
|
405
335
|
"\u4E0B\u4E00\u9875"
|
|
406
336
|
))
|
|
@@ -411,7 +341,7 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
411
341
|
autoPlay: normalized.backgroundMusic.autoPlay,
|
|
412
342
|
loop: normalized.backgroundMusic.loop,
|
|
413
343
|
controls: true,
|
|
414
|
-
|
|
344
|
+
className: "mt-3 w-full"
|
|
415
345
|
}
|
|
416
346
|
) : null);
|
|
417
347
|
};
|
|
@@ -453,16 +383,17 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
453
383
|
)
|
|
454
384
|
});
|
|
455
385
|
};
|
|
456
|
-
return /* @__PURE__ */ React3__default.default.createElement("div", {
|
|
386
|
+
return /* @__PURE__ */ React3__default.default.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-4 text-slate-900 shadow-sm" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "grid gap-3" }, /* @__PURE__ */ React3__default.default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React3__default.default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u9875\u9762\u6570\u91CF"), /* @__PURE__ */ React3__default.default.createElement(
|
|
457
387
|
"input",
|
|
458
388
|
{
|
|
459
389
|
type: "number",
|
|
460
390
|
min: 1,
|
|
461
391
|
max: 12,
|
|
462
392
|
value: value.pages.length,
|
|
463
|
-
onChange: (event) => onChange(resizeFestivalCardPages(value, Number(event.target.value)))
|
|
393
|
+
onChange: (event) => onChange(resizeFestivalCardPages(value, Number(event.target.value))),
|
|
394
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
464
395
|
}
|
|
465
|
-
)), /* @__PURE__ */ React3__default.default.createElement("label", {
|
|
396
|
+
)), /* @__PURE__ */ React3__default.default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React3__default.default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u80CC\u666F\u97F3\u4E50 URL"), /* @__PURE__ */ React3__default.default.createElement(
|
|
466
397
|
"input",
|
|
467
398
|
{
|
|
468
399
|
type: "url",
|
|
@@ -473,9 +404,18 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
473
404
|
...value.backgroundMusic,
|
|
474
405
|
src: event.target.value
|
|
475
406
|
}
|
|
476
|
-
})
|
|
407
|
+
}),
|
|
408
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
477
409
|
}
|
|
478
|
-
)), /* @__PURE__ */ React3__default.default.createElement("label", {
|
|
410
|
+
)), /* @__PURE__ */ React3__default.default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React3__default.default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u7F16\u8F91\u9875\u9762"), /* @__PURE__ */ React3__default.default.createElement(
|
|
411
|
+
"select",
|
|
412
|
+
{
|
|
413
|
+
value: activePageIndex,
|
|
414
|
+
onChange: (event) => setActivePageIndex(Number(event.target.value)),
|
|
415
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
416
|
+
},
|
|
417
|
+
pageOptions.map((index) => /* @__PURE__ */ React3__default.default.createElement("option", { key: index, value: index }, "\u7B2C ", index + 1, " \u9875"))
|
|
418
|
+
))), canEditPage ? /* @__PURE__ */ React3__default.default.createElement("div", { className: "mt-4" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "mb-3 flex gap-2" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
479
419
|
"button",
|
|
480
420
|
{
|
|
481
421
|
type: "button",
|
|
@@ -484,7 +424,8 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
484
424
|
pages: value.pages.map(
|
|
485
425
|
(p, index) => index === activePageIndex ? { ...p, elements: [...p.elements, createTextElement(index)] } : p
|
|
486
426
|
)
|
|
487
|
-
})
|
|
427
|
+
}),
|
|
428
|
+
className: "rounded-lg bg-slate-900 px-3 py-2 text-sm font-medium text-white"
|
|
488
429
|
},
|
|
489
430
|
"+ \u6587\u5B57"
|
|
490
431
|
), /* @__PURE__ */ React3__default.default.createElement(
|
|
@@ -496,26 +437,35 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
496
437
|
pages: value.pages.map(
|
|
497
438
|
(p, index) => index === activePageIndex ? { ...p, elements: [...p.elements, createImageElement(index)] } : p
|
|
498
439
|
)
|
|
499
|
-
})
|
|
440
|
+
}),
|
|
441
|
+
className: "rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white"
|
|
500
442
|
},
|
|
501
443
|
"+ \u56FE\u7247"
|
|
502
|
-
)), /* @__PURE__ */ React3__default.default.createElement("div", {
|
|
444
|
+
)), /* @__PURE__ */ React3__default.default.createElement("div", { className: "grid max-h-[340px] gap-2.5 overflow-auto pr-1" }, (page?.elements ?? []).map((element) => /* @__PURE__ */ React3__default.default.createElement("div", { key: element.id, className: "rounded-xl border border-slate-200 bg-slate-50 p-3" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "mb-2 text-xs font-semibold tracking-wide text-slate-500" }, element.type.toUpperCase()), element.type === "text" ? /* @__PURE__ */ React3__default.default.createElement(
|
|
503
445
|
"textarea",
|
|
504
446
|
{
|
|
505
447
|
value: element.content,
|
|
506
448
|
onChange: (event) => updateElement(element.id, { content: event.target.value }),
|
|
507
449
|
rows: 3,
|
|
508
|
-
|
|
450
|
+
className: "w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
509
451
|
}
|
|
510
|
-
) : /* @__PURE__ */ React3__default.default.createElement(
|
|
452
|
+
) : /* @__PURE__ */ React3__default.default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
511
453
|
"input",
|
|
512
454
|
{
|
|
513
455
|
type: "url",
|
|
514
456
|
value: element.src,
|
|
515
457
|
onChange: (event) => updateElement(element.id, { src: event.target.value }),
|
|
516
|
-
|
|
458
|
+
className: "w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
517
459
|
}
|
|
518
|
-
)
|
|
460
|
+
), /* @__PURE__ */ React3__default.default.createElement("label", { className: "inline-flex items-center gap-2 text-sm text-slate-700" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
461
|
+
"input",
|
|
462
|
+
{
|
|
463
|
+
type: "checkbox",
|
|
464
|
+
checked: Boolean(element.isBackground),
|
|
465
|
+
onChange: (event) => updateElement(element.id, { isBackground: event.target.checked }),
|
|
466
|
+
className: "h-4 w-4 rounded border-slate-300 text-sky-600"
|
|
467
|
+
}
|
|
468
|
+
), "\u4F5C\u4E3A\u672C\u9875\u80CC\u666F\u56FE")))))) : null);
|
|
519
469
|
};
|
|
520
470
|
|
|
521
471
|
// src/festivalCard/components/FestivalCardStudio.tsx
|
|
@@ -526,13 +476,13 @@ var FestivalCardStudio = ({ initialConfig, fetchConfig, onSave }) => {
|
|
|
526
476
|
onSave
|
|
527
477
|
});
|
|
528
478
|
if (loading) return /* @__PURE__ */ React3__default.default.createElement("div", null, "\u52A0\u8F7D\u4E2D...");
|
|
529
|
-
return /* @__PURE__ */ React3__default.default.createElement("div", {
|
|
479
|
+
return /* @__PURE__ */ React3__default.default.createElement("div", { className: "grid gap-4 lg:grid-cols-[1.45fr_1fr]" }, /* @__PURE__ */ React3__default.default.createElement(FestivalCardBook3D, { config, className: "h-full" }), /* @__PURE__ */ React3__default.default.createElement("div", null, /* @__PURE__ */ React3__default.default.createElement(FestivalCardConfigEditor, { value: config, onChange: setConfig }), onSave ? /* @__PURE__ */ React3__default.default.createElement(
|
|
530
480
|
"button",
|
|
531
481
|
{
|
|
532
482
|
type: "button",
|
|
533
483
|
onClick: () => void save(),
|
|
534
484
|
disabled: saving,
|
|
535
|
-
|
|
485
|
+
className: "mt-3 w-full rounded-lg bg-slate-900 px-4 py-2.5 text-sm font-medium text-white disabled:opacity-60"
|
|
536
486
|
},
|
|
537
487
|
saving ? "\u4FDD\u5B58\u4E2D..." : "\u4FDD\u5B58\u914D\u7F6E"
|
|
538
488
|
) : null));
|
|
@@ -596,7 +546,15 @@ var FestivalCardConfigPage = ({
|
|
|
596
546
|
await reloadList();
|
|
597
547
|
};
|
|
598
548
|
const mainLink = React3.useMemo(() => `${mainPagePath}?cardId=${encodeURIComponent(selectedId)}`, [mainPagePath, selectedId]);
|
|
599
|
-
return /* @__PURE__ */ React3__default.default.createElement("div", {
|
|
549
|
+
return /* @__PURE__ */ React3__default.default.createElement("div", { className: "grid gap-3" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "flex flex-wrap items-center gap-2" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
550
|
+
"select",
|
|
551
|
+
{
|
|
552
|
+
value: selectedId,
|
|
553
|
+
onChange: (event) => setSelectedId(event.target.value),
|
|
554
|
+
className: "min-w-[200px] rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
555
|
+
},
|
|
556
|
+
list.map((item) => /* @__PURE__ */ React3__default.default.createElement("option", { key: item.id, value: item.id }, item.name || item.id))
|
|
557
|
+
), /* @__PURE__ */ React3__default.default.createElement("button", { type: "button", onClick: () => void createNew(), className: "rounded-lg bg-slate-900 px-3 py-2 text-sm font-medium text-white" }, "\u65B0\u5EFA\u5361\u7247"), /* @__PURE__ */ React3__default.default.createElement("a", { href: mainLink, className: "rounded-lg border border-sky-200 bg-sky-50 px-3 py-2 text-sm text-sky-700" }, "\u6253\u5F00\u4E3B\u9875\u9762")), /* @__PURE__ */ React3__default.default.createElement(FestivalCardStudio, { fetchConfig, onSave: saveConfig }));
|
|
600
558
|
};
|
|
601
559
|
var isSummary = (value) => {
|
|
602
560
|
if (!value || typeof value !== "object") return false;
|
|
@@ -620,7 +578,6 @@ var FestivalCardManagedPage = ({
|
|
|
620
578
|
cardId,
|
|
621
579
|
configPagePath = "/festivalCard/config"
|
|
622
580
|
}) => {
|
|
623
|
-
const [list, setList] = React3.useState([]);
|
|
624
581
|
const [currentCardId, setCurrentCardId] = React3.useState(cardId || "");
|
|
625
582
|
const [config, setConfig] = React3.useState(null);
|
|
626
583
|
const [loading, setLoading] = React3.useState(true);
|
|
@@ -629,7 +586,6 @@ var FestivalCardManagedPage = ({
|
|
|
629
586
|
const response = await fetch(apiBase, { cache: "no-store" });
|
|
630
587
|
const data = await response.json();
|
|
631
588
|
const items = parseListResponse(data);
|
|
632
|
-
setList(items);
|
|
633
589
|
const first = items[0];
|
|
634
590
|
if (!currentCardId && first) {
|
|
635
591
|
setCurrentCardId(first.id);
|
|
@@ -646,23 +602,7 @@ var FestivalCardManagedPage = ({
|
|
|
646
602
|
if (!currentCardId) return configPagePath;
|
|
647
603
|
return `${configPagePath}?cardId=${encodeURIComponent(currentCardId)}`;
|
|
648
604
|
}, [configPagePath, currentCardId]);
|
|
649
|
-
return /* @__PURE__ */ React3__default.default.createElement("div", {
|
|
650
|
-
"button",
|
|
651
|
-
{
|
|
652
|
-
key: item.id,
|
|
653
|
-
type: "button",
|
|
654
|
-
onClick: () => setCurrentCardId(item.id),
|
|
655
|
-
style: {
|
|
656
|
-
borderRadius: 8,
|
|
657
|
-
border: "1px solid #334155",
|
|
658
|
-
padding: "8px 10px",
|
|
659
|
-
textAlign: "left",
|
|
660
|
-
background: currentCardId === item.id ? "#1e293b" : "#0b1220",
|
|
661
|
-
color: "#e2e8f0"
|
|
662
|
-
}
|
|
663
|
-
},
|
|
664
|
-
item.name || item.id
|
|
665
|
-
))), /* @__PURE__ */ React3__default.default.createElement("a", { href: configLink, style: { display: "inline-block", marginTop: 12, color: "#93c5fd", fontSize: 13 } }, "\u8FDB\u5165\u914D\u7F6E\u9875")), /* @__PURE__ */ React3__default.default.createElement("div", null, loading || !config ? /* @__PURE__ */ React3__default.default.createElement("div", null, "\u52A0\u8F7D\u4E2D...") : /* @__PURE__ */ React3__default.default.createElement(FestivalCardBook3D, { config })));
|
|
605
|
+
return /* @__PURE__ */ React3__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ React3__default.default.createElement("a", { href: configLink, className: "rounded-lg border border-slate-700 bg-slate-900 px-3 py-1.5 text-sm text-sky-300" }, "\u8FDB\u5165\u914D\u7F6E\u9875")), /* @__PURE__ */ React3__default.default.createElement("div", null, loading || !config ? /* @__PURE__ */ React3__default.default.createElement("div", { className: "py-12 text-center text-slate-400" }, "\u52A0\u8F7D\u4E2D...") : /* @__PURE__ */ React3__default.default.createElement(FestivalCardBook3D, { config })));
|
|
666
606
|
};
|
|
667
607
|
|
|
668
608
|
// src/festivalCard/server/db.ts
|