@lv-x-software-house/x_view 1.2.5-dev.15 → 1.2.5-dev.17
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 +89 -37
- package/dist/index.mjs +89 -37
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -627,31 +627,47 @@ function XViewSidebar({
|
|
|
627
627
|
}, [userRole]);
|
|
628
628
|
const contextLabel = (0, import_react2.useMemo)(() => {
|
|
629
629
|
if (!viewType || !viewName) return null;
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
630
|
+
console.log("XViewSidebar: contextLabel viewType", viewType);
|
|
631
|
+
try {
|
|
632
|
+
const typeLower = viewType.toLowerCase();
|
|
633
|
+
if (typeLower === "database") {
|
|
634
|
+
return `Dataset: ${viewName}`;
|
|
635
|
+
} else if (typeLower === "view") {
|
|
636
|
+
return `View: ${viewName}`;
|
|
637
|
+
} else if (typeLower === "node") {
|
|
638
|
+
return `Node: ${viewName}`;
|
|
639
|
+
}
|
|
640
|
+
return `${viewType}: ${viewName}`;
|
|
641
|
+
} catch (err) {
|
|
642
|
+
console.error("XViewSidebar: Erro no contextLabel ao converter viewType:", viewType, err);
|
|
643
|
+
return `${viewType}: ${viewName}`;
|
|
644
|
+
}
|
|
639
645
|
}, [viewType, viewName]);
|
|
640
|
-
const normalize = (str = "") =>
|
|
646
|
+
const normalize = (str = "") => {
|
|
647
|
+
if (str === void 0 || str === null) {
|
|
648
|
+
console.warn("XViewSidebar: normalize recebeu valor nulo/indefinido:", str);
|
|
649
|
+
}
|
|
650
|
+
return String(str).toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[._\-–—:,;!?'"()\[\]{}/\\]/g, " ").replace(/\s+/g, " ").trim();
|
|
651
|
+
};
|
|
641
652
|
const collator = (0, import_react2.useMemo)(
|
|
642
653
|
() => new Intl.Collator("pt-BR", { sensitivity: "base", numeric: true }),
|
|
643
654
|
[]
|
|
644
655
|
);
|
|
645
656
|
const availableTypes = (0, import_react2.useMemo)(() => {
|
|
657
|
+
console.log("XViewSidebar: recalculando availableTypes, dbNodes count:", dbNodes == null ? void 0 : dbNodes.length);
|
|
646
658
|
const typesSet = /* @__PURE__ */ new Set();
|
|
647
659
|
(dbNodes || []).forEach((node) => {
|
|
648
660
|
if (Array.isArray(node.type)) {
|
|
649
|
-
node.type.forEach((t) =>
|
|
650
|
-
|
|
661
|
+
node.type.forEach((t) => {
|
|
662
|
+
if (t && typeof t === "string" && t.trim() !== "") typesSet.add(t);
|
|
663
|
+
});
|
|
664
|
+
} else if (node.type && typeof node.type === "string" && node.type.trim() !== "") {
|
|
651
665
|
typesSet.add(node.type);
|
|
652
666
|
}
|
|
653
667
|
});
|
|
654
|
-
|
|
668
|
+
const result = Array.from(typesSet).sort();
|
|
669
|
+
console.log("XViewSidebar: availableTypes final:", result);
|
|
670
|
+
return result;
|
|
655
671
|
}, [dbNodes]);
|
|
656
672
|
const filteredAndSorted = (0, import_react2.useMemo)(() => {
|
|
657
673
|
const base = Array.isArray(dbNodes) ? dbNodes : [];
|
|
@@ -665,13 +681,22 @@ function XViewSidebar({
|
|
|
665
681
|
});
|
|
666
682
|
}
|
|
667
683
|
if (activeFilters.length > 0) {
|
|
684
|
+
console.log("XViewSidebar: aplicando activeFilters:", activeFilters);
|
|
668
685
|
pool = pool.filter((node) => {
|
|
669
686
|
return activeFilters.every((filter) => {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
687
|
+
try {
|
|
688
|
+
if (filter.type === "Type") {
|
|
689
|
+
const nodeTypes = Array.isArray(node.type) ? node.type : [node.type];
|
|
690
|
+
return nodeTypes.some((t) => {
|
|
691
|
+
if (t === void 0) console.log("XViewSidebar: t \xE9 undefined no node:", node.id);
|
|
692
|
+
if (filter.value === void 0) console.log("XViewSidebar: filter.value \xE9 undefined");
|
|
693
|
+
return String(t).toLowerCase() === String(filter.value).toLowerCase();
|
|
694
|
+
});
|
|
695
|
+
} else if (filter.type === "Color") {
|
|
696
|
+
return String(node.color).toLowerCase() === String(filter.value).toLowerCase();
|
|
697
|
+
}
|
|
698
|
+
} catch (err) {
|
|
699
|
+
console.error("XViewSidebar: Erro ao filtrar node:", node, "com filtro:", filter, err);
|
|
675
700
|
}
|
|
676
701
|
return true;
|
|
677
702
|
});
|
|
@@ -7755,13 +7780,23 @@ function InSceneCreationForm({
|
|
|
7755
7780
|
}, [hasImages, useImageAsTexture, onImageChange]);
|
|
7756
7781
|
(0, import_react14.useEffect)(() => {
|
|
7757
7782
|
let result = [];
|
|
7783
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
7758
7784
|
if (typeInput.trim() === "") {
|
|
7759
|
-
result =
|
|
7785
|
+
result = validExistingTypes.filter((t) => !types.includes(t));
|
|
7760
7786
|
} else {
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7787
|
+
console.log("InSceneCreationForm: Filtrando tipos com input:", typeInput);
|
|
7788
|
+
try {
|
|
7789
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
7790
|
+
result = validExistingTypes.filter((t) => {
|
|
7791
|
+
if (!t) {
|
|
7792
|
+
console.warn("InSceneCreationForm: Tipo encontrado como undefined/null durante filtragem");
|
|
7793
|
+
return false;
|
|
7794
|
+
}
|
|
7795
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
7796
|
+
});
|
|
7797
|
+
} catch (err) {
|
|
7798
|
+
console.error("InSceneCreationForm: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
7799
|
+
}
|
|
7765
7800
|
}
|
|
7766
7801
|
if (sourceTypes) {
|
|
7767
7802
|
const priorityTypes = Array.isArray(sourceTypes) ? sourceTypes : [sourceTypes];
|
|
@@ -8607,15 +8642,22 @@ function NodeDetailsPanel({
|
|
|
8607
8642
|
}
|
|
8608
8643
|
}, [hasImages, useImageAsTexture]);
|
|
8609
8644
|
(0, import_react17.useEffect)(() => {
|
|
8645
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
8610
8646
|
if (typeInput.trim() === "") {
|
|
8611
|
-
setFilteredTypes(
|
|
8647
|
+
setFilteredTypes(validExistingTypes.filter((t) => !types.includes(t)));
|
|
8612
8648
|
} else {
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
|
|
8618
|
-
|
|
8649
|
+
console.log("NodeDetailsPanel: Filtrando tipos com input:", typeInput);
|
|
8650
|
+
try {
|
|
8651
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
8652
|
+
setFilteredTypes(
|
|
8653
|
+
validExistingTypes.filter((t) => {
|
|
8654
|
+
if (!t) return false;
|
|
8655
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
8656
|
+
})
|
|
8657
|
+
);
|
|
8658
|
+
} catch (err) {
|
|
8659
|
+
console.error("NodeDetailsPanel: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
8660
|
+
}
|
|
8619
8661
|
}
|
|
8620
8662
|
}, [typeInput, existingTypes, types]);
|
|
8621
8663
|
const handleIntensityChangeLocal = (e) => {
|
|
@@ -9108,15 +9150,25 @@ function QuestDetailsPanel({
|
|
|
9108
9150
|
}
|
|
9109
9151
|
}, [node]);
|
|
9110
9152
|
(0, import_react18.useEffect)(() => {
|
|
9153
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
9111
9154
|
if (typeInput.trim() === "") {
|
|
9112
|
-
setFilteredTypes(
|
|
9155
|
+
setFilteredTypes(validExistingTypes.filter((t) => !types.includes(t)));
|
|
9113
9156
|
} else {
|
|
9114
|
-
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9157
|
+
console.log("QuestDetailsPanel: Filtrando tipos com input:", typeInput);
|
|
9158
|
+
try {
|
|
9159
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
9160
|
+
setFilteredTypes(
|
|
9161
|
+
validExistingTypes.filter((t) => {
|
|
9162
|
+
if (!t) {
|
|
9163
|
+
console.warn("QuestDetailsPanel: Tipo encontrado como undefined/null durante filtragem");
|
|
9164
|
+
return false;
|
|
9165
|
+
}
|
|
9166
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
9167
|
+
})
|
|
9168
|
+
);
|
|
9169
|
+
} catch (err) {
|
|
9170
|
+
console.error("QuestDetailsPanel: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
9171
|
+
}
|
|
9120
9172
|
}
|
|
9121
9173
|
}, [typeInput, existingTypes, types]);
|
|
9122
9174
|
const handleCopyLink = () => {
|
package/dist/index.mjs
CHANGED
|
@@ -588,31 +588,47 @@ function XViewSidebar({
|
|
|
588
588
|
}, [userRole]);
|
|
589
589
|
const contextLabel = useMemo2(() => {
|
|
590
590
|
if (!viewType || !viewName) return null;
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
591
|
+
console.log("XViewSidebar: contextLabel viewType", viewType);
|
|
592
|
+
try {
|
|
593
|
+
const typeLower = viewType.toLowerCase();
|
|
594
|
+
if (typeLower === "database") {
|
|
595
|
+
return `Dataset: ${viewName}`;
|
|
596
|
+
} else if (typeLower === "view") {
|
|
597
|
+
return `View: ${viewName}`;
|
|
598
|
+
} else if (typeLower === "node") {
|
|
599
|
+
return `Node: ${viewName}`;
|
|
600
|
+
}
|
|
601
|
+
return `${viewType}: ${viewName}`;
|
|
602
|
+
} catch (err) {
|
|
603
|
+
console.error("XViewSidebar: Erro no contextLabel ao converter viewType:", viewType, err);
|
|
604
|
+
return `${viewType}: ${viewName}`;
|
|
605
|
+
}
|
|
600
606
|
}, [viewType, viewName]);
|
|
601
|
-
const normalize = (str = "") =>
|
|
607
|
+
const normalize = (str = "") => {
|
|
608
|
+
if (str === void 0 || str === null) {
|
|
609
|
+
console.warn("XViewSidebar: normalize recebeu valor nulo/indefinido:", str);
|
|
610
|
+
}
|
|
611
|
+
return String(str).toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[._\-–—:,;!?'"()\[\]{}/\\]/g, " ").replace(/\s+/g, " ").trim();
|
|
612
|
+
};
|
|
602
613
|
const collator = useMemo2(
|
|
603
614
|
() => new Intl.Collator("pt-BR", { sensitivity: "base", numeric: true }),
|
|
604
615
|
[]
|
|
605
616
|
);
|
|
606
617
|
const availableTypes = useMemo2(() => {
|
|
618
|
+
console.log("XViewSidebar: recalculando availableTypes, dbNodes count:", dbNodes == null ? void 0 : dbNodes.length);
|
|
607
619
|
const typesSet = /* @__PURE__ */ new Set();
|
|
608
620
|
(dbNodes || []).forEach((node) => {
|
|
609
621
|
if (Array.isArray(node.type)) {
|
|
610
|
-
node.type.forEach((t) =>
|
|
611
|
-
|
|
622
|
+
node.type.forEach((t) => {
|
|
623
|
+
if (t && typeof t === "string" && t.trim() !== "") typesSet.add(t);
|
|
624
|
+
});
|
|
625
|
+
} else if (node.type && typeof node.type === "string" && node.type.trim() !== "") {
|
|
612
626
|
typesSet.add(node.type);
|
|
613
627
|
}
|
|
614
628
|
});
|
|
615
|
-
|
|
629
|
+
const result = Array.from(typesSet).sort();
|
|
630
|
+
console.log("XViewSidebar: availableTypes final:", result);
|
|
631
|
+
return result;
|
|
616
632
|
}, [dbNodes]);
|
|
617
633
|
const filteredAndSorted = useMemo2(() => {
|
|
618
634
|
const base = Array.isArray(dbNodes) ? dbNodes : [];
|
|
@@ -626,13 +642,22 @@ function XViewSidebar({
|
|
|
626
642
|
});
|
|
627
643
|
}
|
|
628
644
|
if (activeFilters.length > 0) {
|
|
645
|
+
console.log("XViewSidebar: aplicando activeFilters:", activeFilters);
|
|
629
646
|
pool = pool.filter((node) => {
|
|
630
647
|
return activeFilters.every((filter) => {
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
648
|
+
try {
|
|
649
|
+
if (filter.type === "Type") {
|
|
650
|
+
const nodeTypes = Array.isArray(node.type) ? node.type : [node.type];
|
|
651
|
+
return nodeTypes.some((t) => {
|
|
652
|
+
if (t === void 0) console.log("XViewSidebar: t \xE9 undefined no node:", node.id);
|
|
653
|
+
if (filter.value === void 0) console.log("XViewSidebar: filter.value \xE9 undefined");
|
|
654
|
+
return String(t).toLowerCase() === String(filter.value).toLowerCase();
|
|
655
|
+
});
|
|
656
|
+
} else if (filter.type === "Color") {
|
|
657
|
+
return String(node.color).toLowerCase() === String(filter.value).toLowerCase();
|
|
658
|
+
}
|
|
659
|
+
} catch (err) {
|
|
660
|
+
console.error("XViewSidebar: Erro ao filtrar node:", node, "com filtro:", filter, err);
|
|
636
661
|
}
|
|
637
662
|
return true;
|
|
638
663
|
});
|
|
@@ -7747,13 +7772,23 @@ function InSceneCreationForm({
|
|
|
7747
7772
|
}, [hasImages, useImageAsTexture, onImageChange]);
|
|
7748
7773
|
useEffect13(() => {
|
|
7749
7774
|
let result = [];
|
|
7775
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
7750
7776
|
if (typeInput.trim() === "") {
|
|
7751
|
-
result =
|
|
7777
|
+
result = validExistingTypes.filter((t) => !types.includes(t));
|
|
7752
7778
|
} else {
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
|
|
7779
|
+
console.log("InSceneCreationForm: Filtrando tipos com input:", typeInput);
|
|
7780
|
+
try {
|
|
7781
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
7782
|
+
result = validExistingTypes.filter((t) => {
|
|
7783
|
+
if (!t) {
|
|
7784
|
+
console.warn("InSceneCreationForm: Tipo encontrado como undefined/null durante filtragem");
|
|
7785
|
+
return false;
|
|
7786
|
+
}
|
|
7787
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
7788
|
+
});
|
|
7789
|
+
} catch (err) {
|
|
7790
|
+
console.error("InSceneCreationForm: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
7791
|
+
}
|
|
7757
7792
|
}
|
|
7758
7793
|
if (sourceTypes) {
|
|
7759
7794
|
const priorityTypes = Array.isArray(sourceTypes) ? sourceTypes : [sourceTypes];
|
|
@@ -8599,15 +8634,22 @@ function NodeDetailsPanel({
|
|
|
8599
8634
|
}
|
|
8600
8635
|
}, [hasImages, useImageAsTexture]);
|
|
8601
8636
|
useEffect15(() => {
|
|
8637
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
8602
8638
|
if (typeInput.trim() === "") {
|
|
8603
|
-
setFilteredTypes(
|
|
8639
|
+
setFilteredTypes(validExistingTypes.filter((t) => !types.includes(t)));
|
|
8604
8640
|
} else {
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
|
|
8608
|
-
|
|
8609
|
-
|
|
8610
|
-
|
|
8641
|
+
console.log("NodeDetailsPanel: Filtrando tipos com input:", typeInput);
|
|
8642
|
+
try {
|
|
8643
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
8644
|
+
setFilteredTypes(
|
|
8645
|
+
validExistingTypes.filter((t) => {
|
|
8646
|
+
if (!t) return false;
|
|
8647
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
8648
|
+
})
|
|
8649
|
+
);
|
|
8650
|
+
} catch (err) {
|
|
8651
|
+
console.error("NodeDetailsPanel: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
8652
|
+
}
|
|
8611
8653
|
}
|
|
8612
8654
|
}, [typeInput, existingTypes, types]);
|
|
8613
8655
|
const handleIntensityChangeLocal = (e) => {
|
|
@@ -9100,15 +9142,25 @@ function QuestDetailsPanel({
|
|
|
9100
9142
|
}
|
|
9101
9143
|
}, [node]);
|
|
9102
9144
|
useEffect16(() => {
|
|
9145
|
+
const validExistingTypes = existingTypes.filter((t) => t && typeof t === "string" && t.trim() !== "");
|
|
9103
9146
|
if (typeInput.trim() === "") {
|
|
9104
|
-
setFilteredTypes(
|
|
9147
|
+
setFilteredTypes(validExistingTypes.filter((t) => !types.includes(t)));
|
|
9105
9148
|
} else {
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9149
|
+
console.log("QuestDetailsPanel: Filtrando tipos com input:", typeInput);
|
|
9150
|
+
try {
|
|
9151
|
+
const lowercasedInput = typeInput.toLowerCase();
|
|
9152
|
+
setFilteredTypes(
|
|
9153
|
+
validExistingTypes.filter((t) => {
|
|
9154
|
+
if (!t) {
|
|
9155
|
+
console.warn("QuestDetailsPanel: Tipo encontrado como undefined/null durante filtragem");
|
|
9156
|
+
return false;
|
|
9157
|
+
}
|
|
9158
|
+
return t.toLowerCase().includes(lowercasedInput) && !types.includes(t);
|
|
9159
|
+
})
|
|
9160
|
+
);
|
|
9161
|
+
} catch (err) {
|
|
9162
|
+
console.error("QuestDetailsPanel: Erro ao filtrar tipos:", err, "typeInput:", typeInput);
|
|
9163
|
+
}
|
|
9112
9164
|
}
|
|
9113
9165
|
}, [typeInput, existingTypes, types]);
|
|
9114
9166
|
const handleCopyLink = () => {
|
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.17",
|
|
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",
|