sa2kit 1.6.89 → 1.6.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{booking-473Db8Bo.d.mts → booking-BH7HM0D0.d.mts} +1 -0
- package/dist/{booking-473Db8Bo.d.ts → booking-BH7HM0D0.d.ts} +1 -0
- package/dist/{bookingAdminService-DqQ7hEGw.d.ts → bookingAdminService-nr1vOp6I.d.ts} +1 -1
- package/dist/{bookingAdminService-SBX4JA_U.d.mts → bookingAdminService-pvk2MY1r.d.mts} +1 -1
- package/dist/{client-Bkn6mRI7.d.ts → client-UDQ7uMFA.d.ts} +1 -1
- package/dist/{client-exYn2Qla.d.mts → client-jOToHJEx.d.mts} +1 -1
- package/dist/festivalCard/index.js +114 -0
- package/dist/festivalCard/index.js.map +1 -1
- package/dist/festivalCard/index.mjs +115 -1
- package/dist/festivalCard/index.mjs.map +1 -1
- package/dist/festivalCard/web/index.js +114 -0
- package/dist/festivalCard/web/index.js.map +1 -1
- package/dist/festivalCard/web/index.mjs +115 -1
- package/dist/festivalCard/web/index.mjs.map +1 -1
- package/dist/{index-z15F7afa.d.mts → index-Bs06cHTn.d.mts} +2 -2
- package/dist/{index-BJpxvH7X.d.ts → index-C-oNM7Gv.d.ts} +1 -1
- package/dist/{index-XTV6IU-M.d.ts → index-CUab5EBV.d.ts} +2 -2
- package/dist/{index-Cum2EknK.d.mts → index-CYDb3AKs.d.mts} +1 -1
- package/dist/{index-DyxLpkmm.d.mts → index-DBB4ad0S.d.mts} +2 -2
- package/dist/{index-CdTIsNsy.d.ts → index-DBHwbXrv.d.ts} +2 -2
- package/dist/index.js +114 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +114 -0
- package/dist/index.mjs.map +1 -1
- package/dist/showmasterpiece/core.d.mts +3 -3
- package/dist/showmasterpiece/core.d.ts +3 -3
- package/dist/showmasterpiece/db.d.mts +2 -0
- package/dist/showmasterpiece/db.d.ts +2 -0
- package/dist/showmasterpiece/db.js +4 -2
- package/dist/showmasterpiece/db.js.map +1 -1
- package/dist/showmasterpiece/db.mjs +4 -2
- package/dist/showmasterpiece/db.mjs.map +1 -1
- package/dist/showmasterpiece/index.js +18 -2
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +18 -2
- package/dist/showmasterpiece/index.mjs.map +1 -1
- package/dist/showmasterpiece/logic/index.d.mts +2 -2
- package/dist/showmasterpiece/logic/index.d.ts +2 -2
- package/dist/showmasterpiece/server/index.js +4 -2
- package/dist/showmasterpiece/server/index.js.map +1 -1
- package/dist/showmasterpiece/server/index.mjs +4 -2
- package/dist/showmasterpiece/server/index.mjs.map +1 -1
- package/dist/showmasterpiece/service/api/index.d.mts +1 -1
- package/dist/showmasterpiece/service/api/index.d.ts +1 -1
- package/dist/showmasterpiece/service/client-business/index.d.mts +3 -3
- package/dist/showmasterpiece/service/client-business/index.d.ts +3 -3
- package/dist/showmasterpiece/service/index.d.mts +6 -6
- package/dist/showmasterpiece/service/index.d.ts +6 -6
- package/dist/showmasterpiece/service/miniapp/index.d.mts +2 -2
- package/dist/showmasterpiece/service/miniapp/index.d.ts +2 -2
- package/dist/showmasterpiece/service/web/index.d.mts +4 -4
- package/dist/showmasterpiece/service/web/index.d.ts +4 -4
- package/dist/showmasterpiece/ui/miniapp/index.d.mts +2 -2
- package/dist/showmasterpiece/ui/miniapp/index.d.ts +2 -2
- package/dist/showmasterpiece/ui/miniapp/index.js +4 -3
- package/dist/showmasterpiece/ui/miniapp/index.js.map +1 -1
- package/dist/showmasterpiece/ui/miniapp/index.mjs +4 -3
- package/dist/showmasterpiece/ui/miniapp/index.mjs.map +1 -1
- package/dist/showmasterpiece/ui/web/index.js +18 -2
- package/dist/showmasterpiece/ui/web/index.js.map +1 -1
- package/dist/showmasterpiece/ui/web/index.mjs +18 -2
- package/dist/showmasterpiece/ui/web/index.mjs.map +1 -1
- package/dist/showmasterpiece/web/index.js +18 -2
- package/dist/showmasterpiece/web/index.js.map +1 -1
- package/dist/showmasterpiece/web/index.mjs +18 -2
- package/dist/showmasterpiece/web/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7489,9 +7489,24 @@ var createImageElement = (pageIndex) => ({
|
|
|
7489
7489
|
});
|
|
7490
7490
|
var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
7491
7491
|
const [activePageIndex, setActivePageIndex] = useState(0);
|
|
7492
|
+
const [activeElementId, setActiveElementId] = useState(null);
|
|
7493
|
+
const [draggingElementId, setDraggingElementId] = useState(null);
|
|
7494
|
+
const previewRef = useRef(null);
|
|
7495
|
+
const dragStateRef = useRef(null);
|
|
7492
7496
|
const page = value.pages[activePageIndex];
|
|
7493
7497
|
const canEditPage = Boolean(page);
|
|
7494
7498
|
const pageOptions = useMemo(() => value.pages.map((_, index) => index), [value.pages]);
|
|
7499
|
+
const backgroundElement = useMemo(
|
|
7500
|
+
() => page?.elements.find(
|
|
7501
|
+
(element) => element.type === "image" && Boolean(element.isBackground)
|
|
7502
|
+
),
|
|
7503
|
+
[page]
|
|
7504
|
+
);
|
|
7505
|
+
const foregroundElements = useMemo(
|
|
7506
|
+
() => (page?.elements ?? []).filter((element) => !(element.type === "image" && element.isBackground)),
|
|
7507
|
+
[page]
|
|
7508
|
+
);
|
|
7509
|
+
const clampPercent = (valueToClamp) => Math.max(0, Math.min(100, Number.isFinite(valueToClamp) ? valueToClamp : 0));
|
|
7495
7510
|
const handlePageCountChange = (nextRaw) => {
|
|
7496
7511
|
const next = Number.isFinite(nextRaw) ? Math.max(1, Math.min(12, Math.floor(nextRaw))) : value.pages.length;
|
|
7497
7512
|
const resized = resizeFestivalCardPages(value, next);
|
|
@@ -7528,6 +7543,38 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7528
7543
|
pages: value.pages.map((p, index) => index === activePageIndex ? { ...p, ...patch } : p)
|
|
7529
7544
|
});
|
|
7530
7545
|
};
|
|
7546
|
+
const moveElementWithPointer = (elementId, clientX, clientY, rect) => {
|
|
7547
|
+
const bounds = rect || previewRef.current?.getBoundingClientRect();
|
|
7548
|
+
if (!bounds || bounds.width <= 0 || bounds.height <= 0) return;
|
|
7549
|
+
const x = clampPercent((clientX - bounds.left) / bounds.width * 100);
|
|
7550
|
+
const y = clampPercent((clientY - bounds.top) / bounds.height * 100);
|
|
7551
|
+
updateElement(elementId, { x, y });
|
|
7552
|
+
};
|
|
7553
|
+
const handleElementPointerDown = (event, elementId) => {
|
|
7554
|
+
if (!previewRef.current) return;
|
|
7555
|
+
event.preventDefault();
|
|
7556
|
+
const rect = previewRef.current.getBoundingClientRect();
|
|
7557
|
+
dragStateRef.current = {
|
|
7558
|
+
pointerId: event.pointerId,
|
|
7559
|
+
elementId,
|
|
7560
|
+
rect
|
|
7561
|
+
};
|
|
7562
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
7563
|
+
setActiveElementId(elementId);
|
|
7564
|
+
setDraggingElementId(elementId);
|
|
7565
|
+
moveElementWithPointer(elementId, event.clientX, event.clientY, rect);
|
|
7566
|
+
};
|
|
7567
|
+
const handlePreviewPointerMove = (event) => {
|
|
7568
|
+
const dragState = dragStateRef.current;
|
|
7569
|
+
if (!dragState || dragState.pointerId !== event.pointerId) return;
|
|
7570
|
+
moveElementWithPointer(dragState.elementId, event.clientX, event.clientY, dragState.rect);
|
|
7571
|
+
};
|
|
7572
|
+
const endPointerDrag = (event) => {
|
|
7573
|
+
const dragState = dragStateRef.current;
|
|
7574
|
+
if (!dragState || dragState.pointerId !== event.pointerId) return;
|
|
7575
|
+
dragStateRef.current = null;
|
|
7576
|
+
setDraggingElementId(null);
|
|
7577
|
+
};
|
|
7531
7578
|
const numberFieldClassName = "w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100";
|
|
7532
7579
|
return /* @__PURE__ */ React69__default.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-4 text-slate-900 shadow-sm" }, /* @__PURE__ */ React69__default.createElement("div", { className: "grid gap-3" }, /* @__PURE__ */ React69__default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React69__default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u9875\u9762\u6570\u91CF"), /* @__PURE__ */ React69__default.createElement(
|
|
7533
7580
|
"input",
|
|
@@ -7621,6 +7668,73 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7621
7668
|
className: "rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white"
|
|
7622
7669
|
},
|
|
7623
7670
|
"+ \u56FE\u7247"
|
|
7671
|
+
)), /* @__PURE__ */ React69__default.createElement("div", { className: "mb-3" }, /* @__PURE__ */ React69__default.createElement("div", { className: "mb-2 flex items-center justify-between" }, /* @__PURE__ */ React69__default.createElement("div", { className: "text-xs font-semibold tracking-wide text-slate-500" }, "\u62D6\u62FD\u5B9A\u4F4D\uFF08\u76F4\u63A5\u62D6\u52A8\u5143\u7D20\u8C03\u6574 X / Y\uFF09"), /* @__PURE__ */ React69__default.createElement("div", { className: "text-xs text-slate-500" }, draggingElementId ? "\u62D6\u62FD\u4E2D..." : "\u53EF\u62D6\u62FD")), /* @__PURE__ */ React69__default.createElement(
|
|
7672
|
+
"div",
|
|
7673
|
+
{
|
|
7674
|
+
ref: previewRef,
|
|
7675
|
+
onPointerMove: handlePreviewPointerMove,
|
|
7676
|
+
onPointerUp: endPointerDrag,
|
|
7677
|
+
onPointerCancel: endPointerDrag,
|
|
7678
|
+
className: "relative aspect-[3/4] w-full touch-none overflow-hidden rounded-xl border border-slate-300 bg-slate-900",
|
|
7679
|
+
style: {
|
|
7680
|
+
backgroundColor: page?.background?.color || "#0f172a",
|
|
7681
|
+
backgroundImage: backgroundElement ? `url(${backgroundElement.src})` : page?.background?.image ? `url(${page.background.image})` : void 0,
|
|
7682
|
+
backgroundSize: "cover",
|
|
7683
|
+
backgroundPosition: "center"
|
|
7684
|
+
}
|
|
7685
|
+
},
|
|
7686
|
+
/* @__PURE__ */ React69__default.createElement("div", { className: "absolute inset-0 bg-slate-950/20" }),
|
|
7687
|
+
foregroundElements.map((element) => {
|
|
7688
|
+
const isActive = activeElementId === element.id;
|
|
7689
|
+
const isDragging = draggingElementId === element.id;
|
|
7690
|
+
return /* @__PURE__ */ React69__default.createElement(
|
|
7691
|
+
"div",
|
|
7692
|
+
{
|
|
7693
|
+
key: element.id,
|
|
7694
|
+
role: "button",
|
|
7695
|
+
tabIndex: 0,
|
|
7696
|
+
onPointerDown: (event) => handleElementPointerDown(event, element.id),
|
|
7697
|
+
onClick: () => setActiveElementId(element.id),
|
|
7698
|
+
className: `absolute select-none rounded-md ${isDragging ? "cursor-grabbing" : "cursor-grab"} ${isActive ? "ring-2 ring-sky-300" : "ring-1 ring-white/40"}`,
|
|
7699
|
+
style: {
|
|
7700
|
+
left: `${element.x}%`,
|
|
7701
|
+
top: `${element.y}%`,
|
|
7702
|
+
width: `${element.width ?? 70}%`,
|
|
7703
|
+
height: element.height ? `${element.height}%` : void 0,
|
|
7704
|
+
transform: "translate(-50%, -50%)",
|
|
7705
|
+
zIndex: isActive ? 4 : 2
|
|
7706
|
+
}
|
|
7707
|
+
},
|
|
7708
|
+
element.type === "text" ? /* @__PURE__ */ React69__default.createElement(
|
|
7709
|
+
"div",
|
|
7710
|
+
{
|
|
7711
|
+
className: "w-full rounded-md bg-black/20 px-2 py-1",
|
|
7712
|
+
style: {
|
|
7713
|
+
color: element.color || "#f8fafc",
|
|
7714
|
+
fontSize: element.fontSize || 18,
|
|
7715
|
+
fontWeight: element.fontWeight || 500,
|
|
7716
|
+
fontFamily: element.fontFamily || "inherit",
|
|
7717
|
+
textAlign: element.align || "left",
|
|
7718
|
+
lineHeight: 1.35,
|
|
7719
|
+
whiteSpace: "pre-wrap"
|
|
7720
|
+
}
|
|
7721
|
+
},
|
|
7722
|
+
element.content || "\u6587\u672C"
|
|
7723
|
+
) : /* @__PURE__ */ React69__default.createElement(
|
|
7724
|
+
"img",
|
|
7725
|
+
{
|
|
7726
|
+
src: element.src,
|
|
7727
|
+
alt: element.alt || "festival-card-image",
|
|
7728
|
+
draggable: false,
|
|
7729
|
+
className: "h-full w-full pointer-events-none",
|
|
7730
|
+
style: {
|
|
7731
|
+
objectFit: element.fit || "cover",
|
|
7732
|
+
borderRadius: element.borderRadius || 0
|
|
7733
|
+
}
|
|
7734
|
+
}
|
|
7735
|
+
)
|
|
7736
|
+
);
|
|
7737
|
+
})
|
|
7624
7738
|
)), /* @__PURE__ */ React69__default.createElement("div", { className: "grid max-h-[340px] gap-2.5 overflow-auto pr-1" }, (page?.elements ?? []).map((element) => /* @__PURE__ */ React69__default.createElement("div", { key: element.id, className: "rounded-xl border border-slate-200 bg-slate-50 p-3" }, /* @__PURE__ */ React69__default.createElement("div", { className: "mb-2 flex items-center justify-between" }, /* @__PURE__ */ React69__default.createElement("div", { className: "text-xs font-semibold tracking-wide text-slate-500" }, element.type.toUpperCase()), /* @__PURE__ */ React69__default.createElement(
|
|
7625
7739
|
"button",
|
|
7626
7740
|
{
|