@react-text-game/ui 0.3.0 → 0.3.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Hotspot.d.ts","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/Hotspot.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,eAAe,EACf,eAAe,EAClB,MAAM,gCAAgC,CAAC;AAQxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,YAAY,GAAG;IAChB,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;IAC3C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,gCAAgC,YAAY,4CA+CnE,CAAC"}
1
+ {"version":3,"file":"Hotspot.d.ts","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/Hotspot.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,eAAe,EACf,eAAe,EAClB,MAAM,gCAAgC,CAAC;AAQxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,YAAY,GAAG;IAChB,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;IAC3C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,gCAAgC,YAAY,4CAkDnE,CAAC"}
@@ -25,6 +25,6 @@ export const Hotspot = ({ hotspot, imagePositionInfo }) => {
25
25
  hotspotRef.current.style.transform = "translate(-50%, -50%)";
26
26
  }
27
27
  }, [hotspot.position, imagePositionInfo]);
28
- return (_jsx("div", { ref: hotspotRef, className: "absolute z-10", children: _jsx(Tooltip, { content: tooltipContent, placement: hotspot.tooltip?.position || "top", disabled: !tooltipContent, children: _jsx("div", { children: hotspot.type === "image" ? (_jsx(ImageHotspot, { hotspot: hotspot })) : hotspot.type === "label" ? (_jsx(LabelHotspot, { hotspot: hotspot })) : (_jsx("div", { children: "Unknown Hotspot Type" })) }) }) }));
28
+ return (_jsx("div", { ref: hotspotRef, className: "absolute z-10", children: _jsx(Tooltip, { content: tooltipContent, placement: hotspot.tooltip?.position || "top", disabled: !tooltipContent, children: _jsx("div", { children: hotspot.type === "image" ? (_jsx(ImageHotspot, { hotspot: hotspot, ...(imagePositionInfo && { imagePositionInfo }) })) : hotspot.type === "label" ? (_jsx(LabelHotspot, { hotspot: hotspot })) : (_jsx("div", { children: "Unknown Hotspot Type" })) }) }) }));
29
29
  };
30
30
  //# sourceMappingURL=Hotspot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hotspot.js","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/Hotspot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAMb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAgB,EAAE,EAAE;IACpE,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhE,+EAA+E;IAC/E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,UAAU,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC;YAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,GACtD,iBAAiB,CAAC;YAEtB,6DAA6D;YAC7D,2EAA2E;YAC3E,MAAM,IAAI,GACN,UAAU;gBACV,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC;YAC5D,MAAM,IAAI,GACN,SAAS;gBACT,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC;YAE7D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;YAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC;YAE3C,gCAAgC;YAChC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,uBAAuB,CAAC;QACjE,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE1C,OAAO,CACH,cAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,eAAe,YAC3C,KAAC,OAAO,IACJ,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,EAC7C,QAAQ,EAAE,CAAC,cAAc,YAEzB,wBACK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACrC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACrC,CAAC,CAAC,CAAC,CACA,iDAA+B,CAClC,GACC,GACA,GACR,CACT,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"Hotspot.js","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/Hotspot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAMb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAgB,EAAE,EAAE;IACpE,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhE,+EAA+E;IAC/E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,UAAU,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC;YAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,GACtD,iBAAiB,CAAC;YAEtB,6DAA6D;YAC7D,2EAA2E;YAC3E,MAAM,IAAI,GACN,UAAU;gBACV,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC;YAC5D,MAAM,IAAI,GACN,SAAS;gBACT,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC;YAE7D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;YAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC;YAE3C,gCAAgC;YAChC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,uBAAuB,CAAC;QACjE,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE1C,OAAO,CACH,cAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,eAAe,YAC3C,KAAC,OAAO,IACJ,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,EAC7C,QAAQ,EAAE,CAAC,cAAc,YAEzB,wBACK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IACT,OAAO,EAAE,OAAO,KACZ,CAAC,iBAAiB,IAAI,EAAE,iBAAiB,EAAE,CAAC,GAClD,CACL,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACrC,CAAC,CAAC,CAAC,CACA,iDAA+B,CAClC,GACC,GACA,GACR,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { ImageHotspot as ImageHotspotType, MapImageHotspot } from "@react-text-game/core/passages";
