sa2kit 1.6.57 → 1.6.58

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.
Files changed (145) hide show
  1. package/dist/AliyunOSSProvider-KSYW2IOG.js +15 -0
  2. package/dist/{AliyunOSSProvider-2FARPAQD.js.map → AliyunOSSProvider-KSYW2IOG.js.map} +1 -1
  3. package/dist/AliyunOSSProvider-TBK3G7YK.mjs +6 -0
  4. package/dist/{AliyunOSSProvider-UMVGVBDJ.mjs.map → AliyunOSSProvider-TBK3G7YK.mjs.map} +1 -1
  5. package/dist/LocalStorageProvider-2DGYRQAB.mjs +6 -0
  6. package/dist/{LocalStorageProvider-PYOHETJV.mjs.map → LocalStorageProvider-2DGYRQAB.mjs.map} +1 -1
  7. package/dist/LocalStorageProvider-SSRW3ZJW.js +15 -0
  8. package/dist/{LocalStorageProvider-JQF5WK5H.js.map → LocalStorageProvider-SSRW3ZJW.js.map} +1 -1
  9. package/dist/UniversalFileService-336GFY6N.mjs +6 -0
  10. package/dist/{UniversalFileService-TNYKO6JN.mjs.map → UniversalFileService-336GFY6N.mjs.map} +1 -1
  11. package/dist/UniversalFileService-J6ET6KZK.js +15 -0
  12. package/dist/{UniversalFileService-RBV6EN5J.js.map → UniversalFileService-J6ET6KZK.js.map} +1 -1
  13. package/dist/calendar/index.js +11 -11
  14. package/dist/calendar/index.mjs +4 -4
  15. package/dist/chunk-25OFOKNF.js +171 -0
  16. package/dist/chunk-25OFOKNF.js.map +1 -0
  17. package/dist/chunk-3DXPQ4YV.mjs +165 -0
  18. package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
  19. package/dist/{chunk-4VJQZSPU.mjs → chunk-3NHAT7D4.mjs} +3 -4
  20. package/dist/chunk-3NHAT7D4.mjs.map +1 -0
  21. package/dist/{chunk-3JW4X3AC.mjs → chunk-622Y6LTH.mjs} +3 -3
  22. package/dist/{chunk-3JW4X3AC.mjs.map → chunk-622Y6LTH.mjs.map} +1 -1
  23. package/dist/chunk-CIVO4R6N.mjs +37 -0
  24. package/dist/chunk-CIVO4R6N.mjs.map +1 -0
  25. package/dist/{chunk-6BJ76BYC.mjs → chunk-EGJPS7OL.mjs} +3 -3
  26. package/dist/{chunk-6BJ76BYC.mjs.map → chunk-EGJPS7OL.mjs.map} +1 -1
  27. package/dist/{chunk-U7AQC2Z7.js → chunk-EKIOJEJK.js} +1179 -2002
  28. package/dist/chunk-EKIOJEJK.js.map +1 -0
  29. package/dist/{chunk-53WLQ22S.js → chunk-EOWTOG7Y.js} +6 -6
  30. package/dist/{chunk-53WLQ22S.js.map → chunk-EOWTOG7Y.js.map} +1 -1
  31. package/dist/chunk-HDMIOOZY.mjs +546 -0
  32. package/dist/chunk-HDMIOOZY.mjs.map +1 -0
  33. package/dist/{chunk-MZKATHB7.js → chunk-HHVDOIPV.js} +4 -4
  34. package/dist/{chunk-MZKATHB7.js.map → chunk-HHVDOIPV.js.map} +1 -1
  35. package/dist/chunk-HJ6MH7J7.js +552 -0
  36. package/dist/chunk-HJ6MH7J7.js.map +1 -0
  37. package/dist/chunk-KH6RQ4J5.js +28 -0
  38. package/dist/chunk-KH6RQ4J5.js.map +1 -0
  39. package/dist/{chunk-35CXIK5Y.js → chunk-NCOXT7SK.js} +11 -11
  40. package/dist/{chunk-35CXIK5Y.js.map → chunk-NCOXT7SK.js.map} +1 -1
  41. package/dist/chunk-NZZZUMMX.mjs +784 -0
  42. package/dist/chunk-NZZZUMMX.mjs.map +1 -0
  43. package/dist/{chunk-OBIPI4GU.mjs → chunk-OFYBMMWT.mjs} +4 -4
  44. package/dist/{chunk-OBIPI4GU.mjs.map → chunk-OFYBMMWT.mjs.map} +1 -1
  45. package/dist/{chunk-W2NCOORK.js → chunk-PVLLRDUT.js} +951 -145
  46. package/dist/chunk-PVLLRDUT.js.map +1 -0
  47. package/dist/chunk-Q5EDCKQA.js +336 -0
  48. package/dist/chunk-Q5EDCKQA.js.map +1 -0
  49. package/dist/{chunk-6NMIKAE7.mjs → chunk-SNBILYSH.mjs} +5 -5
  50. package/dist/{chunk-6NMIKAE7.mjs.map → chunk-SNBILYSH.mjs.map} +1 -1
  51. package/dist/{chunk-IPY26RQH.js → chunk-UVHPCLP6.js} +5 -5
  52. package/dist/{chunk-IPY26RQH.js.map → chunk-UVHPCLP6.js.map} +1 -1
  53. package/dist/{chunk-V6BXO6ZS.mjs → chunk-WGD2NBVR.mjs} +835 -38
  54. package/dist/chunk-WGD2NBVR.mjs.map +1 -0
  55. package/dist/{chunk-HYZ5C6FY.mjs → chunk-WS3QZYBI.mjs} +1175 -1996
  56. package/dist/chunk-WS3QZYBI.mjs.map +1 -0
  57. package/dist/{chunk-UR5TU4MW.mjs → chunk-XLR6QUDR.mjs} +3 -3
  58. package/dist/{chunk-UR5TU4MW.mjs.map → chunk-XLR6QUDR.mjs.map} +1 -1
  59. package/dist/chunk-YMS6BPXS.js +807 -0
  60. package/dist/chunk-YMS6BPXS.js.map +1 -0
  61. package/dist/chunk-YOTQG4NP.mjs +314 -0
  62. package/dist/chunk-YOTQG4NP.mjs.map +1 -0
  63. package/dist/chunk-ZGVB35L2.mjs +25 -0
  64. package/dist/chunk-ZGVB35L2.mjs.map +1 -0
  65. package/dist/chunk-ZRAW3HXA.js +43 -0
  66. package/dist/chunk-ZRAW3HXA.js.map +1 -0
  67. package/dist/{chunk-4XXIBWCO.js → chunk-ZRWED7Q6.js} +66 -66
  68. package/dist/{chunk-4XXIBWCO.js.map → chunk-ZRWED7Q6.js.map} +1 -1
  69. package/dist/{chunk-DVENFCQY.js → chunk-ZWQJSZEY.js} +4 -5
  70. package/dist/chunk-ZWQJSZEY.js.map +1 -0
  71. package/dist/components/index.js +104 -104
  72. package/dist/components/index.mjs +4 -4
  73. package/dist/index.js +146 -148
  74. package/dist/index.js.map +1 -1
  75. package/dist/index.mjs +8 -11
  76. package/dist/index.mjs.map +1 -1
  77. package/dist/logger/index.js +7 -7
  78. package/dist/logger/index.mjs +1 -4
  79. package/dist/mikuFusionGame/index.js +4 -4
  80. package/dist/mikuFusionGame/index.mjs +3 -3
  81. package/dist/portfolio/index.js +10 -10
  82. package/dist/portfolio/index.mjs +5 -5
  83. package/dist/showmasterpiece/db/index.js +42 -42
  84. package/dist/showmasterpiece/db/index.mjs +1 -1
  85. package/dist/showmasterpiece/index.js +143 -144
  86. package/dist/showmasterpiece/index.js.map +1 -1
  87. package/dist/showmasterpiece/index.mjs +7 -9
  88. package/dist/showmasterpiece/index.mjs.map +1 -1
  89. package/dist/showmasterpiece/logic/index.js +19 -19
  90. package/dist/showmasterpiece/logic/index.mjs +2 -2
  91. package/dist/showmasterpiece/server/index.js +42 -42
  92. package/dist/showmasterpiece/server/index.mjs +1 -1
  93. package/dist/showmasterpiece/ui/web/index.js +34 -34
  94. package/dist/showmasterpiece/ui/web/index.mjs +6 -6
  95. package/dist/universalExport/server/index.js +2 -4
  96. package/dist/universalExport/server/index.js.map +1 -1
  97. package/dist/universalExport/server/index.mjs +1 -3
  98. package/dist/universalExport/server/index.mjs.map +1 -1
  99. package/dist/universalFile/index.js +6 -9
  100. package/dist/universalFile/index.js.map +1 -1
  101. package/dist/universalFile/index.mjs +1 -5
  102. package/dist/universalFile/index.mjs.map +1 -1
  103. package/dist/universalFile/server/index.js +31 -64
  104. package/dist/universalFile/server/index.js.map +1 -1
  105. package/dist/universalFile/server/index.mjs +7 -42
  106. package/dist/universalFile/server/index.mjs.map +1 -1
  107. package/dist/utils/index.js +11 -11
  108. package/dist/utils/index.mjs +2 -2
  109. package/package.json +1 -1
  110. package/dist/AliyunOSSProvider-2FARPAQD.js +0 -15
  111. package/dist/AliyunOSSProvider-UMVGVBDJ.mjs +0 -9
  112. package/dist/LocalStorageProvider-JQF5WK5H.js +0 -15
  113. package/dist/LocalStorageProvider-PYOHETJV.mjs +0 -9
  114. package/dist/UniversalFileService-RBV6EN5J.js +0 -15
  115. package/dist/UniversalFileService-TNYKO6JN.mjs +0 -9
  116. package/dist/chunk-4NFOSCM6.js +0 -34
  117. package/dist/chunk-4NFOSCM6.js.map +0 -1
  118. package/dist/chunk-4VJQZSPU.mjs.map +0 -1
  119. package/dist/chunk-6AHYPPUP.js +0 -344
  120. package/dist/chunk-6AHYPPUP.js.map +0 -1
  121. package/dist/chunk-76V7EKBX.mjs +0 -796
  122. package/dist/chunk-76V7EKBX.mjs.map +0 -1
  123. package/dist/chunk-ACLOJXXE.js +0 -195
  124. package/dist/chunk-ACLOJXXE.js.map +0 -1
  125. package/dist/chunk-AEXPAH7Z.mjs +0 -32
  126. package/dist/chunk-AEXPAH7Z.mjs.map +0 -1
  127. package/dist/chunk-CFGX3EKK.js +0 -560
  128. package/dist/chunk-CFGX3EKK.js.map +0 -1
  129. package/dist/chunk-D2HXMGXS.js +0 -46
  130. package/dist/chunk-D2HXMGXS.js.map +0 -1
  131. package/dist/chunk-DVENFCQY.js.map +0 -1
  132. package/dist/chunk-HYZ5C6FY.mjs.map +0 -1
  133. package/dist/chunk-K7WNCB4V.mjs +0 -554
  134. package/dist/chunk-K7WNCB4V.mjs.map +0 -1
  135. package/dist/chunk-L4ZYBFB2.mjs +0 -44
  136. package/dist/chunk-L4ZYBFB2.mjs.map +0 -1
  137. package/dist/chunk-M4HGHTIC.js +0 -820
  138. package/dist/chunk-M4HGHTIC.js.map +0 -1
  139. package/dist/chunk-PXWDQFWV.mjs +0 -192
  140. package/dist/chunk-PXWDQFWV.mjs.map +0 -1
  141. package/dist/chunk-U7AQC2Z7.js.map +0 -1
  142. package/dist/chunk-V6BXO6ZS.mjs.map +0 -1
  143. package/dist/chunk-VTGPHE4Z.mjs +0 -322
  144. package/dist/chunk-VTGPHE4Z.mjs.map +0 -1
  145. package/dist/chunk-W2NCOORK.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkU7AQC2Z7_js = require('./chunk-U7AQC2Z7.js');
3
+ var chunkEKIOJEJK_js = require('./chunk-EKIOJEJK.js');
4
4
  var chunkDENROXAE_js = require('./chunk-DENROXAE.js');
5
5
  var chunkDM2GUVUH_js = require('./chunk-DM2GUVUH.js');
6
- var chunk4XXIBWCO_js = require('./chunk-4XXIBWCO.js');
6
+ var chunkZRWED7Q6_js = require('./chunk-ZRWED7Q6.js');
7
+ var chunkZ6ZWNWWR_js = require('./chunk-Z6ZWNWWR.js');
7
8
  var React29 = require('react');
8
9
  var lucideReact = require('lucide-react');
9
10
  var Link = require('next/link');
@@ -15,7 +16,7 @@ var React29__default = /*#__PURE__*/_interopDefault(React29);
15
16
  var Link__default = /*#__PURE__*/_interopDefault(Link);
16
17
 
17
18
  // src/showmasterpiece/ui/web/components/AddToCartButton.tsx
