@lv-x-software-house/x_view 1.2.6-dev.85 → 1.2.6-dev.87
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 +327 -348
- package/dist/index.mjs +327 -348
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -856,11 +856,11 @@ var getParentFileInfoForNode = (allParentData, sceneData, nodeId, sceneConfigId
|
|
|
856
856
|
if (allParentData.hasOwnProperty(parentFileId)) {
|
|
857
857
|
const parentFile = allParentData[parentFileId];
|
|
858
858
|
if (parentFile.nodes && parentFile.nodes.some((n) => String(n.id) === String(nodeId))) {
|
|
859
|
-
const
|
|
859
|
+
const parentDbInfo = parentDbsArray.find(
|
|
860
860
|
(db) => String(db.db_id) === String(parentFileId)
|
|
861
861
|
);
|
|
862
|
-
if (
|
|
863
|
-
return { parentFileId, ownerId:
|
|
862
|
+
if (parentDbInfo) {
|
|
863
|
+
return { parentFileId, ownerId: parentDbInfo.owner_id };
|
|
864
864
|
} else if (sceneConfigId && String(parentFileId) === String(sceneConfigId)) {
|
|
865
865
|
return { parentFileId, ownerId: sceneOwnerId };
|
|
866
866
|
} else {
|
|
@@ -2698,7 +2698,9 @@ var IGNORED_KEYS = [
|
|
|
2698
2698
|
"reviewStack",
|
|
2699
2699
|
"timeline",
|
|
2700
2700
|
"milestone_ids",
|
|
2701
|
-
"dependency_ids"
|
|
2701
|
+
"dependency_ids",
|
|
2702
|
+
"quest_tree",
|
|
2703
|
+
"quest_abstraction_tree"
|
|
2702
2704
|
];
|
|
2703
2705
|
function extractCustomPropsFromNode(node) {
|
|
2704
2706
|
const customPropTypes = node._customPropTypes || {};
|
|
@@ -10711,7 +10713,146 @@ function InSceneQuestForm({
|
|
|
10711
10713
|
title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
|
|
10712
10714
|
},
|
|
10713
10715
|
isNameCopied ? /* @__PURE__ */ React18.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React18.createElement(FiCopy3, { size: 10 })
|
|
10714
|
-
))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "
|
|
10716
|
+
))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative mt-2 border-t border-white/5 pt-4" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React18.createElement("div", { className: "relative" }, /* @__PURE__ */ React18.createElement(
|
|
10717
|
+
"button",
|
|
10718
|
+
{
|
|
10719
|
+
type: "button",
|
|
10720
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
10721
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
10722
|
+
},
|
|
10723
|
+
/* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React18.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
|
|
10724
|
+
/* @__PURE__ */ React18.createElement(
|
|
10725
|
+
FiChevronDown6,
|
|
10726
|
+
{
|
|
10727
|
+
className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
|
|
10728
|
+
}
|
|
10729
|
+
)
|
|
10730
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
|
|
10731
|
+
"div",
|
|
10732
|
+
{
|
|
10733
|
+
className: "fixed inset-0 z-40",
|
|
10734
|
+
onClick: () => {
|
|
10735
|
+
setIsAssigneeDropdownOpen(false);
|
|
10736
|
+
setAssigneeSearchQuery("");
|
|
10737
|
+
}
|
|
10738
|
+
}
|
|
10739
|
+
), /* @__PURE__ */ React18.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React18.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React18.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React18.createElement(
|
|
10740
|
+
"input",
|
|
10741
|
+
{
|
|
10742
|
+
type: "text",
|
|
10743
|
+
autoFocus: true,
|
|
10744
|
+
placeholder: "Buscar membro...",
|
|
10745
|
+
value: assigneeSearchQuery,
|
|
10746
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
10747
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
10748
|
+
onClick: (e) => e.stopPropagation()
|
|
10749
|
+
}
|
|
10750
|
+
)), /* @__PURE__ */ React18.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React18.createElement(
|
|
10751
|
+
"li",
|
|
10752
|
+
{
|
|
10753
|
+
onClick: () => {
|
|
10754
|
+
setAssigneeId("");
|
|
10755
|
+
setIsAssigneeDropdownOpen(false);
|
|
10756
|
+
setAssigneeSearchQuery("");
|
|
10757
|
+
},
|
|
10758
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
10759
|
+
},
|
|
10760
|
+
"Nenhum"
|
|
10761
|
+
), viewMembers.filter((member) => {
|
|
10762
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
10763
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10764
|
+
}).map((member) => /* @__PURE__ */ React18.createElement(
|
|
10765
|
+
"li",
|
|
10766
|
+
{
|
|
10767
|
+
key: member.id,
|
|
10768
|
+
onClick: () => {
|
|
10769
|
+
setAssigneeId(member.id);
|
|
10770
|
+
setIsAssigneeDropdownOpen(false);
|
|
10771
|
+
setAssigneeSearchQuery("");
|
|
10772
|
+
},
|
|
10773
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
10774
|
+
},
|
|
10775
|
+
member.name || member.email || member.id
|
|
10776
|
+
)), viewMembers.filter((member) => {
|
|
10777
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
10778
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10779
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React18.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React18.createElement("div", { className: "pt-4 border-t border-white/5" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ React18.createElement(
|
|
10780
|
+
"p",
|
|
10781
|
+
{
|
|
10782
|
+
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
10783
|
+
title: docError
|
|
10784
|
+
},
|
|
10785
|
+
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
10786
|
+
) : /* @__PURE__ */ React18.createElement(
|
|
10787
|
+
"button",
|
|
10788
|
+
{
|
|
10789
|
+
type: "button",
|
|
10790
|
+
onClick: handleCreateGoogleDoc,
|
|
10791
|
+
disabled: isLoadingDocs,
|
|
10792
|
+
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
10793
|
+
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
10794
|
+
},
|
|
10795
|
+
isLoadingDocs ? /* @__PURE__ */ React18.createElement(
|
|
10796
|
+
AiOutlineLoading3Quarters2,
|
|
10797
|
+
{
|
|
10798
|
+
className: "animate-spin",
|
|
10799
|
+
size: 18
|
|
10800
|
+
}
|
|
10801
|
+
) : /* @__PURE__ */ React18.createElement(
|
|
10802
|
+
GoogleDocsIcon_default,
|
|
10803
|
+
{
|
|
10804
|
+
size: 18,
|
|
10805
|
+
className: "group-hover:scale-110 transition-transform"
|
|
10806
|
+
}
|
|
10807
|
+
)
|
|
10808
|
+
)), /* @__PURE__ */ React18.createElement(
|
|
10809
|
+
"button",
|
|
10810
|
+
{
|
|
10811
|
+
type: "button",
|
|
10812
|
+
onClick: handleAddProp,
|
|
10813
|
+
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
|
|
10814
|
+
},
|
|
10815
|
+
/* @__PURE__ */ React18.createElement(FiPlus7, { size: 14 }),
|
|
10816
|
+
" Adicionar"
|
|
10817
|
+
))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React18.createElement(
|
|
10818
|
+
CustomPropertyDisplay,
|
|
10819
|
+
{
|
|
10820
|
+
key: prop.id,
|
|
10821
|
+
prop,
|
|
10822
|
+
onUpdate: (updatedProp) => handleUpdateProp(index, updatedProp),
|
|
10823
|
+
onRemove: () => handleRemoveProp(index),
|
|
10824
|
+
onOpenImageViewer,
|
|
10825
|
+
unavailableTypes: currentUsedTypes.filter(
|
|
10826
|
+
(t) => t !== prop.type
|
|
10827
|
+
),
|
|
10828
|
+
onUploadFile
|
|
10829
|
+
}
|
|
10830
|
+
)), /* @__PURE__ */ React18.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative pt-4 border-t border-white/5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React18.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React18.createElement(
|
|
10831
|
+
DescriptionDisplay,
|
|
10832
|
+
{
|
|
10833
|
+
description,
|
|
10834
|
+
savedSections: [],
|
|
10835
|
+
availableNodes,
|
|
10836
|
+
availableAncestries,
|
|
10837
|
+
onMentionClick,
|
|
10838
|
+
onSaveDescription: (newDesc) => setDescription(newDesc)
|
|
10839
|
+
}
|
|
10840
|
+
), /* @__PURE__ */ React18.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React18.createElement(
|
|
10841
|
+
"button",
|
|
10842
|
+
{
|
|
10843
|
+
type: "button",
|
|
10844
|
+
onClick: () => setIsDescriptionModalOpen(true),
|
|
10845
|
+
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
|
|
10846
|
+
},
|
|
10847
|
+
/* @__PURE__ */ React18.createElement(FiEdit26, { size: 14 })
|
|
10848
|
+
)), !description && /* @__PURE__ */ React18.createElement(
|
|
10849
|
+
"div",
|
|
10850
|
+
{
|
|
10851
|
+
onClick: () => setIsDescriptionModalOpen(true),
|
|
10852
|
+
className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
|
|
10853
|
+
},
|
|
10854
|
+
"Adicionar descri\xE7\xE3o..."
|
|
10855
|
+
))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative mt-4 border-t border-white/10 pt-4" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ React18.createElement("div", { className: "relative" }, /* @__PURE__ */ React18.createElement(
|
|
10715
10856
|
"button",
|
|
10716
10857
|
{
|
|
10717
10858
|
type: "button",
|
|
@@ -10836,70 +10977,7 @@ function InSceneQuestForm({
|
|
|
10836
10977
|
},
|
|
10837
10978
|
/* @__PURE__ */ React18.createElement("span", { className: "truncate" }, q.raw_title || q.name),
|
|
10838
10979
|
/* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
|
|
10839
|
-
))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5
|
|
10840
|
-
"button",
|
|
10841
|
-
{
|
|
10842
|
-
type: "button",
|
|
10843
|
-
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
10844
|
-
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
10845
|
-
},
|
|
10846
|
-
/* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React18.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
|
|
10847
|
-
/* @__PURE__ */ React18.createElement(
|
|
10848
|
-
FiChevronDown6,
|
|
10849
|
-
{
|
|
10850
|
-
className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
|
|
10851
|
-
}
|
|
10852
|
-
)
|
|
10853
|
-
), isAssigneeDropdownOpen && /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
|
|
10854
|
-
"div",
|
|
10855
|
-
{
|
|
10856
|
-
className: "fixed inset-0 z-40",
|
|
10857
|
-
onClick: () => {
|
|
10858
|
-
setIsAssigneeDropdownOpen(false);
|
|
10859
|
-
setAssigneeSearchQuery("");
|
|
10860
|
-
}
|
|
10861
|
-
}
|
|
10862
|
-
), /* @__PURE__ */ React18.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React18.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React18.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React18.createElement(
|
|
10863
|
-
"input",
|
|
10864
|
-
{
|
|
10865
|
-
type: "text",
|
|
10866
|
-
autoFocus: true,
|
|
10867
|
-
placeholder: "Buscar membro...",
|
|
10868
|
-
value: assigneeSearchQuery,
|
|
10869
|
-
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
10870
|
-
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
10871
|
-
onClick: (e) => e.stopPropagation()
|
|
10872
|
-
}
|
|
10873
|
-
)), /* @__PURE__ */ React18.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React18.createElement(
|
|
10874
|
-
"li",
|
|
10875
|
-
{
|
|
10876
|
-
onClick: () => {
|
|
10877
|
-
setAssigneeId("");
|
|
10878
|
-
setIsAssigneeDropdownOpen(false);
|
|
10879
|
-
setAssigneeSearchQuery("");
|
|
10880
|
-
},
|
|
10881
|
-
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
10882
|
-
},
|
|
10883
|
-
"Nenhum"
|
|
10884
|
-
), viewMembers.filter((member) => {
|
|
10885
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
10886
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10887
|
-
}).map((member) => /* @__PURE__ */ React18.createElement(
|
|
10888
|
-
"li",
|
|
10889
|
-
{
|
|
10890
|
-
key: member.id,
|
|
10891
|
-
onClick: () => {
|
|
10892
|
-
setAssigneeId(member.id);
|
|
10893
|
-
setIsAssigneeDropdownOpen(false);
|
|
10894
|
-
setAssigneeSearchQuery("");
|
|
10895
|
-
},
|
|
10896
|
-
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
10897
|
-
},
|
|
10898
|
-
member.name || member.email || member.id
|
|
10899
|
-
)), viewMembers.filter((member) => {
|
|
10900
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
10901
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10902
|
-
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React18.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React18.createElement(
|
|
10980
|
+
))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React18.createElement(
|
|
10903
10981
|
"button",
|
|
10904
10982
|
{
|
|
10905
10983
|
type: "button",
|
|
@@ -11069,83 +11147,7 @@ function InSceneQuestForm({
|
|
|
11069
11147
|
onChange: setReviewStack,
|
|
11070
11148
|
viewMembers
|
|
11071
11149
|
}
|
|
11072
|
-
)), /* @__PURE__ */ React18.createElement("div", { className: "space-y-
|
|
11073
|
-
DescriptionDisplay,
|
|
11074
|
-
{
|
|
11075
|
-
description,
|
|
11076
|
-
savedSections: [],
|
|
11077
|
-
availableNodes,
|
|
11078
|
-
availableAncestries,
|
|
11079
|
-
onMentionClick,
|
|
11080
|
-
onSaveDescription: (newDesc) => setDescription(newDesc)
|
|
11081
|
-
}
|
|
11082
|
-
), /* @__PURE__ */ React18.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React18.createElement(
|
|
11083
|
-
"button",
|
|
11084
|
-
{
|
|
11085
|
-
type: "button",
|
|
11086
|
-
onClick: () => setIsDescriptionModalOpen(true),
|
|
11087
|
-
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
|
|
11088
|
-
},
|
|
11089
|
-
/* @__PURE__ */ React18.createElement(FiEdit26, { size: 14 })
|
|
11090
|
-
)), !description && /* @__PURE__ */ React18.createElement(
|
|
11091
|
-
"div",
|
|
11092
|
-
{
|
|
11093
|
-
onClick: () => setIsDescriptionModalOpen(true),
|
|
11094
|
-
className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
|
|
11095
|
-
},
|
|
11096
|
-
"Adicionar descri\xE7\xE3o..."
|
|
11097
|
-
))), /* @__PURE__ */ React18.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ React18.createElement(
|
|
11098
|
-
"p",
|
|
11099
|
-
{
|
|
11100
|
-
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
11101
|
-
title: docError
|
|
11102
|
-
},
|
|
11103
|
-
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
11104
|
-
) : /* @__PURE__ */ React18.createElement(
|
|
11105
|
-
"button",
|
|
11106
|
-
{
|
|
11107
|
-
type: "button",
|
|
11108
|
-
onClick: handleCreateGoogleDoc,
|
|
11109
|
-
disabled: isLoadingDocs,
|
|
11110
|
-
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
11111
|
-
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
11112
|
-
},
|
|
11113
|
-
isLoadingDocs ? /* @__PURE__ */ React18.createElement(
|
|
11114
|
-
AiOutlineLoading3Quarters2,
|
|
11115
|
-
{
|
|
11116
|
-
className: "animate-spin",
|
|
11117
|
-
size: 18
|
|
11118
|
-
}
|
|
11119
|
-
) : /* @__PURE__ */ React18.createElement(
|
|
11120
|
-
GoogleDocsIcon_default,
|
|
11121
|
-
{
|
|
11122
|
-
size: 18,
|
|
11123
|
-
className: "group-hover:scale-110 transition-transform"
|
|
11124
|
-
}
|
|
11125
|
-
)
|
|
11126
|
-
)), /* @__PURE__ */ React18.createElement(
|
|
11127
|
-
"button",
|
|
11128
|
-
{
|
|
11129
|
-
type: "button",
|
|
11130
|
-
onClick: handleAddProp,
|
|
11131
|
-
className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
|
|
11132
|
-
},
|
|
11133
|
-
/* @__PURE__ */ React18.createElement(FiPlus7, { size: 14 }),
|
|
11134
|
-
" Adicionar"
|
|
11135
|
-
))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React18.createElement(
|
|
11136
|
-
CustomPropertyDisplay,
|
|
11137
|
-
{
|
|
11138
|
-
key: prop.id,
|
|
11139
|
-
prop,
|
|
11140
|
-
onUpdate: (updatedProp) => handleUpdateProp(index, updatedProp),
|
|
11141
|
-
onRemove: () => handleRemoveProp(index),
|
|
11142
|
-
onOpenImageViewer,
|
|
11143
|
-
unavailableTypes: currentUsedTypes.filter(
|
|
11144
|
-
(t) => t !== prop.type
|
|
11145
|
-
),
|
|
11146
|
-
onUploadFile
|
|
11147
|
-
}
|
|
11148
|
-
)), /* @__PURE__ */ React18.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React18.createElement(
|
|
11150
|
+
)), /* @__PURE__ */ React18.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React18.createElement(
|
|
11149
11151
|
"button",
|
|
11150
11152
|
{
|
|
11151
11153
|
key: s,
|
|
@@ -12566,40 +12568,180 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12566
12568
|
maxWidth: "92vw",
|
|
12567
12569
|
...style
|
|
12568
12570
|
},
|
|
12569
|
-
onPointerDown: swallow,
|
|
12570
|
-
onPointerMove: swallow,
|
|
12571
|
-
onPointerUp: swallow,
|
|
12572
|
-
onClick: swallow,
|
|
12573
|
-
onWheel: swallow,
|
|
12574
|
-
onContextMenu: swallow,
|
|
12575
|
-
onDoubleClick: swallow
|
|
12576
|
-
},
|
|
12577
|
-
/* @__PURE__ */ React21.createElement("div", { onPointerDown: (e) => {
|
|
12578
|
-
e.stopPropagation();
|
|
12579
|
-
handleResize(e);
|
|
12580
|
-
}, className: "absolute left-0 top-0 bottom-0 w-2 cursor-col-resize hover:bg-indigo-500/50 z-[2000] transition-colors", title: "Arraste para redimensionar" }),
|
|
12581
|
-
isReadMode ? /* @__PURE__ */ React21.createElement(
|
|
12582
|
-
DescriptionReadModePanel,
|
|
12571
|
+
onPointerDown: swallow,
|
|
12572
|
+
onPointerMove: swallow,
|
|
12573
|
+
onPointerUp: swallow,
|
|
12574
|
+
onClick: swallow,
|
|
12575
|
+
onWheel: swallow,
|
|
12576
|
+
onContextMenu: swallow,
|
|
12577
|
+
onDoubleClick: swallow
|
|
12578
|
+
},
|
|
12579
|
+
/* @__PURE__ */ React21.createElement("div", { onPointerDown: (e) => {
|
|
12580
|
+
e.stopPropagation();
|
|
12581
|
+
handleResize(e);
|
|
12582
|
+
}, className: "absolute left-0 top-0 bottom-0 w-2 cursor-col-resize hover:bg-indigo-500/50 z-[2000] transition-colors", title: "Arraste para redimensionar" }),
|
|
12583
|
+
isReadMode ? /* @__PURE__ */ React21.createElement(
|
|
12584
|
+
DescriptionReadModePanel,
|
|
12585
|
+
{
|
|
12586
|
+
title: standardizedName || (node == null ? void 0 : node.name),
|
|
12587
|
+
description,
|
|
12588
|
+
savedSections: existingSections,
|
|
12589
|
+
onBack: () => setIsReadMode(false),
|
|
12590
|
+
onEdit: () => {
|
|
12591
|
+
if (canEdit) {
|
|
12592
|
+
setIsReadMode(false);
|
|
12593
|
+
setIsDescriptionModalOpen(true);
|
|
12594
|
+
}
|
|
12595
|
+
},
|
|
12596
|
+
onClose: handleCancel,
|
|
12597
|
+
availableNodes,
|
|
12598
|
+
availableAncestries,
|
|
12599
|
+
onOpenReference,
|
|
12600
|
+
onMentionClick,
|
|
12601
|
+
onImageClick: handleImageClickFromText,
|
|
12602
|
+
onSaveDescription: handleSaveDescriptionInline
|
|
12603
|
+
}
|
|
12604
|
+
) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React21.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React21.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React21.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React21.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React21.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React21.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React21.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
12605
|
+
"button",
|
|
12606
|
+
{
|
|
12607
|
+
type: "button",
|
|
12608
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
12609
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
12610
|
+
},
|
|
12611
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React21.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
12612
|
+
/* @__PURE__ */ React21.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
12613
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12614
|
+
setIsAssigneeDropdownOpen(false);
|
|
12615
|
+
setAssigneeSearchQuery("");
|
|
12616
|
+
} }), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React21.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React21.createElement(
|
|
12617
|
+
"input",
|
|
12618
|
+
{
|
|
12619
|
+
type: "text",
|
|
12620
|
+
autoFocus: true,
|
|
12621
|
+
placeholder: "Buscar membro...",
|
|
12622
|
+
value: assigneeSearchQuery,
|
|
12623
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
12624
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
12625
|
+
onClick: (e) => e.stopPropagation()
|
|
12626
|
+
}
|
|
12627
|
+
)), /* @__PURE__ */ React21.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React21.createElement(
|
|
12628
|
+
"li",
|
|
12629
|
+
{
|
|
12630
|
+
onClick: () => {
|
|
12631
|
+
setAssigneeId("");
|
|
12632
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
12633
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12634
|
+
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
12635
|
+
"status_changed"
|
|
12636
|
+
)];
|
|
12637
|
+
setTimeline(newTimeline);
|
|
12638
|
+
setHasUnsavedChanges(true);
|
|
12639
|
+
setIsAssigneeDropdownOpen(false);
|
|
12640
|
+
setAssigneeSearchQuery("");
|
|
12641
|
+
},
|
|
12642
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
12643
|
+
},
|
|
12644
|
+
"Nenhum"
|
|
12645
|
+
), isAssigneeUndefined && /* @__PURE__ */ React21.createElement(
|
|
12646
|
+
"li",
|
|
12647
|
+
{
|
|
12648
|
+
onClick: () => {
|
|
12649
|
+
setIsAssigneeDropdownOpen(false);
|
|
12650
|
+
setAssigneeSearchQuery("");
|
|
12651
|
+
},
|
|
12652
|
+
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
12653
|
+
},
|
|
12654
|
+
"Undefined (Removido)"
|
|
12655
|
+
), viewMembers.filter((member) => {
|
|
12656
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
12657
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12658
|
+
}).map((member) => /* @__PURE__ */ React21.createElement(
|
|
12659
|
+
"li",
|
|
12660
|
+
{
|
|
12661
|
+
key: member.id,
|
|
12662
|
+
onClick: () => {
|
|
12663
|
+
setAssigneeId(member.id);
|
|
12664
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
12665
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12666
|
+
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
12667
|
+
"status_changed"
|
|
12668
|
+
)];
|
|
12669
|
+
setTimeline(newTimeline);
|
|
12670
|
+
setHasUnsavedChanges(true);
|
|
12671
|
+
setIsAssigneeDropdownOpen(false);
|
|
12672
|
+
setAssigneeSearchQuery("");
|
|
12673
|
+
},
|
|
12674
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
12675
|
+
},
|
|
12676
|
+
member.name || member.email || member.id
|
|
12677
|
+
)))))) : /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React21.createElement("div", { className: "space-y-3 pt-4 border-t border-white/5" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiGitBranch4, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Estruturas Visuais"))), /* @__PURE__ */ React21.createElement("div", { className: "bg-slate-900/60 p-2 rounded-xl border border-white/10 flex flex-col gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
12678
|
+
"button",
|
|
12583
12679
|
{
|
|
12584
|
-
|
|
12585
|
-
|
|
12586
|
-
|
|
12587
|
-
|
|
12588
|
-
|
|
12589
|
-
|
|
12590
|
-
|
|
12591
|
-
|
|
12680
|
+
type: "button",
|
|
12681
|
+
onClick: () => {
|
|
12682
|
+
if (setQuestTreeMode) {
|
|
12683
|
+
const convertPersistedTree = (storedTree) => {
|
|
12684
|
+
if (!storedTree) return null;
|
|
12685
|
+
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
12686
|
+
const nodeId = storedTree.node_id;
|
|
12687
|
+
if (!nodeId) return null;
|
|
12688
|
+
const foundNode = availableNodes.find((n) => String(n.id) === String(nodeId)) || (String(nodeId) === String(node == null ? void 0 : node.id) ? node : null);
|
|
12689
|
+
return {
|
|
12690
|
+
node: foundNode ? { id: foundNode.id, name: foundNode.raw_title || foundNode.name } : { id: nodeId, name: `Node ${nodeId}` },
|
|
12691
|
+
relationship: storedTree.relationship || {},
|
|
12692
|
+
children: (storedTree.children || []).map(convertPersistedTree).filter(Boolean)
|
|
12693
|
+
};
|
|
12694
|
+
};
|
|
12695
|
+
const rootNode = { id: node == null ? void 0 : node.id, name: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name) || "Quest Principal" };
|
|
12696
|
+
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
12697
|
+
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
12698
|
+
setQuestTreeMode((prev) => ({
|
|
12699
|
+
...prev,
|
|
12700
|
+
isActive: true,
|
|
12701
|
+
isAddingNodes: true,
|
|
12702
|
+
questNodeId: node == null ? void 0 : node.id,
|
|
12703
|
+
questNodeName: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name),
|
|
12704
|
+
tree: existingTree,
|
|
12705
|
+
abstraction_tree: existingAbstractionTree,
|
|
12706
|
+
selectedParentId: rootNode.id
|
|
12707
|
+
}));
|
|
12592
12708
|
}
|
|
12593
12709
|
},
|
|
12594
|
-
|
|
12595
|
-
|
|
12596
|
-
|
|
12597
|
-
|
|
12598
|
-
|
|
12599
|
-
|
|
12600
|
-
|
|
12601
|
-
|
|
12602
|
-
|
|
12710
|
+
className: `flex items-center gap-2 px-3 py-2 bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-300 text-xs font-medium rounded-lg transition-colors w-full justify-center border border-indigo-500/20 ${!canEdit ? "opacity-50 pointer-events-none" : ""}`
|
|
12711
|
+
},
|
|
12712
|
+
/* @__PURE__ */ React21.createElement(FiGitBranch4, { className: "text-indigo-400" }),
|
|
12713
|
+
" Configurar \xC1rvores"
|
|
12714
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
12715
|
+
"button",
|
|
12716
|
+
{
|
|
12717
|
+
type: "button",
|
|
12718
|
+
onClick: () => {
|
|
12719
|
+
if (handleRenderQuestTree) handleRenderQuestTree(node);
|
|
12720
|
+
},
|
|
12721
|
+
className: `flex-1 flex items-center justify-center gap-2 px-2 py-1.5 text-[11px] font-medium rounded-lg border transition-colors ${((_c = (_b = node == null ? void 0 : node.quest_tree) == null ? void 0 : _b.children) == null ? void 0 : _c.length) > 0 ? "bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-400 border-indigo-500/20" : "bg-slate-800 hover:bg-slate-700 text-slate-400 border-white/5"}`
|
|
12722
|
+
},
|
|
12723
|
+
"Renderizar Horizontal"
|
|
12724
|
+
), /* @__PURE__ */ React21.createElement(
|
|
12725
|
+
"button",
|
|
12726
|
+
{
|
|
12727
|
+
type: "button",
|
|
12728
|
+
onClick: () => {
|
|
12729
|
+
if (handleRenderQuestAbstractionTree) handleRenderQuestAbstractionTree(node);
|
|
12730
|
+
},
|
|
12731
|
+
className: `flex-1 flex items-center justify-center gap-2 px-2 py-1.5 text-[11px] font-medium rounded-lg border transition-colors ${((_e = (_d = node == null ? void 0 : node.quest_abstraction_tree) == null ? void 0 : _d.children) == null ? void 0 : _e.length) > 0 ? "bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-400 border-indigo-500/20" : "bg-slate-800 hover:bg-slate-700 text-slate-400 border-white/5"}`
|
|
12732
|
+
},
|
|
12733
|
+
"Renderizar Vertical"
|
|
12734
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "pt-4 border-t border-white/5" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ React21.createElement("p", { className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]", title: docError }, docError.length > 50 ? docError.substring(0, 47) + "..." : docError) : /* @__PURE__ */ React21.createElement(
|
|
12735
|
+
"button",
|
|
12736
|
+
{
|
|
12737
|
+
type: "button",
|
|
12738
|
+
onClick: handleCreateGoogleDoc,
|
|
12739
|
+
disabled: isLoadingDocs,
|
|
12740
|
+
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
12741
|
+
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
12742
|
+
},
|
|
12743
|
+
isLoadingDocs ? /* @__PURE__ */ React21.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 18 }) : /* @__PURE__ */ React21.createElement(GoogleDocsIcon_default, { size: 18, className: "group-hover:scale-110 transition-transform" })
|
|
12744
|
+
)), canEdit && /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }), " Adicionar"))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React21.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative pt-4 border-t border-white/5" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React21.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React21.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React21.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React21.createElement(
|
|
12603
12745
|
"input",
|
|
12604
12746
|
{
|
|
12605
12747
|
type: "text",
|
|
@@ -12608,7 +12750,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12608
12750
|
readOnly: !canEdit,
|
|
12609
12751
|
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"}`
|
|
12610
12752
|
}
|
|
12611
|
-
), /* @__PURE__ */ React21.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React21.createElement("
|
|
12753
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ React21.createElement(
|
|
12612
12754
|
"button",
|
|
12613
12755
|
{
|
|
12614
12756
|
type: "button",
|
|
@@ -12822,83 +12964,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12822
12964
|
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }), s),
|
|
12823
12965
|
isDisabled && /* @__PURE__ */ React21.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
|
|
12824
12966
|
);
|
|
12825
|
-
}))))), /* @__PURE__ */ React21.createElement("div", { className: "
|
|
12826
|
-
"button",
|
|
12827
|
-
{
|
|
12828
|
-
type: "button",
|
|
12829
|
-
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
12830
|
-
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
12831
|
-
},
|
|
12832
|
-
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React21.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
12833
|
-
/* @__PURE__ */ React21.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
12834
|
-
), isAssigneeDropdownOpen && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12835
|
-
setIsAssigneeDropdownOpen(false);
|
|
12836
|
-
setAssigneeSearchQuery("");
|
|
12837
|
-
} }), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React21.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React21.createElement(
|
|
12838
|
-
"input",
|
|
12839
|
-
{
|
|
12840
|
-
type: "text",
|
|
12841
|
-
autoFocus: true,
|
|
12842
|
-
placeholder: "Buscar membro...",
|
|
12843
|
-
value: assigneeSearchQuery,
|
|
12844
|
-
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
12845
|
-
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
12846
|
-
onClick: (e) => e.stopPropagation()
|
|
12847
|
-
}
|
|
12848
|
-
)), /* @__PURE__ */ React21.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React21.createElement(
|
|
12849
|
-
"li",
|
|
12850
|
-
{
|
|
12851
|
-
onClick: () => {
|
|
12852
|
-
setAssigneeId("");
|
|
12853
|
-
const newTimeline = [...timeline, createTimelineEntry(
|
|
12854
|
-
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12855
|
-
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
12856
|
-
"status_changed"
|
|
12857
|
-
)];
|
|
12858
|
-
setTimeline(newTimeline);
|
|
12859
|
-
setHasUnsavedChanges(true);
|
|
12860
|
-
setIsAssigneeDropdownOpen(false);
|
|
12861
|
-
setAssigneeSearchQuery("");
|
|
12862
|
-
},
|
|
12863
|
-
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
12864
|
-
},
|
|
12865
|
-
"Nenhum"
|
|
12866
|
-
), isAssigneeUndefined && /* @__PURE__ */ React21.createElement(
|
|
12867
|
-
"li",
|
|
12868
|
-
{
|
|
12869
|
-
onClick: () => {
|
|
12870
|
-
setIsAssigneeDropdownOpen(false);
|
|
12871
|
-
setAssigneeSearchQuery("");
|
|
12872
|
-
},
|
|
12873
|
-
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
12874
|
-
},
|
|
12875
|
-
"Undefined (Removido)"
|
|
12876
|
-
), viewMembers.filter((member) => {
|
|
12877
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
12878
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12879
|
-
}).map((member) => /* @__PURE__ */ React21.createElement(
|
|
12880
|
-
"li",
|
|
12881
|
-
{
|
|
12882
|
-
key: member.id,
|
|
12883
|
-
onClick: () => {
|
|
12884
|
-
setAssigneeId(member.id);
|
|
12885
|
-
const newTimeline = [...timeline, createTimelineEntry(
|
|
12886
|
-
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12887
|
-
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
12888
|
-
"status_changed"
|
|
12889
|
-
)];
|
|
12890
|
-
setTimeline(newTimeline);
|
|
12891
|
-
setHasUnsavedChanges(true);
|
|
12892
|
-
setIsAssigneeDropdownOpen(false);
|
|
12893
|
-
setAssigneeSearchQuery("");
|
|
12894
|
-
},
|
|
12895
|
-
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
12896
|
-
},
|
|
12897
|
-
member.name || member.email || member.id
|
|
12898
|
-
)), viewMembers.filter((member) => {
|
|
12899
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
12900
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12901
|
-
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React21.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React21.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React21.createElement(
|
|
12967
|
+
}))))), /* @__PURE__ */ React21.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React21.createElement(
|
|
12902
12968
|
"button",
|
|
12903
12969
|
{
|
|
12904
12970
|
type: "button",
|
|
@@ -12986,7 +13052,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12986
13052
|
onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
|
|
12987
13053
|
className: "w-full bg-slate-800/80 p-2 text-xs rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-1 focus:ring-purple-400/50 transition-colors flex items-center justify-between"
|
|
12988
13054
|
},
|
|
12989
|
-
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React21.createElement("span", { className: "text-slate-200 font-medium" }, ((
|
|
13055
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React21.createElement("span", { className: "text-slate-200 font-medium" }, ((_f = viewMembers.find((m) => String(m.id) === String(returnAssigneeId))) == null ? void 0 : _f.name) || "Selecionar respons\xE1vel...")),
|
|
12990
13056
|
/* @__PURE__ */ React21.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
|
|
12991
13057
|
), isReturnDropdownOpen && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12992
13058
|
setIsReturnDropdownOpen(false);
|
|
@@ -13030,68 +13096,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13030
13096
|
},
|
|
13031
13097
|
/* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
|
|
13032
13098
|
"Retornar para Opera\xE7\xE3o"
|
|
13033
|
-
))), /* @__PURE__ */ React21.createElement("div", { className: "
|
|
13034
|
-
"button",
|
|
13035
|
-
{
|
|
13036
|
-
type: "button",
|
|
13037
|
-
onClick: () => {
|
|
13038
|
-
if (setQuestTreeMode) {
|
|
13039
|
-
const convertPersistedTree = (storedTree) => {
|
|
13040
|
-
if (!storedTree) return null;
|
|
13041
|
-
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
13042
|
-
const nodeId = storedTree.node_id;
|
|
13043
|
-
if (!nodeId) return null;
|
|
13044
|
-
const foundNode = availableNodes.find((n) => String(n.id) === String(nodeId)) || (String(nodeId) === String(node == null ? void 0 : node.id) ? node : null);
|
|
13045
|
-
return {
|
|
13046
|
-
node: foundNode ? { id: foundNode.id, name: foundNode.raw_title || foundNode.name } : { id: nodeId, name: `Node ${nodeId}` },
|
|
13047
|
-
relationship: storedTree.relationship || {},
|
|
13048
|
-
children: (storedTree.children || []).map(convertPersistedTree).filter(Boolean)
|
|
13049
|
-
};
|
|
13050
|
-
};
|
|
13051
|
-
const rootNode = { id: node == null ? void 0 : node.id, name: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name) || "Quest Principal" };
|
|
13052
|
-
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
13053
|
-
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
13054
|
-
setQuestTreeMode((prev) => ({
|
|
13055
|
-
...prev,
|
|
13056
|
-
isActive: true,
|
|
13057
|
-
isAddingNodes: true,
|
|
13058
|
-
questNodeId: node == null ? void 0 : node.id,
|
|
13059
|
-
questNodeName: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name),
|
|
13060
|
-
tree: existingTree,
|
|
13061
|
-
abstraction_tree: existingAbstractionTree,
|
|
13062
|
-
selectedParentId: rootNode.id
|
|
13063
|
-
}));
|
|
13064
|
-
}
|
|
13065
|
-
},
|
|
13066
|
-
className: `flex items-center gap-2 px-3 py-2 bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-300 text-xs font-medium rounded-lg transition-colors w-full justify-center border border-indigo-500/20 ${!canEdit ? "opacity-50 pointer-events-none" : ""}`
|
|
13067
|
-
},
|
|
13068
|
-
/* @__PURE__ */ React21.createElement(FiGitBranch4, { className: "text-indigo-400" }),
|
|
13069
|
-
" Configurar \xC1rvores"
|
|
13070
|
-
), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
13071
|
-
"button",
|
|
13072
|
-
{
|
|
13073
|
-
type: "button",
|
|
13074
|
-
onClick: () => {
|
|
13075
|
-
if (handleRenderQuestTree) {
|
|
13076
|
-
handleRenderQuestTree(node);
|
|
13077
|
-
}
|
|
13078
|
-
},
|
|
13079
|
-
className: `flex-1 flex items-center justify-center gap-2 px-2 py-1.5 text-[11px] font-medium rounded-lg border transition-colors ${((_d = (_c = node == null ? void 0 : node.quest_tree) == null ? void 0 : _c.children) == null ? void 0 : _d.length) > 0 ? "bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-400 border-indigo-500/20" : "bg-slate-800 hover:bg-slate-700 text-slate-400 border-white/5"}`
|
|
13080
|
-
},
|
|
13081
|
-
"Renderizar Horizontal"
|
|
13082
|
-
), /* @__PURE__ */ React21.createElement(
|
|
13083
|
-
"button",
|
|
13084
|
-
{
|
|
13085
|
-
type: "button",
|
|
13086
|
-
onClick: () => {
|
|
13087
|
-
if (handleRenderQuestAbstractionTree) {
|
|
13088
|
-
handleRenderQuestAbstractionTree(node);
|
|
13089
|
-
}
|
|
13090
|
-
},
|
|
13091
|
-
className: `flex-1 flex items-center justify-center gap-2 px-2 py-1.5 text-[11px] font-medium rounded-lg border transition-colors ${((_f = (_e = node == null ? void 0 : node.quest_abstraction_tree) == null ? void 0 : _e.children) == null ? void 0 : _f.length) > 0 ? "bg-indigo-500/10 hover:bg-indigo-500/30 text-indigo-400 border-indigo-500/20" : "bg-slate-800 hover:bg-slate-700 text-slate-400 border-white/5"}`
|
|
13092
|
-
},
|
|
13093
|
-
"Renderizar Vertical"
|
|
13094
|
-
)))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
|
|
13099
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
|
|
13095
13100
|
const depNode = availableNodes.find((n) => String(n.id) === String(depId));
|
|
13096
13101
|
if (!depNode) return null;
|
|
13097
13102
|
const isDone = depNode.status === "Done";
|
|
@@ -13147,36 +13152,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13147
13152
|
},
|
|
13148
13153
|
/* @__PURE__ */ React21.createElement("span", { className: "truncate" }, q.raw_title || q.name),
|
|
13149
13154
|
/* @__PURE__ */ React21.createElement("span", { className: `text-[10px] px-1.5 py-0.5 rounded border ${q.status === "Done" ? "text-green-400 border-green-500/30" : "text-slate-500 border-white/5"}` }, q.status || "Backlog")
|
|
13150
|
-
)) : /* @__PURE__ */ React21.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-amber-500/5 rounded-lg border border-amber-500/10 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React21.createElement(FiRepeat2, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ React21.createElement("p", { className: "text-[10px] text-amber-200/80 font-medium" }, "Esta quest est\xE1 bloqueada por ", blockedStatus.pendingDependencies.length, " tarefa(s) pendente(s)."))), /* @__PURE__ */ React21.createElement("div", { className: "pt-
|
|
13151
|
-
"p",
|
|
13152
|
-
{
|
|
13153
|
-
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
13154
|
-
title: docError
|
|
13155
|
-
},
|
|
13156
|
-
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
13157
|
-
) : /* @__PURE__ */ React21.createElement(
|
|
13158
|
-
"button",
|
|
13159
|
-
{
|
|
13160
|
-
type: "button",
|
|
13161
|
-
onClick: handleCreateGoogleDoc,
|
|
13162
|
-
disabled: isLoadingDocs,
|
|
13163
|
-
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
13164
|
-
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
13165
|
-
},
|
|
13166
|
-
isLoadingDocs ? /* @__PURE__ */ React21.createElement(
|
|
13167
|
-
AiOutlineLoading3Quarters4,
|
|
13168
|
-
{
|
|
13169
|
-
className: "animate-spin",
|
|
13170
|
-
size: 18
|
|
13171
|
-
}
|
|
13172
|
-
) : /* @__PURE__ */ React21.createElement(
|
|
13173
|
-
GoogleDocsIcon_default,
|
|
13174
|
-
{
|
|
13175
|
-
size: 18,
|
|
13176
|
-
className: "group-hover:scale-110 transition-transform"
|
|
13177
|
-
}
|
|
13178
|
-
)
|
|
13179
|
-
)), canEdit && /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }), " Adicionar"))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React21.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React21.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React21.createElement(
|
|
13155
|
+
)) : /* @__PURE__ */ React21.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-amber-500/5 rounded-lg border border-amber-500/10 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React21.createElement(FiRepeat2, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ React21.createElement("p", { className: "text-[10px] text-amber-200/80 font-medium" }, "Esta quest est\xE1 bloqueada por ", blockedStatus.pendingDependencies.length, " tarefa(s) pendente(s)."))), /* @__PURE__ */ React21.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React21.createElement(
|
|
13180
13156
|
"button",
|
|
13181
13157
|
{
|
|
13182
13158
|
type: "button",
|
|
@@ -15700,6 +15676,9 @@ function XViewScene({
|
|
|
15700
15676
|
for (const parentFileId in allParentData) {
|
|
15701
15677
|
if (allParentData.hasOwnProperty(parentFileId)) {
|
|
15702
15678
|
const parentFile = allParentData[parentFileId];
|
|
15679
|
+
const parentDbInfo = parentDbsArray.find(
|
|
15680
|
+
(db) => String(db.db_id) === String(parentFileId)
|
|
15681
|
+
);
|
|
15703
15682
|
const isCurrentView = String(parentFileId) === String(sceneConfigId);
|
|
15704
15683
|
const ownerId2 = (parentDbInfo == null ? void 0 : parentDbInfo.owner_id) || (isCurrentView ? viewParams == null ? void 0 : viewParams.owner_id : null);
|
|
15705
15684
|
const datasetName = isCurrentView ? "Quests Internas (View)" : parentFile.dataset_name || `Dataset #${parentFileId.substring(0, 6)}`;
|