sa2kit 1.6.33 → 1.6.35

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 (47) hide show
  1. package/dist/calendar/index.js +11 -8
  2. package/dist/calendar/index.js.map +1 -1
  3. package/dist/calendar/index.mjs +4 -1
  4. package/dist/calendar/index.mjs.map +1 -1
  5. package/dist/chunk-EGJPS7OL.mjs +98 -0
  6. package/dist/chunk-EGJPS7OL.mjs.map +1 -0
  7. package/dist/{chunk-EI27JKND.mjs → chunk-GMIUSZXC.mjs} +2 -2
  8. package/dist/{chunk-EI27JKND.mjs.map → chunk-GMIUSZXC.mjs.map} +1 -1
  9. package/dist/chunk-HHVDOIPV.js +105 -0
  10. package/dist/chunk-HHVDOIPV.js.map +1 -0
  11. package/dist/chunk-PMTY2AI4.js +1110 -0
  12. package/dist/chunk-PMTY2AI4.js.map +1 -0
  13. package/dist/{chunk-XGBE4SUV.js → chunk-SCDDMIF6.js} +2 -2
  14. package/dist/{chunk-XGBE4SUV.js.map → chunk-SCDDMIF6.js.map} +1 -1
  15. package/dist/chunk-SR4JFEHW.mjs +1071 -0
  16. package/dist/chunk-SR4JFEHW.mjs.map +1 -0
  17. package/dist/index.d.mts +26 -1
  18. package/dist/index.d.ts +26 -1
  19. package/dist/index.js +179 -109
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +4 -2
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/mikuFireworks3D/index.d.mts +174 -0
  24. package/dist/mikuFireworks3D/index.d.ts +174 -0
  25. package/dist/mikuFireworks3D/index.js +69 -0
  26. package/dist/mikuFireworks3D/index.js.map +1 -0
  27. package/dist/mikuFireworks3D/index.mjs +4 -0
  28. package/dist/mikuFireworks3D/index.mjs.map +1 -0
  29. package/dist/mikuFireworks3D/server/index.d.mts +146 -0
  30. package/dist/mikuFireworks3D/server/index.d.ts +146 -0
  31. package/dist/mikuFireworks3D/server/index.js +338 -0
  32. package/dist/mikuFireworks3D/server/index.js.map +1 -0
  33. package/dist/mikuFireworks3D/server/index.mjs +335 -0
  34. package/dist/mikuFireworks3D/server/index.mjs.map +1 -0
  35. package/dist/mikuFusionGame/index.d.mts +7 -2
  36. package/dist/mikuFusionGame/index.d.ts +7 -2
  37. package/dist/mikuFusionGame/index.js +141 -10
  38. package/dist/mikuFusionGame/index.js.map +1 -1
  39. package/dist/mikuFusionGame/index.mjs +141 -10
  40. package/dist/mikuFusionGame/index.mjs.map +1 -1
  41. package/dist/mmd/index.js +1 -1
  42. package/dist/mmd/index.mjs +2 -2
  43. package/dist/types-Cgk9zWhO.d.mts +70 -0
  44. package/dist/types-Cgk9zWhO.d.ts +70 -0
  45. package/dist/universalFile/server/index.js +5 -5
  46. package/dist/universalFile/server/index.mjs +1 -1
  47. package/package.json +11 -1
