@funhub/platform 0.1.13 → 0.1.15

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 (199) hide show
  1. package/dist/assets/icons/detail/check-ok.mjs +2 -0
  2. package/dist/assets/icons/share/share-link.mjs +2 -0
  3. package/dist/biz.d.mts +9 -1
  4. package/dist/biz.mjs +1 -1
  5. package/dist/common.d.mts +3 -1
  6. package/dist/common.mjs +1 -1
  7. package/dist/components/biz/business/banner/index.d.mts +3 -0
  8. package/dist/components/biz/business/banner/variants/basic-banner/defaults/default-props.mjs +1 -1
  9. package/dist/components/biz/business/banner/variants/basic-banner/defaults/mock-data.mjs +2 -0
  10. package/dist/components/biz/business/banner/variants/basic-banner/index.d.mts +4 -1
  11. package/dist/components/biz/business/banner/variants/basic-banner/index.mjs +1 -1
  12. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.d.mts +32 -0
  13. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.mjs +2 -0
  14. package/dist/components/biz/business/banner/variants/basic-banner/material.d.mts +21 -0
  15. package/dist/components/biz/business/banner/variants/basic-banner/material.mjs +2 -0
  16. package/dist/components/biz/business/banner/variants/basic-banner/server.d.mts +19 -0
  17. package/dist/components/biz/business/banner/variants/basic-banner/server.mjs +2 -0
  18. package/dist/components/biz/business/comment/comment-input.mjs +1 -1
  19. package/dist/components/biz/business/detail/detail-info-tags.mjs +2 -0
  20. package/dist/components/biz/business/detail/detail-info-title.mjs +2 -0
  21. package/dist/components/biz/business/detail/detail-introduction.mjs +1 -1
  22. package/dist/components/biz/business/detail/detail-operate.mjs +1 -1
  23. package/dist/components/biz/business/detail/materials/registry.d.mts +61 -0
  24. package/dist/components/biz/business/detail/materials/registry.mjs +2 -0
  25. package/dist/components/biz/business/detail/materials/video-detail-actions/client.d.mts +14 -0
  26. package/dist/components/biz/business/detail/materials/video-detail-actions/client.mjs +2 -0
  27. package/dist/components/biz/business/detail/materials/video-detail-actions/index.d.mts +5 -0
  28. package/dist/components/biz/business/detail/materials/video-detail-actions/material.d.mts +4 -0
  29. package/dist/components/biz/business/detail/materials/video-detail-actions/material.mjs +2 -0
  30. package/dist/components/biz/business/detail/materials/video-detail-actions/schema.d.mts +14 -0
  31. package/dist/components/biz/business/detail/materials/video-detail-actions/schema.mjs +2 -0
  32. package/dist/components/biz/business/detail/materials/video-detail-actions/server.d.mts +11 -0
  33. package/dist/components/biz/business/detail/materials/video-detail-actions/server.mjs +2 -0
  34. package/dist/components/biz/business/detail/materials/video-detail-info/client.d.mts +18 -0
  35. package/dist/components/biz/business/detail/materials/video-detail-info/client.mjs +2 -0
  36. package/dist/components/biz/business/detail/materials/video-detail-info/index.d.mts +5 -0
  37. package/dist/components/biz/business/detail/materials/video-detail-info/material.d.mts +5 -0
  38. package/dist/components/biz/business/detail/materials/video-detail-info/material.mjs +2 -0
  39. package/dist/components/biz/business/detail/materials/video-detail-info/schema.d.mts +17 -0
  40. package/dist/components/biz/business/detail/materials/video-detail-info/schema.mjs +2 -0
  41. package/dist/components/biz/business/detail/materials/video-detail-info/server.d.mts +11 -0
  42. package/dist/components/biz/business/detail/materials/video-detail-info/server.mjs +2 -0
  43. package/dist/components/biz/business/detail/materials/video-detail-info-title/client.d.mts +12 -0
  44. package/dist/components/biz/business/detail/materials/video-detail-info-title/client.mjs +2 -0
  45. package/dist/components/biz/business/detail/materials/video-detail-info-title/index.d.mts +5 -0
  46. package/dist/components/biz/business/detail/materials/video-detail-info-title/material.d.mts +4 -0
  47. package/dist/components/biz/business/detail/materials/video-detail-info-title/material.mjs +2 -0
  48. package/dist/components/biz/business/detail/materials/video-detail-info-title/schema.d.mts +14 -0
  49. package/dist/components/biz/business/detail/materials/video-detail-info-title/schema.mjs +2 -0
  50. package/dist/components/biz/business/detail/materials/video-detail-info-title/server.d.mts +11 -0
  51. package/dist/components/biz/business/detail/materials/video-detail-info-title/server.mjs +2 -0
  52. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/client.d.mts +16 -0
  53. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/client.mjs +2 -0
  54. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/index.d.mts +5 -0
  55. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/material.d.mts +5 -0
  56. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/material.mjs +2 -0
  57. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/schema.d.mts +17 -0
  58. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/schema.mjs +2 -0
  59. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/server.d.mts +11 -0
  60. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/server.mjs +2 -0
  61. package/dist/components/biz/business/detail/materials/video-detail-player/client.d.mts +16 -0
  62. package/dist/components/biz/business/detail/materials/video-detail-player/client.mjs +2 -0
  63. package/dist/components/biz/business/detail/materials/video-detail-player/index.d.mts +5 -0
  64. package/dist/components/biz/business/detail/materials/video-detail-player/material.d.mts +4 -0
  65. package/dist/components/biz/business/detail/materials/video-detail-player/material.mjs +2 -0
  66. package/dist/components/biz/business/detail/materials/video-detail-player/schema.d.mts +14 -0
  67. package/dist/components/biz/business/detail/materials/video-detail-player/schema.mjs +2 -0
  68. package/dist/components/biz/business/detail/materials/video-detail-player/server.d.mts +11 -0
  69. package/dist/components/biz/business/detail/materials/video-detail-player/server.mjs +2 -0
  70. package/dist/components/biz/business/detail/materials/video-detail-recommend/client.d.mts +11 -0
  71. package/dist/components/biz/business/detail/materials/video-detail-recommend/client.mjs +2 -0
  72. package/dist/components/biz/business/detail/materials/video-detail-recommend/index.d.mts +5 -0
  73. package/dist/components/biz/business/detail/materials/video-detail-recommend/material.d.mts +5 -0
  74. package/dist/components/biz/business/detail/materials/video-detail-recommend/material.mjs +2 -0
  75. package/dist/components/biz/business/detail/materials/video-detail-recommend/schema.d.mts +36 -0
  76. package/dist/components/biz/business/detail/materials/video-detail-recommend/schema.mjs +2 -0
  77. package/dist/components/biz/business/detail/materials/video-detail-recommend/server.d.mts +11 -0
  78. package/dist/components/biz/business/detail/materials/video-detail-recommend/server.mjs +2 -0
  79. package/dist/components/biz/business/detail/materials/video-detail-recommend/utils.mjs +2 -0
  80. package/dist/components/biz/business/index.d.mts +3 -0
  81. package/dist/components/biz/business/index.mjs +1 -1
  82. package/dist/components/biz/example/button/client.d.mts +8 -0
  83. package/dist/components/biz/example/button/client.mjs +2 -0
  84. package/dist/components/biz/example/button/index.d.mts +5 -0
  85. package/dist/components/biz/example/button/material.d.mts +22 -0
  86. package/dist/components/biz/example/button/material.mjs +2 -0
  87. package/dist/components/biz/example/button/schema.d.mts +38 -0
  88. package/dist/components/biz/example/button/schema.mjs +2 -0
  89. package/dist/components/biz/example/button/server.d.mts +8 -0
  90. package/dist/components/biz/example/button/server.mjs +2 -0
  91. package/dist/components/biz/example/button/variants.mjs +2 -0
  92. package/dist/components/biz/utils/transformers/data.d.mts +3 -3
  93. package/dist/components/common/app-context/index.d.mts +19 -0
  94. package/dist/components/common/app-context/index.mjs +2 -0
  95. package/dist/components/common/app-context/provider.mjs +2 -0
  96. package/dist/components/common/cards/mini-three-card.d.mts +4 -1
  97. package/dist/components/common/cards/mini-three-card.mjs +1 -1
  98. package/dist/components/common/collection-popup/collection-create-modal.mjs +2 -0
  99. package/dist/components/common/collection-popup/index.mjs +1 -1
  100. package/dist/components/common/image-crop-modal/image-crop-modal.mjs +2 -2
  101. package/dist/components/common/intl-provider.d.mts +25 -0
  102. package/dist/components/common/intl-provider.mjs +2 -0
  103. package/dist/components/common/list/post-list/post-list.mjs +1 -1
  104. package/dist/components/common/list/video-list/video-list.mjs +1 -1
  105. package/dist/components/common/picker/gender-picker/gender-picker.d.mts +8 -2
  106. package/dist/components/common/picker/gender-picker/gender-picker.mjs +1 -1
  107. package/dist/components/common/picker/picker-drawer/picker-drawer.mjs +1 -1
  108. package/dist/components/common/share-popup/share-popup.d.mts +42 -0
  109. package/dist/components/common/share-popup/share-popup.mjs +1 -1
  110. package/dist/components/pages/edit/page.mjs +1 -1
  111. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  112. package/dist/components/pages/login/agreement-dialog.mjs +2 -0
  113. package/dist/components/pages/login/forgot.mjs +1 -1
  114. package/dist/components/pages/login/login-client.mjs +1 -1
  115. package/dist/components/pages/login/password.mjs +1 -1
  116. package/dist/components/pages/login/register.mjs +1 -1
  117. package/dist/components/pages/login/reset-password.mjs +1 -1
  118. package/dist/components/pages/login/verify.mjs +2 -2
  119. package/dist/components/pages/profile/_components/tabs/collect-tab/client.mjs +2 -0
  120. package/dist/components/pages/profile/_components/tabs/collect-tab/server.mjs +2 -0
  121. package/dist/components/pages/profile/_components/tabs/history-tab/client.mjs +2 -0
  122. package/dist/components/pages/profile/_components/tabs/history-tab/server.mjs +2 -0
  123. package/dist/components/pages/profile/_components/tabs/like-tab/client.mjs +2 -0
  124. package/dist/components/pages/profile/_components/tabs/like-tab/server.mjs +2 -0
  125. package/dist/components/pages/profile/_components/tabs/publish-tab/client.mjs +2 -0
  126. package/dist/components/pages/profile/_components/tabs/publish-tab/server.mjs +2 -0
  127. package/dist/components/pages/profile/_components/user-profile-container/client.mjs +2 -0
  128. package/dist/components/pages/profile/_components/user-profile-header/client.mjs +2 -0
  129. package/dist/components/pages/profile/_components/user-profile-header/server.mjs +2 -0
  130. package/dist/components/pages/profile/_components/user-profile-header/user-profile-avatar.mjs +2 -0
  131. package/dist/components/pages/profile/_components/user-profile-header/user-profile-cover-background.mjs +2 -0
  132. package/dist/components/pages/profile/_components/user-profile-main/server.mjs +2 -0
  133. package/dist/components/pages/profile/_components/user-profile-main/shell.mjs +2 -0
  134. package/dist/components/pages/profile/{client.d.mts → layout.d.mts} +4 -3
  135. package/dist/components/pages/profile/layout.mjs +2 -0
  136. package/dist/components/pages/profile/page.d.mts +3 -3
  137. package/dist/components/pages/profile/page.mjs +1 -1
  138. package/dist/components/pages/profile/utils.mjs +1 -1
  139. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -1
  140. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  141. package/dist/components/pages/video-detail/index.d.mts +1 -0
  142. package/dist/components/pages/video-detail/page.d.mts +4 -1
  143. package/dist/components/pages/video-detail/page.mjs +1 -1
  144. package/dist/components/pages/video-detail/video-detail-client.d.mts +13 -0
  145. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  146. package/dist/components/ui/alert-dialog.mjs +1 -1
  147. package/dist/components/ui/badge.d.mts +1 -1
  148. package/dist/components/ui/button.d.mts +1 -1
  149. package/dist/components/ui/image.d.mts +4 -4
  150. package/dist/components/ui/popup.mjs +1 -1
  151. package/dist/components/ui/sheet.d.mts +7 -1
  152. package/dist/components/ui/sheet.mjs +1 -1
  153. package/dist/hooks/app-context.d.mts +20 -0
  154. package/dist/hooks/app-context.mjs +2 -0
  155. package/dist/hooks/get-app-context.d.mts +19 -0
  156. package/dist/hooks/get-app-context.mjs +2 -0
  157. package/dist/hooks/use-app-context/index.d.mts +14 -0
  158. package/dist/hooks/use-app-context/index.mjs +2 -0
  159. package/dist/hooks/use-content-operate.mjs +1 -1
  160. package/dist/hooks.d.mts +4 -1
  161. package/dist/hooks.mjs +1 -1
  162. package/dist/i18n/locales/en.mjs +1 -1
  163. package/dist/i18n/locales/zh-CN.mjs +1 -1
  164. package/dist/i18n.d.mts +5 -1
  165. package/dist/i18n.mjs +1 -1
  166. package/dist/materials.d.mts +4 -0
  167. package/dist/materials.mjs +2 -0
  168. package/dist/pages.d.mts +2 -1
  169. package/dist/service/generated/client.d.mts +1 -1
  170. package/dist/service/generated/tanstack.d.mts +1 -1
  171. package/dist/utils/schema/index.d.mts +4 -0
  172. package/dist/utils/schema/inspector.d.mts +117 -0
  173. package/dist/utils/schema/material.d.mts +46 -0
  174. package/dist/utils/schema/material.mjs +2 -0
  175. package/dist/utils/schema/schema.d.mts +105 -0
  176. package/dist/utils/schema/schema.mjs +2 -0
  177. package/dist/utils/schema/utils.d.mts +17 -0
  178. package/dist/utils/schema/utils.mjs +2 -0
  179. package/dist/utils/share-manager.mjs +1 -1
  180. package/dist/utils.d.mts +6 -2
  181. package/dist/utils.mjs +1 -1
  182. package/package.json +5 -1
  183. package/dist/assets/icons/share/share-collect-sel.mjs +0 -2
  184. package/dist/assets/icons/share/share-collect.mjs +0 -2
  185. package/dist/assets/icons/share/share-qq.mjs +0 -2
  186. package/dist/assets/icons/share/share-wechat.mjs +0 -2
  187. package/dist/assets/icons/share/share-wecircle.mjs +0 -2
  188. package/dist/components/biz/business/detail/detail-guess-like.mjs +0 -2
  189. package/dist/components/biz/business/detail/detail-popular-comments.mjs +0 -2
  190. package/dist/components/biz/business/detail/detail-tabs.mjs +0 -2
  191. package/dist/components/pages/profile/_components/tabs/collect-tab/collect-tab.mjs +0 -2
  192. package/dist/components/pages/profile/_components/tabs/history-tab/history-tab.mjs +0 -2
  193. package/dist/components/pages/profile/_components/tabs/like-tab/like-tab.mjs +0 -2
  194. package/dist/components/pages/profile/_components/tabs/publish-tab/publish-tab.mjs +0 -2
  195. package/dist/components/pages/profile/_components/user-profile-cover-background.mjs +0 -2
  196. package/dist/components/pages/profile/_components/user-profile-header.mjs +0 -2
  197. package/dist/components/pages/profile/_components/user-profile-main.mjs +0 -2
  198. package/dist/components/pages/profile/client.mjs +0 -2
  199. package/dist/components/ui/legacy/avatar.mjs +0 -2
