@lv-x-software-house/x_view 1.2.5-dev.54 → 1.2.5-dev.55

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
@@ -10917,7 +10917,8 @@ function QuestDetailsPanel({
10917
10917
  currentUser,
10918
10918
  milestones = [],
10919
10919
  onUpdateMilestones = () => {
10920
- }
10920
+ },
10921
+ onFocusNode
10921
10922
  }) {
10922
10923
  var _a, _b;
10923
10924
  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) || "";
@@ -11889,12 +11890,24 @@ ${noteText}` : noteText : entry.notes,
11889
11890
  "span",
11890
11891
  {
11891
11892
  key: depId,
11892
- className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
11893
- title: isDone ? "Pronta" : "Pendente"
11893
+ onClick: () => onFocusNode == null ? void 0 : onFocusNode(depNode),
11894
+ className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border cursor-pointer hover:brightness-110 transition-all ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
11895
+ title: isDone ? `Pronta - Clique para focar` : `Pendente - Clique para focar`
11894
11896
  },
11895
11897
  /* @__PURE__ */ import_react20.default.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
11896
11898
  depNode.raw_title || depNode.name,
11897
- canEdit && /* @__PURE__ */ import_react20.default.createElement("button", { type: "button", onClick: () => handleRemoveDependency(depId), className: "hover:text-white transition-colors opacity-60 hover:opacity-100" }, /* @__PURE__ */ import_react20.default.createElement(import_fi19.FiX, { size: 12 }))
11899
+ canEdit && /* @__PURE__ */ import_react20.default.createElement(
11900
+ "button",
11901
+ {
11902
+ type: "button",
11903
+ onClick: (e) => {
11904
+ e.stopPropagation();
11905
+ handleRemoveDependency(depId);
11906
+ },
11907
+ className: "hover:text-white transition-colors opacity-60 hover:opacity-100 Ml-1"
11908
+ },
11909
+ /* @__PURE__ */ import_react20.default.createElement(import_fi19.FiX, { size: 12 })
11910
+ )
11898
11911
  );
11899
11912
  }), canEdit && /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ import_react20.default.createElement(
11900
11913
  "input",
@@ -17834,8 +17847,14 @@ function XViewScene({
17834
17847
  }, []);
17835
17848
  const handleFocusNode = (0, import_react29.useCallback)(
17836
17849
  (nodeData) => {
17850
+ var _a2;
17837
17851
  if (!nodeData) return;
17838
- const nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17852
+ let nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17853
+ if (!nodeMesh) {
17854
+ const spawnPos = ((_a2 = stateRef.current.controls) == null ? void 0 : _a2.target.clone()) || new THREE3.Vector3();
17855
+ addStandaloneNodeToScene(stateRef.current, nodeData, spawnPos);
17856
+ nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17857
+ }
17839
17858
  if (nodeMesh) {
17840
17859
  tweenToTarget(nodeMesh, 1.2);
17841
17860
  }
@@ -18312,6 +18331,7 @@ function XViewScene({
18312
18331
  {
18313
18332
  node: detailsNode,
18314
18333
  onClose: () => setDetailsNode(null),
18334
+ onFocusNode: handleFocusNode,
18315
18335
  onSave: (data) => userActionHandlers.handleSaveNodeDetails(actionHandlerContext, data),
18316
18336
  onNameChange: handleDetailNodeNameChange,
18317
18337
  onColorChange: handleDetailNodeColorChange,
package/dist/index.mjs CHANGED
@@ -10948,7 +10948,8 @@ function QuestDetailsPanel({
10948
10948
  currentUser,
10949
10949
  milestones = [],
10950
10950
  onUpdateMilestones = () => {
10951
- }
10951
+ },
10952
+ onFocusNode
10952
10953
  }) {
10953
10954
  var _a, _b;
10954
10955
  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) || "";
@@ -11920,12 +11921,24 @@ ${noteText}` : noteText : entry.notes,
11920
11921
  "span",
11921
11922
  {
11922
11923
  key: depId,
11923
- className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
11924
- title: isDone ? "Pronta" : "Pendente"
11924
+ onClick: () => onFocusNode == null ? void 0 : onFocusNode(depNode),
11925
+ className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border cursor-pointer hover:brightness-110 transition-all ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
11926
+ title: isDone ? `Pronta - Clique para focar` : `Pendente - Clique para focar`
11925
11927
  },
11926
11928
  /* @__PURE__ */ React19.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
11927
11929
  depNode.raw_title || depNode.name,
11928
- canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveDependency(depId), className: "hover:text-white transition-colors opacity-60 hover:opacity-100" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 }))
11930
+ canEdit && /* @__PURE__ */ React19.createElement(
11931
+ "button",
11932
+ {
11933
+ type: "button",
11934
+ onClick: (e) => {
11935
+ e.stopPropagation();
11936
+ handleRemoveDependency(depId);
11937
+ },
11938
+ className: "hover:text-white transition-colors opacity-60 hover:opacity-100 Ml-1"
11939
+ },
11940
+ /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })
11941
+ )
11929
11942
  );
11930
11943
  }), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React19.createElement(
11931
11944
  "input",
@@ -17878,8 +17891,14 @@ function XViewScene({
17878
17891
  }, []);
17879
17892
  const handleFocusNode = useCallback4(
17880
17893
  (nodeData) => {
17894
+ var _a2;
17881
17895
  if (!nodeData) return;
17882
- const nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17896
+ let nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17897
+ if (!nodeMesh) {
17898
+ const spawnPos = ((_a2 = stateRef.current.controls) == null ? void 0 : _a2.target.clone()) || new THREE3.Vector3();
17899
+ addStandaloneNodeToScene(stateRef.current, nodeData, spawnPos);
17900
+ nodeMesh = stateRef.current.nodeObjects[String(nodeData.id)];
17901
+ }
17883
17902
  if (nodeMesh) {
17884
17903
  tweenToTarget(nodeMesh, 1.2);
17885
17904
  }
@@ -18356,6 +18375,7 @@ function XViewScene({
18356
18375
  {
18357
18376
  node: detailsNode,
18358
18377
  onClose: () => setDetailsNode(null),
18378
+ onFocusNode: handleFocusNode,
18359
18379
  onSave: (data) => userActionHandlers.handleSaveNodeDetails(actionHandlerContext, data),
18360
18380
  onNameChange: handleDetailNodeNameChange,
18361
18381
  onColorChange: handleDetailNodeColorChange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lv-x-software-house/x_view",
3
- "version": "1.2.5-dev.54",
3
+ "version": "1.2.5-dev.55",
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",