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

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
@@ -242,7 +242,7 @@ var computeNodeMaterialProps = (colorHex) => {
242
242
  emissive: emissiveColor
243
243
  };
244
244
  };
245
- var createNodeMesh = (nodeData, position, glowTexture) => {
245
+ var createNodeMesh = (nodeData, position, glowTexture, forceShowQuestDate = false) => {
246
246
  let geometry, material, mesh;
247
247
  const colorHex = nodeData.color || "#ffffff";
248
248
  const userIntensity = nodeData.intensity !== void 0 ? Number(nodeData.intensity) : 0;
@@ -325,7 +325,7 @@ var createNodeMesh = (nodeData, position, glowTexture) => {
325
325
  label.name = "label";
326
326
  mesh.userData.labelObject = label;
327
327
  mesh.userData.labelOffset = new THREE.Vector3(0, 3.8, 0);
328
- if (nodeData.is_quest && nodeData.Date) {
328
+ if (nodeData.is_quest && nodeData.Date && forceShowQuestDate) {
329
329
  const timeInfo = parseDateProp(nodeData.Date);
330
330
  if (!timeInfo.isUndated && timeInfo.label) {
331
331
  const dateSprite = createTextSprite(timeInfo.label, 36);
@@ -344,6 +344,7 @@ var updateExistingNodeVisuals = (state, updatedNode) => {
344
344
  const oldLabelOffset = existingMesh.userData.labelOffset;
345
345
  const oldTimelineBar = existingMesh.userData.timelineIntervalBar;
346
346
  const oldTimelineEndLabel = existingMesh.userData.timelineEndLabel;
347
+ const hadQuestDateLabel = !!existingMesh.getObjectByName("questDateLabel");
347
348
  const currentIsImage = existingMesh.userData.useImageAsTexture === true || String(existingMesh.userData.useImageAsTexture) === "true";
348
349
  const newIsImage = updatedNode.useImageAsTexture === true || String(updatedNode.useImageAsTexture) === "true";
349
350
  const urlChanged = existingMesh.userData.textureImageUrl !== updatedNode.textureImageUrl;
@@ -369,7 +370,7 @@ var updateExistingNodeVisuals = (state, updatedNode) => {
369
370
  if (oldLabelObject.material) oldLabelObject.material.dispose();
370
371
  }
371
372
  }
372
- const newMesh = createNodeMesh(updatedNode, position, state.glowTexture);
373
+ const newMesh = createNodeMesh(updatedNode, position, state.glowTexture, hadQuestDateLabel);
373
374
  if (oldTimelineBar) {
374
375
  newMesh.userData.timelineIntervalBar = oldTimelineBar;
375
376
  }
@@ -918,10 +919,10 @@ var removeNodeFromScene = (state, nodeId) => {
918
919
  });
919
920
  }
920
921
  };
921
- var addStandaloneNodeToScene = (state, nodeData, position) => {
922
+ var addStandaloneNodeToScene = (state, nodeData, position, forceShowQuestDate = false) => {
922
923
  const { graphGroup, nodeObjects, clickableNodes, glowTexture } = state;
923
924
  if (!graphGroup) return;
924
- const mesh = createNodeMesh(nodeData, position, glowTexture);
925
+ const mesh = createNodeMesh(nodeData, position, glowTexture, forceShowQuestDate);
925
926
  mesh.scale.set(0.01, 0.01, 0.01);
926
927
  graphGroup.add(mesh);
927
928
  if (mesh.userData.labelObject) {
@@ -2329,7 +2330,7 @@ var userActionHandlers = {
2329
2330
  if (stateRef.current && stateRef.current.graphGroup) {
2330
2331
  const pos = oldMeshPosition.clone();
2331
2332
  pos.x += 12;
2332
- addStandaloneNodeToScene(stateRef.current, nextQuestNode, pos);
2333
+ addStandaloneNodeToScene(stateRef.current, nextQuestNode, pos, true);
2333
2334
  }
2334
2335
  }, 2e3);
2335
2336
  }
@@ -2773,7 +2774,9 @@ var IGNORED_KEYS = [
2773
2774
  "Date",
2774
2775
  "recurrence_config",
2775
2776
  "reviewStack",
2776
- "timeline"
2777
+ "timeline",
2778
+ "milestone_ids",
2779
+ "dependency_ids"
2777
2780
  ];
2778
2781
  function extractCustomPropsFromNode(node) {
2779
2782
  const customPropTypes = node._customPropTypes || {};
@@ -3256,7 +3259,11 @@ function calculateNextRecurrenceDate(config) {
3256
3259
  if (config.custom_date) {
3257
3260
  const parts = config.custom_date.split("/");
3258
3261
  if (parts.length === 3) {
3259
- nextDate = new Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10));
3262
+ nextDate = new Date(
3263
+ parseInt(parts[2], 10),
3264
+ parseInt(parts[1], 10) - 1,
3265
+ parseInt(parts[0], 10)
3266
+ );
3260
3267
  } else {
3261
3268
  return null;
3262
3269
  }
@@ -3295,7 +3302,13 @@ var parseDateProp = (dateProp) => {
3295
3302
  if (dateProp.type === "Data") {
3296
3303
  const d = parseDate(dateProp.value);
3297
3304
  if (d) {
3298
- info = { startDate: d, endDate: d, label: dateProp.value, type: "point", isUndated: false };
3305
+ info = {
3306
+ startDate: d,
3307
+ endDate: d,
3308
+ label: dateProp.value,
3309
+ type: "point",
3310
+ isUndated: false
3311
+ };
3299
3312
  }
3300
3313
  } else if (dateProp.type === "Date Interval" || dateProp.type === "Date Range" || dateProp.type === "interval") {
3301
3314
  const sd = parseDate(dateProp.start || dateProp.value);
@@ -9857,6 +9870,7 @@ function InSceneQuestForm({
9857
9870
  },
9858
9871
  onKeyDown: handleMilestoneInputKeyDown,
9859
9872
  onFocus: () => setShowMilestoneSuggestions(true),
9873
+ onClick: () => setShowMilestoneSuggestions(true),
9860
9874
  onBlur: () => {
9861
9875
  setTimeout(() => setShowMilestoneSuggestions(false), 200);
9862
9876
  },
@@ -9901,6 +9915,7 @@ function InSceneQuestForm({
9901
9915
  },
9902
9916
  onKeyDown: handleDependencyInputKeyDown,
9903
9917
  onFocus: () => setShowDependencySuggestions(true),
9918
+ onClick: () => setShowDependencySuggestions(true),
9904
9919
  onBlur: () => {
9905
9920
  setTimeout(() => setShowDependencySuggestions(false), 200);
9906
9921
  },
@@ -11597,6 +11612,7 @@ ${noteText}` : noteText : entry.notes,
11597
11612
  },
11598
11613
  onKeyDown: handleMilestoneInputKeyDown,
11599
11614
  onFocus: () => setShowMilestoneSuggestions(true),
11615
+ onClick: () => setShowMilestoneSuggestions(true),
11600
11616
  onBlur: () => {
11601
11617
  if (milestoneInput.trim()) {
11602
11618
  }
@@ -11890,13 +11906,14 @@ ${noteText}` : noteText : entry.notes,
11890
11906
  setShowDependencySuggestions(true);
11891
11907
  },
11892
11908
  onKeyDown: handleDependencyInputKeyDown,
11909
+ onFocus: () => setShowDependencySuggestions(true),
11893
11910
  onClick: () => setShowDependencySuggestions(true),
11894
11911
  onBlur: () => setTimeout(() => setShowDependencySuggestions(false), 200),
11895
11912
  className: "w-full bg-transparent text-sm focus:outline-none text-slate-200 placeholder:text-slate-600",
11896
11913
  placeholder: dependencyIds.length === 0 ? "Adicionar Quest de Origem..." : "",
11897
11914
  autoComplete: "off"
11898
11915
  }
11899
- ), showDependencySuggestions && dependencyInput.trim() && /* @__PURE__ */ import_react20.default.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ import_react20.default.createElement(
11916
+ ), showDependencySuggestions && /* @__PURE__ */ import_react20.default.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ import_react20.default.createElement(
11900
11917
  "li",
11901
11918
  {
11902
11919
  key: q.id,
@@ -14538,7 +14555,7 @@ function XViewScene({
14538
14555
  return !!objs[key];
14539
14556
  }, []);
14540
14557
  const addOrUpdateNodeMesh = (0, import_react29.useCallback)(
14541
- (nodeData, position, suppressVersionUpdate = false) => {
14558
+ (nodeData, position, suppressVersionUpdate = false, forceShowQuestDate = false) => {
14542
14559
  const {
14543
14560
  graphGroup,
14544
14561
  nodeObjects,
@@ -14559,7 +14576,8 @@ function XViewScene({
14559
14576
  const mesh = createNodeMesh(
14560
14577
  nodeData,
14561
14578
  position || new THREE3.Vector3(),
14562
- glowTexture
14579
+ glowTexture,
14580
+ forceShowQuestDate
14563
14581
  );
14564
14582
  graphGroup.add(mesh);
14565
14583
  if (mesh.userData.labelObject) {
package/dist/index.mjs CHANGED
@@ -203,7 +203,7 @@ var computeNodeMaterialProps = (colorHex) => {
203
203
  emissive: emissiveColor
204
204
  };
205
205
  };
206
- var createNodeMesh = (nodeData, position, glowTexture) => {
206
+ var createNodeMesh = (nodeData, position, glowTexture, forceShowQuestDate = false) => {
207
207
  let geometry, material, mesh;
208
208
  const colorHex = nodeData.color || "#ffffff";
209
209
  const userIntensity = nodeData.intensity !== void 0 ? Number(nodeData.intensity) : 0;
@@ -286,7 +286,7 @@ var createNodeMesh = (nodeData, position, glowTexture) => {
286
286
  label.name = "label";
287
287
  mesh.userData.labelObject = label;
288
288
  mesh.userData.labelOffset = new THREE.Vector3(0, 3.8, 0);
289
- if (nodeData.is_quest && nodeData.Date) {
289
+ if (nodeData.is_quest && nodeData.Date && forceShowQuestDate) {
290
290
  const timeInfo = parseDateProp(nodeData.Date);
291
291
  if (!timeInfo.isUndated && timeInfo.label) {
292
292
  const dateSprite = createTextSprite(timeInfo.label, 36);
@@ -305,6 +305,7 @@ var updateExistingNodeVisuals = (state, updatedNode) => {
305
305
  const oldLabelOffset = existingMesh.userData.labelOffset;
306
306
  const oldTimelineBar = existingMesh.userData.timelineIntervalBar;
307
307
  const oldTimelineEndLabel = existingMesh.userData.timelineEndLabel;
308
+ const hadQuestDateLabel = !!existingMesh.getObjectByName("questDateLabel");
308
309
  const currentIsImage = existingMesh.userData.useImageAsTexture === true || String(existingMesh.userData.useImageAsTexture) === "true";
309
310
  const newIsImage = updatedNode.useImageAsTexture === true || String(updatedNode.useImageAsTexture) === "true";
310
311
  const urlChanged = existingMesh.userData.textureImageUrl !== updatedNode.textureImageUrl;
@@ -330,7 +331,7 @@ var updateExistingNodeVisuals = (state, updatedNode) => {
330
331
  if (oldLabelObject.material) oldLabelObject.material.dispose();
331
332
  }
332
333
  }
333
- const newMesh = createNodeMesh(updatedNode, position, state.glowTexture);
334
+ const newMesh = createNodeMesh(updatedNode, position, state.glowTexture, hadQuestDateLabel);
334
335
  if (oldTimelineBar) {
335
336
  newMesh.userData.timelineIntervalBar = oldTimelineBar;
336
337
  }
@@ -879,10 +880,10 @@ var removeNodeFromScene = (state, nodeId) => {
879
880
  });
880
881
  }
881
882
  };
882
- var addStandaloneNodeToScene = (state, nodeData, position) => {
883
+ var addStandaloneNodeToScene = (state, nodeData, position, forceShowQuestDate = false) => {
883
884
  const { graphGroup, nodeObjects, clickableNodes, glowTexture } = state;
884
885
  if (!graphGroup) return;
885
- const mesh = createNodeMesh(nodeData, position, glowTexture);
886
+ const mesh = createNodeMesh(nodeData, position, glowTexture, forceShowQuestDate);
886
887
  mesh.scale.set(0.01, 0.01, 0.01);
887
888
  graphGroup.add(mesh);
888
889
  if (mesh.userData.labelObject) {
@@ -2290,7 +2291,7 @@ var userActionHandlers = {
2290
2291
  if (stateRef.current && stateRef.current.graphGroup) {
2291
2292
  const pos = oldMeshPosition.clone();
2292
2293
  pos.x += 12;
2293
- addStandaloneNodeToScene(stateRef.current, nextQuestNode, pos);
2294
+ addStandaloneNodeToScene(stateRef.current, nextQuestNode, pos, true);
2294
2295
  }
2295
2296
  }, 2e3);
2296
2297
  }
@@ -2734,7 +2735,9 @@ var IGNORED_KEYS = [
2734
2735
  "Date",
2735
2736
  "recurrence_config",
2736
2737
  "reviewStack",
2737
- "timeline"
2738
+ "timeline",
2739
+ "milestone_ids",
2740
+ "dependency_ids"
2738
2741
  ];
2739
2742
  function extractCustomPropsFromNode(node) {
2740
2743
  const customPropTypes = node._customPropTypes || {};
@@ -3217,7 +3220,11 @@ function calculateNextRecurrenceDate(config) {
3217
3220
  if (config.custom_date) {
3218
3221
  const parts = config.custom_date.split("/");
3219
3222
  if (parts.length === 3) {
3220
- nextDate = new Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10));
3223
+ nextDate = new Date(
3224
+ parseInt(parts[2], 10),
3225
+ parseInt(parts[1], 10) - 1,
3226
+ parseInt(parts[0], 10)
3227
+ );
3221
3228
  } else {
3222
3229
  return null;
3223
3230
  }
@@ -3256,7 +3263,13 @@ var parseDateProp = (dateProp) => {
3256
3263
  if (dateProp.type === "Data") {
3257
3264
  const d = parseDate(dateProp.value);
3258
3265
  if (d) {
3259
- info = { startDate: d, endDate: d, label: dateProp.value, type: "point", isUndated: false };
3266
+ info = {
3267
+ startDate: d,
3268
+ endDate: d,
3269
+ label: dateProp.value,
3270
+ type: "point",
3271
+ isUndated: false
3272
+ };
3260
3273
  }
3261
3274
  } else if (dateProp.type === "Date Interval" || dateProp.type === "Date Range" || dateProp.type === "interval") {
3262
3275
  const sd = parseDate(dateProp.start || dateProp.value);
@@ -9876,6 +9889,7 @@ function InSceneQuestForm({
9876
9889
  },
9877
9890
  onKeyDown: handleMilestoneInputKeyDown,
9878
9891
  onFocus: () => setShowMilestoneSuggestions(true),
9892
+ onClick: () => setShowMilestoneSuggestions(true),
9879
9893
  onBlur: () => {
9880
9894
  setTimeout(() => setShowMilestoneSuggestions(false), 200);
9881
9895
  },
@@ -9920,6 +9934,7 @@ function InSceneQuestForm({
9920
9934
  },
9921
9935
  onKeyDown: handleDependencyInputKeyDown,
9922
9936
  onFocus: () => setShowDependencySuggestions(true),
9937
+ onClick: () => setShowDependencySuggestions(true),
9923
9938
  onBlur: () => {
9924
9939
  setTimeout(() => setShowDependencySuggestions(false), 200);
9925
9940
  },
@@ -11628,6 +11643,7 @@ ${noteText}` : noteText : entry.notes,
11628
11643
  },
11629
11644
  onKeyDown: handleMilestoneInputKeyDown,
11630
11645
  onFocus: () => setShowMilestoneSuggestions(true),
11646
+ onClick: () => setShowMilestoneSuggestions(true),
11631
11647
  onBlur: () => {
11632
11648
  if (milestoneInput.trim()) {
11633
11649
  }
@@ -11921,13 +11937,14 @@ ${noteText}` : noteText : entry.notes,
11921
11937
  setShowDependencySuggestions(true);
11922
11938
  },
11923
11939
  onKeyDown: handleDependencyInputKeyDown,
11940
+ onFocus: () => setShowDependencySuggestions(true),
11924
11941
  onClick: () => setShowDependencySuggestions(true),
11925
11942
  onBlur: () => setTimeout(() => setShowDependencySuggestions(false), 200),
11926
11943
  className: "w-full bg-transparent text-sm focus:outline-none text-slate-200 placeholder:text-slate-600",
11927
11944
  placeholder: dependencyIds.length === 0 ? "Adicionar Quest de Origem..." : "",
11928
11945
  autoComplete: "off"
11929
11946
  }
11930
- ), showDependencySuggestions && dependencyInput.trim() && /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React19.createElement(
11947
+ ), showDependencySuggestions && /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React19.createElement(
11931
11948
  "li",
11932
11949
  {
11933
11950
  key: q.id,
@@ -14582,7 +14599,7 @@ function XViewScene({
14582
14599
  return !!objs[key];
14583
14600
  }, []);
14584
14601
  const addOrUpdateNodeMesh = useCallback4(
14585
- (nodeData, position, suppressVersionUpdate = false) => {
14602
+ (nodeData, position, suppressVersionUpdate = false, forceShowQuestDate = false) => {
14586
14603
  const {
14587
14604
  graphGroup,
14588
14605
  nodeObjects,
@@ -14603,7 +14620,8 @@ function XViewScene({
14603
14620
  const mesh = createNodeMesh(
14604
14621
  nodeData,
14605
14622
  position || new THREE3.Vector3(),
14606
- glowTexture
14623
+ glowTexture,
14624
+ forceShowQuestDate
14607
14625
  );
14608
14626
  graphGroup.add(mesh);
14609
14627
  if (mesh.userData.labelObject) {
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.52",
3
+ "version": "1.2.5-dev.54",
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",