18
- chunkU7AQC2Z7_js.init_hooks();
19
+ chunkEKIOJEJK_js.init_hooks();
19
20
  var AddToCartButton = ({
20
21
  collection,
21
22
  userId,
@@ -23,7 +24,7 @@ var AddToCartButton = ({
23
24
  size = "md",
24
25
  showQuantitySelector = false
25
26
  }) => {
26
- const { cart, addToCart: addToCartContext, updateCartItem: updateCartItemContext, removeFromCart: removeFromCartContext, loading } = chunkU7AQC2Z7_js.useCartContext();
27
+ const { cart, addToCart: addToCartContext, updateCartItem: updateCartItemContext, removeFromCart: removeFromCartContext, loading } = chunkEKIOJEJK_js.useCartContext();
27
28
  const [quantity, setQuantity] = React29.useState(1);
28
29
  const [isAdded, setIsAdded] = React29.useState(false);
29
30
  const cartItem = cart.items.find((item) => item.collectionId === collection.id);
@@ -238,22 +239,22 @@ var CollectionCard = ({
238
239
  };
239
240
  const isProduct = collection.category !== "collection" /* COLLECTION */;
240
241
  return /* @__PURE__ */ React29__default.default.createElement(
241
- chunk4XXIBWCO_js.Card,
242
+ chunkZRWED7Q6_js.Card,
242
243
  {
243
244
  ref: cardRef,
244
245
  className: `overflow-hidden transition-all duration-300 transform w-full max-w-sm mx-auto group border-prussian-blue-200/30 shadow-lg hover:shadow-xl bg-gradient-to-br from-white to-prussian-blue-900/5 ${!(collection.pages && collection.pages.length > 0) ? "cursor-default" : "cursor-pointer hover:-translate-y-1 hover:shadow-moonstone/20 hover:border-moonstone/40"}`,
245
246
  onClick: collection.pages && collection.pages.length > 0 ? () => onSelect(collection) : void 0
246
247
  },
247
248
  /* @__PURE__ */ React29__default.default.createElement("div", { className: "relative w-full bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 flex items-center justify-center overflow-hidden aspect-[1/1.414]" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute inset-0 bg-gradient-to-t from-rich-black/60 via-oxford-blue/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" }), /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute bottom-4 left-4 z-10" }, /* @__PURE__ */ React29__default.default.createElement(
248
- chunk4XXIBWCO_js.Badge,
249
+ chunkZRWED7Q6_js.Badge,
249
250
  {
250
251
  variant: "secondary",
251
252
  className: "bg-moonstone/90 text-white backdrop-blur-sm border-none hover:bg-cerulean/90 transition-colors shadow-lg"
252
253
  },
253
254
  isProduct ? /* @__PURE__ */ React29__default.default.createElement(React29__default.default.Fragment, null, /* @__PURE__ */ React29__default.default.createElement(lucideReact.ShoppingBag, { size: 16, className: "mr-1" }), "\u5546\u54C1") : /* @__PURE__ */ React29__default.default.createElement(React29__default.default.Fragment, null, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Book, { size: 16, className: "mr-1" }), collection.pages.length, " \u9875")
254
255
  )), renderCoverImage()),
255
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, { className: "p-6" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-bold text-rich-black mb-2 line-clamp-2 group-hover:text-moonstone transition-colors" }, collection.title), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-700 text-sm mb-2 font-medium" }, "\u4EF7\u683C\uFF1A", formatPrice(collection.price)), collection.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-500 text-sm mb-4 line-clamp-2" }, collection.description), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-2" }, collection.pages && collection.pages.length > 0 && /* @__PURE__ */ React29__default.default.createElement(
256
- chunk4XXIBWCO_js.Button,
256
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, { className: "p-6" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-bold text-rich-black mb-2 line-clamp-2 group-hover:text-moonstone transition-colors" }, collection.title), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-700 text-sm mb-2 font-medium" }, "\u4EF7\u683C\uFF1A", formatPrice(collection.price)), collection.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-500 text-sm mb-4 line-clamp-2" }, collection.description), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-2" }, collection.pages && collection.pages.length > 0 && /* @__PURE__ */ React29__default.default.createElement(
257
+ chunkZRWED7Q6_js.Button,
257
258
  {
258
259
  className: "flex-1 bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white gap-2 shadow-lg transition-all duration-300 hover:shadow-moonstone/30",
259
260
  onClick: (e) => {
@@ -330,8 +331,8 @@ var ArtworkViewer = ({
330
331
  }
331
332
  }, 100);
332
333
  };
333
- return /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Card, { className: "w-full max-w-full box-border mx-auto shadow-lg border-prussian-blue-200/30 bg-gradient-to-br from-white to-prussian-blue-900/5" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, { className: "p-6 lg:p-5 md:p-4 sm:p-3" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "relative min-h-[600px] flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded-lg overflow-hidden lg:min-h-[500px] md:min-h-[450px] sm:min-h-[350px] sm:rounded-md" }, imageLoading && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u52A0\u8F7D\u4E2D...")), imageError && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.ImageIcon, { size: 48, className: "text-prussian-blue-500" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29__default.default.createElement(
334
- chunk4XXIBWCO_js.Button,
334
+ return /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Card, { className: "w-full max-w-full box-border mx-auto shadow-lg border-prussian-blue-200/30 bg-gradient-to-br from-white to-prussian-blue-900/5" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, { className: "p-6 lg:p-5 md:p-4 sm:p-3" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "relative min-h-[600px] flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded-lg overflow-hidden lg:min-h-[500px] md:min-h-[450px] sm:min-h-[350px] sm:rounded-md" }, imageLoading && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u52A0\u8F7D\u4E2D...")), imageError && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.ImageIcon, { size: 48, className: "text-prussian-blue-500" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29__default.default.createElement(
335
+ chunkZRWED7Q6_js.Button,
335
336
  {
336
337
  onClick: retryImageLoad,
337
338
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
@@ -348,7 +349,7 @@ var ArtworkViewer = ({
348
349
  onError: handleImageError
349
350
  }
350
351
  ), /* @__PURE__ */ React29__default.default.createElement(
351
- chunk4XXIBWCO_js.Button,
352
+ chunkZRWED7Q6_js.Button,
352
353
  {
353
354
  onClick: onPrev,
354
355
  disabled: !canGoPrev,
@@ -359,7 +360,7 @@ var ArtworkViewer = ({
359
360
  },
360
361
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ChevronLeft, { size: 24 })
361
362
  ), /* @__PURE__ */ React29__default.default.createElement(
362
- chunk4XXIBWCO_js.Button,
363
+ chunkZRWED7Q6_js.Button,
363
364
  {
364
365
  onClick: onNext,
365
366
  disabled: !canGoNext,
@@ -369,7 +370,7 @@ var ArtworkViewer = ({
369
370
  "aria-label": "\u4E0B\u4E00\u5F20"
370
371
  },
371
372
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ChevronRight, { size: 24 })
372
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "mt-6 w-full max-w-full box-border lg:mt-5 md:mt-5 sm:mt-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-rich-black leading-tight lg:text-xl md:text-xl sm:text-lg sm:leading-5" }, artwork.title), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u4E3B\u9898\uFF1A", artwork.theme)), artwork.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-base text-prussian-blue-700 leading-relaxed sm:text-sm sm:leading-6" }, artwork.description)))));
373
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "mt-6 w-full max-w-full box-border lg:mt-5 md:mt-5 sm:mt-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-rich-black leading-tight lg:text-xl md:text-xl sm:text-lg sm:leading-5" }, artwork.title), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u4E3B\u9898\uFF1A", artwork.theme)), artwork.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-base text-prussian-blue-700 leading-relaxed sm:text-sm sm:leading-6" }, artwork.description)))));
373
374
  };
374
375
  var MobileAlbumViewer = ({
375
376
  artworks,
@@ -539,7 +540,7 @@ var MobileAlbumViewer = ({
539
540
  },
540
541
  imageLoading && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center gap-4 text-white" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u52A0\u8F7D\u4E2D..."))),
541
542
  imageError && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center gap-4 text-white text-center p-4" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.ImageIcon, { size: 48, className: "text-moonstone" }), /* @__PURE__ */ React29__default.default.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29__default.default.createElement(
542
- chunk4XXIBWCO_js.Button,
543
+ chunkZRWED7Q6_js.Button,
543
544
  {
544
545
  onClick: retryImageLoad,
545
546
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
@@ -562,7 +563,7 @@ var MobileAlbumViewer = ({
562
563
  }
563
564
  ),
564
565
  /* @__PURE__ */ React29__default.default.createElement(
565
- chunk4XXIBWCO_js.Button,
566
+ chunkZRWED7Q6_js.Button,
566
567
  {
567
568
  onClick: onPrev,
568
569
  disabled: !canGoPrev,
@@ -574,7 +575,7 @@ var MobileAlbumViewer = ({
574
575
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ChevronLeft, { size: 24 })
575
576
  ),
576
577
  /* @__PURE__ */ React29__default.default.createElement(
577
- chunk4XXIBWCO_js.Button,
578
+ chunkZRWED7Q6_js.Button,
578
579
  {
579
580
  onClick: onNext,
580
581
  disabled: !canGoNext,
@@ -585,8 +586,8 @@ var MobileAlbumViewer = ({
585
586
  },
586
587
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ChevronRight, { size: 24 })
587
588
  ),
588
- /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-0 left-0 right-0 bg-gradient-to-b from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between text-white" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, currentIndex + 1, " / ", artworks.length)), /* @__PURE__ */ React29__default.default.createElement(
589
- chunk4XXIBWCO_js.Button,
589
+ /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute top-0 left-0 right-0 bg-gradient-to-b from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between text-white" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, currentIndex + 1, " / ", artworks.length)), /* @__PURE__ */ React29__default.default.createElement(
590
+ chunkZRWED7Q6_js.Button,
590
591
  {
591
592
  onClick: toggleThumbnails,
592
593
  size: "icon",
@@ -596,9 +597,9 @@ var MobileAlbumViewer = ({
596
597
  },
597
598
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Grid3x3, { size: 20 })
598
599
  ))),
599
- /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "text-white" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-xl font-bold mb-2" }, currentArtwork.title), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-wrap gap-2 mb-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u7F16\u53F7\uFF1A", currentArtwork.number), currentArtwork.createdTime && /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", currentArtwork.createdTime), currentArtwork.theme && /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u4E3B\u9898\uFF1A", currentArtwork.theme)), currentArtwork.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-sm text-white/90 leading-relaxed" }, currentArtwork.description)))
600
+ /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "text-white" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-xl font-bold mb-2" }, currentArtwork.title), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-wrap gap-2 mb-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u7F16\u53F7\uFF1A", currentArtwork.number), currentArtwork.createdTime && /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", currentArtwork.createdTime), currentArtwork.theme && /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u4E3B\u9898\uFF1A", currentArtwork.theme)), currentArtwork.description && /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-sm text-white/90 leading-relaxed" }, currentArtwork.description)))
600
601
  ), showThumbnails && /* @__PURE__ */ React29__default.default.createElement("div", { className: "absolute inset-0 bg-gradient-to-br from-rich-black/95 to-oxford-blue/90 backdrop-blur-sm z-30 flex flex-col" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between p-4 border-b border-moonstone/30" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-white text-lg font-semibold" }, "\u9009\u62E9\u56FE\u7247"), /* @__PURE__ */ React29__default.default.createElement(
601
- chunk4XXIBWCO_js.Button,
602
+ chunkZRWED7Q6_js.Button,
602
603
  {
603
604
  onClick: () => setShowThumbnails(false),
604
605
  size: "icon",
@@ -732,8 +733,804 @@ var ThumbnailSidebar = ({
732
733
  ))));
733
734
  };
734
735
 