2
+ import { ImagePositionInfo } from "./types";
2
3
  type ImageHotspotProps = {
3
4
  hotspot: MapImageHotspot | ImageHotspotType;
5
+ imagePositionInfo?: ImagePositionInfo;
4
6
  };
5
- export declare const ImageHotspot: ({ hotspot }: ImageHotspotProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const ImageHotspot: ({ hotspot, imagePositionInfo, }: ImageHotspotProps) => import("react/jsx-runtime").JSX.Element;
6
8
  export {};
7
9
  //# sourceMappingURL=ImageHotspot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageHotspot.d.ts","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/ImageHotspot.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,IAAI,gBAAgB,EAChC,eAAe,EAClB,MAAM,gCAAgC,CAAC;AAMxC,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,aAAa,iBAAiB,4CA4D1D,CAAC"}
1
+ {"version":3,"file":"ImageHotspot.d.ts","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/ImageHotspot.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,IAAI,gBAAgB,EAChC,eAAe,EAClB,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAC5C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,iCAG1B,iBAAiB,4CAuEnB,CAAC"}
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useMemo, useState } from "react";
4
4
  import { twMerge } from "tailwind-merge";
5
5
  import { callIfFunction } from "./helpers";
6
- export const ImageHotspot = ({ hotspot }) => {
6
+ export const ImageHotspot = ({ hotspot, imagePositionInfo, }) => {
7
7
  const [isHovering, setIsHovering] = useState(false);
8
8
  const [isActive, setIsActive] = useState(false);
9
9
  const classNames = hotspot.props?.classNames || {};
@@ -14,7 +14,17 @@ export const ImageHotspot = ({ hotspot }) => {
14
14
  active: callIfFunction(hotspot.content.active),
15
15
  disabled: callIfFunction(hotspot.content.disabled),
16
16
  }), [hotspot.content]);