@@ -0,0 +1,2 @@
1
+
2
+ function e(e){return e}function t(e,t={}){return{...e,...t}}export{e as defineMaterial,t as overwriteMaterial};
@@ -0,0 +1,105 @@
1
+
2
+ import { ArrayInspectorFieldOption, CheckboxInspectorFieldOption, ColorInspectorFieldOption, ComponentInspectorFieldMeta, NumberInspectorFieldOption, ObjectInspectorFieldOption, SelectInspectorFieldOption, SwitchInspectorFieldOption, TextInspectorFieldOption, TextareaInspectorFieldOption } from "./inspector.mjs";
3
+ import z from "zod";
4
+
5
+ //#region utils/schema/schema.d.ts
6
+ declare const INSPECTOR_META_KEY = "inspector";
7
+ type MaterialComponentProps<T = object> = {
8
+ context: 'editor' | 'renderer';
9
+ } & T;
10
+ /**
11
+ * 关联inspector meta
12
+ * @param schema
13
+ * @param inspectorMeta
14
+ * @returns
15
+ */
16
+ declare function withInspectorMeta<T extends z.ZodTypeAny>(schema: T, inspectorMeta: ComponentInspectorFieldMeta): T;
17
+ /**
18
+ * 定义组件props schema
19
+ * 使用defineXXXPropSchema定义defaultValue时,目前仅限于在第一层定义
20
+ * @param shape
21
+ * @returns
22
+ */
23
+ declare function defineComponentPropsSchema<const TShape extends z.ZodRawShape>(shape: TShape): z.ZodObject<{ -readonly [P in keyof TShape]: TShape[P] }, z.core.$strip>;
24
+ interface SchemaHasDefaultValue {
25
+ readonly __schemaHasDefaultValueBrand: never;
26
+ }
27
+ /**
28
+ * 推导 schema 的 props 类型,兼容空 schema 的 strict index signature。
29
+ */
30
+ type InferSchemaProps<TSchema extends z.ZodTypeAny> = z.infer<TSchema> extends Record<string, never> ? {} : z.infer<TSchema>;
31
+ type SchemaByRequired<TSchema extends z.ZodTypeAny, TRequired extends boolean | undefined> = TRequired extends false ? z.ZodOptional<TSchema> : TSchema;
32
+ type MaybeSchemaWithDefaultValue<TSchema extends z.ZodTypeAny, TOption extends {
33
+ defaultValue?: unknown;
34
+ }> = TOption extends {
35
+ defaultValue: infer TDefaultValue;
36
+ } ? [TDefaultValue] extends [undefined] ? TSchema : TSchema & SchemaHasDefaultValue : TSchema;
37
+ declare function defineTextPropSchema<const TOption extends TextInspectorFieldOption & {
38
+ required?: boolean;
39
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodString, TOption['required']>, TOption>;
40
+ declare function defineTextareaPropSchema<const TOption extends TextareaInspectorFieldOption & {
41
+ required?: boolean;
42
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodString, TOption['required']>, TOption>;
43
+ declare function defineNumberPropSchema<const TOption extends NumberInspectorFieldOption & {
44
+ required?: boolean;
45
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodNumber, TOption['required']>, TOption>;
46
+ declare function defineColorPropSchema<const TOption extends ColorInspectorFieldOption & {
47
+ required?: boolean;
48
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodString, TOption['required']>, TOption>;
49
+ declare function defineSelectPropSchema<const TOption extends SelectInspectorFieldOption & {
50
+ required?: boolean;
51
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodString, TOption['required']>, TOption>;
52
+ type StringTuple = readonly [string, ...string[]];
53
+ type SelectEnumInspectorFieldOption<TValues extends StringTuple> = Omit<SelectInspectorFieldOption, 'defaultValue'> & {
54
+ defaultValue?: TValues[number];
55
+ };
56
+ /**
57
+ * 基于字符串元组定义select字段schema。
58
+ * @param values 可选值元组
59
+ * @param option inspector 字段配置
60
+ * @returns zod schema
61
+ */
62
+ declare function defineSelectEnumPropSchema<const TValues extends StringTuple, const TOption extends SelectEnumInspectorFieldOption<TValues> & {
63
+ required?: boolean;
64
+ }>(values: TValues, option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodType<TValues[number]>, TOption['required']>, TOption>;
65
+ declare function defineCheckboxPropSchema<const TOption extends CheckboxInspectorFieldOption & {
66
+ required?: boolean;
67
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodBoolean, TOption['required']>, TOption>;
68
+ declare function defineSwitchPropSchema<const TOption extends SwitchInspectorFieldOption & {
69
+ required?: boolean;
70
+ }>(option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodBoolean, TOption['required']>, TOption>;
71
+ type SchemaShape<TSchema extends z.ZodObject<z.ZodRawShape>> = TSchema extends z.ZodObject<infer TShape> ? TShape : never;
72
+ type SchemaFieldDefaultValue<TFieldSchema> = TFieldSchema extends z.ZodTypeAny ? TFieldSchema extends SchemaHasDefaultValue ? Exclude<z.infer<TFieldSchema>, undefined> : never : never;
73
+ type SchemaDefaultProps<TSchema extends z.ZodObject<z.ZodRawShape>> = { [Key in keyof SchemaShape<TSchema> as [SchemaFieldDefaultValue<SchemaShape<TSchema>[Key]>] extends [never] ? never : Key]: SchemaFieldDefaultValue<SchemaShape<TSchema>[Key]> };
74
+ /**
75
+ * 提取schema中定义的默认props
76
+ * @param schema
77
+ * @returns
78
+ */
79
+ declare function getSchemaDefaultProps<const TSchema extends z.ZodObject<z.ZodRawShape>>(schema: TSchema): SchemaDefaultProps<TSchema>;
80
+ type ArrayItemInspectorOption<TItemSchema extends z.ZodTypeAny> = Omit<ArrayInspectorFieldOption, 'defaultValue'> & {
81
+ defaultValue?: z.infer<TItemSchema>[];
82
+ };
83
+ type ObjectPropInspectorOption<TShape extends z.ZodRawShape> = Omit<ObjectInspectorFieldOption, 'defaultValue'> & {
84
+ defaultValue?: z.infer<z.ZodObject<TShape>>;
85
+ };
86
+ /**
87
+ * 定义数组字段schema,支持声明数组项schema。
88
+ * @param itemSchema 数组项schema
89
+ * @param option inspector 字段配置
90
+ * @returns zod schema
91
+ */
92
+ declare function defineArrayItemPropSchema<TItemSchema extends z.ZodTypeAny, const TOption extends ArrayItemInspectorOption<TItemSchema> & {
93
+ required?: boolean;
94
+ }>(itemSchema: TItemSchema, option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodArray<TItemSchema>, TOption['required']>, TOption>;
95
+ /**
96
+ * 定义对象字段schema,支持声明对象shape。
97
+ * @param shape 对象字段shape
98
+ * @param option inspector 字段配置
99
+ * @returns zod schema
100
+ */
101
+ declare function defineObjectPropSchema<const TShape extends z.ZodRawShape, const TOption extends ObjectPropInspectorOption<TShape> & {
102
+ required?: boolean;
103
+ }>(shape: TShape, option: TOption): MaybeSchemaWithDefaultValue<SchemaByRequired<z.ZodObject<TShape>, TOption['required']>, TOption>;
104
+ //#endregion
105
+ export { INSPECTOR_META_KEY, InferSchemaProps, MaterialComponentProps, SchemaHasDefaultValue, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, getSchemaDefaultProps, withInspectorMeta };
@@ -0,0 +1,2 @@
1
+
2
+ import e from"zod";const t=`inspector`;function n(e,n){return e.meta({...e.meta()??{},[t]:n})}function r(t){return e.object(t)}function i(e,t){return t===!1?e.optional():e}function a(e,t){return t.defaultValue,e}function o(t){let{required:r=!0,...o}=t;return a(n(i(e.string(),r),{type:`text`,...o}),t)}function s(t){let{required:r=!0,...o}=t;return a(n(i(e.string(),r),{type:`textarea`,...o}),t)}function c(t){let{required:r=!0,...o}=t;return a(n(i(e.number(),r),{type:`number`,...o}),t)}function l(t){let{required:r=!0,...o}=t;return a(n(i(e.string(),r),{type:`color`,...o}),t)}function u(t){let{required:r=!0,...o}=t;return a(n(i(e.string(),r),{type:`select`,...o}),t)}function d(t,r){let{required:o=!0,...s}=r;return a(n(i(e.enum(t),o),{type:`select`,...s}),r)}function f(t){let{required:r=!0,...o}=t;return a(n(i(e.boolean(),r),{type:`checkbox`,...o}),t)}function p(t){let{required:r=!0,...o}=t;return a(n(i(e.boolean(),r),{type:`switch`,...o}),t)}function m(e){let n=e,r=new Set;for(;n&&!r.has(n);){r.add(n);let e=n.meta()?.[t];if(e)return e;let i=n.unwrap;if(typeof i!=`function`)break;let a=i.call(n);if(!a||a===n)break;n=a}}function h(e){let t={};for(let[n,r]of Object.entries(e.shape)){let e=m(r);e?.defaultValue!==void 0&&(t[n]=e.defaultValue)}return t}function g(t,r){let{required:o=!0,...s}=r;return a(n(i(e.array(t),o),{type:`array`,...s}),r)}function _(t,r){let{required:o=!0,...s}=r;return a(n(i(e.object(t),o),{type:`object`,...s}),r)}export{t as INSPECTOR_META_KEY,g as defineArrayItemPropSchema,f as defineCheckboxPropSchema,l as defineColorPropSchema,r as defineComponentPropsSchema,c as defineNumberPropSchema,_ as defineObjectPropSchema,d as defineSelectEnumPropSchema,u as defineSelectPropSchema,p as defineSwitchPropSchema,o as defineTextPropSchema,s as defineTextareaPropSchema,h as getSchemaDefaultProps,n as withInspectorMeta};
@@ -0,0 +1,17 @@
1
+
2
+ import { DefineMaterialOption } from "./material.mjs";
3
+
4
+ //#region utils/schema/utils.d.ts
5
+ type MaterialLike = DefineMaterialOption<any, any, string>;
6
+ type MaterialMap<TMaterials extends readonly MaterialLike[]> = { [Type in TMaterials[number]['type']]: Extract<TMaterials[number], {
7
+ type: Type;
8
+ }> };
9
+ /**
10
+ * 将物料数组转换为 type -> material 的映射。
11
+ * 如果出现重复 type,会输出警告并以后者覆盖前者。
12
+ * @param materials 通过 defineMaterial 定义的物料数组
13
+ * @returns 以 material.type 为 key 的映射
14
+ */
15
+ declare function generateMaterialMap<const TMaterials extends readonly MaterialLike[]>(materials: TMaterials): MaterialMap<TMaterials>;
16
+ //#endregion
17
+ export { generateMaterialMap };
@@ -0,0 +1,2 @@
1
+
2
+ function e(e){let t=new Set;return e.reduce((e,n)=>(t.has(n.type)&&console.warn(`[generateMaterialMap] duplicated material type: ${n.type}, the later one will overwrite the previous one.`),t.add(n.type),e[n.type]=n,e),{})}export{e as generateMaterialMap};
@@ -1,2 +1,2 @@
1
1
 
2
- import{Dialog as e,DialogContent as t}from"../components/ui/dialog.mjs";import n from"../components/common/share-popup/share-content.mjs";import{defaultLocale as r,getMessages as i,isValidLocale as a}from"../i18n.mjs";import{SharePlatformEnum as o}from"../types/share.mjs";import{jsx as s}from"react/jsx-runtime";import{NextIntlClientProvider as c}from"next-intl";import{createRoot as l}from"react-dom/client";const u=`session_share_config`;function d(){return{domain:``,[o.QQ]:!0,[o.SAVE]:!0,[o.SHARE_LINK]:!0,[o.WECHAT]:!0,[o.WECHAT_MOMENTS]:!0}}function f(r){let{visible:i,onClose:a,type:o,data:c,copyUrl:l}=r;function u(e){e||a()}return s(e,{open:i,onOpenChange:u,children:s(t,{showCloseButton:!1,className:`z-[2000] w-[calc(100%-48px)] max-w-[360px] overflow-hidden rounded-[16px] bg-bg1 p-0 text-text1`,children:s(n,{type:o,data:c,copyUrl:l,onClose:a})})})}function p(){if(typeof document>`u`)return r;let e=document.documentElement?.lang||``;return a(e)?e:r}function m(e){let t=p();return s(c,{locale:t,messages:i(t),children:s(f,{...e})})}let h=null,g=null;var _=class e{static async initShareConfig(){let e=d();try{let t=sessionStorage.getItem(u);t?e=JSON.parse(t):sessionStorage.setItem(u,JSON.stringify(e))}catch(e){console.error(`获取分享配置失败:`,e)}return e}static showSharePopup({type:t,data:n,copyUrl:r}){h||(h=document.createElement(`div`),h.style.zIndex=`2001`,document.body.appendChild(h),g=l(h)),g?.render(s(m,{visible:!1,type:t,data:n,copyUrl:r,onClose:()=>{e.clear()}})),requestAnimationFrame(()=>{g?.render(s(m,{visible:!0,type:t,data:n,copyUrl:r,onClose:()=>{e.clear()}}))})}static clear(){g&&h&&(g.render(s(m,{visible:!1,type:o.SHARE_LINK,data:{id:``},copyUrl:``,onClose:()=>{e.clear()}})),setTimeout(()=>{g?.unmount(),g=null,h?.parentNode&&h.parentNode.removeChild(h),h=null},300))}};export{_ as default};
2
+ import{Dialog as e,DialogContent as t}from"../components/ui/dialog.mjs";import n from"../components/common/share-popup/share-content.mjs";import{defaultLocale as r,getMessages as i,isValidLocale as a}from"../i18n.mjs";import{IntlProvider as o}from"../components/common/intl-provider.mjs";import{SharePlatformEnum as s}from"../types/share.mjs";import{jsx as c}from"react/jsx-runtime";import{createRoot as l}from"react-dom/client";const u=`session_share_config`;function d(){return{domain:``,[s.QQ]:!0,[s.SAVE]:!0,[s.SHARE_LINK]:!0,[s.WECHAT]:!0,[s.WECHAT_MOMENTS]:!0}}function f(r){let{visible:i,onClose:a,type:o,data:s,copyUrl:l}=r;function u(e){e||a()}return c(e,{open:i,onOpenChange:u,children:c(t,{showCloseButton:!1,className:`z-[2000] w-[calc(100%-48px)] max-w-[360px] overflow-hidden rounded-[16px] bg-bg1 p-0 text-text1`,children:c(n,{type:o,data:s,copyUrl:l,onClose:a})})})}function p(){if(typeof document>`u`)return r;let e=document.documentElement?.lang||``;return a(e)?e:r}function m(e){let t=p();return c(o,{locale:t,messages:i(t),children:c(f,{...e})})}let h=null,g=null;var _=class e{static async initShareConfig(){let e=d();try{let t=sessionStorage.getItem(u);t?e=JSON.parse(t):sessionStorage.setItem(u,JSON.stringify(e))}catch(e){console.error(`获取分享配置失败:`,e)}return e}static showSharePopup({type:t,data:n,copyUrl:r}){h||(h=document.createElement(`div`),h.style.zIndex=`2001`,document.body.appendChild(h),g=l(h)),g?.render(c(m,{visible:!1,type:t,data:n,copyUrl:r,onClose:()=>{e.clear()}})),requestAnimationFrame(()=>{g?.render(c(m,{visible:!0,type:t,data:n,copyUrl:r,onClose:()=>{e.clear()}}))})}static clear(){g&&h&&(g.render(c(m,{visible:!1,type:s.SHARE_LINK,data:{id:``},copyUrl:``,onClose:()=>{e.clear()}})),setTimeout(()=>{g?.unmount(),g=null,h?.parentNode&&h.parentNode.removeChild(h),h=null},300))}};export{_ as default};
package/dist/utils.d.mts CHANGED
@@ -1,5 +1,8 @@
1
1
 
2
- import { HttpClient, HttpError, RequestConfig, RequestMethod, ResponseData, httpClient } from "./utils/http.mjs";
2
+ import { INSPECTOR_META_KEY, InferSchemaProps, MaterialComponentProps, SchemaHasDefaultValue, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, getSchemaDefaultProps, withInspectorMeta } from "./utils/schema/schema.mjs";
3
+ import { defineMaterial, overwriteMaterial } from "./utils/schema/material.mjs";
4
+ import { generateMaterialMap } from "./utils/schema/utils.mjs";
5
+ import "./utils/schema/index.mjs";
3
6
  import { clearMyChannelsFromStorage, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, saveHiddenChannelIdsToStorage } from "./utils/channel-storage.mjs";
4
7
  import { cn } from "./utils/cn.mjs";
5
8
  import { debounceFun, formatVideoDuration, generateDynamicSign, generateUUID, getAtUserElement, getCookie, getCurrentSecondTime, getUserId, hashPassword, isClient, isMobileDevice, numToString, parseResolution, parseTextAtUserIds, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, secondToTime, setCookie, stringToNumber, stripHtmlTags, updateUrlParams } from "./utils/common.mjs";
@@ -8,10 +11,11 @@ import { eventBus } from "./utils/event-bus.mjs";
8
11
  import { checkFollowStatus, followUser, getAppId, getCurrentUserId, unfollowUser } from "./utils/follow-service.mjs";
9
12
  import { getResUrl } from "./utils/get-res-url.mjs";
10
13
  import { disablePageScroll, enablePageScroll, normalizeClassName, pxToVw } from "./utils/helper.mjs";
14
+ import { HttpClient, HttpError, RequestConfig, RequestMethod, ResponseData, httpClient } from "./utils/http.mjs";
11
15
  import { ImageCompressionQualityRule, compressImage, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, getImageCompressionQuality, imageCompressionQualityRules } from "./utils/image-compression.mjs";
12
16
  import { components, loadComponent, rewriteComponent } from "./utils/loaders.mjs";
13
17
  import { createInputAndSelectFile, getCoverImage, getImageResolutionFromFile } from "./utils/media.mjs";
14
18
  import { PresignedUploadInfo, UploadToS3Options, UploadToS3Result, uploadToS3WithPresignedUrl } from "./utils/s3-uploader.mjs";
15
19
  import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToNumberArray } from "./utils/uint8.mjs";
16
20
  import { UploadFileResult, encryptBncBuffer, uploadFile } from "./utils/upload-file.mjs";
17
- export { eventBus as EventBus, HttpClient, HttpError, ImageCompressionQualityRule, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, UploadFileResult, UploadToS3Options, UploadToS3Result, base64ToUint8Array, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, disablePageScroll, enablePageScroll, encryptBncBuffer, followUser, formatVideoDuration, generateDynamicSign, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getImageCompressionQuality, getImageResolutionFromFile, getResUrl, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, stringToNumber, stripHtmlTags, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl };
21
+ export { eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialComponentProps, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, base64ToUint8Array, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineMaterial, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, disablePageScroll, enablePageScroll, encryptBncBuffer, followUser, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getImageCompressionQuality, getImageResolutionFromFile, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, stringToNumber, stripHtmlTags, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, withInspectorMeta };
package/dist/utils.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- import{cn as e}from"./utils/cn.mjs";import{clearMyChannelsFromStorage as t,loadHiddenChannelIdsFromStorage as n,loadMyChannelsFromStorage as r,saveHiddenChannelIdsToStorage as i}from"./utils/channel-storage.mjs";import{debounceFun as a,formatVideoDuration as o,generateDynamicSign as s,generateUUID as c,getAtUserElement as l,getCookie as u,getCurrentSecondTime as d,getUserId as f,hashPassword as p,isClient as m,isMobileDevice as h,numToString as g,parseResolution as _,parseTextAtUserIds as v,randomString as y,removeCookie as b,replaceAtUserElement as x,replaceAtUserElementHtmlStr as S,secondToTime as C,setCookie as w,stringToNumber as T,stripHtmlTags as E,updateUrlParams as D}from"./utils/common.mjs";import O from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as k,decryptImageToUint8Array as A,decryptImageUrl as j,guessImageContentTypeFromUrl as M,isEncryptedImageUrl as N}from"./utils/decrypt-image-client.mjs";import P from"./utils/event-bus.mjs";import F,{HttpClient as I,HttpError as L}from"./utils/http.mjs";import{checkFollowStatus as R,followUser as z,getAppId as B,getCurrentUserId as V,unfollowUser as H}from"./utils/follow-service.mjs";import{disablePageScroll as U,enablePageScroll as W,normalizeClassName as G,pxToVw as K}from"./utils/helper.mjs";import{compressImage as q,defaultImageCompressionMaxSizeMB as J,defaultImageCompressionQuality as Y,getImageCompressionQuality as X,imageCompressionQualityRules as Z}from"./utils/image-compression.mjs";import{components as Q,loadComponent as $,rewriteComponent as ee}from"./utils/loaders.mjs";import{createInputAndSelectFile as te,getCoverImage as ne,getImageResolutionFromFile as re}from"./utils/media.mjs";import{uploadToS3WithPresignedUrl as ie}from"./utils/s3-uploader.mjs";import{base64ToUint8Array as ae,uint8ArrayToBase64 as oe,uint8ArrayToNumberArray as se}from"./utils/uint8.mjs";import{encryptBncBuffer as ce,uploadFile as le}from"./utils/upload-file.mjs";export{P as EventBus,I as HttpClient,L as HttpError,ae as base64ToUint8Array,R as checkFollowStatus,t as clearMyChannelsFromStorage,e as cn,Q as components,q as compressImage,te as createInputAndSelectFile,a as debounceFun,k as decryptImageToArrayBuffer,A as decryptImageToUint8Array,j as decryptImageUrl,J as defaultImageCompressionMaxSizeMB,Y as defaultImageCompressionQuality,U as disablePageScroll,W as enablePageScroll,ce as encryptBncBuffer,z as followUser,o as formatVideoDuration,s as generateDynamicSign,c as generateUUID,B as getAppId,l as getAtUserElement,u as getCookie,ne as getCoverImage,d as getCurrentSecondTime,V as getCurrentUserId,X as getImageCompressionQuality,re as getImageResolutionFromFile,O as getResUrl,f as getUserId,M as guessImageContentTypeFromUrl,p as hashPassword,F as httpClient,Z as imageCompressionQualityRules,m as isClient,N as isEncryptedImageUrl,h as isMobileDevice,$ as loadComponent,n as loadHiddenChannelIdsFromStorage,r as loadMyChannelsFromStorage,G as normalizeClassName,g as numToString,_ as parseResolution,v as parseTextAtUserIds,K as pxToVw,y as randomString,b as removeCookie,x as replaceAtUserElement,S as replaceAtUserElementHtmlStr,ee as rewriteComponent,i as saveHiddenChannelIdsToStorage,C as secondToTime,w as setCookie,T as stringToNumber,E as stripHtmlTags,oe as uint8ArrayToBase64,se as uint8ArrayToNumberArray,H as unfollowUser,D as updateUrlParams,le as uploadFile,ie as uploadToS3WithPresignedUrl};
2
+ import{cn as e}from"./utils/cn.mjs";import{clearMyChannelsFromStorage as t,loadHiddenChannelIdsFromStorage as n,loadMyChannelsFromStorage as r,saveHiddenChannelIdsToStorage as i}from"./utils/channel-storage.mjs";import{debounceFun as a,formatVideoDuration as o,generateDynamicSign as s,generateUUID as c,getAtUserElement as l,getCookie as u,getCurrentSecondTime as d,getUserId as f,hashPassword as p,isClient as m,isMobileDevice as h,numToString as g,parseResolution as _,parseTextAtUserIds as v,randomString as y,removeCookie as b,replaceAtUserElement as x,replaceAtUserElementHtmlStr as S,secondToTime as C,setCookie as w,stringToNumber as T,stripHtmlTags as E,updateUrlParams as D}from"./utils/common.mjs";import O from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as k,decryptImageToUint8Array as A,decryptImageUrl as j,guessImageContentTypeFromUrl as M,isEncryptedImageUrl as N}from"./utils/decrypt-image-client.mjs";import P from"./utils/event-bus.mjs";import F,{HttpClient as I,HttpError as L}from"./utils/http.mjs";import{checkFollowStatus as R,followUser as z,getAppId as B,getCurrentUserId as V,unfollowUser as H}from"./utils/follow-service.mjs";import{disablePageScroll as U,enablePageScroll as W,normalizeClassName as G,pxToVw as K}from"./utils/helper.mjs";import{compressImage as q,defaultImageCompressionMaxSizeMB as J,defaultImageCompressionQuality as Y,getImageCompressionQuality as X,imageCompressionQualityRules as Z}from"./utils/image-compression.mjs";import{components as Q,loadComponent as $,rewriteComponent as ee}from"./utils/loaders.mjs";import{createInputAndSelectFile as te,getCoverImage as ne,getImageResolutionFromFile as re}from"./utils/media.mjs";import{uploadToS3WithPresignedUrl as ie}from"./utils/s3-uploader.mjs";import{defineMaterial as ae,overwriteMaterial as oe}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as se,defineArrayItemPropSchema as ce,defineCheckboxPropSchema as le,defineColorPropSchema as ue,defineComponentPropsSchema as de,defineNumberPropSchema as fe,defineObjectPropSchema as pe,defineSelectEnumPropSchema as me,defineSelectPropSchema as he,defineSwitchPropSchema as ge,defineTextPropSchema as _e,defineTextareaPropSchema as ve,getSchemaDefaultProps as ye,withInspectorMeta as be}from"./utils/schema/schema.mjs";import{generateMaterialMap as xe}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Se,uint8ArrayToBase64 as Ce,uint8ArrayToNumberArray as we}from"./utils/uint8.mjs";import{encryptBncBuffer as Te,uploadFile as Ee}from"./utils/upload-file.mjs";export{P as EventBus,I as HttpClient,L as HttpError,se as INSPECTOR_META_KEY,Se as base64ToUint8Array,R as checkFollowStatus,t as clearMyChannelsFromStorage,e as cn,Q as components,q as compressImage,te as createInputAndSelectFile,a as debounceFun,k as decryptImageToArrayBuffer,A as decryptImageToUint8Array,j as decryptImageUrl,J as defaultImageCompressionMaxSizeMB,Y as defaultImageCompressionQuality,ce as defineArrayItemPropSchema,le as defineCheckboxPropSchema,ue as defineColorPropSchema,de as defineComponentPropsSchema,ae as defineMaterial,fe as defineNumberPropSchema,pe as defineObjectPropSchema,me as defineSelectEnumPropSchema,he as defineSelectPropSchema,ge as defineSwitchPropSchema,_e as defineTextPropSchema,ve as defineTextareaPropSchema,U as disablePageScroll,W as enablePageScroll,Te as encryptBncBuffer,z as followUser,o as formatVideoDuration,s as generateDynamicSign,xe as generateMaterialMap,c as generateUUID,B as getAppId,l as getAtUserElement,u as getCookie,ne as getCoverImage,d as getCurrentSecondTime,V as getCurrentUserId,X as getImageCompressionQuality,re as getImageResolutionFromFile,O as getResUrl,ye as getSchemaDefaultProps,f as getUserId,M as guessImageContentTypeFromUrl,p as hashPassword,F as httpClient,Z as imageCompressionQualityRules,m as isClient,N as isEncryptedImageUrl,h as isMobileDevice,$ as loadComponent,n as loadHiddenChannelIdsFromStorage,r as loadMyChannelsFromStorage,G as normalizeClassName,g as numToString,oe as overwriteMaterial,_ as parseResolution,v as parseTextAtUserIds,K as pxToVw,y as randomString,b as removeCookie,x as replaceAtUserElement,S as replaceAtUserElementHtmlStr,ee as rewriteComponent,i as saveHiddenChannelIdsToStorage,C as secondToTime,w as setCookie,T as stringToNumber,E as stripHtmlTags,Ce as uint8ArrayToBase64,we as uint8ArrayToNumberArray,H as unfollowUser,D as updateUrlParams,Ee as uploadFile,ie as uploadToS3WithPresignedUrl,be as withInspectorMeta};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@funhub/platform",
3
3
  "type": "module",
4
- "version": "0.1.13",
4
+ "version": "0.1.15",
5
5
  "private": false,
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -19,6 +19,10 @@
19
19
  "types": "./dist/components/biz/index.d.ts",
20
20
  "import": "./dist/biz.mjs"
21
21
  },
22
+ "./materials": {
23
+ "types": "./dist/materials.d.mts",
24
+ "import": "./dist/materials.mjs"
25
+ },
22
26
  "./components/pages": {
23
27
  "types": "./dist/components/pages/index.d.ts",
24
28
  "import": "./dist/pages.mjs"
@@ -1,2 +0,0 @@
1
-
2
- import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 48 48`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_530_6060)`},e.createElement(`circle`,{cx:24,cy:24,r:24,fill:`var(--color-bg1)`}),e.createElement(`path`,{d:`M24.8942 14.7401C24.521 14.0145 23.4827 14.0172 23.1133 14.7448L20.3314 20.2239L14.0626 21.101C13.2319 21.2172 12.9048 22.2431 13.515 22.8188L18.0353 27.083L16.9566 33.0029C16.8079 33.819 17.6602 34.4509 18.3978 34.0714L23.9992 31.1901L29.6052 34.0732C30.3423 34.4523 31.1941 33.8216 31.0465 33.0059L29.9752 27.083L34.4894 22.8171C35.0986 22.2414 34.7718 21.2168 33.9419 21.1L27.7148 20.2239L24.8942 14.7401Z`,fill:`#FFD320`})),e.createElement(`defs`,null,e.createElement(`clipPath`,{id:`clip0_530_6060`},e.createElement(`rect`,{width:48,height:48,fill:`var(--color-bg1)`}))));export{t as default};
@@ -1,2 +0,0 @@
1
-
2
- import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 48 48`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_530_6058)`},e.createElement(`circle`,{cx:24,cy:24,r:24,fill:`var(--color-bg1)`}),e.createElement(`path`,{d:`M22.4443 14.4053C23.0908 13.1321 24.9084 13.1277 25.5615 14.3975L28.2041 19.5352L34.0469 20.3575C35.4989 20.5621 36.0706 22.3551 35.0049 23.3623L30.7852 27.3487L31.7842 32.8721C32.0424 34.2995 30.5517 35.4037 29.2617 34.7403L23.999 32.0332L18.7412 34.7383C17.4503 35.4023 15.9585 34.2963 16.2188 32.8682L17.2246 27.3496L13 23.3643C11.9324 22.3569 12.5052 20.5618 13.959 20.3584L19.8399 19.5352L22.4443 14.4053ZM24.2275 15.083C24.1343 14.9018 23.8747 14.9025 23.7822 15.084L21 20.5635C20.889 20.7821 20.6783 20.9328 20.4356 20.9668L14.167 21.8438C13.9593 21.8728 13.8768 22.1296 14.0293 22.2735L18.5498 26.5371C18.7345 26.7114 18.819 26.968 18.7734 27.2178L17.6943 33.1377C17.6575 33.3416 17.8704 33.4991 18.0547 33.4043L23.6563 30.5235L23.7383 30.4864C23.9343 30.4137 24.1534 30.4267 24.3418 30.5235L29.9482 33.4063C30.1324 33.5009 30.3453 33.3435 30.3086 33.1397L29.2373 27.2168C29.1922 26.9676 29.2759 26.7121 29.46 26.5381L33.9746 22.2715C34.1263 22.1275 34.0442 21.872 33.8369 21.8428L27.6104 20.9668C27.3692 20.9329 27.1593 20.7839 27.0479 20.5674L24.2275 15.083Z`,fill:`var(--color-text3)`})),e.createElement(`defs`,null,e.createElement(`clipPath`,{id:`clip0_530_6058`},e.createElement(`rect`,{width:48,height:48,fill:`var(--color-bg1)`}))));export{t as default};
@@ -1,2 +0,0 @@
1
-
2
- import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 48 48`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`circle`,{cx:24,cy:24,r:18,fill:`white`}),e.createElement(`path`,{d:`M24 0C37.2655 0 48 10.7345 48 24C48 37.2655 37.2655 48 24 48C10.7345 48 0 37.2655 0 24C0 10.7345 10.7345 0 24 0ZM24 12C18.6086 12.0003 16.3442 16.5966 16.4873 22.0762C15.6366 24.1996 15.0874 25.4872 14.6064 27.0352C13.586 30.319 13.9163 31.6775 14.168 31.708C14.7054 31.7727 16.2542 29.2627 16.2705 29.2363C16.2706 30.7057 17.0273 32.6232 18.6641 34.0078C17.8735 34.2516 16.0936 34.9063 16.5176 35.6211C16.8609 36.1996 22.4016 35.9898 24.001 35.8096C25.6006 35.9897 31.1392 36.1994 31.4834 35.6211C31.9071 34.9061 30.1254 34.2502 29.3359 34.0068C30.9725 32.6223 31.7294 30.7056 31.7295 29.2363C31.7455 29.2623 33.2944 31.7725 33.832 31.708C34.0837 31.6775 34.4147 30.3188 33.3945 27.0352C32.9149 25.4917 32.362 24.196 31.5127 22.0762C31.6482 16.5061 29.3313 12.0003 24 12Z`,fill:`url(#paint0_linear_528_5954)`}),e.createElement(`defs`,null,e.createElement(`linearGradient`,{id:`paint0_linear_528_5954`,x1:24,y1:0,x2:24,y2:48,gradientUnits:`userSpaceOnUse`},e.createElement(`stop`,{stopColor:`#1F96F1`}),e.createElement(`stop`,{offset:1,stopColor:`#076DBB`}))));export{t as default};
@@ -1,2 +0,0 @@
1
-
2
- import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 48 48`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_528_5957)`},e.createElement(`circle`,{cx:24,cy:24,r:18,fill:`white`}),e.createElement(`path`,{d:`M15 18.1199C15 18.9599 15.72 19.6799 16.56 19.6799C17.4 19.6799 18.12 18.9599 18.12 18.1199C18.12 17.2799 17.4 16.5599 16.56 16.5599C15.72 16.4399 15 17.1599 15 18.1199ZM21.96 17.9999C21.96 18.8399 22.68 19.5599 23.52 19.5599C24.36 19.5599 25.08 18.8399 25.08 17.9999C25.08 17.1599 24.36 16.4399 23.52 16.4399C22.68 16.4399 21.96 17.1599 21.96 17.9999ZM25.92 25.0799C25.92 25.6799 26.4 26.1599 27 26.1599C27.6 26.1599 28.08 25.6799 28.08 25.0799C28.08 24.4799 27.6 23.9999 27 23.9999C26.4 23.9999 25.92 24.4799 25.92 25.0799ZM31.44 25.0799C31.44 25.6799 31.92 26.1599 32.52 26.1599C33.12 26.1599 33.6 25.6799 33.6 25.0799C33.6 24.4799 33.12 23.9999 32.52 23.9999C31.92 23.9999 31.44 24.4799 31.44 25.0799Z`,fill:`#09BB07`}),e.createElement(`path`,{d:`M34.68 33.12L35.4 35.64L32.64 34.08C31.68 34.32 30.6 34.56 29.64 34.56C24.84 34.56 21.12 31.32 21.12 27.24C21.12 23.28 24.84 19.92 29.64 19.92C34.2 19.92 38.16 23.16 38.16 27.24C38.16 29.52 36.72 31.56 34.68 33.12ZM19.92 29.52C18.6 29.52 17.64 29.28 16.44 29.04L12.96 30.84L13.92 27.84C11.4 26.04 9.96 23.88 9.96 21C9.96 16.2 14.52 12.48 20.04 12.48C24.96 12.48 29.28 15.48 30.24 19.56H29.28C24.48 19.56 20.76 23.16 20.76 27.6C20.76 28.32 20.88 29.04 21.12 29.64C20.52 29.52 20.16 29.52 19.92 29.52ZM24 0C10.68 0 0 10.68 0 24C0 37.32 10.68 48 24 48C37.32 48 48 37.32 48 24C48 10.68 37.32 0 24 0Z`,fill:`url(#paint0_linear_528_5957)`})),e.createElement(`defs`,null,e.createElement(`linearGradient`,{id:`paint0_linear_528_5957`,x1:24,y1:0,x2:24,y2:48,gradientUnits:`userSpaceOnUse`},e.createElement(`stop`,{stopColor:`#07BB31`}),e.createElement(`stop`,{offset:1,stopColor:`#07BB61`})),e.createElement(`clipPath`,{id:`clip0_528_5957`},e.createElement(`rect`,{width:48,height:48,fill:`white`}))));export{t as default};
@@ -1,2 +0,0 @@
1
-
2
- import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 48 48`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_528_5953)`},e.createElement(`g`,{clipPath:`url(#clip1_528_5953)`},e.createElement(`circle`,{cx:24,cy:24,r:18,fill:`white`}),e.createElement(`path`,{d:`M24 0C10.7345 0 0 10.7345 0 24C0 37.2655 10.7345 48 24 48C37.2655 48 48 37.2655 48 24C48 10.7345 37.2655 0 24 0ZM28.7127 13.1345C29.6727 13.5273 30.5891 14.0945 31.4182 14.7491C31.7673 15.0109 32.1164 15.3164 32.4218 15.6218C33.1636 16.3636 33.7745 17.1927 34.2982 18.0655C34.4291 18.2836 34.56 18.5018 34.6473 18.72L28.7127 24.6109C28.7564 24.2618 28.7127 13.1345 28.7127 13.1345ZM22.6909 12.3055C23.1273 12.2618 23.5636 12.2182 24.0436 12.2182C25.0909 12.2182 26.1382 12.3491 27.0982 12.6109C27.36 12.6982 27.5782 12.7418 27.84 12.8291V21.2073C27.5782 20.9018 19.6364 13.0909 19.6364 13.0909C20.5964 12.6982 21.6 12.4364 22.6909 12.3055ZM14.7491 16.6255C15.0109 16.2764 15.3164 15.9709 15.6218 15.6218C16.3636 14.88 17.1927 14.2691 18.0655 13.7455C18.2836 13.6145 18.5018 13.4836 18.72 13.3964L24.6545 19.2873C24.3055 19.2436 13.1345 19.2873 13.1345 19.2873C13.5709 18.3709 14.0945 17.4545 14.7491 16.6255ZM12.3055 25.3091C12.2618 24.8727 12.2182 24.4364 12.2182 24C12.2182 22.9527 12.3491 21.9491 12.6109 20.9455C12.6982 20.6836 12.7418 20.4655 12.8291 20.2036H21.2073C20.9455 20.4218 13.0909 28.3636 13.0909 28.3636C12.6982 27.4036 12.4364 26.4 12.3055 25.3091ZM16.5818 33.2073C16.2327 32.9455 15.8836 32.64 15.5782 32.3345C14.8364 31.5927 14.2255 30.7636 13.7018 29.8909C13.5709 29.6727 13.44 29.4545 13.3527 29.2364L19.2873 23.3455C19.2436 23.6945 19.2873 34.8655 19.2873 34.8218C18.3273 34.3855 17.4545 33.8618 16.5818 33.2073ZM25.3091 35.6945C24.8727 35.7382 24.4364 35.7818 24 35.7818C22.9527 35.7818 21.9055 35.6509 20.9455 35.3891C20.6836 35.3018 20.4655 35.2582 20.2036 35.1709V26.7927C20.4218 27.0982 28.4073 34.9091 28.4073 34.9091C27.4036 35.3018 26.4 35.5636 25.3091 35.6945ZM33.1636 31.4182C32.9018 31.7673 32.5964 32.1164 32.2909 32.4218C31.5491 33.1636 30.72 33.7745 29.8473 34.2982C29.6291 34.4291 29.4109 34.56 29.1927 34.6473L23.2582 28.7127C23.6073 28.7564 34.7782 28.7127 34.7782 28.7127C34.3855 29.6727 33.8618 30.5455 33.1636 31.4182ZM35.3891 27.0545C35.3018 27.3164 35.2582 27.5345 35.1709 27.7964H26.7491C27.0545 27.5782 34.9091 19.6364 34.9091 19.6364C35.3018 20.5964 35.5636 21.6 35.6945 22.6909C35.7382 23.1273 35.7818 23.5636 35.7818 24C35.7818 25.0909 35.6509 26.0945 35.3891 27.0545Z`,fill:`url(#paint0_linear_528_5953)`}))),e.createElement(`defs`,null,e.createElement(`linearGradient`,{id:`paint0_linear_528_5953`,x1:24,y1:0,x2:24,y2:48,gradientUnits:`userSpaceOnUse`},e.createElement(`stop`,{stopColor:`#59B650`}),e.createElement(`stop`,{offset:1,stopColor:`#50B674`})),e.createElement(`clipPath`,{id:`clip0_528_5953`},e.createElement(`rect`,{width:48,height:48,fill:`white`})),e.createElement(`clipPath`,{id:`clip1_528_5953`},e.createElement(`rect`,{width:48,height:48,fill:`white`}))));export{t as default};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{Box as e}from"../../../ui/box.mjs";import{Text as t}from"../../../ui/text.mjs";import{MiniThreeCard as n}from"../../../common/cards/mini-three-card.mjs";import{useCardDecoration as r}from"../../../../hooks/use-card-decoration.mjs";import i from"../../../../assets/icons/detail/video_flag.mjs";import{useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";function l({initRecommendList:l}){let p=c(`components.biz.business.detail`),{getSuperscriptText:m,getSuperscriptBackground:h,getSuperscript:g,getVerticalHoCoverImageUrl:_,getTitleText:v}=r(),y=a(()=>l||[],[l]);return!y||y.length===0?null:s(e,{className:`w-full mt-[16px]`,children:[o(t,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:p(`detailGuessLike.title`)}),o(e,{className:`w-full flex flex-wrap px-[12px]`,children:y.map((t,r)=>o(n,{url:_(t),text:v(t),topRightChild:m(g(t))?o(e,{className:`px-[6px] h-[20px] leading-[20px] text-[#fff] text-[12px] rounded-tr-[8px] rounded-bl-[8px]`,style:{background:h(g(t))},children:m(g(t))}):o(e,{}),bottomLeftChild:s(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] rounded-[4px] bg-[#333] ml-[4px] flex items-center`,children:[o(i,{className:`w-[16px] h-[auto] text-[#fff] mr-[4px]`}),u(t.play_count)]}),bottomRightChild:o(`div`,{className:`text-[#F59E0B] text-[18px] font-bold leading-[20px] pr-[8px]`,children:d(t.score)}),linkPath:f(t)},`guess-like-${r}`))})]})}function u(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function d(e){let t=Number(e||0);return Number.isFinite(t)?(t>10?t/10:t).toFixed(1):`0`}function f(e){if(e.content_type===0){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}return`/post/${e.id}`}export{l as DetailGuessLike};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{gCommunityGetComments as e}from"../../../../service/generated/client.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useKeepAliveState as r}from"../../../common/keep-scroll-position/index.mjs";import i from"../../../common/at-element/index.mjs";import a from"../../../../assets/icons/detail/give_like.mjs";import o from"../../../../assets/icons/detail/give_like_sel.mjs";import{mapApiCommentToComment as s}from"../../../../types/safe-comment.mjs";import c from"../../../ui/legacy/avatar.mjs";import{memo as l,useCallback as u,useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import{useParams as _}from"next/navigation";const v=l(({information:l,onNavigateToDiscussion:v,onTotalChange:b})=>{let x=g(`components.biz.business.detail`),S=_().level,C=Array.isArray(S)?S:typeof S==`string`?[S]:[],w=C.findIndex(e=>e===`episode`),T=w>=0?C[w+1]:C[2],E=Math.max(1,Number(T)||1),D=Math.max(0,E-1),O=l.links[D]?.id||``,[k,A]=r(`info-detail-popular-comments-${O||l.id}`,[]),[j,M]=p(!1);function N(e){return Array.isArray(e)?e.map(e=>({user_id:e.user_id||``,name:e.nickname||e.username||``,avatar:e.avatar_url||``,birthday:``,signature:e.signature||``})):[]}function P(e){if(!e)return[];let t=new Map,n=/<span[^>]*class=['"]mention['"][^>]*data-id=['"]([^'"]+)['"][^>]*>@([^<]*)<\/span>/g,r;for(;(r=n.exec(e))!==null;){let e=r[1]?String(r[1]):``,n=(r[2]?String(r[2]):``).replace(/^@/,``)||e;!e||t.has(e)||t.set(e,{user_id:e,name:n,avatar:``,birthday:``,signature:``})}if(t.size>0)return Array.from(t.values());let i=/<@_user>(\w+)<\/@_user>/g;for(;(r=i.exec(e))!==null;){let e=r[1]?String(r[1]):``;!e||t.has(e)||t.set(e,{user_id:e,name:e,avatar:``,birthday:``,signature:``})}return Array.from(t.values())}let F=u(async()=>{if(O&&!(j&&k.length>0)){M(!0);try{A([]);let t=await e({content_id:l.id,page:1,page_size:3,sort_by:`hot`}),n=t.data?.data?.total??0;b?.(n),A((t.data?.data?.comments??[]).map(e=>{let t=e.is_liked?`1`:e.is_dislike?`2`:`0`,n=N(e.mentioned_users),r=n.length>0?n:P(e.content||``),i=String(e.comment_id??e.id??``),a=typeof e.like_count==`number`?e.like_count:0,o=e.is_liked&&a===0?1:a;return s({id:i,reply_cnt:e.reply_count||0,like_cnt:o,dislike_cnt:0,created_at:e.create_time?new Date(e.create_time).getTime():Date.now(),text:e.content||``,type:`4`,like_flag:t,user_id:e.user_id||``,user_name:e.user?.nickname||e.user?.username||``,avatar:e.user?.avatar_url||``,files:[],at_users:r,nine_grid_content_info:[],is_follow:!1,cover_image:``})}).slice(0,3))}catch(e){console.error(`获取热门评论失败:`,e),A([])}finally{M(!1)}}},[O,j,k.length,A,l.id,b]),I=f(()=>j&&k.length===0,[j,k.length]),L=f(()=>!j&&k.length===0,[j,k.length]);return d(()=>{F()},[]),L?h(t,{className:`w-full mt-[16px]`,children:[m(n,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:x(`detailPopularComments.popularComments`)}),m(t,{className:`w-full px-[12px] overflow-x-auto flex gap-x-[8px]`,children:m(t,{className:`w-full h-[62px] leading-[62px] text-center text-text2 text-[14px]`,children:x(`detailPopularComments.emptyPrompt`)})})]}):h(t,{className:`w-full mt-[16px]`,children:[m(n,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:x(`detailPopularComments.popularComments`)}),h(t,{className:`w-full px-[12px] overflow-x-auto flex gap-x-[8px]`,children:[I&&Array.from({length:3}).map((e,n)=>m(t,{className:`w-[293px] h-[62px] shrink-0 bg-bg2 rounded-[8px]`},`popular-comment-loading-${n}`)),k.map((e,r)=>h(t,{className:`w-[293px] h-[62px] px-[12px] shrink-0 bg-bg2 rounded-[8px] border border-line1 flex justify-between relative`,children:[m(t,{className:`w-full h-full absolute left-0 top-0 z-[2]`,onClick:v}),h(t,{className:`h-full flex-1 shrink-0 flex flex-col justify-center`,children:[h(t,{className:`flex items-center`,children:[m(c,{src:e.avatar,alt:e.user_name,width:16,height:16}),m(n,{className:`ml-[4px] text-text2 text-[14px] leading-[16px] font-bold line-clamp-1 max-w-[160px]`,children:e.user_name})]}),m(t,{className:`text-text1 mt-[6px] text-[12px] leading-[16px] h-[16px] line-clamp-1 max-w-[200px]`,children:e.text?m(i,{text:e.text,atUsers:e.at_users}):x(`detailPopularComments.mediaPlaceholder`)})]}),h(`div`,{className:`shrink-0 pt-[12px] flex items-center h-[fit-content]`,children:[m(n,{className:`text-text3 text-[14px] leading-[16px] mr-[3px]`,children:e.like_cnt===`0`?x(`detailPopularComments.like`):y(e.like_cnt)}),e.like_flag===`1`?m(o,{className:`w-[14px] h-[14px]`}):m(a,{className:`w-[14px] h-[14px] text-text3`})]})]},`popular-comment-${r}`))]})]})});function y(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}export{v as DetailPopularComments};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{memo as e}from"react";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{useTranslations as r}from"next-intl";const i=e(({active:e,commentCount:i,onChange:a})=>{let o=r(`components.biz.business.detail`);return n(`div`,{className:`flex h-12 w-full items-center border-b border-line1 bg-bg1 px-1`,children:[t(`button`,{type:`button`,className:`flex h-full items-center px-2.5 text-text2 transition-all duration-150 ${e===`video`?`scale-125 text-theme5 font-bold`:``}`,onClick:()=>a(`video`),children:o(`detailTabs.video`)}),n(`button`,{type:`button`,className:`flex h-full items-center px-2.5 text-text2 transition-all duration-150 ${e===`discussion`?`scale-125 text-theme5 font-bold`:``}`,onClick:()=>a(`discussion`),children:[o(`detailTabs.discussion`),t(`span`,{className:`pl-1 text-xs leading-5 mt-1`,children:i||``})]})]})});export{i as DetailTabs};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{Button as e}from"../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pInteractionBatchDeleteCollects as a}from"../../../../../../service/generated/client.mjs";import{Box as o}from"../../../../../ui/box.mjs";import{Checkbox as ee}from"../../../../../ui/checkbox.mjs";import{Tabs as s,TabsList as c,TabsTrigger as l}from"../../../../../ui/tabs.mjs";import{Text as te}from"../../../../../ui/text.mjs";import{useMutation as ne,usePaginated as u,useUpdateRequest as re}from"../../../../../../hooks/query/use-query.mjs";import{AddIcon as ie}from"../../../../../common/icons/add.mjs";import{CollectionList as ae}from"../../../../../common/list/collection-list/collection-list.mjs";import{PostList as oe}from"../../../../../common/list/post-list/post-list.mjs";import{VideoList as se}from"../../../../../common/list/video-list/video-list.mjs";import{useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{toast as g}from"sonner";import{useTranslations as ce}from"next-intl";import _ from"dayjs";import le from"next/link";import{parseAsString as v,useQueryState as y}from"nuqs";const b={video:1,post:2};function ue(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??w).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function x(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function de(e,t){let n=t[e.content_id||``]?.create_time,r=x(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:_(n).toDate().getTime()}}function fe(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:e.img_x||``,duration:0,authorName:e.up_user||e.source_username||``,viewCount:0,publishTime:_(n).toDate().getTime()}}function S(e){let t=x(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function C(e){let t=(e.contents??[]).slice(0,3).map(S);return{id:e.collection_id||``,title:e.title||``,contentCount:e.content_count??t.length,contents:t}}const w=[],pe=[`video`,`post`,`collection`],me=[`created`,`subscribed`];function T({userId:_,showCreateAction:x=!1,queryKeyPrefix:S,isMine:T=!1}){let E=ce(`components.pages.profile.components.tabs`),D=S??[],[O,k]=y(`collectTab`,v.withDefault(`video`)),[A,j]=y(`collectCollectionTab`,v.withDefault(`created`)),M=f(()=>pe.includes(O)?O:`video`,[O]),N=f(()=>me.includes(A)?A:`created`,[A]),[P,F]=p(!1),[I,L]=p(()=>new Set),{userId:he,userInfo:R}=t(),z=_||he||R?.userId||``,ge=re();async function B(e,t){if(!z)return{data:{list:[],total:0}};let n=await i({user_id:z,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},a=t===b.video?(n.data?.video_infos??[]).map(e=>fe(e,r)):(n.data?.post_infos??[]).map(e=>de(e,r));return{data:{list:a,total:n.data?.total??a.length}}}let V=u({key:[...D,`user-collect-video`,z],initialPageParam:1,async queryFn(e){return B(e,b.video)},options:{staleTime:0},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=u({key:[...D,`user-collect-post`,z],initialPageParam:1,options:{staleTime:0},async queryFn(e){return B(e,b.post)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function _e(e){if(!z)return{data:{list:[],total:0}};let t=await r({page:e,user_id:_,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(C),total:t.data?.data?.total??n.length}}}async function ve(e){if(!z)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:_,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(C),total:t?.total??r.length}}}let U=u({key:[...D,`user-collection-created`,z],initialPageParam:1,options:{staleTime:0},async queryFn(e){return _e(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),W=u({key:[...D,`user-collection-subscribed`,z],initialPageParam:1,options:{staleTime:0},async queryFn(e){return ve(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),G=f(()=>V.data?.pages.flatMap(e=>e.data?.list??w)??w,[V.data]),K=f(()=>H.data?.pages.flatMap(e=>e.data?.list??w)??w,[H.data]),ye=f(()=>U.data?.pages.flatMap(e=>e.data?.list??w)??w,[U.data]),be=f(()=>W.data?.pages.flatMap(e=>e.data?.list??w)??w,[W.data]),xe=M===`video`?G:M===`post`?K:w,q=new Set(xe.map(e=>e.id)),J=M===`video`?V:H,Y=N===`created`?U:W,Se=N===`created`?ye:be,X=M===`video`,Ce=[...D,`user-collect-video`,z],we=[...D,`user-collect-post`,z],{mutateAsync:Te,isPending:Z}=ne(async e=>await a({app_id:0,user_id:z,folder_id:``,content_type:X?1:2,content_ids:e})),Ee=()=>{F(!P),L(new Set)};d(()=>{L(new Set),M===`collection`&&F(!1)},[M]),d(()=>{O!==M&&k(M)},[M,O,k]),d(()=>{A!==N&&j(N)},[N,A,j]);let Q=e=>{L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},De=()=>{I.size===q.size&&q.size>0?L(new Set):L(new Set(q))},Oe=async()=>{if(!(I.size===0||Z)){if(!z){g.error(E(`collectTab.pleaseLogin`));return}try{let e=Array.from(I),t=await Te(e);if(t.code===0){g.success(E(`collectTab.uncollectedSuccess`));let t=new Set(e);ge(X?Ce:we,e=>ue(e,t)),L(new Set),F(!1)}else g.error(t.message||E(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),g.error(E(`collectTab.operationFailed`))}}},$=async()=>{if(M===`collection`){await Y.fetchNextPage();return}await J.fetchNextPage()};return h(o,{children:[h(o,{className:`flex justify-between items-center`,children:[m(s,{value:M,onValueChange:e=>{k(e)},children:h(c,{variant:`tag`,children:[m(l,{value:`video`,className:`text-sm`,children:E(`collectTab.video`)}),m(l,{value:`post`,className:`text-sm`,children:E(`collectTab.posts`)}),m(l,{value:`collection`,className:`text-sm`,children:E(`collectTab.collections`)})]})}),M===`collection`?h(o,{className:`flex items-center gap-2 h-6.25`,children:[m(s,{value:N,onValueChange:e=>{j(e)},children:h(c,{variant:`segment`,children:[m(l,{value:`created`,className:`text-sm`,children:E(`collectTab.created`)}),m(l,{value:`subscribed`,className:`text-sm`,children:E(`collectTab.subscribed`)})]})}),x&&m(le,{href:`/collection/create`,className:`flex items-center justify-center rounded-full bg-bg2 p-1.5`,children:m(ie,{})})]}):T&&m(`button`,{onClick:Ee,className:`text-sm text-text3 h-6.25`,children:E(P?`collectTab.cancel`:`collectTab.edit`)})]}),m(o,{className:`pt-2`,children:M===`video`?m(se,{list:G,showVideoProgress:!1,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,isEditMode:P,selectedIds:I,onToggleSelection:Q}):M===`post`?m(oe,{list:K,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,isEditMode:P,selectedIds:I,onToggleSelection:Q}):m(ae,{list:Se,loading:Y.isFetching,hasMore:Y.hasNextPage??!1,loadMore:$,emptyText:E(N===`created`?`collectTab.noCreatedCollections`:`collectTab.noSubscribedCollections`)})}),P&&M!==`collection`&&h(o,{style:{bottom:`calc(56px + env(safe-area-inset-bottom, 0px))`},className:`flex fixed z-10 left-0 w-full items-center justify-between px-3 py-2 bg-bg1 `,children:[h(o,{className:`flex items-center gap-2`,children:[m(ee,{checked:I.size===q.size&&q.size>0,onCheckedChange:De}),m(te,{className:`text-sm text-text1`,children:E(`collectTab.selectAll`)})]}),m(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:I.size>0?`default`:`outline`,disabled:I.size===0||Z,onClick:Oe,children:E(Z?`collectTab.processing`:`collectTab.delete`)})]})]})}export{T as CollectTab};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{Button as e}from"../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as n}from"../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../ui/checkbox.mjs";import{Tabs as a,TabsList as o,TabsTrigger as s}from"../../../../../ui/tabs.mjs";import{Text as c}from"../../../../../ui/text.mjs";import{useMutation as l,usePaginated as u,useUpdateRequest as d}from"../../../../../../hooks/query/use-query.mjs";import{PostList as ee}from"../../../../../common/list/post-list/post-list.mjs";import{VideoList as f}from"../../../../../common/list/video-list/video-list.mjs";import{useEffect as p,useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function S(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function C(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t;return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:i.cover_image_thumbnail||i.cover_image||i.cover_horizontal_image_thumbnail||``,duration:i.video_duration,progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:a.browse_cnt,publishTime:o,type:s?.type}}function w(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}const T=[`video`,`post`];function E({getVideoData:E,getPostData:D,queryKeyPrefix:te}){let O=y(`components.pages.profile.components.tabs`),k=te??[],[A,j]=x(`historyTab`,b.withDefault(`video`)),M=m(()=>T.includes(A)?A:`video`,[A]),[N,P]=h(!1),[F,I]=h(()=>new Set),L=t(e=>e.userId),R=d(),z=[...k,`user-history-video`],B=[...k,`user-history-post`],V=u({key:z,initialPageParam:1,async queryFn(e){return E?E(e):{data:{list:[]}}},options:{staleTime:0},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),H=u({key:B,initialPageParam:1,async queryFn(e){return D?D(e):{data:{list:[]}}},options:{staleTime:0},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),U=M===`video`?V:H,W=V.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],G=H.data?.pages.flatMap(e=>(e.data?.list??[]).map(S))??[],K=M===`video`?W:G,q=new Set(K.map(e=>e.id)),J=M===`video`,{mutateAsync:Y,isPending:X}=l(async e=>await n({app_id:0,user_id:L,content_type:e.contentType,content_ids:e.contentIds})),Z=()=>{P(!N),I(new Set)};p(()=>{I(new Set)},[M]),p(()=>{A!==M&&j(M)},[M,A,j]);let Q=e=>{I(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ne=()=>{F.size===q.size&&q.size>0?I(new Set):I(new Set(q))},re=async()=>{if(!(F.size===0||X)){if(!L){v.error(O(`historyTab.pleaseLogin`));return}try{let e=Array.from(F),t=await Y({contentIds:e,contentType:J?1:2});if(t.code===0){v.success(O(`historyTab.historyDeletedSuccess`));let t=new Set(e);R(J?z:B,e=>w(e,t,e=>e.id)),I(new Set),P(!1)}else v.error(t.message||O(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),v.error(O(`historyTab.operationFailed`))}}},$=async()=>{await U.fetchNextPage()};return _(r,{children:[_(r,{className:`flex justify-between items-center`,children:[g(a,{value:M,onValueChange:e=>{j(e)},children:_(o,{variant:`tag`,children:[g(s,{value:`video`,className:`text-sm`,children:O(`historyTab.video`)}),g(s,{value:`post`,className:`text-sm`,children:O(`historyTab.posts`)})]})}),g(`button`,{onClick:Z,className:`text-sm text-text3`,children:O(N?`historyTab.cancel`:`historyTab.edit`)})]}),g(r,{className:`pt-2`,children:M===`video`?g(f,{showVideoProgress:!0,list:W,loading:U.isFetching,hasMore:U.hasNextPage??!1,loadMore:$,isEditMode:N,selectedIds:F,onToggleSelection:Q}):g(ee,{list:G,loading:U.isFetching,hasMore:U.hasNextPage??!1,loadMore:$,isEditMode:N,selectedIds:F,onToggleSelection:Q})}),N&&_(r,{style:{bottom:`calc(56px + env(safe-area-inset-bottom, 0px))`},className:`flex fixed z-10 left-0 w-full items-center justify-between px-3 py-2 bg-bg1 `,children:[_(r,{className:`flex items-center gap-2`,children:[g(i,{checked:F.size===q.size&&q.size>0,onCheckedChange:ne}),g(c,{className:`text-sm text-text1`,children:O(`historyTab.selectAll`)})]}),g(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:F.size>0?`default`:`outline`,disabled:F.size===0||X,onClick:re,children:O(X?`historyTab.processing`:`historyTab.delete`)})]})]})}export{E as HistoryTab};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{Button as e}from"../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as n}from"../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../ui/checkbox.mjs";import{Tabs as a,TabsList as o,TabsTrigger as s}from"../../../../../ui/tabs.mjs";import{Text as c}from"../../../../../ui/text.mjs";import{useMutation as ee,usePaginated as l,useUpdateRequest as u}from"../../../../../../hooks/query/use-query.mjs";import{PostList as d}from"../../../../../common/list/post-list/post-list.mjs";import{VideoList as f}from"../../../../../common/list/video-list/video-list.mjs";import{useEffect as p,useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function te(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function S(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function C(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t;return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:r?.cover_image_thumbnail||r?.cover_image||r?.cover_horizontal_image_thumbnail||``,duration:r?.video_duration??0,progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:i?.browse_cnt??0,publishTime:a??0,type:o?.type}}const w=[`video`,`post`];function T({getVideoData:T,getPostData:E,queryKeyPrefix:D,isMine:O=!1}){let k=y(`components.pages.profile.components.tabs`),A=D??[],[j,M]=x(`likeTab`,b.withDefault(`video`)),N=m(()=>w.includes(j)?j:`video`,[j]),[P,F]=h(!1),[I,L]=h(()=>new Set),R=t(e=>e.userId),z=u(),B=[...A,`user-like-video`],V=[...A,`user-like-post`],H=l({key:B,initialPageParam:1,async queryFn(e){return T?T(e):{data:{list:[]}}},options:{staleTime:0},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),U=l({key:V,options:{staleTime:0},initialPageParam:1,async queryFn(e){return E?E(e):{data:{list:[]}}},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=N===`video`?H:U,G=H.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(S))??[],q=N===`video`?G:K,J=new Set(q.map(e=>e.id)),Y=N===`video`,{mutateAsync:X,isPending:Z}=ee(async e=>await n({app_id:0,user_id:R,action:`cancel_like`,content_ids:e,content_type:Y?1:2})),ne=()=>{F(!P),L(new Set)};p(()=>{L(new Set)},[N]),p(()=>{j!==N&&M(N)},[N,j,M]);let Q=e=>{L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},re=()=>{I.size===J.size&&J.size>0?L(new Set):L(new Set(J))},ie=async()=>{if(!(I.size===0||Z)){if(!R){v.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(I),t=await X(e);if(t.code===0){v.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);z(Y?B:V,e=>te(e,t,e=>e.id)),L(new Set),F(!1)}else v.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),v.error(k(`likeTab.operationFailed`))}}},$=async()=>{await W.fetchNextPage()};return _(r,{children:[_(r,{className:`flex justify-between items-center`,children:[g(a,{value:N,onValueChange:e=>{M(e)},children:_(o,{variant:`tag`,children:[g(s,{value:`video`,className:`text-sm`,children:k(`likeTab.video`)}),g(s,{value:`post`,className:`text-sm`,children:k(`likeTab.posts`)})]})}),O&&g(`button`,{onClick:ne,className:`text-sm text-text3`,children:k(P?`likeTab.cancel`:`likeTab.edit`)})]}),g(r,{className:`pt-2`,children:N===`video`?g(f,{list:G,loading:W.isFetching,hasMore:W.hasNextPage??!1,loadMore:$,isEditMode:P,selectedIds:I,showVideoProgress:!1,onToggleSelection:Q}):g(d,{list:K,loading:W.isFetching,hasMore:W.hasNextPage??!1,loadMore:$,isEditMode:P,selectedIds:I,onToggleSelection:Q})}),P&&_(r,{style:{bottom:`calc(56px + env(safe-area-inset-bottom, 0px))`},className:`flex fixed z-10 left-0 w-full items-center justify-between px-3 py-2 bg-bg1 `,children:[_(r,{className:`flex items-center gap-2`,children:[g(i,{checked:I.size===J.size&&J.size>0,onCheckedChange:re}),g(c,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),g(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:I.size>0?`default`:`outline`,disabled:I.size===0||Z,onClick:ie,children:k(Z?`likeTab.processing`:`likeTab.delete`)})]})]})}export{T as LikeTab};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{pCommunityDeleteContent as e}from"../../../../../../service/generated/client.mjs";import{useDeleteRequest as t,useMutation as n,usePaginated as r,useUpdateRequest as i}from"../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as a}from"../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{UserActivityList as o}from"../../../../../common/list/user-activity-list/user-activity-list.mjs";import{useState as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{toast as d}from"sonner";import{useTranslations as f}from"next-intl";function p(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function m({getPublishData:m,queryKeyPrefix:h,isMine:g=!1}){let _=f(`components.pages.profile.components.tabs`),v=h??[],y=t(),b=i(),[x,S]=s(null),{mutateAsync:C,isPending:w}=n(async t=>await e({content_id:t})),{data:T,isFetching:E,fetchNextPage:D,hasNextPage:O}=r({key:[...v,`user-publish`],initialPageParam:1,async queryFn(e){return m?m(e):{data:{list:[],has_more:!1}}},options:{staleTime:0},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),k=T?.pages.flatMap(e=>(e?.data||{}).list||[])??[];function A(e){S(e)}function j(){S(null)}async function M(){if(!(!x||w))try{await C(x);let e=new Set([x]);b([...v,`user-publish`],t=>p(t,e,e=>e.content_id)),d.success(_(`publishTab.deleteSuccess`)),S(null)}catch(e){console.error(`删除内容失败`,e),d.error(_(`publishTab.deleteFailed`))}}let N=k.map(e=>({...e,isDeleting:w&&x===e.content_id,onDelete:()=>A(e.content_id??``)})),P=async()=>{await D()};function F(){y([...v,`user-publish`]),y(v)}function I(e){console.log(`分享到微信:`,e)}function L(e){console.log(`分享到QQ:`,e)}function R(e){console.log(`分享到朋友圈:`,e)}return u(c,{children:[l(o,{list:N,loading:E,hasMore:O,loadMore:P,canEdit:g,showGroupHeaders:!1,emptyText:_(`publishTab.emptyText`),onActionSuccess:F,onShareWeChat:I,onShareQQ:L,onShareMoments:R}),l(a,{open:!!x,onOpenChange:e=>!e&&j(),onCancel:j,onConfirm:M,isConfirming:w})]})}export{m as PublishTab};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{pUserUploadUserBgImage as t}from"../../../../service/generated/client.mjs";import{uploadFile as n}from"../../../../utils/upload-file.mjs";import{Image as r}from"../../../ui/image.mjs";import{Box as i}from"../../../ui/box.mjs";import{useDeleteRequest as a}from"../../../../hooks/query/use-query.mjs";import{BackgroundPreviewModal as o}from"../../../common/background-preview-modal/background-preview-modal.mjs";import{showImageCrop as s}from"../../../common/image-crop/show-image-crop.mjs";import{useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{toast as f}from"sonner";function p({isMine:p,src:m}){let h=`/images/mine/img_mine_head_bg.png`,{userId:g,setUserInfo:_,userInfo:v}=e(),y=a(),[b,x]=c(!1),[S,C]=c(!1);return d(l,{children:[u(i,{className:`h-33.75`,children:u(i,{className:`relative h-full w-full`,onClick:()=>{p&&!b&&C(!0)},children:u(r,{alt:`cover background`,fill:!0,objectFit:`cover`,className:`pointer-events-none`,src:m||h})})}),u(o,{open:S,onClose:()=>{C(!1)},bgUrl:m||h,onUpload:async()=>{try{let e=document.createElement(`input`);e.type=`file`,e.accept=`image/*`;let r=await new Promise((t,n)=>{e.onchange=e=>{let r=e.target.files?.[0];r?t(r):n(Error(`未选择文件`))},e.oncancel=()=>n(Error(`用户取消`)),e.click()});x(!0);let i=await n(await s(r,{aspectRatio:430/256,cropShape:`rect`,quality:.92,maxWidth:1920,maxHeight:1920}),1);await t({user_id:String(g),bg_image:i.objectKey}),_({...v,bg_image:i.objectKey}),y([`user-profile`,`mine`]),C(!1),f.success(`背景图更换成功`)}catch(e){console.error(`上传背景图失败`,e),e instanceof Error&&e.message!==`用户取消`&&f.error(`背景图上传失败,请稍后再试`)}finally{x(!1)}}})]})}export{p as UserProfileCoverBackground};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../ui/avatar.mjs";import{Box as a}from"../../../ui/box.mjs";import{Text as o}from"../../../ui/text.mjs";import{useLoginModalStore as s}from"../../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as c}from"../../../common/icons/left-arrow.mjs";import{SettingIcon as l}from"../../../common/icons/setting.mjs";import{UserProfileCoverBackground as u}from"./user-profile-cover-background.mjs";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";import m from"next/link";import{useRouter as h}from"next/navigation";function g({className:g,isMine:_=!1,profileUserInfo:v,overrideUserInfo:y,actionButton:b,showSettingsButton:x=!0,showBackButton:S=!0,settingsIconHref:C=`/settings`,followingHref:w=`/followed`,followersHref:T=`/fans`}){let E=p(`components.pages.profile.components`),D=h(),{isLogin:O}=t(),{open:k}=s(),A=y??v;if(!A)return null;let j=A,M=j.name||j.nick_name||``,N=j.description||j.signature||``,P=j.followingCnt??j.following_count??0,F=j.followersCnt??j.follower_count??0,I=j.likeCnt??j.like_count??0,L=j.avatar||``;function R(e){!_||O||(e.preventDefault(),e.stopPropagation(),k())}function z(){D.back()}return f(a,{className:e(` flex flex-col relative`,g),children:[f(a,{className:`absolute top-0 p-3 z-10 flex items-center justify-between w-full`,children:[d(`button`,{onClick:z,className:e({invisible:!S}),children:d(c,{className:`w-4 h-4`})}),d(m,{href:C,className:e({invisible:!x}),children:d(l,{})})]}),d(u,{isMine:_,src:v?.background}),f(a,{className:`flex-1 px-3`,children:[f(a,{className:`relative flex justify-end`,children:[f(n,{className:`!absolute bottom-3 left-0 w-22 h-22`,children:[d(i,{src:L,alt:M||`avatar`}),d(r,{})]}),f(a,{className:`flex divide-x divide-text1/5 py-4`,children:[d(m,{href:_?w:`${w}?user_id=${v?.userId}`,onClick:R,children:f(a,{className:`px-4 flex flex-col items-center`,children:[d(o,{className:`font-bold text-base`,children:P}),d(o,{className:`font-normal text-sm text-text1/66`,children:E(`userProfileHeader.follow`)})]})}),d(m,{href:_?T:`${T}?user_id=${v?.userId}`,onClick:R,children:f(a,{className:`px-4 flex flex-col items-center`,children:[d(o,{className:`font-bold text-base`,children:F}),d(o,{className:`font-normal text-sm text-text1/66`,children:E(`userProfileHeader.fans`)})]})}),f(a,{className:`px-4 flex flex-col items-center`,children:[d(o,{className:`font-bold text-base`,children:I}),d(o,{className:`font-normal text-sm text-text1/66`,children:E(`userProfileHeader.likesReceived`)})]})]})]}),f(a,{className:`flex items-center justify-between gap-1`,children:[d(o,{as:`p`,className:`text-text1 text-xl line-clamp-2 font-bold`,children:M}),b]}),N&&d(o,{as:`p`,className:`text-sm py-1 line-clamp-3 text-text1/66`,children:N})]})]})}export{g as UserProfileHeader};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Box as t}from"../../../ui/box.mjs";import{Tabs as n,TabsList as r,TabsTrigger as i}from"../../../ui/tabs.mjs";import{useMemo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({tabs:l,defaultTab:u,tab:d,onTabChange:f,renderTabContent:p,className:m}){let[h,g]=o(u||l[0]?.key||``),_=a(()=>u||l[0]?.key||``,[u,l]),v=d||h||_;return c(t,{className:e(m),children:[s(t,{className:`border-b bg-bg1 sticky z-10 top-0 border-text1/5 h-10`,children:s(n,{value:v,onValueChange:e=>{f?.(e),f||g(e)},className:`w-fit`,children:s(r,{variant:`default`,className:`inline-flex h-9`,children:l.map(e=>s(i,{value:e.key,className:`p-2.5 !text-base !w-fit data-active:!text-lg data-active:font-bold`,children:e.title},e.key))})})}),s(`div`,{className:`p-2`,children:p(v)})]})}export{l as UserProfileMain};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gUserGetUserInfo as n,gUserViewUserInfo as r,pInteractionFollow as i,pInteractionUnfollow as a}from"../../../service/generated/client.mjs";import{Box as o}from"../../ui/box.mjs";import{EmptyState as s}from"../../ui/empty.mjs";import{Text as c}from"../../ui/text.mjs";import{useDeleteRequest as l,useMutation as u,useRequest as d,useUpdateRequest as f}from"../../../hooks/query/use-query.mjs";import{useLoginModalStore as p}from"../../../store/modules/login-modal-store.mjs";import{CollectTab as m}from"./_components/tabs/collect-tab/collect-tab.mjs";import{HistoryTab as h}from"./_components/tabs/history-tab/history-tab.mjs";import{LikeTab as g}from"./_components/tabs/like-tab/like-tab.mjs";import{PublishTab as _}from"./_components/tabs/publish-tab/publish-tab.mjs";import{UserProfileHeader as v}from"./_components/user-profile-header.mjs";import{UserProfileMain as y}from"./_components/user-profile-main.mjs";import{getDisplayUserInfo as ee,getHistoryData as b,getLikeData as x,getPublishData as S,likeContentType as C}from"./utils.mjs";import{useEffect as w,useMemo as T,useRef as te}from"react";import{jsx as E,jsxs as D}from"react/jsx-runtime";import{toast as O}from"sonner";import{useTranslations as k}from"next-intl";import ne from"next/link";import{parseAsString as re,useQueryState as ie}from"nuqs";const A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function M(){return null}function N({text:e}){return E(s,{type:`no-content`,text:e})}function ae({userId:n,isFollowing:r}){let o=k(`components.pages.profile`),s=t(e=>e.userId),c=l(),d=f(),{mutateAsync:p,isPending:m}=u(async e=>i(e)),{mutateAsync:h,isPending:g}=u(async e=>a(e)),_=m||g;async function v(){if(!_)try{if(r){let e=await h({app_id:0,follower_id:s,followee_id:n});e.code===0?(O.success(o(`client.unfollowSuccess`)),y(!1),c([`check-follow`,n]),c([`user-profile`,`profile`,n])):O.error(e.message||o(`client.unfollowFailed`))}else{let e=await p({app_id:0,follower_id:s,followee_id:n});e.code===0?(O.success(o(`client.followSuccess`)),y(!0),c([`check-follow`,n]),c([`user-profile`,`profile`,n])):O.error(e.message||o(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),O.error(o(`client.operationFailed`))}}function y(e){d([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(e,{variant:r?`outline`:`default`,className:`rounded-full disabled:opacity-100`,onClick:v,disabled:_,children:o(_?`client.processing`:r?`client.followed`:`client.follow`)})}function oe({onLoginClick:t}){let n=k(`components.pages.profile`);return D(o,{className:`flex gap-4 flex-col items-center justify-center py-10 text-center`,children:[E(c,{className:`text-base text-text1`,children:n(`client.loginToView`)}),E(e,{size:`lg`,variant:`secondary`,onClick:t,children:n(`client.loginNow`)})]})}function P({id:i,showCreateAction:a=!1,requireLogin:s=!1,showBackButton:c,cookieToken:l,cookieUserId:u}){let f=k(`components.pages.profile`),O=[{key:`collect`,title:f(`client.collect`),id:0},{key:`publish`,title:f(`client.publish`),id:2},{key:`like`,title:f(`client.like`),id:3},{key:`history`,title:f(`client.history`),id:4}],P=[{key:`collect`,title:f(`client.collect`),id:0},{key:`publish`,title:f(`client.publish`),id:2},{key:`like`,title:f(`client.like`),id:3}],{isLogin:se,userInfo:ce,userId:le,token:ue}=t(),de=l||ue,F=u||le,I=se||!!de,{open:fe}=p(),L=i==null||!!i&&!!F&&i===F,R=!L&&!!i,z=a&&L,B=s&&L&&!I,{data:V}=d(L?[`user-profile`,`mine`]:[`user-profile`,`profile`,i],()=>i?r({target_user_id:i,user_id:F||i}):n({user_id:i||F}),{staleTime:0,enabled:!!i||!!F}),H=T(()=>{let e=V?V.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${i??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[i,V]),U=T(()=>{if(!R)return{collectionsOpen:!0,likeOpen:!0};let e=V?.data??{};return{collectionsOpen:Number(e.collections_open??1)>0,likeOpen:Number(e.like_open??1)>0}},[R,V]);function W(){fe()}let pe={name:f(`client.welcomeToPlanet`),description:f(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j},G=L?F:i?String(i):void 0,K=L?[`user-profile`,`mine`]:[`user-profile`,`profile`,i],me=ee(L?ce:H,A),q=I&&!!F,he=!q&&R,J=L?O:P,[Y,X]=ie(`tab`,re.withDefault(`collect`)),Z=T(()=>J.some(e=>e.key===Y)?Y:J[0]?.key||`collect`,[Y,J]),Q=te(null),$=T(()=>`profile-scroll:${G||(L?`mine`:`guest`)}:${Z}`,[L,Z,G]);w(()=>{Y!==Z&&X(Z)},[Z,X,Y]),w(()=>{if(typeof window>`u`)return;let e=Q.current;if(!e)return;let t=window.sessionStorage.getItem($),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{e.scrollTo({top:n})})},[$]),w(()=>{if(typeof window>`u`)return;let e=Q.current;if(!e)return;let t=!1,n=()=>{t||(t=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem($,String(e.scrollTop)),t=!1}))};return e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`scroll`,n)}},[$]);let ge=e=>{if(B)return E(oe,{onLoginClick:W});if(L)switch(e){case`history`:return E(h,{getVideoData:e=>b({targetUserId:G,page:e,contentType:C.video}),getPostData:e=>b({targetUserId:G,page:e,contentType:C.post}),queryKeyPrefix:K});case`publish`:return E(_,{isMine:L,getPublishData:e=>S({targetUserId:G,page:e}),queryKeyPrefix:K,fallbackUserInfo:me});case`collect`:return E(m,{isMine:L,userId:G,showCreateAction:z,queryKeyPrefix:K});case`like`:return E(g,{isMine:L,getVideoData:e=>x({targetUserId:G,page:e,contentType:C.video}),getPostData:e=>x({targetUserId:G,page:e,contentType:C.post}),queryKeyPrefix:K});default:return E(M,{})}if(R){if(e===`collect`&&!U.collectionsOpen)return E(N,{text:f(`client.collectionNotPublic`)});if(e===`like`&&!U.likeOpen)return E(N,{text:f(`client.likeNotPublic`)})}switch(e){case`publish`:return E(_,{isMine:L,getPublishData:e=>S({targetUserId:G,page:e}),queryKeyPrefix:K});case`collect`:return E(m,{isMine:L,userId:G,showCreateAction:z,queryKeyPrefix:K});case`like`:return E(g,{isMine:L,getVideoData:e=>x({targetUserId:G,page:e,contentType:C.video}),getPostData:e=>x({targetUserId:G,page:e,contentType:C.post}),queryKeyPrefix:K});default:return E(M,{})}},_e=B?E(e,{className:`rounded-full`,size:`lg`,onClick:W,children:f(`client.loginNow`)}):he?E(e,{className:`rounded-full`,size:`lg`,onClick:W,children:f(`client.follow`)}):q?L?E(ne,{href:`/edit`,children:E(e,{variant:`outline`,className:`rounded-full`,children:f(`client.editProfile`)})}):E(ae,{userId:i,isFollowing:H?.isFollowing}):E(e,{className:`rounded-full`,size:`lg`,onClick:W,children:f(`client.loginNow`)});return D(o,{ref:Q,className:`profile-container w-full bg-bg1 flex flex-col h-full overflow-y-auto`,children:[E(v,{isMine:L,profileUserInfo:H,overrideUserInfo:B?pe:void 0,showSettingsButton:L&&!B,showBackButton:c,actionButton:_e}),E(y,{tabs:J,defaultTab:`collect`,renderTabContent:ge,tab:Z,onTabChange:X})]})}export{P as UserProfilePageClient};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import e from"../../../assets/images/default_avatar.mjs";import{pxToVw as t}from"../../../utils/helper.mjs";import{Image as n}from"../image.mjs";import{Box as r}from"../box.mjs";import{useState as i}from"react";import{jsx as a}from"react/jsx-runtime";function o(e){if(!e)return;let t=e.trim();if(t)return/^(?:https?:|data:|blob:)/i.test(t)||t.startsWith(`/`)?t:`/${t.replace(/^\/+/,``)}`}function s({src:s,alt:c=`avatar`,className:l=``,width:u=40,height:d=40,...f}){let p=o(s),[m,h]=i(!1),g=u,_=d,v=`relative inline-flex items-center justify-center overflow-hidden rounded-full bg-gray-200 text-gray-700 flex-shrink-0 ${l}`.trim(),y=c,b=typeof e==`string`?e:e.src||String(e),x=p&&!m?p:b,S=()=>{h(!0)},C=()=>{h(!1)};return a(r,{className:v,style:{width:t(g),height:t(_)},...f,children:a(n,{src:x,alt:y,width:g,height:_,className:`object-cover`,onError:S,onLoad:C},p)})}export{s as default};