735
- // src/showmasterpiece/ui/web/services/index.ts
736
- chunkU7AQC2Z7_js.init_services();
736
+ // src/showmasterpiece/services/index.ts
737
+ chunkEKIOJEJK_js.init_masterpiecesService();
738
+ chunkEKIOJEJK_js.init_masterpiecesConfigService();
739
+ chunkEKIOJEJK_js.init_cartService();
740
+ chunkEKIOJEJK_js.init_bookingService();
741
+ chunkEKIOJEJK_js.init_bookingAdminService();
742
+ chunkEKIOJEJK_js.init_cartHistoryService();
743
+
744
+ // src/services/universalFile/config/index.ts
745
+ if (typeof window === "undefined") {
746
+ try {
747
+ chunkZ6ZWNWWR_js.__require("dotenv").config({ path: chunkZ6ZWNWWR_js.__require("path").join(process.cwd(), ".env.local") });
748
+ } catch (error) {
749
+ console.warn("\u26A0\uFE0F [ConfigManager] \u65E0\u6CD5\u52A0\u8F7D.env.local\u6587\u4EF6:", error);
750
+ }
751
+ }
752
+ var DEFAULT_CONFIG = {
753
+ defaultStorage: "aliyun-oss",
754
+ // 修改默认存储为OSS
755
+ storageProviders: {
756
+ "local": {
757
+ type: "local",
758
+ enabled: false,
759
+ // 默认禁用本地存储
760
+ rootPath: process.env.FILE_STORAGE_PATH || "uploads",
761
+ baseUrl: process.env.FILE_BASE_URL || "/uploads"
762
+ },
763
+ "aliyun-oss": {
764
+ type: "aliyun-oss",
765
+ enabled: true,
766
+ // 默认启用OSS
767
+ region: "",
768
+ bucket: "",
769
+ accessKeyId: "",
770
+ accessKeySecret: ""
771
+ },
772
+ "aws-s3": {
773
+ type: "aws-s3",
774
+ enabled: false
775
+ },
776
+ "qcloud-cos": {
777
+ type: "qcloud-cos",
778
+ enabled: false
779
+ }
780
+ },
781
+ defaultCDN: "none",
782
+ cdnProviders: {
783
+ "none": {
784
+ type: "none",
785
+ enabled: false
786
+ },
787
+ "aliyun-cdn": {
788
+ type: "aliyun-cdn",
789
+ enabled: false,
790
+ domain: "",
791
+ accessKeyId: "",
792
+ accessKeySecret: ""
793
+ },
794
+ "aws-cloudfront": {
795
+ type: "aws-cloudfront",
796
+ enabled: false
797
+ },
798
+ "qcloud-cdn": {
799
+ type: "qcloud-cdn",
800
+ enabled: false
801
+ }
802
+ },
803
+ maxFileSize: parseInt(process.env.MAX_FILE_SIZE || "104857600"),
804
+ // 100MB
805
+ allowedMimeTypes: [
806
+ // 图片类型
807
+ "image/jpeg",
808
+ "image/png",
809
+ "image/gif",
810
+ "image/webp",
811
+ "image/svg+xml",
812
+ // 音频类型
813
+ "audio/mpeg",
814
+ "audio/wav",
815
+ "audio/ogg",
816
+ "audio/mp4",
817
+ "audio/aac",
818
+ // 视频类型
819
+ "video/mp4",
820
+ "video/avi",
821
+ "video/mov",
822
+ "video/webm",
823
+ "video/mkv",
824
+ // 文档类型
825
+ "application/pdf",
826
+ "text/plain",
827
+ "application/json",
828
+ "application/javascript",
829
+ "text/css",
830
+ "text/html",
831
+ "text/markdown",
832
+ // 压缩文件
833
+ "application/zip",
834
+ "application/x-zip-compressed",
835
+ "application/x-rar-compressed",
836
+ "application/x-7z-compressed",
837
+ // 3D模型文件
838
+ "application/octet-stream",
839
+ // PMD/PMX文件
840
+ "model/gltf+json",
841
+ "model/gltf-binary"
842
+ ],
843
+ enableProcessing: process.env.ENABLE_FILE_PROCESSING === "true",
844
+ processingQueueSize: parseInt(process.env.PROCESSING_QUEUE_SIZE || "10"),
845
+ cache: {
846
+ metadataTTL: parseInt(process.env.METADATA_CACHE_TTL || "3600"),
847
+ // 1小时
848
+ urlTTL: parseInt(process.env.URL_CACHE_TTL || "1800")
849
+ // 30分钟
850
+ }
851
+ };
852
+ var FileServiceConfigManager = class {
853
+ constructor(customConfig) {
854
+ this.config = this.mergeConfig(DEFAULT_CONFIG, customConfig);
855
+ this.validateConfig();
856
+ }
857
+ /**
858
+ * 获取完整配置
859
+ */
860
+ getConfig() {
861
+ return { ...this.config };
862
+ }
863
+ /**
864
+ * 获取存储提供者配置
865
+ */
866
+ getStorageConfig(type) {
867
+ return this.config.storageProviders[type];
868
+ }
869
+ /**
870
+ * 获取CDN提供者配置
871
+ */
872
+ getCDNConfig(type) {
873
+ return this.config.cdnProviders[type];
874
+ }
875
+ /**
876
+ * 更新配置
877
+ */
878
+ updateConfig(updates) {
879
+ this.config = this.mergeConfig(this.config, updates);
880
+ this.validateConfig();
881
+ }
882
+ /**
883
+ * 启用存储提供者
884
+ */
885
+ enableStorageProvider(type, config) {
886
+ if (this.config.storageProviders[type]) {
887
+ this.config.storageProviders[type] = {
888
+ ...this.config.storageProviders[type],
889
+ ...config,
890
+ enabled: true
891
+ };
892
+ }
893
+ }
894
+ /**
895
+ * 禁用存储提供者
896
+ */
897
+ disableStorageProvider(type) {
898
+ if (this.config.storageProviders[type]) {
899
+ this.config.storageProviders[type].enabled = false;
900
+ }
901
+ }
902
+ /**
903
+ * 启用CDN提供者
904
+ */
905
+ enableCDNProvider(type, config) {
906
+ if (this.config.cdnProviders[type]) {
907
+ this.config.cdnProviders[type] = {
908
+ ...this.config.cdnProviders[type],
909
+ ...config,
910
+ enabled: true
911
+ };
912
+ this.config.defaultCDN = type;
913
+ }
914
+ }
915
+ /**
916
+ * 禁用CDN提供者
917
+ */
918
+ disableCDNProvider(type) {
919
+ if (this.config.cdnProviders[type]) {
920
+ this.config.cdnProviders[type].enabled = false;
921
+ if (this.config.defaultCDN === type) {
922
+ this.config.defaultCDN = "none";
923
+ }
924
+ }
925
+ }
926
+ /**
927
+ * 从环境变量加载阿里云OSS配置
928
+ */
929
+ loadAliyunOSSFromEnv() {
930
+ const config = {
931
+ region: process.env.ALIYUN_OSS_REGION,
932
+ bucket: process.env.ALIYUN_OSS_BUCKET,
933
+ accessKeyId: process.env.ALIYUN_OSS_ACCESS_KEY_ID,
934
+ accessKeySecret: process.env.ALIYUN_OSS_ACCESS_KEY_SECRET,
935
+ customDomain: process.env.ALIYUN_OSS_CUSTOM_DOMAIN,
936
+ secure: process.env.ALIYUN_OSS_SECURE === "true",
937
+ internal: process.env.ALIYUN_OSS_INTERNAL === "true"
938
+ };
939
+ console.log("\u{1F50D} [ConfigManager] \u963F\u91CC\u4E91OSS\u914D\u7F6E:", {
940
+ region: config.region,
941
+ bucket: config.bucket,
942
+ accessKeyId: config.accessKeyId ? "***" : "\u672A\u8BBE\u7F6E",
943
+ accessKeySecret: config.accessKeySecret ? "***" : "\u672A\u8BBE\u7F6E",
944
+ customDomain: config.customDomain || "\u672A\u8BBE\u7F6E"
945
+ });
946
+ if (config.region && config.bucket && config.accessKeyId && config.accessKeySecret) {
947
+ this.enableStorageProvider("aliyun-oss", config);
948
+ this.config.defaultStorage = "aliyun-oss";
949
+ console.log("\u2705 [ConfigManager] \u4ECE\u73AF\u5883\u53D8\u91CF\u52A0\u8F7D\u963F\u91CC\u4E91OSS\u914D\u7F6E\u6210\u529F");
950
+ } else {
951
+ console.warn("\u26A0\uFE0F [ConfigManager] \u963F\u91CC\u4E91OSS\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u4E0D\u5B8C\u6574");
952
+ }
953
+ }
954
+ /**
955
+ * 从配置管理模块加载阿里云OSS配置
956
+ */
957
+ async loadAliyunOSSFromConfigManager() {
958
+ return;
959
+ }
960
+ /**
961
+ * 从环境变量加载阿里云CDN配置
962
+ */
963
+ loadAliyunCDNFromEnv() {
964
+ const config = {
965
+ domain: process.env.ALIYUN_CDN_DOMAIN,
966
+ accessKeyId: process.env.ALIYUN_CDN_ACCESS_KEY_ID,
967
+ accessKeySecret: process.env.ALIYUN_CDN_ACCESS_KEY_SECRET,
968
+ region: process.env.ALIYUN_CDN_REGION
969
+ };
970
+ if (config.domain && config.accessKeyId && config.accessKeySecret) {
971
+ this.enableCDNProvider("aliyun-cdn", config);
972
+ console.log("\u2705 [ConfigManager] \u4ECE\u73AF\u5883\u53D8\u91CF\u52A0\u8F7D\u963F\u91CC\u4E91CDN\u914D\u7F6E\u6210\u529F");
973
+ } else {
974
+ console.log("\u2139\uFE0F [ConfigManager] \u963F\u91CC\u4E91CDN\u672A\u914D\u7F6E\uFF0C\u5C06\u4F7F\u7528\u9ED8\u8BA4\u5B58\u50A8\u65B9\u5F0F");
975
+ }
976
+ }
977
+ /**
978
+ * 验证配置有效性
979
+ */
980
+ validateConfig() {
981
+ const defaultStorageConfig = this.config.storageProviders[this.config.defaultStorage];
982
+ if (!defaultStorageConfig || !defaultStorageConfig.enabled) {
983
+ console.warn(`\u26A0\uFE0F [ConfigManager] \u9ED8\u8BA4\u5B58\u50A8\u63D0\u4F9B\u8005 ${this.config.defaultStorage} \u672A\u542F\u7528`);
984
+ }
985
+ if (this.config.maxFileSize <= 0) {
986
+ throw new Error("\u6587\u4EF6\u5927\u5C0F\u9650\u5236\u5FC5\u987B\u5927\u4E8E0");
987
+ }
988
+ if (this.config.processingQueueSize <= 0) {
989
+ throw new Error("\u5904\u7406\u961F\u5217\u5927\u5C0F\u5FC5\u987B\u5927\u4E8E0");
990
+ }
991
+ if (this.config.cache.metadataTTL <= 0 || this.config.cache.urlTTL <= 0) {
992
+ throw new Error("\u7F13\u5B58TTL\u5FC5\u987B\u5927\u4E8E0");
993
+ }
994
+ }
995
+ /**
996
+ * 合并配置
997
+ */
998
+ mergeConfig(base, override) {
999
+ if (!override) return { ...base };
1000
+ return {
1001
+ ...base,
1002
+ ...override,
1003
+ storageProviders: {
1004
+ ...base.storageProviders,
1005
+ ...override.storageProviders || {}
1006
+ },
1007
+ cdnProviders: {
1008
+ ...base.cdnProviders,
1009
+ ...override.cdnProviders || {}
1010
+ },
1011
+ cache: {
1012
+ ...base.cache,
1013
+ ...override.cache || {}
1014
+ }
1015
+ };
1016
+ }
1017
+ };
1018
+ async function createFileServiceConfig(customConfig) {
1019
+ const configManager = new FileServiceConfigManager(customConfig);
1020
+ await configManager.loadAliyunOSSFromEnv();
1021
+ await configManager.loadAliyunCDNFromEnv();
1022
+ await configManager.loadAliyunOSSFromConfigManager();
1023
+ return configManager;
1024
+ }
1025
+
1026
+ // src/showmasterpiece/services/fileService.ts
1027
+ var cachedConfigManager = null;
1028
+ async function getShowmasterpieceOSSConfig() {
1029
+ try {
1030
+ console.log("\u{1F3A8} [ShowMasterpiece] \u5C1D\u8BD5\u4ECE\u72EC\u7ACB\u914D\u7F6E\u8BFB\u53D6OSS\u914D\u7F6E...");
1031
+ const environment = process.env.NODE_ENV === "production" ? "production" : "development";
1032
+ console.log(`\u{1F3A8} [ShowMasterpiece] \u5F53\u524D\u73AF\u5883: ${environment}`);
1033
+ if (typeof window !== "undefined") {
1034
+ console.log("\u{1F310} [ShowMasterpiece] \u5BA2\u6237\u7AEF\u73AF\u5883\uFF0C\u901A\u8FC7API\u8BFB\u53D6\u914D\u7F6E");
1035
+ const configKeys = "ALIYUN_OSS_REGION,ALIYUN_OSS_BUCKET,ALIYUN_OSS_ACCESS_KEY_ID,ALIYUN_OSS_ACCESS_KEY_SECRET,ALIYUN_OSS_CUSTOM_DOMAIN,ALIYUN_OSS_SECURE,ALIYUN_OSS_INTERNAL";
1036
+ const response = await fetch(`/api/showmasterpiece/config/items?environment=${environment}&keys=${configKeys}`);
1037
+ if (!response.ok) {
1038
+ console.warn("\u26A0\uFE0F [ShowMasterpiece] \u8BFB\u53D6\u72EC\u7ACB\u914D\u7F6EAPI\u5931\u8D25:", response.status);
1039
+ return null;
1040
+ }
1041
+ const data = await response.json();
1042
+ if (!data.success || !data.items) {
1043
+ console.warn("\u26A0\uFE0F [ShowMasterpiece] \u72EC\u7ACB\u914D\u7F6EAPI\u54CD\u5E94\u5F02\u5E38:", data);
1044
+ return null;
1045
+ }
1046
+ const configMap = {};
1047
+ data.items.forEach((item) => {
1048
+ if (item.value) {
1049
+ configMap[item.key] = item.value;
1050
+ }
1051
+ });
1052
+ const ossConfig = {
1053
+ region: configMap["ALIYUN_OSS_REGION"],
1054
+ bucket: configMap["ALIYUN_OSS_BUCKET"],
1055
+ accessKeyId: configMap["ALIYUN_OSS_ACCESS_KEY_ID"],
1056
+ accessKeySecret: configMap["ALIYUN_OSS_ACCESS_KEY_SECRET"],
1057
+ customDomain: configMap["ALIYUN_OSS_CUSTOM_DOMAIN"],
1058
+ secure: configMap["ALIYUN_OSS_SECURE"] === "true",
1059
+ internal: configMap["ALIYUN_OSS_INTERNAL"] === "true"
1060
+ };
1061
+ console.log("\u{1F3A8} [ShowMasterpiece] \u72EC\u7ACB\u914D\u7F6E\u8BFB\u53D6\u7ED3\u679C:", {
1062
+ region: ossConfig.region || "\u672A\u914D\u7F6E",
1063
+ bucket: ossConfig.bucket || "\u672A\u914D\u7F6E",
1064
+ accessKeyId: ossConfig.accessKeyId ? "***" : "\u672A\u914D\u7F6E",
1065
+ accessKeySecret: ossConfig.accessKeySecret ? "***" : "\u672A\u914D\u7F6E",
1066
+ customDomain: ossConfig.customDomain || "\u672A\u914D\u7F6E",
1067
+ secure: ossConfig.secure,
1068
+ internal: ossConfig.internal
1069
+ });
1070
+ if (ossConfig.region && ossConfig.bucket && ossConfig.accessKeyId && ossConfig.accessKeySecret) {
1071
+ console.log("\u2705 [ShowMasterpiece] \u72EC\u7ACB\u914D\u7F6E\u5B8C\u6574\uFF0C\u5C06\u4F7F\u7528\u72EC\u7ACBOSS\u914D\u7F6E");
1072
+ return ossConfig;
1073
+ } else {
1074
+ console.log("\u26A0\uFE0F [ShowMasterpiece] \u72EC\u7ACB\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF0C\u5C06\u56DE\u9000\u5230\u516C\u5171\u914D\u7F6E");
1075
+ console.log("\u{1F50D} [ShowMasterpiece] \u7F3A\u5931\u914D\u7F6E\u9879:", {
1076
+ region: !ossConfig.region,
1077
+ bucket: !ossConfig.bucket,
1078
+ accessKeyId: !ossConfig.accessKeyId,
1079
+ accessKeySecret: !ossConfig.accessKeySecret
1080
+ });
1081
+ return null;
1082
+ }
1083
+ } else {
1084
+ console.log("\u{1F5A5}\uFE0F [ShowMasterpiece] \u670D\u52A1\u5668\u7AEF\u73AF\u5883\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E\u56DE\u9000");
1085
+ return null;
1086
+ }
1087
+ } catch (error) {
1088
+ console.warn("\u26A0\uFE0F [ShowMasterpiece] \u8BFB\u53D6\u72EC\u7ACB\u914D\u7F6E\u5931\u8D25:", error);
1089
+ return null;
1090
+ }
1091
+ }
1092
+ async function getCachedConfigManager() {
1093
+ if (!cachedConfigManager) {
1094
+ const showmasterpieceOSSConfig = await getShowmasterpieceOSSConfig();
1095
+ if (showmasterpieceOSSConfig) {
1096
+ console.log("\u{1F3A8} [ShowMasterpiece] \u4F7F\u7528\u72EC\u7ACBOSS\u914D\u7F6E\u521B\u5EFA\u914D\u7F6E\u7BA1\u7406\u5668");
1097
+ cachedConfigManager = await createFileServiceConfig({
1098
+ defaultStorage: "aliyun-oss",
1099
+ storageProviders: {
1100
+ "local": {
1101
+ type: "local",
1102
+ enabled: false,
1103
+ rootPath: "uploads",
1104
+ baseUrl: "/uploads"
1105
+ },
1106
+ "aliyun-oss": {
1107
+ type: "aliyun-oss",
1108
+ enabled: true,
1109
+ ...showmasterpieceOSSConfig
1110
+ },
1111
+ "aws-s3": {
1112
+ type: "aws-s3",
1113
+ enabled: false
1114
+ },
1115
+ "qcloud-cos": {
1116
+ type: "qcloud-cos",
1117
+ enabled: false
1118
+ }
1119
+ }
1120
+ });
1121
+ } else {
1122
+ console.log("\u{1F3A8} [ShowMasterpiece] \u72EC\u7ACB\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E");
1123
+ cachedConfigManager = await createFileServiceConfig({
1124
+ defaultStorage: "local",
1125
+ // 默认使用本地存储
1126
+ storageProviders: {
1127
+ "local": {
1128
+ type: "local",
1129
+ enabled: true,
1130
+ rootPath: "uploads",
1131
+ baseUrl: "/uploads"
1132
+ },
1133
+ "aliyun-oss": {
1134
+ type: "aliyun-oss",
1135
+ enabled: false
1136
+ // 如果独立配置失败,禁用OSS
1137
+ },
1138
+ "aws-s3": {
1139
+ type: "aws-s3",
1140
+ enabled: false
1141
+ },
1142
+ "qcloud-cos": {
1143
+ type: "qcloud-cos",
1144
+ enabled: false
1145
+ }
1146
+ }
1147
+ });
1148
+ }
1149
+ }
1150
+ return cachedConfigManager;
1151
+ }
1152
+ async function getShowMasterpieceFileConfig() {
1153
+ const configManager = await getCachedConfigManager();
1154
+ const config = configManager.getConfig();
1155
+ const ossConfig = config.storageProviders["aliyun-oss"];
1156
+ if (ossConfig && ossConfig.enabled) {
1157
+ console.log("\u2705 [ShowMasterpiece] \u4F7F\u7528\u963F\u91CC\u4E91OSS\u5B58\u50A8");
1158
+ return configManager;
1159
+ } else {
1160
+ console.log("\u2139\uFE0F [ShowMasterpiece] OSS\u672A\u914D\u7F6E\uFF0C\u4F7F\u7528\u672C\u5730\u5B58\u50A8");
1161
+ return configManager;
1162
+ }
1163
+ }
1164
+ async function uploadArtworkImage(file, collectionId) {
1165
+ console.log("\u{1F3A8} [ShowMasterpiece] \u5F00\u59CB\u4E0A\u4F20\u4F5C\u54C1\u56FE\u7247:", file.name);
1166
+ const formData = new FormData();
1167
+ formData.append("file", file);
1168
+ formData.append("moduleId", "showmasterpiece");
1169
+ formData.append("businessId", collectionId ? `collection-${collectionId}` : "artwork");
1170
+ const timestamp = Date.now();
1171
+ const randomId = Math.random().toString(36).substr(2, 9);
1172
+ const extension = file.name.split(".").pop()?.toLowerCase() || "jpg";
1173
+ const basePath = collectionId ? `showmasterpiece/collection-${collectionId}` : "showmasterpiece/artwork";
1174
+ formData.append("folderPath", `${basePath}/${timestamp}_${randomId}.${extension}`);
1175
+ formData.append("needsProcessing", "true");
1176
+ const response = await fetch("/api/universal-file/upload", {
1177
+ method: "POST",
1178
+ body: formData
1179
+ });
1180
+ if (!response.ok) {
1181
+ const errorData = await response.json();
1182
+ throw new Error(errorData.error || `HTTP ${response.status}: ${response.statusText}`);
1183
+ }
1184
+ const result = await response.json();
1185
+ if (!result.success) {
1186
+ throw new Error(result.error || "\u4E0A\u4F20\u5931\u8D25");
1187
+ }
1188
+ console.log("\u2705 [ShowMasterpiece] \u4F5C\u54C1\u56FE\u7247\u4E0A\u4F20\u6210\u529F:", {
1189
+ fileId: result.data.fileId,
1190
+ accessUrl: result.data.accessUrl
1191
+ });
1192
+ return {
1193
+ fileId: result.data.fileId,
1194
+ accessUrl: result.data.accessUrl
1195
+ };
1196
+ }
1197
+ async function getArtworkImageUrl(fileId) {
1198
+ console.log("\u{1F517} [ShowMasterpiece] \u83B7\u53D6\u4F5C\u54C1\u56FE\u7247URL:", fileId);
1199
+ const response = await fetch(`/api/universal-file/${fileId}`);
1200
+ if (!response.ok) {
1201
+ throw new Error(`\u83B7\u53D6\u6587\u4EF6URL\u5931\u8D25: HTTP ${response.status}`);
1202
+ }
1203
+ const result = await response.json();
1204
+ if (!result.success) {
1205
+ throw new Error(result.error || "\u83B7\u53D6\u6587\u4EF6URL\u5931\u8D25");
1206
+ }
1207
+ return result.data.accessUrl;
1208
+ }
1209
+ async function shouldUseUniversalFileService() {
1210
+ try {
1211
+ const configManager = await getCachedConfigManager();
1212
+ const config = configManager.getConfig();
1213
+ const ossConfig = config.storageProviders["aliyun-oss"];
1214
+ if (ossConfig && ossConfig.enabled) {
1215
+ return true;
1216
+ }
1217
+ return true;
1218
+ } catch (error) {
1219
+ console.warn("\u26A0\uFE0F [ShowMasterpiece] \u68C0\u67E5\u6587\u4EF6\u670D\u52A1\u914D\u7F6E\u5931\u8D25:", error);
1220
+ return false;
1221
+ }
1222
+ }
1223
+ async function getStorageModeDisplayName() {
1224
+ const shouldUse = await shouldUseUniversalFileService();
1225
+ if (shouldUse) {
1226
+ const configManager = await getCachedConfigManager();
1227
+ const config = configManager.getConfig();
1228
+ const ossConfig = config.storageProviders["aliyun-oss"];
1229
+ if (ossConfig && ossConfig.enabled) {
1230
+ return "\u963F\u91CC\u4E91OSS + CDN (\u72EC\u7ACB\u914D\u7F6E)";
1231
+ } else {
1232
+ return "\u672C\u5730\u5B58\u50A8 + \u6587\u4EF6\u670D\u52A1";
1233
+ }
1234
+ } else {
1235
+ return "Base64\u6570\u636E\u5E93\u5B58\u50A8";
1236
+ }
1237
+ }
1238
+ function clearConfigCache() {
1239
+ console.log("\u{1F9F9} [ShowMasterpiece] \u6E05\u9664\u914D\u7F6E\u7F13\u5B58");
1240
+ cachedConfigManager = null;
1241
+ }
1242
+ async function refreshFileServiceConfig() {
1243
+ console.log("\u{1F504} [ShowMasterpiece] \u5F3A\u5236\u5237\u65B0\u6587\u4EF6\u670D\u52A1\u914D\u7F6E");
1244
+ clearConfigCache();
1245
+ const configManager = await getCachedConfigManager();
1246
+ if (typeof window === "undefined") {
1247
+ try {
1248
+ const config = configManager.getConfig();
1249
+ const ossConfig = config?.storageProviders?.["aliyun-oss"];
1250
+ if (ossConfig && ossConfig.enabled) {
1251
+ console.log("\u{1F504} [ShowMasterpiece] \u91CD\u65B0\u521D\u59CB\u5316OSS Provider\u4EE5\u5E94\u7528\u65B0\u914D\u7F6E");
1252
+ const { UniversalFileService } = await import('./UniversalFileService-J6ET6KZK.js');
1253
+ const fileService = new UniversalFileService(config);
1254
+ await fileService.initialize();
1255
+ await fileService.reinitializeStorageProviders?.();
1256
+ }
1257
+ } catch (error) {
1258
+ console.warn("\u26A0\uFE0F [ShowMasterpiece] \u91CD\u65B0\u521D\u59CB\u5316Provider\u5931\u8D25:", error);
1259
+ }
1260
+ }
1261
+ return configManager;
1262
+ }
1263
+
1264
+ // src/showmasterpiece/services/exportConfig.ts
1265
+ var BOOKING_EXPORT_FIELDS = [
1266
+ {
1267
+ key: "id",
1268
+ label: "\u9884\u8BA2ID",
1269
+ type: "number",
1270
+ enabled: true,
1271
+ required: true,
1272
+ description: "\u9884\u8BA2\u8BB0\u5F55\u7684\u552F\u4E00\u6807\u8BC6",
1273
+ alignment: "center"
1274
+ },
1275
+ {
1276
+ key: "collectionId",
1277
+ label: "\u753B\u96C6ID",
1278
+ type: "number",
1279
+ enabled: true,
1280
+ required: true,
1281
+ description: "\u753B\u96C6\u7684\u552F\u4E00\u6807\u8BC6",
1282
+ alignment: "center"
1283
+ },
1284
+ {
1285
+ key: "qqNumber",
1286
+ label: "QQ\u53F7",
1287
+ type: "string",
1288
+ enabled: true,
1289
+ required: false,
1290
+ description: "\u7528\u6237\u7684QQ\u53F7\u7801",
1291
+ alignment: "left"
1292
+ },
1293
+ {
1294
+ key: "phoneNumber",
1295
+ label: "\u624B\u673A\u53F7",
1296
+ type: "string",
1297
+ enabled: true,
1298
+ required: false,
1299
+ description: "\u7528\u6237\u7684\u624B\u673A\u53F7\u7801",
1300
+ alignment: "left"
1301
+ },
1302
+ {
1303
+ key: "collectionTitle",
1304
+ label: "\u753B\u96C6\u6807\u9898",
1305
+ type: "string",
1306
+ enabled: true,
1307
+ required: true,
1308
+ description: "\u9884\u8BA2\u7684\u753B\u96C6\u6807\u9898",
1309
+ alignment: "left"
1310
+ },
1311
+ {
1312
+ key: "collectionNumber",
1313
+ label: "\u753B\u96C6\u7F16\u53F7",
1314
+ type: "string",
1315
+ enabled: true,
1316
+ required: true,
1317
+ description: "\u753B\u96C6\u7684\u7F16\u53F7",
1318
+ alignment: "left"
1319
+ },
1320
+ {
1321
+ key: "collectionPrice",
1322
+ label: "\u753B\u96C6\u4EF7\u683C",
1323
+ type: "number",
1324
+ enabled: true,
1325
+ required: true,
1326
+ description: "\u753B\u96C6\u7684\u4EF7\u683C",
1327
+ alignment: "right",
1328
+ formatter: (value) => `\xA5${Number(value).toFixed(2)}`
1329
+ },
1330
+ {
1331
+ key: "status",
1332
+ label: "\u9884\u8BA2\u72B6\u6001",
1333
+ type: "string",
1334
+ enabled: true,
1335
+ required: true,
1336
+ description: "\u9884\u8BA2\u7684\u5F53\u524D\u72B6\u6001",
1337
+ alignment: "center",
1338
+ formatter: (value) => {
1339
+ const statusMap = {
1340
+ pending: "\u5F85\u786E\u8BA4",
1341
+ confirmed: "\u5DF2\u786E\u8BA4",
1342
+ completed: "\u5DF2\u5B8C\u6210",
1343
+ cancelled: "\u5DF2\u53D6\u6D88"
1344
+ };
1345
+ return statusMap[value] || value;
1346
+ }
1347
+ },
1348
+ {
1349
+ key: "quantity",
1350
+ label: "\u9884\u8BA2\u6570\u91CF",
1351
+ type: "number",
1352
+ enabled: true,
1353
+ required: true,
1354
+ description: "\u9884\u8BA2\u7684\u6570\u91CF",
1355
+ alignment: "center"
1356
+ },
1357
+ {
1358
+ key: "price",
1359
+ label: "\u5355\u4EF7",
1360
+ type: "number",
1361
+ enabled: true,
1362
+ required: true,
1363
+ description: "\u5355\u4E2A\u753B\u96C6\u7684\u4EF7\u683C",
1364
+ alignment: "right",
1365
+ formatter: (value) => `\xA5${Number(value).toFixed(2)}`
1366
+ },
1367
+ {
1368
+ key: "totalPrice",
1369
+ label: "\u603B\u4EF7\u683C",
1370
+ type: "number",
1371
+ enabled: true,
1372
+ required: true,
1373
+ description: "\u603B\u4EF7\u683C\uFF08\u5355\u4EF7 \xD7 \u6570\u91CF\uFF09",
1374
+ alignment: "right",
1375
+ formatter: (value) => `\xA5${Number(value).toFixed(2)}`
1376
+ },
1377
+ {
1378
+ key: "notes",
1379
+ label: "\u7528\u6237\u5907\u6CE8",
1380
+ type: "string",
1381
+ enabled: true,
1382
+ required: false,
1383
+ description: "\u7528\u6237\u63D0\u4EA4\u7684\u5907\u6CE8\u4FE1\u606F",
1384
+ alignment: "left"
1385
+ },
1386
+ {
1387
+ key: "pickupMethod",
1388
+ label: "\u9886\u53D6\u65B9\u5F0F",
1389
+ type: "string",
1390
+ enabled: true,
1391
+ required: false,
1392
+ description: "\u7528\u6237\u9009\u62E9\u7684\u9886\u53D6\u65B9\u5F0F",
1393
+ alignment: "left"
1394
+ },
1395
+ {
1396
+ key: "adminNotes",
1397
+ label: "\u7BA1\u7406\u5458\u5907\u6CE8",
1398
+ type: "string",
1399
+ enabled: true,
1400
+ required: false,
1401
+ description: "\u7BA1\u7406\u5458\u6DFB\u52A0\u7684\u5907\u6CE8\u4FE1\u606F",
1402
+ alignment: "left"
1403
+ },
1404
+ {
1405
+ key: "createdAt",
1406
+ label: "\u521B\u5EFA\u65F6\u95F4",
1407
+ type: "date",
1408
+ enabled: true,
1409
+ required: true,
1410
+ description: "\u9884\u8BA2\u521B\u5EFA\u7684\u65F6\u95F4",
1411
+ alignment: "center",
1412
+ formatter: (value) => {
1413
+ if (!value) return "";
1414
+ const date = new Date(value);
1415
+ return date.toLocaleString("zh-CN");
1416
+ }
1417
+ },
1418
+ {
1419
+ key: "updatedAt",
1420
+ label: "\u66F4\u65B0\u65F6\u95F4",
1421
+ type: "date",
1422
+ enabled: true,
1423
+ required: true,
1424
+ description: "\u9884\u8BA2\u6700\u540E\u66F4\u65B0\u7684\u65F6\u95F4",
1425
+ alignment: "center",
1426
+ formatter: (value) => {
1427
+ if (!value) return "";
1428
+ const date = new Date(value);
1429
+ return date.toLocaleString("zh-CN");
1430
+ }
1431
+ },
1432
+ {
1433
+ key: "confirmedAt",
1434
+ label: "\u786E\u8BA4\u65F6\u95F4",
1435
+ type: "date",
1436
+ enabled: true,
1437
+ required: false,
1438
+ description: "\u9884\u8BA2\u786E\u8BA4\u7684\u65F6\u95F4",
1439
+ alignment: "center",
1440
+ formatter: (value) => {
1441
+ if (!value) return "";
1442
+ const date = new Date(value);
1443
+ return date.toLocaleString("zh-CN");
1444
+ }
1445
+ },
1446
+ {
1447
+ key: "completedAt",
1448
+ label: "\u5B8C\u6210\u65F6\u95F4",
1449
+ type: "date",
1450
+ enabled: true,
1451
+ required: false,
1452
+ description: "\u9884\u8BA2\u5B8C\u6210\u7684\u65F6\u95F4",
1453
+ alignment: "center",
1454
+ formatter: (value) => {
1455
+ if (!value) return "";
1456
+ const date = new Date(value);
1457
+ return date.toLocaleString("zh-CN");
1458
+ }
1459
+ },
1460
+ {
1461
+ key: "cancelledAt",
1462
+ label: "\u53D6\u6D88\u65F6\u95F4",
1463
+ type: "date",
1464
+ enabled: true,
1465
+ required: false,
1466
+ description: "\u9884\u8BA2\u53D6\u6D88\u7684\u65F6\u95F4",
1467
+ alignment: "center",
1468
+ formatter: (value) => {
1469
+ if (!value) return "";
1470
+ const date = new Date(value);
1471
+ return date.toLocaleString("zh-CN");
1472
+ }
1473
+ },
1474
+ {
1475
+ key: "userTotalPrice",
1476
+ label: "\u7528\u6237\u603B\u4EF7",
1477
+ type: "number",
1478
+ enabled: false,
1479
+ // 默认不启用,需要勾选才启用
1480
+ required: false,
1481
+ description: "\u6839\u636EQQ\u53F7\u548C\u624B\u673A\u53F7\u7EDF\u4E00\u5339\u914D\u7684\u8BE5\u7528\u6237\u6240\u6709\u9884\u8BA2\u5546\u54C1\u7684\u603B\u4EF7\u683C",
1482
+ alignment: "right",
1483
+ formatter: (value) => `\xA5${Number(value || 0).toFixed(2)}`
1484
+ }
1485
+ ];
1486
+ var DEFAULT_BOOKING_EXPORT_CONFIG = {
1487
+ id: "default_booking_export",
1488
+ name: "\u9884\u8BA2\u4FE1\u606F\u5BFC\u51FA",
1489
+ description: "\u5BFC\u51FA\u6240\u6709\u9884\u8BA2\u4FE1\u606F\u4E3AExcel\u683C\u5F0F\uFF0C\u652F\u6301QQ\u53F7\u548C\u624B\u673A\u53F7\u5408\u5E76\u5355\u5143\u683C",
1490
+ format: "excel",
1491
+ fields: BOOKING_EXPORT_FIELDS,
1492
+ grouping: {
1493
+ enabled: true,
1494
+ fields: [
1495
+ {
1496
+ key: "phoneNumber",
1497
+ label: "\u624B\u673A\u53F7",
1498
+ mode: "merge",
1499
+ valueProcessing: "first",
1500
+ showGroupHeader: false,
1501
+ mergeCells: true
1502
+ },
1503
+ {
1504
+ key: "qqNumber",
1505
+ label: "QQ\u53F7",
1506
+ mode: "merge",
1507
+ valueProcessing: "first",
1508
+ showGroupHeader: false,
1509
+ mergeCells: true
1510
+ },
1511
+ {
1512
+ key: "userTotalPrice",
1513
+ label: "\u7528\u6237\u603B\u4EF7",
1514
+ mode: "merge",
1515
+ valueProcessing: "first",
1516
+ showGroupHeader: false,
1517
+ mergeCells: true
1518
+ }
1519
+ ],
1520
+ preserveOrder: true,
1521
+ nullValueHandling: "separate"
1522
+ },
1523
+ fileNameTemplate: "\u9884\u8BA2\u4FE1\u606F_{date}",
1524
+ includeHeader: true,
1525
+ delimiter: ",",
1526
+ encoding: "utf-8",
1527
+ addBOM: true,
1528
+ maxRows: void 0,
1529
+ createdAt: /* @__PURE__ */ new Date(),
1530
+ updatedAt: /* @__PURE__ */ new Date(),
1531
+ moduleId: "showmasterpiece",
1532
+ businessId: "bookings"
1533
+ };
737
1534
 
