@lv-x-software-house/x_view 1.2.6-dev.82 → 1.2.6-dev.84
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 +24 -62
- package/dist/index.mjs +31 -70
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8792,7 +8792,7 @@ var NodeItem2 = ({ nodeData, onSelectParent, onRemoveNode, onMoveNode, selectedP
|
|
|
8792
8792
|
};
|
|
8793
8793
|
function CreateQuestTreePanel({
|
|
8794
8794
|
questTreeMode,
|
|
8795
|
-
setQuestTreeMode
|
|
8795
|
+
setQuestTreeMode,
|
|
8796
8796
|
onSave,
|
|
8797
8797
|
onClose
|
|
8798
8798
|
}) {
|
|
@@ -8814,11 +8814,11 @@ function CreateQuestTreePanel({
|
|
|
8814
8814
|
maxWidth: maxPanelW
|
|
8815
8815
|
});
|
|
8816
8816
|
const handleSelectParent = (nodeId) => {
|
|
8817
|
-
|
|
8817
|
+
setQuestTreeMode((prev) => ({ ...prev, selectedParentId: nodeId }));
|
|
8818
8818
|
};
|
|
8819
8819
|
const handleToggleAddMode = () => {
|
|
8820
8820
|
const isAbstraction = activeTab === "abstraction";
|
|
8821
|
-
|
|
8821
|
+
setQuestTreeMode((prev) => {
|
|
8822
8822
|
var _a2, _b2, _c2, _d;
|
|
8823
8823
|
return isAbstraction ? { ...prev, isAddingAbstractionNodes: !prev.isAddingAbstractionNodes, selectedParentId: ((_b2 = (_a2 = prev.abstraction_tree) == null ? void 0 : _a2.node) == null ? void 0 : _b2.id) || prev.selectedParentId } : { ...prev, isAddingNodes: !prev.isAddingNodes, selectedParentId: ((_d = (_c2 = prev.tree) == null ? void 0 : _c2.node) == null ? void 0 : _d.id) || prev.selectedParentId };
|
|
8824
8824
|
});
|
|
@@ -8827,7 +8827,7 @@ function CreateQuestTreePanel({
|
|
|
8827
8827
|
if (!Array.isArray(pathToRemove) || pathToRemove.length === 0) return;
|
|
8828
8828
|
const isAbstraction = activeTab === "abstraction";
|
|
8829
8829
|
const treeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
8830
|
-
|
|
8830
|
+
setQuestTreeMode((prev) => {
|
|
8831
8831
|
if (!prev[treeKey]) return prev;
|
|
8832
8832
|
const newTree = JSON.parse(JSON.stringify(prev[treeKey]));
|
|
8833
8833
|
let currentParent = newTree;
|
|
@@ -8844,7 +8844,7 @@ function CreateQuestTreePanel({
|
|
|
8844
8844
|
}
|
|
8845
8845
|
return { ...prev, [treeKey]: newTree };
|
|
8846
8846
|
});
|
|
8847
|
-
}, [
|
|
8847
|
+
}, [setQuestTreeMode, activeTab]);
|
|
8848
8848
|
const handleMoveNode = (sourceId, targetId) => {
|
|
8849
8849
|
const isAbstraction = activeTab === "abstraction";
|
|
8850
8850
|
const treeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
@@ -8884,7 +8884,7 @@ function CreateQuestTreePanel({
|
|
|
8884
8884
|
};
|
|
8885
8885
|
if (removeSourceNode(rootTreeClone) && movedNodeData) {
|
|
8886
8886
|
if (insertTargetNode(rootTreeClone)) {
|
|
8887
|
-
|
|
8887
|
+
setQuestTreeMode((prev) => ({ ...prev, [treeKey]: rootTreeClone }));
|
|
8888
8888
|
setHasUnsavedChanges(true);
|
|
8889
8889
|
} else {
|
|
8890
8890
|
alert("N\xE3o \xE9 poss\xEDvel mover um node para dentro de seus pr\xF3prios descendentes.");
|
|
@@ -8912,14 +8912,14 @@ function CreateQuestTreePanel({
|
|
|
8912
8912
|
id: questTreeMode.questNodeId,
|
|
8913
8913
|
name: questTreeMode.questNodeName || "Quest Principal"
|
|
8914
8914
|
};
|
|
8915
|
-
|
|
8915
|
+
setQuestTreeMode((prev) => ({
|
|
8916
8916
|
...prev,
|
|
8917
8917
|
tree: prev.tree || { node: rootNode, children: [] },
|
|
8918
8918
|
abstraction_tree: prev.abstraction_tree || { node: rootNode, children: [] },
|
|
8919
8919
|
selectedParentId: rootNode.id
|
|
8920
8920
|
}));
|
|
8921
8921
|
}
|
|
8922
|
-
}, [tree, abstraction_tree, questTreeMode.questNodeId,
|
|
8922
|
+
}, [tree, abstraction_tree, questTreeMode.questNodeId, setQuestTreeMode]);
|
|
8923
8923
|
return /* @__PURE__ */ import_react12.default.createElement(
|
|
8924
8924
|
"div",
|
|
8925
8925
|
{
|
|
@@ -8954,7 +8954,7 @@ function CreateQuestTreePanel({
|
|
|
8954
8954
|
{
|
|
8955
8955
|
onClick: () => {
|
|
8956
8956
|
setActiveTab("tree");
|
|
8957
|
-
|
|
8957
|
+
setQuestTreeMode((prev) => ({ ...prev, isAddingNodes: true, isAddingAbstractionNodes: false }));
|
|
8958
8958
|
},
|
|
8959
8959
|
className: `flex-1 flex items-center justify-center gap-2 py-2 px-3 rounded-md text-sm font-medium transition-all ${activeTab === "tree" ? "bg-indigo-600 text-white shadow-lg" : "bg-slate-800 text-slate-400 hover:bg-slate-700 hover:text-slate-200"}`
|
|
8960
8960
|
},
|
|
@@ -8965,7 +8965,7 @@ function CreateQuestTreePanel({
|
|
|
8965
8965
|
{
|
|
8966
8966
|
onClick: () => {
|
|
8967
8967
|
setActiveTab("abstraction");
|
|
8968
|
-
|
|
8968
|
+
setQuestTreeMode((prev) => ({ ...prev, isAddingNodes: false, isAddingAbstractionNodes: true }));
|
|
8969
8969
|
},
|
|
8970
8970
|
className: `flex-1 flex items-center justify-center gap-2 py-2 px-3 rounded-md text-sm font-medium transition-all ${activeTab === "abstraction" ? "bg-indigo-600 text-white shadow-lg" : "bg-slate-800 text-slate-400 hover:bg-slate-700 hover:text-slate-200"}`
|
|
8971
8971
|
},
|
|
@@ -10775,44 +10775,6 @@ function InSceneQuestForm({
|
|
|
10775
10775
|
},
|
|
10776
10776
|
/* @__PURE__ */ import_react19.default.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
|
|
10777
10777
|
/* @__PURE__ */ import_react19.default.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
|
|
10778
|
-
)))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider flex items-center justify-between" }, "Estruturas Visuais"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "bg-slate-800/70 p-2 rounded-lg border border-white/10 flex flex-col gap-2" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10779
|
-
"button",
|
|
10780
|
-
{
|
|
10781
|
-
type: "button",
|
|
10782
|
-
onClick: () => {
|
|
10783
|
-
if (setQuestTreeMode) {
|
|
10784
|
-
setQuestTreeMode((prev) => ({
|
|
10785
|
-
...prev,
|
|
10786
|
-
isActive: true,
|
|
10787
|
-
isAddingNodes: true,
|
|
10788
|
-
questTempData: true
|
|
10789
|
-
}));
|
|
10790
|
-
}
|
|
10791
|
-
},
|
|
10792
|
-
className: "flex items-center gap-2 px-3 py-2 bg-indigo-500/20 hover:bg-indigo-500/40 text-indigo-200 text-sm font-medium rounded-md transition-colors w-full justify-center"
|
|
10793
|
-
},
|
|
10794
|
-
/* @__PURE__ */ import_react19.default.createElement(import_fi17.FiGitBranch, { className: "text-indigo-400" }),
|
|
10795
|
-
" Configurar \xC1rvores"
|
|
10796
|
-
), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10797
|
-
"button",
|
|
10798
|
-
{
|
|
10799
|
-
type: "button",
|
|
10800
|
-
onClick: () => {
|
|
10801
|
-
alert("Salve a Quest antes de renderizar suas estruturas visuais.");
|
|
10802
|
-
},
|
|
10803
|
-
className: "flex-1 flex items-center justify-center gap-2 px-2 py-1.5 bg-slate-700 hover:bg-slate-600 text-slate-300 text-xs font-medium rounded-md transition-colors"
|
|
10804
|
-
},
|
|
10805
|
-
"Renderizar Horizontal"
|
|
10806
|
-
), /* @__PURE__ */ import_react19.default.createElement(
|
|
10807
|
-
"button",
|
|
10808
|
-
{
|
|
10809
|
-
type: "button",
|
|
10810
|
-
onClick: () => {
|
|
10811
|
-
alert("Salve a Quest antes de renderizar suas estruturas visuais.");
|
|
10812
|
-
},
|
|
10813
|
-
className: "flex-1 flex items-center justify-center gap-2 px-2 py-1.5 bg-slate-700 hover:bg-slate-600 text-slate-300 text-xs font-medium rounded-md transition-colors"
|
|
10814
|
-
},
|
|
10815
|
-
"Renderizar Vertical"
|
|
10816
10778
|
)))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative mt-4" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
|
|
10817
10779
|
const depNode = availableNodes.find((n) => String(n.id) === String(id));
|
|
10818
10780
|
if (!depNode) return null;
|
|
@@ -11976,7 +11938,7 @@ function QuestDetailsPanel({
|
|
|
11976
11938
|
onFocusNode,
|
|
11977
11939
|
create_google_doc_action,
|
|
11978
11940
|
view_google_folder_id,
|
|
11979
|
-
setQuestTreeMode
|
|
11941
|
+
setQuestTreeMode,
|
|
11980
11942
|
handleRenderQuestTree,
|
|
11981
11943
|
handleRenderQuestAbstractionTree,
|
|
11982
11944
|
style = {}
|
|
@@ -13035,7 +12997,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13035
12997
|
{
|
|
13036
12998
|
type: "button",
|
|
13037
12999
|
onClick: () => {
|
|
13038
|
-
if (
|
|
13000
|
+
if (setQuestTreeMode) {
|
|
13039
13001
|
const convertPersistedTree = (storedTree) => {
|
|
13040
13002
|
if (!storedTree) return null;
|
|
13041
13003
|
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
@@ -13051,7 +13013,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13051
13013
|
const rootNode = { id: node == null ? void 0 : node.id, name: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name) || "Quest Principal" };
|
|
13052
13014
|
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
13053
13015
|
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
13054
|
-
|
|
13016
|
+
setQuestTreeMode((prev) => ({
|
|
13055
13017
|
...prev,
|
|
13056
13018
|
isActive: true,
|
|
13057
13019
|
isAddingNodes: true,
|
|
@@ -15529,7 +15491,7 @@ function XViewScene({
|
|
|
15529
15491
|
const [questMode, setQuestMode] = (0, import_react33.useState)({ isActive: false });
|
|
15530
15492
|
const [hasFocusedInitial, setHasFocusedInitial] = (0, import_react33.useState)(false);
|
|
15531
15493
|
const [hasOpenedInitialAncestry, setHasOpenedInitialAncestry] = (0, import_react33.useState)(false);
|
|
15532
|
-
const [questTreeMode,
|
|
15494
|
+
const [questTreeMode, setQuestTreeMode] = (0, import_react33.useState)({
|
|
15533
15495
|
isActive: false,
|
|
15534
15496
|
questNodeId: null,
|
|
15535
15497
|
questTempData: null,
|
|
@@ -17156,12 +17118,12 @@ function XViewScene({
|
|
|
17156
17118
|
const activeTreeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
17157
17119
|
let activeTree = qTree[activeTreeKey];
|
|
17158
17120
|
let newTree = addChildToNode(activeTree, parentId, fullNodeData);
|
|
17159
|
-
|
|
17121
|
+
setQuestTreeMode((prev) => ({
|
|
17160
17122
|
...prev,
|
|
17161
17123
|
[activeTreeKey]: newTree
|
|
17162
17124
|
}));
|
|
17163
17125
|
} else {
|
|
17164
|
-
|
|
17126
|
+
setQuestTreeMode((prev) => ({
|
|
17165
17127
|
...prev
|
|
17166
17128
|
}));
|
|
17167
17129
|
}
|
|
@@ -18084,7 +18046,10 @@ function XViewScene({
|
|
|
18084
18046
|
const updatedNodeData = sceneData.quest_nodes[questIndex];
|
|
18085
18047
|
const nodeMesh = (_a2 = stateRef.current.nodeObjects) == null ? void 0 : _a2[String(questNodeId)];
|
|
18086
18048
|
if (nodeMesh) {
|
|
18087
|
-
nodeMesh.userData
|
|
18049
|
+
nodeMesh.userData = {
|
|
18050
|
+
...nodeMesh.userData,
|
|
18051
|
+
...updatedNodeData
|
|
18052
|
+
};
|
|
18088
18053
|
}
|
|
18089
18054
|
if (detailsNode && String(detailsNode.id) === String(questNodeId)) {
|
|
18090
18055
|
setDetailsNode((prev) => ({
|
|
@@ -18119,7 +18084,7 @@ function XViewScene({
|
|
|
18119
18084
|
handleRenderAbstractionTree(treePayload);
|
|
18120
18085
|
};
|
|
18121
18086
|
const handleCloseQuestTree = () => {
|
|
18122
|
-
|
|
18087
|
+
setQuestTreeMode({
|
|
18123
18088
|
isActive: false,
|
|
18124
18089
|
questNodeId: null,
|
|
18125
18090
|
questTempData: null,
|
|
@@ -20364,7 +20329,7 @@ function XViewScene({
|
|
|
20364
20329
|
CreateQuestTreePanel,
|
|
20365
20330
|
{
|
|
20366
20331
|
questTreeMode,
|
|
20367
|
-
setQuestTreeMode
|
|
20332
|
+
setQuestTreeMode,
|
|
20368
20333
|
onSave: handleSaveQuestTree,
|
|
20369
20334
|
onClose: handleCloseQuestTree
|
|
20370
20335
|
}
|
|
@@ -20397,10 +20362,7 @@ function XViewScene({
|
|
|
20397
20362
|
milestones: ((_k = sceneDataRef.current) == null ? void 0 : _k.milestones) || [],
|
|
20398
20363
|
onUpdateMilestones: handleUpdateMilestones,
|
|
20399
20364
|
create_google_doc_action,
|
|
20400
|
-
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
20401
|
-
setQuestTreeMode: setQuestTreeMode2,
|
|
20402
|
-
handleRenderQuestTree,
|
|
20403
|
-
handleRenderQuestAbstractionTree
|
|
20365
|
+
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
20404
20366
|
}
|
|
20405
20367
|
),
|
|
20406
20368
|
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ import_react33.default.createElement(
|
|
@@ -20538,7 +20500,7 @@ function XViewScene({
|
|
|
20538
20500
|
onUpdateMilestones: handleUpdateMilestones,
|
|
20539
20501
|
create_google_doc_action,
|
|
20540
20502
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id,
|
|
20541
|
-
setQuestTreeMode
|
|
20503
|
+
setQuestTreeMode,
|
|
20542
20504
|
handleRenderQuestTree,
|
|
20543
20505
|
handleRenderQuestAbstractionTree,
|
|
20544
20506
|
style: overlayHiddenStyle
|
package/dist/index.mjs
CHANGED
|
@@ -8790,7 +8790,7 @@ var NodeItem2 = ({ nodeData, onSelectParent, onRemoveNode, onMoveNode, selectedP
|
|
|
8790
8790
|
};
|
|
8791
8791
|
function CreateQuestTreePanel({
|
|
8792
8792
|
questTreeMode,
|
|
8793
|
-
setQuestTreeMode
|
|
8793
|
+
setQuestTreeMode,
|
|
8794
8794
|
onSave,
|
|
8795
8795
|
onClose
|
|
8796
8796
|
}) {
|
|
@@ -8812,11 +8812,11 @@ function CreateQuestTreePanel({
|
|
|
8812
8812
|
maxWidth: maxPanelW
|
|
8813
8813
|
});
|
|
8814
8814
|
const handleSelectParent = (nodeId) => {
|
|
8815
|
-
|
|
8815
|
+
setQuestTreeMode((prev) => ({ ...prev, selectedParentId: nodeId }));
|
|
8816
8816
|
};
|
|
8817
8817
|
const handleToggleAddMode = () => {
|
|
8818
8818
|
const isAbstraction = activeTab === "abstraction";
|
|
8819
|
-
|
|
8819
|
+
setQuestTreeMode((prev) => {
|
|
8820
8820
|
var _a2, _b2, _c2, _d;
|
|
8821
8821
|
return isAbstraction ? { ...prev, isAddingAbstractionNodes: !prev.isAddingAbstractionNodes, selectedParentId: ((_b2 = (_a2 = prev.abstraction_tree) == null ? void 0 : _a2.node) == null ? void 0 : _b2.id) || prev.selectedParentId } : { ...prev, isAddingNodes: !prev.isAddingNodes, selectedParentId: ((_d = (_c2 = prev.tree) == null ? void 0 : _c2.node) == null ? void 0 : _d.id) || prev.selectedParentId };
|
|
8822
8822
|
});
|
|
@@ -8825,7 +8825,7 @@ function CreateQuestTreePanel({
|
|
|
8825
8825
|
if (!Array.isArray(pathToRemove) || pathToRemove.length === 0) return;
|
|
8826
8826
|
const isAbstraction = activeTab === "abstraction";
|
|
8827
8827
|
const treeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
8828
|
-
|
|
8828
|
+
setQuestTreeMode((prev) => {
|
|
8829
8829
|
if (!prev[treeKey]) return prev;
|
|
8830
8830
|
const newTree = JSON.parse(JSON.stringify(prev[treeKey]));
|
|
8831
8831
|
let currentParent = newTree;
|
|
@@ -8842,7 +8842,7 @@ function CreateQuestTreePanel({
|
|
|
8842
8842
|
}
|
|
8843
8843
|
return { ...prev, [treeKey]: newTree };
|
|
8844
8844
|
});
|
|
8845
|
-
}, [
|
|
8845
|
+
}, [setQuestTreeMode, activeTab]);
|
|
8846
8846
|
const handleMoveNode = (sourceId, targetId) => {
|
|
8847
8847
|
const isAbstraction = activeTab === "abstraction";
|
|
8848
8848
|
const treeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
@@ -8882,7 +8882,7 @@ function CreateQuestTreePanel({
|
|
|
8882
8882
|
};
|
|
8883
8883
|
if (removeSourceNode(rootTreeClone) && movedNodeData) {
|
|
8884
8884
|
if (insertTargetNode(rootTreeClone)) {
|
|
8885
|
-
|
|
8885
|
+
setQuestTreeMode((prev) => ({ ...prev, [treeKey]: rootTreeClone }));
|
|
8886
8886
|
setHasUnsavedChanges(true);
|
|
8887
8887
|
} else {
|
|
8888
8888
|
alert("N\xE3o \xE9 poss\xEDvel mover um node para dentro de seus pr\xF3prios descendentes.");
|
|
@@ -8910,14 +8910,14 @@ function CreateQuestTreePanel({
|
|
|
8910
8910
|
id: questTreeMode.questNodeId,
|
|
8911
8911
|
name: questTreeMode.questNodeName || "Quest Principal"
|
|
8912
8912
|
};
|
|
8913
|
-
|
|
8913
|
+
setQuestTreeMode((prev) => ({
|
|
8914
8914
|
...prev,
|
|
8915
8915
|
tree: prev.tree || { node: rootNode, children: [] },
|
|
8916
8916
|
abstraction_tree: prev.abstraction_tree || { node: rootNode, children: [] },
|
|
8917
8917
|
selectedParentId: rootNode.id
|
|
8918
8918
|
}));
|
|
8919
8919
|
}
|
|
8920
|
-
}, [tree, abstraction_tree, questTreeMode.questNodeId,
|
|
8920
|
+
}, [tree, abstraction_tree, questTreeMode.questNodeId, setQuestTreeMode]);
|
|
8921
8921
|
return /* @__PURE__ */ React11.createElement(
|
|
8922
8922
|
"div",
|
|
8923
8923
|
{
|
|
@@ -8952,7 +8952,7 @@ function CreateQuestTreePanel({
|
|
|
8952
8952
|
{
|
|
8953
8953
|
onClick: () => {
|
|
8954
8954
|
setActiveTab("tree");
|
|
8955
|
-
|
|
8955
|
+
setQuestTreeMode((prev) => ({ ...prev, isAddingNodes: true, isAddingAbstractionNodes: false }));
|
|
8956
8956
|
},
|
|
8957
8957
|
className: `flex-1 flex items-center justify-center gap-2 py-2 px-3 rounded-md text-sm font-medium transition-all ${activeTab === "tree" ? "bg-indigo-600 text-white shadow-lg" : "bg-slate-800 text-slate-400 hover:bg-slate-700 hover:text-slate-200"}`
|
|
8958
8958
|
},
|
|
@@ -8963,7 +8963,7 @@ function CreateQuestTreePanel({
|
|
|
8963
8963
|
{
|
|
8964
8964
|
onClick: () => {
|
|
8965
8965
|
setActiveTab("abstraction");
|
|
8966
|
-
|
|
8966
|
+
setQuestTreeMode((prev) => ({ ...prev, isAddingNodes: false, isAddingAbstractionNodes: true }));
|
|
8967
8967
|
},
|
|
8968
8968
|
className: `flex-1 flex items-center justify-center gap-2 py-2 px-3 rounded-md text-sm font-medium transition-all ${activeTab === "abstraction" ? "bg-indigo-600 text-white shadow-lg" : "bg-slate-800 text-slate-400 hover:bg-slate-700 hover:text-slate-200"}`
|
|
8969
8969
|
},
|
|
@@ -10210,8 +10210,7 @@ import {
|
|
|
10210
10210
|
FiSearch as FiSearch5,
|
|
10211
10211
|
FiCalendar,
|
|
10212
10212
|
FiRepeat,
|
|
10213
|
-
FiCopy as FiCopy3
|
|
10214
|
-
FiGitBranch as FiGitBranch4
|
|
10213
|
+
FiCopy as FiCopy3
|
|
10215
10214
|
} from "react-icons/fi";
|
|
10216
10215
|
import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters2 } from "react-icons/ai";
|
|
10217
10216
|
|
|
@@ -10802,44 +10801,6 @@ function InSceneQuestForm({
|
|
|
10802
10801
|
},
|
|
10803
10802
|
/* @__PURE__ */ React18.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
|
|
10804
10803
|
/* @__PURE__ */ React18.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
|
|
10805
|
-
)))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider flex items-center justify-between" }, "Estruturas Visuais"), /* @__PURE__ */ React18.createElement("div", { className: "bg-slate-800/70 p-2 rounded-lg border border-white/10 flex flex-col gap-2" }, /* @__PURE__ */ React18.createElement(
|
|
10806
|
-
"button",
|
|
10807
|
-
{
|
|
10808
|
-
type: "button",
|
|
10809
|
-
onClick: () => {
|
|
10810
|
-
if (setQuestTreeMode) {
|
|
10811
|
-
setQuestTreeMode((prev) => ({
|
|
10812
|
-
...prev,
|
|
10813
|
-
isActive: true,
|
|
10814
|
-
isAddingNodes: true,
|
|
10815
|
-
questTempData: true
|
|
10816
|
-
}));
|
|
10817
|
-
}
|
|
10818
|
-
},
|
|
10819
|
-
className: "flex items-center gap-2 px-3 py-2 bg-indigo-500/20 hover:bg-indigo-500/40 text-indigo-200 text-sm font-medium rounded-md transition-colors w-full justify-center"
|
|
10820
|
-
},
|
|
10821
|
-
/* @__PURE__ */ React18.createElement(FiGitBranch4, { className: "text-indigo-400" }),
|
|
10822
|
-
" Configurar \xC1rvores"
|
|
10823
|
-
), /* @__PURE__ */ React18.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React18.createElement(
|
|
10824
|
-
"button",
|
|
10825
|
-
{
|
|
10826
|
-
type: "button",
|
|
10827
|
-
onClick: () => {
|
|
10828
|
-
alert("Salve a Quest antes de renderizar suas estruturas visuais.");
|
|
10829
|
-
},
|
|
10830
|
-
className: "flex-1 flex items-center justify-center gap-2 px-2 py-1.5 bg-slate-700 hover:bg-slate-600 text-slate-300 text-xs font-medium rounded-md transition-colors"
|
|
10831
|
-
},
|
|
10832
|
-
"Renderizar Horizontal"
|
|
10833
|
-
), /* @__PURE__ */ React18.createElement(
|
|
10834
|
-
"button",
|
|
10835
|
-
{
|
|
10836
|
-
type: "button",
|
|
10837
|
-
onClick: () => {
|
|
10838
|
-
alert("Salve a Quest antes de renderizar suas estruturas visuais.");
|
|
10839
|
-
},
|
|
10840
|
-
className: "flex-1 flex items-center justify-center gap-2 px-2 py-1.5 bg-slate-700 hover:bg-slate-600 text-slate-300 text-xs font-medium rounded-md transition-colors"
|
|
10841
|
-
},
|
|
10842
|
-
"Renderizar Vertical"
|
|
10843
10804
|
)))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative mt-4" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ React18.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
|
|
10844
10805
|
const depNode = availableNodes.find((n) => String(n.id) === String(id));
|
|
10845
10806
|
if (!depNode) return null;
|
|
@@ -11897,7 +11858,7 @@ function NodeDetailsPanel({
|
|
|
11897
11858
|
// src/components/QuestDetailsPanel.jsx
|
|
11898
11859
|
import React21, { useState as useState20, useEffect as useEffect17, useRef as useRef14 } from "react";
|
|
11899
11860
|
import { v4 as uuidv49 } from "uuid";
|
|
11900
|
-
import { FiPlus as FiPlus9, FiX as FiX7, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink7, FiTarget as FiTarget3, FiChevronDown as FiChevronDown7, FiUser as FiUser3, FiSearch as FiSearch7, FiRepeat as FiRepeat2, FiCalendar as FiCalendar2, FiImage as FiImage4, FiCopy as FiCopy4, FiGitBranch as
|
|
11861
|
+
import { FiPlus as FiPlus9, FiX as FiX7, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink7, FiTarget as FiTarget3, FiChevronDown as FiChevronDown7, FiUser as FiUser3, FiSearch as FiSearch7, FiRepeat as FiRepeat2, FiCalendar as FiCalendar2, FiImage as FiImage4, FiCopy as FiCopy4, FiGitBranch as FiGitBranch4 } from "react-icons/fi";
|
|
11901
11862
|
|
|
11902
11863
|
// src/components/QuestTimeline.jsx
|
|
11903
11864
|
import React20 from "react";
|
|
@@ -12015,7 +11976,7 @@ function QuestDetailsPanel({
|
|
|
12015
11976
|
onFocusNode,
|
|
12016
11977
|
create_google_doc_action,
|
|
12017
11978
|
view_google_folder_id,
|
|
12018
|
-
setQuestTreeMode
|
|
11979
|
+
setQuestTreeMode,
|
|
12019
11980
|
handleRenderQuestTree,
|
|
12020
11981
|
handleRenderQuestAbstractionTree,
|
|
12021
11982
|
style = {}
|
|
@@ -13069,12 +13030,12 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13069
13030
|
},
|
|
13070
13031
|
/* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
|
|
13071
13032
|
"Retornar para Opera\xE7\xE3o"
|
|
13072
|
-
))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React21.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React21.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React21.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
13033
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React21.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React21.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React21.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiGitBranch4, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Estruturas Visuais"))), /* @__PURE__ */ React21.createElement("div", { className: "bg-slate-900/60 p-2 rounded-xl border border-white/10 flex flex-col gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
13073
13034
|
"button",
|
|
13074
13035
|
{
|
|
13075
13036
|
type: "button",
|
|
13076
13037
|
onClick: () => {
|
|
13077
|
-
if (
|
|
13038
|
+
if (setQuestTreeMode) {
|
|
13078
13039
|
const convertPersistedTree = (storedTree) => {
|
|
13079
13040
|
if (!storedTree) return null;
|
|
13080
13041
|
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
@@ -13090,7 +13051,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13090
13051
|
const rootNode = { id: node == null ? void 0 : node.id, name: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name) || "Quest Principal" };
|
|
13091
13052
|
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
13092
13053
|
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
13093
|
-
|
|
13054
|
+
setQuestTreeMode((prev) => ({
|
|
13094
13055
|
...prev,
|
|
13095
13056
|
isActive: true,
|
|
13096
13057
|
isAddingNodes: true,
|
|
@@ -13104,7 +13065,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13104
13065
|
},
|
|
13105
13066
|
className: `flex items-center gap-2 px-3 py-2 bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-300 text-xs font-medium rounded-lg transition-colors w-full justify-center border border-indigo-500/20 ${!canEdit ? "opacity-50 pointer-events-none" : ""}`
|
|
13106
13067
|
},
|
|
13107
|
-
/* @__PURE__ */ React21.createElement(
|
|
13068
|
+
/* @__PURE__ */ React21.createElement(FiGitBranch4, { className: "text-indigo-400" }),
|
|
13108
13069
|
" Configurar \xC1rvores"
|
|
13109
13070
|
), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
13110
13071
|
"button",
|
|
@@ -14278,7 +14239,7 @@ import {
|
|
|
14278
14239
|
FiX as FiX8,
|
|
14279
14240
|
FiBox as FiBox2,
|
|
14280
14241
|
FiCheckSquare as FiCheckSquare4,
|
|
14281
|
-
FiGitBranch as
|
|
14242
|
+
FiGitBranch as FiGitBranch6,
|
|
14282
14243
|
FiFolder as FiFolder4,
|
|
14283
14244
|
FiChevronRight as FiChevronRight7,
|
|
14284
14245
|
FiCornerUpLeft as FiCornerUpLeft3
|
|
@@ -14290,11 +14251,11 @@ import React29, { useEffect as useEffect23, useRef as useRef19, useState as useS
|
|
|
14290
14251
|
|
|
14291
14252
|
// src/components/MentionPopover.jsx
|
|
14292
14253
|
import React28, { useEffect as useEffect22, useRef as useRef18, useState as useState26, useMemo as useMemo12 } from "react";
|
|
14293
|
-
import { FiLayers as FiLayers7, FiCheckSquare as FiCheckSquare3, FiGitBranch as
|
|
14254
|
+
import { FiLayers as FiLayers7, FiCheckSquare as FiCheckSquare3, FiGitBranch as FiGitBranch5, FiBox } from "react-icons/fi";
|
|
14294
14255
|
var TYPE_CONFIG = {
|
|
14295
14256
|
ancestry: { Icon: FiLayers7, color: "text-indigo-400", label: "Ancestralidade" },
|
|
14296
14257
|
quest: { Icon: FiCheckSquare3, color: "text-emerald-400", label: "Quest" },
|
|
14297
|
-
version: { Icon:
|
|
14258
|
+
version: { Icon: FiGitBranch5, color: "text-amber-400", label: "Vers\xE3o" },
|
|
14298
14259
|
node: { Icon: FiBox, color: "text-slate-400", label: "Node" }
|
|
14299
14260
|
};
|
|
14300
14261
|
function MentionPopover({ query, items, position, onSelect, onClose }) {
|
|
@@ -15593,7 +15554,7 @@ function XViewScene({
|
|
|
15593
15554
|
const [questMode, setQuestMode] = useState30({ isActive: false });
|
|
15594
15555
|
const [hasFocusedInitial, setHasFocusedInitial] = useState30(false);
|
|
15595
15556
|
const [hasOpenedInitialAncestry, setHasOpenedInitialAncestry] = useState30(false);
|
|
15596
|
-
const [questTreeMode,
|
|
15557
|
+
const [questTreeMode, setQuestTreeMode] = useState30({
|
|
15597
15558
|
isActive: false,
|
|
15598
15559
|
questNodeId: null,
|
|
15599
15560
|
questTempData: null,
|
|
@@ -17220,12 +17181,12 @@ function XViewScene({
|
|
|
17220
17181
|
const activeTreeKey = isAbstraction ? "abstraction_tree" : "tree";
|
|
17221
17182
|
let activeTree = qTree[activeTreeKey];
|
|
17222
17183
|
let newTree = addChildToNode(activeTree, parentId, fullNodeData);
|
|
17223
|
-
|
|
17184
|
+
setQuestTreeMode((prev) => ({
|
|
17224
17185
|
...prev,
|
|
17225
17186
|
[activeTreeKey]: newTree
|
|
17226
17187
|
}));
|
|
17227
17188
|
} else {
|
|
17228
|
-
|
|
17189
|
+
setQuestTreeMode((prev) => ({
|
|
17229
17190
|
...prev
|
|
17230
17191
|
}));
|
|
17231
17192
|
}
|
|
@@ -18148,7 +18109,10 @@ function XViewScene({
|
|
|
18148
18109
|
const updatedNodeData = sceneData.quest_nodes[questIndex];
|
|
18149
18110
|
const nodeMesh = (_a2 = stateRef.current.nodeObjects) == null ? void 0 : _a2[String(questNodeId)];
|
|
18150
18111
|
if (nodeMesh) {
|
|
18151
|
-
nodeMesh.userData
|
|
18112
|
+
nodeMesh.userData = {
|
|
18113
|
+
...nodeMesh.userData,
|
|
18114
|
+
...updatedNodeData
|
|
18115
|
+
};
|
|
18152
18116
|
}
|
|
18153
18117
|
if (detailsNode && String(detailsNode.id) === String(questNodeId)) {
|
|
18154
18118
|
setDetailsNode((prev) => ({
|
|
@@ -18183,7 +18147,7 @@ function XViewScene({
|
|
|
18183
18147
|
handleRenderAbstractionTree(treePayload);
|
|
18184
18148
|
};
|
|
18185
18149
|
const handleCloseQuestTree = () => {
|
|
18186
|
-
|
|
18150
|
+
setQuestTreeMode({
|
|
18187
18151
|
isActive: false,
|
|
18188
18152
|
questNodeId: null,
|
|
18189
18153
|
questTempData: null,
|
|
@@ -20428,7 +20392,7 @@ function XViewScene({
|
|
|
20428
20392
|
CreateQuestTreePanel,
|
|
20429
20393
|
{
|
|
20430
20394
|
questTreeMode,
|
|
20431
|
-
setQuestTreeMode
|
|
20395
|
+
setQuestTreeMode,
|
|
20432
20396
|
onSave: handleSaveQuestTree,
|
|
20433
20397
|
onClose: handleCloseQuestTree
|
|
20434
20398
|
}
|
|
@@ -20461,10 +20425,7 @@ function XViewScene({
|
|
|
20461
20425
|
milestones: ((_k = sceneDataRef.current) == null ? void 0 : _k.milestones) || [],
|
|
20462
20426
|
onUpdateMilestones: handleUpdateMilestones,
|
|
20463
20427
|
create_google_doc_action,
|
|
20464
|
-
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
20465
|
-
setQuestTreeMode: setQuestTreeMode2,
|
|
20466
|
-
handleRenderQuestTree,
|
|
20467
|
-
handleRenderQuestAbstractionTree
|
|
20428
|
+
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
20468
20429
|
}
|
|
20469
20430
|
),
|
|
20470
20431
|
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React32.createElement(
|
|
@@ -20602,7 +20563,7 @@ function XViewScene({
|
|
|
20602
20563
|
onUpdateMilestones: handleUpdateMilestones,
|
|
20603
20564
|
create_google_doc_action,
|
|
20604
20565
|
view_google_folder_id: (_n = sceneDataRef.current) == null ? void 0 : _n.view_google_folder_id,
|
|
20605
|
-
setQuestTreeMode
|
|
20566
|
+
setQuestTreeMode,
|
|
20606
20567
|
handleRenderQuestTree,
|
|
20607
20568
|
handleRenderQuestAbstractionTree,
|
|
20608
20569
|
style: overlayHiddenStyle
|
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.84",
|
|
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",
|