@lv-x-software-house/x_view 1.3.8 → 1.3.9
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/index.js +422 -213
- package/dist/index.mjs +346 -137
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// src/XViewScene.jsx
|
|
2
|
-
import
|
|
2
|
+
import React37, {
|
|
3
3
|
useCallback as useCallback8,
|
|
4
4
|
useEffect as useEffect27,
|
|
5
5
|
useRef as useRef25,
|
|
6
|
-
useState as
|
|
6
|
+
useState as useState34,
|
|
7
7
|
useMemo as useMemo15
|
|
8
8
|
} from "react";
|
|
9
9
|
import { useRouter, useSearchParams } from "next/navigation";
|
|
@@ -5119,8 +5119,8 @@ function ContextMenu({
|
|
|
5119
5119
|
const handleClickOutside = (e) => {
|
|
5120
5120
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
5121
5121
|
};
|
|
5122
|
-
document.addEventListener("
|
|
5123
|
-
return () => document.removeEventListener("
|
|
5122
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
5123
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
5124
5124
|
}, [data.visible, onClose]);
|
|
5125
5125
|
const visibleLinkIds = useMemo(() => {
|
|
5126
5126
|
var _a2;
|
|
@@ -5560,7 +5560,7 @@ function ContextMenu({
|
|
|
5560
5560
|
"div",
|
|
5561
5561
|
{
|
|
5562
5562
|
ref: menuRef,
|
|
5563
|
-
className: "ui-overlay context-menu-class origin-top-left rounded-xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white min-w-[220px] max-w-[min(95vw,420px)]
|
|
5563
|
+
className: "ui-overlay context-menu-class origin-top-left rounded-xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white min-w-[220px] max-w-[min(95vw,420px)] max-h-[85vh] overflow-y-auto custom-scrollbar w-max",
|
|
5564
5564
|
style: { position: "absolute", left: `${menuPos.left}px`, top: `${menuPos.top}px`, zIndex: 1e3 },
|
|
5565
5565
|
onPointerDown: swallow,
|
|
5566
5566
|
onPointerMove: swallow,
|
|
@@ -13789,14 +13789,18 @@ function NodeDetailsPanel({
|
|
|
13789
13789
|
});
|
|
13790
13790
|
const [selectedImageUrl, setSelectedImageUrl] = useState20((node == null ? void 0 : node.textureImageUrl) ?? null);
|
|
13791
13791
|
const [hasUnsavedChanges, setHasUnsavedChanges] = useState20(false);
|
|
13792
|
-
const
|
|
13792
|
+
const isMobile = typeof window !== "undefined" && window.innerWidth < 640;
|
|
13793
|
+
const maxPanelW = typeof window !== "undefined" ? Math.min(window.innerWidth - 32, 1200) : 1200;
|
|
13794
|
+
const defaultWidth = isMobile ? typeof window !== "undefined" ? window.innerWidth - 32 : 360 : isReadMode ? 700 : 440;
|
|
13793
13795
|
const { width: panelWidth, isResizing, handlePointerDown: handleResize, setWidth } = useResizablePanel({
|
|
13794
|
-
initialWidth:
|
|
13795
|
-
minWidth:
|
|
13796
|
+
initialWidth: defaultWidth,
|
|
13797
|
+
minWidth: typeof window !== "undefined" ? Math.min(280, window.innerWidth - 32) : 280,
|
|
13796
13798
|
maxWidth: maxPanelW
|
|
13797
13799
|
});
|
|
13798
13800
|
useEffect17(() => {
|
|
13799
|
-
|
|
13801
|
+
const isMob = typeof window !== "undefined" && window.innerWidth < 640;
|
|
13802
|
+
const targetW = isMob ? typeof window !== "undefined" ? window.innerWidth - 32 : 360 : isReadMode ? 700 : 440;
|
|
13803
|
+
setWidth(targetW);
|
|
13800
13804
|
}, [isReadMode, setWidth]);
|
|
13801
13805
|
const prevNodeIdRef = useRef15(null);
|
|
13802
13806
|
const propsEndRef = useRef15(null);
|
|
@@ -17492,8 +17496,8 @@ function MultiNodeContextMenu({
|
|
|
17492
17496
|
const handleClickOutside = (e) => {
|
|
17493
17497
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
17494
17498
|
};
|
|
17495
|
-
document.addEventListener("
|
|
17496
|
-
return () => document.removeEventListener("
|
|
17499
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
17500
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
17497
17501
|
}, [data.visible, onClose]);
|
|
17498
17502
|
if (!data.visible || !data.nodeIds || data.nodeIds.size === 0) return null;
|
|
17499
17503
|
const swallow = (e) => e.stopPropagation();
|
|
@@ -17934,8 +17938,8 @@ function RelationshipContextMenu({
|
|
|
17934
17938
|
const handleClickOutside = (e) => {
|
|
17935
17939
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
17936
17940
|
};
|
|
17937
|
-
document.addEventListener("
|
|
17938
|
-
return () => document.removeEventListener("
|
|
17941
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
17942
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
17939
17943
|
}, [data.visible, onClose]);
|
|
17940
17944
|
if (!data.visible) return null;
|
|
17941
17945
|
const swallow = (e) => e.stopPropagation();
|
|
@@ -19528,63 +19532,201 @@ function MilestoneManager({
|
|
|
19528
19532
|
}
|
|
19529
19533
|
|
|
19530
19534
|
// src/components/UpgradeModal.jsx
|
|
19535
|
+
import React36, { useState as useState33 } from "react";
|
|
19536
|
+
|
|
19537
|
+
// src/components/icons/UltraMinimalIcon.jsx
|
|
19531
19538
|
import React35 from "react";
|
|
19532
|
-
|
|
19539
|
+
function UltraMinimalIcon({
|
|
19540
|
+
size = 13,
|
|
19541
|
+
className = "",
|
|
19542
|
+
strokeWidth = 1.5,
|
|
19543
|
+
...props
|
|
19544
|
+
}) {
|
|
19545
|
+
return /* @__PURE__ */ React35.createElement(
|
|
19546
|
+
"svg",
|
|
19547
|
+
{
|
|
19548
|
+
width: size,
|
|
19549
|
+
height: size,
|
|
19550
|
+
viewBox: "0 0 24 24",
|
|
19551
|
+
fill: "none",
|
|
19552
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
19553
|
+
className: `inline-block shrink-0 transition-transform duration-200 ${className}`,
|
|
19554
|
+
...props
|
|
19555
|
+
},
|
|
19556
|
+
/* @__PURE__ */ React35.createElement(
|
|
19557
|
+
"path",
|
|
19558
|
+
{
|
|
19559
|
+
d: "M6 3h12l4 6-10 12L2 9l4-6z",
|
|
19560
|
+
stroke: "currentColor",
|
|
19561
|
+
strokeWidth,
|
|
19562
|
+
strokeLinecap: "round",
|
|
19563
|
+
strokeLinejoin: "round"
|
|
19564
|
+
}
|
|
19565
|
+
),
|
|
19566
|
+
/* @__PURE__ */ React35.createElement(
|
|
19567
|
+
"path",
|
|
19568
|
+
{
|
|
19569
|
+
d: "M11 3v6",
|
|
19570
|
+
stroke: "currentColor",
|
|
19571
|
+
strokeWidth,
|
|
19572
|
+
strokeLinecap: "round",
|
|
19573
|
+
strokeLinejoin: "round"
|
|
19574
|
+
}
|
|
19575
|
+
),
|
|
19576
|
+
/* @__PURE__ */ React35.createElement(
|
|
19577
|
+
"path",
|
|
19578
|
+
{
|
|
19579
|
+
d: "M13 3v6",
|
|
19580
|
+
stroke: "currentColor",
|
|
19581
|
+
strokeWidth,
|
|
19582
|
+
strokeLinecap: "round",
|
|
19583
|
+
strokeLinejoin: "round"
|
|
19584
|
+
}
|
|
19585
|
+
),
|
|
19586
|
+
/* @__PURE__ */ React35.createElement(
|
|
19587
|
+
"path",
|
|
19588
|
+
{
|
|
19589
|
+
d: "M2 9h20",
|
|
19590
|
+
stroke: "currentColor",
|
|
19591
|
+
strokeWidth,
|
|
19592
|
+
strokeLinecap: "round",
|
|
19593
|
+
strokeLinejoin: "round"
|
|
19594
|
+
}
|
|
19595
|
+
),
|
|
19596
|
+
/* @__PURE__ */ React35.createElement(
|
|
19597
|
+
"path",
|
|
19598
|
+
{
|
|
19599
|
+
d: "M12 21L8 9",
|
|
19600
|
+
stroke: "currentColor",
|
|
19601
|
+
strokeWidth,
|
|
19602
|
+
strokeLinecap: "round",
|
|
19603
|
+
strokeLinejoin: "round"
|
|
19604
|
+
}
|
|
19605
|
+
),
|
|
19606
|
+
/* @__PURE__ */ React35.createElement(
|
|
19607
|
+
"path",
|
|
19608
|
+
{
|
|
19609
|
+
d: "M12 21l4-12",
|
|
19610
|
+
stroke: "currentColor",
|
|
19611
|
+
strokeWidth,
|
|
19612
|
+
strokeLinecap: "round",
|
|
19613
|
+
strokeLinejoin: "round"
|
|
19614
|
+
}
|
|
19615
|
+
)
|
|
19616
|
+
);
|
|
19617
|
+
}
|
|
19618
|
+
|
|
19619
|
+
// src/components/UpgradeModal.jsx
|
|
19533
19620
|
function UpgradeModal({
|
|
19534
19621
|
isOpen,
|
|
19535
19622
|
onClose,
|
|
19536
|
-
nodeCounter,
|
|
19623
|
+
nodeCounter = 0,
|
|
19537
19624
|
nodeLimit = 100,
|
|
19625
|
+
plan,
|
|
19538
19626
|
onUpgrade
|
|
19539
19627
|
}) {
|
|
19628
|
+
const [isSubmitting, setIsSubmitting] = useState33(false);
|
|
19540
19629
|
if (!isOpen) return null;
|
|
19541
|
-
|
|
19542
|
-
|
|
19543
|
-
|
|
19544
|
-
|
|
19545
|
-
|
|
19546
|
-
|
|
19547
|
-
|
|
19548
|
-
|
|
19549
|
-
|
|
19550
|
-
|
|
19551
|
-
|
|
19552
|
-
|
|
19630
|
+
const currentPlan = plan || (nodeLimit === -1 ? "premium" : "free");
|
|
19631
|
+
const handleUpgradeClick = async () => {
|
|
19632
|
+
if (isSubmitting) return;
|
|
19633
|
+
setIsSubmitting(true);
|
|
19634
|
+
try {
|
|
19635
|
+
if (onUpgrade) {
|
|
19636
|
+
await onUpgrade();
|
|
19637
|
+
} else {
|
|
19638
|
+
alert("Redirecting to checkout...");
|
|
19639
|
+
}
|
|
19640
|
+
} catch (error) {
|
|
19641
|
+
console.error("Error during upgrade:", error);
|
|
19642
|
+
} finally {
|
|
19643
|
+
setIsSubmitting(false);
|
|
19644
|
+
}
|
|
19645
|
+
};
|
|
19646
|
+
const limit = nodeLimit === -1 ? 100 : nodeLimit;
|
|
19647
|
+
const safeNodeCounter = Math.max(0, nodeCounter || 0);
|
|
19648
|
+
const usagePercentage = Math.min(
|
|
19649
|
+
100,
|
|
19650
|
+
Math.round(safeNodeCounter / limit * 100)
|
|
19651
|
+
);
|
|
19652
|
+
return /* @__PURE__ */ React36.createElement("div", { className: "fixed inset-0 bg-slate-950/40 backdrop-blur-md z-[10000] flex justify-center items-center p-4 animate-in fade-in duration-300 font-sans select-none" }, /* @__PURE__ */ React36.createElement("div", { className: "bg-[#0b1224]/80 border border-cyan-600/20 p-7 rounded-3xl shadow-[0_0_50px_-12px_rgba(6,182,212,0.2)] w-full max-w-[380px] relative text-center overflow-hidden animate-in zoom-in-95 duration-300" }, /* @__PURE__ */ React36.createElement("div", { className: "absolute -top-20 left-1/2 -translate-x-1/2 w-40 h-40 bg-cyan-600/10 rounded-full blur-[60px] pointer-events-none" }), /* @__PURE__ */ React36.createElement("div", { className: "flex justify-center mb-4 relative" }, /* @__PURE__ */ React36.createElement("div", { className: "relative w-14 h-14 flex items-center justify-center" }, /* @__PURE__ */ React36.createElement("div", { className: "absolute inset-0 bg-cyan-500 rounded-full blur-2xl opacity-20 animate-pulse" }), /* @__PURE__ */ React36.createElement("div", { className: "relative w-12 h-12 rounded-xl bg-slate-900 border border-cyan-400/30 shadow-lg flex items-center justify-center z-10 animate-float" }, /* @__PURE__ */ React36.createElement(
|
|
19653
|
+
UltraMinimalIcon,
|
|
19654
|
+
{
|
|
19655
|
+
size: 22,
|
|
19656
|
+
className: "text-cyan-400",
|
|
19657
|
+
strokeWidth: 2
|
|
19658
|
+
}
|
|
19659
|
+
)))), /* @__PURE__ */ React36.createElement("h2", { className: "text-xl font-bold text-white mb-1 tracking-tight font-sans" }, "Upgrade x.plore"), /* @__PURE__ */ React36.createElement("p", { className: "text-slate-400 text-[11px] mb-6 leading-relaxed px-4 font-medium italic" }, "Unlock unlimited nodes and community features."), /* @__PURE__ */ React36.createElement("div", { className: "grid grid-cols-2 gap-3 mb-3 text-left" }, /* @__PURE__ */ React36.createElement("div", { className: "bg-gradient-to-b from-[#0e172a]/90 to-[#070c18]/90 border border-cyan-500/20 hover:border-cyan-400/40 p-3.5 rounded-2xl flex flex-col justify-between shadow-md transition-all duration-300" }, /* @__PURE__ */ React36.createElement("div", null, /* @__PURE__ */ React36.createElement("span", { className: "text-xs font-sans font-normal text-cyan-400/80 tracking-normal block mb-1.5" }, "Node Usage"), /* @__PURE__ */ React36.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React36.createElement("span", { className: "text-lg font-bold text-white font-sans tracking-tight" }, nodeCounter), /* @__PURE__ */ React36.createElement("span", { className: "text-xs font-sans font-medium text-slate-400" }, "/ ", currentPlan === "premium" ? "\u221E" : "100"))), currentPlan !== "premium" && /* @__PURE__ */ React36.createElement("div", { className: "mt-2.5" }, /* @__PURE__ */ React36.createElement("div", { className: "w-full h-1.5 bg-slate-900 border border-white/5 rounded-full overflow-hidden p-[1px]" }, /* @__PURE__ */ React36.createElement(
|
|
19553
19660
|
"div",
|
|
19554
19661
|
{
|
|
19555
|
-
className: "
|
|
19556
|
-
|
|
19662
|
+
className: `h-full rounded-full transition-all duration-500 ${usagePercentage >= 100 ? "bg-gradient-to-r from-rose-500 to-pink-500 shadow-[0_0_8px_#f43f5e]" : "bg-gradient-to-r from-cyan-500 to-sky-300 shadow-[0_0_8px_#22d3ee]"}`,
|
|
19663
|
+
style: { width: `${usagePercentage}%` }
|
|
19557
19664
|
}
|
|
19558
|
-
), /* @__PURE__ */
|
|
19665
|
+
)))), /* @__PURE__ */ React36.createElement("div", { className: "bg-gradient-to-b from-[#0e172a]/90 to-[#070c18]/90 border border-cyan-500/20 hover:border-cyan-400/40 p-3.5 rounded-2xl flex flex-col justify-between shadow-md transition-all duration-300" }, /* @__PURE__ */ React36.createElement("div", null, /* @__PURE__ */ React36.createElement("span", { className: "text-xs font-sans font-normal text-cyan-400/80 tracking-normal block mb-1.5" }, "Current Plan"), /* @__PURE__ */ React36.createElement("div", { className: "mt-1" }, /* @__PURE__ */ React36.createElement(
|
|
19666
|
+
"span",
|
|
19667
|
+
{
|
|
19668
|
+
className: `inline-flex items-center gap-1.5 px-2.5 py-1 rounded-lg border text-xs font-normal font-sans tracking-normal ${currentPlan === "premium" ? "bg-indigo-500/15 border-indigo-400/30 text-indigo-300" : "bg-cyan-500/10 border-cyan-400/30 text-cyan-300"}`
|
|
19669
|
+
},
|
|
19670
|
+
/* @__PURE__ */ React36.createElement(
|
|
19671
|
+
"span",
|
|
19672
|
+
{
|
|
19673
|
+
className: `w-1.5 h-1.5 rounded-full animate-pulse ${currentPlan === "premium" ? "bg-indigo-400 shadow-[0_0_6px_#818cf8]" : "bg-cyan-400 shadow-[0_0_6px_#22d3ee]"}`
|
|
19674
|
+
}
|
|
19675
|
+
),
|
|
19676
|
+
currentPlan === "premium" ? "Premium" : "Free"
|
|
19677
|
+
))))), /* @__PURE__ */ React36.createElement("div", { className: "bg-gradient-to-b from-[#0e172a]/70 to-[#070c18]/80 border border-cyan-500/15 p-3.5 rounded-2xl space-y-2.5 mb-5 text-left shadow-sm" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center gap-2.5 text-slate-200 text-xs font-medium" }, /* @__PURE__ */ React36.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-cyan-400 shadow-[0_0_6px_#22d3ee] shrink-0" }), /* @__PURE__ */ React36.createElement("span", null, "Unlimited Nodes")), /* @__PURE__ */ React36.createElement("div", { className: "flex items-center gap-2.5 text-slate-200 text-xs font-medium" }, /* @__PURE__ */ React36.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-cyan-400 shadow-[0_0_6px_#22d3ee] shrink-0" }), /* @__PURE__ */ React36.createElement("span", null, "Community and collaboration features"))), /* @__PURE__ */ React36.createElement("div", { className: "space-y-2.5" }, currentPlan !== "premium" ? /* @__PURE__ */ React36.createElement(
|
|
19559
19678
|
"button",
|
|
19560
19679
|
{
|
|
19561
|
-
onClick:
|
|
19562
|
-
|
|
19680
|
+
onClick: handleUpgradeClick,
|
|
19681
|
+
disabled: isSubmitting,
|
|
19682
|
+
className: "group relative w-full py-3.5 rounded-xl bg-gradient-to-r from-cyan-400 to-cyan-500 hover:from-cyan-300 hover:to-cyan-400 text-slate-950 font-normal text-sm tracking-normal font-sans shadow-[0_0_15px_rgba(34,211,238,0.22)] hover:shadow-[0_0_22px_rgba(34,211,238,0.38)] hover:scale-[1.01] active:scale-[0.98] transition-all duration-300 overflow-hidden cursor-pointer border border-cyan-300/30 disabled:opacity-30 disabled:grayscale"
|
|
19563
19683
|
},
|
|
19564
|
-
/* @__PURE__ */
|
|
19565
|
-
|
|
19684
|
+
/* @__PURE__ */ React36.createElement("div", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white/40 to-transparent -translate-x-full group-hover:translate-x-full transition-transform duration-700 ease-in-out pointer-events-none" }),
|
|
19685
|
+
isSubmitting ? /* @__PURE__ */ React36.createElement("div", { className: "relative z-10 flex items-center justify-center gap-2" }, /* @__PURE__ */ React36.createElement("div", { className: "h-4 w-4 border-2 border-slate-950/30 border-t-slate-950 rounded-full animate-spin" })) : /* @__PURE__ */ React36.createElement("span", { className: "relative z-10 font-normal" }, "Upgrade Now")
|
|
19686
|
+
) : /* @__PURE__ */ React36.createElement("div", { className: "w-full py-3 rounded-xl bg-indigo-500/10 border border-indigo-500/30 text-indigo-300 font-normal text-sm text-center flex items-center justify-center gap-2 font-sans tracking-normal" }, /* @__PURE__ */ React36.createElement("span", null, "Your Account is Premium")), /* @__PURE__ */ React36.createElement(
|
|
19566
19687
|
"button",
|
|
19567
19688
|
{
|
|
19568
|
-
|
|
19569
|
-
|
|
19570
|
-
if (onUpgrade) {
|
|
19571
|
-
await onUpgrade();
|
|
19572
|
-
} else {
|
|
19573
|
-
alert("Redirecionando para upgrade... (Em breve)");
|
|
19574
|
-
}
|
|
19575
|
-
onClose();
|
|
19576
|
-
}
|
|
19689
|
+
onClick: onClose,
|
|
19690
|
+
className: "w-full py-2.5 rounded-xl bg-slate-950/50 hover:bg-slate-900 border border-slate-800 text-slate-400 hover:text-white text-xs font-semibold transition-all duration-300 active:scale-[0.98] cursor-pointer text-center"
|
|
19577
19691
|
},
|
|
19578
|
-
"
|
|
19579
|
-
|
|
19580
|
-
), /* @__PURE__ */ React35.createElement(
|
|
19692
|
+
currentPlan === "premium" ? "Close" : "Continue with Free Plan"
|
|
19693
|
+
)), /* @__PURE__ */ React36.createElement(
|
|
19581
19694
|
"button",
|
|
19582
19695
|
{
|
|
19583
19696
|
onClick: onClose,
|
|
19584
|
-
className: "
|
|
19697
|
+
className: "absolute top-6 right-6 text-slate-500 hover:text-cyan-400 transition-all duration-300 p-1 hover:rotate-90 cursor-pointer",
|
|
19698
|
+
"aria-label": "Close modal"
|
|
19585
19699
|
},
|
|
19586
|
-
|
|
19587
|
-
|
|
19700
|
+
/* @__PURE__ */ React36.createElement(
|
|
19701
|
+
"svg",
|
|
19702
|
+
{
|
|
19703
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
19704
|
+
width: "18",
|
|
19705
|
+
height: "18",
|
|
19706
|
+
viewBox: "0 0 24 24",
|
|
19707
|
+
fill: "none",
|
|
19708
|
+
stroke: "currentColor",
|
|
19709
|
+
strokeWidth: "2.5",
|
|
19710
|
+
strokeLinecap: "round",
|
|
19711
|
+
strokeLinejoin: "round"
|
|
19712
|
+
},
|
|
19713
|
+
/* @__PURE__ */ React36.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
19714
|
+
/* @__PURE__ */ React36.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
19715
|
+
)
|
|
19716
|
+
)), /* @__PURE__ */ React36.createElement("style", null, `
|
|
19717
|
+
@keyframes float {
|
|
19718
|
+
0%,
|
|
19719
|
+
100% {
|
|
19720
|
+
transform: translateY(0px);
|
|
19721
|
+
}
|
|
19722
|
+
50% {
|
|
19723
|
+
transform: translateY(-8px);
|
|
19724
|
+
}
|
|
19725
|
+
}
|
|
19726
|
+
.animate-float {
|
|
19727
|
+
animation: float 4s ease-in-out infinite;
|
|
19728
|
+
}
|
|
19729
|
+
`));
|
|
19588
19730
|
}
|
|
19589
19731
|
|
|
19590
19732
|
// src/XViewScene.jsx
|
|
@@ -19818,44 +19960,46 @@ function XViewScene({
|
|
|
19818
19960
|
const parentDataRef = useRef25(null);
|
|
19819
19961
|
const graphDataRef = parentDataRef;
|
|
19820
19962
|
const ancestryDataRef = useRef25(null);
|
|
19821
|
-
const [isLoading, setIsLoading] =
|
|
19822
|
-
const [isProcessing, setIsProcessing] =
|
|
19823
|
-
const [permissionStatus, setPermissionStatus] =
|
|
19824
|
-
const [userPermissionRole, setUserPermissionRole] =
|
|
19825
|
-
const [viewMembers, setViewMembers] =
|
|
19826
|
-
const [isInitialized, setIsInitialized] =
|
|
19827
|
-
const [sceneVersion, setSceneVersion] =
|
|
19828
|
-
const [contextMenu, setContextMenu] =
|
|
19963
|
+
const [isLoading, setIsLoading] = useState34(true);
|
|
19964
|
+
const [isProcessing, setIsProcessing] = useState34(false);
|
|
19965
|
+
const [permissionStatus, setPermissionStatus] = useState34("loading");
|
|
19966
|
+
const [userPermissionRole, setUserPermissionRole] = useState34(null);
|
|
19967
|
+
const [viewMembers, setViewMembers] = useState34([]);
|
|
19968
|
+
const [isInitialized, setIsInitialized] = useState34(false);
|
|
19969
|
+
const [sceneVersion, setSceneVersion] = useState34(0);
|
|
19970
|
+
const [contextMenu, setContextMenu] = useState34({
|
|
19829
19971
|
visible: false,
|
|
19830
19972
|
x: 0,
|
|
19831
19973
|
y: 0,
|
|
19832
19974
|
nodeData: null
|
|
19833
19975
|
});
|
|
19834
|
-
const [multiContextMenu, setMultiContextMenu] =
|
|
19976
|
+
const [multiContextMenu, setMultiContextMenu] = useState34({
|
|
19835
19977
|
visible: false,
|
|
19836
19978
|
x: 0,
|
|
19837
19979
|
y: 0,
|
|
19838
19980
|
nodeIds: null
|
|
19839
19981
|
});
|
|
19840
|
-
const [relationshipMenu, setRelationshipMenu] =
|
|
19982
|
+
const [relationshipMenu, setRelationshipMenu] = useState34({
|
|
19841
19983
|
visible: false,
|
|
19842
19984
|
x: 0,
|
|
19843
19985
|
y: 0,
|
|
19844
19986
|
linkObject: null
|
|
19845
19987
|
});
|
|
19846
|
-
const [creationMode, setCreationMode] =
|
|
19988
|
+
const [creationMode, setCreationMode] = useState34({
|
|
19847
19989
|
isActive: false,
|
|
19848
19990
|
sourceNodeData: null
|
|
19849
19991
|
});
|
|
19850
|
-
const [versionMode, setVersionMode] =
|
|
19992
|
+
const [versionMode, setVersionMode] = useState34({
|
|
19851
19993
|
isActive: false,
|
|
19852
19994
|
sourceNodeData: null
|
|
19853
19995
|
});
|
|
19854
|
-
const [questMode, setQuestMode] =
|
|
19855
|
-
const [processMode, setProcessMode] =
|
|
19856
|
-
const
|
|
19857
|
-
const
|
|
19858
|
-
const [
|
|
19996
|
+
const [questMode, setQuestMode] = useState34({ isActive: false });
|
|
19997
|
+
const [processMode, setProcessMode] = useState34({ isActive: false });
|
|
19998
|
+
const longPressTimeoutRef = useRef25(null);
|
|
19999
|
+
const isLongPressTriggeredRef = useRef25(false);
|
|
20000
|
+
const [hasFocusedInitial, setHasFocusedInitial] = useState34(false);
|
|
20001
|
+
const [hasOpenedInitialAncestry, setHasOpenedInitialAncestry] = useState34(false);
|
|
20002
|
+
const [questTreeMode, setQuestTreeMode] = useState34({
|
|
19859
20003
|
isActive: false,
|
|
19860
20004
|
questNodeId: null,
|
|
19861
20005
|
questTempData: null,
|
|
@@ -19865,7 +20009,7 @@ function XViewScene({
|
|
|
19865
20009
|
isAddingNodes: false,
|
|
19866
20010
|
isAddingAbstractionNodes: false
|
|
19867
20011
|
});
|
|
19868
|
-
const [processTreeMode, setProcessTreeMode] =
|
|
20012
|
+
const [processTreeMode, setProcessTreeMode] = useState34({
|
|
19869
20013
|
isActive: false,
|
|
19870
20014
|
processNodeId: null,
|
|
19871
20015
|
processTempData: null,
|
|
@@ -19875,7 +20019,7 @@ function XViewScene({
|
|
|
19875
20019
|
isAddingNodes: false,
|
|
19876
20020
|
isAddingAbstractionNodes: false
|
|
19877
20021
|
});
|
|
19878
|
-
const [ancestryMode, setAncestryMode] =
|
|
20022
|
+
const [ancestryMode, setAncestryMode] = useState34({
|
|
19879
20023
|
isActive: false,
|
|
19880
20024
|
tree: null,
|
|
19881
20025
|
selectedParentId: null,
|
|
@@ -19886,41 +20030,41 @@ function XViewScene({
|
|
|
19886
20030
|
ancestryDescriptionSections: [],
|
|
19887
20031
|
isAddingNodes: false
|
|
19888
20032
|
});
|
|
19889
|
-
const [readingMode, setReadingMode] =
|
|
20033
|
+
const [readingMode, setReadingMode] = useState34({
|
|
19890
20034
|
isActive: false,
|
|
19891
20035
|
ancestry: null,
|
|
19892
20036
|
branchStack: [],
|
|
19893
20037
|
autoAbstraction: false
|
|
19894
20038
|
});
|
|
19895
|
-
const [formPosition, setFormPosition] =
|
|
20039
|
+
const [formPosition, setFormPosition] = useState34({
|
|
19896
20040
|
left: 16,
|
|
19897
20041
|
top: 16,
|
|
19898
20042
|
opacity: 0
|
|
19899
20043
|
});
|
|
19900
|
-
const [detailsNode, setDetailsNode] =
|
|
19901
|
-
const [detailsLink, setDetailsLink] =
|
|
19902
|
-
const [ancestryLinkDetails, setAncestryLinkDetails] =
|
|
19903
|
-
const [imageViewer, setImageViewer] =
|
|
20044
|
+
const [detailsNode, setDetailsNode] = useState34(null);
|
|
20045
|
+
const [detailsLink, setDetailsLink] = useState34(null);
|
|
20046
|
+
const [ancestryLinkDetails, setAncestryLinkDetails] = useState34(null);
|
|
20047
|
+
const [imageViewer, setImageViewer] = useState34({
|
|
19904
20048
|
visible: false,
|
|
19905
20049
|
images: [],
|
|
19906
20050
|
startIndex: 0
|
|
19907
20051
|
});
|
|
19908
|
-
const [editingAncestryRel, setEditingAncestryRel] =
|
|
20052
|
+
const [editingAncestryRel, setEditingAncestryRel] = useState34({
|
|
19909
20053
|
visible: false,
|
|
19910
20054
|
data: null,
|
|
19911
20055
|
path: null
|
|
19912
20056
|
});
|
|
19913
|
-
const [isImportModalOpen, setIsImportModalOpen] =
|
|
19914
|
-
const [importSuccessMessage, setImportSuccessMessage] =
|
|
19915
|
-
const [invalidTargetError, setInvalidTargetError] =
|
|
19916
|
-
const [highlightedNodeId, setHighlightedNodeId] =
|
|
19917
|
-
const [isBoardsOpen, setIsBoardsOpen] =
|
|
19918
|
-
const [boardItems, setBoardItems] =
|
|
19919
|
-
const [isSidebarOpen, setIsSidebarOpen] =
|
|
19920
|
-
const [isMilestoneManagerOpen, setIsMilestoneManagerOpen] =
|
|
19921
|
-
const [nodeCounter, setNodeCounter] =
|
|
19922
|
-
const [isUpgradeModalOpen, setIsUpgradeModalOpen] =
|
|
19923
|
-
const [nodeLimit, setNodeLimit] =
|
|
20057
|
+
const [isImportModalOpen, setIsImportModalOpen] = useState34(false);
|
|
20058
|
+
const [importSuccessMessage, setImportSuccessMessage] = useState34("");
|
|
20059
|
+
const [invalidTargetError, setInvalidTargetError] = useState34(null);
|
|
20060
|
+
const [highlightedNodeId, setHighlightedNodeId] = useState34(null);
|
|
20061
|
+
const [isBoardsOpen, setIsBoardsOpen] = useState34(false);
|
|
20062
|
+
const [boardItems, setBoardItems] = useState34([]);
|
|
20063
|
+
const [isSidebarOpen, setIsSidebarOpen] = useState34(false);
|
|
20064
|
+
const [isMilestoneManagerOpen, setIsMilestoneManagerOpen] = useState34(false);
|
|
20065
|
+
const [nodeCounter, setNodeCounter] = useState34(0);
|
|
20066
|
+
const [isUpgradeModalOpen, setIsUpgradeModalOpen] = useState34(false);
|
|
20067
|
+
const [nodeLimit, setNodeLimit] = useState34(100);
|
|
19924
20068
|
const mountRef = useRef25(null);
|
|
19925
20069
|
const tooltipRef = useRef25(null);
|
|
19926
20070
|
const formRef = useRef25(null);
|
|
@@ -21148,11 +21292,17 @@ function XViewScene({
|
|
|
21148
21292
|
renderer.outputColorSpace = THREE3.SRGBColorSpace;
|
|
21149
21293
|
renderer.toneMapping = THREE3.ACESFilmicToneMapping;
|
|
21150
21294
|
renderer.toneMappingExposure = 1.2;
|
|
21295
|
+
currentMount.style.touchAction = "none";
|
|
21296
|
+
renderer.domElement.style.touchAction = "none";
|
|
21151
21297
|
currentMount.appendChild(renderer.domElement);
|
|
21152
21298
|
stateRef.current.renderer = renderer;
|
|
21153
21299
|
const controls = new OrbitControls(camera, renderer.domElement);
|
|
21154
21300
|
controls.enableDamping = true;
|
|
21155
21301
|
controls.dampingFactor = 0.05;
|
|
21302
|
+
controls.touches = {
|
|
21303
|
+
ONE: THREE3.TOUCH.ROTATE,
|
|
21304
|
+
TWO: THREE3.TOUCH.DOLLY_PAN
|
|
21305
|
+
};
|
|
21156
21306
|
stateRef.current.controls = controls;
|
|
21157
21307
|
scene.add(new THREE3.AmbientLight(16777215, 0.1));
|
|
21158
21308
|
const directionalLight = new THREE3.DirectionalLight(16777215, 0.2);
|
|
@@ -21377,21 +21527,58 @@ function XViewScene({
|
|
|
21377
21527
|
stateRef.current.dragCandidate = null;
|
|
21378
21528
|
return;
|
|
21379
21529
|
}
|
|
21380
|
-
if (event.button !== 0) return;
|
|
21530
|
+
if (event.button !== 0 && event.pointerType !== "touch") return;
|
|
21381
21531
|
if (picked && !stateRef.current.ancestry.isActive) {
|
|
21382
21532
|
stateRef.current.controls.enabled = false;
|
|
21383
21533
|
}
|
|
21384
21534
|
stateRef.current.pointerDown = {
|
|
21385
21535
|
isDown: true,
|
|
21386
21536
|
x: event.clientX,
|
|
21387
|
-
y: event.clientY
|
|
21537
|
+
y: event.clientY,
|
|
21538
|
+
pointerType: event.pointerType
|
|
21388
21539
|
};
|
|
21389
21540
|
stateRef.current.dragCandidate = picked;
|
|
21541
|
+
if (event.pointerType === "touch" || event.pointerType === "pen") {
|
|
21542
|
+
if (longPressTimeoutRef.current) {
|
|
21543
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21544
|
+
}
|
|
21545
|
+
isLongPressTriggeredRef.current = false;
|
|
21546
|
+
if (picked) {
|
|
21547
|
+
const touchX = event.clientX;
|
|
21548
|
+
const touchY = event.clientY;
|
|
21549
|
+
longPressTimeoutRef.current = setTimeout(() => {
|
|
21550
|
+
isLongPressTriggeredRef.current = true;
|
|
21551
|
+
if (typeof navigator !== "undefined" && navigator.vibrate) {
|
|
21552
|
+
navigator.vibrate(40);
|
|
21553
|
+
}
|
|
21554
|
+
setContextMenu({
|
|
21555
|
+
visible: true,
|
|
21556
|
+
x: touchX,
|
|
21557
|
+
y: touchY,
|
|
21558
|
+
nodeData: picked.userData
|
|
21559
|
+
});
|
|
21560
|
+
setMultiContextMenu((prev) => ({ ...prev, visible: false }));
|
|
21561
|
+
setRelationshipMenu((prev) => ({ ...prev, visible: false }));
|
|
21562
|
+
setDetailsNode(null);
|
|
21563
|
+
}, 450);
|
|
21564
|
+
}
|
|
21565
|
+
}
|
|
21390
21566
|
}
|
|
21391
21567
|
function onPointerMove(event) {
|
|
21392
21568
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21393
21569
|
if (isFromUiOverlay(event)) return;
|
|
21394
21570
|
setMouseFromEvent(event);
|
|
21571
|
+
if (stateRef.current.pointerDown.isDown) {
|
|
21572
|
+
const dx = event.clientX - stateRef.current.pointerDown.x;
|
|
21573
|
+
const dy = event.clientY - stateRef.current.pointerDown.y;
|
|
21574
|
+
const dist = Math.hypot(dx, dy);
|
|
21575
|
+
if (dist > (x_view_config.DRAG_THRESHOLD_PX || 5)) {
|
|
21576
|
+
if (longPressTimeoutRef.current) {
|
|
21577
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21578
|
+
longPressTimeoutRef.current = null;
|
|
21579
|
+
}
|
|
21580
|
+
}
|
|
21581
|
+
}
|
|
21395
21582
|
if (stateRef.current.isDragging && stateRef.current.draggedNode) {
|
|
21396
21583
|
const raycaster2 = new THREE3.Raycaster();
|
|
21397
21584
|
raycaster2.setFromCamera(mouse, camera);
|
|
@@ -21434,7 +21621,7 @@ function XViewScene({
|
|
|
21434
21621
|
return;
|
|
21435
21622
|
}
|
|
21436
21623
|
if (stateRef.current.creation.isActive) return;
|
|
21437
|
-
if (stateRef.current.pointerDown.isDown && stateRef.current.dragCandidate) {
|
|
21624
|
+
if (stateRef.current.pointerDown.isDown && stateRef.current.dragCandidate && !isLongPressTriggeredRef.current) {
|
|
21438
21625
|
const dx = event.clientX - stateRef.current.pointerDown.x;
|
|
21439
21626
|
const dy = event.clientY - stateRef.current.pointerDown.y;
|
|
21440
21627
|
if (Math.hypot(dx, dy) > x_view_config.DRAG_THRESHOLD_PX) {
|
|
@@ -21466,6 +21653,17 @@ function XViewScene({
|
|
|
21466
21653
|
async function onPointerUp(event) {
|
|
21467
21654
|
var _a2, _b2, _c2;
|
|
21468
21655
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21656
|
+
if (longPressTimeoutRef.current) {
|
|
21657
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21658
|
+
longPressTimeoutRef.current = null;
|
|
21659
|
+
}
|
|
21660
|
+
if (isLongPressTriggeredRef.current) {
|
|
21661
|
+
isLongPressTriggeredRef.current = false;
|
|
21662
|
+
stateRef.current.pointerDown.isDown = false;
|
|
21663
|
+
stateRef.current.dragCandidate = null;
|
|
21664
|
+
stateRef.current.controls.enabled = true;
|
|
21665
|
+
return;
|
|
21666
|
+
}
|
|
21469
21667
|
if (isFromUiOverlay(event)) return;
|
|
21470
21668
|
const {
|
|
21471
21669
|
connection,
|
|
@@ -21700,7 +21898,7 @@ function XViewScene({
|
|
|
21700
21898
|
stateRef.current.dragCandidate = null;
|
|
21701
21899
|
return;
|
|
21702
21900
|
}
|
|
21703
|
-
if (event.button === 0 && !stateRef.current.creation.isActive && stateRef.current.pointerDown.isDown) {
|
|
21901
|
+
if ((event.button === 0 || event.pointerType === "touch") && !stateRef.current.creation.isActive && stateRef.current.pointerDown.isDown) {
|
|
21704
21902
|
setMouseFromEvent(event);
|
|
21705
21903
|
const clickedNode = stateRef.current.dragCandidate || tryPickNode();
|
|
21706
21904
|
stateRef.current.dragCandidate = null;
|
|
@@ -21709,6 +21907,9 @@ function XViewScene({
|
|
|
21709
21907
|
stateRef.current.selectedNodes.clear();
|
|
21710
21908
|
}
|
|
21711
21909
|
if (clickedNode) {
|
|
21910
|
+
setContextMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21911
|
+
setMultiContextMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21912
|
+
setRelationshipMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21712
21913
|
setDetailsNode({ ...clickedNode.userData });
|
|
21713
21914
|
setDetailsLink(null);
|
|
21714
21915
|
return;
|
|
@@ -21744,6 +21945,14 @@ function XViewScene({
|
|
|
21744
21945
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21745
21946
|
if (isFromUiOverlay(event)) return;
|
|
21746
21947
|
event.preventDefault();
|
|
21948
|
+
if (longPressTimeoutRef.current) {
|
|
21949
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21950
|
+
longPressTimeoutRef.current = null;
|
|
21951
|
+
}
|
|
21952
|
+
isLongPressTriggeredRef.current = true;
|
|
21953
|
+
stateRef.current.pointerDown.isDown = false;
|
|
21954
|
+
stateRef.current.dragCandidate = null;
|
|
21955
|
+
setDetailsNode(null);
|
|
21747
21956
|
if (stateRef.current.creation.isActive || stateRef.current.connection.isActive || stateRef.current.relink.isActive)
|
|
21748
21957
|
return;
|
|
21749
21958
|
setMouseFromEvent(event);
|
|
@@ -25115,7 +25324,7 @@ function XViewScene({
|
|
|
25115
25324
|
// <-- handleCancelQuest adicionado aqui
|
|
25116
25325
|
]);
|
|
25117
25326
|
if (isLoading || status === "loading" || permissionStatus === "loading") {
|
|
25118
|
-
return /* @__PURE__ */
|
|
25327
|
+
return /* @__PURE__ */ React37.createElement(LoadingScreen, null);
|
|
25119
25328
|
}
|
|
25120
25329
|
const overlayHiddenStyle = questTreeMode.isActive || processTreeMode.isActive ? {
|
|
25121
25330
|
opacity: 0,
|
|
@@ -25124,7 +25333,7 @@ function XViewScene({
|
|
|
25124
25333
|
transition: "all 300ms ease-in-out"
|
|
25125
25334
|
} : {};
|
|
25126
25335
|
if (permissionStatus === "corrupted") {
|
|
25127
|
-
return /* @__PURE__ */
|
|
25336
|
+
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React37.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md animate-fade-in" }, /* @__PURE__ */ React37.createElement("div", { className: "mb-4 text-amber-500" }, /* @__PURE__ */ React37.createElement(
|
|
25128
25337
|
"svg",
|
|
25129
25338
|
{
|
|
25130
25339
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25134,7 +25343,7 @@ function XViewScene({
|
|
|
25134
25343
|
stroke: "currentColor",
|
|
25135
25344
|
className: "w-16 h-16 mx-auto"
|
|
25136
25345
|
},
|
|
25137
|
-
/* @__PURE__ */
|
|
25346
|
+
/* @__PURE__ */ React37.createElement(
|
|
25138
25347
|
"path",
|
|
25139
25348
|
{
|
|
25140
25349
|
strokeLinecap: "round",
|
|
@@ -25142,13 +25351,13 @@ function XViewScene({
|
|
|
25142
25351
|
d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
|
|
25143
25352
|
}
|
|
25144
25353
|
)
|
|
25145
|
-
)), /* @__PURE__ */
|
|
25354
|
+
)), /* @__PURE__ */ React37.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Link Inv\xE1lido"), /* @__PURE__ */ React37.createElement("p", { className: "text-slate-400 mb-6" }, "O link de acesso a este cen\xE1rio est\xE1 corrompido, incompleto ou foi alterado de forma incorreta. Por favor, verifique a URL ou retorne ao dashboard."), /* @__PURE__ */ React37.createElement(
|
|
25146
25355
|
"button",
|
|
25147
25356
|
{
|
|
25148
25357
|
onClick: handleNavigateBack,
|
|
25149
25358
|
className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium cursor-pointer"
|
|
25150
25359
|
},
|
|
25151
|
-
/* @__PURE__ */
|
|
25360
|
+
/* @__PURE__ */ React37.createElement(
|
|
25152
25361
|
"svg",
|
|
25153
25362
|
{
|
|
25154
25363
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25158,7 +25367,7 @@ function XViewScene({
|
|
|
25158
25367
|
stroke: "currentColor",
|
|
25159
25368
|
className: "w-5 h-5"
|
|
25160
25369
|
},
|
|
25161
|
-
/* @__PURE__ */
|
|
25370
|
+
/* @__PURE__ */ React37.createElement(
|
|
25162
25371
|
"path",
|
|
25163
25372
|
{
|
|
25164
25373
|
strokeLinecap: "round",
|
|
@@ -25171,7 +25380,7 @@ function XViewScene({
|
|
|
25171
25380
|
)));
|
|
25172
25381
|
}
|
|
25173
25382
|
if (permissionStatus === "denied") {
|
|
25174
|
-
return /* @__PURE__ */
|
|
25383
|
+
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React37.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React37.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React37.createElement(
|
|
25175
25384
|
"svg",
|
|
25176
25385
|
{
|
|
25177
25386
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25181,7 +25390,7 @@ function XViewScene({
|
|
|
25181
25390
|
stroke: "currentColor",
|
|
25182
25391
|
className: "w-16 h-16 mx-auto"
|
|
25183
25392
|
},
|
|
25184
|
-
/* @__PURE__ */
|
|
25393
|
+
/* @__PURE__ */ React37.createElement(
|
|
25185
25394
|
"path",
|
|
25186
25395
|
{
|
|
25187
25396
|
strokeLinecap: "round",
|
|
@@ -25189,13 +25398,13 @@ function XViewScene({
|
|
|
25189
25398
|
d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
|
|
25190
25399
|
}
|
|
25191
25400
|
)
|
|
25192
|
-
)), /* @__PURE__ */
|
|
25401
|
+
)), /* @__PURE__ */ React37.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React37.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React37.createElement(
|
|
25193
25402
|
"button",
|
|
25194
25403
|
{
|
|
25195
25404
|
onClick: handleNavigateBack,
|
|
25196
25405
|
className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium"
|
|
25197
25406
|
},
|
|
25198
|
-
/* @__PURE__ */
|
|
25407
|
+
/* @__PURE__ */ React37.createElement(
|
|
25199
25408
|
"svg",
|
|
25200
25409
|
{
|
|
25201
25410
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25205,7 +25414,7 @@ function XViewScene({
|
|
|
25205
25414
|
stroke: "currentColor",
|
|
25206
25415
|
className: "w-5 h-5"
|
|
25207
25416
|
},
|
|
25208
|
-
/* @__PURE__ */
|
|
25417
|
+
/* @__PURE__ */ React37.createElement(
|
|
25209
25418
|
"path",
|
|
25210
25419
|
{
|
|
25211
25420
|
strokeLinecap: "round",
|
|
@@ -25217,7 +25426,7 @@ function XViewScene({
|
|
|
25217
25426
|
"Voltar para o X.View"
|
|
25218
25427
|
)));
|
|
25219
25428
|
}
|
|
25220
|
-
return /* @__PURE__ */
|
|
25429
|
+
return /* @__PURE__ */ React37.createElement(
|
|
25221
25430
|
"div",
|
|
25222
25431
|
{
|
|
25223
25432
|
ref: mountRef,
|
|
@@ -25229,7 +25438,7 @@ function XViewScene({
|
|
|
25229
25438
|
cursor: isProcessing ? "progress" : stateRef.current.connection.isActive || stateRef.current.relink.isActive || ancestryMode.isActive ? "crosshair" : creationMode.isActive ? "default" : "grab"
|
|
25230
25439
|
}
|
|
25231
25440
|
},
|
|
25232
|
-
userPermissionRole !== "link_viewer" && /* @__PURE__ */
|
|
25441
|
+
userPermissionRole !== "link_viewer" && /* @__PURE__ */ React37.createElement(
|
|
25233
25442
|
XViewSidebar,
|
|
25234
25443
|
{
|
|
25235
25444
|
dbNodes: searchableDbNodes,
|
|
@@ -25258,7 +25467,7 @@ function XViewScene({
|
|
|
25258
25467
|
viewMembers
|
|
25259
25468
|
}
|
|
25260
25469
|
),
|
|
25261
|
-
creationMode.isActive && /* @__PURE__ */
|
|
25470
|
+
creationMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25262
25471
|
InSceneCreationForm,
|
|
25263
25472
|
{
|
|
25264
25473
|
onSave: (data) => userActionHandlers.handleSaveNode(actionHandlerContext, data),
|
|
@@ -25293,7 +25502,7 @@ function XViewScene({
|
|
|
25293
25502
|
view_google_folder_id: (_h = sceneDataRef.current) == null ? void 0 : _h.view_google_folder_id
|
|
25294
25503
|
}
|
|
25295
25504
|
),
|
|
25296
|
-
versionMode.isActive && /* @__PURE__ */
|
|
25505
|
+
versionMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25297
25506
|
InSceneVersionForm,
|
|
25298
25507
|
{
|
|
25299
25508
|
onSave: (data) => userActionHandlers.handleSaveVersionNode(actionHandlerContext, data),
|
|
@@ -25320,7 +25529,7 @@ function XViewScene({
|
|
|
25320
25529
|
availableAncestries: allAvailableAncestries
|
|
25321
25530
|
}
|
|
25322
25531
|
),
|
|
25323
|
-
questTreeMode.isActive && /* @__PURE__ */
|
|
25532
|
+
questTreeMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25324
25533
|
CreateQuestTreePanel,
|
|
25325
25534
|
{
|
|
25326
25535
|
questTreeMode,
|
|
@@ -25329,7 +25538,7 @@ function XViewScene({
|
|
|
25329
25538
|
onClose: handleCloseQuestTree
|
|
25330
25539
|
}
|
|
25331
25540
|
),
|
|
25332
|
-
processTreeMode.isActive && /* @__PURE__ */
|
|
25541
|
+
processTreeMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25333
25542
|
CreateProcessTreePanel,
|
|
25334
25543
|
{
|
|
25335
25544
|
processTreeMode,
|
|
@@ -25338,7 +25547,7 @@ function XViewScene({
|
|
|
25338
25547
|
onClose: handleCloseProcessTree
|
|
25339
25548
|
}
|
|
25340
25549
|
),
|
|
25341
|
-
questMode.isActive && /* @__PURE__ */
|
|
25550
|
+
questMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25342
25551
|
InSceneQuestForm,
|
|
25343
25552
|
{
|
|
25344
25553
|
onSave: (data) => handleSaveQuestNode(actionHandlerContext, data),
|
|
@@ -25369,7 +25578,7 @@ function XViewScene({
|
|
|
25369
25578
|
view_google_folder_id: (_m = sceneDataRef.current) == null ? void 0 : _m.view_google_folder_id
|
|
25370
25579
|
}
|
|
25371
25580
|
),
|
|
25372
|
-
processMode.isActive && /* @__PURE__ */
|
|
25581
|
+
processMode.isActive && /* @__PURE__ */ React37.createElement(
|
|
25373
25582
|
InSceneProcessForm,
|
|
25374
25583
|
{
|
|
25375
25584
|
onSave: (data) => handleSaveProcessNode(actionHandlerContext, data),
|
|
@@ -25396,7 +25605,7 @@ function XViewScene({
|
|
|
25396
25605
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id
|
|
25397
25606
|
}
|
|
25398
25607
|
),
|
|
25399
|
-
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */
|
|
25608
|
+
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React37.createElement(
|
|
25400
25609
|
"div",
|
|
25401
25610
|
{
|
|
25402
25611
|
className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isReadModeResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
|
|
@@ -25409,7 +25618,7 @@ function XViewScene({
|
|
|
25409
25618
|
maxWidth: "92vw"
|
|
25410
25619
|
}
|
|
25411
25620
|
},
|
|
25412
|
-
/* @__PURE__ */
|
|
25621
|
+
/* @__PURE__ */ React37.createElement(
|
|
25413
25622
|
"div",
|
|
25414
25623
|
{
|
|
25415
25624
|
onPointerDown: (e) => {
|
|
@@ -25420,7 +25629,7 @@ function XViewScene({
|
|
|
25420
25629
|
title: "Arraste para redimensionar"
|
|
25421
25630
|
}
|
|
25422
25631
|
),
|
|
25423
|
-
/* @__PURE__ */
|
|
25632
|
+
/* @__PURE__ */ React37.createElement(
|
|
25424
25633
|
DescriptionReadModePanel,
|
|
25425
25634
|
{
|
|
25426
25635
|
key: readingMode.branchStack.length > 0 ? readingMode.branchStack[readingMode.branchStack.length - 1].branchId : readingMode.ancestry.ancestry_id,
|
|
@@ -25455,7 +25664,7 @@ function XViewScene({
|
|
|
25455
25664
|
}
|
|
25456
25665
|
)
|
|
25457
25666
|
),
|
|
25458
|
-
ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */
|
|
25667
|
+
ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React37.createElement(
|
|
25459
25668
|
CreateAncestryPanel,
|
|
25460
25669
|
{
|
|
25461
25670
|
ancestryMode,
|
|
@@ -25491,7 +25700,7 @@ function XViewScene({
|
|
|
25491
25700
|
onRenderAbstractionTree: (data, targetId) => handleRenderAbstractionTree(data, targetId)
|
|
25492
25701
|
}
|
|
25493
25702
|
),
|
|
25494
|
-
editingAncestryRel.visible && /* @__PURE__ */
|
|
25703
|
+
editingAncestryRel.visible && /* @__PURE__ */ React37.createElement(
|
|
25495
25704
|
AncestryRelationshipPanel,
|
|
25496
25705
|
{
|
|
25497
25706
|
data: editingAncestryRel.data,
|
|
@@ -25505,8 +25714,8 @@ function XViewScene({
|
|
|
25505
25714
|
onUploadFile: upload_file_action
|
|
25506
25715
|
}
|
|
25507
25716
|
),
|
|
25508
|
-
isProcessing && /* @__PURE__ */
|
|
25509
|
-
detailsNode && detailsNode.is_quest && /* @__PURE__ */
|
|
25717
|
+
isProcessing && /* @__PURE__ */ React37.createElement("div", { className: "fixed bottom-8 right-8 z-[2000] flex items-center gap-3 px-4 py-2 bg-slate-900/80 backdrop-blur-md border border-white/10 rounded-full shadow-2xl animate-pulse" }, /* @__PURE__ */ React37.createElement("div", { className: "w-4 h-4 border-2 border-indigo-500 border-t-transparent rounded-full animate-spin" }), /* @__PURE__ */ React37.createElement("span", { className: "text-xs font-medium text-indigo-200 tracking-wider uppercase" }, "Sincronizando Processo...")),
|
|
25718
|
+
detailsNode && detailsNode.is_quest && /* @__PURE__ */ React37.createElement(
|
|
25510
25719
|
QuestDetailsPanel,
|
|
25511
25720
|
{
|
|
25512
25721
|
node: detailsNode,
|
|
@@ -25538,7 +25747,7 @@ function XViewScene({
|
|
|
25538
25747
|
style: overlayHiddenStyle
|
|
25539
25748
|
}
|
|
25540
25749
|
),
|
|
25541
|
-
detailsNode && detailsNode.is_process && /* @__PURE__ */
|
|
25750
|
+
detailsNode && detailsNode.is_process && /* @__PURE__ */ React37.createElement(
|
|
25542
25751
|
ProcessDetailsPanel,
|
|
25543
25752
|
{
|
|
25544
25753
|
node: detailsNode,
|
|
@@ -25568,7 +25777,7 @@ function XViewScene({
|
|
|
25568
25777
|
style: overlayHiddenStyle
|
|
25569
25778
|
}
|
|
25570
25779
|
),
|
|
25571
|
-
detailsNode && !detailsNode.is_quest && !detailsNode.is_process && /* @__PURE__ */
|
|
25780
|
+
detailsNode && !detailsNode.is_quest && !detailsNode.is_process && /* @__PURE__ */ React37.createElement(
|
|
25572
25781
|
NodeDetailsPanel,
|
|
25573
25782
|
{
|
|
25574
25783
|
node: detailsNode,
|
|
@@ -25603,7 +25812,7 @@ function XViewScene({
|
|
|
25603
25812
|
style: overlayHiddenStyle
|
|
25604
25813
|
}
|
|
25605
25814
|
),
|
|
25606
|
-
detailsLink && /* @__PURE__ */
|
|
25815
|
+
detailsLink && /* @__PURE__ */ React37.createElement(
|
|
25607
25816
|
RelationshipDetailsPanel,
|
|
25608
25817
|
{
|
|
25609
25818
|
link: detailsLink,
|
|
@@ -25618,7 +25827,7 @@ function XViewScene({
|
|
|
25618
25827
|
onHighlight: handleReadModeHighlight
|
|
25619
25828
|
}
|
|
25620
25829
|
),
|
|
25621
|
-
ancestryLinkDetails && /* @__PURE__ */
|
|
25830
|
+
ancestryLinkDetails && /* @__PURE__ */ React37.createElement(
|
|
25622
25831
|
AncestryLinkDetailsPanel,
|
|
25623
25832
|
{
|
|
25624
25833
|
data: ancestryLinkDetails,
|
|
@@ -25630,7 +25839,7 @@ function XViewScene({
|
|
|
25630
25839
|
onHighlight: handleReadModeHighlight
|
|
25631
25840
|
}
|
|
25632
25841
|
),
|
|
25633
|
-
/* @__PURE__ */
|
|
25842
|
+
/* @__PURE__ */ React37.createElement(
|
|
25634
25843
|
"div",
|
|
25635
25844
|
{
|
|
25636
25845
|
ref: tooltipRef,
|
|
@@ -25657,7 +25866,7 @@ function XViewScene({
|
|
|
25657
25866
|
}
|
|
25658
25867
|
}
|
|
25659
25868
|
),
|
|
25660
|
-
/* @__PURE__ */
|
|
25869
|
+
/* @__PURE__ */ React37.createElement(
|
|
25661
25870
|
ContextMenu,
|
|
25662
25871
|
{
|
|
25663
25872
|
data: contextMenu,
|
|
@@ -25696,7 +25905,7 @@ function XViewScene({
|
|
|
25696
25905
|
onInitiateProcess: (data) => userActionHandlers.handleInitiateProcess(actionHandlerContext, data)
|
|
25697
25906
|
}
|
|
25698
25907
|
),
|
|
25699
|
-
/* @__PURE__ */
|
|
25908
|
+
/* @__PURE__ */ React37.createElement(
|
|
25700
25909
|
MultiNodeContextMenu,
|
|
25701
25910
|
{
|
|
25702
25911
|
data: multiContextMenu,
|
|
@@ -25716,7 +25925,7 @@ function XViewScene({
|
|
|
25716
25925
|
)
|
|
25717
25926
|
}
|
|
25718
25927
|
),
|
|
25719
|
-
/* @__PURE__ */
|
|
25928
|
+
/* @__PURE__ */ React37.createElement(
|
|
25720
25929
|
RelationshipContextMenu,
|
|
25721
25930
|
{
|
|
25722
25931
|
data: relationshipMenu,
|
|
@@ -25734,14 +25943,14 @@ function XViewScene({
|
|
|
25734
25943
|
onDelete: (data) => userActionHandlers.handleDeleteLink(actionHandlerContext, data)
|
|
25735
25944
|
}
|
|
25736
25945
|
),
|
|
25737
|
-
/* @__PURE__ */
|
|
25946
|
+
/* @__PURE__ */ React37.createElement(
|
|
25738
25947
|
ImageViewer,
|
|
25739
25948
|
{
|
|
25740
25949
|
data: imageViewer,
|
|
25741
25950
|
onClose: () => setImageViewer({ ...imageViewer, visible: false })
|
|
25742
25951
|
}
|
|
25743
25952
|
),
|
|
25744
|
-
/* @__PURE__ */
|
|
25953
|
+
/* @__PURE__ */ React37.createElement(
|
|
25745
25954
|
Boards,
|
|
25746
25955
|
{
|
|
25747
25956
|
isOpen: isBoardsOpen,
|
|
@@ -25754,7 +25963,7 @@ function XViewScene({
|
|
|
25754
25963
|
userRole: userPermissionRole
|
|
25755
25964
|
}
|
|
25756
25965
|
),
|
|
25757
|
-
/* @__PURE__ */
|
|
25966
|
+
/* @__PURE__ */ React37.createElement(
|
|
25758
25967
|
MilestoneManager,
|
|
25759
25968
|
{
|
|
25760
25969
|
isOpen: isMilestoneManagerOpen,
|
|
@@ -25763,7 +25972,7 @@ function XViewScene({
|
|
|
25763
25972
|
onUpdateMilestones: handleUpdateMilestones
|
|
25764
25973
|
}
|
|
25765
25974
|
),
|
|
25766
|
-
/* @__PURE__ */
|
|
25975
|
+
/* @__PURE__ */ React37.createElement(
|
|
25767
25976
|
ImportParentFileModal,
|
|
25768
25977
|
{
|
|
25769
25978
|
isOpen: isImportModalOpen,
|
|
@@ -25776,7 +25985,7 @@ function XViewScene({
|
|
|
25776
25985
|
currentAncestries: ancestryDataRef.current || []
|
|
25777
25986
|
}
|
|
25778
25987
|
),
|
|
25779
|
-
invalidTargetError && /* @__PURE__ */
|
|
25988
|
+
invalidTargetError && /* @__PURE__ */ React37.createElement(
|
|
25780
25989
|
"div",
|
|
25781
25990
|
{
|
|
25782
25991
|
className: "ui-overlay",
|
|
@@ -25801,13 +26010,13 @@ function XViewScene({
|
|
|
25801
26010
|
animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
|
|
25802
26011
|
}
|
|
25803
26012
|
},
|
|
25804
|
-
/* @__PURE__ */
|
|
26013
|
+
/* @__PURE__ */ React37.createElement("style", null, `
|
|
25805
26014
|
@keyframes fadeInDown {
|
|
25806
26015
|
from { opacity: 0; transform: translate(-50%, -20px); }
|
|
25807
26016
|
to { opacity: 1; transform: translate(-50%, 0); }
|
|
25808
26017
|
}
|
|
25809
26018
|
`),
|
|
25810
|
-
/* @__PURE__ */
|
|
26019
|
+
/* @__PURE__ */ React37.createElement(
|
|
25811
26020
|
"svg",
|
|
25812
26021
|
{
|
|
25813
26022
|
width: "20",
|
|
@@ -25819,12 +26028,12 @@ function XViewScene({
|
|
|
25819
26028
|
strokeLinecap: "round",
|
|
25820
26029
|
strokeLinejoin: "round"
|
|
25821
26030
|
},
|
|
25822
|
-
/* @__PURE__ */
|
|
25823
|
-
/* @__PURE__ */
|
|
25824
|
-
/* @__PURE__ */
|
|
26031
|
+
/* @__PURE__ */ React37.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
26032
|
+
/* @__PURE__ */ React37.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
|
|
26033
|
+
/* @__PURE__ */ React37.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
|
|
25825
26034
|
),
|
|
25826
|
-
/* @__PURE__ */
|
|
25827
|
-
/* @__PURE__ */
|
|
26035
|
+
/* @__PURE__ */ React37.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
|
|
26036
|
+
/* @__PURE__ */ React37.createElement(
|
|
25828
26037
|
"button",
|
|
25829
26038
|
{
|
|
25830
26039
|
onClick: () => setInvalidTargetError(null),
|
|
@@ -25852,7 +26061,7 @@ function XViewScene({
|
|
|
25852
26061
|
"Fechar"
|
|
25853
26062
|
)
|
|
25854
26063
|
),
|
|
25855
|
-
/* @__PURE__ */
|
|
26064
|
+
/* @__PURE__ */ React37.createElement(
|
|
25856
26065
|
UpgradeModal,
|
|
25857
26066
|
{
|
|
25858
26067
|
isOpen: isUpgradeModalOpen,
|