738
1535
  // src/showmasterpiece/ui/web/components/CollectionOrderManagerV2.tsx
739
1536
  function CollectionOrderManagerV2({
@@ -745,7 +1542,7 @@ function CollectionOrderManagerV2({
745
1542
  const operations = {
746
1543
  loadItems: async () => {
747
1544
  console.log("\u{1F4DA} [\u753B\u96C6\u6392\u5E8FV2] \u5F00\u59CB\u52A0\u8F7D\u753B\u96C6\u6570\u636E...");
748
- const data = await chunkU7AQC2Z7_js.getAllCollections();
1545
+ const data = await chunkEKIOJEJK_js.getAllCollections();
749
1546
  console.log("\u{1F4DA} [\u753B\u96C6\u6392\u5E8FV2] \u753B\u96C6\u6570\u636E\u52A0\u8F7D\u5B8C\u6210:", {
750
1547
  collectionsCount: data.length,
751
1548
  collections: data.map((c) => ({ id: c.id, title: c.title }))
@@ -757,7 +1554,7 @@ function CollectionOrderManagerV2({
757
1554
  if (propMoveCollectionUp) {
758
1555
  await propMoveCollectionUp(id);
759
1556
  } else {
760
- await chunkU7AQC2Z7_js.moveCollectionUp(id);
1557
+ await chunkEKIOJEJK_js.moveCollectionUp(id);
761
1558
  }
762
1559
  },
763
1560
  moveItemDown: async (id) => {
@@ -765,7 +1562,7 @@ function CollectionOrderManagerV2({
765
1562
  if (propMoveCollectionDown) {
766
1563
  await propMoveCollectionDown(id);
767
1564
  } else {
768
- await chunkU7AQC2Z7_js.moveCollectionDown(id);
1565
+ await chunkEKIOJEJK_js.moveCollectionDown(id);
769
1566
  }
770
1567
  },
771
1568
  updateItemOrder: async (orders) => {
@@ -778,7 +1575,7 @@ function CollectionOrderManagerV2({
778
1575
  if (propUpdateCollectionOrder) {
779
1576
  await propUpdateCollectionOrder(collectionOrders);
780
1577
  } else {
781
- await chunkU7AQC2Z7_js.updateCollectionOrder(collectionOrders);
1578
+ await chunkEKIOJEJK_js.updateCollectionOrder(collectionOrders);
782
1579
  }
783
1580
  }
784
1581
  };
@@ -822,7 +1619,7 @@ function CollectionOrderManagerV2({
822
1619
  } }, collection.category)));
823
1620
  };
824
1621
  return /* @__PURE__ */ React29__default.default.createElement(
825
- chunk4XXIBWCO_js.GenericOrderManager,
1622
+ chunkZRWED7Q6_js.GenericOrderManager,
826
1623
  {
827
1624
  operations,
828
1625
  renderItem: renderCollection,
@@ -844,7 +1641,7 @@ function ArtworkOrderManagerV2({
844
1641
  const operations = {
845
1642
  loadItems: async () => {
846
1643
  console.log("\u{1F4CB} [\u4F5C\u54C1\u6392\u5E8FV2] \u5F00\u59CB\u52A0\u8F7D\u4F5C\u54C1\u6570\u636E...", { collectionId });
847
- const data = await chunkU7AQC2Z7_js.getArtworksByCollection(collectionId);
1644
+ const data = await chunkEKIOJEJK_js.getArtworksByCollection(collectionId);
848
1645
  console.log("\u{1F4CB} [\u4F5C\u54C1\u6392\u5E8FV2] \u52A0\u8F7D\u4F5C\u54C1\u6570\u636E\u5B8C\u6210:", {
849
1646
  collectionId,
850
1647
  artworksCount: data.length,
@@ -857,7 +1654,7 @@ function ArtworkOrderManagerV2({
857
1654
  if (propMoveArtworkUp) {
858
1655
  await propMoveArtworkUp(collectionId, id);
859
1656
  } else {
860
- await chunkU7AQC2Z7_js.moveArtworkUp(collectionId, id);
1657
+ await chunkEKIOJEJK_js.moveArtworkUp(collectionId, id);
861
1658
  }
862
1659
  },
863
1660
  moveItemDown: async (id) => {
@@ -865,7 +1662,7 @@ function ArtworkOrderManagerV2({
865
1662
  if (propMoveArtworkDown) {
866
1663
  await propMoveArtworkDown(collectionId, id);
867
1664
  } else {
868
- await chunkU7AQC2Z7_js.moveArtworkDown(collectionId, id);
1665
+ await chunkEKIOJEJK_js.moveArtworkDown(collectionId, id);
869
1666
  }
870
1667
  },
871
1668
  updateItemOrder: async (orders) => {
@@ -885,7 +1682,7 @@ function ArtworkOrderManagerV2({
885
1682
  if (propUpdateArtworkOrder) {
886
1683
  await propUpdateArtworkOrder(collectionId, artworkOrders);
887
1684
  } else {
888
- await chunkU7AQC2Z7_js.updateArtworkOrder(collectionId, artworkOrders);
1685
+ await chunkEKIOJEJK_js.updateArtworkOrder(collectionId, artworkOrders);
889
1686
  }
890
1687
  }
891
1688
  };
@@ -970,7 +1767,7 @@ function ArtworkOrderManagerV2({
970
1767
  } }, artwork.theme)));
971
1768
  };
972
1769
  return /* @__PURE__ */ React29__default.default.createElement(
973
- chunk4XXIBWCO_js.GenericOrderManager,
1770
+ chunkZRWED7Q6_js.GenericOrderManager,
974
1771
  {
975
1772
  operations,
976
1773
  renderItem: renderArtwork,
@@ -1108,18 +1905,18 @@ var UniversalImageUpload = ({
1108
1905
  };
1109
1906
 
1110
1907
  // src/showmasterpiece/ui/web/components/CartPage.tsx
1111
- chunkU7AQC2Z7_js.init_hooks();
1908
+ chunkEKIOJEJK_js.init_hooks();
1112
1909
  var CartPage = ({ userId, onClose }) => {
1113
1910
  const {
1114
1911
  cart,
1115
1912
  loading,
1116
1913
  error,
1117
- updateCartItem,
1118
- removeFromCart,
1119
- batchBooking,
1914
+ updateCartItem: updateCartItem2,
1915
+ removeFromCart: removeFromCart2,
1916
+ batchBooking: batchBooking2,
1120
1917
  refreshCart,
1121
- clearCart
1122
- } = chunkU7AQC2Z7_js.useCartContext();
1918
+ clearCart: clearCart2
1919
+ } = chunkEKIOJEJK_js.useCartContext();
1123
1920
  const {
1124
1921
  configs: popupConfigs,
1125
1922
  hasPopup,
@@ -1129,7 +1926,7 @@ var CartPage = ({ userId, onClose }) => {
1129
1926
  cancelPopup,
1130
1927
  temporaryClosePopup,
1131
1928
  triggerCheck
1132
- } = chunkU7AQC2Z7_js.useDeadlinePopup("showmasterpiece", "cart_checkout");
1929
+ } = chunkEKIOJEJK_js.useDeadlinePopup("showmasterpiece", "cart_checkout");
1133
1930
  const [isCheckingOut, setIsCheckingOut] = React29.useState(false);
1134
1931
  const [checkoutSuccess, setCheckoutSuccess] = React29.useState(false);
1135
1932
  const [formData, setFormData] = React29.useState({
@@ -1202,7 +1999,7 @@ var CartPage = ({ userId, onClose }) => {
1202
1999
  const performCheckout = async () => {
1203
2000
  setIsCheckingOut(true);
1204
2001
  try {
1205
- const result = await batchBooking({
2002
+ const result = await batchBooking2({
1206
2003
  qqNumber: formData.qqNumber,
1207
2004
  phoneNumber: formData.phoneNumber,
1208
2005
  items: cart.items,
@@ -1276,7 +2073,7 @@ var CartPage = ({ userId, onClose }) => {
1276
2073
  ) : /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-16 h-16 sm:w-16 sm:h-16 bg-gray-100 rounded-md flex-shrink-0 flex items-center justify-center text-gray-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "font-semibold text-gray-900 text-sm sm:text-base line-clamp-2" }, item.collection.title), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u7F16\u53F7\uFF1A", item.collection.number), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u4EF7\u683C\uFF1A", item.collection.price ? `\xA5${item.collection.price}` : "\u4EF7\u683C\u5F85\u5B9A")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-2 sm:gap-4 w-full sm:w-auto" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29__default.default.createElement(
1277
2074
  "button",
1278
2075
  {
1279
- onClick: () => updateCartItem({ collectionId: item.collectionId, quantity: item.quantity - 1 }),
2076
+ onClick: () => updateCartItem2({ collectionId: item.collectionId, quantity: item.quantity - 1 }),
1280
2077
  disabled: loading,
1281
2078
  className: "w-10 h-10 sm:w-8 sm:h-8 rounded-full border border-gray-300 flex items-center justify-center hover:bg-gray-50 disabled:opacity-50"
1282
2079
  },
@@ -1284,7 +2081,7 @@ var CartPage = ({ userId, onClose }) => {
1284
2081
  ), /* @__PURE__ */ React29__default.default.createElement("span", { className: "w-16 sm:w-12 text-center font-medium text-sm sm:text-base" }, item.quantity), /* @__PURE__ */ React29__default.default.createElement(
1285
2082
  "button",
1286
2083
  {
1287
- onClick: () => updateCartItem({ collectionId: item.collectionId, quantity: item.quantity + 1 }),
2084
+ onClick: () => updateCartItem2({ collectionId: item.collectionId, quantity: item.quantity + 1 }),
1288
2085
  disabled: loading,
1289
2086
  className: "w-10 h-10 sm:w-8 sm:h-8 rounded-full border border-gray-300 flex items-center justify-center hover:bg-gray-50 disabled:opacity-50"
1290
2087
  },
@@ -1292,7 +2089,7 @@ var CartPage = ({ userId, onClose }) => {
1292
2089
  )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "text-center sm:text-right" }, /* @__PURE__ */ React29__default.default.createElement("p", { className: "font-semibold text-gray-900 text-sm sm:text-base" }, "\xA5", (item.collection.price || 0) * item.quantity))), /* @__PURE__ */ React29__default.default.createElement(
1293
2090
  "button",
1294
2091
  {
1295
- onClick: () => removeFromCart({ collectionId: item.collectionId }),
2092
+ onClick: () => removeFromCart2({ collectionId: item.collectionId }),
1296
2093
  disabled: loading,
1297
2094
  className: "text-red-500 hover:text-red-700 disabled:opacity-50 p-2 sm:p-1"
1298
2095
  },
@@ -1362,7 +2159,7 @@ var CartPage = ({ userId, onClose }) => {
1362
2159
  "button",
1363
2160
  {
1364
2161
  type: "button",
1365
- onClick: clearCart,
2162
+ onClick: clearCart2,
1366
2163
  disabled: loading || isCheckingOut,
1367
2164
  className: "flex-1 bg-gray-200 text-gray-800 py-3 sm:py-2 px-4 rounded-lg hover:bg-gray-300 transition-colors disabled:opacity-50 text-base"
1368
2165
  },
@@ -1474,14 +2271,14 @@ var CartModal = ({
1474
2271
  };
1475
2272
 
1476
2273
  // src/showmasterpiece/ui/web/components/CartButton.tsx
1477
- chunkU7AQC2Z7_js.init_hooks();
2274
+ chunkEKIOJEJK_js.init_hooks();
1478
2275
  var CartButton = ({
1479
2276
  userId,
1480
2277
  onClick,
1481
2278
  className = "",
1482
2279
  showBadge = true
1483
2280
  }) => {
1484
- const { cart } = chunkU7AQC2Z7_js.useCartContext();
2281
+ const { cart } = chunkEKIOJEJK_js.useCartContext();
1485
2282
  return /* @__PURE__ */ React29__default.default.createElement(
1486
2283
  "button",
1487
2284
  {
@@ -2009,22 +2806,22 @@ var BookingAdminPanel = ({
2009
2806
  exportService,
2010
2807
  moduleId: "showmasterpiece",
2011
2808
  businessId: "bookings",
2012
- availableFields: chunkU7AQC2Z7_js.BOOKING_EXPORT_FIELDS.map((field) => ({
2809
+ availableFields: BOOKING_EXPORT_FIELDS.map((field) => ({
2013
2810
  ...field,
2014
2811
  enabled: field.key === "userTotalPrice" ? enableUserPriceCalculation : field.enabled
2015
2812
  })),
2016
2813
  dataSource,
2017
2814
  defaultConfig: (() => {
2018
2815
  const config = {
2019
- ...chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG,
2020
- fields: chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG.fields.map((field) => ({
2816
+ ...DEFAULT_BOOKING_EXPORT_CONFIG,
2817
+ fields: DEFAULT_BOOKING_EXPORT_CONFIG.fields.map((field) => ({
2021
2818
  ...field,
2022
2819
  enabled: field.key === "userTotalPrice" ? enableUserPriceCalculation : field.enabled
2023
2820
  })),
2024
2821
  grouping: enableUserPriceCalculation ? {
2025
- ...chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG.grouping,
2822
+ ...DEFAULT_BOOKING_EXPORT_CONFIG.grouping,
2026
2823
  fields: [
2027
- ...chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG.grouping.fields,
2824
+ ...DEFAULT_BOOKING_EXPORT_CONFIG.grouping.fields,
2028
2825
  {
2029
2826
  key: "userTotalPrice",
2030
2827
  label: "\u7528\u6237\u603B\u4EF7",
@@ -2034,7 +2831,7 @@ var BookingAdminPanel = ({
2034
2831
  mergeCells: true
2035
2832
  }
2036
2833
  ]
2037
- } : chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG.grouping
2834
+ } : DEFAULT_BOOKING_EXPORT_CONFIG.grouping
2038
2835
  };
2039
2836
  console.log("\u{1F50D} [BookingAdminPanel] \u4F20\u9012\u7684\u9ED8\u8BA4\u914D\u7F6E:", {
2040
2837
  id: config.id,
@@ -2062,7 +2859,7 @@ var BookingAdminPanel = ({
2062
2859
  {
2063
2860
  onClick: async () => {
2064
2861
  try {
2065
- await handleCustomExport(chunkU7AQC2Z7_js.DEFAULT_BOOKING_EXPORT_CONFIG);
2862
+ await handleCustomExport(DEFAULT_BOOKING_EXPORT_CONFIG);
2066
2863
  console.log("\u2705 [BookingAdminPanel] \u81EA\u5B9A\u4E49\u5BFC\u51FA\u6210\u529F");
2067
2864
  } catch (error2) {
2068
2865
  console.error("\u274C [BookingAdminPanel] \u81EA\u5B9A\u4E49\u5BFC\u51FA\u5931\u8D25:", error2);
@@ -2249,7 +3046,7 @@ var BookingModal = ({
2249
3046
  height = "90vh"
2250
3047
  }) => {
2251
3048
  return /* @__PURE__ */ React29__default.default.createElement(
2252
- chunk4XXIBWCO_js.Modal,
3049
+ chunkZRWED7Q6_js.Modal,
2253
3050
  {
2254
3051
  isOpen,
2255
3052
  onClose,
@@ -2261,7 +3058,7 @@ var BookingModal = ({
2261
3058
  /* @__PURE__ */ React29__default.default.createElement(BookingPage, { onClose })
2262
3059
  );
2263
3060
  };
2264
- chunkU7AQC2Z7_js.init_hooks();
3061
+ chunkEKIOJEJK_js.init_hooks();
2265
3062
  var BookingPage = ({ onClose }) => {
2266
3063
  const {
2267
3064
  collections,
@@ -2272,14 +3069,14 @@ var BookingPage = ({ onClose }) => {
2272
3069
  submitBooking,
2273
3070
  resetSubmission,
2274
3071
  clearError
2275
- } = chunkU7AQC2Z7_js.useBooking();
3072
+ } = chunkEKIOJEJK_js.useBooking();
2276
3073
  const {
2277
3074
  formData,
2278
3075
  errors,
2279
3076
  updateField,
2280
3077
  validateForm,
2281
3078
  resetForm
2282
- } = chunkU7AQC2Z7_js.useBookingForm();
3079
+ } = chunkEKIOJEJK_js.useBookingForm();
2283
3080
  const [step, setStep] = React29.useState("select");
2284
3081
  const handleCollectionSelect = (collectionId) => {
2285
3082
  updateField("collectionId", collectionId);
@@ -2415,7 +3212,7 @@ var CartHistoryPage = ({
2415
3212
  setLoading(true);
2416
3213
  setError(void 0);
2417
3214
  console.log("\u{1F504} \u5F00\u59CB\u67E5\u8BE2\u7528\u6237\u9884\u8BA2\u4FE1\u606F:", { qqNumber, phoneNumber });
2418
- const response = await chunkU7AQC2Z7_js.BookingService.getBookings({
3215
+ const response = await chunkEKIOJEJK_js.BookingService.getBookings({
2419
3216
  qqNumber,
2420
3217
  phoneNumber
2421
3218
  });
@@ -2436,7 +3233,7 @@ var CartHistoryPage = ({
2436
3233
  const handleDeleteBooking = async (bookingId) => {
2437
3234
  if (confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u6761\u9884\u8BA2\u8BB0\u5F55\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002")) {
2438
3235
  try {
2439
- await chunkU7AQC2Z7_js.BookingService.deleteBooking(bookingId);
3236
+ await chunkEKIOJEJK_js.BookingService.deleteBooking(bookingId);
2440
3237
  console.log("\u9884\u8BA2\u8BB0\u5F55\u5220\u9664\u6210\u529F");
2441
3238
  await loadBookings();
2442
3239
  } catch (error2) {
@@ -2608,7 +3405,7 @@ var DeadlinePopup = ({
2608
3405
  const theme = contentConfig.theme || "warning";
2609
3406
  const styles = getThemeStyles(theme);
2610
3407
  return /* @__PURE__ */ React29__default.default.createElement(
2611
- chunk4XXIBWCO_js.Modal,
3408
+ chunkZRWED7Q6_js.Modal,
2612
3409
  {
2613
3410
  isOpen,
2614
3411
  onClose,
@@ -2961,7 +3758,7 @@ var PopupConfigManagement = () => {
2961
3758
  },
2962
3759
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Trash2, { size: 16 })
2963
3760
  ))))))))), showCreateModal && /* @__PURE__ */ React29__default.default.createElement(
2964
- chunk4XXIBWCO_js.Modal,
3761
+ chunkZRWED7Q6_js.Modal,
2965
3762
  {
2966
3763
  isOpen: showCreateModal,
2967
3764
  onClose: () => {
@@ -3324,7 +4121,7 @@ var SystemConfigManager = () => {
3324
4121
  ));
3325
4122
  if (item.key.includes("ALIYUN_OSS")) {
3326
4123
  console.log("\u{1F9F9} [SystemConfigManager] OSS\u914D\u7F6E\u5DF2\u66F4\u65B0\uFF0C\u6E05\u9664\u6587\u4EF6\u670D\u52A1\u7F13\u5B58");
3327
- chunkU7AQC2Z7_js.clearConfigCache();
4124
+ clearConfigCache();
3328
4125
  }
3329
4126
  setEditingItem(null);
3330
4127
  setEditValues({});
@@ -3830,8 +4627,8 @@ var DeleteConfirmDialog = ({
3830
4627
  };
3831
4628
 
3832
4629
  // src/showmasterpiece/ui/web/pages/ShowMasterPiecesPage.tsx
3833
- chunkU7AQC2Z7_js.init_hooks();
3834
- chunkU7AQC2Z7_js.init_CartContext();
4630
+ chunkEKIOJEJK_js.init_hooks();
4631
+ chunkEKIOJEJK_js.init_CartContext();
3835
4632
  var AuthContext = React29.createContext(void 0);
3836
4633
  function AuthProvider({ children }) {
3837
4634
  const [user, setUser] = React29.useState(null);
@@ -4896,7 +5693,7 @@ function ShowMasterPiecesContent() {
4896
5693
  // 跳转到指定页面的方法
4897
5694
  backToGallery
4898
5695
  // 返回画集列表的方法
4899
- } = chunkU7AQC2Z7_js.useMasterpieces();
5696
+ } = chunkEKIOJEJK_js.useMasterpieces();
4900
5697
  const { isAuthenticated, user } = useAuth();
4901
5698
  const [config, setConfig] = React29.useState(null);
4902
5699
  const [cartModalOpen, setCartModalOpen] = React29.useState(false);
@@ -4912,11 +5709,11 @@ function ShowMasterPiecesContent() {
4912
5709
  closePopup,
4913
5710
  confirmPopup,
4914
5711
  cancelPopup
4915
- } = chunkU7AQC2Z7_js.useDeadlinePopup("showmasterpiece", "homepage_visit");
5712
+ } = chunkEKIOJEJK_js.useDeadlinePopup("showmasterpiece", "homepage_visit");
4916
5713
  React29.useEffect(() => {
4917
5714
  const loadConfig = async () => {
4918
5715
  try {
4919
- const configData = await chunkU7AQC2Z7_js.getConfig();
5716
+ const configData = await chunkEKIOJEJK_js.getConfig();
4920
5717
  setConfig(configData);
4921
5718
  } catch (err) {
4922
5719
  console.error("Failed to load config:", err);
@@ -4977,7 +5774,7 @@ function ShowMasterPiecesContent() {
4977
5774
  };
4978
5775
  const renderLoading = () => /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-10 h-10 border-4 border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600" }, "\u52A0\u8F7D\u4E2D...")));
4979
5776
  const renderError = () => /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React29__default.default.createElement(
4980
- chunk4XXIBWCO_js.Button,
5777
+ chunkZRWED7Q6_js.Button,
4981
5778
  {
4982
5779
  onClick: () => window.location.reload(),
4983
5780
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
@@ -4985,7 +5782,7 @@ function ShowMasterPiecesContent() {
4985
5782
  "\u91CD\u8BD5"
4986
5783
  )));
4987
5784
  const renderEmptyState = () => /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "text-moonstone text-6xl mb-4" }, "\u{1F3A8}"), /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-semibold mb-2 text-rich-black" }, "\u6682\u65E0\u53EF\u7528\u753B\u96C6"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-prussian-blue-600 mb-6" }, "\u5F53\u524D\u6CA1\u6709\u53EF\u9884\u8BA2\u7684\u753B\u96C6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5"), hasAdminAccess && /* @__PURE__ */ React29__default.default.createElement(
4988
- chunk4XXIBWCO_js.Button,
5785
+ chunkZRWED7Q6_js.Button,
4989
5786
  {
4990
5787
  asChild: true,
4991
5788
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
@@ -5006,8 +5803,8 @@ function ShowMasterPiecesContent() {
5006
5803
  category: tab.category,
5007
5804
  displayName: tab.description || tab.name || chunkDENROXAE_js.getCategoryDisplayName(tab.category)
5008
5805
  }));
5009
- return /* @__PURE__ */ React29__default.default.createElement(chunkU7AQC2Z7_js.CartProvider, { userId }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "bg-white/95 backdrop-blur supports-[backdrop-filter]:bg-white/80 border-b border-prussian-blue-200/30 sticky top-0 z-50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto px-3 sm:px-4 py-3 sm:py-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between gap-2 sm:gap-4 min-h-[44px]" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-4 sm:gap-8 min-w-0 flex-1" }, selectedCollection && /* @__PURE__ */ React29__default.default.createElement(
5010
- chunk4XXIBWCO_js.Button,
5806
+ return /* @__PURE__ */ React29__default.default.createElement(chunkEKIOJEJK_js.CartProvider, { userId }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "bg-white/95 backdrop-blur supports-[backdrop-filter]:bg-white/80 border-b border-prussian-blue-200/30 sticky top-0 z-50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto px-3 sm:px-4 py-3 sm:py-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between gap-2 sm:gap-4 min-h-[44px]" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-4 sm:gap-8 min-w-0 flex-1" }, selectedCollection && /* @__PURE__ */ React29__default.default.createElement(
5807
+ chunkZRWED7Q6_js.Button,
5011
5808
  {
5012
5809
  variant: "ghost",
5013
5810
  size: "sm",
@@ -5060,15 +5857,15 @@ function ShowMasterPiecesContent() {
5060
5857
  canGoPrev
5061
5858
  }
5062
5859
  ))
5063
- ) : /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto p-3 sm:p-4 lg:p-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardTitle, null, "\u5546\u54C1\u5206\u7C7B"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardDescription, null, "\u9009\u62E9\u60A8\u611F\u5174\u8DA3\u7684\u5546\u54C1\u7C7B\u578B")), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Tabs, { value: selectedCategory, onValueChange: (value) => setSelectedCategory(value) }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsList, { className: "grid grid-cols-3 lg:grid-cols-9 h-auto p-1 bg-moonstone-900/10" }, categoryList.map(({ category, displayName }) => /* @__PURE__ */ React29__default.default.createElement(
5064
- chunk4XXIBWCO_js.TabsTrigger,
5860
+ ) : /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto p-3 sm:p-4 lg:p-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardTitle, null, "\u5546\u54C1\u5206\u7C7B"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardDescription, null, "\u9009\u62E9\u60A8\u611F\u5174\u8DA3\u7684\u5546\u54C1\u7C7B\u578B")), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Tabs, { value: selectedCategory, onValueChange: (value) => setSelectedCategory(value) }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsList, { className: "grid grid-cols-3 lg:grid-cols-9 h-auto p-1 bg-moonstone-900/10" }, categoryList.map(({ category, displayName }) => /* @__PURE__ */ React29__default.default.createElement(
5861
+ chunkZRWED7Q6_js.TabsTrigger,
5065
5862
  {
5066
5863
  key: category,
5067
5864
  value: category,
5068
5865
  className: "flex flex-col h-auto py-3 px-2 data-[state=active]:bg-gradient-to-r data-[state=active]:from-moonstone data-[state=active]:to-cerulean data-[state=active]:text-white data-[state=active]:shadow-lg transition-all duration-300"
5069
5866
  },
5070
5867
  /* @__PURE__ */ React29__default.default.createElement("span", { className: "font-semibold text-xs" }, displayName),
5071
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "outline", className: "mt-1 text-xs border-moonstone/30 text-cerulean bg-moonstone-900/5" }, collections.filter((c) => c.category === category).length)
5868
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "outline", className: "mt-1 text-xs border-moonstone/30 text-cerulean bg-moonstone-900/5" }, collections.filter((c) => c.category === category).length)
5072
5869
  )))))), /* @__PURE__ */ React29__default.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 sm:gap-6" }, filteredCollections.map((collection) => /* @__PURE__ */ React29__default.default.createElement(
5073
5870
  CollectionCard,
5074
5871
  {
@@ -5100,7 +5897,7 @@ function ShowMasterPieces(props = {}) {
5100
5897
  }
5101
5898
 
5102
5899
  // src/showmasterpiece/ui/web/pages/config/page.tsx
5103
- chunkU7AQC2Z7_js.init_hooks();
5900
+ chunkEKIOJEJK_js.init_hooks();
5104
5901
  function ConfigPageContent() {
5105
5902
  const {
5106
5903
  config,
@@ -5109,14 +5906,14 @@ function ConfigPageContent() {
5109
5906
  tags,
5110
5907
  loading,
5111
5908
  error,
5112
- updateConfig,
5113
- resetConfig,
5114
- createCollection,
5115
- updateCollection,
5116
- deleteCollection,
5117
- addArtworkToCollection,
5118
- updateArtwork,
5119
- deleteArtwork,
5909
+ updateConfig: updateConfig2,
5910
+ resetConfig: resetConfig2,
5911
+ createCollection: createCollection2,
5912
+ updateCollection: updateCollection2,
5913
+ deleteCollection: deleteCollection2,
5914
+ addArtworkToCollection: addArtworkToCollection2,
5915
+ updateArtwork: updateArtwork2,
5916
+ deleteArtwork: deleteArtwork2,
5120
5917
  moveArtworkUp: moveArtworkUp2,
5121
5918
  moveArtworkDown: moveArtworkDown2,
5122
5919
  updateArtworkOrder: updateArtworkOrder2,
@@ -5124,7 +5921,7 @@ function ConfigPageContent() {
5124
5921
  moveCollectionDown: moveCollectionDown2,
5125
5922
  updateCollectionOrder: updateCollectionOrder2,
5126
5923
  refreshData
5127
- } = chunkU7AQC2Z7_js.useMasterpiecesConfig();
5924
+ } = chunkEKIOJEJK_js.useMasterpiecesConfig();
5128
5925
  const [activeTab, setActiveTab] = React29.useState("general");
5129
5926
  const [selectedCollection, setSelectedCollection] = React29.useState(null);
5130
5927
  const [showCollectionForm, setShowCollectionForm] = React29.useState(false);
@@ -5145,17 +5942,17 @@ function ConfigPageContent() {
5145
5942
  refreshData: refreshBookingData,
5146
5943
  searchBookings,
5147
5944
  clearSearch,
5148
- updateBookingStatus,
5149
- deleteBooking,
5150
- exportBookings
5151
- } = chunkU7AQC2Z7_js.useBookingAdmin();
5945
+ updateBookingStatus: updateBookingStatus3,
5946
+ deleteBooking: deleteBooking3,
5947
+ exportBookings: exportBookings2
5948
+ } = chunkEKIOJEJK_js.useBookingAdmin();
5152
5949
  const [useUniversalService, setUseUniversalService] = React29.useState(false);
5153
5950
  const [storageModeDisplay, setStorageModeDisplay] = React29.useState("\u68C0\u67E5\u4E2D...");
5154
5951
  React29.useEffect(() => {
5155
5952
  const loadFileServiceConfig = async () => {
5156
5953
  try {
5157
- const shouldUse = await chunkU7AQC2Z7_js.shouldUseUniversalFileService();
5158
- const displayName = await chunkU7AQC2Z7_js.getStorageModeDisplayName();
5954
+ const shouldUse = await shouldUseUniversalFileService();
5955
+ const displayName = await getStorageModeDisplayName();
5159
5956
  setUseUniversalService(shouldUse);
5160
5957
  setStorageModeDisplay(displayName);
5161
5958
  } catch (error2) {
@@ -5293,7 +6090,7 @@ function ConfigPageContent() {
5293
6090
  }
5294
6091
  try {
5295
6092
  if (!existingCategory) {
5296
- await chunkU7AQC2Z7_js.createCategory(trimmed, description);
6093
+ await chunkEKIOJEJK_js.createCategory(trimmed, description);
5297
6094
  setCategoryOptions((prev) => [...prev, { name: trimmed, description }]);
5298
6095
  }
5299
6096
  setConfigForm((prev) => {
@@ -5363,7 +6160,7 @@ function ConfigPageContent() {
5363
6160
  }, [activeTab, showArtworkOrder, showArtworkForm, editingArtwork]);
5364
6161
  const handleSaveConfig = async () => {
5365
6162
  try {
5366
- await updateConfig(configForm);
6163
+ await updateConfig2(configForm);
5367
6164
  alert("\u914D\u7F6E\u4FDD\u5B58\u6210\u529F\uFF01");
5368
6165
  } catch (err) {
5369
6166
  alert("\u914D\u7F6E\u4FDD\u5B58\u5931\u8D25\uFF01");
@@ -5372,7 +6169,7 @@ function ConfigPageContent() {
5372
6169
  const handleResetConfig = async () => {
5373
6170
  if (confirm("\u786E\u5B9A\u8981\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u914D\u7F6E\u5417\uFF1F")) {
5374
6171
  try {
5375
- await resetConfig();
6172
+ await resetConfig2();
5376
6173
  alert("\u914D\u7F6E\u91CD\u7F6E\u6210\u529F\uFF01");
5377
6174
  } catch (err) {
5378
6175
  alert("\u914D\u7F6E\u91CD\u7F6E\u5931\u8D25\uFF01");
@@ -5382,10 +6179,10 @@ function ConfigPageContent() {
5382
6179
  const handleSaveCollection = async () => {
5383
6180
  try {
5384
6181
  if (editingCollection) {
5385
- await updateCollection(editingCollection, collectionForm);
6182
+ await updateCollection2(editingCollection, collectionForm);
5386
6183
  setEditingCollection(null);
5387
6184
  } else {
5388
- await createCollection(collectionForm);
6185
+ await createCollection2(collectionForm);
5389
6186
  }
5390
6187
  setShowCollectionForm(false);
5391
6188
  setCollectionForm({
@@ -5420,14 +6217,14 @@ function ConfigPageContent() {
5420
6217
  collectionId: editingArtwork.collectionId,
5421
6218
  artworkId: editingArtwork.artworkId
5422
6219
  });
5423
- await updateArtwork(editingArtwork.collectionId, editingArtwork.artworkId, artworkForm);
6220
+ await updateArtwork2(editingArtwork.collectionId, editingArtwork.artworkId, artworkForm);
5424
6221
  setEditingArtwork(null);
5425
6222
  console.log("\u2705 [\u914D\u7F6E\u9875\u9762] \u5546\u54C1\u8BE6\u60C5\u56FE\u66F4\u65B0\u5B8C\u6210");
5426
6223
  } else {
5427
6224
  console.log("\u2795 [\u914D\u7F6E\u9875\u9762] \u6267\u884C\u5546\u54C1\u8BE6\u60C5\u56FE\u521B\u5EFA...", {
5428
6225
  collectionId: selectedCollection
5429
6226
  });
5430
- await addArtworkToCollection(selectedCollection, artworkForm);
6227
+ await addArtworkToCollection2(selectedCollection, artworkForm);
5431
6228
  console.log("\u2705 [\u914D\u7F6E\u9875\u9762] \u5546\u54C1\u8BE6\u60C5\u56FE\u521B\u5EFA\u5B8C\u6210");
5432
6229
  }
5433
6230
  console.log("\u{1F9F9} [\u914D\u7F6E\u9875\u9762] \u6E05\u7406\u8868\u5355\u72B6\u6001...");
@@ -5506,10 +6303,10 @@ function ConfigPageContent() {
5506
6303
  return /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-gradient-to-br from-slate-50 to-slate-200" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "w-10 h-10 border-4 border-slate-200 border-t-blue-500 rounded-full animate-spin" }), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u52A0\u8F7D\u4E2D...")));
5507
6304
  }
5508
6305
  if (error) {
5509
- return /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { onClick: refreshData }, "\u91CD\u8BD5")));
6306
+ return /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { onClick: refreshData }, "\u91CD\u8BD5")));
5510
6307
  }
5511
6308
  return /* @__PURE__ */ React29__default.default.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto px-6 py-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-8" }, /* @__PURE__ */ React29__default.default.createElement(
5512
- chunk4XXIBWCO_js.Button,
6309
+ chunkZRWED7Q6_js.Button,
5513
6310
  {
5514
6311
  variant: "ghost",
5515
6312
  size: "sm",
@@ -5518,8 +6315,8 @@ function ConfigPageContent() {
5518
6315
  },
5519
6316
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ArrowLeft, { size: 20 }),
5520
6317
  "\u8FD4\u56DE"
5521
- ), /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h1", { className: "text-2xl font-bold" }, "\u5546\u54C1\u5C55\u89C8\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-sm text-muted-foreground" }, "\u7BA1\u7406\u5C55\u89C8\u7684\u6240\u6709\u914D\u7F6E\u3001\u5546\u54C1\u548C\u5546\u54C1\u8BE6\u60C5\u56FE"))))), /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto p-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsList, { className: "grid w-full grid-cols-8" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "general", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Settings, { size: 16 }), "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "homeTabs", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Settings, { size: 16 }), "\u9996\u9875Tab\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "collections", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Database, { size: 16 }), "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "artworks", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Image, { size: 16 }), "\u5546\u54C1\u8BE6\u60C5\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "bookings", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Calendar, { size: 16 }), "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "popup", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Bell, { size: 16 }), "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsTrigger, { value: "system", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Cog, { size: 16 }), "\u7CFB\u7EDF\u914D\u7F6E")), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "general", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardTitle, null, "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardDescription, null, "\u914D\u7F6E\u7F51\u7AD9\u7684\u57FA\u672C\u4FE1\u606F\u548C\u663E\u793A\u9009\u9879")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
5522
- chunk4XXIBWCO_js.Button,
6318
+ ), /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h1", { className: "text-2xl font-bold" }, "\u5546\u54C1\u5C55\u89C8\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-sm text-muted-foreground" }, "\u7BA1\u7406\u5C55\u89C8\u7684\u6240\u6709\u914D\u7F6E\u3001\u5546\u54C1\u548C\u5546\u54C1\u8BE6\u60C5\u56FE"))))), /* @__PURE__ */ React29__default.default.createElement("div", { className: "max-w-7xl mx-auto p-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsList, { className: "grid w-full grid-cols-8" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "general", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Settings, { size: 16 }), "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "homeTabs", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Settings, { size: 16 }), "\u9996\u9875Tab\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "collections", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Database, { size: 16 }), "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "artworks", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Image, { size: 16 }), "\u5546\u54C1\u8BE6\u60C5\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "bookings", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Calendar, { size: 16 }), "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "popup", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Bell, { size: 16 }), "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsTrigger, { value: "system", className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Cog, { size: 16 }), "\u7CFB\u7EDF\u914D\u7F6E")), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "general", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardTitle, null, "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardDescription, null, "\u914D\u7F6E\u7F51\u7AD9\u7684\u57FA\u672C\u4FE1\u606F\u548C\u663E\u793A\u9009\u9879")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
6319
+ chunkZRWED7Q6_js.Button,
5523
6320
  {
5524
6321
  variant: "outline",
5525
6322
  onClick: handleResetConfig,
@@ -5528,15 +6325,15 @@ function ConfigPageContent() {
5528
6325
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.RotateCcw, { size: 16 }),
5529
6326
  "\u91CD\u7F6E\u9ED8\u8BA4"
5530
6327
  ), /* @__PURE__ */ React29__default.default.createElement(
5531
- chunk4XXIBWCO_js.Button,
6328
+ chunkZRWED7Q6_js.Button,
5532
6329
  {
5533
6330
  onClick: handleSaveConfig,
5534
6331
  className: "gap-2"
5535
6332
  },
5536
6333
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Save, { size: 16 }),
5537
6334
  "\u4FDD\u5B58\u914D\u7F6E"
5538
- )))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "siteName" }, "\u7F51\u7AD9\u540D\u79F0"), /* @__PURE__ */ React29__default.default.createElement(
5539
- chunk4XXIBWCO_js.Input,
6335
+ )))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "siteName" }, "\u7F51\u7AD9\u540D\u79F0"), /* @__PURE__ */ React29__default.default.createElement(
6336
+ chunkZRWED7Q6_js.Input,
5540
6337
  {
5541
6338
  id: "siteName",
5542
6339
  type: "text",
@@ -5544,8 +6341,8 @@ function ConfigPageContent() {
5544
6341
  onChange: (e) => setConfigForm((prev) => ({ ...prev, siteName: e.target.value })),
5545
6342
  placeholder: "\u8F93\u5165\u7F51\u7AD9\u540D\u79F0"
5546
6343
  }
5547
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "siteDescription" }, "\u7F51\u7AD9\u63CF\u8FF0"), /* @__PURE__ */ React29__default.default.createElement(
5548
- chunk4XXIBWCO_js.Textarea,
6344
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "siteDescription" }, "\u7F51\u7AD9\u63CF\u8FF0"), /* @__PURE__ */ React29__default.default.createElement(
6345
+ chunkZRWED7Q6_js.Textarea,
5549
6346
  {
5550
6347
  id: "siteDescription",
5551
6348
  value: configForm.siteDescription,
@@ -5553,8 +6350,8 @@ function ConfigPageContent() {
5553
6350
  placeholder: "\u8F93\u5165\u7F51\u7AD9\u63CF\u8FF0",
5554
6351
  rows: 2
5555
6352
  }
5556
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "heroTitle" }, "\u4E3B\u6807\u9898"), /* @__PURE__ */ React29__default.default.createElement(
5557
- chunk4XXIBWCO_js.Input,
6353
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "heroTitle" }, "\u4E3B\u6807\u9898"), /* @__PURE__ */ React29__default.default.createElement(
6354
+ chunkZRWED7Q6_js.Input,
5558
6355
  {
5559
6356
  id: "heroTitle",
5560
6357
  type: "text",
@@ -5562,8 +6359,8 @@ function ConfigPageContent() {
5562
6359
  onChange: (e) => setConfigForm((prev) => ({ ...prev, heroTitle: e.target.value })),
5563
6360
  placeholder: "\u8F93\u5165\u4E3B\u6807\u9898"
5564
6361
  }
5565
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "heroSubtitle" }, "\u526F\u6807\u9898"), /* @__PURE__ */ React29__default.default.createElement(
5566
- chunk4XXIBWCO_js.Textarea,
6362
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "heroSubtitle" }, "\u526F\u6807\u9898"), /* @__PURE__ */ React29__default.default.createElement(
6363
+ chunkZRWED7Q6_js.Textarea,
5567
6364
  {
5568
6365
  id: "heroSubtitle",
5569
6366
  value: configForm.heroSubtitle,
@@ -5571,8 +6368,8 @@ function ConfigPageContent() {
5571
6368
  placeholder: "\u8F93\u5165\u526F\u6807\u9898",
5572
6369
  rows: 2
5573
6370
  }
5574
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "maxCollections" }, "\u6BCF\u9875\u663E\u793A\u5546\u54C1\u6570\u91CF"), /* @__PURE__ */ React29__default.default.createElement(
5575
- chunk4XXIBWCO_js.Input,
6371
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "maxCollections" }, "\u6BCF\u9875\u663E\u793A\u5546\u54C1\u6570\u91CF"), /* @__PURE__ */ React29__default.default.createElement(
6372
+ chunkZRWED7Q6_js.Input,
5576
6373
  {
5577
6374
  id: "maxCollections",
5578
6375
  type: "number",
@@ -5581,22 +6378,22 @@ function ConfigPageContent() {
5581
6378
  min: "1",
5582
6379
  max: "50"
5583
6380
  }
5584
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "theme" }, "\u4E3B\u9898"), /* @__PURE__ */ React29__default.default.createElement(
5585
- chunk4XXIBWCO_js.Select,
6381
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "theme" }, "\u4E3B\u9898"), /* @__PURE__ */ React29__default.default.createElement(
6382
+ chunkZRWED7Q6_js.Select,
5586
6383
  {
5587
6384
  value: configForm.theme,
5588
6385
  onValueChange: (value) => setConfigForm((prev) => ({ ...prev, theme: value }))
5589
6386
  },
5590
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectTrigger, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectValue, { placeholder: "\u9009\u62E9\u4E3B\u9898" })),
5591
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectContent, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectItem, { value: "light" }, "\u6D45\u8272"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectItem, { value: "dark" }, "\u6DF1\u8272"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectItem, { value: "auto" }, "\u81EA\u52A8"))
5592
- )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "language" }, "\u8BED\u8A00"), /* @__PURE__ */ React29__default.default.createElement(
5593
- chunk4XXIBWCO_js.Select,
6387
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectTrigger, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectValue, { placeholder: "\u9009\u62E9\u4E3B\u9898" })),
6388
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectContent, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectItem, { value: "light" }, "\u6D45\u8272"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectItem, { value: "dark" }, "\u6DF1\u8272"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectItem, { value: "auto" }, "\u81EA\u52A8"))
6389
+ )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "language" }, "\u8BED\u8A00"), /* @__PURE__ */ React29__default.default.createElement(
6390
+ chunkZRWED7Q6_js.Select,
5594
6391
  {
5595
6392
  value: configForm.language,
5596
6393
  onValueChange: (value) => setConfigForm((prev) => ({ ...prev, language: value }))
5597
6394
  },
5598
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectTrigger, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectValue, { placeholder: "\u9009\u62E9\u8BED\u8A00" })),
5599
- /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectContent, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectItem, { value: "zh" }, "\u4E2D\u6587"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.SelectItem, { value: "en" }, "English"))
6395
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectTrigger, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectValue, { placeholder: "\u9009\u62E9\u8BED\u8A00" })),
6396
+ /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectContent, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectItem, { value: "zh" }, "\u4E2D\u6587"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.SelectItem, { value: "en" }, "English"))
5600
6397
  )), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29__default.default.createElement(
5601
6398
  "input",
5602
6399
  {
@@ -5606,7 +6403,7 @@ function ConfigPageContent() {
5606
6403
  onChange: (e) => setConfigForm((prev) => ({ ...prev, enableSearch: e.target.checked })),
5607
6404
  className: "h-4 w-4 rounded border-gray-300"
5608
6405
  }
5609
- ), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "enableSearch", className: "text-sm font-medium" }, "\u542F\u7528\u641C\u7D22\u529F\u80FD")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29__default.default.createElement(
6406
+ ), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "enableSearch", className: "text-sm font-medium" }, "\u542F\u7528\u641C\u7D22\u529F\u80FD")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29__default.default.createElement(
5610
6407
  "input",
5611
6408
  {
5612
6409
  id: "enableCategories",
@@ -5615,29 +6412,29 @@ function ConfigPageContent() {
5615
6412
  onChange: (e) => setConfigForm((prev) => ({ ...prev, enableCategories: e.target.checked })),
5616
6413
  className: "h-4 w-4 rounded border-gray-300"
5617
6414
  }
5618
- ), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, { htmlFor: "enableCategories", className: "text-sm font-medium" }, "\u542F\u7528\u5206\u7C7B\u529F\u80FD")))))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "homeTabs", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardTitle, null, "\u9996\u9875\u5206\u7C7BTab\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardDescription, null, "\u7BA1\u7406\u9996\u9875\u5206\u7C7BTab\u7684\u663E\u793A\u987A\u5E8F\u4E0E\u663E\u793A/\u9690\u85CF")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(true) }, "\u5168\u90E8\u663E\u793A"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(false) }, "\u5168\u90E8\u9690\u85CF"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { variant: "outline", onClick: handleResetHomeTabs, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.RotateCcw, { size: 16 }), "\u91CD\u7F6E\u987A\u5E8F"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { onClick: handleSaveConfig, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Save, { size: 16 }), "\u4FDD\u5B58\u914D\u7F6E")))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-end gap-3 mb-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, null, "\u5206\u7C7B\u540D\u79F0"), /* @__PURE__ */ React29__default.default.createElement(
5619
- chunk4XXIBWCO_js.Input,
6415
+ ), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, { htmlFor: "enableCategories", className: "text-sm font-medium" }, "\u542F\u7528\u5206\u7C7B\u529F\u80FD")))))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "homeTabs", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardTitle, null, "\u9996\u9875\u5206\u7C7BTab\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardDescription, null, "\u7BA1\u7406\u9996\u9875\u5206\u7C7BTab\u7684\u663E\u793A\u987A\u5E8F\u4E0E\u663E\u793A/\u9690\u85CF")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(true) }, "\u5168\u90E8\u663E\u793A"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(false) }, "\u5168\u90E8\u9690\u85CF"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { variant: "outline", onClick: handleResetHomeTabs, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.RotateCcw, { size: 16 }), "\u91CD\u7F6E\u987A\u5E8F"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { onClick: handleSaveConfig, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Save, { size: 16 }), "\u4FDD\u5B58\u914D\u7F6E")))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-end gap-3 mb-4" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, null, "\u5206\u7C7B\u540D\u79F0"), /* @__PURE__ */ React29__default.default.createElement(
6416
+ chunkZRWED7Q6_js.Input,
5620
6417
  {
5621
6418
  value: newHomeTabCategory,
5622
6419
  onChange: (e) => setNewHomeTabCategory(e.target.value),
5623
6420
  placeholder: "\u8F93\u5165\u5206\u7C7B\u540D\u79F0"
5624
6421
  }
5625
- ), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Label, null, "\u5C55\u793A\u6587\u6848"), /* @__PURE__ */ React29__default.default.createElement(
5626
- chunk4XXIBWCO_js.Input,
6422
+ ), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Label, null, "\u5C55\u793A\u6587\u6848"), /* @__PURE__ */ React29__default.default.createElement(
6423
+ chunkZRWED7Q6_js.Input,
5627
6424
  {
5628
6425
  value: newHomeTabDescription,
5629
6426
  onChange: (e) => setNewHomeTabDescription(e.target.value),
5630
6427
  placeholder: "\u8F93\u5165\u5C55\u793A\u6587\u6848"
5631
6428
  }
5632
- )), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Button, { onClick: handleAddHomeTab, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Plus, { size: 16 }), "\u65B0\u589ETab")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, configForm.homeTabConfig.map((item, index) => /* @__PURE__ */ React29__default.default.createElement(
6429
+ )), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Button, { onClick: handleAddHomeTab, className: "gap-2" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Plus, { size: 16 }), "\u65B0\u589ETab")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "space-y-2" }, configForm.homeTabConfig.map((item, index) => /* @__PURE__ */ React29__default.default.createElement(
5633
6430
  "div",
5634
6431
  {
5635
6432
  key: item.category,
5636
6433
  className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 p-3 border border-slate-200 rounded-lg bg-white"
5637
6434
  },
5638
- /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React29__default.default.createElement("span", { className: "text-sm font-semibold text-slate-800" }, item.description || item.name || chunkDENROXAE_js.getCategoryDisplayName(item.category)), item.description ? /* @__PURE__ */ React29__default.default.createElement("span", { className: "text-xs text-slate-500" }, item.name || item.category) : null), !item.visible && /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Badge, { variant: "secondary", className: "text-xs" }, "\u5DF2\u9690\u85CF")),
6435
+ /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React29__default.default.createElement("span", { className: "text-sm font-semibold text-slate-800" }, item.description || item.name || chunkDENROXAE_js.getCategoryDisplayName(item.category)), item.description ? /* @__PURE__ */ React29__default.default.createElement("span", { className: "text-xs text-slate-500" }, item.name || item.category) : null), !item.visible && /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Badge, { variant: "secondary", className: "text-xs" }, "\u5DF2\u9690\u85CF")),
5639
6436
  /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29__default.default.createElement(
5640
- chunk4XXIBWCO_js.Button,
6437
+ chunkZRWED7Q6_js.Button,
5641
6438
  {
5642
6439
  variant: "outline",
5643
6440
  size: "sm",
@@ -5646,7 +6443,7 @@ function ConfigPageContent() {
5646
6443
  },
5647
6444
  "\u4E0A\u79FB"
5648
6445
  ), /* @__PURE__ */ React29__default.default.createElement(
5649
- chunk4XXIBWCO_js.Button,
6446
+ chunkZRWED7Q6_js.Button,
5650
6447
  {
5651
6448
  variant: "outline",
5652
6449
  size: "sm",
@@ -5655,7 +6452,7 @@ function ConfigPageContent() {
5655
6452
  },
5656
6453
  "\u4E0B\u79FB"
5657
6454
  ), /* @__PURE__ */ React29__default.default.createElement(
5658
- chunk4XXIBWCO_js.Button,
6455
+ chunkZRWED7Q6_js.Button,
5659
6456
  {
5660
6457
  variant: item.visible ? "secondary" : "default",
5661
6458
  size: "sm",
@@ -5663,7 +6460,7 @@ function ConfigPageContent() {
5663
6460
  },
5664
6461
  item.visible ? "\u9690\u85CF" : "\u663E\u793A"
5665
6462
  ), /* @__PURE__ */ React29__default.default.createElement(
5666
- chunk4XXIBWCO_js.Button,
6463
+ chunkZRWED7Q6_js.Button,
5667
6464
  {
5668
6465
  variant: "outline",
5669
6466
  size: "sm",
@@ -5672,8 +6469,8 @@ function ConfigPageContent() {
5672
6469
  },
5673
6470
  "\u5220\u9664"
5674
6471
  ))
5675
- )))))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "collections", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardTitle, null, "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardDescription, null, "\u7BA1\u7406\u5546\u54C1")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
5676
- chunk4XXIBWCO_js.Button,
6472
+ )))))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "collections", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.Card, null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardHeader, null, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardTitle, null, "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardDescription, null, "\u7BA1\u7406\u5546\u54C1")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
6473
+ chunkZRWED7Q6_js.Button,
5677
6474
  {
5678
6475
  onClick: () => {
5679
6476
  setCollectionForm({
@@ -5694,7 +6491,7 @@ function ConfigPageContent() {
5694
6491
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Plus, { size: 16 }),
5695
6492
  "\u6DFB\u52A0\u5546\u54C1"
5696
6493
  ), /* @__PURE__ */ React29__default.default.createElement(
5697
- chunk4XXIBWCO_js.Button,
6494
+ chunkZRWED7Q6_js.Button,
5698
6495
  {
5699
6496
  variant: "outline",
5700
6497
  onClick: () => handleToggleCollectionOrder(),
@@ -5702,7 +6499,7 @@ function ConfigPageContent() {
5702
6499
  },
5703
6500
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.ArrowUpDown, { size: 16 }),
5704
6501
  showCollectionOrder ? "\u5173\u95ED\u6392\u5E8F" : "\u5546\u54C1\u6392\u5E8F"
5705
- )))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.CardContent, null, showCollectionOrder && /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u5728\u524D\u53F0\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React29__default.default.createElement(
6502
+ )))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.CardContent, null, showCollectionOrder && /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u5728\u524D\u53F0\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React29__default.default.createElement(
5706
6503
  CollectionOrderManagerV2,
5707
6504
  {
5708
6505
  moveCollectionUp: moveCollectionUp2,
@@ -5732,14 +6529,14 @@ function ConfigPageContent() {
5732
6529
  {
5733
6530
  onClick: async () => {
5734
6531
  if (confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u5546\u54C1\u5417\uFF1F")) {
5735
- await deleteCollection(collection.id);
6532
+ await deleteCollection2(collection.id);
5736
6533
  }
5737
6534
  },
5738
6535
  className: "flex items-center gap-1 px-3 py-1 bg-red-100 text-red-700 border border-red-200 rounded text-sm hover:bg-red-200 transition-colors"
5739
6536
  },
5740
6537
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Trash2, { size: 14 }),
5741
6538
  "\u5220\u9664"
5742
- )))))))))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "artworks", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
6539
+ )))))))))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "artworks", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29__default.default.createElement(
5743
6540
  "select",
5744
6541
  {
5745
6542
  value: selectedCollection || "",
@@ -5806,14 +6603,14 @@ function ConfigPageContent() {
5806
6603
  {
5807
6604
  onClick: () => {
5808
6605
  if (confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u5546\u54C1\u8BE6\u60C5\u56FE\u5417\uFF1F")) {
5809
- deleteArtwork(selectedCollection, artwork.id);
6606
+ deleteArtwork2(selectedCollection, artwork.id);
5810
6607
  }
5811
6608
  },
5812
6609
  className: "flex items-center gap-1 px-3 py-1 bg-red-100 text-red-700 border border-red-200 rounded text-sm hover:bg-red-200 transition-colors"
5813
6610
  },
5814
6611
  /* @__PURE__ */ React29__default.default.createElement(lucideReact.Trash2, { size: 14 }),
5815
6612
  "\u5220\u9664"
5816
- ))))))), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "bookings", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u67E5\u770B\u6240\u6709\u7528\u6237\u7684\u9884\u8BA2\u4FE1\u606F")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29__default.default.createElement(
6613
+ ))))))), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "bookings", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u67E5\u770B\u6240\u6709\u7528\u6237\u7684\u9884\u8BA2\u4FE1\u606F")), /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29__default.default.createElement(
5817
6614
  "button",