@@ -0,0 +1,98 @@
1
+ import { cn } from './chunk-3NHAT7D4.mjs';
2
+ import { useLocalStorage } from './chunk-VVWQTO4Y.mjs';
3
+ import React from 'react';
4
+
5
+ function ImageMappingPanel({
6
+ title,
7
+ items,
8
+ value,
9
+ onChange,
10
+ className,
11
+ uploadLabel = "\u4E0A\u4F20\u56FE\u7247",
12
+ clearLabel = "\u6E05\u9664"
13
+ }) {
14
+ const handleFileChange = (id, file) => {
15
+ if (!file) {
16
+ return;
17
+ }
18
+ const reader = new FileReader();
19
+ reader.onload = () => {
20
+ const base64 = typeof reader.result === "string" ? reader.result : "";
21
+ if (!base64) {
22
+ return;
23
+ }
24
+ onChange({
25
+ ...value,
26
+ [id]: base64
27
+ });
28
+ };
29
+ reader.readAsDataURL(file);
30
+ };
31
+ const handleRemove = (id) => {
32
+ const next = { ...value };
33
+ delete next[id];
34
+ onChange(next);
35
+ };
36
+ return /* @__PURE__ */ React.createElement("details", { className: cn("rounded-lg border border-slate-200 bg-white/80 p-3", className) }, /* @__PURE__ */ React.createElement("summary", { className: "cursor-pointer text-sm font-semibold text-slate-700" }, title), /* @__PURE__ */ React.createElement("div", { className: "mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2" }, items.map((item) => {
37
+ const image = value[item.id];
38
+ return /* @__PURE__ */ React.createElement(
39
+ "div",
40
+ {
41
+ key: item.id,
42
+ className: "flex items-center gap-2 rounded-md border border-slate-200 bg-white p-2"
43
+ },
44
+ /* @__PURE__ */ React.createElement("div", { className: "w-16 text-xs font-semibold text-slate-600" }, item.label),
45
+ /* @__PURE__ */ React.createElement("label", { className: "flex-1 cursor-pointer rounded-md bg-cyan-600 px-2 py-1 text-center text-xs font-medium text-white" }, uploadLabel, /* @__PURE__ */ React.createElement(
46
+ "input",
47
+ {
48
+ type: "file",
49
+ accept: "image/*",
50
+ className: "hidden",
51
+ onChange: (event) => {
52
+ handleFileChange(item.id, event.target.files?.[0]);
53
+ event.currentTarget.value = "";
54
+ }
55
+ }
56
+ )),
57
+ image ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
58
+ "img",
59
+ {
60
+ src: image,
61
+ alt: item.label,
62
+ className: "h-8 w-8 rounded-full border border-slate-200 object-cover"
63
+ }
64
+ ), /* @__PURE__ */ React.createElement(
65
+ "button",
66
+ {
67
+ type: "button",
68
+ className: "rounded-md border border-red-200 px-2 py-1 text-xs text-red-600",
69
+ onClick: () => handleRemove(item.id)
70
+ },
71
+ clearLabel
72
+ )) : null
73
+ );
74
+ })));
75
+ }
76
+ function LocalImageMappingPanel({
77
+ storageKey,
78
+ defaultValue = {},
79
+ onValueChange,
80
+ ...panelProps
81
+ }) {
82
+ const [value, setValue] = useLocalStorage(storageKey, defaultValue);
83
+ return /* @__PURE__ */ React.createElement(
84
+ ImageMappingPanel,
85
+ {
86
+ ...panelProps,
87
+ value,
88
+ onChange: (next) => {
89
+ setValue(next);
90
+ onValueChange?.(next);
91
+ }
92
+ }
93
+ );
94
+ }
95
+
96
+ export { ImageMappingPanel, LocalImageMappingPanel };
97
+ //# sourceMappingURL=chunk-EGJPS7OL.mjs.map
98
+ //# sourceMappingURL=chunk-EGJPS7OL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ImageMappingPanel.tsx","../src/components/LocalImageMappingPanel.tsx"],"names":["React"],"mappings":"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","file":"chunk-EGJPS7OL.mjs","sourcesContent":["import React from 'react';\nimport { cn } from '../utils';\n\nexport interface ImageMappingItem {\n id: string;\n label: string;\n}\n\nexport type ImageMappingValue = Record<string, string>;\n\nexport interface ImageMappingPanelProps {\n title: string;\n items: ImageMappingItem[];\n value: ImageMappingValue;\n onChange: (next: ImageMappingValue) => void;\n className?: string;\n uploadLabel?: string;\n clearLabel?: string;\n}\n\nexport function ImageMappingPanel({\n title,\n items,\n value,\n onChange,\n className,\n uploadLabel = '上传图片',\n clearLabel = '清除',\n}: ImageMappingPanelProps) {\n const handleFileChange = (id: string, file?: File) => {\n if (!file) {\n return;\n }\n\n const reader = new FileReader();\n reader.onload = () => {\n const base64 = typeof reader.result === 'string' ? reader.result : '';\n if (!base64) {\n return;\n }\n onChange({\n ...value,\n [id]: base64,\n });\n };\n reader.readAsDataURL(file);\n };\n\n const handleRemove = (id: string) => {\n const next = { ...value };\n delete next[id];\n onChange(next);\n };\n\n return (\n <details className={cn('rounded-lg border border-slate-200 bg-white/80 p-3', className)}>\n <summary className=\"cursor-pointer text-sm font-semibold text-slate-700\">{title}</summary>\n <div className=\"mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {items.map((item) => {\n const image = value[item.id];\n return (\n <div\n key={item.id}\n className=\"flex items-center gap-2 rounded-md border border-slate-200 bg-white p-2\"\n >\n <div className=\"w-16 text-xs font-semibold text-slate-600\">{item.label}</div>\n <label className=\"flex-1 cursor-pointer rounded-md bg-cyan-600 px-2 py-1 text-center text-xs font-medium text-white\">\n {uploadLabel}\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n onChange={(event) => {\n handleFileChange(item.id, event.target.files?.[0]);\n event.currentTarget.value = '';\n }}\n />\n </label>\n {image ? (\n <>\n <img\n src={image}\n alt={item.label}\n className=\"h-8 w-8 rounded-full border border-slate-200 object-cover\"\n />\n <button\n type=\"button\"\n className=\"rounded-md border border-red-200 px-2 py-1 text-xs text-red-600\"\n onClick={() => handleRemove(item.id)}\n >\n {clearLabel}\n </button>\n </>\n ) : null}\n </div>\n );\n })}\n </div>\n </details>\n );\n}\n\n","import React from 'react';\nimport { useLocalStorage } from '../storage/hooks/useLocalStorage';\nimport {\n ImageMappingPanel,\n type ImageMappingItem,\n type ImageMappingPanelProps,\n type ImageMappingValue,\n} from './ImageMappingPanel';\n\nexport interface LocalImageMappingPanelProps\n extends Omit<ImageMappingPanelProps, 'value' | 'onChange'> {\n storageKey: string;\n defaultValue?: ImageMappingValue;\n onValueChange?: (next: ImageMappingValue) => void;\n}\n\nexport function LocalImageMappingPanel({\n storageKey,\n defaultValue = {},\n onValueChange,\n ...panelProps\n}: LocalImageMappingPanelProps) {\n const [value, setValue] = useLocalStorage<ImageMappingValue>(storageKey, defaultValue);\n\n return (\n <ImageMappingPanel\n {...panelProps}\n value={value}\n onChange={(next) => {\n setValue(next);\n onValueChange?.(next);\n }}\n />\n );\n}\n\nexport type { ImageMappingItem };\n\n"]}
@@ -1984,5 +1984,5 @@ var ConfirmModal = ({
1984
1984
  };
1985
1985
 
1986
1986
  export { AlertDialogAction, AlertDialogCancel, AlertDialogContent, Avatar, AvatarFallback, AvatarImage, BackButton, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CollisionBalls, ConfirmModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FilterButtonGroup, GenericOrderManager, Grid, Input, Label, Modal, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ScrollArea, ScrollBar, SearchBox, SearchResultHint, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Timeline, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants };
1987
- //# sourceMappingURL=chunk-EI27JKND.mjs.map
1988
- //# sourceMappingURL=chunk-EI27JKND.mjs.map
1987
+ //# sourceMappingURL=chunk-GMIUSZXC.mjs.map
1988
+ //# sourceMappingURL=chunk-GMIUSZXC.mjs.map