@lv-x-software-house/x_view 1.2.6-dev.66 → 1.2.6-dev.68
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 +101 -35
- package/dist/index.mjs +101 -35
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3968,6 +3968,8 @@ function XViewSidebar({
|
|
|
3968
3968
|
onActivateReshapeLens = () => {
|
|
3969
3969
|
},
|
|
3970
3970
|
view_google_folder_id,
|
|
3971
|
+
view_google_folder_name,
|
|
3972
|
+
open_google_picker_action,
|
|
3971
3973
|
onSaveConfig = () => {
|
|
3972
3974
|
}
|
|
3973
3975
|
}) {
|
|
@@ -3990,11 +3992,16 @@ function XViewSidebar({
|
|
|
3990
3992
|
const [isTypeDropdownOpen, setIsTypeDropdownOpen] = (0, import_react3.useState)(false);
|
|
3991
3993
|
const [highlightedTypeIndex, setHighlightedTypeIndex] = (0, import_react3.useState)(-1);
|
|
3992
3994
|
const [folderId, setFolderId] = (0, import_react3.useState)(view_google_folder_id || "");
|
|
3995
|
+
const [folderName, setFolderName] = (0, import_react3.useState)(view_google_folder_name || "");
|
|
3996
|
+
const [isPickingGoogleFolder, setIsPickingGoogleFolder] = (0, import_react3.useState)(false);
|
|
3993
3997
|
(0, import_react3.useEffect)(() => {
|
|
3994
3998
|
if (view_google_folder_id !== void 0) {
|
|
3995
3999
|
setFolderId(view_google_folder_id || "");
|
|
3996
4000
|
}
|
|
3997
|
-
|
|
4001
|
+
if (view_google_folder_name !== void 0) {
|
|
4002
|
+
setFolderName(view_google_folder_name || "");
|
|
4003
|
+
}
|
|
4004
|
+
}, [view_google_folder_id, view_google_folder_name]);
|
|
3998
4005
|
const containerRef = (0, import_react3.useRef)(null);
|
|
3999
4006
|
const inputRef = (0, import_react3.useRef)(null);
|
|
4000
4007
|
const filterMenuRef = (0, import_react3.useRef)(null);
|
|
@@ -4700,20 +4707,45 @@ function XViewSidebar({
|
|
|
4700
4707
|
className: buttonBaseClass
|
|
4701
4708
|
},
|
|
4702
4709
|
"Gerenciar Milestones"
|
|
4703
|
-
)), userRole === "owner" && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ import_react3.default.createElement("section", { className: "space-y-3" }, /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Google Drive"), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-
|
|
4704
|
-
"
|
|
4710
|
+
)), userRole === "owner" && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ import_react3.default.createElement("section", { className: "space-y-3" }, /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Google Drive"), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex items-center justify-between bg-slate-900/50 p-2 rounded-md border border-white/5" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex flex-col truncate" }, /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold" }, "Pasta Atual"), /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-xs text-indigo-200 truncate", title: folderId ? folderId : "Padr\xE3o do Criador" }, folderName ? folderName : folderId ? folderId : "Padr\xE3o do Criador")), folderId && /* @__PURE__ */ import_react3.default.createElement(
|
|
4711
|
+
"button",
|
|
4705
4712
|
{
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4713
|
+
title: "Remover v\xEDnculo da pasta",
|
|
4714
|
+
onClick: () => {
|
|
4715
|
+
setFolderId("");
|
|
4716
|
+
setFolderName("");
|
|
4717
|
+
onSaveConfig({ view_google_folder_id: "", view_google_folder_name: "" });
|
|
4718
|
+
},
|
|
4719
|
+
className: "p-1 hover:bg-red-500/20 text-slate-400 hover:text-red-400 rounded transition-colors"
|
|
4720
|
+
},
|
|
4721
|
+
/* @__PURE__ */ import_react3.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-4 w-4", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react3.default.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" }))
|
|
4722
|
+
)), /* @__PURE__ */ import_react3.default.createElement(
|
|
4723
|
+
"button",
|
|
4724
|
+
{
|
|
4725
|
+
onClick: async () => {
|
|
4726
|
+
if (!open_google_picker_action) return;
|
|
4727
|
+
setIsPickingGoogleFolder(true);
|
|
4728
|
+
try {
|
|
4729
|
+
const result = await open_google_picker_action();
|
|
4730
|
+
if (result && result.folderId) {
|
|
4731
|
+
setFolderId(result.folderId);
|
|
4732
|
+
setFolderName(result.folderName || "");
|
|
4733
|
+
onSaveConfig({
|
|
4734
|
+
view_google_folder_id: result.folderId,
|
|
4735
|
+
view_google_folder_name: result.folderName || ""
|
|
4736
|
+
});
|
|
4737
|
+
}
|
|
4738
|
+
} catch (e) {
|
|
4739
|
+
console.error("Erro ao selecionar pasta Google Drive", e);
|
|
4740
|
+
alert("Erro ao abrir Picker. Verifique o console.");
|
|
4741
|
+
} finally {
|
|
4742
|
+
setIsPickingGoogleFolder(false);
|
|
4712
4743
|
}
|
|
4713
4744
|
},
|
|
4714
|
-
|
|
4715
|
-
className: "w-full
|
|
4716
|
-
}
|
|
4745
|
+
disabled: isPickingGoogleFolder,
|
|
4746
|
+
className: "w-full px-3 py-2 rounded-md bg-indigo-600/20 hover:bg-indigo-600/40 border border-indigo-500/50 text-xs text-indigo-100 transition-colors flex items-center justify-center gap-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"
|
|
4747
|
+
},
|
|
4748
|
+
isPickingGoogleFolder ? /* @__PURE__ */ import_react3.default.createElement("svg", { className: "animate-spin h-4 w-4 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react3.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react3.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })) : "Selecionar Pasta no Drive"
|
|
4717
4749
|
), /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[9px] text-slate-500 italic" }, "Documentos criados nesta View ser\xE3o salvos nesta pasta."))))),
|
|
4718
4750
|
/* @__PURE__ */ import_react3.default.createElement("div", { className: "px-4 py-3 border-t border-white/10 bg-slate-900/30" }, /* @__PURE__ */ import_react3.default.createElement("section", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Navega\xE7\xE3o"), ability.can("update", "Scene") && /* @__PURE__ */ import_react3.default.createElement(
|
|
4719
4751
|
"button",
|
|
@@ -14896,6 +14928,18 @@ function MilestoneManager({
|
|
|
14896
14928
|
// src/XViewScene.jsx
|
|
14897
14929
|
var import_short_uuid2 = __toESM(require("short-uuid"));
|
|
14898
14930
|
var secretKey = process.env.NEXT_PUBLIC_CRYPTO_KEY;
|
|
14931
|
+
var encryptData = (data) => {
|
|
14932
|
+
try {
|
|
14933
|
+
const encrypted = import_crypto_js.default.AES.encrypt(
|
|
14934
|
+
JSON.stringify(data),
|
|
14935
|
+
secretKey
|
|
14936
|
+
).toString().replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
14937
|
+
return encrypted;
|
|
14938
|
+
} catch (error) {
|
|
14939
|
+
console.error("Falha ao encriptar os dados:", error);
|
|
14940
|
+
return null;
|
|
14941
|
+
}
|
|
14942
|
+
};
|
|
14899
14943
|
var decryptData = (encryptedText) => {
|
|
14900
14944
|
try {
|
|
14901
14945
|
let base64Text = encryptedText.replace(/-/g, "+").replace(/_/g, "/");
|
|
@@ -14973,9 +15017,10 @@ function XViewScene({
|
|
|
14973
15017
|
delete_file_action,
|
|
14974
15018
|
check_user_permission,
|
|
14975
15019
|
get_view_members,
|
|
14976
|
-
create_google_doc_action
|
|
15020
|
+
create_google_doc_action,
|
|
15021
|
+
open_google_picker_action
|
|
14977
15022
|
}) {
|
|
14978
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o
|
|
15023
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
14979
15024
|
const { data: session, status } = (0, import_react33.useSession)();
|
|
14980
15025
|
const router = (0, import_navigation.useRouter)();
|
|
14981
15026
|
const searchParams = (0, import_navigation.useSearchParams)();
|
|
@@ -15225,7 +15270,14 @@ function XViewScene({
|
|
|
15225
15270
|
const handleNavigateBack = (0, import_react32.useCallback)(() => {
|
|
15226
15271
|
const type = viewParams == null ? void 0 : viewParams.type;
|
|
15227
15272
|
const tab = type === "database" ? "datasets" : "views";
|
|
15228
|
-
|
|
15273
|
+
const targetUrl = `/dashboard/xview?tab=${tab}`;
|
|
15274
|
+
console.log("X-View: Navegando para o Dashboard", { type, tab, targetUrl });
|
|
15275
|
+
try {
|
|
15276
|
+
router.push(targetUrl);
|
|
15277
|
+
} catch (e) {
|
|
15278
|
+
console.warn("X-View: router.push falhou, tentando window.location", e);
|
|
15279
|
+
window.location.href = targetUrl;
|
|
15280
|
+
}
|
|
15229
15281
|
}, [router, viewParams]);
|
|
15230
15282
|
const handleConfirmImport = (0, import_react32.useCallback)(
|
|
15231
15283
|
async (importPayload) => {
|
|
@@ -15362,12 +15414,25 @@ function XViewScene({
|
|
|
15362
15414
|
sceneDataRef.current = updatedData;
|
|
15363
15415
|
try {
|
|
15364
15416
|
await save_view_data(sceneSaveUrl, updatedData);
|
|
15417
|
+
if (viewParams) {
|
|
15418
|
+
const newDataToEncrypt = {
|
|
15419
|
+
...viewParams,
|
|
15420
|
+
...newConfig
|
|
15421
|
+
};
|
|
15422
|
+
const newEncrypted = encryptData(newDataToEncrypt);
|
|
15423
|
+
if (newEncrypted) {
|
|
15424
|
+
const currentUrl = window.location.pathname;
|
|
15425
|
+
const newUrl = currentUrl.replace(encryptedConfig, newEncrypted);
|
|
15426
|
+
window.history.replaceState(null, "", newUrl);
|
|
15427
|
+
console.log("X-View Config: URL atualizada para persist\xEAncia.");
|
|
15428
|
+
}
|
|
15429
|
+
}
|
|
15365
15430
|
setSceneVersion((v) => v + 1);
|
|
15366
15431
|
} catch (error) {
|
|
15367
15432
|
console.error("Erro ao salvar configura\xE7\xE3o da View:", error);
|
|
15368
15433
|
}
|
|
15369
15434
|
},
|
|
15370
|
-
[save_view_data, sceneSaveUrl]
|
|
15435
|
+
[save_view_data, sceneSaveUrl, viewParams, encryptedConfig]
|
|
15371
15436
|
);
|
|
15372
15437
|
const handleOpenImageViewer = (images, startIndex) => {
|
|
15373
15438
|
setImageViewer({ visible: true, images, startIndex });
|
|
@@ -19672,15 +19737,16 @@ function XViewScene({
|
|
|
19672
19737
|
onOpenBoards: handleOpenBoards,
|
|
19673
19738
|
viewType: viewParams == null ? void 0 : viewParams.type,
|
|
19674
19739
|
viewName: viewParams == null ? void 0 : viewParams.name,
|
|
19675
|
-
|
|
19740
|
+
milestones: (viewParams == null ? void 0 : viewParams.milestones) || [],
|
|
19741
|
+
onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true),
|
|
19742
|
+
view_google_folder_id: viewParams == null ? void 0 : viewParams.view_google_folder_id,
|
|
19743
|
+
view_google_folder_name: viewParams == null ? void 0 : viewParams.view_google_folder_name,
|
|
19744
|
+
open_google_picker_action,
|
|
19745
|
+
onSaveConfig: handleSaveConfig,
|
|
19676
19746
|
isOpen: isSidebarOpen,
|
|
19677
19747
|
onToggle: setIsSidebarOpen,
|
|
19678
19748
|
userRole: userPermissionRole,
|
|
19679
|
-
viewMembers
|
|
19680
|
-
milestones: ((_c = sceneDataRef.current) == null ? void 0 : _c.milestones) || [],
|
|
19681
|
-
onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true),
|
|
19682
|
-
view_google_folder_id: (_d = sceneDataRef.current) == null ? void 0 : _d.view_google_folder_id,
|
|
19683
|
-
onSaveConfig: handleSaveConfig
|
|
19749
|
+
viewMembers
|
|
19684
19750
|
}
|
|
19685
19751
|
),
|
|
19686
19752
|
creationMode.isActive && /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -19704,8 +19770,8 @@ function XViewScene({
|
|
|
19704
19770
|
},
|
|
19705
19771
|
refEl: formRef,
|
|
19706
19772
|
existingTypes: existingNodeTypes,
|
|
19707
|
-
initialColor: (
|
|
19708
|
-
sourceTypes: (
|
|
19773
|
+
initialColor: (_c = creationMode.sourceNodeData) == null ? void 0 : _c.color,
|
|
19774
|
+
sourceTypes: (_d = creationMode.sourceNodeData) == null ? void 0 : _d.type,
|
|
19709
19775
|
onIntensityChange: handleGhostNodeIntensityChange,
|
|
19710
19776
|
onUploadFile: upload_file_action,
|
|
19711
19777
|
availableDatasets,
|
|
@@ -19714,7 +19780,7 @@ function XViewScene({
|
|
|
19714
19780
|
availableNodes: allAvailableNodes,
|
|
19715
19781
|
availableAncestries: allAvailableAncestries,
|
|
19716
19782
|
create_google_doc_action,
|
|
19717
|
-
view_google_folder_id: (
|
|
19783
|
+
view_google_folder_id: (_e = sceneDataRef.current) == null ? void 0 : _e.view_google_folder_id
|
|
19718
19784
|
}
|
|
19719
19785
|
),
|
|
19720
19786
|
versionMode.isActive && /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -19736,8 +19802,8 @@ function XViewScene({
|
|
|
19736
19802
|
transition: "opacity 200ms ease-out"
|
|
19737
19803
|
},
|
|
19738
19804
|
refEl: formRef,
|
|
19739
|
-
fixedType: (
|
|
19740
|
-
fixedColor: (
|
|
19805
|
+
fixedType: (_f = versionMode.sourceNodeData) == null ? void 0 : _f.type,
|
|
19806
|
+
fixedColor: (_g = versionMode.sourceNodeData) == null ? void 0 : _g.color,
|
|
19741
19807
|
onUploadFile: upload_file_action,
|
|
19742
19808
|
availableNodes: allAvailableNodes,
|
|
19743
19809
|
availableAncestries: allAvailableAncestries
|
|
@@ -19765,12 +19831,12 @@ function XViewScene({
|
|
|
19765
19831
|
availableNodes: allAvailableNodes,
|
|
19766
19832
|
availableAncestries: allAvailableAncestries,
|
|
19767
19833
|
viewName: viewParams == null ? void 0 : viewParams.name,
|
|
19768
|
-
questCounter: ((
|
|
19834
|
+
questCounter: ((_h = sceneDataRef.current) == null ? void 0 : _h.quest_counter) || 1,
|
|
19769
19835
|
viewMembers,
|
|
19770
|
-
milestones: ((
|
|
19836
|
+
milestones: ((_i = sceneDataRef.current) == null ? void 0 : _i.milestones) || [],
|
|
19771
19837
|
onUpdateMilestones: handleUpdateMilestones,
|
|
19772
19838
|
create_google_doc_action,
|
|
19773
|
-
view_google_folder_id: (
|
|
19839
|
+
view_google_folder_id: (_j = sceneDataRef.current) == null ? void 0 : _j.view_google_folder_id
|
|
19774
19840
|
}
|
|
19775
19841
|
),
|
|
19776
19842
|
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -19904,10 +19970,10 @@ function XViewScene({
|
|
|
19904
19970
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
19905
19971
|
viewMembers,
|
|
19906
19972
|
currentUser: session == null ? void 0 : session.user,
|
|
19907
|
-
milestones: ((
|
|
19973
|
+
milestones: ((_k = sceneDataRef.current) == null ? void 0 : _k.milestones) || [],
|
|
19908
19974
|
onUpdateMilestones: handleUpdateMilestones,
|
|
19909
19975
|
create_google_doc_action,
|
|
19910
|
-
view_google_folder_id: (
|
|
19976
|
+
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
19911
19977
|
}
|
|
19912
19978
|
),
|
|
19913
19979
|
detailsNode && !detailsNode.is_quest && /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -19941,7 +20007,7 @@ function XViewScene({
|
|
|
19941
20007
|
userRole: userPermissionRole,
|
|
19942
20008
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
19943
20009
|
create_google_doc_action,
|
|
19944
|
-
view_google_folder_id: (
|
|
20010
|
+
view_google_folder_id: (_m = sceneDataRef.current) == null ? void 0 : _m.view_google_folder_id
|
|
19945
20011
|
}
|
|
19946
20012
|
),
|
|
19947
20013
|
detailsLink && /* @__PURE__ */ import_react32.default.createElement(
|
|
@@ -20099,7 +20165,7 @@ function XViewScene({
|
|
|
20099
20165
|
{
|
|
20100
20166
|
isOpen: isMilestoneManagerOpen,
|
|
20101
20167
|
onClose: () => setIsMilestoneManagerOpen(false),
|
|
20102
|
-
milestones: ((
|
|
20168
|
+
milestones: ((_n = sceneDataRef.current) == null ? void 0 : _n.milestones) || [],
|
|
20103
20169
|
onUpdateMilestones: handleUpdateMilestones
|
|
20104
20170
|
}
|
|
20105
20171
|
),
|
|
@@ -20110,7 +20176,7 @@ function XViewScene({
|
|
|
20110
20176
|
onClose: () => setIsImportModalOpen(false),
|
|
20111
20177
|
onConfirm: handleConfirmImport,
|
|
20112
20178
|
session,
|
|
20113
|
-
parentDbs: ((
|
|
20179
|
+
parentDbs: ((_o = sceneDataRef.current) == null ? void 0 : _o.parent_dbs) || [],
|
|
20114
20180
|
onFetchAvailableFiles: import_parent_file_modal_get,
|
|
20115
20181
|
currentViewName: viewParams == null ? void 0 : viewParams.name,
|
|
20116
20182
|
currentAncestries: ancestryDataRef.current || []
|
package/dist/index.mjs
CHANGED
|
@@ -3929,6 +3929,8 @@ function XViewSidebar({
|
|
|
3929
3929
|
onActivateReshapeLens = () => {
|
|
3930
3930
|
},
|
|
3931
3931
|
view_google_folder_id,
|
|
3932
|
+
view_google_folder_name,
|
|
3933
|
+
open_google_picker_action,
|
|
3932
3934
|
onSaveConfig = () => {
|
|
3933
3935
|
}
|
|
3934
3936
|
}) {
|
|
@@ -3951,11 +3953,16 @@ function XViewSidebar({
|
|
|
3951
3953
|
const [isTypeDropdownOpen, setIsTypeDropdownOpen] = useState3(false);
|
|
3952
3954
|
const [highlightedTypeIndex, setHighlightedTypeIndex] = useState3(-1);
|
|
3953
3955
|
const [folderId, setFolderId] = useState3(view_google_folder_id || "");
|
|
3956
|
+
const [folderName, setFolderName] = useState3(view_google_folder_name || "");
|
|
3957
|
+
const [isPickingGoogleFolder, setIsPickingGoogleFolder] = useState3(false);
|
|
3954
3958
|
useEffect2(() => {
|
|
3955
3959
|
if (view_google_folder_id !== void 0) {
|
|
3956
3960
|
setFolderId(view_google_folder_id || "");
|
|
3957
3961
|
}
|
|
3958
|
-
|
|
3962
|
+
if (view_google_folder_name !== void 0) {
|
|
3963
|
+
setFolderName(view_google_folder_name || "");
|
|
3964
|
+
}
|
|
3965
|
+
}, [view_google_folder_id, view_google_folder_name]);
|
|
3959
3966
|
const containerRef = useRef2(null);
|
|
3960
3967
|
const inputRef = useRef2(null);
|
|
3961
3968
|
const filterMenuRef = useRef2(null);
|
|
@@ -4661,20 +4668,45 @@ function XViewSidebar({
|
|
|
4661
4668
|
className: buttonBaseClass
|
|
4662
4669
|
},
|
|
4663
4670
|
"Gerenciar Milestones"
|
|
4664
|
-
)), userRole === "owner" && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ React2.createElement("section", { className: "space-y-3" }, /* @__PURE__ */ React2.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Google Drive"), /* @__PURE__ */ React2.createElement("div", { className: "space-y-
|
|
4665
|
-
"
|
|
4671
|
+
)), userRole === "owner" && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ React2.createElement("section", { className: "space-y-3" }, /* @__PURE__ */ React2.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Google Drive"), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between bg-slate-900/50 p-2 rounded-md border border-white/5" }, /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col truncate" }, /* @__PURE__ */ React2.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold" }, "Pasta Atual"), /* @__PURE__ */ React2.createElement("span", { className: "text-xs text-indigo-200 truncate", title: folderId ? folderId : "Padr\xE3o do Criador" }, folderName ? folderName : folderId ? folderId : "Padr\xE3o do Criador")), folderId && /* @__PURE__ */ React2.createElement(
|
|
4672
|
+
"button",
|
|
4666
4673
|
{
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
|
|
4674
|
+
title: "Remover v\xEDnculo da pasta",
|
|
4675
|
+
onClick: () => {
|
|
4676
|
+
setFolderId("");
|
|
4677
|
+
setFolderName("");
|
|
4678
|
+
onSaveConfig({ view_google_folder_id: "", view_google_folder_name: "" });
|
|
4679
|
+
},
|
|
4680
|
+
className: "p-1 hover:bg-red-500/20 text-slate-400 hover:text-red-400 rounded transition-colors"
|
|
4681
|
+
},
|
|
4682
|
+
/* @__PURE__ */ React2.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-4 w-4", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" }))
|
|
4683
|
+
)), /* @__PURE__ */ React2.createElement(
|
|
4684
|
+
"button",
|
|
4685
|
+
{
|
|
4686
|
+
onClick: async () => {
|
|
4687
|
+
if (!open_google_picker_action) return;
|
|
4688
|
+
setIsPickingGoogleFolder(true);
|
|
4689
|
+
try {
|
|
4690
|
+
const result = await open_google_picker_action();
|
|
4691
|
+
if (result && result.folderId) {
|
|
4692
|
+
setFolderId(result.folderId);
|
|
4693
|
+
setFolderName(result.folderName || "");
|
|
4694
|
+
onSaveConfig({
|
|
4695
|
+
view_google_folder_id: result.folderId,
|
|
4696
|
+
view_google_folder_name: result.folderName || ""
|
|
4697
|
+
});
|
|
4698
|
+
}
|
|
4699
|
+
} catch (e) {
|
|
4700
|
+
console.error("Erro ao selecionar pasta Google Drive", e);
|
|
4701
|
+
alert("Erro ao abrir Picker. Verifique o console.");
|
|
4702
|
+
} finally {
|
|
4703
|
+
setIsPickingGoogleFolder(false);
|
|
4673
4704
|
}
|
|
4674
4705
|
},
|
|
4675
|
-
|
|
4676
|
-
className: "w-full
|
|
4677
|
-
}
|
|
4706
|
+
disabled: isPickingGoogleFolder,
|
|
4707
|
+
className: "w-full px-3 py-2 rounded-md bg-indigo-600/20 hover:bg-indigo-600/40 border border-indigo-500/50 text-xs text-indigo-100 transition-colors flex items-center justify-center gap-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"
|
|
4708
|
+
},
|
|
4709
|
+
isPickingGoogleFolder ? /* @__PURE__ */ React2.createElement("svg", { className: "animate-spin h-4 w-4 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React2.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })) : "Selecionar Pasta no Drive"
|
|
4678
4710
|
), /* @__PURE__ */ React2.createElement("p", { className: "text-[9px] text-slate-500 italic" }, "Documentos criados nesta View ser\xE3o salvos nesta pasta."))))),
|
|
4679
4711
|
/* @__PURE__ */ React2.createElement("div", { className: "px-4 py-3 border-t border-white/10 bg-slate-900/30" }, /* @__PURE__ */ React2.createElement("section", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Navega\xE7\xE3o"), ability.can("update", "Scene") && /* @__PURE__ */ React2.createElement(
|
|
4680
4712
|
"button",
|
|
@@ -14953,6 +14985,18 @@ function MilestoneManager({
|
|
|
14953
14985
|
// src/XViewScene.jsx
|
|
14954
14986
|
import short2 from "short-uuid";
|
|
14955
14987
|
var secretKey = process.env.NEXT_PUBLIC_CRYPTO_KEY;
|
|
14988
|
+
var encryptData = (data) => {
|
|
14989
|
+
try {
|
|
14990
|
+
const encrypted = CryptoJS.AES.encrypt(
|
|
14991
|
+
JSON.stringify(data),
|
|
14992
|
+
secretKey
|
|
14993
|
+
).toString().replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
14994
|
+
return encrypted;
|
|
14995
|
+
} catch (error) {
|
|
14996
|
+
console.error("Falha ao encriptar os dados:", error);
|
|
14997
|
+
return null;
|
|
14998
|
+
}
|
|
14999
|
+
};
|
|
14956
15000
|
var decryptData = (encryptedText) => {
|
|
14957
15001
|
try {
|
|
14958
15002
|
let base64Text = encryptedText.replace(/-/g, "+").replace(/_/g, "/");
|
|
@@ -15030,9 +15074,10 @@ function XViewScene({
|
|
|
15030
15074
|
delete_file_action,
|
|
15031
15075
|
check_user_permission,
|
|
15032
15076
|
get_view_members,
|
|
15033
|
-
create_google_doc_action
|
|
15077
|
+
create_google_doc_action,
|
|
15078
|
+
open_google_picker_action
|
|
15034
15079
|
}) {
|
|
15035
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o
|
|
15080
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
15036
15081
|
const { data: session, status } = useSession();
|
|
15037
15082
|
const router = useRouter();
|
|
15038
15083
|
const searchParams = useSearchParams();
|
|
@@ -15282,7 +15327,14 @@ function XViewScene({
|
|
|
15282
15327
|
const handleNavigateBack = useCallback6(() => {
|
|
15283
15328
|
const type = viewParams == null ? void 0 : viewParams.type;
|
|
15284
15329
|
const tab = type === "database" ? "datasets" : "views";
|
|
15285
|
-
|
|
15330
|
+
const targetUrl = `/dashboard/xview?tab=${tab}`;
|
|
15331
|
+
console.log("X-View: Navegando para o Dashboard", { type, tab, targetUrl });
|
|
15332
|
+
try {
|
|
15333
|
+
router.push(targetUrl);
|
|
15334
|
+
} catch (e) {
|
|
15335
|
+
console.warn("X-View: router.push falhou, tentando window.location", e);
|
|
15336
|
+
window.location.href = targetUrl;
|
|
15337
|
+
}
|
|
15286
15338
|
}, [router, viewParams]);
|
|
15287
15339
|
const handleConfirmImport = useCallback6(
|
|
15288
15340
|
async (importPayload) => {
|
|
@@ -15419,12 +15471,25 @@ function XViewScene({
|
|
|
15419
15471
|
sceneDataRef.current = updatedData;
|
|
15420
15472
|
try {
|
|
15421
15473
|
await save_view_data(sceneSaveUrl, updatedData);
|
|
15474
|
+
if (viewParams) {
|
|
15475
|
+
const newDataToEncrypt = {
|
|
15476
|
+
...viewParams,
|
|
15477
|
+
...newConfig
|
|
15478
|
+
};
|
|
15479
|
+
const newEncrypted = encryptData(newDataToEncrypt);
|
|
15480
|
+
if (newEncrypted) {
|
|
15481
|
+
const currentUrl = window.location.pathname;
|
|
15482
|
+
const newUrl = currentUrl.replace(encryptedConfig, newEncrypted);
|
|
15483
|
+
window.history.replaceState(null, "", newUrl);
|
|
15484
|
+
console.log("X-View Config: URL atualizada para persist\xEAncia.");
|
|
15485
|
+
}
|
|
15486
|
+
}
|
|
15422
15487
|
setSceneVersion((v) => v + 1);
|
|
15423
15488
|
} catch (error) {
|
|
15424
15489
|
console.error("Erro ao salvar configura\xE7\xE3o da View:", error);
|
|
15425
15490
|
}
|
|
15426
15491
|
},
|
|
15427
|
-
[save_view_data, sceneSaveUrl]
|
|
15492
|
+
[save_view_data, sceneSaveUrl, viewParams, encryptedConfig]
|
|
15428
15493
|
);
|
|
15429
15494
|
const handleOpenImageViewer = (images, startIndex) => {
|
|
15430
15495
|
setImageViewer({ visible: true, images, startIndex });
|
|
@@ -19729,15 +19794,16 @@ function XViewScene({
|
|
|
19729
19794
|
onOpenBoards: handleOpenBoards,
|
|
19730
19795
|
viewType: viewParams == null ? void 0 : viewParams.type,
|
|
19731
19796
|
viewName: viewParams == null ? void 0 : viewParams.name,
|
|
19732
|
-
|
|
19797
|
+
milestones: (viewParams == null ? void 0 : viewParams.milestones) || [],
|
|
19798
|
+
onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true),
|
|
19799
|
+
view_google_folder_id: viewParams == null ? void 0 : viewParams.view_google_folder_id,
|
|
19800
|
+
view_google_folder_name: viewParams == null ? void 0 : viewParams.view_google_folder_name,
|
|
19801
|
+
open_google_picker_action,
|
|
19802
|
+
onSaveConfig: handleSaveConfig,
|
|
19733
19803
|
isOpen: isSidebarOpen,
|
|
19734
19804
|
onToggle: setIsSidebarOpen,
|
|
19735
19805
|
userRole: userPermissionRole,
|
|
19736
|
-
viewMembers
|
|
19737
|
-
milestones: ((_c = sceneDataRef.current) == null ? void 0 : _c.milestones) || [],
|
|
19738
|
-
onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true),
|
|
19739
|
-
view_google_folder_id: (_d = sceneDataRef.current) == null ? void 0 : _d.view_google_folder_id,
|
|
19740
|
-
onSaveConfig: handleSaveConfig
|
|
19806
|
+
viewMembers
|
|
19741
19807
|
}
|
|
19742
19808
|
),
|
|
19743
19809
|
creationMode.isActive && /* @__PURE__ */ React31.createElement(
|
|
@@ -19761,8 +19827,8 @@ function XViewScene({
|
|
|
19761
19827
|
},
|
|
19762
19828
|
refEl: formRef,
|
|
19763
19829
|
existingTypes: existingNodeTypes,
|
|
19764
|
-
initialColor: (
|
|
19765
|
-
sourceTypes: (
|
|
19830
|
+
initialColor: (_c = creationMode.sourceNodeData) == null ? void 0 : _c.color,
|
|
19831
|
+
sourceTypes: (_d = creationMode.sourceNodeData) == null ? void 0 : _d.type,
|
|
19766
19832
|
onIntensityChange: handleGhostNodeIntensityChange,
|
|
19767
19833
|
onUploadFile: upload_file_action,
|
|
19768
19834
|
availableDatasets,
|
|
@@ -19771,7 +19837,7 @@ function XViewScene({
|
|
|
19771
19837
|
availableNodes: allAvailableNodes,
|
|
19772
19838
|
availableAncestries: allAvailableAncestries,
|
|
19773
19839
|
create_google_doc_action,
|
|
19774
|
-
view_google_folder_id: (
|
|
19840
|
+
view_google_folder_id: (_e = sceneDataRef.current) == null ? void 0 : _e.view_google_folder_id
|
|
19775
19841
|
}
|
|
19776
19842
|
),
|
|
19777
19843
|
versionMode.isActive && /* @__PURE__ */ React31.createElement(
|
|
@@ -19793,8 +19859,8 @@ function XViewScene({
|
|
|
19793
19859
|
transition: "opacity 200ms ease-out"
|
|
19794
19860
|
},
|
|
19795
19861
|
refEl: formRef,
|
|
19796
|
-
fixedType: (
|
|
19797
|
-
fixedColor: (
|
|
19862
|
+
fixedType: (_f = versionMode.sourceNodeData) == null ? void 0 : _f.type,
|
|
19863
|
+
fixedColor: (_g = versionMode.sourceNodeData) == null ? void 0 : _g.color,
|
|
19798
19864
|
onUploadFile: upload_file_action,
|
|
19799
19865
|
availableNodes: allAvailableNodes,
|
|
19800
19866
|
availableAncestries: allAvailableAncestries
|
|
@@ -19822,12 +19888,12 @@ function XViewScene({
|
|
|
19822
19888
|
availableNodes: allAvailableNodes,
|
|
19823
19889
|
availableAncestries: allAvailableAncestries,
|
|
19824
19890
|
viewName: viewParams == null ? void 0 : viewParams.name,
|
|
19825
|
-
questCounter: ((
|
|
19891
|
+
questCounter: ((_h = sceneDataRef.current) == null ? void 0 : _h.quest_counter) || 1,
|
|
19826
19892
|
viewMembers,
|
|
19827
|
-
milestones: ((
|
|
19893
|
+
milestones: ((_i = sceneDataRef.current) == null ? void 0 : _i.milestones) || [],
|
|
19828
19894
|
onUpdateMilestones: handleUpdateMilestones,
|
|
19829
19895
|
create_google_doc_action,
|
|
19830
|
-
view_google_folder_id: (
|
|
19896
|
+
view_google_folder_id: (_j = sceneDataRef.current) == null ? void 0 : _j.view_google_folder_id
|
|
19831
19897
|
}
|
|
19832
19898
|
),
|
|
19833
19899
|
readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React31.createElement(
|
|
@@ -19961,10 +20027,10 @@ function XViewScene({
|
|
|
19961
20027
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
19962
20028
|
viewMembers,
|
|
19963
20029
|
currentUser: session == null ? void 0 : session.user,
|
|
19964
|
-
milestones: ((
|
|
20030
|
+
milestones: ((_k = sceneDataRef.current) == null ? void 0 : _k.milestones) || [],
|
|
19965
20031
|
onUpdateMilestones: handleUpdateMilestones,
|
|
19966
20032
|
create_google_doc_action,
|
|
19967
|
-
view_google_folder_id: (
|
|
20033
|
+
view_google_folder_id: (_l = sceneDataRef.current) == null ? void 0 : _l.view_google_folder_id
|
|
19968
20034
|
}
|
|
19969
20035
|
),
|
|
19970
20036
|
detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
|
|
@@ -19998,7 +20064,7 @@ function XViewScene({
|
|
|
19998
20064
|
userRole: userPermissionRole,
|
|
19999
20065
|
currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
|
|
20000
20066
|
create_google_doc_action,
|
|
20001
|
-
view_google_folder_id: (
|
|
20067
|
+
view_google_folder_id: (_m = sceneDataRef.current) == null ? void 0 : _m.view_google_folder_id
|
|
20002
20068
|
}
|
|
20003
20069
|
),
|
|
20004
20070
|
detailsLink && /* @__PURE__ */ React31.createElement(
|
|
@@ -20156,7 +20222,7 @@ function XViewScene({
|
|
|
20156
20222
|
{
|
|
20157
20223
|
isOpen: isMilestoneManagerOpen,
|
|
20158
20224
|
onClose: () => setIsMilestoneManagerOpen(false),
|
|
20159
|
-
milestones: ((
|
|
20225
|
+
milestones: ((_n = sceneDataRef.current) == null ? void 0 : _n.milestones) || [],
|
|
20160
20226
|
onUpdateMilestones: handleUpdateMilestones
|
|
20161
20227
|
}
|
|
20162
20228
|
),
|
|
@@ -20167,7 +20233,7 @@ function XViewScene({
|
|
|
20167
20233
|
onClose: () => setIsImportModalOpen(false),
|
|
20168
20234
|
onConfirm: handleConfirmImport,
|
|
20169
20235
|
session,
|
|
20170
|
-
parentDbs: ((
|
|
20236
|
+
parentDbs: ((_o = sceneDataRef.current) == null ? void 0 : _o.parent_dbs) || [],
|
|
20171
20237
|
onFetchAvailableFiles: import_parent_file_modal_get,
|
|
20172
20238
|
currentViewName: viewParams == null ? void 0 : viewParams.name,
|
|
20173
20239
|
currentAncestries: ancestryDataRef.current || []
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lv-x-software-house/x_view",
|
|
3
|
-
"version": "1.2.6-dev.
|
|
3
|
+
"version": "1.2.6-dev.68",
|
|
4
4
|
"description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
|
|
5
5
|
"author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|