5818
6615
  {
5819
6616
  onClick: refreshBookingData,
@@ -5833,11 +6630,11 @@ function ConfigPageContent() {
5833
6630
  onRefresh: handleBookingRefresh,
5834
6631
  onSearch: handleBookingSearch,
5835
6632
  onClearSearch: handleBookingClearSearch,
5836
- onUpdateStatus: updateBookingStatus,
5837
- onDeleteBooking: deleteBooking,
5838
- onExportBookings: exportBookings
6633
+ onUpdateStatus: updateBookingStatus3,
6634
+ onDeleteBooking: deleteBooking3,
6635
+ onExportBookings: exportBookings2
5839
6636
  }
5840
- )), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "popup", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97\u8BBE\u7F6E")), /* @__PURE__ */ React29__default.default.createElement(PopupConfigManagement, null)), /* @__PURE__ */ React29__default.default.createElement(chunk4XXIBWCO_js.TabsContent, { value: "system", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u7CFB\u7EDF\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406ShowMasterPieces\u6A21\u5757\u7684\u7CFB\u7EDF\u7EA7\u914D\u7F6E\u9879\uFF0C\u4E3A\u6A21\u5757\u72EC\u7ACB\u5316\u505A\u51C6\u5907"), /* @__PURE__ */ React29__default.default.createElement("div", { className: "mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Cog, { className: "text-blue-600 mt-0.5", size: 20 }), /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "font-semibold text-blue-900" }, "\u914D\u7F6E\u8BF4\u660E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-blue-800 text-sm mt-1" }, "\u8FD9\u91CC\u7684\u914D\u7F6E\u9879\u5C06\u7528\u4E8EShowMasterPieces\u6A21\u5757\u7684\u72EC\u7ACB\u8FD0\u884C\u3002 \u65B0\u521B\u5EFA\u7684\u914D\u7F6E\u9879\u4F1A\u81EA\u52A8\u6DFB\u52A0", /* @__PURE__ */ React29__default.default.createElement("code", { className: "bg-blue-100 px-1 rounded" }, "SHOWMASTER_"), "\u524D\u7F00\u3002"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-blue-700 text-xs mt-2" }, "\u{1F4A1} \u63D0\u793A\uFF1A\u8FD9\u4E9B\u914D\u7F6E\u72EC\u7ACB\u4E8E\u5168\u5C40\u914D\u7F6E\uFF0C\u4FBF\u4E8E\u6A21\u5757\u6253\u5305\u548C\u90E8\u7F72\u3002"))))), /* @__PURE__ */ React29__default.default.createElement(SystemConfigManager, null)))), showCollectionForm && /* @__PURE__ */ React29__default.default.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingCollection ? "\u7F16\u8F91\u5546\u54C1" : "\u6DFB\u52A0\u5546\u54C1"), /* @__PURE__ */ React29__default.default.createElement(
6637
+ )), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "popup", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97\u8BBE\u7F6E")), /* @__PURE__ */ React29__default.default.createElement(PopupConfigManagement, null)), /* @__PURE__ */ React29__default.default.createElement(chunkZRWED7Q6_js.TabsContent, { value: "system", className: "space-y-6" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29__default.default.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u7CFB\u7EDF\u914D\u7F6E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406ShowMasterPieces\u6A21\u5757\u7684\u7CFB\u7EDF\u7EA7\u914D\u7F6E\u9879\uFF0C\u4E3A\u6A21\u5757\u72EC\u7ACB\u5316\u505A\u51C6\u5907"), /* @__PURE__ */ React29__default.default.createElement("div", { className: "mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React29__default.default.createElement(lucideReact.Cog, { className: "text-blue-600 mt-0.5", size: 20 }), /* @__PURE__ */ React29__default.default.createElement("div", null, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "font-semibold text-blue-900" }, "\u914D\u7F6E\u8BF4\u660E"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-blue-800 text-sm mt-1" }, "\u8FD9\u91CC\u7684\u914D\u7F6E\u9879\u5C06\u7528\u4E8EShowMasterPieces\u6A21\u5757\u7684\u72EC\u7ACB\u8FD0\u884C\u3002 \u65B0\u521B\u5EFA\u7684\u914D\u7F6E\u9879\u4F1A\u81EA\u52A8\u6DFB\u52A0", /* @__PURE__ */ React29__default.default.createElement("code", { className: "bg-blue-100 px-1 rounded" }, "SHOWMASTER_"), "\u524D\u7F00\u3002"), /* @__PURE__ */ React29__default.default.createElement("p", { className: "text-blue-700 text-xs mt-2" }, "\u{1F4A1} \u63D0\u793A\uFF1A\u8FD9\u4E9B\u914D\u7F6E\u72EC\u7ACB\u4E8E\u5168\u5C40\u914D\u7F6E\uFF0C\u4FBF\u4E8E\u6A21\u5757\u6253\u5305\u548C\u90E8\u7F72\u3002"))))), /* @__PURE__ */ React29__default.default.createElement(SystemConfigManager, null)))), showCollectionForm && /* @__PURE__ */ React29__default.default.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29__default.default.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React29__default.default.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingCollection ? "\u7F16\u8F91\u5546\u54C1" : "\u6DFB\u52A0\u5546\u54C1"), /* @__PURE__ */ React29__default.default.createElement(
5841
6638
  "button",
5842
6639
  {
5843
6640
  onClick: () => setShowCollectionForm(false),
@@ -6113,6 +6910,7 @@ exports.AddConfigItemDialog = AddConfigItemDialog;
6113
6910
  exports.AddToCartButton = AddToCartButton;
6114
6911
  exports.ArtworkOrderManagerV2 = ArtworkOrderManagerV2;
6115
6912
  exports.ArtworkViewer = ArtworkViewer;
6913
+ exports.BOOKING_EXPORT_FIELDS = BOOKING_EXPORT_FIELDS;
6116
6914
  exports.BookingAdminPanel = BookingAdminPanel;
6117
6915
  exports.BookingModal = BookingModal;
6118
6916
  exports.BookingPage = BookingPage;
@@ -6124,6 +6922,7 @@ exports.CollectionCard = CollectionCard;
6124
6922
  exports.CollectionList = CollectionList;
6125
6923
  exports.CollectionOrderManagerV2 = CollectionOrderManagerV2;
6126
6924
  exports.ConfigPage = ConfigPage;
6925
+ exports.DEFAULT_BOOKING_EXPORT_CONFIG = DEFAULT_BOOKING_EXPORT_CONFIG;
6127
6926
  exports.DeadlinePopup = DeadlinePopup;
6128
6927
  exports.DeadlinePopupManager = DeadlinePopupManager;
6129
6928
  exports.DeleteConfirmDialog = DeleteConfirmDialog;
@@ -6134,5 +6933,12 @@ exports.SystemConfigManager = SystemConfigManager;
6134
6933
  exports.ThumbnailSidebar = ThumbnailSidebar;
6135
6934
  exports.UniversalImageUpload = UniversalImageUpload;
6136
6935
  exports.UserHistoryPage = UserHistoryPage;
6137
- //# sourceMappingURL=chunk-W2NCOORK.js.map
6138
- //# sourceMappingURL=chunk-W2NCOORK.js.map
6936
+ exports.clearConfigCache = clearConfigCache;
6937
+ exports.getArtworkImageUrl = getArtworkImageUrl;
6938
+ exports.getShowMasterpieceFileConfig = getShowMasterpieceFileConfig;
6939
+ exports.getStorageModeDisplayName = getStorageModeDisplayName;
6940
+ exports.refreshFileServiceConfig = refreshFileServiceConfig;
6941
+ exports.shouldUseUniversalFileService = shouldUseUniversalFileService;
6942
+ exports.uploadArtworkImage = uploadArtworkImage;
6943
+ //# sourceMappingURL=chunk-PVLLRDUT.js.map
6944
+ //# sourceMappingURL=chunk-PVLLRDUT.js.map