nvis-fe-cms-libs 2.0.9 → 2.1.1

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.
@@ -2900,7 +2900,7 @@ const __iconNode = [
2900
2900
  ]
2901
2901
  ];
2902
2902
  const Zap = createLucideIcon("zap", __iconNode);
2903
- const DiagramSection = ({ data, t, isDarkMode }) => {
2903
+ const DiagramSection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
2904
2904
  var _a, _b;
2905
2905
  const [mounted, setMounted] = useState(false);
2906
2906
  const [isMobile, setIsMobile] = useState(false);
@@ -2918,12 +2918,55 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
2918
2918
  return () => window.removeEventListener("resize", checkMobile);
2919
2919
  }, []);
2920
2920
  const diagramData = (_b = (_a = data == null ? void 0 : data.sectionDataBindingItems) == null ? void 0 : _a[0]) == null ? void 0 : _b.data;
2921
+ const getImageUrl = (images) => {
2922
+ console.log("getImageUrl called with:", images);
2923
+ console.log("Type of images:", typeof images);
2924
+ if (!images) {
2925
+ console.log("No images found");
2926
+ return null;
2927
+ }
2928
+ let imageUrl;
2929
+ if (typeof images === "string") {
2930
+ imageUrl = images;
2931
+ } else if (Array.isArray(images) && images.length > 0) {
2932
+ imageUrl = images[0];
2933
+ } else {
2934
+ console.log("Invalid images format");
2935
+ return null;
2936
+ }
2937
+ console.log("Image URL:", imageUrl);
2938
+ if (!imageUrl || imageUrl.trim() === "") {
2939
+ console.log("Image URL is empty");
2940
+ return null;
2941
+ }
2942
+ if (imageUrl.startsWith("http")) {
2943
+ console.log("Full URL (already has http):", imageUrl);
2944
+ return imageUrl;
2945
+ }
2946
+ const fullUrl = `${imageBaseUrl}${imageUrl}`;
2947
+ console.log("Full URL:", fullUrl);
2948
+ return fullUrl;
2949
+ };
2921
2950
  if (!diagramData) {
2922
2951
  return null;
2923
2952
  }
2924
2953
  const diagramName = diagramData.name || safeT("diagram.defaults.name");
2925
2954
  const diagramDescription = diagramData.description || safeT("diagram.defaults.description");
2926
2955
  const modules = diagramData.diagramChildrenDTOs || [];
2956
+ useEffect(() => {
2957
+ console.log("=== DIAGRAM MODULES DEBUG ===");
2958
+ console.log("Total modules:", modules.length);
2959
+ console.log("imageBaseUrl:", imageBaseUrl);
2960
+ modules.forEach((module, index2) => {
2961
+ console.log(`Module ${index2 + 1}:`, {
2962
+ name: module.name,
2963
+ images: module.images,
2964
+ imagesType: typeof module.images,
2965
+ isArray: Array.isArray(module.images),
2966
+ hasImages: Boolean(module.images)
2967
+ });
2968
+ });
2969
+ }, [modules, imageBaseUrl]);
2927
2970
  const getIconComponent = (iconName) => {
2928
2971
  const icons = {
2929
2972
  Calculator,
@@ -3012,15 +3055,30 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3012
3055
  animation: `slideUp 0.5s ease-out ${index2 * 0.1}s both`
3013
3056
  },
3014
3057
  children: [
3015
- /* @__PURE__ */ jsxRuntimeExports.jsx(
3058
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
3016
3059
  "div",
3017
3060
  {
3018
- className: "flex-shrink-0 p-3 rounded-xl border",
3061
+ className: "flex-shrink-0 p-3 rounded-xl border bg-surface",
3019
3062
  style: {
3020
3063
  backgroundColor: `${colors.iconBg}33`,
3021
3064
  borderColor: colors.border
3022
3065
  },
3023
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-6 h-6 text-inverse", strokeWidth: 2 })
3066
+ children: [
3067
+ module.images ? /* @__PURE__ */ jsxRuntimeExports.jsx(
3068
+ "img",
3069
+ {
3070
+ src: getImageUrl(module.images),
3071
+ alt: module.name,
3072
+ className: "w-6 h-6 object-contain",
3073
+ onError: (e) => {
3074
+ console.error("Image load error:", e.target.src);
3075
+ e.target.style.display = "none";
3076
+ e.target.nextElementSibling.style.display = "block";
3077
+ }
3078
+ }
3079
+ ) : null,
3080
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-6 h-6 text-inverse", strokeWidth: 2, style: { display: module.images ? "none" : "block" } })
3081
+ ]
3024
3082
  }
3025
3083
  ),
3026
3084
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1", children: [
@@ -3276,7 +3334,7 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3276
3334
  ] }, `line-${module.id}`);
