@lv-x-software-house/x_view 1.2.6-dev.74 → 1.2.6-dev.76
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 +34 -10
- package/dist/index.mjs +73 -49
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8910,7 +8910,7 @@ function CreateQuestTreePanel({
|
|
|
8910
8910
|
};
|
|
8911
8911
|
const isAddingModeActive = activeTab === "abstraction" ? isAddingAbstractionNodes : isAddingNodes;
|
|
8912
8912
|
const currentTree = activeTab === "abstraction" ? abstraction_tree : tree;
|
|
8913
|
-
useEffect(() => {
|
|
8913
|
+
(0, import_react12.useEffect)(() => {
|
|
8914
8914
|
if (!tree && !abstraction_tree && questTreeMode.questNodeId) {
|
|
8915
8915
|
const rootNode = {
|
|
8916
8916
|
id: questTreeMode.questNodeId,
|
|
@@ -11265,7 +11265,8 @@ function NodeDetailsPanel({
|
|
|
11265
11265
|
userRole,
|
|
11266
11266
|
currentDatasetName,
|
|
11267
11267
|
create_google_doc_action,
|
|
11268
|
-
view_google_folder_id
|
|
11268
|
+
view_google_folder_id,
|
|
11269
|
+
style = {}
|
|
11269
11270
|
}) {
|
|
11270
11271
|
const [name, setName] = (0, import_react20.useState)((node == null ? void 0 : node.name) ?? "");
|
|
11271
11272
|
const [types, setTypes] = (0, import_react20.useState)([]);
|
|
@@ -11595,7 +11596,15 @@ function NodeDetailsPanel({
|
|
|
11595
11596
|
"div",
|
|
11596
11597
|
{
|
|
11597
11598
|
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 ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
|
|
11598
|
-
style: {
|
|
11599
|
+
style: {
|
|
11600
|
+
top: 16,
|
|
11601
|
+
right: 16,
|
|
11602
|
+
zIndex: 1100,
|
|
11603
|
+
maxHeight: "calc(100vh - 32px)",
|
|
11604
|
+
width: `${panelWidth}px`,
|
|
11605
|
+
maxWidth: "92vw",
|
|
11606
|
+
...style
|
|
11607
|
+
},
|
|
11599
11608
|
onPointerDown: swallow,
|
|
11600
11609
|
onPointerMove: swallow,
|
|
11601
11610
|
onPointerUp: swallow,
|
|
@@ -11967,7 +11976,8 @@ function QuestDetailsPanel({
|
|
|
11967
11976
|
view_google_folder_id,
|
|
11968
11977
|
setQuestTreeMode: setQuestTreeMode2,
|
|
11969
11978
|
handleRenderQuestTree,
|
|
11970
|
-
handleRenderQuestAbstractionTree
|
|
11979
|
+
handleRenderQuestAbstractionTree,
|
|
11980
|
+
style = {}
|
|
11971
11981
|
}) {
|
|
11972
11982
|
var _a, _b;
|
|
11973
11983
|
const initialRawTitle = (node == null ? void 0 : node.raw_title) || (((_a = node == null ? void 0 : node.name) == null ? void 0 : _a.includes(" - \xBB ")) ? node.name.split(" - \xBB ")[1] : node == null ? void 0 : node.name) || "";
|
|
@@ -12545,7 +12555,15 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12545
12555
|
"div",
|
|
12546
12556
|
{
|
|
12547
12557
|
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 ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
|
|
12548
|
-
style: {
|
|
12558
|
+
style: {
|
|
12559
|
+
top: 16,
|
|
12560
|
+
right: 16,
|
|
12561
|
+
zIndex: 1100,
|
|
12562
|
+
maxHeight: "calc(100vh - 32px)",
|
|
12563
|
+
width: `${panelWidth}px`,
|
|
12564
|
+
maxWidth: "92vw",
|
|
12565
|
+
...style
|
|
12566
|
+
},
|
|
12549
12567
|
onPointerDown: swallow,
|
|
12550
12568
|
onPointerMove: swallow,
|
|
12551
12569
|
onPointerUp: swallow,
|
|
@@ -20162,6 +20180,7 @@ function XViewScene({
|
|
|
20162
20180
|
if (isLoading || status === "loading" || permissionStatus === "loading") {
|
|
20163
20181
|
return /* @__PURE__ */ import_react33.default.createElement(LoadingScreen, null);
|
|
20164
20182
|
}
|
|
20183
|
+
const overlayHiddenStyle = questTreeMode.isActive ? { opacity: 0, pointerEvents: "none", transform: "translateX(30px)", transition: "all 300ms ease-in-out" } : {};
|
|
20165
20184
|
if (permissionStatus === "denied") {
|
|
20166
20185
|
return /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ import_react33.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_react33.default.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
20167
20186
|
"svg",
|
|
@@ -20267,7 +20286,8 @@ function XViewScene({
|
|
|
20267
20286
|
top: `${formPosition.top}px`,
|
|
20268
20287
|
opacity: formPosition.opacity,
|
|
20269
20288
|
zIndex: 20,
|
|
20270
|
-
transition: "opacity 200ms ease-out"
|
|
20289
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20290
|
+
...overlayHiddenStyle
|
|
20271
20291
|
},
|
|
20272
20292
|
refEl: formRef,
|
|
20273
20293
|
existingTypes: existingNodeTypes,
|
|
@@ -20300,7 +20320,8 @@ function XViewScene({
|
|
|
20300
20320
|
top: `${formPosition.top}px`,
|
|
20301
20321
|
opacity: formPosition.opacity,
|
|
20302
20322
|
zIndex: 20,
|
|
20303
|
-
transition: "opacity 200ms ease-out"
|
|
20323
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20324
|
+
...overlayHiddenStyle
|
|
20304
20325
|
},
|
|
20305
20326
|
refEl: formRef,
|
|
20306
20327
|
fixedType: (_h = versionMode.sourceNodeData) == null ? void 0 : _h.type,
|
|
@@ -20332,7 +20353,8 @@ function XViewScene({
|
|
|
20332
20353
|
left: `16px`,
|
|
20333
20354
|
top: `16px`,
|
|
20334
20355
|
zIndex: 20,
|
|
20335
|
-
transition: "opacity 200ms ease-out"
|
|
20356
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20357
|
+
...overlayHiddenStyle
|
|
20336
20358
|
},
|
|
20337
20359
|
refEl: formRef,
|
|
20338
20360
|
onOpenImageViewer: handleOpenImageViewer,
|
|
@@ -20489,7 +20511,8 @@ function XViewScene({
|
|
|
20489
20511
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id,
|
|
20490
20512
|
setQuestTreeMode: setQuestTreeMode2,
|
|
20491
20513
|
handleRenderQuestTree,
|
|
20492
|
-
handleRenderQuestAbstractionTree
|
|
20514
|
+
handleRenderQuestAbstractionTree,
|
|
20515
|
+
style: overlayHiddenStyle
|
|
20493
20516
|
}
|
|
20494
20517
|
),
|
|
20495
20518
|
detailsNode && !detailsNode.is_quest && /* @__PURE__ */ import_react33.default.createElement(
|
|
@@ -20523,7 +20546,8 @@ function XViewScene({
|
|
|
20523
20546
|
userRole: userPermissionRole,
|
|
20524
20547
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
20525
20548
|
create_google_doc_action,
|
|
20526
|
-
view_google_folder_id: (_o = sceneDataRef.current) == null ? void 0 : _o.view_google_folder_id
|
|
20549
|
+
view_google_folder_id: (_o = sceneDataRef.current) == null ? void 0 : _o.view_google_folder_id,
|
|
20550
|
+
style: overlayHiddenStyle
|
|
20527
20551
|
}
|
|
20528
20552
|
),
|
|
20529
20553
|
detailsLink && /* @__PURE__ */ import_react33.default.createElement(
|
package/dist/index.mjs
CHANGED
|
@@ -17,7 +17,7 @@ import { UnrealBloomPass } from "three/examples/jsm/postprocessing/UnrealBloomPa
|
|
|
17
17
|
import { Group as Group2, Tween as Tween2, Easing as Easing2 } from "@tweenjs/tween.js";
|
|
18
18
|
|
|
19
19
|
// src/components/ContextMenu.jsx
|
|
20
|
-
import React, { useLayoutEffect, useRef, useState as useState2, useEffect
|
|
20
|
+
import React, { useLayoutEffect, useRef, useState as useState2, useEffect, useMemo } from "react";
|
|
21
21
|
|
|
22
22
|
// src/logic/permissions.js
|
|
23
23
|
import { AbilityBuilder, Ability } from "@casl/ability";
|
|
@@ -3367,7 +3367,7 @@ function ContextMenu({
|
|
|
3367
3367
|
() => isQuestBlocked(data.nodeData, allParentNodes),
|
|
3368
3368
|
[data.nodeData, allParentNodes]
|
|
3369
3369
|
);
|
|
3370
|
-
|
|
3370
|
+
useEffect(() => {
|
|
3371
3371
|
if (data.visible) {
|
|
3372
3372
|
setMenuView("main");
|
|
3373
3373
|
setSelectedAncestry(null);
|
|
@@ -3389,7 +3389,7 @@ function ContextMenu({
|
|
|
3389
3389
|
if (top + h + 8 > vh) top = Math.max(8, vh - h - 8);
|
|
3390
3390
|
setMenuPos({ left, top });
|
|
3391
3391
|
}, [data, menuView, versionSubMenu, labelSubMenu, selectedQuestStatus]);
|
|
3392
|
-
|
|
3392
|
+
useEffect(() => {
|
|
3393
3393
|
if (!data.visible) return;
|
|
3394
3394
|
const handleClickOutside = (e) => {
|
|
3395
3395
|
if (menuRef.current && !menuRef.current.contains(e.target)) onClose();
|
|
@@ -3836,13 +3836,13 @@ function ContextMenu({
|
|
|
3836
3836
|
}
|
|
3837
3837
|
|
|
3838
3838
|
// src/components/XViewSidebar.jsx
|
|
3839
|
-
import React2, { useMemo as useMemo2, useState as useState3, useEffect as
|
|
3839
|
+
import React2, { useMemo as useMemo2, useState as useState3, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
3840
3840
|
import { FiLayers, FiCpu } from "react-icons/fi";
|
|
3841
3841
|
import { FaGoogleDrive } from "react-icons/fa";
|
|
3842
3842
|
var CustomSelect = ({ value, onChange, options, placeholder }) => {
|
|
3843
3843
|
const [isOpen, setIsOpen] = useState3(false);
|
|
3844
3844
|
const selectRef = useRef2(null);
|
|
3845
|
-
|
|
3845
|
+
useEffect2(() => {
|
|
3846
3846
|
const handleClickOutside = (e) => {
|
|
3847
3847
|
if (selectRef.current && !selectRef.current.contains(e.target)) {
|
|
3848
3848
|
setIsOpen(false);
|
|
@@ -3956,7 +3956,7 @@ function XViewSidebar({
|
|
|
3956
3956
|
const [folderId, setFolderId] = useState3(view_google_folder_id || "");
|
|
3957
3957
|
const [folderName, setFolderName] = useState3(view_google_folder_name || "");
|
|
3958
3958
|
const [isPickingGoogleFolder, setIsPickingGoogleFolder] = useState3(false);
|
|
3959
|
-
|
|
3959
|
+
useEffect2(() => {
|
|
3960
3960
|
if (view_google_folder_id !== void 0) {
|
|
3961
3961
|
setFolderId(view_google_folder_id || "");
|
|
3962
3962
|
}
|
|
@@ -4071,7 +4071,7 @@ function XViewSidebar({
|
|
|
4071
4071
|
activeFilters,
|
|
4072
4072
|
filterCategory
|
|
4073
4073
|
]);
|
|
4074
|
-
|
|
4074
|
+
useEffect2(() => {
|
|
4075
4075
|
const handleClickOutside = (event) => {
|
|
4076
4076
|
if (filterMenuRef.current && !filterMenuRef.current.contains(event.target)) {
|
|
4077
4077
|
setIsFilterMenuOpen(false);
|
|
@@ -4085,7 +4085,7 @@ function XViewSidebar({
|
|
|
4085
4085
|
}
|
|
4086
4086
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
4087
4087
|
}, [isFilterMenuOpen, isTypeDropdownOpen]);
|
|
4088
|
-
|
|
4088
|
+
useEffect2(() => {
|
|
4089
4089
|
const handleClickOutsideAnnexed = (event) => {
|
|
4090
4090
|
if (annexedPanelRef.current && !annexedPanelRef.current.contains(event.target)) {
|
|
4091
4091
|
if (event.target.closest(".lens-button")) return;
|
|
@@ -4097,7 +4097,7 @@ function XViewSidebar({
|
|
|
4097
4097
|
}
|
|
4098
4098
|
return () => document.removeEventListener("mousedown", handleClickOutsideAnnexed);
|
|
4099
4099
|
}, [activeSubMenu]);
|
|
4100
|
-
|
|
4100
|
+
useEffect2(() => {
|
|
4101
4101
|
if (!query) setSelectedNodeId(null);
|
|
4102
4102
|
}, [query]);
|
|
4103
4103
|
const swallow = (e) => e.stopPropagation();
|
|
@@ -4732,11 +4732,11 @@ function XViewSidebar({
|
|
|
4732
4732
|
}
|
|
4733
4733
|
|
|
4734
4734
|
// src/components/AncestryRelationshipPanel.jsx
|
|
4735
|
-
import React8, { useState as useState9, useEffect as
|
|
4735
|
+
import React8, { useState as useState9, useEffect as useEffect8, useRef as useRef7 } from "react";
|
|
4736
4736
|
import { v4 as uuidv43 } from "uuid";
|
|
4737
4737
|
|
|
4738
4738
|
// src/components/CustomPropertyDisplay.jsx
|
|
4739
|
-
import React3, { useState as useState4, useRef as useRef3, useEffect as
|
|
4739
|
+
import React3, { useState as useState4, useRef as useRef3, useEffect as useEffect3 } from "react";
|
|
4740
4740
|
import { FiCheck, FiX, FiEdit3, FiTrash2, FiExternalLink, FiFileText, FiChevronDown, FiUpload, FiLoader } from "react-icons/fi";
|
|
4741
4741
|
function CustomPropertyDisplay({
|
|
4742
4742
|
prop,
|
|
@@ -4759,7 +4759,7 @@ function CustomPropertyDisplay({
|
|
|
4759
4759
|
const [uploadingItemIndex, setUploadingItemIndex] = useState4(null);
|
|
4760
4760
|
const fileInputRef = useRef3(null);
|
|
4761
4761
|
const currentUploadTargetRef = useRef3(null);
|
|
4762
|
-
|
|
4762
|
+
useEffect3(() => {
|
|
4763
4763
|
function handleClickOutside(event) {
|
|
4764
4764
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
4765
4765
|
setIsTypeDropdownOpen(false);
|
|
@@ -5102,11 +5102,11 @@ function CustomPropertyDisplay({
|
|
|
5102
5102
|
import { FiPlus, FiEdit2 as FiEdit22, FiBookOpen } from "react-icons/fi";
|
|
5103
5103
|
|
|
5104
5104
|
// src/components/DescriptionEditModal.jsx
|
|
5105
|
-
import React5, { useState as useState6, useEffect as
|
|
5105
|
+
import React5, { useState as useState6, useEffect as useEffect5, useRef as useRef5, useMemo as useMemo4 } from "react";
|
|
5106
5106
|
import { FiType, FiList, FiCode, FiLink as FiLink2, FiAtSign, FiSearch as FiSearch2, FiHexagon as FiHexagon2, FiGlobe, FiImage, FiCheckSquare } from "react-icons/fi";
|
|
5107
5107
|
|
|
5108
5108
|
// src/components/SectionImportModal.jsx
|
|
5109
|
-
import React4, { useState as useState5, useMemo as useMemo3, useRef as useRef4, useEffect as
|
|
5109
|
+
import React4, { useState as useState5, useMemo as useMemo3, useRef as useRef4, useEffect as useEffect4 } from "react";
|
|
5110
5110
|
import { FiSearch, FiLayers as FiLayers2, FiHexagon, FiClock, FiCheck as FiCheck2, FiCopy, FiTerminal, FiChevronDown as FiChevronDown2, FiChevronRight as FiChevronRight2, FiDownload, FiLink } from "react-icons/fi";
|
|
5111
5111
|
var CodeBlock = ({ content, isActive, onClick }) => {
|
|
5112
5112
|
const [isExpanded, setIsExpanded] = useState5(false);
|
|
@@ -5182,7 +5182,7 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
|
|
|
5182
5182
|
const sectionRefs = useRef4([]);
|
|
5183
5183
|
const [isDropdownOpen, setIsDropdownOpen] = useState5(false);
|
|
5184
5184
|
const inputRef = useRef4(null);
|
|
5185
|
-
|
|
5185
|
+
useEffect4(() => {
|
|
5186
5186
|
if (!selectedItem) return;
|
|
5187
5187
|
const itemId = selectedItem.id || selectedItem.ancestry_id;
|
|
5188
5188
|
const type = selectedItem._type;
|
|
@@ -5225,12 +5225,12 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
|
|
|
5225
5225
|
if (!selectedItem) return [];
|
|
5226
5226
|
return parseDescriptionSections(selectedItem.description, selectedItem.description_sections);
|
|
5227
5227
|
}, [selectedItem]);
|
|
5228
|
-
|
|
5228
|
+
useEffect4(() => {
|
|
5229
5229
|
setActiveIndex(0);
|
|
5230
5230
|
setSelectedIndices(/* @__PURE__ */ new Set([0]));
|
|
5231
5231
|
setLastSelectedIndex(0);
|
|
5232
5232
|
}, [selectedItem]);
|
|
5233
|
-
|
|
5233
|
+
useEffect4(() => {
|
|
5234
5234
|
if (selectedItem && sectionRefs.current[activeIndex]) {
|
|
5235
5235
|
sectionRefs.current[activeIndex].scrollIntoView({
|
|
5236
5236
|
behavior: "smooth",
|
|
@@ -5239,7 +5239,7 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
|
|
|
5239
5239
|
});
|
|
5240
5240
|
}
|
|
5241
5241
|
}, [activeIndex, selectedItem]);
|
|
5242
|
-
|
|
5242
|
+
useEffect4(() => {
|
|
5243
5243
|
const handleKeyDown = (e) => {
|
|
5244
5244
|
if (!selectedItem) return;
|
|
5245
5245
|
if (document.activeElement === inputRef.current) return;
|
|
@@ -5536,7 +5536,7 @@ function DescriptionEditModal({
|
|
|
5536
5536
|
const [manualImageUrl, setManualImageUrl] = useState6("");
|
|
5537
5537
|
const hoverTimeoutRef = useRef5(null);
|
|
5538
5538
|
const [tooltipData, setTooltipData] = useState6(null);
|
|
5539
|
-
|
|
5539
|
+
useEffect5(() => {
|
|
5540
5540
|
const handleKeyDown = (e) => {
|
|
5541
5541
|
if (e.key === "Escape") {
|
|
5542
5542
|
if (isMentionModalOpen) {
|
|
@@ -5579,7 +5579,7 @@ function DescriptionEditModal({
|
|
|
5579
5579
|
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
5580
5580
|
setTooltipData(null);
|
|
5581
5581
|
};
|
|
5582
|
-
|
|
5582
|
+
useEffect5(() => {
|
|
5583
5583
|
setText(initialValue || "");
|
|
5584
5584
|
}, [initialValue, isOpen]);
|
|
5585
5585
|
const filteredNodesForMention = useMemo4(() => {
|
|
@@ -5989,7 +5989,7 @@ ${space}${bullet} `);
|
|
|
5989
5989
|
}
|
|
5990
5990
|
|
|
5991
5991
|
// src/components/DescriptionDisplay.jsx
|
|
5992
|
-
import React6, { useMemo as useMemo5, useState as useState7, useEffect as
|
|
5992
|
+
import React6, { useMemo as useMemo5, useState as useState7, useEffect as useEffect6, useRef as useRef6 } from "react";
|
|
5993
5993
|
import { FiCopy as FiCopy2, FiCheck as FiCheck3, FiChevronDown as FiChevronDown3, FiChevronRight as FiChevronRight3, FiTerminal as FiTerminal2, FiCornerDownRight, FiExternalLink as FiExternalLink2, FiImage as FiImage2, FiSave } from "react-icons/fi";
|
|
5994
5994
|
var CodeBlock2 = ({ content, isActive, onClick }) => {
|
|
5995
5995
|
const [isExpanded, setIsExpanded] = useState7(false);
|
|
@@ -6211,7 +6211,7 @@ function DescriptionDisplay({
|
|
|
6211
6211
|
onStepChange
|
|
6212
6212
|
}) {
|
|
6213
6213
|
const [localDescription, setLocalDescription] = useState7(description || "");
|
|
6214
|
-
|
|
6214
|
+
useEffect6(() => {
|
|
6215
6215
|
setLocalDescription(description || "");
|
|
6216
6216
|
}, [description]);
|
|
6217
6217
|
const sections = useMemo5(() => parseDescriptionSections(localDescription, savedSections), [localDescription, savedSections]);
|
|
@@ -6255,7 +6255,7 @@ function DescriptionDisplay({
|
|
|
6255
6255
|
return navItems;
|
|
6256
6256
|
}, [sections]);
|
|
6257
6257
|
const [currentStepIndex, setCurrentStepIndex] = useState7(0);
|
|
6258
|
-
|
|
6258
|
+
useEffect6(() => {
|
|
6259
6259
|
if (onStepChange) {
|
|
6260
6260
|
onStepChange(currentStepIndex);
|
|
6261
6261
|
}
|
|
@@ -6263,7 +6263,7 @@ function DescriptionDisplay({
|
|
|
6263
6263
|
const activeRef = useRef6(null);
|
|
6264
6264
|
const lastNotifiedSectionId = useRef6(null);
|
|
6265
6265
|
const isInitialMount = useRef6(true);
|
|
6266
|
-
|
|
6266
|
+
useEffect6(() => {
|
|
6267
6267
|
let targetIndex = 0;
|
|
6268
6268
|
if (initialSectionId !== null && initialSectionId !== void 0) {
|
|
6269
6269
|
targetIndex = flatNavigation.findIndex(
|
|
@@ -6275,7 +6275,7 @@ function DescriptionDisplay({
|
|
|
6275
6275
|
isInitialMount.current = true;
|
|
6276
6276
|
lastNotifiedSectionId.current = null;
|
|
6277
6277
|
}, [description, initialSectionId, flatNavigation, sections]);
|
|
6278
|
-
|
|
6278
|
+
useEffect6(() => {
|
|
6279
6279
|
const currentItem = flatNavigation[currentStepIndex];
|
|
6280
6280
|
if (onSectionChange && currentItem) {
|
|
6281
6281
|
if (isInitialMount.current || lastNotifiedSectionId.current !== currentItem.sectionId) {
|
|
@@ -6294,7 +6294,7 @@ function DescriptionDisplay({
|
|
|
6294
6294
|
}
|
|
6295
6295
|
}
|
|
6296
6296
|
}, [currentStepIndex, flatNavigation, onSectionChange, onHighlightNode]);
|
|
6297
|
-
|
|
6297
|
+
useEffect6(() => {
|
|
6298
6298
|
const handleKeyDown = (e) => {
|
|
6299
6299
|
if (e.target.tagName === "INPUT" || e.target.tagName === "TEXTAREA") return;
|
|
6300
6300
|
const currentItem = flatNavigation[currentStepIndex];
|
|
@@ -6338,7 +6338,7 @@ function DescriptionDisplay({
|
|
|
6338
6338
|
window.addEventListener("keydown", handleKeyDown);
|
|
6339
6339
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
6340
6340
|
}, [flatNavigation, currentStepIndex, onBranchNav, currentBranchDirection]);
|
|
6341
|
-
|
|
6341
|
+
useEffect6(() => {
|
|
6342
6342
|
if (activeRef.current) {
|
|
6343
6343
|
activeRef.current.scrollIntoView({
|
|
6344
6344
|
behavior: "smooth",
|
|
@@ -6454,7 +6454,7 @@ function DescriptionDisplay({
|
|
|
6454
6454
|
}
|
|
6455
6455
|
|
|
6456
6456
|
// src/components/DescriptionReadModePanel.jsx
|
|
6457
|
-
import React7, { useState as useState8, useMemo as useMemo6, useEffect as
|
|
6457
|
+
import React7, { useState as useState8, useMemo as useMemo6, useEffect as useEffect7 } from "react";
|
|
6458
6458
|
import {
|
|
6459
6459
|
FiArrowLeft,
|
|
6460
6460
|
FiEdit2,
|
|
@@ -6574,7 +6574,7 @@ function DescriptionReadModePanel({
|
|
|
6574
6574
|
console.error("Erro ao copiar link:", err);
|
|
6575
6575
|
});
|
|
6576
6576
|
};
|
|
6577
|
-
|
|
6577
|
+
useEffect7(() => {
|
|
6578
6578
|
setShowAbstraction(initialShowAbstraction);
|
|
6579
6579
|
if (initialShowAbstraction) {
|
|
6580
6580
|
setShowProperties(false);
|
|
@@ -6824,7 +6824,7 @@ function AncestryRelationshipPanel({
|
|
|
6824
6824
|
const [isDescriptionModalOpen, setIsDescriptionModalOpen] = useState9(false);
|
|
6825
6825
|
const [isReadMode, setIsReadMode] = useState9(false);
|
|
6826
6826
|
const propsEndRef = useRef7(null);
|
|
6827
|
-
|
|
6827
|
+
useEffect8(() => {
|
|
6828
6828
|
setDescription((data == null ? void 0 : data.description) ?? "");
|
|
6829
6829
|
setExistingSections((data == null ? void 0 : data.description_sections) || []);
|
|
6830
6830
|
setCustomProps(extractCustomPropsFromNode(data || {}));
|
|
@@ -6977,7 +6977,7 @@ function AncestryRelationshipPanel({
|
|
|
6977
6977
|
}
|
|
6978
6978
|
|
|
6979
6979
|
// src/components/CreateAncestryPanel.jsx
|
|
6980
|
-
import React10, { useState as useState11, useEffect as
|
|
6980
|
+
import React10, { useState as useState11, useEffect as useEffect10, useMemo as useMemo8, useRef as useRef8, useCallback as useCallback2 } from "react";
|
|
6981
6981
|
import {
|
|
6982
6982
|
FiEdit2 as FiEdit23,
|
|
6983
6983
|
FiBookOpen as FiBookOpen2,
|
|
@@ -6999,7 +6999,7 @@ import {
|
|
|
6999
6999
|
import { v4 as uuidv44 } from "uuid";
|
|
7000
7000
|
|
|
7001
7001
|
// src/components/AncestryPickerModal.jsx
|
|
7002
|
-
import React9, { useState as useState10, useMemo as useMemo7, useEffect as
|
|
7002
|
+
import React9, { useState as useState10, useMemo as useMemo7, useEffect as useEffect9 } from "react";
|
|
7003
7003
|
import { FiSearch as FiSearch3, FiLayers as FiLayers4, FiCornerUpRight as FiCornerUpRight2 } from "react-icons/fi";
|
|
7004
7004
|
function AncestryPickerModal({
|
|
7005
7005
|
isOpen,
|
|
@@ -7010,7 +7010,7 @@ function AncestryPickerModal({
|
|
|
7010
7010
|
currentAncestryId
|
|
7011
7011
|
}) {
|
|
7012
7012
|
const [searchTerm, setSearchTerm] = useState10("");
|
|
7013
|
-
|
|
7013
|
+
useEffect9(() => {
|
|
7014
7014
|
if (!isOpen) return;
|
|
7015
7015
|
const handleKeyDown = (e) => {
|
|
7016
7016
|
if (e.key === "Escape") {
|
|
@@ -7251,7 +7251,7 @@ function CreateAncestryPanel({
|
|
|
7251
7251
|
const [customProps, setCustomProps] = useState11([]);
|
|
7252
7252
|
const propsEndRef = useRef8(null);
|
|
7253
7253
|
const [branchStack, setBranchStack] = useState11([]);
|
|
7254
|
-
|
|
7254
|
+
useEffect10(() => {
|
|
7255
7255
|
setShowDeleteBranchConfirm(false);
|
|
7256
7256
|
}, [branchStack]);
|
|
7257
7257
|
const [targetRenderNodeId, setTargetRenderNodeId] = useState11(null);
|
|
@@ -7282,7 +7282,7 @@ function CreateAncestryPanel({
|
|
|
7282
7282
|
minWidth: 320,
|
|
7283
7283
|
maxWidth: maxPanelW
|
|
7284
7284
|
});
|
|
7285
|
-
|
|
7285
|
+
useEffect10(() => {
|
|
7286
7286
|
setWidth(isReadMode ? 700 : 440);
|
|
7287
7287
|
}, [isReadMode, setWidth]);
|
|
7288
7288
|
const currentMaxRenderIndexRef = useRef8(0);
|
|
@@ -7475,7 +7475,7 @@ function CreateAncestryPanel({
|
|
|
7475
7475
|
setHasUnsavedChanges(true);
|
|
7476
7476
|
};
|
|
7477
7477
|
const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
|
|
7478
|
-
|
|
7478
|
+
useEffect10(() => {
|
|
7479
7479
|
if (!isContextLinked) return;
|
|
7480
7480
|
const handleKeyDown = (e) => {
|
|
7481
7481
|
if (branchStack.length === 0) return;
|
|
@@ -7493,7 +7493,7 @@ function CreateAncestryPanel({
|
|
|
7493
7493
|
window.addEventListener("keydown", handleKeyDown);
|
|
7494
7494
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
7495
7495
|
}, [isContextLinked, branchStack]);
|
|
7496
|
-
|
|
7496
|
+
useEffect10(() => {
|
|
7497
7497
|
const ctx = getCurrentContext();
|
|
7498
7498
|
const currentContextId = branchStack.length > 0 ? branchStack[branchStack.length - 1].branchId : ancestryMode.currentAncestryId || `new_${ancestryMode.ancestral_node}`;
|
|
7499
7499
|
if (initializedContextIdRef.current === currentContextId) {
|
|
@@ -8233,7 +8233,7 @@ function CreateAncestryPanel({
|
|
|
8233
8233
|
}
|
|
8234
8234
|
}
|
|
8235
8235
|
};
|
|
8236
|
-
|
|
8236
|
+
useEffect10(() => {
|
|
8237
8237
|
if (!description && existingSections.length === 0) return;
|
|
8238
8238
|
const newRootTree = applyDescriptionToTree(ancestryMode.tree, description, existingSections);
|
|
8239
8239
|
const currentTreeString = JSON.stringify(ancestryMode.tree);
|
|
@@ -8688,7 +8688,7 @@ function CreateAncestryPanel({
|
|
|
8688
8688
|
}
|
|
8689
8689
|
|
|
8690
8690
|
// src/components/CreateQuestTreePanel.jsx
|
|
8691
|
-
import React11, { useState as useState12, useCallback as useCallback3, useMemo as useMemo9 } from "react";
|
|
8691
|
+
import React11, { useState as useState12, useEffect as useEffect11, useCallback as useCallback3, useMemo as useMemo9 } from "react";
|
|
8692
8692
|
import {
|
|
8693
8693
|
FiFolder as FiFolder3,
|
|
8694
8694
|
FiLayers as FiLayers6,
|
|
@@ -8908,7 +8908,7 @@ function CreateQuestTreePanel({
|
|
|
8908
8908
|
};
|
|
8909
8909
|
const isAddingModeActive = activeTab === "abstraction" ? isAddingAbstractionNodes : isAddingNodes;
|
|
8910
8910
|
const currentTree = activeTab === "abstraction" ? abstraction_tree : tree;
|
|
8911
|
-
|
|
8911
|
+
useEffect11(() => {
|
|
8912
8912
|
if (!tree && !abstraction_tree && questTreeMode.questNodeId) {
|
|
8913
8913
|
const rootNode = {
|
|
8914
8914
|
id: questTreeMode.questNodeId,
|
|
@@ -11292,7 +11292,8 @@ function NodeDetailsPanel({
|
|
|
11292
11292
|
userRole,
|
|
11293
11293
|
currentDatasetName,
|
|
11294
11294
|
create_google_doc_action,
|
|
11295
|
-
view_google_folder_id
|
|
11295
|
+
view_google_folder_id,
|
|
11296
|
+
style = {}
|
|
11296
11297
|
}) {
|
|
11297
11298
|
const [name, setName] = useState19((node == null ? void 0 : node.name) ?? "");
|
|
11298
11299
|
const [types, setTypes] = useState19([]);
|
|
@@ -11622,7 +11623,15 @@ function NodeDetailsPanel({
|
|
|
11622
11623
|
"div",
|
|
11623
11624
|
{
|
|
11624
11625
|
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 ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
|
|
11625
|
-
style: {
|
|
11626
|
+
style: {
|
|
11627
|
+
top: 16,
|
|
11628
|
+
right: 16,
|
|
11629
|
+
zIndex: 1100,
|
|
11630
|
+
maxHeight: "calc(100vh - 32px)",
|
|
11631
|
+
width: `${panelWidth}px`,
|
|
11632
|
+
maxWidth: "92vw",
|
|
11633
|
+
...style
|
|
11634
|
+
},
|
|
11626
11635
|
onPointerDown: swallow,
|
|
11627
11636
|
onPointerMove: swallow,
|
|
11628
11637
|
onPointerUp: swallow,
|
|
@@ -12006,7 +12015,8 @@ function QuestDetailsPanel({
|
|
|
12006
12015
|
view_google_folder_id,
|
|
12007
12016
|
setQuestTreeMode: setQuestTreeMode2,
|
|
12008
12017
|
handleRenderQuestTree,
|
|
12009
|
-
handleRenderQuestAbstractionTree
|
|
12018
|
+
handleRenderQuestAbstractionTree,
|
|
12019
|
+
style = {}
|
|
12010
12020
|
}) {
|
|
12011
12021
|
var _a, _b;
|
|
12012
12022
|
const initialRawTitle = (node == null ? void 0 : node.raw_title) || (((_a = node == null ? void 0 : node.name) == null ? void 0 : _a.includes(" - \xBB ")) ? node.name.split(" - \xBB ")[1] : node == null ? void 0 : node.name) || "";
|
|
@@ -12584,7 +12594,15 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12584
12594
|
"div",
|
|
12585
12595
|
{
|
|
12586
12596
|
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 ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
|
|
12587
|
-
style: {
|
|
12597
|
+
style: {
|
|
12598
|
+
top: 16,
|
|
12599
|
+
right: 16,
|
|
12600
|
+
zIndex: 1100,
|
|
12601
|
+
maxHeight: "calc(100vh - 32px)",
|
|
12602
|
+
width: `${panelWidth}px`,
|
|
12603
|
+
maxWidth: "92vw",
|
|
12604
|
+
...style
|
|
12605
|
+
},
|
|
12588
12606
|
onPointerDown: swallow,
|
|
12589
12607
|
onPointerMove: swallow,
|
|
12590
12608
|
onPointerUp: swallow,
|
|
@@ -20226,6 +20244,7 @@ function XViewScene({
|
|
|
20226
20244
|
if (isLoading || status === "loading" || permissionStatus === "loading") {
|
|
20227
20245
|
return /* @__PURE__ */ React32.createElement(LoadingScreen, null);
|
|
20228
20246
|
}
|
|
20247
|
+
const overlayHiddenStyle = questTreeMode.isActive ? { opacity: 0, pointerEvents: "none", transform: "translateX(30px)", transition: "all 300ms ease-in-out" } : {};
|
|
20229
20248
|
if (permissionStatus === "denied") {
|
|
20230
20249
|
return /* @__PURE__ */ React32.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React32.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React32.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React32.createElement(
|
|
20231
20250
|
"svg",
|
|
@@ -20331,7 +20350,8 @@ function XViewScene({
|
|
|
20331
20350
|
top: `${formPosition.top}px`,
|
|
20332
20351
|
opacity: formPosition.opacity,
|
|
20333
20352
|
zIndex: 20,
|
|
20334
|
-
transition: "opacity 200ms ease-out"
|
|
20353
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20354
|
+
...overlayHiddenStyle
|
|
20335
20355
|
},
|
|
20336
20356
|
refEl: formRef,
|
|
20337
20357
|
existingTypes: existingNodeTypes,
|
|
@@ -20364,7 +20384,8 @@ function XViewScene({
|
|
|
20364
20384
|
top: `${formPosition.top}px`,
|
|
20365
20385
|
opacity: formPosition.opacity,
|
|
20366
20386
|
zIndex: 20,
|
|
20367
|
-
transition: "opacity 200ms ease-out"
|
|
20387
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20388
|
+
...overlayHiddenStyle
|
|
20368
20389
|
},
|
|
20369
20390
|
refEl: formRef,
|
|
20370
20391
|
fixedType: (_h = versionMode.sourceNodeData) == null ? void 0 : _h.type,
|
|
@@ -20396,7 +20417,8 @@ function XViewScene({
|
|
|
20396
20417
|
left: `16px`,
|
|
20397
20418
|
top: `16px`,
|
|
20398
20419
|
zIndex: 20,
|
|
20399
|
-
transition: "opacity 200ms ease-out"
|
|
20420
|
+
transition: "opacity 200ms ease-out, transform 300ms ease-in-out",
|
|
20421
|
+
...overlayHiddenStyle
|
|
20400
20422
|
},
|
|
20401
20423
|
refEl: formRef,
|
|
20402
20424
|
onOpenImageViewer: handleOpenImageViewer,
|
|
@@ -20553,7 +20575,8 @@ function XViewScene({
|
|
|
20553
20575
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id,
|
|
20554
20576
|
setQuestTreeMode: setQuestTreeMode2,
|
|
20555
20577
|
handleRenderQuestTree,
|
|
20556
|
-
handleRenderQuestAbstractionTree
|
|
20578
|
+
handleRenderQuestAbstractionTree,
|
|
20579
|
+
style: overlayHiddenStyle
|
|
20557
20580
|
}
|
|
20558
20581
|
),
|
|
20559
20582
|
detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React32.createElement(
|
|
@@ -20587,7 +20610,8 @@ function XViewScene({
|
|
|
20587
20610
|
userRole: userPermissionRole,
|
|
20588
20611
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
20589
20612
|
create_google_doc_action,
|
|
20590
|
-
view_google_folder_id: (_o = sceneDataRef.current) == null ? void 0 : _o.view_google_folder_id
|
|
20613
|
+
view_google_folder_id: (_o = sceneDataRef.current) == null ? void 0 : _o.view_google_folder_id,
|
|
20614
|
+
style: overlayHiddenStyle
|
|
20591
20615
|
}
|
|
20592
20616
|
),
|
|
20593
20617
|
detailsLink && /* @__PURE__ */ React32.createElement(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lv-x-software-house/x_view",
|
|
3
|
-
"version": "1.2.6-dev.
|
|
3
|
+
"version": "1.2.6-dev.76",
|
|
4
4
|
"description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
|
|
5
5
|
"author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|