17
- return (_jsx("button", { className: twMerge("cursor-pointer disabled:cursor-not-allowed relative", classNames.container), style: { zoom: hotspot.props?.zoom || "100%" }, disabled: isDisabled, onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), onClick: () => {
17
+ // Calculate the combined scale factor from both the map scaling and custom zoom
18
+ const combinedScale = useMemo(() => {
19
+ const scaleFactor = imagePositionInfo?.scaleFactor ?? 1;
20
+ const customZoom = hotspot.props?.zoom || "100%";
21
+ const zoomValue = parseFloat(customZoom) / 100;
22
+ return scaleFactor * zoomValue;
23
+ }, [imagePositionInfo?.scaleFactor, hotspot.props?.zoom]);
24
+ return (_jsx("button", { className: twMerge("cursor-pointer disabled:cursor-not-allowed relative", classNames.container), style: {
25
+ transform: `scale(${combinedScale})`,
26
+ transformOrigin: "center center",
27
+ }, disabled: isDisabled, onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), onClick: () => {
18
28
  setIsActive(true);
19
29
  hotspot.action();
20
30
  setTimeout(() => setIsActive(false), 100);
@@ -1 +1 @@
1
- {"version":3,"file":"ImageHotspot.js","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/ImageHotspot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAMb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAM3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,EAAqB,EAAE,EAAE;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;IAEnD,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1C,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;KACrD,CAAC,EACF,CAAC,OAAO,CAAC,OAAO,CAAC,CACpB,CAAC;IAEF,OAAO,CACH,iBACI,SAAS,EAAE,OAAO,CACd,qDAAqD,EACrD,UAAU,CAAC,SAAS,CACvB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,EAC9C,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EACvC,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,GAAG,EAAE;YACV,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC,YAEA,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1B,cACI,SAAS,EAAE,UAAU,CAAC,MAAM,EAC5B,GAAG,EAAE,OAAO,CAAC,MAAM,EACnB,GAAG,EAAC,gBAAgB,GACtB,CACL,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9B,cACI,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,GAAG,EAAE,OAAO,CAAC,KAAK,EAClB,GAAG,EAAC,eAAe,GACrB,CACL,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjC,cACI,SAAS,EAAE,UAAU,CAAC,QAAQ,EAC9B,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,GAAG,EAAC,kBAAkB,GACxB,CACL,CAAC,CAAC,CAAC,CACA,cACI,SAAS,EAAE,UAAU,CAAC,IAAI,EAC1B,GAAG,EAAE,OAAO,CAAC,IAAI,EACjB,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS,GAC9B,CACL,GACI,CACZ,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"ImageHotspot.js","sourceRoot":"","sources":["../../../src/components/InteractiveMapComponent/ImageHotspot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAMb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQ3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EACzB,OAAO,EACP,iBAAiB,GACD,EAAE,EAAE;IACpB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;IAEnD,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1C,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;KACrD,CAAC,EACF,CAAC,OAAO,CAAC,OAAO,CAAC,CACpB,CAAC;IAEF,gFAAgF;IAChF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,WAAW,GAAG,iBAAiB,EAAE,WAAW,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;QACjD,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC/C,OAAO,WAAW,GAAG,SAAS,CAAC;IACnC,CAAC,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1D,OAAO,CACH,iBACI,SAAS,EAAE,OAAO,CACd,qDAAqD,EACrD,UAAU,CAAC,SAAS,CACvB,EACD,KAAK,EAAE;YACH,SAAS,EAAE,SAAS,aAAa,GAAG;YACpC,eAAe,EAAE,eAAe;SACnC,EACD,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EACvC,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,GAAG,EAAE;YACV,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC,YAEA,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1B,cACI,SAAS,EAAE,UAAU,CAAC,MAAM,EAC5B,GAAG,EAAE,OAAO,CAAC,MAAM,EACnB,GAAG,EAAC,gBAAgB,GACtB,CACL,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9B,cACI,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,GAAG,EAAE,OAAO,CAAC,KAAK,EAClB,GAAG,EAAC,eAAe,GACrB,CACL,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjC,cACI,SAAS,EAAE,UAAU,CAAC,QAAQ,EAC9B,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,GAAG,EAAC,kBAAkB,GACxB,CACL,CAAC,CAAC,CAAC,CACA,cACI,SAAS,EAAE,UAAU,CAAC,IAAI,EAC1B,GAAG,EAAE,OAAO,CAAC,IAAI,EACjB,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS,GAC9B,CACL,GACI,CACZ,CAAC;AACN,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ImageHotspot.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageHotspot.test.d.ts","sourceRoot":"","sources":["../../../src/tests/InteractiveMapComponent/ImageHotspot.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,460 @@
1
+ import { cleanup, render, screen, waitFor } from "@testing-library/react";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
4
+ import { createElement } from "react";
5
+ import { ImageHotspot } from "../../components/InteractiveMapComponent/ImageHotspot";
6
+ describe("ImageHotspot", () => {
7
+ beforeEach(() => {
8
+ // Any setup if needed
9
+ });
10
+ afterEach(() => {
11
+ cleanup();
12
+ });
13
+ describe("Basic Rendering", () => {
14
+ test("renders idle state by default", () => {
15
+ const mockAction = mock(() => { });
16
+ const hotspot = {
17
+ id: "test-hotspot",
18
+ type: "image",
19
+ position: { x: 50, y: 50 },
20
+ content: {
21
+ idle: "/images/idle.png",
22
+ },
23
+ action: mockAction,
24
+ };
25
+ render(createElement(ImageHotspot, { hotspot }));
26
+ const image = screen.getByAltText("test-hotspot");
27
+ expect(image).toBeTruthy();
28
+ expect(image.getAttribute("src")).toBe("/images/idle.png");
29
+ });
30
+ test("renders with custom classNames", () => {
31
+ const mockAction = mock(() => { });
32
+ const hotspot = {
33
+ id: "test-hotspot",
34
+ type: "image",
35
+ position: { x: 50, y: 50 },
36
+ content: {
37
+ idle: "/images/idle.png",
38
+ },
39
+ action: mockAction,
40
+ props: {
41
+ classNames: {
42
+ container: "custom-container",
43
+ idle: "custom-idle",
44
+ },
45
+ },
46
+ };
47
+ const { container } = render(createElement(ImageHotspot, { hotspot }));
48
+ const button = container.querySelector(".custom-container");
49
+ expect(button).toBeTruthy();
50
+ const image = container.querySelector(".custom-idle");
51
+ expect(image).toBeTruthy();
52
+ });
53
+ });
54
+ describe("Interactive States", () => {
55
+ test("shows hover state on mouse enter", async () => {
56
+ const user = userEvent.setup();
57
+ const mockAction = mock(() => { });
58
+ const hotspot = {
59
+ id: "test-hotspot",
60
+ type: "image",
61
+ position: { x: 50, y: 50 },
62
+ content: {
63
+ idle: "/images/idle.png",
64
+ hover: "/images/hover.png",
65
+ },
66
+ action: mockAction,
67
+ };
68
+ render(createElement(ImageHotspot, { hotspot }));
69
+ const button = screen.getByRole("button");
70
+ await user.hover(button);
71
+ await waitFor(() => {
72
+ const image = screen.getByAltText("hotspot hover");
73
+ expect(image).toBeTruthy();
74
+ expect(image.getAttribute("src")).toBe("/images/hover.png");
75
+ });
76
+ });
77
+ test("shows idle state on mouse leave", async () => {
78
+ const user = userEvent.setup();
79
+ const mockAction = mock(() => { });
80
+ const hotspot = {
81
+ id: "test-hotspot",
82
+ type: "image",
83
+ position: { x: 50, y: 50 },
84
+ content: {
85
+ idle: "/images/idle.png",
86
+ hover: "/images/hover.png",
87
+ },
88
+ action: mockAction,
89
+ };
90
+ render(createElement(ImageHotspot, { hotspot }));
91
+ const button = screen.getByRole("button");
92
+ // Hover
93
+ await user.hover(button);
94
+ await waitFor(() => {
95
+ expect(screen.getByAltText("hotspot hover")).toBeTruthy();
96
+ });
97
+ // Unhover
98
+ await user.unhover(button);
99
+ await waitFor(() => {
100
+ const image = screen.getByAltText("test-hotspot");
101
+ expect(image).toBeTruthy();
102
+ expect(image.getAttribute("src")).toBe("/images/idle.png");
103
+ });
104
+ });
105
+ test("shows active state on click", async () => {
106
+ const user = userEvent.setup();
107
+ const mockAction = mock(() => { });
108
+ const hotspot = {
109
+ id: "test-hotspot",
110
+ type: "image",
111
+ position: { x: 50, y: 50 },
112
+ content: {
113
+ idle: "/images/idle.png",
114
+ active: "/images/active.png",
115
+ },
116
+ action: mockAction,
117
+ };
118
+ render(createElement(ImageHotspot, { hotspot }));
119
+ const button = screen.getByRole("button");
120
+ await user.click(button);
121
+ // Active state should show briefly
122
+ await waitFor(() => {
123
+ const image = screen.queryByAltText("hotspot active");
124
+ expect(image).toBeTruthy();
125
+ });
126
+ // Should return to idle after timeout
127
+ await waitFor(() => {
128
+ const image = screen.queryByAltText("test-hotspot");
129
+ expect(image).toBeTruthy();
130
+ }, { timeout: 200 });
131
+ });
132
+ test("calls action on click", async () => {
133
+ const user = userEvent.setup();
134
+ const mockAction = mock(() => { });
135
+ const hotspot = {
136
+ id: "test-hotspot",
137
+ type: "image",
138
+ position: { x: 50, y: 50 },
139
+ content: {
140
+ idle: "/images/idle.png",
141
+ },
142
+ action: mockAction,
143
+ };
144
+ render(createElement(ImageHotspot, { hotspot }));
145
+ const button = screen.getByRole("button");
146
+ await user.click(button);
147
+ expect(mockAction).toHaveBeenCalledTimes(1);
148
+ });
149
+ test("shows disabled state when isDisabled is true", () => {
150
+ const mockAction = mock(() => { });
151
+ const hotspot = {
152
+ id: "test-hotspot",
153
+ type: "image",
154
+ position: { x: 50, y: 50 },
155
+ content: {
156
+ idle: "/images/idle.png",
157
+ disabled: "/images/disabled.png",
158
+ },
159
+ action: mockAction,
160
+ isDisabled: true,
161
+ };
162
+ render(createElement(ImageHotspot, { hotspot }));
163
+ const image = screen.getByAltText("hotspot disabled");
164
+ expect(image).toBeTruthy();
165
+ expect(image.getAttribute("src")).toBe("/images/disabled.png");
166
+ const button = screen.getByRole("button");
167
+ expect(button.hasAttribute("disabled")).toBe(true);
168
+ });
169
+ test("does not call action when disabled and clicked", async () => {
170
+ const user = userEvent.setup();
171
+ const mockAction = mock(() => { });
172
+ const hotspot = {
173
+ id: "test-hotspot",
174
+ type: "image",
175
+ position: { x: 50, y: 50 },
176
+ content: {
177
+ idle: "/images/idle.png",
178
+ },
179
+ action: mockAction,
180
+ isDisabled: true,
181
+ };
182
+ render(createElement(ImageHotspot, { hotspot }));
183
+ const button = screen.getByRole("button");
184
+ await user.click(button);
185
+ expect(mockAction).not.toHaveBeenCalled();
186
+ });
187
+ });
188
+ describe("Dynamic Content (Functions)", () => {
189
+ test("handles content as functions", () => {
190
+ const mockAction = mock(() => { });
191
+ const hotspot = {
192
+ id: "test-hotspot",
193
+ type: "image",
194
+ position: { x: 50, y: 50 },
195
+ content: {
196
+ idle: () => "/images/dynamic-idle.png",
197
+ },
198
+ action: mockAction,
199
+ };
200
+ render(createElement(ImageHotspot, { hotspot }));
201
+ const image = screen.getByAltText("test-hotspot");
202
+ expect(image.getAttribute("src")).toBe("/images/dynamic-idle.png");
203
+ });
204
+ test("handles isDisabled as function", () => {
205
+ const mockAction = mock(() => { });
206
+ const hotspot = {
207
+ id: "test-hotspot",
208
+ type: "image",
209
+ position: { x: 50, y: 50 },
210
+ content: {
211
+ idle: "/images/idle.png",
212
+ disabled: "/images/disabled.png",
213
+ },
214
+ action: mockAction,
215
+ isDisabled: () => true,
216
+ };
217
+ render(createElement(ImageHotspot, { hotspot }));
218
+ const button = screen.getByRole("button");
219
+ expect(button.hasAttribute("disabled")).toBe(true);
220
+ });
221
+ });
222
+ describe("Scaling with imagePositionInfo", () => {
223
+ test("applies default scale when no imagePositionInfo provided", () => {
224
+ const mockAction = mock(() => { });
225
+ const hotspot = {
226
+ id: "test-hotspot",
227
+ type: "image",
228
+ position: { x: 50, y: 50 },
229
+ content: {
230
+ idle: "/images/idle.png",
231
+ },
232
+ action: mockAction,
233
+ };
234
+ const { container } = render(createElement(ImageHotspot, { hotspot }));
235
+ const button = container.querySelector("button");
236
+ expect(button).toBeTruthy();
237
+ const style = button.style;
238
+ expect(style.transform).toBe("scale(1)");
239
+ });
240
+ test("applies scaleFactor from imagePositionInfo", () => {
241
+ const mockAction = mock(() => { });
242
+ const hotspot = {
243
+ id: "test-hotspot",
244
+ type: "image",
245
+ position: { x: 50, y: 50 },
246
+ content: {
247
+ idle: "/images/idle.png",
248
+ },
249
+ action: mockAction,
250
+ };
251
+ const imagePositionInfo = {
252
+ scaleFactor: 0.5,
253
+ offsetLeft: 100,
254
+ offsetTop: 100,
255
+ scaledWidth: 500,
256
+ scaledHeight: 500,
257
+ };
258
+ const { container } = render(createElement(ImageHotspot, { hotspot, imagePositionInfo }));
259
+ const button = container.querySelector("button");
260
+ expect(button).toBeTruthy();
261
+ const style = button.style;
262
+ expect(style.transform).toBe("scale(0.5)");
263
+ });
264
+ test("combines scaleFactor with custom zoom prop", () => {
265
+ const mockAction = mock(() => { });
266
+ const hotspot = {
267
+ id: "test-hotspot",
268
+ type: "image",
269
+ position: { x: 50, y: 50 },
270
+ content: {
271
+ idle: "/images/idle.png",
272
+ },
273
+ action: mockAction,
274
+ props: {
275
+ zoom: "200%",
276
+ },
277
+ };
278
+ const imagePositionInfo = {
279
+ scaleFactor: 0.5,
280
+ offsetLeft: 100,
281
+ offsetTop: 100,
282
+ scaledWidth: 500,
283
+ scaledHeight: 500,
284
+ };
285
+ const { container } = render(createElement(ImageHotspot, { hotspot, imagePositionInfo }));
286
+ const button = container.querySelector("button");
287
+ expect(button).toBeTruthy();
288
+ const style = button.style;
289
+ // 0.5 (scaleFactor) * 2 (200% zoom) = 1
290
+ expect(style.transform).toBe("scale(1)");
291
+ });
292
+ test("updates scale when imagePositionInfo changes", () => {
293
+ const mockAction = mock(() => { });
294
+ const hotspot = {
295
+ id: "test-hotspot",
296
+ type: "image",
297
+ position: { x: 50, y: 50 },
298
+ content: {
299
+ idle: "/images/idle.png",
300
+ },
301
+ action: mockAction,
302
+ };
303
+ const initialImagePositionInfo = {
304
+ scaleFactor: 0.5,
305
+ offsetLeft: 100,
306
+ offsetTop: 100,
307
+ scaledWidth: 500,
308
+ scaledHeight: 500,
309
+ };
310
+ const { container, rerender } = render(createElement(ImageHotspot, {
311
+ hotspot,
312
+ imagePositionInfo: initialImagePositionInfo,
313
+ }));
314
+ let button = container.querySelector("button");
315
+ expect(button.style.transform).toBe("scale(0.5)");
316
+ // Simulate window resize - update imagePositionInfo
317
+ const updatedImagePositionInfo = {
318
+ scaleFactor: 0.75,
319
+ offsetLeft: 150,
320
+ offsetTop: 150,
321
+ scaledWidth: 750,
322
+ scaledHeight: 750,
323
+ };
324
+ rerender(createElement(ImageHotspot, {
325
+ hotspot,
326
+ imagePositionInfo: updatedImagePositionInfo,
327
+ }));
328
+ button = container.querySelector("button");
329
+ expect(button.style.transform).toBe("scale(0.75)");
330
+ });
331
+ test("applies transform origin center center", () => {
332
+ const mockAction = mock(() => { });
333
+ const hotspot = {
334
+ id: "test-hotspot",
335
+ type: "image",
336
+ position: { x: 50, y: 50 },
337
+ content: {
338
+ idle: "/images/idle.png",
339
+ },
340
+ action: mockAction,
341
+ };
342
+ const imagePositionInfo = {
343
+ scaleFactor: 0.5,
344
+ offsetLeft: 100,
345
+ offsetTop: 100,
346
+ scaledWidth: 500,
347
+ scaledHeight: 500,
348
+ };
349
+ const { container } = render(createElement(ImageHotspot, { hotspot, imagePositionInfo }));
350
+ const button = container.querySelector("button");
351
+ expect(button).toBeTruthy();
352
+ const style = button.style;
353
+ expect(style.transformOrigin).toBe("center center");
354
+ });
355
+ });
356
+ describe("Edge Cases", () => {
357
+ test("handles missing hover content gracefully", async () => {
358
+ const user = userEvent.setup();
359
+ const mockAction = mock(() => { });
360
+ const hotspot = {
361
+ id: "test-hotspot",
362
+ type: "image",
363
+ position: { x: 50, y: 50 },
364
+ content: {
365
+ idle: "/images/idle.png",
366
+ },
367
+ action: mockAction,
368
+ };
369
+ render(createElement(ImageHotspot, { hotspot }));
370
+ const button = screen.getByRole("button");
371
+ await user.hover(button);
372
+ // Should still show idle when hover is missing
373
+ const image = screen.getByAltText("test-hotspot");
374
+ expect(image.getAttribute("src")).toBe("/images/idle.png");
375
+ });
376
+ test("handles missing active content gracefully", async () => {
377
+ const user = userEvent.setup();
378
+ const mockAction = mock(() => { });
379
+ const hotspot = {
380
+ id: "test-hotspot",
381
+ type: "image",
382
+ position: { x: 50, y: 50 },
383
+ content: {
384
+ idle: "/images/idle.png",
385
+ },
386
+ action: mockAction,
387
+ };
388
+ render(createElement(ImageHotspot, { hotspot }));
389
+ const button = screen.getByRole("button");
390
+ await user.click(button);
391
+ // Should still show idle when active is missing
392
+ const image = screen.getByAltText("test-hotspot");
393
+ expect(image.getAttribute("src")).toBe("/images/idle.png");
394
+ });
395
+ test("handles missing disabled content gracefully", () => {
396
+ const mockAction = mock(() => { });
397
+ const hotspot = {
398
+ id: "test-hotspot",
399
+ type: "image",
400
+ position: { x: 50, y: 50 },
401
+ content: {
402
+ idle: "/images/idle.png",
403
+ },
404
+ action: mockAction,
405
+ isDisabled: true,
406
+ };
407
+ render(createElement(ImageHotspot, { hotspot }));
408
+ // Should show idle when disabled content is missing
409
+ const image = screen.getByAltText("test-hotspot");
410
+ expect(image.getAttribute("src")).toBe("/images/idle.png");
411
+ });
412
+ test("handles zoom prop correctly", () => {
413
+ const mockAction = mock(() => { });
414
+ const hotspot = {
415
+ id: "test-hotspot",
416
+ type: "image",
417
+ position: { x: 50, y: 50 },
418
+ content: {
419
+ idle: "/images/idle.png",
420
+ },
421
+ action: mockAction,
422
+ props: {
423
+ zoom: "150%",
424
+ },
425
+ };
426
+ const { container } = render(createElement(ImageHotspot, { hotspot }));
427
+ const button = container.querySelector("button");
428
+ expect(button).toBeTruthy();
429
+ // parseFloat("150%") / 100 = 1.5
430
+ const style = button.style;
431
+ expect(style.transform).toBe("scale(1.5)");
432
+ });
433
+ test("handles zero scaleFactor", () => {
434
+ const mockAction = mock(() => { });
435
+ const hotspot = {
436
+ id: "test-hotspot",
437
+ type: "image",
438
+ position: { x: 50, y: 50 },
439
+ content: {
440
+ idle: "/images/idle.png",
441
+ },
442
+ action: mockAction,
443
+ };
444
+ const imagePositionInfo = {
445
+ scaleFactor: 0,
446
+ offsetLeft: 100,
447
+ offsetTop: 100,
448
+ scaledWidth: 500,
449
+ scaledHeight: 500,
450
+ };
451
+ const { container } = render(createElement(ImageHotspot, { hotspot, imagePositionInfo }));
452
+ const button = container.querySelector("button");
453
+ expect(button).toBeTruthy();
454
+ const style = button.style;
455
+ // Zero scaleFactor should be preserved (not treated as falsy)
456
+ expect(style.transform).toBe("scale(0)");
457
+ });
458
+ });
459
+ });
460
+ //# sourceMappingURL=ImageHotspot.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageHotspot.test.js","sourceRoot":"","sources":["../../../src/tests/InteractiveMapComponent/ImageHotspot.test.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-text-game/ui",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Themeable React UI component library for text-based games with Tailwind CSS v4, featuring story passages, interactive maps, and customizable game interfaces",
5
5
  "private": false,
6
6
  "type": "module",
@@ -8,7 +8,7 @@
8
8
  "module": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
10
10
  "repository": "github:laruss/react-text-game",
11
- "homepage": "https://laruss.github.io/react-text-game/",
11
+ "homepage": "https://reacttextgame.dev/",
12
12
  "scripts": {
13
13
  "dev": "tsc --watch & tsc-alias --watch & bun run build:css --watch",
14
14
  "build": "tsc && tsc-alias && bun run build:css",
@@ -48,7 +48,7 @@
48
48
  "tsc-alias": "^1.8.16",
49
49
  "@tailwindcss/postcss": "^4.0.0",
50
50
  "postcss": "^8.4.49",
51
- "@react-text-game/core": "0.3.0"
51
+ "@react-text-game/core": "0.5.1"
52
52
  },
53
53
  "imports": {
54
54
  "#*": "./dist/*"