3277
3335
  }) }),
3278
3336
  modules.map((module, index2) => {
3279
- const Icon2 = getIconComponent(module.icon);
3337
+ getIconComponent(module.icon);
3280
3338
  const colors = getColorStyles(index2);
3281
3339
  const angle = angles[index2] * Math.PI / 180;
3282
3340
  const radius = 360;
@@ -3284,6 +3342,7 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3284
3342
  const y = Math.sin(angle) * radius;
3285
3343
  const normalizedAngle = (angles[index2] % 360 + 360) % 360;
3286
3344
  const isRightSide = normalizedAngle > 270 || normalizedAngle < 90;
3345
+ const isTopHalf = y < 0;
3287
3346
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
3288
3347
  "a",
3289
3348
  {
@@ -3318,36 +3377,40 @@ const DiagramSection = ({ data, t, isDarkMode }) => {
3318
3377
  style: { borderColor: colors.border }
3319
3378
  }
3320
3379
  ),
3321
- /* @__PURE__ */ jsxRuntimeExports.jsx(
3322
- "div",
3323
- {
3324
- className: "flex-shrink-0 p-2.5 rounded-lg border transition-all duration-300 group-hover:rotate-12 group-hover:scale-125 relative z-10",
3325
- style: {
3326
- backgroundColor: `${colors.iconBg}33`,
3327
- borderColor: colors.border
3328
- },
3329
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "w-5 h-5 text-inverse", strokeWidth: 2 })
3330
- }
3331
- ),
3332
3380
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-1 text-inverse text-small tracking-wide overflow-hidden text-ellipsis whitespace-nowrap ${isRightSide ? "text-right" : "text-left"} relative z-10 min-w-0`, children: module.name }),
3333
3381
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
3334
3382
  "div",
3335
3383
  {
3336
- className: `absolute bottom-full left-1/2 -translate-x-1/2 mb-3 px-4 py-2 rounded-lg shadow-xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none whitespace-nowrap z-50 border max-w-xs ${isDarkMode ? "bg-surface" : "bg-body"}`,
3384
+ className: `absolute ${isTopHalf ? "top-full mt-4" : "bottom-full mb-4"} left-1/2 -translate-x-1/2 px-6 py-4 rounded-xl shadow-2xl opacity-0 group-hover:opacity-100 transition-all duration-300 pointer-events-none z-50 border-2 ${isDarkMode ? "bg-surface" : "bg-body"}`,
3337
3385
  style: {
3338
3386
  borderColor: "var(--border-color)",
3339
- maxHeight: "120px",
3340
- overflowY: "auto"
3387
+ maxHeight: "400px",
3388
+ minWidth: "320px",
3389
+ maxWidth: "420px",
3390
+ overflowY: "auto",
3391
+ whiteSpace: "normal"
3341
3392
  },
3342
3393
  children: [
3343
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-small text-main", children: module.name }),
3344
- module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-caption text-muted mt-1", children: module.description }),
3394
+ module.images && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-3", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3395
+ "img",
3396
+ {
3397
+ src: getImageUrl(module.images),
3398
+ alt: module.name,
3399
+ className: "w-full h-48 object-cover rounded-lg",
3400
+ onError: (e) => {
3401
+ console.error("Tooltip image load error:", e.target.src);
3402
+ e.target.style.display = "none";
3403
+ }
3404
+ }
3405
+ ) }),
3406
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-base text-main font-bold mb-2", children: module.name }),
3407
+ module.description && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-small text-muted leading-relaxed", children: module.description }),
3345
3408
  /* @__PURE__ */ jsxRuntimeExports.jsx(
3346
3409
  "div",
3347
3410
  {
3348
- className: "absolute top-full left-1/2 -translate-x-1/2 -mt-px border-4 border-transparent",
3411
+ className: `absolute ${isTopHalf ? "bottom-full" : "top-full"} left-1/2 -translate-x-1/2 ${isTopHalf ? "-mb-px" : "-mt-px"} border-8 border-transparent`,
3349
3412
  style: {
3350
- borderTopColor: isDarkMode ? "var(--bg-surface)" : "var(--bg-body)"
3413
+ [isTopHalf ? "borderBottomColor" : "borderTopColor"]: isDarkMode ? "var(--bg-surface)" : "var(--bg-body)"
3351
3414
  }
3352
3415
  }
3353
3416
  )