@lv-x-software-house/x_view 1.3.8 → 1.4.0
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 +604 -217
- package/dist/index.mjs +528 -141
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -44,9 +44,9 @@ __export(index_exports, {
|
|
|
44
44
|
module.exports = __toCommonJS(index_exports);
|
|
45
45
|
|
|
46
46
|
// src/XViewScene.jsx
|
|
47
|
-
var
|
|
47
|
+
var import_react38 = __toESM(require("react"));
|
|
48
48
|
var import_navigation = require("next/navigation");
|
|
49
|
-
var
|
|
49
|
+
var import_react39 = require("next-auth/react");
|
|
50
50
|
var import_crypto_js = __toESM(require("crypto-js"));
|
|
51
51
|
var THREE3 = __toESM(require("three"));
|
|
52
52
|
var import_OrbitControls = require("three/examples/jsm/controls/OrbitControls.js");
|
|
@@ -5158,8 +5158,8 @@ function ContextMenu({
|
|
|
5158
5158
|
const handleClickOutside = (e) => {
|
|
5159
5159
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
5160
5160
|
};
|
|
5161
|
-
document.addEventListener("
|
|
5162
|
-
return () => document.removeEventListener("
|
|
5161
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
5162
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
5163
5163
|
}, [data.visible, onClose]);
|
|
5164
5164
|
const visibleLinkIds = (0, import_react2.useMemo)(() => {
|
|
5165
5165
|
var _a2;
|
|
@@ -5599,7 +5599,7 @@ function ContextMenu({
|
|
|
5599
5599
|
"div",
|
|
5600
5600
|
{
|
|
5601
5601
|
ref: menuRef,
|
|
5602
|
-
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)]
|
|
5602
|
+
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",
|
|
5603
5603
|
style: { position: "absolute", left: `${menuPos.left}px`, top: `${menuPos.top}px`, zIndex: 1e3 },
|
|
5604
5604
|
onPointerDown: swallow,
|
|
5605
5605
|
onPointerMove: swallow,
|
|
@@ -6232,7 +6232,8 @@ function XViewSidebar({
|
|
|
6232
6232
|
options: [
|
|
6233
6233
|
{ value: "Star", label: "Star" },
|
|
6234
6234
|
{ value: "Circle", label: "Circle" },
|
|
6235
|
-
{ value: "Column", label: "Column" }
|
|
6235
|
+
{ value: "Column", label: "Column" },
|
|
6236
|
+
{ value: "Network", label: "Network" }
|
|
6236
6237
|
],
|
|
6237
6238
|
placeholder: "Selecione um Formato"
|
|
6238
6239
|
}
|
|
@@ -13747,14 +13748,18 @@ function NodeDetailsPanel({
|
|
|
13747
13748
|
});
|
|
13748
13749
|
const [selectedImageUrl, setSelectedImageUrl] = (0, import_react21.useState)((node == null ? void 0 : node.textureImageUrl) ?? null);
|
|
13749
13750
|
const [hasUnsavedChanges, setHasUnsavedChanges] = (0, import_react21.useState)(false);
|
|
13750
|
-
const
|
|
13751
|
+
const isMobile = typeof window !== "undefined" && window.innerWidth < 640;
|
|
13752
|
+
const maxPanelW = typeof window !== "undefined" ? Math.min(window.innerWidth - 32, 1200) : 1200;
|
|
13753
|
+
const defaultWidth = isMobile ? typeof window !== "undefined" ? window.innerWidth - 32 : 360 : isReadMode ? 700 : 440;
|
|
13751
13754
|
const { width: panelWidth, isResizing, handlePointerDown: handleResize, setWidth } = useResizablePanel({
|
|
13752
|
-
initialWidth:
|
|
13753
|
-
minWidth:
|
|
13755
|
+
initialWidth: defaultWidth,
|
|
13756
|
+
minWidth: typeof window !== "undefined" ? Math.min(280, window.innerWidth - 32) : 280,
|
|
13754
13757
|
maxWidth: maxPanelW
|
|
13755
13758
|
});
|
|
13756
13759
|
(0, import_react21.useEffect)(() => {
|
|
13757
|
-
|
|
13760
|
+
const isMob = typeof window !== "undefined" && window.innerWidth < 640;
|
|
13761
|
+
const targetW = isMob ? typeof window !== "undefined" ? window.innerWidth - 32 : 360 : isReadMode ? 700 : 440;
|
|
13762
|
+
setWidth(targetW);
|
|
13758
13763
|
}, [isReadMode, setWidth]);
|
|
13759
13764
|
const prevNodeIdRef = (0, import_react21.useRef)(null);
|
|
13760
13765
|
const propsEndRef = (0, import_react21.useRef)(null);
|
|
@@ -17415,8 +17420,8 @@ function MultiNodeContextMenu({
|
|
|
17415
17420
|
const handleClickOutside = (e) => {
|
|
17416
17421
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
17417
17422
|
};
|
|
17418
|
-
document.addEventListener("
|
|
17419
|
-
return () => document.removeEventListener("
|
|
17423
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
17424
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
17420
17425
|
}, [data.visible, onClose]);
|
|
17421
17426
|
if (!data.visible || !data.nodeIds || data.nodeIds.size === 0) return null;
|
|
17422
17427
|
const swallow = (e) => e.stopPropagation();
|
|
@@ -17857,8 +17862,8 @@ function RelationshipContextMenu({
|
|
|
17857
17862
|
const handleClickOutside = (e) => {
|
|
17858
17863
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
17859
17864
|
};
|
|
17860
|
-
document.addEventListener("
|
|
17861
|
-
return () => document.removeEventListener("
|
|
17865
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
17866
|
+
return () => document.removeEventListener("pointerdown", handleClickOutside);
|
|
17862
17867
|
}, [data.visible, onClose]);
|
|
17863
17868
|
if (!data.visible) return null;
|
|
17864
17869
|
const swallow = (e) => e.stopPropagation();
|
|
@@ -19426,63 +19431,201 @@ function MilestoneManager({
|
|
|
19426
19431
|
}
|
|
19427
19432
|
|
|
19428
19433
|
// src/components/UpgradeModal.jsx
|
|
19434
|
+
var import_react37 = __toESM(require("react"));
|
|
19435
|
+
|
|
19436
|
+
// src/components/icons/UltraMinimalIcon.jsx
|
|
19429
19437
|
var import_react36 = __toESM(require("react"));
|
|
19430
|
-
|
|
19438
|
+
function UltraMinimalIcon({
|
|
19439
|
+
size = 13,
|
|
19440
|
+
className = "",
|
|
19441
|
+
strokeWidth = 1.5,
|
|
19442
|
+
...props
|
|
19443
|
+
}) {
|
|
19444
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
19445
|
+
"svg",
|
|
19446
|
+
{
|
|
19447
|
+
width: size,
|
|
19448
|
+
height: size,
|
|
19449
|
+
viewBox: "0 0 24 24",
|
|
19450
|
+
fill: "none",
|
|
19451
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
19452
|
+
className: `inline-block shrink-0 transition-transform duration-200 ${className}`,
|
|
19453
|
+
...props
|
|
19454
|
+
},
|
|
19455
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19456
|
+
"path",
|
|
19457
|
+
{
|
|
19458
|
+
d: "M6 3h12l4 6-10 12L2 9l4-6z",
|
|
19459
|
+
stroke: "currentColor",
|
|
19460
|
+
strokeWidth,
|
|
19461
|
+
strokeLinecap: "round",
|
|
19462
|
+
strokeLinejoin: "round"
|
|
19463
|
+
}
|
|
19464
|
+
),
|
|
19465
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19466
|
+
"path",
|
|
19467
|
+
{
|
|
19468
|
+
d: "M11 3v6",
|
|
19469
|
+
stroke: "currentColor",
|
|
19470
|
+
strokeWidth,
|
|
19471
|
+
strokeLinecap: "round",
|
|
19472
|
+
strokeLinejoin: "round"
|
|
19473
|
+
}
|
|
19474
|
+
),
|
|
19475
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19476
|
+
"path",
|
|
19477
|
+
{
|
|
19478
|
+
d: "M13 3v6",
|
|
19479
|
+
stroke: "currentColor",
|
|
19480
|
+
strokeWidth,
|
|
19481
|
+
strokeLinecap: "round",
|
|
19482
|
+
strokeLinejoin: "round"
|
|
19483
|
+
}
|
|
19484
|
+
),
|
|
19485
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19486
|
+
"path",
|
|
19487
|
+
{
|
|
19488
|
+
d: "M2 9h20",
|
|
19489
|
+
stroke: "currentColor",
|
|
19490
|
+
strokeWidth,
|
|
19491
|
+
strokeLinecap: "round",
|
|
19492
|
+
strokeLinejoin: "round"
|
|
19493
|
+
}
|
|
19494
|
+
),
|
|
19495
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19496
|
+
"path",
|
|
19497
|
+
{
|
|
19498
|
+
d: "M12 21L8 9",
|
|
19499
|
+
stroke: "currentColor",
|
|
19500
|
+
strokeWidth,
|
|
19501
|
+
strokeLinecap: "round",
|
|
19502
|
+
strokeLinejoin: "round"
|
|
19503
|
+
}
|
|
19504
|
+
),
|
|
19505
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
19506
|
+
"path",
|
|
19507
|
+
{
|
|
19508
|
+
d: "M12 21l4-12",
|
|
19509
|
+
stroke: "currentColor",
|
|
19510
|
+
strokeWidth,
|
|
19511
|
+
strokeLinecap: "round",
|
|
19512
|
+
strokeLinejoin: "round"
|
|
19513
|
+
}
|
|
19514
|
+
)
|
|
19515
|
+
);
|
|
19516
|
+
}
|
|
19517
|
+
|
|
19518
|
+
// src/components/UpgradeModal.jsx
|
|
19431
19519
|
function UpgradeModal({
|
|
19432
19520
|
isOpen,
|
|
19433
19521
|
onClose,
|
|
19434
|
-
nodeCounter,
|
|
19522
|
+
nodeCounter = 0,
|
|
19435
19523
|
nodeLimit = 100,
|
|
19524
|
+
plan,
|
|
19436
19525
|
onUpgrade
|
|
19437
19526
|
}) {
|
|
19527
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react37.useState)(false);
|
|
19438
19528
|
if (!isOpen) return null;
|
|
19439
|
-
|
|
19440
|
-
|
|
19441
|
-
|
|
19442
|
-
|
|
19443
|
-
|
|
19444
|
-
|
|
19445
|
-
|
|
19446
|
-
|
|
19447
|
-
|
|
19448
|
-
|
|
19449
|
-
|
|
19450
|
-
|
|
19529
|
+
const currentPlan = plan || (nodeLimit === -1 ? "premium" : "free");
|
|
19530
|
+
const handleUpgradeClick = async () => {
|
|
19531
|
+
if (isSubmitting) return;
|
|
19532
|
+
setIsSubmitting(true);
|
|
19533
|
+
try {
|
|
19534
|
+
if (onUpgrade) {
|
|
19535
|
+
await onUpgrade();
|
|
19536
|
+
} else {
|
|
19537
|
+
alert("Redirecting to checkout...");
|
|
19538
|
+
}
|
|
19539
|
+
} catch (error) {
|
|
19540
|
+
console.error("Error during upgrade:", error);
|
|
19541
|
+
} finally {
|
|
19542
|
+
setIsSubmitting(false);
|
|
19543
|
+
}
|
|
19544
|
+
};
|
|
19545
|
+
const limit = nodeLimit === -1 ? 100 : nodeLimit;
|
|
19546
|
+
const safeNodeCounter = Math.max(0, nodeCounter || 0);
|
|
19547
|
+
const usagePercentage = Math.min(
|
|
19548
|
+
100,
|
|
19549
|
+
Math.round(safeNodeCounter / limit * 100)
|
|
19550
|
+
);
|
|
19551
|
+
return /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.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__ */ import_react37.default.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__ */ import_react37.default.createElement("div", { className: "flex justify-center mb-4 relative" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-14 h-14 flex items-center justify-center" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "absolute inset-0 bg-cyan-500 rounded-full blur-2xl opacity-20 animate-pulse" }), /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.createElement(
|
|
19552
|
+
UltraMinimalIcon,
|
|
19553
|
+
{
|
|
19554
|
+
size: 22,
|
|
19555
|
+
className: "text-cyan-400",
|
|
19556
|
+
strokeWidth: 2
|
|
19557
|
+
}
|
|
19558
|
+
)))), /* @__PURE__ */ import_react37.default.createElement("h2", { className: "text-xl font-bold text-white mb-1 tracking-tight font-sans" }, "Upgrade x.plore"), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-slate-400 text-[11px] mb-6 leading-relaxed px-4 font-medium italic" }, "Unlock unlimited nodes and community features."), /* @__PURE__ */ import_react37.default.createElement("div", { className: "grid grid-cols-2 gap-3 mb-3 text-left" }, /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.createElement("div", null, /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-xs font-sans font-normal text-cyan-400/80 tracking-normal block mb-1.5" }, "Node Usage"), /* @__PURE__ */ import_react37.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-lg font-bold text-white font-sans tracking-tight" }, nodeCounter), /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-xs font-sans font-medium text-slate-400" }, "/ ", currentPlan === "premium" ? "\u221E" : "100"))), currentPlan !== "premium" && /* @__PURE__ */ import_react37.default.createElement("div", { className: "mt-2.5" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full h-1.5 bg-slate-900 border border-white/5 rounded-full overflow-hidden p-[1px]" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
19451
19559
|
"div",
|
|
19452
19560
|
{
|
|
19453
|
-
className: "
|
|
19454
|
-
|
|
19561
|
+
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]"}`,
|
|
19562
|
+
style: { width: `${usagePercentage}%` }
|
|
19455
19563
|
}
|
|
19456
|
-
), /* @__PURE__ */
|
|
19564
|
+
)))), /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.createElement("div", null, /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-xs font-sans font-normal text-cyan-400/80 tracking-normal block mb-1.5" }, "Current Plan"), /* @__PURE__ */ import_react37.default.createElement("div", { className: "mt-1" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
19565
|
+
"span",
|
|
19566
|
+
{
|
|
19567
|
+
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"}`
|
|
19568
|
+
},
|
|
19569
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
19570
|
+
"span",
|
|
19571
|
+
{
|
|
19572
|
+
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]"}`
|
|
19573
|
+
}
|
|
19574
|
+
),
|
|
19575
|
+
currentPlan === "premium" ? "Premium" : "Free"
|
|
19576
|
+
))))), /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.createElement("div", { className: "flex items-center gap-2.5 text-slate-200 text-xs font-medium" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-cyan-400 shadow-[0_0_6px_#22d3ee] shrink-0" }), /* @__PURE__ */ import_react37.default.createElement("span", null, "Unlimited Nodes")), /* @__PURE__ */ import_react37.default.createElement("div", { className: "flex items-center gap-2.5 text-slate-200 text-xs font-medium" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-cyan-400 shadow-[0_0_6px_#22d3ee] shrink-0" }), /* @__PURE__ */ import_react37.default.createElement("span", null, "Community and collaboration features"))), /* @__PURE__ */ import_react37.default.createElement("div", { className: "space-y-2.5" }, currentPlan !== "premium" ? /* @__PURE__ */ import_react37.default.createElement(
|
|
19457
19577
|
"button",
|
|
19458
19578
|
{
|
|
19459
|
-
onClick:
|
|
19460
|
-
|
|
19579
|
+
onClick: handleUpgradeClick,
|
|
19580
|
+
disabled: isSubmitting,
|
|
19581
|
+
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"
|
|
19461
19582
|
},
|
|
19462
|
-
/* @__PURE__ */
|
|
19463
|
-
|
|
19583
|
+
/* @__PURE__ */ import_react37.default.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" }),
|
|
19584
|
+
isSubmitting ? /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative z-10 flex items-center justify-center gap-2" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "h-4 w-4 border-2 border-slate-950/30 border-t-slate-950 rounded-full animate-spin" })) : /* @__PURE__ */ import_react37.default.createElement("span", { className: "relative z-10 font-normal" }, "Upgrade Now")
|
|
19585
|
+
) : /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.createElement("span", null, "Your Account is Premium")), /* @__PURE__ */ import_react37.default.createElement(
|
|
19464
19586
|
"button",
|
|
19465
19587
|
{
|
|
19466
|
-
|
|
19467
|
-
|
|
19468
|
-
if (onUpgrade) {
|
|
19469
|
-
await onUpgrade();
|
|
19470
|
-
} else {
|
|
19471
|
-
alert("Redirecionando para upgrade... (Em breve)");
|
|
19472
|
-
}
|
|
19473
|
-
onClose();
|
|
19474
|
-
}
|
|
19588
|
+
onClick: onClose,
|
|
19589
|
+
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"
|
|
19475
19590
|
},
|
|
19476
|
-
"
|
|
19477
|
-
|
|
19478
|
-
), /* @__PURE__ */ import_react36.default.createElement(
|
|
19591
|
+
currentPlan === "premium" ? "Close" : "Continue with Free Plan"
|
|
19592
|
+
)), /* @__PURE__ */ import_react37.default.createElement(
|
|
19479
19593
|
"button",
|
|
19480
19594
|
{
|
|
19481
19595
|
onClick: onClose,
|
|
19482
|
-
className: "
|
|
19596
|
+
className: "absolute top-6 right-6 text-slate-500 hover:text-cyan-400 transition-all duration-300 p-1 hover:rotate-90 cursor-pointer",
|
|
19597
|
+
"aria-label": "Close modal"
|
|
19483
19598
|
},
|
|
19484
|
-
|
|
19485
|
-
|
|
19599
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
19600
|
+
"svg",
|
|
19601
|
+
{
|
|
19602
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
19603
|
+
width: "18",
|
|
19604
|
+
height: "18",
|
|
19605
|
+
viewBox: "0 0 24 24",
|
|
19606
|
+
fill: "none",
|
|
19607
|
+
stroke: "currentColor",
|
|
19608
|
+
strokeWidth: "2.5",
|
|
19609
|
+
strokeLinecap: "round",
|
|
19610
|
+
strokeLinejoin: "round"
|
|
19611
|
+
},
|
|
19612
|
+
/* @__PURE__ */ import_react37.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
19613
|
+
/* @__PURE__ */ import_react37.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
19614
|
+
)
|
|
19615
|
+
)), /* @__PURE__ */ import_react37.default.createElement("style", null, `
|
|
19616
|
+
@keyframes float {
|
|
19617
|
+
0%,
|
|
19618
|
+
100% {
|
|
19619
|
+
transform: translateY(0px);
|
|
19620
|
+
}
|
|
19621
|
+
50% {
|
|
19622
|
+
transform: translateY(-8px);
|
|
19623
|
+
}
|
|
19624
|
+
}
|
|
19625
|
+
.animate-float {
|
|
19626
|
+
animation: float 4s ease-in-out infinite;
|
|
19627
|
+
}
|
|
19628
|
+
`));
|
|
19486
19629
|
}
|
|
19487
19630
|
|
|
19488
19631
|
// src/XViewScene.jsx
|
|
@@ -19636,12 +19779,12 @@ function XViewScene({
|
|
|
19636
19779
|
onUpgrade
|
|
19637
19780
|
}) {
|
|
19638
19781
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
19639
|
-
const { data: session, status } = (0,
|
|
19782
|
+
const { data: session, status } = (0, import_react39.useSession)();
|
|
19640
19783
|
const router = (0, import_navigation.useRouter)();
|
|
19641
19784
|
const searchParams = (0, import_navigation.useSearchParams)();
|
|
19642
19785
|
const focusNodeId = searchParams == null ? void 0 : searchParams.get("focus");
|
|
19643
19786
|
const focusAncestryId = searchParams == null ? void 0 : searchParams.get("ancestry");
|
|
19644
|
-
const viewParams = (0,
|
|
19787
|
+
const viewParams = (0, import_react38.useMemo)(() => {
|
|
19645
19788
|
if (encryptedConfig) {
|
|
19646
19789
|
const data = decryptData(encryptedConfig);
|
|
19647
19790
|
if (data && data.id && data.owner_id && data.type) {
|
|
@@ -19650,12 +19793,12 @@ function XViewScene({
|
|
|
19650
19793
|
}
|
|
19651
19794
|
return null;
|
|
19652
19795
|
}, [encryptedConfig, session]);
|
|
19653
|
-
(0,
|
|
19796
|
+
(0, import_react38.useEffect)(() => {
|
|
19654
19797
|
if (viewParams == null ? void 0 : viewParams.name) {
|
|
19655
19798
|
document.title = `${viewParams.name} - x.plore`;
|
|
19656
19799
|
}
|
|
19657
19800
|
}, [viewParams == null ? void 0 : viewParams.name]);
|
|
19658
|
-
(0,
|
|
19801
|
+
(0, import_react38.useEffect)(() => {
|
|
19659
19802
|
async function verifyPermission() {
|
|
19660
19803
|
if (!viewParams || !session || !check_user_permission) return;
|
|
19661
19804
|
const { id, type, owner_id } = viewParams;
|
|
@@ -19692,68 +19835,70 @@ function XViewScene({
|
|
|
19692
19835
|
setIsLoading(false);
|
|
19693
19836
|
}
|
|
19694
19837
|
}, [viewParams, session, status, check_user_permission]);
|
|
19695
|
-
const sceneConfigId = (0,
|
|
19696
|
-
const ownerId = (0,
|
|
19697
|
-
const dbSaveUrl = (0,
|
|
19838
|
+
const sceneConfigId = (0, import_react38.useMemo)(() => (viewParams == null ? void 0 : viewParams.id) || null, [viewParams]);
|
|
19839
|
+
const ownerId = (0, import_react38.useMemo)(() => (viewParams == null ? void 0 : viewParams.owner_id) || null, [viewParams]);
|
|
19840
|
+
const dbSaveUrl = (0, import_react38.useMemo)(() => {
|
|
19698
19841
|
if (ownerId && sceneConfigId) {
|
|
19699
19842
|
return `x_view_dbs/${ownerId}/${sceneConfigId}`;
|
|
19700
19843
|
}
|
|
19701
19844
|
return null;
|
|
19702
19845
|
}, [ownerId, sceneConfigId]);
|
|
19703
|
-
const sceneSaveUrl = (0,
|
|
19846
|
+
const sceneSaveUrl = (0, import_react38.useMemo)(() => {
|
|
19704
19847
|
if (ownerId && sceneConfigId) {
|
|
19705
19848
|
return `x_view_scenes/${ownerId}/${sceneConfigId}`;
|
|
19706
19849
|
}
|
|
19707
19850
|
return null;
|
|
19708
19851
|
}, [ownerId, sceneConfigId]);
|
|
19709
|
-
const ancestry_save_url = (0,
|
|
19852
|
+
const ancestry_save_url = (0, import_react38.useMemo)(() => {
|
|
19710
19853
|
if (ownerId && sceneConfigId) {
|
|
19711
19854
|
return `x_view_ancestry/${ownerId}/${sceneConfigId}`;
|
|
19712
19855
|
}
|
|
19713
19856
|
return null;
|
|
19714
19857
|
}, [ownerId, sceneConfigId]);
|
|
19715
|
-
const sceneDataRef = (0,
|
|
19716
|
-
const parentDataRef = (0,
|
|
19858
|
+
const sceneDataRef = (0, import_react38.useRef)(null);
|
|
19859
|
+
const parentDataRef = (0, import_react38.useRef)(null);
|
|
19717
19860
|
const graphDataRef = parentDataRef;
|
|
19718
|
-
const ancestryDataRef = (0,
|
|
19719
|
-
const [isLoading, setIsLoading] = (0,
|
|
19720
|
-
const [isProcessing, setIsProcessing] = (0,
|
|
19721
|
-
const [permissionStatus, setPermissionStatus] = (0,
|
|
19722
|
-
const [userPermissionRole, setUserPermissionRole] = (0,
|
|
19723
|
-
const [viewMembers, setViewMembers] = (0,
|
|
19724
|
-
const [isInitialized, setIsInitialized] = (0,
|
|
19725
|
-
const [sceneVersion, setSceneVersion] = (0,
|
|
19726
|
-
const [contextMenu, setContextMenu] = (0,
|
|
19861
|
+
const ancestryDataRef = (0, import_react38.useRef)(null);
|
|
19862
|
+
const [isLoading, setIsLoading] = (0, import_react38.useState)(true);
|
|
19863
|
+
const [isProcessing, setIsProcessing] = (0, import_react38.useState)(false);
|
|
19864
|
+
const [permissionStatus, setPermissionStatus] = (0, import_react38.useState)("loading");
|
|
19865
|
+
const [userPermissionRole, setUserPermissionRole] = (0, import_react38.useState)(null);
|
|
19866
|
+
const [viewMembers, setViewMembers] = (0, import_react38.useState)([]);
|
|
19867
|
+
const [isInitialized, setIsInitialized] = (0, import_react38.useState)(false);
|
|
19868
|
+
const [sceneVersion, setSceneVersion] = (0, import_react38.useState)(0);
|
|
19869
|
+
const [contextMenu, setContextMenu] = (0, import_react38.useState)({
|
|
19727
19870
|
visible: false,
|
|
19728
19871
|
x: 0,
|
|
19729
19872
|
y: 0,
|
|
19730
19873
|
nodeData: null
|
|
19731
19874
|
});
|
|
19732
|
-
const [multiContextMenu, setMultiContextMenu] = (0,
|
|
19875
|
+
const [multiContextMenu, setMultiContextMenu] = (0, import_react38.useState)({
|
|
19733
19876
|
visible: false,
|
|
19734
19877
|
x: 0,
|
|
19735
19878
|
y: 0,
|
|
19736
19879
|
nodeIds: null
|
|
19737
19880
|
});
|
|
19738
|
-
const [relationshipMenu, setRelationshipMenu] = (0,
|
|
19881
|
+
const [relationshipMenu, setRelationshipMenu] = (0, import_react38.useState)({
|
|
19739
19882
|
visible: false,
|
|
19740
19883
|
x: 0,
|
|
19741
19884
|
y: 0,
|
|
19742
19885
|
linkObject: null
|
|
19743
19886
|
});
|
|
19744
|
-
const [creationMode, setCreationMode] = (0,
|
|
19887
|
+
const [creationMode, setCreationMode] = (0, import_react38.useState)({
|
|
19745
19888
|
isActive: false,
|
|
19746
19889
|
sourceNodeData: null
|
|
19747
19890
|
});
|
|
19748
|
-
const [versionMode, setVersionMode] = (0,
|
|
19891
|
+
const [versionMode, setVersionMode] = (0, import_react38.useState)({
|
|
19749
19892
|
isActive: false,
|
|
19750
19893
|
sourceNodeData: null
|
|
19751
19894
|
});
|
|
19752
|
-
const [questMode, setQuestMode] = (0,
|
|
19753
|
-
const [processMode, setProcessMode] = (0,
|
|
19754
|
-
const
|
|
19755
|
-
const
|
|
19756
|
-
const [
|
|
19895
|
+
const [questMode, setQuestMode] = (0, import_react38.useState)({ isActive: false });
|
|
19896
|
+
const [processMode, setProcessMode] = (0, import_react38.useState)({ isActive: false });
|
|
19897
|
+
const longPressTimeoutRef = (0, import_react38.useRef)(null);
|
|
19898
|
+
const isLongPressTriggeredRef = (0, import_react38.useRef)(false);
|
|
19899
|
+
const [hasFocusedInitial, setHasFocusedInitial] = (0, import_react38.useState)(false);
|
|
19900
|
+
const [hasOpenedInitialAncestry, setHasOpenedInitialAncestry] = (0, import_react38.useState)(false);
|
|
19901
|
+
const [questTreeMode, setQuestTreeMode] = (0, import_react38.useState)({
|
|
19757
19902
|
isActive: false,
|
|
19758
19903
|
questNodeId: null,
|
|
19759
19904
|
questTempData: null,
|
|
@@ -19763,7 +19908,7 @@ function XViewScene({
|
|
|
19763
19908
|
isAddingNodes: false,
|
|
19764
19909
|
isAddingAbstractionNodes: false
|
|
19765
19910
|
});
|
|
19766
|
-
const [processTreeMode, setProcessTreeMode] = (0,
|
|
19911
|
+
const [processTreeMode, setProcessTreeMode] = (0, import_react38.useState)({
|
|
19767
19912
|
isActive: false,
|
|
19768
19913
|
processNodeId: null,
|
|
19769
19914
|
processTempData: null,
|
|
@@ -19773,7 +19918,7 @@ function XViewScene({
|
|
|
19773
19918
|
isAddingNodes: false,
|
|
19774
19919
|
isAddingAbstractionNodes: false
|
|
19775
19920
|
});
|
|
19776
|
-
const [ancestryMode, setAncestryMode] = (0,
|
|
19921
|
+
const [ancestryMode, setAncestryMode] = (0, import_react38.useState)({
|
|
19777
19922
|
isActive: false,
|
|
19778
19923
|
tree: null,
|
|
19779
19924
|
selectedParentId: null,
|
|
@@ -19784,45 +19929,45 @@ function XViewScene({
|
|
|
19784
19929
|
ancestryDescriptionSections: [],
|
|
19785
19930
|
isAddingNodes: false
|
|
19786
19931
|
});
|
|
19787
|
-
const [readingMode, setReadingMode] = (0,
|
|
19932
|
+
const [readingMode, setReadingMode] = (0, import_react38.useState)({
|
|
19788
19933
|
isActive: false,
|
|
19789
19934
|
ancestry: null,
|
|
19790
19935
|
branchStack: [],
|
|
19791
19936
|
autoAbstraction: false
|
|
19792
19937
|
});
|
|
19793
|
-
const [formPosition, setFormPosition] = (0,
|
|
19938
|
+
const [formPosition, setFormPosition] = (0, import_react38.useState)({
|
|
19794
19939
|
left: 16,
|
|
19795
19940
|
top: 16,
|
|
19796
19941
|
opacity: 0
|
|
19797
19942
|
});
|
|
19798
|
-
const [detailsNode, setDetailsNode] = (0,
|
|
19799
|
-
const [detailsLink, setDetailsLink] = (0,
|
|
19800
|
-
const [ancestryLinkDetails, setAncestryLinkDetails] = (0,
|
|
19801
|
-
const [imageViewer, setImageViewer] = (0,
|
|
19943
|
+
const [detailsNode, setDetailsNode] = (0, import_react38.useState)(null);
|
|
19944
|
+
const [detailsLink, setDetailsLink] = (0, import_react38.useState)(null);
|
|
19945
|
+
const [ancestryLinkDetails, setAncestryLinkDetails] = (0, import_react38.useState)(null);
|
|
19946
|
+
const [imageViewer, setImageViewer] = (0, import_react38.useState)({
|
|
19802
19947
|
visible: false,
|
|
19803
19948
|
images: [],
|
|
19804
19949
|
startIndex: 0
|
|
19805
19950
|
});
|
|
19806
|
-
const [editingAncestryRel, setEditingAncestryRel] = (0,
|
|
19951
|
+
const [editingAncestryRel, setEditingAncestryRel] = (0, import_react38.useState)({
|
|
19807
19952
|
visible: false,
|
|
19808
19953
|
data: null,
|
|
19809
19954
|
path: null
|
|
19810
19955
|
});
|
|
19811
|
-
const [isImportModalOpen, setIsImportModalOpen] = (0,
|
|
19812
|
-
const [importSuccessMessage, setImportSuccessMessage] = (0,
|
|
19813
|
-
const [invalidTargetError, setInvalidTargetError] = (0,
|
|
19814
|
-
const [highlightedNodeId, setHighlightedNodeId] = (0,
|
|
19815
|
-
const [isBoardsOpen, setIsBoardsOpen] = (0,
|
|
19816
|
-
const [boardItems, setBoardItems] = (0,
|
|
19817
|
-
const [isSidebarOpen, setIsSidebarOpen] = (0,
|
|
19818
|
-
const [isMilestoneManagerOpen, setIsMilestoneManagerOpen] = (0,
|
|
19819
|
-
const [nodeCounter, setNodeCounter] = (0,
|
|
19820
|
-
const [isUpgradeModalOpen, setIsUpgradeModalOpen] = (0,
|
|
19821
|
-
const [nodeLimit, setNodeLimit] = (0,
|
|
19822
|
-
const mountRef = (0,
|
|
19823
|
-
const tooltipRef = (0,
|
|
19824
|
-
const formRef = (0,
|
|
19825
|
-
const stateRef = (0,
|
|
19956
|
+
const [isImportModalOpen, setIsImportModalOpen] = (0, import_react38.useState)(false);
|
|
19957
|
+
const [importSuccessMessage, setImportSuccessMessage] = (0, import_react38.useState)("");
|
|
19958
|
+
const [invalidTargetError, setInvalidTargetError] = (0, import_react38.useState)(null);
|
|
19959
|
+
const [highlightedNodeId, setHighlightedNodeId] = (0, import_react38.useState)(null);
|
|
19960
|
+
const [isBoardsOpen, setIsBoardsOpen] = (0, import_react38.useState)(false);
|
|
19961
|
+
const [boardItems, setBoardItems] = (0, import_react38.useState)([]);
|
|
19962
|
+
const [isSidebarOpen, setIsSidebarOpen] = (0, import_react38.useState)(false);
|
|
19963
|
+
const [isMilestoneManagerOpen, setIsMilestoneManagerOpen] = (0, import_react38.useState)(false);
|
|
19964
|
+
const [nodeCounter, setNodeCounter] = (0, import_react38.useState)(0);
|
|
19965
|
+
const [isUpgradeModalOpen, setIsUpgradeModalOpen] = (0, import_react38.useState)(false);
|
|
19966
|
+
const [nodeLimit, setNodeLimit] = (0, import_react38.useState)(100);
|
|
19967
|
+
const mountRef = (0, import_react38.useRef)(null);
|
|
19968
|
+
const tooltipRef = (0, import_react38.useRef)(null);
|
|
19969
|
+
const formRef = (0, import_react38.useRef)(null);
|
|
19970
|
+
const stateRef = (0, import_react38.useRef)({
|
|
19826
19971
|
readMode: {
|
|
19827
19972
|
currentMaxIndex: 0,
|
|
19828
19973
|
progressMap: {}
|
|
@@ -19907,16 +20052,16 @@ function XViewScene({
|
|
|
19907
20052
|
minWidth: 320,
|
|
19908
20053
|
maxWidth: maxReadPanelW
|
|
19909
20054
|
});
|
|
19910
|
-
(0,
|
|
20055
|
+
(0, import_react38.useEffect)(() => {
|
|
19911
20056
|
stateRef.current.ancestry = ancestryMode;
|
|
19912
20057
|
}, [ancestryMode]);
|
|
19913
|
-
(0,
|
|
20058
|
+
(0, import_react38.useEffect)(() => {
|
|
19914
20059
|
stateRef.current.questTree = questTreeMode;
|
|
19915
20060
|
}, [questTreeMode]);
|
|
19916
|
-
(0,
|
|
20061
|
+
(0, import_react38.useEffect)(() => {
|
|
19917
20062
|
stateRef.current.processTree = processTreeMode;
|
|
19918
20063
|
}, [processTreeMode]);
|
|
19919
|
-
(0,
|
|
20064
|
+
(0, import_react38.useEffect)(() => {
|
|
19920
20065
|
var _a2, _b2;
|
|
19921
20066
|
if (!isInitialized) return;
|
|
19922
20067
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -19941,7 +20086,7 @@ function XViewScene({
|
|
|
19941
20086
|
}
|
|
19942
20087
|
stateRef.current.nodeIdToParentFileMap = map;
|
|
19943
20088
|
}, [isInitialized, sceneVersion]);
|
|
19944
|
-
const handleNavigateBack = (0,
|
|
20089
|
+
const handleNavigateBack = (0, import_react38.useCallback)(() => {
|
|
19945
20090
|
const type = viewParams == null ? void 0 : viewParams.type;
|
|
19946
20091
|
const tab = type === "database" ? "datasets" : "views";
|
|
19947
20092
|
const targetUrl = `/dashboard/xview?tab=${tab}`;
|
|
@@ -19952,7 +20097,7 @@ function XViewScene({
|
|
|
19952
20097
|
window.location.href = targetUrl;
|
|
19953
20098
|
}
|
|
19954
20099
|
}, [router, viewParams]);
|
|
19955
|
-
const handleConfirmImport = (0,
|
|
20100
|
+
const handleConfirmImport = (0, import_react38.useCallback)(
|
|
19956
20101
|
async (importPayload) => {
|
|
19957
20102
|
var _a2, _b2;
|
|
19958
20103
|
let files = [];
|
|
@@ -20077,7 +20222,7 @@ function XViewScene({
|
|
|
20077
20222
|
add_new_parent_file_to_scene_at_firebase_action
|
|
20078
20223
|
]
|
|
20079
20224
|
);
|
|
20080
|
-
const handleSaveConfig = (0,
|
|
20225
|
+
const handleSaveConfig = (0, import_react38.useCallback)(
|
|
20081
20226
|
async (newConfig) => {
|
|
20082
20227
|
if (!sceneDataRef.current || !save_view_data || !sceneSaveUrl) return;
|
|
20083
20228
|
const updatedData = {
|
|
@@ -20097,7 +20242,7 @@ function XViewScene({
|
|
|
20097
20242
|
const handleOpenImageViewer = (images, startIndex) => {
|
|
20098
20243
|
setImageViewer({ visible: true, images, startIndex });
|
|
20099
20244
|
};
|
|
20100
|
-
const tweenToTarget = (0,
|
|
20245
|
+
const tweenToTarget = (0, import_react38.useCallback)(
|
|
20101
20246
|
(target, zoomFactor = 1, forcedDirection = null) => {
|
|
20102
20247
|
const {
|
|
20103
20248
|
camera: sceneCamera,
|
|
@@ -20127,7 +20272,7 @@ function XViewScene({
|
|
|
20127
20272
|
if (!t || typeof t.closest !== "function") return false;
|
|
20128
20273
|
return !!t.closest(".ui-overlay");
|
|
20129
20274
|
};
|
|
20130
|
-
const buildFullAncestryTree = (0,
|
|
20275
|
+
const buildFullAncestryTree = (0, import_react38.useCallback)(
|
|
20131
20276
|
(idTree, nodes, ancestries = []) => {
|
|
20132
20277
|
if (!idTree) return null;
|
|
20133
20278
|
const nodeMap = new Map(nodes.map((n) => [String(n.id), n]));
|
|
@@ -20214,7 +20359,7 @@ function XViewScene({
|
|
|
20214
20359
|
},
|
|
20215
20360
|
[]
|
|
20216
20361
|
);
|
|
20217
|
-
const handleActivateTimeline = (0,
|
|
20362
|
+
const handleActivateTimeline = (0, import_react38.useCallback)(() => {
|
|
20218
20363
|
const { nodeObjects, tweenGroup, timelineIntervalsGroup } = stateRef.current;
|
|
20219
20364
|
if (!nodeObjects || !tweenGroup || !timelineIntervalsGroup) return;
|
|
20220
20365
|
while (timelineIntervalsGroup.children.length > 0) {
|
|
@@ -20367,7 +20512,7 @@ function XViewScene({
|
|
|
20367
20512
|
tweenToTarget(center, zoomFactor);
|
|
20368
20513
|
}
|
|
20369
20514
|
}, [tweenToTarget]);
|
|
20370
|
-
const handleVersionTimeline = (0,
|
|
20515
|
+
const handleVersionTimeline = (0, import_react38.useCallback)(
|
|
20371
20516
|
(sourceMesh, versionMeshes) => {
|
|
20372
20517
|
const { tweenGroup, timelineIntervalsGroup } = stateRef.current;
|
|
20373
20518
|
if (!tweenGroup || !timelineIntervalsGroup || versionMeshes.length === 0)
|
|
@@ -20516,7 +20661,7 @@ function XViewScene({
|
|
|
20516
20661
|
},
|
|
20517
20662
|
[tweenToTarget]
|
|
20518
20663
|
);
|
|
20519
|
-
(0,
|
|
20664
|
+
(0, import_react38.useEffect)(() => {
|
|
20520
20665
|
async function fetchAllData(configPath, ownerId2) {
|
|
20521
20666
|
var _a2, _b2;
|
|
20522
20667
|
if (!get_scene_view_data) {
|
|
@@ -20614,12 +20759,12 @@ function XViewScene({
|
|
|
20614
20759
|
focusNodeId,
|
|
20615
20760
|
focusAncestryId
|
|
20616
20761
|
]);
|
|
20617
|
-
const isNodeInView = (0,
|
|
20762
|
+
const isNodeInView = (0, import_react38.useCallback)((id) => {
|
|
20618
20763
|
const key = String(id);
|
|
20619
20764
|
const objs = stateRef.current.nodeObjects || {};
|
|
20620
20765
|
return !!objs[key];
|
|
20621
20766
|
}, []);
|
|
20622
|
-
const addOrUpdateNodeMesh = (0,
|
|
20767
|
+
const addOrUpdateNodeMesh = (0, import_react38.useCallback)(
|
|
20623
20768
|
(nodeData, position, suppressVersionUpdate = false, forceShowQuestDate = false, isTemplate = false) => {
|
|
20624
20769
|
const {
|
|
20625
20770
|
graphGroup,
|
|
@@ -20661,14 +20806,22 @@ function XViewScene({
|
|
|
20661
20806
|
},
|
|
20662
20807
|
[]
|
|
20663
20808
|
);
|
|
20664
|
-
const handleActivateReshapeLens = (0,
|
|
20809
|
+
const handleActivateReshapeLens = (0, import_react38.useCallback)(
|
|
20665
20810
|
({ type, columns, centerNodeId }) => {
|
|
20666
|
-
const {
|
|
20811
|
+
const {
|
|
20812
|
+
nodeObjects,
|
|
20813
|
+
allLinks = [],
|
|
20814
|
+
ancestryLinks = [],
|
|
20815
|
+
tweenGroup,
|
|
20816
|
+
camera,
|
|
20817
|
+
controls
|
|
20818
|
+
} = stateRef.current;
|
|
20667
20819
|
if (!nodeObjects || !tweenGroup || !camera || !controls) return;
|
|
20668
20820
|
const activeNodeIds = Object.keys(nodeObjects);
|
|
20669
20821
|
if (activeNodeIds.length === 0) return;
|
|
20670
20822
|
let sumX = 0;
|
|
20671
20823
|
let sumY = 0;
|
|
20824
|
+
let sumZ = 0;
|
|
20672
20825
|
let nodeCount = 0;
|
|
20673
20826
|
activeNodeIds.forEach((id) => {
|
|
20674
20827
|
const mesh = nodeObjects[id];
|
|
@@ -20772,30 +20925,199 @@ function XViewScene({
|
|
|
20772
20925
|
sumY += targetY;
|
|
20773
20926
|
nodeCount++;
|
|
20774
20927
|
});
|
|
20928
|
+
} else if (type === "Network") {
|
|
20929
|
+
const N = activeNodeIds.length;
|
|
20930
|
+
const activeSet = new Set(activeNodeIds.map(String));
|
|
20931
|
+
const edges = [];
|
|
20932
|
+
const degreeMap = new Map(activeNodeIds.map((id) => [String(id), 0]));
|
|
20933
|
+
const seenPairs = /* @__PURE__ */ new Set();
|
|
20934
|
+
[...allLinks, ...ancestryLinks].forEach((line) => {
|
|
20935
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
20936
|
+
const u = String(
|
|
20937
|
+
((_c2 = (_b2 = (_a2 = line.userData) == null ? void 0 : _a2.sourceNode) == null ? void 0 : _b2.userData) == null ? void 0 : _c2.id) ?? ((_d2 = line.userData) == null ? void 0 : _d2.source) ?? ""
|
|
20938
|
+
);
|
|
20939
|
+
const v = String(
|
|
20940
|
+
((_g2 = (_f2 = (_e2 = line.userData) == null ? void 0 : _e2.targetNode) == null ? void 0 : _f2.userData) == null ? void 0 : _g2.id) ?? ((_h2 = line.userData) == null ? void 0 : _h2.target) ?? ""
|
|
20941
|
+
);
|
|
20942
|
+
if (u && v && u !== v && activeSet.has(u) && activeSet.has(v)) {
|
|
20943
|
+
const pairKey = u < v ? `${u}_${v}` : `${v}_${u}`;
|
|
20944
|
+
if (!seenPairs.has(pairKey)) {
|
|
20945
|
+
seenPairs.add(pairKey);
|
|
20946
|
+
edges.push([u, v]);
|
|
20947
|
+
degreeMap.set(u, (degreeMap.get(u) || 0) + 1);
|
|
20948
|
+
degreeMap.set(v, (degreeMap.get(v) || 0) + 1);
|
|
20949
|
+
}
|
|
20950
|
+
}
|
|
20951
|
+
});
|
|
20952
|
+
const baseSpread = Math.max(45, Math.sqrt(N) * 19);
|
|
20953
|
+
const boundX = baseSpread * 1.75;
|
|
20954
|
+
const boundY = baseSpread * 1;
|
|
20955
|
+
const boundZ = Math.min(85, Math.max(25, baseSpread * 0.45));
|
|
20956
|
+
const sortedIds = [...activeNodeIds].sort(
|
|
20957
|
+
(a, b) => (degreeMap.get(String(b)) || 0) - (degreeMap.get(String(a)) || 0)
|
|
20958
|
+
);
|
|
20959
|
+
const posMap = /* @__PURE__ */ new Map();
|
|
20960
|
+
const velMap = /* @__PURE__ */ new Map();
|
|
20961
|
+
const goldenAngle = Math.PI * (3 - Math.sqrt(5));
|
|
20962
|
+
sortedIds.forEach((id, idx) => {
|
|
20963
|
+
const t = N > 1 ? idx / (N - 1) : 0.5;
|
|
20964
|
+
const r = Math.sqrt(0.12 + 0.88 * t);
|
|
20965
|
+
const theta = idx * goldenAngle * 7;
|
|
20966
|
+
const zLayer = Math.sin(idx * 2.39996) * boundZ * (0.4 + 0.6 * r);
|
|
20967
|
+
posMap.set(String(id), {
|
|
20968
|
+
x: Math.cos(theta) * r * boundX,
|
|
20969
|
+
y: Math.sin(theta) * r * boundY,
|
|
20970
|
+
z: zLayer
|
|
20971
|
+
});
|
|
20972
|
+
velMap.set(String(id), { x: 0, y: 0, z: 0 });
|
|
20973
|
+
});
|
|
20974
|
+
const iterations = 120;
|
|
20975
|
+
const minNodeDist = 24;
|
|
20976
|
+
const idealEdgeDist = 28;
|
|
20977
|
+
const repulsionRadius = 65;
|
|
20978
|
+
for (let iter = 0; iter < iterations; iter++) {
|
|
20979
|
+
const cooling = 1 - iter / iterations * 0.75;
|
|
20980
|
+
for (let i = 0; i < N; i++) {
|
|
20981
|
+
const idA = String(sortedIds[i]);
|
|
20982
|
+
const pA = posMap.get(idA);
|
|
20983
|
+
const vA = velMap.get(idA);
|
|
20984
|
+
for (let j = i + 1; j < N; j++) {
|
|
20985
|
+
const idB = String(sortedIds[j]);
|
|
20986
|
+
const pB = posMap.get(idB);
|
|
20987
|
+
const vB = velMap.get(idB);
|
|
20988
|
+
const dx = pA.x - pB.x;
|
|
20989
|
+
const dy = pA.y - pB.y;
|
|
20990
|
+
const dz = (pA.z - pB.z) * 0.6;
|
|
20991
|
+
const distSq = dx * dx + dy * dy + dz * dz + 0.1;
|
|
20992
|
+
const dist = Math.sqrt(distSq);
|
|
20993
|
+
if (dist < repulsionRadius) {
|
|
20994
|
+
const force = dist < minNodeDist ? (minNodeDist - dist) / dist * 1.8 : (repulsionRadius - dist) / repulsionRadius * 0.35 / dist;
|
|
20995
|
+
const fx = dx * force;
|
|
20996
|
+
const fy = dy * force;
|
|
20997
|
+
const fz = (pA.z - pB.z) * force * 0.5;
|
|
20998
|
+
vA.x += fx;
|
|
20999
|
+
vA.y += fy;
|
|
21000
|
+
vA.z += fz;
|
|
21001
|
+
vB.x -= fx;
|
|
21002
|
+
vB.y -= fy;
|
|
21003
|
+
vB.z -= fz;
|
|
21004
|
+
}
|
|
21005
|
+
}
|
|
21006
|
+
}
|
|
21007
|
+
for (let e = 0; e < edges.length; e++) {
|
|
21008
|
+
const [u, v] = edges[e];
|
|
21009
|
+
const pU = posMap.get(u);
|
|
21010
|
+
const pV = posMap.get(v);
|
|
21011
|
+
const vU = velMap.get(u);
|
|
21012
|
+
const vV = velMap.get(v);
|
|
21013
|
+
const dx = pV.x - pU.x;
|
|
21014
|
+
const dy = pV.y - pU.y;
|
|
21015
|
+
const dz = pV.z - pU.z;
|
|
21016
|
+
const dist = Math.sqrt(dx * dx + dy * dy + dz * dz) || 1;
|
|
21017
|
+
const delta = dist - idealEdgeDist;
|
|
21018
|
+
const springStrength = 0.085;
|
|
21019
|
+
const fx = dx / dist * delta * springStrength;
|
|
21020
|
+
const fy = dy / dist * delta * springStrength;
|
|
21021
|
+
const fz = dz / dist * delta * springStrength;
|
|
21022
|
+
vU.x += fx;
|
|
21023
|
+
vU.y += fy;
|
|
21024
|
+
vU.z += fz;
|
|
21025
|
+
vV.x -= fx;
|
|
21026
|
+
vV.y -= fy;
|
|
21027
|
+
vV.z -= fz;
|
|
21028
|
+
}
|
|
21029
|
+
for (let i = 0; i < N; i++) {
|
|
21030
|
+
const id = String(sortedIds[i]);
|
|
21031
|
+
const p = posMap.get(id);
|
|
21032
|
+
const v = velMap.get(id);
|
|
21033
|
+
const nx = p.x / boundX;
|
|
21034
|
+
const ny = p.y / boundY;
|
|
21035
|
+
const nz = p.z / boundZ;
|
|
21036
|
+
const radialNorm = Math.sqrt(nx * nx + ny * ny);
|
|
21037
|
+
if (radialNorm > 0.95) {
|
|
21038
|
+
const pull = (radialNorm - 0.95) * 2.2;
|
|
21039
|
+
v.x -= nx * pull * 8;
|
|
21040
|
+
v.y -= ny * pull * 8;
|
|
21041
|
+
} else if (radialNorm < 0.2 && N > 12 && (degreeMap.get(id) || 0) === 0) {
|
|
21042
|
+
v.x += (nx || 0.1) * 1.5;
|
|
21043
|
+
v.y += (ny || 0.1) * 1.5;
|
|
21044
|
+
}
|
|
21045
|
+
if (Math.abs(nz) > 0.95) {
|
|
21046
|
+
v.z -= nz * (Math.abs(nz) - 0.95) * 10;
|
|
21047
|
+
}
|
|
21048
|
+
const maxStep = 6 * cooling;
|
|
21049
|
+
const speed = Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z) || 1;
|
|
21050
|
+
const scale = speed > maxStep ? maxStep / speed : cooling;
|
|
21051
|
+
p.x += v.x * scale;
|
|
21052
|
+
p.y += v.y * scale;
|
|
21053
|
+
p.z += v.z * scale;
|
|
21054
|
+
v.x *= 0.4;
|
|
21055
|
+
v.y *= 0.4;
|
|
21056
|
+
v.z *= 0.4;
|
|
21057
|
+
}
|
|
21058
|
+
}
|
|
21059
|
+
activeNodeIds.forEach((id) => {
|
|
21060
|
+
const mesh = nodeObjects[id];
|
|
21061
|
+
const target = posMap.get(String(id)) || { x: 0, y: 0, z: 0 };
|
|
21062
|
+
const posTween = new import_tween2.Tween(mesh.position).to({ x: target.x, y: target.y, z: target.z }, 1500).easing(import_tween2.Easing.Cubic.InOut);
|
|
21063
|
+
tweenGroup.add(posTween);
|
|
21064
|
+
posTween.start();
|
|
21065
|
+
if (mesh.userData.labelObject) {
|
|
21066
|
+
const labelTarget = new THREE3.Vector3(
|
|
21067
|
+
target.x,
|
|
21068
|
+
target.y,
|
|
21069
|
+
target.z
|
|
21070
|
+
).add(mesh.userData.labelOffset || new THREE3.Vector3(0, 3.8, 0));
|
|
21071
|
+
const lblTween = new import_tween2.Tween(mesh.userData.labelObject.position).to(labelTarget, 1500).easing(import_tween2.Easing.Cubic.InOut);
|
|
21072
|
+
tweenGroup.add(lblTween);
|
|
21073
|
+
lblTween.start();
|
|
21074
|
+
}
|
|
21075
|
+
sumX += target.x;
|
|
21076
|
+
sumY += target.y;
|
|
21077
|
+
sumZ += target.z;
|
|
21078
|
+
nodeCount++;
|
|
21079
|
+
});
|
|
20775
21080
|
}
|
|
20776
21081
|
if (nodeCount > 0) {
|
|
20777
21082
|
const centerX = sumX / nodeCount;
|
|
20778
21083
|
const centerY = sumY / nodeCount;
|
|
20779
|
-
const
|
|
21084
|
+
const centerZ = type === "Network" ? sumZ / nodeCount : 0;
|
|
21085
|
+
const targetFocus = new THREE3.Vector3(centerX, centerY, centerZ);
|
|
20780
21086
|
const targetTween = new import_tween2.Tween(controls.target).to({ x: targetFocus.x, y: targetFocus.y, z: targetFocus.z }, 1500).easing(import_tween2.Easing.Cubic.InOut);
|
|
20781
21087
|
tweenGroup.add(targetTween);
|
|
20782
21088
|
targetTween.start();
|
|
20783
21089
|
let zoomZ = 140;
|
|
21090
|
+
let camOffsetY = 0;
|
|
20784
21091
|
if (type === "Column") {
|
|
20785
21092
|
const numRows = Math.ceil(nodeCount / (columns || 4));
|
|
20786
21093
|
zoomZ = Math.max(140, numRows * 50);
|
|
20787
21094
|
} else if (type === "Circle" || type === "Star") {
|
|
20788
21095
|
const radius = Math.max(80, nodeCount * 8);
|
|
20789
21096
|
zoomZ = radius * 2.5;
|
|
21097
|
+
} else if (type === "Network") {
|
|
21098
|
+
const baseSpread = Math.max(45, Math.sqrt(nodeCount) * 19);
|
|
21099
|
+
const immersionFactor = Math.max(
|
|
21100
|
+
0.52,
|
|
21101
|
+
1.15 - Math.min(nodeCount, 120) * 52e-4
|
|
21102
|
+
);
|
|
21103
|
+
zoomZ = targetFocus.z + Math.max(55, baseSpread * immersionFactor);
|
|
21104
|
+
camOffsetY = -baseSpread * 0.08;
|
|
20790
21105
|
}
|
|
20791
|
-
const camTween = new import_tween2.Tween(camera.position).to(
|
|
21106
|
+
const camTween = new import_tween2.Tween(camera.position).to(
|
|
21107
|
+
{
|
|
21108
|
+
x: targetFocus.x,
|
|
21109
|
+
y: targetFocus.y + camOffsetY,
|
|
21110
|
+
z: zoomZ
|
|
21111
|
+
},
|
|
21112
|
+
1500
|
|
21113
|
+
).easing(import_tween2.Easing.Cubic.InOut);
|
|
20792
21114
|
tweenGroup.add(camTween);
|
|
20793
21115
|
camTween.start();
|
|
20794
21116
|
}
|
|
20795
21117
|
},
|
|
20796
21118
|
[]
|
|
20797
21119
|
);
|
|
20798
|
-
const handleActivateQuestLens = (0,
|
|
21120
|
+
const handleActivateQuestLens = (0, import_react38.useCallback)(
|
|
20799
21121
|
({ assigneeId, status: status2, milestoneId }) => {
|
|
20800
21122
|
var _a2;
|
|
20801
21123
|
const { nodeObjects, tweenGroup, graphGroup } = stateRef.current;
|
|
@@ -21017,7 +21339,7 @@ function XViewScene({
|
|
|
21017
21339
|
},
|
|
21018
21340
|
[addOrUpdateNodeMesh]
|
|
21019
21341
|
);
|
|
21020
|
-
(0,
|
|
21342
|
+
(0, import_react38.useEffect)(() => {
|
|
21021
21343
|
if (!isInitialized || !sceneDataRef.current) return;
|
|
21022
21344
|
const currentMount = mountRef.current;
|
|
21023
21345
|
if (!currentMount) return;
|
|
@@ -21046,11 +21368,17 @@ function XViewScene({
|
|
|
21046
21368
|
renderer.outputColorSpace = THREE3.SRGBColorSpace;
|
|
21047
21369
|
renderer.toneMapping = THREE3.ACESFilmicToneMapping;
|
|
21048
21370
|
renderer.toneMappingExposure = 1.2;
|
|
21371
|
+
currentMount.style.touchAction = "none";
|
|
21372
|
+
renderer.domElement.style.touchAction = "none";
|
|
21049
21373
|
currentMount.appendChild(renderer.domElement);
|
|
21050
21374
|
stateRef.current.renderer = renderer;
|
|
21051
21375
|
const controls = new import_OrbitControls.OrbitControls(camera, renderer.domElement);
|
|
21052
21376
|
controls.enableDamping = true;
|
|
21053
21377
|
controls.dampingFactor = 0.05;
|
|
21378
|
+
controls.touches = {
|
|
21379
|
+
ONE: THREE3.TOUCH.ROTATE,
|
|
21380
|
+
TWO: THREE3.TOUCH.DOLLY_PAN
|
|
21381
|
+
};
|
|
21054
21382
|
stateRef.current.controls = controls;
|
|
21055
21383
|
scene.add(new THREE3.AmbientLight(16777215, 0.1));
|
|
21056
21384
|
const directionalLight = new THREE3.DirectionalLight(16777215, 0.2);
|
|
@@ -21275,21 +21603,58 @@ function XViewScene({
|
|
|
21275
21603
|
stateRef.current.dragCandidate = null;
|
|
21276
21604
|
return;
|
|
21277
21605
|
}
|
|
21278
|
-
if (event.button !== 0) return;
|
|
21606
|
+
if (event.button !== 0 && event.pointerType !== "touch") return;
|
|
21279
21607
|
if (picked && !stateRef.current.ancestry.isActive) {
|
|
21280
21608
|
stateRef.current.controls.enabled = false;
|
|
21281
21609
|
}
|
|
21282
21610
|
stateRef.current.pointerDown = {
|
|
21283
21611
|
isDown: true,
|
|
21284
21612
|
x: event.clientX,
|
|
21285
|
-
y: event.clientY
|
|
21613
|
+
y: event.clientY,
|
|
21614
|
+
pointerType: event.pointerType
|
|
21286
21615
|
};
|
|
21287
21616
|
stateRef.current.dragCandidate = picked;
|
|
21617
|
+
if (event.pointerType === "touch" || event.pointerType === "pen") {
|
|
21618
|
+
if (longPressTimeoutRef.current) {
|
|
21619
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21620
|
+
}
|
|
21621
|
+
isLongPressTriggeredRef.current = false;
|
|
21622
|
+
if (picked) {
|
|
21623
|
+
const touchX = event.clientX;
|
|
21624
|
+
const touchY = event.clientY;
|
|
21625
|
+
longPressTimeoutRef.current = setTimeout(() => {
|
|
21626
|
+
isLongPressTriggeredRef.current = true;
|
|
21627
|
+
if (typeof navigator !== "undefined" && navigator.vibrate) {
|
|
21628
|
+
navigator.vibrate(40);
|
|
21629
|
+
}
|
|
21630
|
+
setContextMenu({
|
|
21631
|
+
visible: true,
|
|
21632
|
+
x: touchX,
|
|
21633
|
+
y: touchY,
|
|
21634
|
+
nodeData: picked.userData
|
|
21635
|
+
});
|
|
21636
|
+
setMultiContextMenu((prev) => ({ ...prev, visible: false }));
|
|
21637
|
+
setRelationshipMenu((prev) => ({ ...prev, visible: false }));
|
|
21638
|
+
setDetailsNode(null);
|
|
21639
|
+
}, 450);
|
|
21640
|
+
}
|
|
21641
|
+
}
|
|
21288
21642
|
}
|
|
21289
21643
|
function onPointerMove(event) {
|
|
21290
21644
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21291
21645
|
if (isFromUiOverlay(event)) return;
|
|
21292
21646
|
setMouseFromEvent(event);
|
|
21647
|
+
if (stateRef.current.pointerDown.isDown) {
|
|
21648
|
+
const dx = event.clientX - stateRef.current.pointerDown.x;
|
|
21649
|
+
const dy = event.clientY - stateRef.current.pointerDown.y;
|
|
21650
|
+
const dist = Math.hypot(dx, dy);
|
|
21651
|
+
if (dist > (x_view_config.DRAG_THRESHOLD_PX || 5)) {
|
|
21652
|
+
if (longPressTimeoutRef.current) {
|
|
21653
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21654
|
+
longPressTimeoutRef.current = null;
|
|
21655
|
+
}
|
|
21656
|
+
}
|
|
21657
|
+
}
|
|
21293
21658
|
if (stateRef.current.isDragging && stateRef.current.draggedNode) {
|
|
21294
21659
|
const raycaster2 = new THREE3.Raycaster();
|
|
21295
21660
|
raycaster2.setFromCamera(mouse, camera);
|
|
@@ -21332,7 +21697,7 @@ function XViewScene({
|
|
|
21332
21697
|
return;
|
|
21333
21698
|
}
|
|
21334
21699
|
if (stateRef.current.creation.isActive) return;
|
|
21335
|
-
if (stateRef.current.pointerDown.isDown && stateRef.current.dragCandidate) {
|
|
21700
|
+
if (stateRef.current.pointerDown.isDown && stateRef.current.dragCandidate && !isLongPressTriggeredRef.current) {
|
|
21336
21701
|
const dx = event.clientX - stateRef.current.pointerDown.x;
|
|
21337
21702
|
const dy = event.clientY - stateRef.current.pointerDown.y;
|
|
21338
21703
|
if (Math.hypot(dx, dy) > x_view_config.DRAG_THRESHOLD_PX) {
|
|
@@ -21364,6 +21729,17 @@ function XViewScene({
|
|
|
21364
21729
|
async function onPointerUp(event) {
|
|
21365
21730
|
var _a2, _b2, _c2;
|
|
21366
21731
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21732
|
+
if (longPressTimeoutRef.current) {
|
|
21733
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
21734
|
+
longPressTimeoutRef.current = null;
|
|
21735
|
+
}
|
|
21736
|
+
if (isLongPressTriggeredRef.current) {
|
|
21737
|
+
isLongPressTriggeredRef.current = false;
|
|
21738
|
+
stateRef.current.pointerDown.isDown = false;
|
|
21739
|
+
stateRef.current.dragCandidate = null;
|
|
21740
|
+
stateRef.current.controls.enabled = true;
|
|
21741
|
+
return;
|
|
21742
|
+
}
|
|
21367
21743
|
if (isFromUiOverlay(event)) return;
|
|
21368
21744
|
const {
|
|
21369
21745
|
connection,
|
|
@@ -21598,7 +21974,7 @@ function XViewScene({
|
|
|
21598
21974
|
stateRef.current.dragCandidate = null;
|
|
21599
21975
|
return;
|
|
21600
21976
|
}
|
|
21601
|
-
if (event.button === 0 && !stateRef.current.creation.isActive && stateRef.current.pointerDown.isDown) {
|
|
21977
|
+
if ((event.button === 0 || event.pointerType === "touch") && !stateRef.current.creation.isActive && stateRef.current.pointerDown.isDown) {
|
|
21602
21978
|
setMouseFromEvent(event);
|
|
21603
21979
|
const clickedNode = stateRef.current.dragCandidate || tryPickNode();
|
|
21604
21980
|
stateRef.current.dragCandidate = null;
|
|
@@ -21607,6 +21983,9 @@ function XViewScene({
|
|
|
21607
21983
|
stateRef.current.selectedNodes.clear();
|
|
21608
21984
|
}
|
|
21609
21985
|
if (clickedNode) {
|
|
21986
|
+
setContextMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21987
|
+
setMultiContextMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21988
|
+
setRelationshipMenu((prev) => prev.visible ? { ...prev, visible: false } : prev);
|
|
21610
21989
|
setDetailsNode({ ...clickedNode.userData });
|
|
21611
21990
|
setDetailsLink(null);
|
|
21612
21991
|
return;
|
|
@@ -21642,6 +22021,14 @@ function XViewScene({
|
|
|
21642
22021
|
if (stateRef.current.camera) stateRef.current.camera.layers.enableAll();
|
|
21643
22022
|
if (isFromUiOverlay(event)) return;
|
|
21644
22023
|
event.preventDefault();
|
|
22024
|
+
if (longPressTimeoutRef.current) {
|
|
22025
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
22026
|
+
longPressTimeoutRef.current = null;
|
|
22027
|
+
}
|
|
22028
|
+
isLongPressTriggeredRef.current = true;
|
|
22029
|
+
stateRef.current.pointerDown.isDown = false;
|
|
22030
|
+
stateRef.current.dragCandidate = null;
|
|
22031
|
+
setDetailsNode(null);
|
|
21645
22032
|
if (stateRef.current.creation.isActive || stateRef.current.connection.isActive || stateRef.current.relink.isActive)
|
|
21646
22033
|
return;
|
|
21647
22034
|
setMouseFromEvent(event);
|
|
@@ -21942,7 +22329,7 @@ function XViewScene({
|
|
|
21942
22329
|
get_scene_view_data,
|
|
21943
22330
|
save_view_data
|
|
21944
22331
|
]);
|
|
21945
|
-
const handleGhostNodeImageChange = (0,
|
|
22332
|
+
const handleGhostNodeImageChange = (0, import_react38.useCallback)((useImage, imageUrl) => {
|
|
21946
22333
|
const {
|
|
21947
22334
|
node: ghostNode,
|
|
21948
22335
|
line: ghostLine,
|
|
@@ -21990,7 +22377,7 @@ function XViewScene({
|
|
|
21990
22377
|
aura: newGhostNode.getObjectByName("aura")
|
|
21991
22378
|
};
|
|
21992
22379
|
}, []);
|
|
21993
|
-
const handleGhostNodeIntensityChange = (0,
|
|
22380
|
+
const handleGhostNodeIntensityChange = (0, import_react38.useCallback)((newIntensity) => {
|
|
21994
22381
|
const { node: ghostNode, aura: ghostAura } = stateRef.current.ghostElements;
|
|
21995
22382
|
if (!ghostNode) return;
|
|
21996
22383
|
const adjustedIntensity = newIntensity + MIN_VISIBILITY_INTENSITY;
|
|
@@ -22011,7 +22398,7 @@ function XViewScene({
|
|
|
22011
22398
|
ghostAura.material.opacity = Math.min(0.8, newIntensity * 0.15);
|
|
22012
22399
|
}
|
|
22013
22400
|
}, []);
|
|
22014
|
-
const handleDetailNodeIntensityChange = (0,
|
|
22401
|
+
const handleDetailNodeIntensityChange = (0, import_react38.useCallback)(
|
|
22015
22402
|
(nodeId, newIntensity) => {
|
|
22016
22403
|
const mesh = stateRef.current.nodeObjects[String(nodeId)];
|
|
22017
22404
|
if (!mesh) return;
|
|
@@ -22167,7 +22554,7 @@ function XViewScene({
|
|
|
22167
22554
|
mountRef.current.style.cursor = "default";
|
|
22168
22555
|
}
|
|
22169
22556
|
};
|
|
22170
|
-
const handleAncestryTreeUpdate = (0,
|
|
22557
|
+
const handleAncestryTreeUpdate = (0, import_react38.useCallback)((newTree, extraData = null) => {
|
|
22171
22558
|
setAncestryMode((prev) => {
|
|
22172
22559
|
const prevTreeStr = JSON.stringify(prev.tree);
|
|
22173
22560
|
const newTreeStr = JSON.stringify(newTree);
|
|
@@ -22190,7 +22577,7 @@ function XViewScene({
|
|
|
22190
22577
|
};
|
|
22191
22578
|
});
|
|
22192
22579
|
}, []);
|
|
22193
|
-
const actionHandlerContext = (0,
|
|
22580
|
+
const actionHandlerContext = (0, import_react38.useMemo)(
|
|
22194
22581
|
() => {
|
|
22195
22582
|
var _a2;
|
|
22196
22583
|
return {
|
|
@@ -22302,7 +22689,7 @@ function XViewScene({
|
|
|
22302
22689
|
const handleStartVersioning = (nodeData) => {
|
|
22303
22690
|
userActionHandlers.handleStartVersioning(actionHandlerContext, nodeData);
|
|
22304
22691
|
};
|
|
22305
|
-
const handleStartQuestQuick = (0,
|
|
22692
|
+
const handleStartQuestQuick = (0, import_react38.useCallback)(
|
|
22306
22693
|
(questNode) => {
|
|
22307
22694
|
var _a2, _b2, _c2, _d2, _e2, _f2;
|
|
22308
22695
|
if (!questNode || !actionHandlerContext) return;
|
|
@@ -22384,7 +22771,7 @@ function XViewScene({
|
|
|
22384
22771
|
},
|
|
22385
22772
|
[session, actionHandlerContext]
|
|
22386
22773
|
);
|
|
22387
|
-
const handleFinishQuestQuick = (0,
|
|
22774
|
+
const handleFinishQuestQuick = (0, import_react38.useCallback)(
|
|
22388
22775
|
(questNode) => {
|
|
22389
22776
|
var _a2, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
22390
22777
|
if (!questNode || !actionHandlerContext) return;
|
|
@@ -22534,7 +22921,7 @@ function XViewScene({
|
|
|
22534
22921
|
},
|
|
22535
22922
|
[session, actionHandlerContext, viewMembers, detailsNode]
|
|
22536
22923
|
);
|
|
22537
|
-
const handleCancelQuest = (0,
|
|
22924
|
+
const handleCancelQuest = (0, import_react38.useCallback)(() => {
|
|
22538
22925
|
const { graphGroup, ghostElements } = stateRef.current;
|
|
22539
22926
|
if (ghostElements.node && graphGroup) {
|
|
22540
22927
|
if (ghostElements.node.userData.labelObject) {
|
|
@@ -22556,7 +22943,7 @@ function XViewScene({
|
|
|
22556
22943
|
stateRef.current.ghostElements = { node: null, line: null, aura: null };
|
|
22557
22944
|
setQuestMode({ isActive: false });
|
|
22558
22945
|
}, []);
|
|
22559
|
-
const handleCancelProcess = (0,
|
|
22946
|
+
const handleCancelProcess = (0, import_react38.useCallback)(() => {
|
|
22560
22947
|
const { graphGroup, ghostElements } = stateRef.current;
|
|
22561
22948
|
if (ghostElements.node && graphGroup) {
|
|
22562
22949
|
if (ghostElements.node.userData.labelObject) {
|
|
@@ -22909,7 +23296,7 @@ function XViewScene({
|
|
|
22909
23296
|
alert("Ocorreu um erro ao criar o Processo.");
|
|
22910
23297
|
}
|
|
22911
23298
|
};
|
|
22912
|
-
const handleClearAncestryVisuals = (0,
|
|
23299
|
+
const handleClearAncestryVisuals = (0, import_react38.useCallback)((ancestryId) => {
|
|
22913
23300
|
const { renderedAncestries, ancestryGroup } = stateRef.current;
|
|
22914
23301
|
const renderIndex = renderedAncestries.findIndex(
|
|
22915
23302
|
(a) => String(a.id) === String(ancestryId)
|
|
@@ -22927,7 +23314,7 @@ function XViewScene({
|
|
|
22927
23314
|
);
|
|
22928
23315
|
}
|
|
22929
23316
|
}, []);
|
|
22930
|
-
const handleRenderAncestry = (0,
|
|
23317
|
+
const handleRenderAncestry = (0, import_react38.useCallback)(
|
|
22931
23318
|
async (ancestryObject, allowedSectionIds = null, activeSectionIdForFocus = null, baseRotation = 0, forceReprocess = true) => {
|
|
22932
23319
|
setContextMenu(
|
|
22933
23320
|
(prev) => prev.visible ? { ...prev, visible: false } : prev
|
|
@@ -23421,7 +23808,7 @@ function XViewScene({
|
|
|
23421
23808
|
ancestryMode.isActive
|
|
23422
23809
|
]
|
|
23423
23810
|
);
|
|
23424
|
-
const handleRenderAbstractionTree = (0,
|
|
23811
|
+
const handleRenderAbstractionTree = (0, import_react38.useCallback)(
|
|
23425
23812
|
(ancestryObject, targetNodeId = null, focusNodeId2 = null) => {
|
|
23426
23813
|
setContextMenu(
|
|
23427
23814
|
(prev) => prev.visible ? { ...prev, visible: false } : prev
|
|
@@ -23530,7 +23917,7 @@ function XViewScene({
|
|
|
23530
23917
|
handleClearAncestryVisuals
|
|
23531
23918
|
]
|
|
23532
23919
|
);
|
|
23533
|
-
const handleReadModeBranchNav = (0,
|
|
23920
|
+
const handleReadModeBranchNav = (0, import_react38.useCallback)(
|
|
23534
23921
|
(nodeId, action, direction = "right") => {
|
|
23535
23922
|
const { ancestry, branchStack } = readingMode;
|
|
23536
23923
|
if (!ancestry || !ancestry.tree) return;
|
|
@@ -23708,13 +24095,13 @@ function XViewScene({
|
|
|
23708
24095
|
},
|
|
23709
24096
|
[readingMode, handleRenderAncestry, buildFullAncestryTree, tweenToTarget]
|
|
23710
24097
|
);
|
|
23711
|
-
const handleReadModeHighlight = (0,
|
|
24098
|
+
const handleReadModeHighlight = (0, import_react38.useCallback)((nodeId) => {
|
|
23712
24099
|
if (stateRef.current.highlightedNodeId !== nodeId) {
|
|
23713
24100
|
stateRef.current.highlightedNodeId = nodeId;
|
|
23714
24101
|
}
|
|
23715
24102
|
setHighlightedNodeId(nodeId);
|
|
23716
24103
|
}, []);
|
|
23717
|
-
const activeNodeBranches = (0,
|
|
24104
|
+
const activeNodeBranches = (0, import_react38.useMemo)(() => {
|
|
23718
24105
|
if (!highlightedNodeId || !readingMode.ancestry || !readingMode.ancestry.tree)
|
|
23719
24106
|
return null;
|
|
23720
24107
|
const fullTree = buildFullAncestryTree(
|
|
@@ -23758,7 +24145,7 @@ function XViewScene({
|
|
|
23758
24145
|
readingMode.branchStack,
|
|
23759
24146
|
ancestryDataRef.current
|
|
23760
24147
|
]);
|
|
23761
|
-
const backNavigationInfo = (0,
|
|
24148
|
+
const backNavigationInfo = (0, import_react38.useMemo)(() => {
|
|
23762
24149
|
const { branchStack } = readingMode;
|
|
23763
24150
|
if (!branchStack || branchStack.length === 0) return null;
|
|
23764
24151
|
const lastStep = branchStack[branchStack.length - 1];
|
|
@@ -23769,7 +24156,7 @@ function XViewScene({
|
|
|
23769
24156
|
name: "Voltar para anterior"
|
|
23770
24157
|
};
|
|
23771
24158
|
}, [readingMode.branchStack]);
|
|
23772
|
-
const getReadModeDisplayContext = (0,
|
|
24159
|
+
const getReadModeDisplayContext = (0, import_react38.useMemo)(() => {
|
|
23773
24160
|
const { ancestry, branchStack } = readingMode;
|
|
23774
24161
|
if (!ancestry) return null;
|
|
23775
24162
|
if (branchStack.length === 0) {
|
|
@@ -23812,7 +24199,7 @@ function XViewScene({
|
|
|
23812
24199
|
customProperties: branchProps
|
|
23813
24200
|
};
|
|
23814
24201
|
}, [readingMode, buildFullAncestryTree, ancestryDataRef.current]);
|
|
23815
|
-
const readModeAbstractionTree = (0,
|
|
24202
|
+
const readModeAbstractionTree = (0, import_react38.useMemo)(() => {
|
|
23816
24203
|
if (!readingMode.isActive || !readingMode.ancestry || !readingMode.ancestry.abstraction_tree) {
|
|
23817
24204
|
return null;
|
|
23818
24205
|
}
|
|
@@ -23831,7 +24218,7 @@ function XViewScene({
|
|
|
23831
24218
|
buildFullAncestryTree,
|
|
23832
24219
|
sceneVersion
|
|
23833
24220
|
]);
|
|
23834
|
-
const handleStartReadingAncestry = (0,
|
|
24221
|
+
const handleStartReadingAncestry = (0, import_react38.useCallback)(
|
|
23835
24222
|
async (ancestryObject, renderMode = "full") => {
|
|
23836
24223
|
setContextMenu(
|
|
23837
24224
|
(prev) => prev.visible ? { ...prev, visible: false } : prev
|
|
@@ -23874,7 +24261,7 @@ function XViewScene({
|
|
|
23874
24261
|
},
|
|
23875
24262
|
[handleRenderAncestry, handleRenderAbstractionTree]
|
|
23876
24263
|
);
|
|
23877
|
-
const handleReadModeSectionChange = (0,
|
|
24264
|
+
const handleReadModeSectionChange = (0, import_react38.useCallback)(
|
|
23878
24265
|
(activeSectionId) => {
|
|
23879
24266
|
const { ancestry, branchStack } = readingMode;
|
|
23880
24267
|
if (!ancestry || !readingMode.isActive) return;
|
|
@@ -23959,10 +24346,10 @@ function XViewScene({
|
|
|
23959
24346
|
ancestryDataRef.current
|
|
23960
24347
|
]
|
|
23961
24348
|
);
|
|
23962
|
-
const handleCloseReadMode = (0,
|
|
24349
|
+
const handleCloseReadMode = (0, import_react38.useCallback)(() => {
|
|
23963
24350
|
setReadingMode({ isActive: false, ancestry: null, branchStack: [] });
|
|
23964
24351
|
}, []);
|
|
23965
|
-
const handleAncestrySectionChange = (0,
|
|
24352
|
+
const handleAncestrySectionChange = (0, import_react38.useCallback)(
|
|
23966
24353
|
(activeSectionId, ancestryOverride = null, rotation = 0) => {
|
|
23967
24354
|
var _a2, _b2;
|
|
23968
24355
|
const currentMode = stateRef.current.ancestry;
|
|
@@ -24024,7 +24411,7 @@ function XViewScene({
|
|
|
24024
24411
|
},
|
|
24025
24412
|
[handleRenderAncestry]
|
|
24026
24413
|
);
|
|
24027
|
-
const handleEditAncestry = (0,
|
|
24414
|
+
const handleEditAncestry = (0, import_react38.useCallback)(
|
|
24028
24415
|
async (ancestryObject) => {
|
|
24029
24416
|
setContextMenu(
|
|
24030
24417
|
(prev) => prev.visible ? { ...prev, visible: false } : prev
|
|
@@ -24079,7 +24466,7 @@ function XViewScene({
|
|
|
24079
24466
|
const handleSelectAncestryParent = (nodeId) => {
|
|
24080
24467
|
setAncestryMode((prev) => ({ ...prev, selectedParentId: nodeId }));
|
|
24081
24468
|
};
|
|
24082
|
-
const handleRemoveFromAncestry = (0,
|
|
24469
|
+
const handleRemoveFromAncestry = (0, import_react38.useCallback)((pathToRemove) => {
|
|
24083
24470
|
if (!Array.isArray(pathToRemove) || pathToRemove.length === 0) {
|
|
24084
24471
|
console.warn("Tentativa de remover a raiz ou caminho inv\xE1lido.");
|
|
24085
24472
|
return;
|
|
@@ -24104,7 +24491,7 @@ function XViewScene({
|
|
|
24104
24491
|
return { ...prev, tree: newTree };
|
|
24105
24492
|
});
|
|
24106
24493
|
}, []);
|
|
24107
|
-
const handleSaveAncestry = (0,
|
|
24494
|
+
const handleSaveAncestry = (0, import_react38.useCallback)(
|
|
24108
24495
|
async (ancestryName, ancestryDescription, ancestrySections, keepOpen = false, treeOverride = null, ancestryCustomProps = {}) => {
|
|
24109
24496
|
var _a2;
|
|
24110
24497
|
const treeToUse = treeOverride || ancestryMode.tree;
|
|
@@ -24372,7 +24759,7 @@ function XViewScene({
|
|
|
24372
24759
|
});
|
|
24373
24760
|
setEditingAncestryRel({ visible: false, data: null, path: null });
|
|
24374
24761
|
};
|
|
24375
|
-
const handleDeleteAncestry = (0,
|
|
24762
|
+
const handleDeleteAncestry = (0, import_react38.useCallback)(
|
|
24376
24763
|
async (ancestryIdToDelete) => {
|
|
24377
24764
|
if (!ancestryIdToDelete) {
|
|
24378
24765
|
alert("ID da ancestralidade n\xE3o encontrado.");
|
|
@@ -24506,19 +24893,19 @@ function XViewScene({
|
|
|
24506
24893
|
},
|
|
24507
24894
|
[save_view_data, delete_file_action]
|
|
24508
24895
|
);
|
|
24509
|
-
const handleOpenBoards = (0,
|
|
24896
|
+
const handleOpenBoards = (0, import_react38.useCallback)(() => {
|
|
24510
24897
|
setIsBoardsOpen(true);
|
|
24511
24898
|
}, []);
|
|
24512
|
-
const allAvailableNodes = (0,
|
|
24899
|
+
const allAvailableNodes = (0, import_react38.useMemo)(() => {
|
|
24513
24900
|
if (!parentDataRef.current) return [];
|
|
24514
24901
|
return Object.values(parentDataRef.current).flatMap(
|
|
24515
24902
|
(fileData) => fileData.nodes || []
|
|
24516
24903
|
);
|
|
24517
24904
|
}, [sceneVersion, isInitialized]);
|
|
24518
|
-
const allAvailableAncestries = (0,
|
|
24905
|
+
const allAvailableAncestries = (0, import_react38.useMemo)(() => {
|
|
24519
24906
|
return ancestryDataRef.current || [];
|
|
24520
24907
|
}, [sceneVersion, isInitialized]);
|
|
24521
|
-
const handleFocusNode = (0,
|
|
24908
|
+
const handleFocusNode = (0, import_react38.useCallback)(
|
|
24522
24909
|
(nodeData) => {
|
|
24523
24910
|
var _a2;
|
|
24524
24911
|
if (!nodeData) return;
|
|
@@ -24534,7 +24921,7 @@ function XViewScene({
|
|
|
24534
24921
|
},
|
|
24535
24922
|
[tweenToTarget]
|
|
24536
24923
|
);
|
|
24537
|
-
const handleOpenReference = (0,
|
|
24924
|
+
const handleOpenReference = (0, import_react38.useCallback)(
|
|
24538
24925
|
(referenceData) => {
|
|
24539
24926
|
const { type, id } = referenceData;
|
|
24540
24927
|
if (type === "node") {
|
|
@@ -24570,7 +24957,7 @@ function XViewScene({
|
|
|
24570
24957
|
handleFocusNode
|
|
24571
24958
|
]
|
|
24572
24959
|
);
|
|
24573
|
-
const handleSelectAncestryFromBoard = (0,
|
|
24960
|
+
const handleSelectAncestryFromBoard = (0, import_react38.useCallback)(
|
|
24574
24961
|
(item) => {
|
|
24575
24962
|
setIsBoardsOpen(false);
|
|
24576
24963
|
setIsSidebarOpen(false);
|
|
@@ -24582,7 +24969,7 @@ function XViewScene({
|
|
|
24582
24969
|
},
|
|
24583
24970
|
[handleStartReadingAncestry, handleOpenReference]
|
|
24584
24971
|
);
|
|
24585
|
-
const handleSaveBoards = (0,
|
|
24972
|
+
const handleSaveBoards = (0, import_react38.useCallback)(
|
|
24586
24973
|
async (boardItems2) => {
|
|
24587
24974
|
if (!sceneConfigId || !viewParams || !session) return;
|
|
24588
24975
|
const sceneType = (viewParams.type || "").toLowerCase().includes("database") ? "database" : "view";
|
|
@@ -24596,7 +24983,7 @@ function XViewScene({
|
|
|
24596
24983
|
},
|
|
24597
24984
|
[sceneConfigId, viewParams, session, save_boards_action, ownerId]
|
|
24598
24985
|
);
|
|
24599
|
-
const existingNodeTypes = (0,
|
|
24986
|
+
const existingNodeTypes = (0, import_react38.useMemo)(() => {
|
|
24600
24987
|
if (!parentDataRef.current) {
|
|
24601
24988
|
return [];
|
|
24602
24989
|
}
|
|
@@ -24608,7 +24995,7 @@ function XViewScene({
|
|
|
24608
24995
|
).filter((t) => Boolean(t) && String(t).toLowerCase() !== "quest");
|
|
24609
24996
|
return [...new Set(allTypes)];
|
|
24610
24997
|
}, [parentDataRef.current, sceneVersion]);
|
|
24611
|
-
const searchableDbNodes = (0,
|
|
24998
|
+
const searchableDbNodes = (0, import_react38.useMemo)(() => {
|
|
24612
24999
|
if (!parentDataRef.current) {
|
|
24613
25000
|
return [];
|
|
24614
25001
|
}
|
|
@@ -24623,7 +25010,7 @@ function XViewScene({
|
|
|
24623
25010
|
return !((_a2 = node.version_node) == null ? void 0 : _a2.is_version);
|
|
24624
25011
|
});
|
|
24625
25012
|
}, [parentDataRef.current, sceneVersion]);
|
|
24626
|
-
const handleAddExistingNode = (0,
|
|
25013
|
+
const handleAddExistingNode = (0, import_react38.useCallback)(
|
|
24627
25014
|
(nodeId) => {
|
|
24628
25015
|
return userActionHandlers.handleAddExistingNodeById(
|
|
24629
25016
|
actionHandlerContext,
|
|
@@ -24632,7 +25019,7 @@ function XViewScene({
|
|
|
24632
25019
|
},
|
|
24633
25020
|
[actionHandlerContext]
|
|
24634
25021
|
);
|
|
24635
|
-
const handleUpdateMilestones = (0,
|
|
25022
|
+
const handleUpdateMilestones = (0, import_react38.useCallback)(
|
|
24636
25023
|
async (newMilestones) => {
|
|
24637
25024
|
var _a2, _b2, _c2;
|
|
24638
25025
|
if (!sceneDataRef.current) return;
|
|
@@ -24659,7 +25046,7 @@ function XViewScene({
|
|
|
24659
25046
|
},
|
|
24660
25047
|
[sceneConfigId, sceneSaveUrl, save_view_data, viewParams == null ? void 0 : viewParams.type]
|
|
24661
25048
|
);
|
|
24662
|
-
const handleSaveCurrentView = (0,
|
|
25049
|
+
const handleSaveCurrentView = (0, import_react38.useCallback)(async () => {
|
|
24663
25050
|
var _a2;
|
|
24664
25051
|
const { nodeObjects, allLinks } = stateRef.current;
|
|
24665
25052
|
if (!nodeObjects || !allLinks || !sceneSaveUrl || !parentDataRef.current) {
|
|
@@ -24698,13 +25085,13 @@ function XViewScene({
|
|
|
24698
25085
|
console.error("Erro na chamada de save_view_data:", error);
|
|
24699
25086
|
}
|
|
24700
25087
|
}, [sceneSaveUrl, save_view_data, sceneConfigId, viewParams == null ? void 0 : viewParams.type]);
|
|
24701
|
-
const handleToggleAncestryAddMode = (0,
|
|
25088
|
+
const handleToggleAncestryAddMode = (0, import_react38.useCallback)(() => {
|
|
24702
25089
|
setAncestryMode((prev) => ({
|
|
24703
25090
|
...prev,
|
|
24704
25091
|
isAddingNodes: !prev.isAddingNodes
|
|
24705
25092
|
}));
|
|
24706
25093
|
}, []);
|
|
24707
|
-
const availableDatasets = (0,
|
|
25094
|
+
const availableDatasets = (0, import_react38.useMemo)(() => {
|
|
24708
25095
|
if (!sceneDataRef.current || !parentDataRef.current) return [];
|
|
24709
25096
|
return sceneDataRef.current.parent_dbs.map((db) => {
|
|
24710
25097
|
var _a2;
|
|
@@ -24718,7 +25105,7 @@ function XViewScene({
|
|
|
24718
25105
|
String(creationMode.sourceNodeData.id)
|
|
24719
25106
|
)) == null ? void 0 : _b.parentFileId : null;
|
|
24720
25107
|
const detailsNodeDatasetInfo = detailsNode ? stateRef.current.nodeIdToParentFileMap.get(String(detailsNode.id)) : null;
|
|
24721
|
-
(0,
|
|
25108
|
+
(0, import_react38.useEffect)(() => {
|
|
24722
25109
|
if (!isInitialized || hasFocusedInitial) return;
|
|
24723
25110
|
const nodeObjects = stateRef.current.nodeObjects || {};
|
|
24724
25111
|
if (focusNodeId) {
|
|
@@ -24765,7 +25152,7 @@ function XViewScene({
|
|
|
24765
25152
|
hasFocusedInitial,
|
|
24766
25153
|
tweenToTarget
|
|
24767
25154
|
]);
|
|
24768
|
-
(0,
|
|
25155
|
+
(0, import_react38.useEffect)(() => {
|
|
24769
25156
|
if (isInitialized && focusAncestryId && !hasOpenedInitialAncestry) {
|
|
24770
25157
|
const ancestries = ancestryDataRef.current || [];
|
|
24771
25158
|
const targetAncestry = ancestries.find(
|
|
@@ -24790,7 +25177,7 @@ function XViewScene({
|
|
|
24790
25177
|
hasOpenedInitialAncestry,
|
|
24791
25178
|
handleStartReadingAncestry
|
|
24792
25179
|
]);
|
|
24793
|
-
(0,
|
|
25180
|
+
(0, import_react38.useEffect)(() => {
|
|
24794
25181
|
function handleKeyDown(event) {
|
|
24795
25182
|
var _a2, _b2, _c2, _d2, _e2, _f2;
|
|
24796
25183
|
const context = actionHandlerContext;
|
|
@@ -25013,7 +25400,7 @@ function XViewScene({
|
|
|
25013
25400
|
// <-- handleCancelQuest adicionado aqui
|
|
25014
25401
|
]);
|
|
25015
25402
|
if (isLoading || status === "loading" || permissionStatus === "loading") {
|
|
25016
|
-
return /* @__PURE__ */
|
|
25403
|
+
return /* @__PURE__ */ import_react38.default.createElement(LoadingScreen, null);
|
|
25017
25404
|
}
|
|
25018
25405
|
const overlayHiddenStyle = questTreeMode.isActive || processTreeMode.isActive ? {
|
|
25019
25406
|
opacity: 0,
|
|
@@ -25022,7 +25409,7 @@ function XViewScene({
|
|
|
25022
25409
|
transition: "all 300ms ease-in-out"
|
|
25023
25410
|
} : {};
|
|
25024
25411
|
if (permissionStatus === "corrupted") {
|
|
25025
|
-
return /* @__PURE__ */
|
|
25412
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ import_react38.default.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__ */ import_react38.default.createElement("div", { className: "mb-4 text-amber-500" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
25026
25413
|
"svg",
|
|
25027
25414
|
{
|
|
25028
25415
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25032,7 +25419,7 @@ function XViewScene({
|
|
|
25032
25419
|
stroke: "currentColor",
|
|
25033
25420
|
className: "w-16 h-16 mx-auto"
|
|
25034
25421
|
},
|
|
25035
|
-
/* @__PURE__ */
|
|
25422
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25036
25423
|
"path",
|
|
25037
25424
|
{
|
|
25038
25425
|
strokeLinecap: "round",
|
|
@@ -25040,13 +25427,13 @@ function XViewScene({
|
|
|
25040
25427
|
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"
|
|
25041
25428
|
}
|
|
25042
25429
|
)
|
|
25043
|
-
)), /* @__PURE__ */
|
|
25430
|
+
)), /* @__PURE__ */ import_react38.default.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Link Inv\xE1lido"), /* @__PURE__ */ import_react38.default.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__ */ import_react38.default.createElement(
|
|
25044
25431
|
"button",
|
|
25045
25432
|
{
|
|
25046
25433
|
onClick: handleNavigateBack,
|
|
25047
25434
|
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"
|
|
25048
25435
|
},
|
|
25049
|
-
/* @__PURE__ */
|
|
25436
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25050
25437
|
"svg",
|
|
25051
25438
|
{
|
|
25052
25439
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25056,7 +25443,7 @@ function XViewScene({
|
|
|
25056
25443
|
stroke: "currentColor",
|
|
25057
25444
|
className: "w-5 h-5"
|
|
25058
25445
|
},
|
|
25059
|
-
/* @__PURE__ */
|
|
25446
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25060
25447
|
"path",
|
|
25061
25448
|
{
|
|
25062
25449
|
strokeLinecap: "round",
|
|
@@ -25069,7 +25456,7 @@ function XViewScene({
|
|
|
25069
25456
|
)));
|
|
25070
25457
|
}
|
|
25071
25458
|
if (permissionStatus === "denied") {
|
|
25072
|
-
return /* @__PURE__ */
|
|
25459
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
25073
25460
|
"svg",
|
|
25074
25461
|
{
|
|
25075
25462
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25079,7 +25466,7 @@ function XViewScene({
|
|
|
25079
25466
|
stroke: "currentColor",
|
|
25080
25467
|
className: "w-16 h-16 mx-auto"
|
|
25081
25468
|
},
|
|
25082
|
-
/* @__PURE__ */
|
|
25469
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25083
25470
|
"path",
|
|
25084
25471
|
{
|
|
25085
25472
|
strokeLinecap: "round",
|
|
@@ -25087,13 +25474,13 @@ function XViewScene({
|
|
|
25087
25474
|
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"
|
|
25088
25475
|
}
|
|
25089
25476
|
)
|
|
25090
|
-
)), /* @__PURE__ */
|
|
25477
|
+
)), /* @__PURE__ */ import_react38.default.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ import_react38.default.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__ */ import_react38.default.createElement(
|
|
25091
25478
|
"button",
|
|
25092
25479
|
{
|
|
25093
25480
|
onClick: handleNavigateBack,
|
|
25094
25481
|
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"
|
|
25095
25482
|
},
|
|
25096
|
-
/* @__PURE__ */
|
|
25483
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25097
25484
|
"svg",
|
|
25098
25485
|
{
|
|
25099
25486
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -25103,7 +25490,7 @@ function XViewScene({
|
|
|
25103
25490
|
stroke: "currentColor",
|
|
25104
25491
|
className: "w-5 h-5"
|
|
25105
25492
|
},
|
|
25106
|
-
/* @__PURE__ */
|
|
25493
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25107
25494
|
"path",
|
|
25108
25495
|
{
|
|
25109
25496
|
strokeLinecap: "round",
|
|
@@ -25115,7 +25502,7 @@ function XViewScene({
|
|
|
25115
25502
|
"Voltar para o X.View"
|
|
25116
25503
|
)));
|
|
25117
25504
|
}
|
|
25118
|
-
return /* @__PURE__ */
|
|
25505
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
25119
25506
|
"div",
|
|
25120
25507
|
{
|
|
25121
25508
|
ref: mountRef,
|
|
@@ -25127,7 +25514,7 @@ function XViewScene({
|
|
|
25127
25514
|
cursor: isProcessing ? "progress" : stateRef.current.connection.isActive || stateRef.current.relink.isActive || ancestryMode.isActive ? "crosshair" : creationMode.isActive ? "default" : "grab"
|
|
25128
25515
|
}
|
|
25129
25516
|
},
|
|
25130
|
-
userPermissionRole !== "link_viewer" && /* @__PURE__ */
|
|
25517
|
+
userPermissionRole !== "link_viewer" && /* @__PURE__ */ import_react38.default.createElement(
|
|
25131
25518
|
XViewSidebar,
|
|
25132
25519
|
{
|
|
25133
25520
|
dbNodes: searchableDbNodes,
|
|
@@ -25156,7 +25543,7 @@ function XViewScene({
|
|
|
25156
25543
|
viewMembers
|
|
25157
25544
|
}
|
|
25158
25545
|
),
|
|
25159
|
-
creationMode.isActive && /* @__PURE__ */
|
|
25546
|
+
creationMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25160
25547
|
InSceneCreationForm,
|
|
25161
25548
|
{
|
|
25162
25549
|
onSave: (data) => userActionHandlers.handleSaveNode(actionHandlerContext, data),
|
|
@@ -25191,7 +25578,7 @@ function XViewScene({
|
|
|
25191
25578
|
view_google_folder_id: (_h = sceneDataRef.current) == null ? void 0 : _h.view_google_folder_id
|
|
25192
25579
|
}
|
|
25193
25580
|
),
|
|
25194
|
-
versionMode.isActive && /* @__PURE__ */
|
|
25581
|
+
versionMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25195
25582
|
InSceneVersionForm,
|
|
25196
25583
|
{
|
|
25197
25584
|
onSave: (data) => userActionHandlers.handleSaveVersionNode(actionHandlerContext, data),
|
|
@@ -25218,7 +25605,7 @@ function XViewScene({
|
|
|
25218
25605
|
availableAncestries: allAvailableAncestries
|
|
25219
25606
|
}
|
|
25220
25607
|
),
|
|
25221
|
-
questTreeMode.isActive && /* @__PURE__ */
|
|
25608
|
+
questTreeMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25222
25609
|
CreateQuestTreePanel,
|
|
25223
25610
|
{
|
|
25224
25611
|
questTreeMode,
|
|
@@ -25227,7 +25614,7 @@ function XViewScene({
|
|
|
25227
25614
|
onClose: handleCloseQuestTree
|
|
25228
25615
|
}
|
|
25229
25616
|
),
|
|
25230
|
-
processTreeMode.isActive && /* @__PURE__ */
|
|
25617
|
+
processTreeMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25231
25618
|
CreateProcessTreePanel,
|
|
25232
25619
|
{
|
|
25233
25620
|
processTreeMode,
|
|
@@ -25236,7 +25623,7 @@ function XViewScene({
|
|
|
25236
25623
|
onClose: handleCloseProcessTree
|
|
25237
25624
|
}
|
|
25238
25625
|
),
|
|
25239
|
-
questMode.isActive && /* @__PURE__ */
|
|
25626
|
+
questMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25240
25627
|
InSceneQuestForm,
|
|
25241
25628
|
{
|
|
25242
25629
|
onSave: (data) => handleSaveQuestNode(actionHandlerContext, data),
|
|
@@ -25267,7 +25654,7 @@ function XViewScene({
|
|
|
25267
25654
|
view_google_folder_id: (_m = sceneDataRef.current) == null ? void 0 : _m.view_google_folder_id
|
|
25268
25655
|
}
|
|
25269
25656
|
),
|
|
25270
|
-
processMode.isActive && /* @__PURE__ */
|
|
25657
|
+
processMode.isActive && /* @__PURE__ */ import_react38.default.createElement(
|
|
25271
25658
|
InSceneProcessForm,
|
|
25272
25659
|
{
|
|
25273
25660
|
onSave: (data) => handleSaveProcessNode(actionHandlerContext, data),
|
|
@@ -25294,7 +25681,7 @@ function XViewScene({
|
|
|
25294
25681
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id
|
|
25295
25682
|
}
|
|
25296
25683
|
),
|
|
25297
|
-
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */
|
|
25684
|
+
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ import_react38.default.createElement(
|
|
25298
25685
|
"div",
|
|
25299
25686
|
{
|
|
25300
25687
|
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"}`,
|
|
@@ -25307,7 +25694,7 @@ function XViewScene({
|
|
|
25307
25694
|
maxWidth: "92vw"
|
|
25308
25695
|
}
|
|
25309
25696
|
},
|
|
25310
|
-
/* @__PURE__ */
|
|
25697
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25311
25698
|
"div",
|
|
25312
25699
|
{
|
|
25313
25700
|
onPointerDown: (e) => {
|
|
@@ -25318,7 +25705,7 @@ function XViewScene({
|
|
|
25318
25705
|
title: "Arraste para redimensionar"
|
|
25319
25706
|
}
|
|
25320
25707
|
),
|
|
25321
|
-
/* @__PURE__ */
|
|
25708
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25322
25709
|
DescriptionReadModePanel,
|
|
25323
25710
|
{
|
|
25324
25711
|
key: readingMode.branchStack.length > 0 ? readingMode.branchStack[readingMode.branchStack.length - 1].branchId : readingMode.ancestry.ancestry_id,
|
|
@@ -25353,7 +25740,7 @@ function XViewScene({
|
|
|
25353
25740
|
}
|
|
25354
25741
|
)
|
|
25355
25742
|
),
|
|
25356
|
-
ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */
|
|
25743
|
+
ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ import_react38.default.createElement(
|
|
25357
25744
|
CreateAncestryPanel,
|
|
25358
25745
|
{
|
|
25359
25746
|
ancestryMode,
|
|
@@ -25389,7 +25776,7 @@ function XViewScene({
|
|
|
25389
25776
|
onRenderAbstractionTree: (data, targetId) => handleRenderAbstractionTree(data, targetId)
|
|
25390
25777
|
}
|
|
25391
25778
|
),
|
|
25392
|
-
editingAncestryRel.visible && /* @__PURE__ */
|
|
25779
|
+
editingAncestryRel.visible && /* @__PURE__ */ import_react38.default.createElement(
|
|
25393
25780
|
AncestryRelationshipPanel,
|
|
25394
25781
|
{
|
|
25395
25782
|
data: editingAncestryRel.data,
|
|
@@ -25403,8 +25790,8 @@ function XViewScene({
|
|
|
25403
25790
|
onUploadFile: upload_file_action
|
|
25404
25791
|
}
|
|
25405
25792
|
),
|
|
25406
|
-
isProcessing && /* @__PURE__ */
|
|
25407
|
-
detailsNode && detailsNode.is_quest && /* @__PURE__ */
|
|
25793
|
+
isProcessing && /* @__PURE__ */ import_react38.default.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__ */ import_react38.default.createElement("div", { className: "w-4 h-4 border-2 border-indigo-500 border-t-transparent rounded-full animate-spin" }), /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-xs font-medium text-indigo-200 tracking-wider uppercase" }, "Sincronizando Processo...")),
|
|
25794
|
+
detailsNode && detailsNode.is_quest && /* @__PURE__ */ import_react38.default.createElement(
|
|
25408
25795
|
QuestDetailsPanel,
|
|
25409
25796
|
{
|
|
25410
25797
|
node: detailsNode,
|
|
@@ -25436,7 +25823,7 @@ function XViewScene({
|
|
|
25436
25823
|
style: overlayHiddenStyle
|
|
25437
25824
|
}
|
|
25438
25825
|
),
|
|
25439
|
-
detailsNode && detailsNode.is_process && /* @__PURE__ */
|
|
25826
|
+
detailsNode && detailsNode.is_process && /* @__PURE__ */ import_react38.default.createElement(
|
|
25440
25827
|
ProcessDetailsPanel,
|
|
25441
25828
|
{
|
|
25442
25829
|
node: detailsNode,
|
|
@@ -25466,7 +25853,7 @@ function XViewScene({
|
|
|
25466
25853
|
style: overlayHiddenStyle
|
|
25467
25854
|
}
|
|
25468
25855
|
),
|
|
25469
|
-
detailsNode && !detailsNode.is_quest && !detailsNode.is_process && /* @__PURE__ */
|
|
25856
|
+
detailsNode && !detailsNode.is_quest && !detailsNode.is_process && /* @__PURE__ */ import_react38.default.createElement(
|
|
25470
25857
|
NodeDetailsPanel,
|
|
25471
25858
|
{
|
|
25472
25859
|
node: detailsNode,
|
|
@@ -25501,7 +25888,7 @@ function XViewScene({
|
|
|
25501
25888
|
style: overlayHiddenStyle
|
|
25502
25889
|
}
|
|
25503
25890
|
),
|
|
25504
|
-
detailsLink && /* @__PURE__ */
|
|
25891
|
+
detailsLink && /* @__PURE__ */ import_react38.default.createElement(
|
|
25505
25892
|
RelationshipDetailsPanel,
|
|
25506
25893
|
{
|
|
25507
25894
|
link: detailsLink,
|
|
@@ -25516,7 +25903,7 @@ function XViewScene({
|
|
|
25516
25903
|
onHighlight: handleReadModeHighlight
|
|
25517
25904
|
}
|
|
25518
25905
|
),
|
|
25519
|
-
ancestryLinkDetails && /* @__PURE__ */
|
|
25906
|
+
ancestryLinkDetails && /* @__PURE__ */ import_react38.default.createElement(
|
|
25520
25907
|
AncestryLinkDetailsPanel,
|
|
25521
25908
|
{
|
|
25522
25909
|
data: ancestryLinkDetails,
|
|
@@ -25528,7 +25915,7 @@ function XViewScene({
|
|
|
25528
25915
|
onHighlight: handleReadModeHighlight
|
|
25529
25916
|
}
|
|
25530
25917
|
),
|
|
25531
|
-
/* @__PURE__ */
|
|
25918
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25532
25919
|
"div",
|
|
25533
25920
|
{
|
|
25534
25921
|
ref: tooltipRef,
|
|
@@ -25555,7 +25942,7 @@ function XViewScene({
|
|
|
25555
25942
|
}
|
|
25556
25943
|
}
|
|
25557
25944
|
),
|
|
25558
|
-
/* @__PURE__ */
|
|
25945
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25559
25946
|
ContextMenu,
|
|
25560
25947
|
{
|
|
25561
25948
|
data: contextMenu,
|
|
@@ -25594,7 +25981,7 @@ function XViewScene({
|
|
|
25594
25981
|
onInitiateProcess: (data) => userActionHandlers.handleInitiateProcess(actionHandlerContext, data)
|
|
25595
25982
|
}
|
|
25596
25983
|
),
|
|
25597
|
-
/* @__PURE__ */
|
|
25984
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25598
25985
|
MultiNodeContextMenu,
|
|
25599
25986
|
{
|
|
25600
25987
|
data: multiContextMenu,
|
|
@@ -25614,7 +26001,7 @@ function XViewScene({
|
|
|
25614
26001
|
)
|
|
25615
26002
|
}
|
|
25616
26003
|
),
|
|
25617
|
-
/* @__PURE__ */
|
|
26004
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25618
26005
|
RelationshipContextMenu,
|
|
25619
26006
|
{
|
|
25620
26007
|
data: relationshipMenu,
|
|
@@ -25632,14 +26019,14 @@ function XViewScene({
|
|
|
25632
26019
|
onDelete: (data) => userActionHandlers.handleDeleteLink(actionHandlerContext, data)
|
|
25633
26020
|
}
|
|
25634
26021
|
),
|
|
25635
|
-
/* @__PURE__ */
|
|
26022
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25636
26023
|
ImageViewer,
|
|
25637
26024
|
{
|
|
25638
26025
|
data: imageViewer,
|
|
25639
26026
|
onClose: () => setImageViewer({ ...imageViewer, visible: false })
|
|
25640
26027
|
}
|
|
25641
26028
|
),
|
|
25642
|
-
/* @__PURE__ */
|
|
26029
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25643
26030
|
Boards,
|
|
25644
26031
|
{
|
|
25645
26032
|
isOpen: isBoardsOpen,
|
|
@@ -25652,7 +26039,7 @@ function XViewScene({
|
|
|
25652
26039
|
userRole: userPermissionRole
|
|
25653
26040
|
}
|
|
25654
26041
|
),
|
|
25655
|
-
/* @__PURE__ */
|
|
26042
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25656
26043
|
MilestoneManager,
|
|
25657
26044
|
{
|
|
25658
26045
|
isOpen: isMilestoneManagerOpen,
|
|
@@ -25661,7 +26048,7 @@ function XViewScene({
|
|
|
25661
26048
|
onUpdateMilestones: handleUpdateMilestones
|
|
25662
26049
|
}
|
|
25663
26050
|
),
|
|
25664
|
-
/* @__PURE__ */
|
|
26051
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25665
26052
|
ImportParentFileModal,
|
|
25666
26053
|
{
|
|
25667
26054
|
isOpen: isImportModalOpen,
|
|
@@ -25674,7 +26061,7 @@ function XViewScene({
|
|
|
25674
26061
|
currentAncestries: ancestryDataRef.current || []
|
|
25675
26062
|
}
|
|
25676
26063
|
),
|
|
25677
|
-
invalidTargetError && /* @__PURE__ */
|
|
26064
|
+
invalidTargetError && /* @__PURE__ */ import_react38.default.createElement(
|
|
25678
26065
|
"div",
|
|
25679
26066
|
{
|
|
25680
26067
|
className: "ui-overlay",
|
|
@@ -25699,13 +26086,13 @@ function XViewScene({
|
|
|
25699
26086
|
animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
|
|
25700
26087
|
}
|
|
25701
26088
|
},
|
|
25702
|
-
/* @__PURE__ */
|
|
26089
|
+
/* @__PURE__ */ import_react38.default.createElement("style", null, `
|
|
25703
26090
|
@keyframes fadeInDown {
|
|
25704
26091
|
from { opacity: 0; transform: translate(-50%, -20px); }
|
|
25705
26092
|
to { opacity: 1; transform: translate(-50%, 0); }
|
|
25706
26093
|
}
|
|
25707
26094
|
`),
|
|
25708
|
-
/* @__PURE__ */
|
|
26095
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25709
26096
|
"svg",
|
|
25710
26097
|
{
|
|
25711
26098
|
width: "20",
|
|
@@ -25717,12 +26104,12 @@ function XViewScene({
|
|
|
25717
26104
|
strokeLinecap: "round",
|
|
25718
26105
|
strokeLinejoin: "round"
|
|
25719
26106
|
},
|
|
25720
|
-
/* @__PURE__ */
|
|
25721
|
-
/* @__PURE__ */
|
|
25722
|
-
/* @__PURE__ */
|
|
26107
|
+
/* @__PURE__ */ import_react38.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
26108
|
+
/* @__PURE__ */ import_react38.default.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
|
|
26109
|
+
/* @__PURE__ */ import_react38.default.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
|
|
25723
26110
|
),
|
|
25724
|
-
/* @__PURE__ */
|
|
25725
|
-
/* @__PURE__ */
|
|
26111
|
+
/* @__PURE__ */ import_react38.default.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
|
|
26112
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25726
26113
|
"button",
|
|
25727
26114
|
{
|
|
25728
26115
|
onClick: () => setInvalidTargetError(null),
|
|
@@ -25750,7 +26137,7 @@ function XViewScene({
|
|
|
25750
26137
|
"Fechar"
|
|
25751
26138
|
)
|
|
25752
26139
|
),
|
|
25753
|
-
/* @__PURE__ */
|
|
26140
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
25754
26141
|
UpgradeModal,
|
|
25755
26142
|
{
|
|
25756
26143
|
isOpen: isUpgradeModalOpen,
|