@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 +30 -12
- package/dist/index.mjs +30 -12
- package/package.json +1 -1
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(
|
|
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 = {
|
|
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 &&
|
|
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(
|
|
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 = {
|
|
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 &&
|
|
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.
|
|
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",
|