@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.js
CHANGED
|
@@ -895,11 +895,11 @@ var getParentFileInfoForNode = (allParentData, sceneData, nodeId, sceneConfigId
|
|
|
895
895
|
if (allParentData.hasOwnProperty(parentFileId)) {
|
|
896
896
|
const parentFile = allParentData[parentFileId];
|
|
897
897
|
if (parentFile.nodes && parentFile.nodes.some((n) => String(n.id) === String(nodeId))) {
|
|
898
|
-
const
|
|
898
|
+
const parentDbInfo = parentDbsArray.find(
|
|
899
899
|
(db) => String(db.db_id) === String(parentFileId)
|
|
900
900
|
);
|
|
901
|
-
if (
|
|
902
|
-
return { parentFileId, ownerId:
|
|
901
|
+
if (parentDbInfo) {
|
|
902
|
+
return { parentFileId, ownerId: parentDbInfo.owner_id };
|
|
903
903
|
} else if (sceneConfigId && String(parentFileId) === String(sceneConfigId)) {
|
|
904
904
|
return { parentFileId, ownerId: sceneOwnerId };
|
|
905
905
|
} else {
|
|
@@ -2737,7 +2737,9 @@ var IGNORED_KEYS = [
|
|
|
2737
2737
|
"reviewStack",
|
|
2738
2738
|
"timeline",
|
|
2739
2739
|
"milestone_ids",
|
|
2740
|
-
"dependency_ids"
|
|
2740
|
+
"dependency_ids",
|
|
2741
|
+
"quest_tree",
|
|
2742
|
+
"quest_abstraction_tree"
|
|
2741
2743
|
];
|
|
2742
2744
|
function extractCustomPropsFromNode(node) {
|
|
2743
2745
|
const customPropTypes = node._customPropTypes || {};
|
|
@@ -10685,7 +10687,146 @@ function InSceneQuestForm({
|
|
|
10685
10687
|
title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
|
|
10686
10688
|
},
|
|
10687
10689
|
isNameCopied ? /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiCheck, { size: 10 }) : /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiCopy, { size: 10 })
|
|
10688
|
-
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "
|
|
10690
|
+
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative mt-2 border-t border-white/5 pt-4" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10691
|
+
"button",
|
|
10692
|
+
{
|
|
10693
|
+
type: "button",
|
|
10694
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
10695
|
+
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"
|
|
10696
|
+
},
|
|
10697
|
+
/* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react19.default.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")),
|
|
10698
|
+
/* @__PURE__ */ import_react19.default.createElement(
|
|
10699
|
+
import_fi17.FiChevronDown,
|
|
10700
|
+
{
|
|
10701
|
+
className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
|
|
10702
|
+
}
|
|
10703
|
+
)
|
|
10704
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
|
|
10705
|
+
"div",
|
|
10706
|
+
{
|
|
10707
|
+
className: "fixed inset-0 z-40",
|
|
10708
|
+
onClick: () => {
|
|
10709
|
+
setIsAssigneeDropdownOpen(false);
|
|
10710
|
+
setAssigneeSearchQuery("");
|
|
10711
|
+
}
|
|
10712
|
+
}
|
|
10713
|
+
), /* @__PURE__ */ import_react19.default.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__ */ import_react19.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react19.default.createElement(
|
|
10714
|
+
"input",
|
|
10715
|
+
{
|
|
10716
|
+
type: "text",
|
|
10717
|
+
autoFocus: true,
|
|
10718
|
+
placeholder: "Buscar membro...",
|
|
10719
|
+
value: assigneeSearchQuery,
|
|
10720
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
10721
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
10722
|
+
onClick: (e) => e.stopPropagation()
|
|
10723
|
+
}
|
|
10724
|
+
)), /* @__PURE__ */ import_react19.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10725
|
+
"li",
|
|
10726
|
+
{
|
|
10727
|
+
onClick: () => {
|
|
10728
|
+
setAssigneeId("");
|
|
10729
|
+
setIsAssigneeDropdownOpen(false);
|
|
10730
|
+
setAssigneeSearchQuery("");
|
|
10731
|
+
},
|
|
10732
|
+
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"}`
|
|
10733
|
+
},
|
|
10734
|
+
"Nenhum"
|
|
10735
|
+
), viewMembers.filter((member) => {
|
|
10736
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
10737
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10738
|
+
}).map((member) => /* @__PURE__ */ import_react19.default.createElement(
|
|
10739
|
+
"li",
|
|
10740
|
+
{
|
|
10741
|
+
key: member.id,
|
|
10742
|
+
onClick: () => {
|
|
10743
|
+
setAssigneeId(member.id);
|
|
10744
|
+
setIsAssigneeDropdownOpen(false);
|
|
10745
|
+
setAssigneeSearchQuery("");
|
|
10746
|
+
},
|
|
10747
|
+
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"}`
|
|
10748
|
+
},
|
|
10749
|
+
member.name || member.email || member.id
|
|
10750
|
+
)), viewMembers.filter((member) => {
|
|
10751
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
10752
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10753
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react19.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "pt-4 border-t border-white/5" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react19.default.createElement("h3", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ import_react19.default.createElement(
|
|
10754
|
+
"p",
|
|
10755
|
+
{
|
|
10756
|
+
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
10757
|
+
title: docError
|
|
10758
|
+
},
|
|
10759
|
+
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
10760
|
+
) : /* @__PURE__ */ import_react19.default.createElement(
|
|
10761
|
+
"button",
|
|
10762
|
+
{
|
|
10763
|
+
type: "button",
|
|
10764
|
+
onClick: handleCreateGoogleDoc,
|
|
10765
|
+
disabled: isLoadingDocs,
|
|
10766
|
+
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
10767
|
+
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
10768
|
+
},
|
|
10769
|
+
isLoadingDocs ? /* @__PURE__ */ import_react19.default.createElement(
|
|
10770
|
+
import_ai2.AiOutlineLoading3Quarters,
|
|
10771
|
+
{
|
|
10772
|
+
className: "animate-spin",
|
|
10773
|
+
size: 18
|
|
10774
|
+
}
|
|
10775
|
+
) : /* @__PURE__ */ import_react19.default.createElement(
|
|
10776
|
+
GoogleDocsIcon_default,
|
|
10777
|
+
{
|
|
10778
|
+
size: 18,
|
|
10779
|
+
className: "group-hover:scale-110 transition-transform"
|
|
10780
|
+
}
|
|
10781
|
+
)
|
|
10782
|
+
)), /* @__PURE__ */ import_react19.default.createElement(
|
|
10783
|
+
"button",
|
|
10784
|
+
{
|
|
10785
|
+
type: "button",
|
|
10786
|
+
onClick: handleAddProp,
|
|
10787
|
+
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"
|
|
10788
|
+
},
|
|
10789
|
+
/* @__PURE__ */ import_react19.default.createElement(import_fi17.FiPlus, { size: 14 }),
|
|
10790
|
+
" Adicionar"
|
|
10791
|
+
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ import_react19.default.createElement(
|
|
10792
|
+
CustomPropertyDisplay,
|
|
10793
|
+
{
|
|
10794
|
+
key: prop.id,
|
|
10795
|
+
prop,
|
|
10796
|
+
onUpdate: (updatedProp) => handleUpdateProp(index, updatedProp),
|
|
10797
|
+
onRemove: () => handleRemoveProp(index),
|
|
10798
|
+
onOpenImageViewer,
|
|
10799
|
+
unavailableTypes: currentUsedTypes.filter(
|
|
10800
|
+
(t) => t !== prop.type
|
|
10801
|
+
),
|
|
10802
|
+
onUploadFile
|
|
10803
|
+
}
|
|
10804
|
+
)), /* @__PURE__ */ import_react19.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative pt-4 border-t border-white/5" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react19.default.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__ */ import_react19.default.createElement(
|
|
10805
|
+
DescriptionDisplay,
|
|
10806
|
+
{
|
|
10807
|
+
description,
|
|
10808
|
+
savedSections: [],
|
|
10809
|
+
availableNodes,
|
|
10810
|
+
availableAncestries,
|
|
10811
|
+
onMentionClick,
|
|
10812
|
+
onSaveDescription: (newDesc) => setDescription(newDesc)
|
|
10813
|
+
}
|
|
10814
|
+
), /* @__PURE__ */ import_react19.default.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__ */ import_react19.default.createElement(
|
|
10815
|
+
"button",
|
|
10816
|
+
{
|
|
10817
|
+
type: "button",
|
|
10818
|
+
onClick: () => setIsDescriptionModalOpen(true),
|
|
10819
|
+
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
|
|
10820
|
+
},
|
|
10821
|
+
/* @__PURE__ */ import_react19.default.createElement(import_fi17.FiEdit2, { size: 14 })
|
|
10822
|
+
)), !description && /* @__PURE__ */ import_react19.default.createElement(
|
|
10823
|
+
"div",
|
|
10824
|
+
{
|
|
10825
|
+
onClick: () => setIsDescriptionModalOpen(true),
|
|
10826
|
+
className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
|
|
10827
|
+
},
|
|
10828
|
+
"Adicionar descri\xE7\xE3o..."
|
|
10829
|
+
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 relative mt-4 border-t border-white/10 pt-4" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10689
10830
|
"button",
|
|
10690
10831
|
{
|
|
10691
10832
|
type: "button",
|
|
@@ -10810,70 +10951,7 @@ function InSceneQuestForm({
|
|
|
10810
10951
|
},
|
|
10811
10952
|
/* @__PURE__ */ import_react19.default.createElement("span", { className: "truncate" }, q.raw_title || q.name),
|
|
10812
10953
|
/* @__PURE__ */ import_react19.default.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
|
|
10813
|
-
))))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5
|
|
10814
|
-
"button",
|
|
10815
|
-
{
|
|
10816
|
-
type: "button",
|
|
10817
|
-
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
10818
|
-
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"
|
|
10819
|
-
},
|
|
10820
|
-
/* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react19.default.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")),
|
|
10821
|
-
/* @__PURE__ */ import_react19.default.createElement(
|
|
10822
|
-
import_fi17.FiChevronDown,
|
|
10823
|
-
{
|
|
10824
|
-
className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
|
|
10825
|
-
}
|
|
10826
|
-
)
|
|
10827
|
-
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
|
|
10828
|
-
"div",
|
|
10829
|
-
{
|
|
10830
|
-
className: "fixed inset-0 z-40",
|
|
10831
|
-
onClick: () => {
|
|
10832
|
-
setIsAssigneeDropdownOpen(false);
|
|
10833
|
-
setAssigneeSearchQuery("");
|
|
10834
|
-
}
|
|
10835
|
-
}
|
|
10836
|
-
), /* @__PURE__ */ import_react19.default.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__ */ import_react19.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react19.default.createElement(
|
|
10837
|
-
"input",
|
|
10838
|
-
{
|
|
10839
|
-
type: "text",
|
|
10840
|
-
autoFocus: true,
|
|
10841
|
-
placeholder: "Buscar membro...",
|
|
10842
|
-
value: assigneeSearchQuery,
|
|
10843
|
-
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
10844
|
-
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
10845
|
-
onClick: (e) => e.stopPropagation()
|
|
10846
|
-
}
|
|
10847
|
-
)), /* @__PURE__ */ import_react19.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
10848
|
-
"li",
|
|
10849
|
-
{
|
|
10850
|
-
onClick: () => {
|
|
10851
|
-
setAssigneeId("");
|
|
10852
|
-
setIsAssigneeDropdownOpen(false);
|
|
10853
|
-
setAssigneeSearchQuery("");
|
|
10854
|
-
},
|
|
10855
|
-
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"}`
|
|
10856
|
-
},
|
|
10857
|
-
"Nenhum"
|
|
10858
|
-
), viewMembers.filter((member) => {
|
|
10859
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
10860
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10861
|
-
}).map((member) => /* @__PURE__ */ import_react19.default.createElement(
|
|
10862
|
-
"li",
|
|
10863
|
-
{
|
|
10864
|
-
key: member.id,
|
|
10865
|
-
onClick: () => {
|
|
10866
|
-
setAssigneeId(member.id);
|
|
10867
|
-
setIsAssigneeDropdownOpen(false);
|
|
10868
|
-
setAssigneeSearchQuery("");
|
|
10869
|
-
},
|
|
10870
|
-
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"}`
|
|
10871
|
-
},
|
|
10872
|
-
member.name || member.email || member.id
|
|
10873
|
-
)), viewMembers.filter((member) => {
|
|
10874
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
10875
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
10876
|
-
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react19.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ import_react19.default.createElement(
|
|
10954
|
+
))))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ import_react19.default.createElement(
|
|
10877
10955
|
"button",
|
|
10878
10956
|
{
|
|
10879
10957
|
type: "button",
|
|
@@ -11043,83 +11121,7 @@ function InSceneQuestForm({
|
|
|
11043
11121
|
onChange: setReviewStack,
|
|
11044
11122
|
viewMembers
|
|
11045
11123
|
}
|
|
11046
|
-
)), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-
|
|
11047
|
-
DescriptionDisplay,
|
|
11048
|
-
{
|
|
11049
|
-
description,
|
|
11050
|
-
savedSections: [],
|
|
11051
|
-
availableNodes,
|
|
11052
|
-
availableAncestries,
|
|
11053
|
-
onMentionClick,
|
|
11054
|
-
onSaveDescription: (newDesc) => setDescription(newDesc)
|
|
11055
|
-
}
|
|
11056
|
-
), /* @__PURE__ */ import_react19.default.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__ */ import_react19.default.createElement(
|
|
11057
|
-
"button",
|
|
11058
|
-
{
|
|
11059
|
-
type: "button",
|
|
11060
|
-
onClick: () => setIsDescriptionModalOpen(true),
|
|
11061
|
-
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
|
|
11062
|
-
},
|
|
11063
|
-
/* @__PURE__ */ import_react19.default.createElement(import_fi17.FiEdit2, { size: 14 })
|
|
11064
|
-
)), !description && /* @__PURE__ */ import_react19.default.createElement(
|
|
11065
|
-
"div",
|
|
11066
|
-
{
|
|
11067
|
-
onClick: () => setIsDescriptionModalOpen(true),
|
|
11068
|
-
className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
|
|
11069
|
-
},
|
|
11070
|
-
"Adicionar descri\xE7\xE3o..."
|
|
11071
|
-
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react19.default.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ import_react19.default.createElement(
|
|
11072
|
-
"p",
|
|
11073
|
-
{
|
|
11074
|
-
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
11075
|
-
title: docError
|
|
11076
|
-
},
|
|
11077
|
-
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
11078
|
-
) : /* @__PURE__ */ import_react19.default.createElement(
|
|
11079
|
-
"button",
|
|
11080
|
-
{
|
|
11081
|
-
type: "button",
|
|
11082
|
-
onClick: handleCreateGoogleDoc,
|
|
11083
|
-
disabled: isLoadingDocs,
|
|
11084
|
-
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
11085
|
-
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
11086
|
-
},
|
|
11087
|
-
isLoadingDocs ? /* @__PURE__ */ import_react19.default.createElement(
|
|
11088
|
-
import_ai2.AiOutlineLoading3Quarters,
|
|
11089
|
-
{
|
|
11090
|
-
className: "animate-spin",
|
|
11091
|
-
size: 18
|
|
11092
|
-
}
|
|
11093
|
-
) : /* @__PURE__ */ import_react19.default.createElement(
|
|
11094
|
-
GoogleDocsIcon_default,
|
|
11095
|
-
{
|
|
11096
|
-
size: 18,
|
|
11097
|
-
className: "group-hover:scale-110 transition-transform"
|
|
11098
|
-
}
|
|
11099
|
-
)
|
|
11100
|
-
)), /* @__PURE__ */ import_react19.default.createElement(
|
|
11101
|
-
"button",
|
|
11102
|
-
{
|
|
11103
|
-
type: "button",
|
|
11104
|
-
onClick: handleAddProp,
|
|
11105
|
-
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"
|
|
11106
|
-
},
|
|
11107
|
-
/* @__PURE__ */ import_react19.default.createElement(import_fi17.FiPlus, { size: 14 }),
|
|
11108
|
-
" Adicionar"
|
|
11109
|
-
))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ import_react19.default.createElement(
|
|
11110
|
-
CustomPropertyDisplay,
|
|
11111
|
-
{
|
|
11112
|
-
key: prop.id,
|
|
11113
|
-
prop,
|
|
11114
|
-
onUpdate: (updatedProp) => handleUpdateProp(index, updatedProp),
|
|
11115
|
-
onRemove: () => handleRemoveProp(index),
|
|
11116
|
-
onOpenImageViewer,
|
|
11117
|
-
unavailableTypes: currentUsedTypes.filter(
|
|
11118
|
-
(t) => t !== prop.type
|
|
11119
|
-
),
|
|
11120
|
-
onUploadFile
|
|
11121
|
-
}
|
|
11122
|
-
)), /* @__PURE__ */ import_react19.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ import_react19.default.createElement(
|
|
11124
|
+
)), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react19.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ import_react19.default.createElement(
|
|
11123
11125
|
"button",
|
|
11124
11126
|
{
|
|
11125
11127
|
key: s,
|
|
@@ -12528,40 +12530,180 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12528
12530
|
maxWidth: "92vw",
|
|
12529
12531
|
...style
|
|
12530
12532
|
},
|
|
12531
|
-
onPointerDown: swallow,
|
|
12532
|
-
onPointerMove: swallow,
|
|
12533
|
-
onPointerUp: swallow,
|
|
12534
|
-
onClick: swallow,
|
|
12535
|
-
onWheel: swallow,
|
|
12536
|
-
onContextMenu: swallow,
|
|
12537
|
-
onDoubleClick: swallow
|
|
12538
|
-
},
|
|
12539
|
-
/* @__PURE__ */ import_react22.default.createElement("div", { onPointerDown: (e) => {
|
|
12540
|
-
e.stopPropagation();
|
|
12541
|
-
handleResize(e);
|
|
12542
|
-
}, 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" }),
|
|
12543
|
-
isReadMode ? /* @__PURE__ */ import_react22.default.createElement(
|
|
12544
|
-
DescriptionReadModePanel,
|
|
12533
|
+
onPointerDown: swallow,
|
|
12534
|
+
onPointerMove: swallow,
|
|
12535
|
+
onPointerUp: swallow,
|
|
12536
|
+
onClick: swallow,
|
|
12537
|
+
onWheel: swallow,
|
|
12538
|
+
onContextMenu: swallow,
|
|
12539
|
+
onDoubleClick: swallow
|
|
12540
|
+
},
|
|
12541
|
+
/* @__PURE__ */ import_react22.default.createElement("div", { onPointerDown: (e) => {
|
|
12542
|
+
e.stopPropagation();
|
|
12543
|
+
handleResize(e);
|
|
12544
|
+
}, 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" }),
|
|
12545
|
+
isReadMode ? /* @__PURE__ */ import_react22.default.createElement(
|
|
12546
|
+
DescriptionReadModePanel,
|
|
12547
|
+
{
|
|
12548
|
+
title: standardizedName || (node == null ? void 0 : node.name),
|
|
12549
|
+
description,
|
|
12550
|
+
savedSections: existingSections,
|
|
12551
|
+
onBack: () => setIsReadMode(false),
|
|
12552
|
+
onEdit: () => {
|
|
12553
|
+
if (canEdit) {
|
|
12554
|
+
setIsReadMode(false);
|
|
12555
|
+
setIsDescriptionModalOpen(true);
|
|
12556
|
+
}
|
|
12557
|
+
},
|
|
12558
|
+
onClose: handleCancel,
|
|
12559
|
+
availableNodes,
|
|
12560
|
+
availableAncestries,
|
|
12561
|
+
onOpenReference,
|
|
12562
|
+
onMentionClick,
|
|
12563
|
+
onImageClick: handleImageClickFromText,
|
|
12564
|
+
onSaveDescription: handleSaveDescriptionInline
|
|
12565
|
+
}
|
|
12566
|
+
) : /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ import_react22.default.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiCheck, { size: 12 }) : /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiLink, { size: 12 }))), /* @__PURE__ */ import_react22.default.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react22.default.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ import_react22.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
12567
|
+
"button",
|
|
12568
|
+
{
|
|
12569
|
+
type: "button",
|
|
12570
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
12571
|
+
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"
|
|
12572
|
+
},
|
|
12573
|
+
/* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
12574
|
+
/* @__PURE__ */ import_react22.default.createElement(import_fi20.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
12575
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12576
|
+
setIsAssigneeDropdownOpen(false);
|
|
12577
|
+
setAssigneeSearchQuery("");
|
|
12578
|
+
} }), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react22.default.createElement(
|
|
12579
|
+
"input",
|
|
12580
|
+
{
|
|
12581
|
+
type: "text",
|
|
12582
|
+
autoFocus: true,
|
|
12583
|
+
placeholder: "Buscar membro...",
|
|
12584
|
+
value: assigneeSearchQuery,
|
|
12585
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
12586
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
12587
|
+
onClick: (e) => e.stopPropagation()
|
|
12588
|
+
}
|
|
12589
|
+
)), /* @__PURE__ */ import_react22.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
12590
|
+
"li",
|
|
12591
|
+
{
|
|
12592
|
+
onClick: () => {
|
|
12593
|
+
setAssigneeId("");
|
|
12594
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
12595
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12596
|
+
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
12597
|
+
"status_changed"
|
|
12598
|
+
)];
|
|
12599
|
+
setTimeline(newTimeline);
|
|
12600
|
+
setHasUnsavedChanges(true);
|
|
12601
|
+
setIsAssigneeDropdownOpen(false);
|
|
12602
|
+
setAssigneeSearchQuery("");
|
|
12603
|
+
},
|
|
12604
|
+
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"}`
|
|
12605
|
+
},
|
|
12606
|
+
"Nenhum"
|
|
12607
|
+
), isAssigneeUndefined && /* @__PURE__ */ import_react22.default.createElement(
|
|
12608
|
+
"li",
|
|
12609
|
+
{
|
|
12610
|
+
onClick: () => {
|
|
12611
|
+
setIsAssigneeDropdownOpen(false);
|
|
12612
|
+
setAssigneeSearchQuery("");
|
|
12613
|
+
},
|
|
12614
|
+
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
12615
|
+
},
|
|
12616
|
+
"Undefined (Removido)"
|
|
12617
|
+
), viewMembers.filter((member) => {
|
|
12618
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
12619
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12620
|
+
}).map((member) => /* @__PURE__ */ import_react22.default.createElement(
|
|
12621
|
+
"li",
|
|
12622
|
+
{
|
|
12623
|
+
key: member.id,
|
|
12624
|
+
onClick: () => {
|
|
12625
|
+
setAssigneeId(member.id);
|
|
12626
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
12627
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12628
|
+
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
12629
|
+
"status_changed"
|
|
12630
|
+
)];
|
|
12631
|
+
setTimeline(newTimeline);
|
|
12632
|
+
setHasUnsavedChanges(true);
|
|
12633
|
+
setIsAssigneeDropdownOpen(false);
|
|
12634
|
+
setAssigneeSearchQuery("");
|
|
12635
|
+
},
|
|
12636
|
+
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"}`
|
|
12637
|
+
},
|
|
12638
|
+
member.name || member.email || member.id
|
|
12639
|
+
)))))) : /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ import_react22.default.createElement("div", { className: "space-y-3 pt-4 border-t border-white/5" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiGitBranch, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Estruturas Visuais"))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "bg-slate-900/60 p-2 rounded-xl border border-white/10 flex flex-col gap-2" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
12640
|
+
"button",
|
|
12545
12641
|
{
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
|
|
12553
|
-
|
|
12642
|
+
type: "button",
|
|
12643
|
+
onClick: () => {
|
|
12644
|
+
if (setQuestTreeMode) {
|
|
12645
|
+
const convertPersistedTree = (storedTree) => {
|
|
12646
|
+
if (!storedTree) return null;
|
|
12647
|
+
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
12648
|
+
const nodeId = storedTree.node_id;
|
|
12649
|
+
if (!nodeId) return null;
|
|
12650
|
+
const foundNode = availableNodes.find((n) => String(n.id) === String(nodeId)) || (String(nodeId) === String(node == null ? void 0 : node.id) ? node : null);
|
|
12651
|
+
return {
|
|
12652
|
+
node: foundNode ? { id: foundNode.id, name: foundNode.raw_title || foundNode.name } : { id: nodeId, name: `Node ${nodeId}` },
|
|
12653
|
+
relationship: storedTree.relationship || {},
|
|
12654
|
+
children: (storedTree.children || []).map(convertPersistedTree).filter(Boolean)
|
|
12655
|
+
};
|
|
12656
|
+
};
|
|
12657
|
+
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" };
|
|
12658
|
+
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
12659
|
+
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
12660
|
+
setQuestTreeMode((prev) => ({
|
|
12661
|
+
...prev,
|
|
12662
|
+
isActive: true,
|
|
12663
|
+
isAddingNodes: true,
|
|
12664
|
+
questNodeId: node == null ? void 0 : node.id,
|
|
12665
|
+
questNodeName: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name),
|
|
12666
|
+
tree: existingTree,
|
|
12667
|
+
abstraction_tree: existingAbstractionTree,
|
|
12668
|
+
selectedParentId: rootNode.id
|
|
12669
|
+
}));
|
|
12554
12670
|
}
|
|
12555
12671
|
},
|
|
12556
|
-
|
|
12557
|
-
|
|
12558
|
-
|
|
12559
|
-
|
|
12560
|
-
|
|
12561
|
-
|
|
12562
|
-
|
|
12563
|
-
|
|
12564
|
-
|
|
12672
|
+
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" : ""}`
|
|
12673
|
+
},
|
|
12674
|
+
/* @__PURE__ */ import_react22.default.createElement(import_fi20.FiGitBranch, { className: "text-indigo-400" }),
|
|
12675
|
+
" Configurar \xC1rvores"
|
|
12676
|
+
), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
12677
|
+
"button",
|
|
12678
|
+
{
|
|
12679
|
+
type: "button",
|
|
12680
|
+
onClick: () => {
|
|
12681
|
+
if (handleRenderQuestTree) handleRenderQuestTree(node);
|
|
12682
|
+
},
|
|
12683
|
+
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"}`
|
|
12684
|
+
},
|
|
12685
|
+
"Renderizar Horizontal"
|
|
12686
|
+
), /* @__PURE__ */ import_react22.default.createElement(
|
|
12687
|
+
"button",
|
|
12688
|
+
{
|
|
12689
|
+
type: "button",
|
|
12690
|
+
onClick: () => {
|
|
12691
|
+
if (handleRenderQuestAbstractionTree) handleRenderQuestAbstractionTree(node);
|
|
12692
|
+
},
|
|
12693
|
+
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"}`
|
|
12694
|
+
},
|
|
12695
|
+
"Renderizar Vertical"
|
|
12696
|
+
)))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-4 border-t border-white/5" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, docError ? /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(
|
|
12697
|
+
"button",
|
|
12698
|
+
{
|
|
12699
|
+
type: "button",
|
|
12700
|
+
onClick: handleCreateGoogleDoc,
|
|
12701
|
+
disabled: isLoadingDocs,
|
|
12702
|
+
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
12703
|
+
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
12704
|
+
},
|
|
12705
|
+
isLoadingDocs ? /* @__PURE__ */ import_react22.default.createElement(import_ai4.AiOutlineLoading3Quarters, { className: "animate-spin", size: 18 }) : /* @__PURE__ */ import_react22.default.createElement(GoogleDocsIcon_default, { size: 18, className: "group-hover:scale-110 transition-transform" })
|
|
12706
|
+
)), canEdit && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiPlus, { size: 14 }), " Adicionar"))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "space-y-1.5 relative pt-4 border-t border-white/5" }, /* @__PURE__ */ import_react22.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiBookOpen, { size: 14 })), canEdit && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiEdit2, { size: 14 }))), canEdit && !description && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "space-y-1.5 pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ import_react22.default.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ import_react22.default.createElement(
|
|
12565
12707
|
"input",
|
|
12566
12708
|
{
|
|
12567
12709
|
type: "text",
|
|
@@ -12570,7 +12712,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12570
12712
|
readOnly: !canEdit,
|
|
12571
12713
|
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"}`
|
|
12572
12714
|
}
|
|
12573
|
-
), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ import_react22.default.createElement("
|
|
12715
|
+
), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ import_react22.default.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ import_react22.default.createElement(
|
|
12574
12716
|
"button",
|
|
12575
12717
|
{
|
|
12576
12718
|
type: "button",
|
|
@@ -12784,83 +12926,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12784
12926
|
/* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }), s),
|
|
12785
12927
|
isDisabled && /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiRepeat, { className: "text-amber-400/60 rotate-180", size: 12 })
|
|
12786
12928
|
);
|
|
12787
|
-
}))))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "
|
|
12788
|
-
"button",
|
|
12789
|
-
{
|
|
12790
|
-
type: "button",
|
|
12791
|
-
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
12792
|
-
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"
|
|
12793
|
-
},
|
|
12794
|
-
/* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
12795
|
-
/* @__PURE__ */ import_react22.default.createElement(import_fi20.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
12796
|
-
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12797
|
-
setIsAssigneeDropdownOpen(false);
|
|
12798
|
-
setAssigneeSearchQuery("");
|
|
12799
|
-
} }), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react22.default.createElement(
|
|
12800
|
-
"input",
|
|
12801
|
-
{
|
|
12802
|
-
type: "text",
|
|
12803
|
-
autoFocus: true,
|
|
12804
|
-
placeholder: "Buscar membro...",
|
|
12805
|
-
value: assigneeSearchQuery,
|
|
12806
|
-
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
12807
|
-
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
12808
|
-
onClick: (e) => e.stopPropagation()
|
|
12809
|
-
}
|
|
12810
|
-
)), /* @__PURE__ */ import_react22.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
12811
|
-
"li",
|
|
12812
|
-
{
|
|
12813
|
-
onClick: () => {
|
|
12814
|
-
setAssigneeId("");
|
|
12815
|
-
const newTimeline = [...timeline, createTimelineEntry(
|
|
12816
|
-
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12817
|
-
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
12818
|
-
"status_changed"
|
|
12819
|
-
)];
|
|
12820
|
-
setTimeline(newTimeline);
|
|
12821
|
-
setHasUnsavedChanges(true);
|
|
12822
|
-
setIsAssigneeDropdownOpen(false);
|
|
12823
|
-
setAssigneeSearchQuery("");
|
|
12824
|
-
},
|
|
12825
|
-
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"}`
|
|
12826
|
-
},
|
|
12827
|
-
"Nenhum"
|
|
12828
|
-
), isAssigneeUndefined && /* @__PURE__ */ import_react22.default.createElement(
|
|
12829
|
-
"li",
|
|
12830
|
-
{
|
|
12831
|
-
onClick: () => {
|
|
12832
|
-
setIsAssigneeDropdownOpen(false);
|
|
12833
|
-
setAssigneeSearchQuery("");
|
|
12834
|
-
},
|
|
12835
|
-
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
12836
|
-
},
|
|
12837
|
-
"Undefined (Removido)"
|
|
12838
|
-
), viewMembers.filter((member) => {
|
|
12839
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
12840
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12841
|
-
}).map((member) => /* @__PURE__ */ import_react22.default.createElement(
|
|
12842
|
-
"li",
|
|
12843
|
-
{
|
|
12844
|
-
key: member.id,
|
|
12845
|
-
onClick: () => {
|
|
12846
|
-
setAssigneeId(member.id);
|
|
12847
|
-
const newTimeline = [...timeline, createTimelineEntry(
|
|
12848
|
-
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
12849
|
-
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
12850
|
-
"status_changed"
|
|
12851
|
-
)];
|
|
12852
|
-
setTimeline(newTimeline);
|
|
12853
|
-
setHasUnsavedChanges(true);
|
|
12854
|
-
setIsAssigneeDropdownOpen(false);
|
|
12855
|
-
setAssigneeSearchQuery("");
|
|
12856
|
-
},
|
|
12857
|
-
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"}`
|
|
12858
|
-
},
|
|
12859
|
-
member.name || member.email || member.id
|
|
12860
|
-
)), viewMembers.filter((member) => {
|
|
12861
|
-
const search = assigneeSearchQuery.toLowerCase();
|
|
12862
|
-
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
12863
|
-
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react22.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ import_react22.default.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ import_react22.default.createElement(
|
|
12929
|
+
}))))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ import_react22.default.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ import_react22.default.createElement(
|
|
12864
12930
|
"button",
|
|
12865
12931
|
{
|
|
12866
12932
|
type: "button",
|
|
@@ -12948,7 +13014,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12948
13014
|
onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
|
|
12949
13015
|
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"
|
|
12950
13016
|
},
|
|
12951
|
-
/* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ import_react22.default.createElement("span", { className: "text-slate-200 font-medium" }, ((
|
|
13017
|
+
/* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiUser, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ import_react22.default.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...")),
|
|
12952
13018
|
/* @__PURE__ */ import_react22.default.createElement(import_fi20.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
|
|
12953
13019
|
), isReturnDropdownOpen && /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
12954
13020
|
setIsReturnDropdownOpen(false);
|
|
@@ -12992,68 +13058,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
12992
13058
|
},
|
|
12993
13059
|
/* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
|
|
12994
13060
|
"Retornar para Opera\xE7\xE3o"
|
|
12995
|
-
))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "
|
|
12996
|
-
"button",
|
|
12997
|
-
{
|
|
12998
|
-
type: "button",
|
|
12999
|
-
onClick: () => {
|
|
13000
|
-
if (setQuestTreeMode) {
|
|
13001
|
-
const convertPersistedTree = (storedTree) => {
|
|
13002
|
-
if (!storedTree) return null;
|
|
13003
|
-
if (storedTree.node || storedTree.is_section) return storedTree;
|
|
13004
|
-
const nodeId = storedTree.node_id;
|
|
13005
|
-
if (!nodeId) return null;
|
|
13006
|
-
const foundNode = availableNodes.find((n) => String(n.id) === String(nodeId)) || (String(nodeId) === String(node == null ? void 0 : node.id) ? node : null);
|
|
13007
|
-
return {
|
|
13008
|
-
node: foundNode ? { id: foundNode.id, name: foundNode.raw_title || foundNode.name } : { id: nodeId, name: `Node ${nodeId}` },
|
|
13009
|
-
relationship: storedTree.relationship || {},
|
|
13010
|
-
children: (storedTree.children || []).map(convertPersistedTree).filter(Boolean)
|
|
13011
|
-
};
|
|
13012
|
-
};
|
|
13013
|
-
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" };
|
|
13014
|
-
const existingTree = (node == null ? void 0 : node.quest_tree) ? convertPersistedTree(node.quest_tree) : { node: rootNode, children: [] };
|
|
13015
|
-
const existingAbstractionTree = (node == null ? void 0 : node.quest_abstraction_tree) ? convertPersistedTree(node.quest_abstraction_tree) : { node: rootNode, children: [] };
|
|
13016
|
-
setQuestTreeMode((prev) => ({
|
|
13017
|
-
...prev,
|
|
13018
|
-
isActive: true,
|
|
13019
|
-
isAddingNodes: true,
|
|
13020
|
-
questNodeId: node == null ? void 0 : node.id,
|
|
13021
|
-
questNodeName: (node == null ? void 0 : node.raw_title) || (node == null ? void 0 : node.name),
|
|
13022
|
-
tree: existingTree,
|
|
13023
|
-
abstraction_tree: existingAbstractionTree,
|
|
13024
|
-
selectedParentId: rootNode.id
|
|
13025
|
-
}));
|
|
13026
|
-
}
|
|
13027
|
-
},
|
|
13028
|
-
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" : ""}`
|
|
13029
|
-
},
|
|
13030
|
-
/* @__PURE__ */ import_react22.default.createElement(import_fi20.FiGitBranch, { className: "text-indigo-400" }),
|
|
13031
|
-
" Configurar \xC1rvores"
|
|
13032
|
-
), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
13033
|
-
"button",
|
|
13034
|
-
{
|
|
13035
|
-
type: "button",
|
|
13036
|
-
onClick: () => {
|
|
13037
|
-
if (handleRenderQuestTree) {
|
|
13038
|
-
handleRenderQuestTree(node);
|
|
13039
|
-
}
|
|
13040
|
-
},
|
|
13041
|
-
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"}`
|
|
13042
|
-
},
|
|
13043
|
-
"Renderizar Horizontal"
|
|
13044
|
-
), /* @__PURE__ */ import_react22.default.createElement(
|
|
13045
|
-
"button",
|
|
13046
|
-
{
|
|
13047
|
-
type: "button",
|
|
13048
|
-
onClick: () => {
|
|
13049
|
-
if (handleRenderQuestAbstractionTree) {
|
|
13050
|
-
handleRenderQuestAbstractionTree(node);
|
|
13051
|
-
}
|
|
13052
|
-
},
|
|
13053
|
-
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"}`
|
|
13054
|
-
},
|
|
13055
|
-
"Renderizar Vertical"
|
|
13056
|
-
)))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiLink, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ import_react22.default.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) => {
|
|
13061
|
+
))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react22.default.createElement(import_fi20.FiLink, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ import_react22.default.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) => {
|
|
13057
13062
|
const depNode = availableNodes.find((n) => String(n.id) === String(depId));
|
|
13058
13063
|
if (!depNode) return null;
|
|
13059
13064
|
const isDone = depNode.status === "Done";
|
|
@@ -13109,36 +13114,7 @@ ${noteText}` : noteText : entry.notes,
|
|
|
13109
13114
|
},
|
|
13110
13115
|
/* @__PURE__ */ import_react22.default.createElement("span", { className: "truncate" }, q.raw_title || q.name),
|
|
13111
13116
|
/* @__PURE__ */ import_react22.default.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")
|
|
13112
|
-
)) : /* @__PURE__ */ import_react22.default.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiRepeat, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "pt-
|
|
13113
|
-
"p",
|
|
13114
|
-
{
|
|
13115
|
-
className: "text-[10px] text-red-400 bg-red-400/10 px-2 py-1 rounded border border-red-400/20 max-w-[200px]",
|
|
13116
|
-
title: docError
|
|
13117
|
-
},
|
|
13118
|
-
docError.length > 50 ? docError.substring(0, 47) + "..." : docError
|
|
13119
|
-
) : /* @__PURE__ */ import_react22.default.createElement(
|
|
13120
|
-
"button",
|
|
13121
|
-
{
|
|
13122
|
-
type: "button",
|
|
13123
|
-
onClick: handleCreateGoogleDoc,
|
|
13124
|
-
disabled: isLoadingDocs,
|
|
13125
|
-
className: "flex items-center justify-center text-slate-300 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
|
|
13126
|
-
title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
|
|
13127
|
-
},
|
|
13128
|
-
isLoadingDocs ? /* @__PURE__ */ import_react22.default.createElement(
|
|
13129
|
-
import_ai4.AiOutlineLoading3Quarters,
|
|
13130
|
-
{
|
|
13131
|
-
className: "animate-spin",
|
|
13132
|
-
size: 18
|
|
13133
|
-
}
|
|
13134
|
-
) : /* @__PURE__ */ import_react22.default.createElement(
|
|
13135
|
-
GoogleDocsIcon_default,
|
|
13136
|
-
{
|
|
13137
|
-
size: 18,
|
|
13138
|
-
className: "group-hover:scale-110 transition-transform"
|
|
13139
|
-
}
|
|
13140
|
-
)
|
|
13141
|
-
)), canEdit && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiPlus, { size: 14 }), " Adicionar"))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ import_react22.default.createElement(
|
|
13117
|
+
)) : /* @__PURE__ */ import_react22.default.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(import_fi20.FiRepeat, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ import_react22.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ import_react22.default.createElement(
|
|
13142
13118
|
"button",
|
|
13143
13119
|
{
|
|
13144
13120
|
type: "button",
|
|
@@ -15637,6 +15613,9 @@ function XViewScene({
|
|
|
15637
15613
|
for (const parentFileId in allParentData) {
|
|
15638
15614
|
if (allParentData.hasOwnProperty(parentFileId)) {
|
|
15639
15615
|
const parentFile = allParentData[parentFileId];
|
|
15616
|
+
const parentDbInfo = parentDbsArray.find(
|
|
15617
|
+
(db) => String(db.db_id) === String(parentFileId)
|
|
15618
|
+
);
|
|
15640
15619
|
const isCurrentView = String(parentFileId) === String(sceneConfigId);
|
|
15641
15620
|
const ownerId2 = (parentDbInfo == null ? void 0 : parentDbInfo.owner_id) || (isCurrentView ? viewParams == null ? void 0 : viewParams.owner_id : null);
|
|
15642
15621
|
const datasetName = isCurrentView ? "Quests Internas (View)" : parentFile.dataset_name || `Dataset #${parentFileId.substring(0, 6)}`;
|