@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 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: { top: 16, right: 16, zIndex: 1100, maxHeight: "calc(100vh - 32px)", width: `${panelWidth}px`, maxWidth: "92vw" },
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: { top: 16, right: 16, zIndex: 1100, maxHeight: "calc(100vh - 32px)", width: `${panelWidth}px`, maxWidth: "92vw" },
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 as useEffect2, useMemo } from "react";
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
- useEffect2(() => {
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
- useEffect2(() => {
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 useEffect3, useRef as useRef2 } from "react";
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
- useEffect3(() => {
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
- useEffect3(() => {
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
- useEffect3(() => {
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
- useEffect3(() => {
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
- useEffect3(() => {
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 useEffect9, useRef as useRef7 } from "react";
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 useEffect4 } from "react";
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
- useEffect4(() => {
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 useEffect6, useRef as useRef5, useMemo as useMemo4 } from "react";
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 useEffect5 } from "react";
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
- useEffect5(() => {
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
- useEffect5(() => {
5228
+ useEffect4(() => {
5229
5229
  setActiveIndex(0);
5230
5230
  setSelectedIndices(/* @__PURE__ */ new Set([0]));
5231
5231
  setLastSelectedIndex(0);
5232
5232
  }, [selectedItem]);
5233
- useEffect5(() => {
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
- useEffect5(() => {
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
- useEffect6(() => {
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
- useEffect6(() => {
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 useEffect7, useRef as useRef6 } from "react";
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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 useEffect8 } from "react";
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
- useEffect8(() => {
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
- useEffect9(() => {
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 useEffect11, useMemo as useMemo8, useRef as useRef8, useCallback as useCallback2 } from "react";
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 useEffect10 } from "react";
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
- useEffect10(() => {
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
- useEffect11(() => {
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
- useEffect11(() => {
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
- useEffect11(() => {
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
- useEffect11(() => {
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
- useEffect11(() => {
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
- useEffect(() => {
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: { top: 16, right: 16, zIndex: 1100, maxHeight: "calc(100vh - 32px)", width: `${panelWidth}px`, maxWidth: "92vw" },
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: { top: 16, right: 16, zIndex: 1100, maxHeight: "calc(100vh - 32px)", width: `${panelWidth}px`, maxWidth: "92vw" },
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.74",
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",