@lv-x-software-house/x_view 1.2.4-dev.26 → 1.2.4-dev.27

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
@@ -2556,6 +2556,13 @@ var userActionHandlers = {
2556
2556
  try {
2557
2557
  const isView = ((_a = context.viewType) == null ? void 0 : _a.toLowerCase()) === "view";
2558
2558
  if (isView && parentFileId === context.sceneConfigId) {
2559
+ const visualNodeIndex = sceneDataRef.current.nodes.findIndex((n) => String(n.id) === String(nodeToSave.id));
2560
+ if (visualNodeIndex > -1) {
2561
+ sceneDataRef.current.nodes[visualNodeIndex] = {
2562
+ ...sceneDataRef.current.nodes[visualNodeIndex],
2563
+ ...nodeToSave
2564
+ };
2565
+ }
2559
2566
  const viewFilePayload = {
2560
2567
  parent_dbs: sceneDataRef.current.parent_dbs,
2561
2568
  nodes: sceneDataRef.current.nodes,
@@ -2899,7 +2906,8 @@ var IGNORED_KEYS = [
2899
2906
  "selectedAbstractionParentId",
2900
2907
  "isAddingAbstractionNodes",
2901
2908
  "status",
2902
- "is_quest"
2909
+ "is_quest",
2910
+ "raw_title"
2903
2911
  ];
2904
2912
  function extractCustomPropsFromNode(node) {
2905
2913
  const customPropTypes = node._customPropTypes || {};
@@ -8095,7 +8103,7 @@ function InSceneQuestForm({
8095
8103
  },
8096
8104
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
8097
8105
  }
8098
- ), /* @__PURE__ */ import_react16.default.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ import_react16.default.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }, "Preview:"), /* @__PURE__ */ import_react16.default.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ import_react16.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react16.default.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ import_react16.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react16.default.createElement(
8106
+ ), /* @__PURE__ */ import_react16.default.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ import_react16.default.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ import_react16.default.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ import_react16.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react16.default.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ import_react16.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react16.default.createElement(
8099
8107
  "button",
8100
8108
  {
8101
8109
  type: "button",
@@ -8777,7 +8785,7 @@ function QuestDetailsPanel({
8777
8785
  const val = e.target.value;
8778
8786
  setRawTitle(val);
8779
8787
  const newStandardName = questPrefix ? `${questPrefix} - \xBB ${val || "Sem t\xEDtulo"}` : val;
8780
- onNameChange == null ? void 0 : onNameChange(node.id, newStandardName);
8788
+ onNameChange == null ? void 0 : onNameChange(node.id, newStandardName, val);
8781
8789
  };
8782
8790
  const handleSizeChange = (newSize) => {
8783
8791
  setSize(newSize);
@@ -8938,7 +8946,7 @@ function QuestDetailsPanel({
8938
8946
  readOnly: !canEdit,
8939
8947
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none ${canEdit ? "focus:ring-2 focus:ring-indigo-400/60" : "cursor-default text-slate-400"}`
8940
8948
  }
8941
- ), /* @__PURE__ */ import_react18.default.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ import_react18.default.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }, "Preview:"), /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react18.default.createElement(
8949
+ ), /* @__PURE__ */ import_react18.default.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ import_react18.default.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react18.default.createElement(
8942
8950
  "button",
8943
8951
  {
8944
8952
  type: "button",
@@ -11834,7 +11842,7 @@ function XViewScene({
11834
11842
  graphGroup.add(newLabel);
11835
11843
  ghostNode.userData.labelObject = newLabel;
11836
11844
  };
11837
- const handleDetailNodeNameChange = (nodeId, newName) => {
11845
+ const handleDetailNodeNameChange = (nodeId, newName, newRawTitle) => {
11838
11846
  const mesh = stateRef.current.nodeObjects[String(nodeId)];
11839
11847
  const { graphGroup } = stateRef.current;
11840
11848
  if (!mesh || !graphGroup) return;
@@ -11848,6 +11856,9 @@ function XViewScene({
11848
11856
  graphGroup.add(newLabel);
11849
11857
  mesh.userData.labelObject = newLabel;
11850
11858
  mesh.userData.name = newName;
11859
+ if (newRawTitle !== void 0) {
11860
+ mesh.userData.raw_title = newRawTitle;
11861
+ }
11851
11862
  };
11852
11863
  const handleDetailNodeColorChange = (nodeId, newColor) => {
11853
11864
  var _a2;
@@ -12022,6 +12033,7 @@ function XViewScene({
12022
12033
  graphDataRef.current[sceneConfigId2] = { nodes: [], links: [] };
12023
12034
  }
12024
12035
  graphDataRef.current[sceneConfigId2].nodes.push(newNode);
12036
+ sceneDataRef2.current.nodes.push(newNode);
12025
12037
  const sceneFileData = {
12026
12038
  parent_dbs: sceneDataRef2.current.parent_dbs,
12027
12039
  nodes: sceneDataRef2.current.nodes,
@@ -14038,8 +14050,13 @@ async function get_scene_view_data_logic(db_services, scene_config, owner_id, ty
14038
14050
  const parentNodeMap = new Map(allNodes.map((node) => [String(node.id), node]));
14039
14051
  const parentLinkMap = new Map(allLinks.map((link) => [`${link.source}-${link.target}`, link]));
14040
14052
  const validatedNodes = (sceneData.nodes || []).map((sceneNode) => {
14053
+ var _a2, _b2;
14041
14054
  const nodeTypes = Array.isArray(sceneNode.type) ? sceneNode.type : [sceneNode.type];
14042
14055
  if (nodeTypes.includes("quest")) {
14056
+ const dbQuestNode = (_b2 = (_a2 = parentData[scene_config]) == null ? void 0 : _a2.nodes) == null ? void 0 : _b2.find((qn) => String(qn.id) === String(sceneNode.id));
14057
+ if (dbQuestNode) {
14058
+ return { ...sceneNode, ...dbQuestNode };
14059
+ }
14043
14060
  return sceneNode;
14044
14061
  }
14045
14062
  const dbNode = parentNodeMap.get(String(sceneNode.id));
package/dist/index.mjs CHANGED
@@ -2512,6 +2512,13 @@ var userActionHandlers = {
2512
2512
  try {
2513
2513
  const isView = ((_a = context.viewType) == null ? void 0 : _a.toLowerCase()) === "view";
2514
2514
  if (isView && parentFileId === context.sceneConfigId) {
2515
+ const visualNodeIndex = sceneDataRef.current.nodes.findIndex((n) => String(n.id) === String(nodeToSave.id));
2516
+ if (visualNodeIndex > -1) {
2517
+ sceneDataRef.current.nodes[visualNodeIndex] = {
2518
+ ...sceneDataRef.current.nodes[visualNodeIndex],
2519
+ ...nodeToSave
2520
+ };
2521
+ }
2515
2522
  const viewFilePayload = {
2516
2523
  parent_dbs: sceneDataRef.current.parent_dbs,
2517
2524
  nodes: sceneDataRef.current.nodes,
@@ -2855,7 +2862,8 @@ var IGNORED_KEYS = [
2855
2862
  "selectedAbstractionParentId",
2856
2863
  "isAddingAbstractionNodes",
2857
2864
  "status",
2858
- "is_quest"
2865
+ "is_quest",
2866
+ "raw_title"
2859
2867
  ];
2860
2868
  function extractCustomPropsFromNode(node) {
2861
2869
  const customPropTypes = node._customPropTypes || {};
@@ -8082,7 +8090,7 @@ function InSceneQuestForm({
8082
8090
  },
8083
8091
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
8084
8092
  }
8085
- ), /* @__PURE__ */ React15.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }, "Preview:"), /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
8093
+ ), /* @__PURE__ */ React15.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
8086
8094
  "button",
8087
8095
  {
8088
8096
  type: "button",
@@ -8764,7 +8772,7 @@ function QuestDetailsPanel({
8764
8772
  const val = e.target.value;
8765
8773
  setRawTitle(val);
8766
8774
  const newStandardName = questPrefix ? `${questPrefix} - \xBB ${val || "Sem t\xEDtulo"}` : val;
8767
- onNameChange == null ? void 0 : onNameChange(node.id, newStandardName);
8775
+ onNameChange == null ? void 0 : onNameChange(node.id, newStandardName, val);
8768
8776
  };
8769
8777
  const handleSizeChange = (newSize) => {
8770
8778
  setSize(newSize);
@@ -8925,7 +8933,7 @@ function QuestDetailsPanel({
8925
8933
  readOnly: !canEdit,
8926
8934
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none ${canEdit ? "focus:ring-2 focus:ring-indigo-400/60" : "cursor-default text-slate-400"}`
8927
8935
  }
8928
- ), /* @__PURE__ */ React17.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }, "Preview:"), /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
8936
+ ), /* @__PURE__ */ React17.createElement("div", { className: "pt-1 flex items-center gap-1.5" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
8929
8937
  "button",
8930
8938
  {
8931
8939
  type: "button",
@@ -11834,7 +11842,7 @@ function XViewScene({
11834
11842
  graphGroup.add(newLabel);
11835
11843
  ghostNode.userData.labelObject = newLabel;
11836
11844
  };
11837
- const handleDetailNodeNameChange = (nodeId, newName) => {
11845
+ const handleDetailNodeNameChange = (nodeId, newName, newRawTitle) => {
11838
11846
  const mesh = stateRef.current.nodeObjects[String(nodeId)];
11839
11847
  const { graphGroup } = stateRef.current;
11840
11848
  if (!mesh || !graphGroup) return;
@@ -11848,6 +11856,9 @@ function XViewScene({
11848
11856
  graphGroup.add(newLabel);
11849
11857
  mesh.userData.labelObject = newLabel;
11850
11858
  mesh.userData.name = newName;
11859
+ if (newRawTitle !== void 0) {
11860
+ mesh.userData.raw_title = newRawTitle;
11861
+ }
11851
11862
  };
11852
11863
  const handleDetailNodeColorChange = (nodeId, newColor) => {
11853
11864
  var _a2;
@@ -12022,6 +12033,7 @@ function XViewScene({
12022
12033
  graphDataRef.current[sceneConfigId2] = { nodes: [], links: [] };
12023
12034
  }
12024
12035
  graphDataRef.current[sceneConfigId2].nodes.push(newNode);
12036
+ sceneDataRef2.current.nodes.push(newNode);
12025
12037
  const sceneFileData = {
12026
12038
  parent_dbs: sceneDataRef2.current.parent_dbs,
12027
12039
  nodes: sceneDataRef2.current.nodes,
@@ -14038,8 +14050,13 @@ async function get_scene_view_data_logic(db_services, scene_config, owner_id, ty
14038
14050
  const parentNodeMap = new Map(allNodes.map((node) => [String(node.id), node]));
14039
14051
  const parentLinkMap = new Map(allLinks.map((link) => [`${link.source}-${link.target}`, link]));
14040
14052
  const validatedNodes = (sceneData.nodes || []).map((sceneNode) => {
14053
+ var _a2, _b2;
14041
14054
  const nodeTypes = Array.isArray(sceneNode.type) ? sceneNode.type : [sceneNode.type];
14042
14055
  if (nodeTypes.includes("quest")) {
14056
+ const dbQuestNode = (_b2 = (_a2 = parentData[scene_config]) == null ? void 0 : _a2.nodes) == null ? void 0 : _b2.find((qn) => String(qn.id) === String(sceneNode.id));
14057
+ if (dbQuestNode) {
14058
+ return { ...sceneNode, ...dbQuestNode };
14059
+ }
14043
14060
  return sceneNode;
14044
14061
  }
14045
14062
  const dbNode = parentNodeMap.get(String(sceneNode.id));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lv-x-software-house/x_view",
3
- "version": "1.2.4-dev.26",
3
+ "version": "1.2.4-dev.27",
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",