@edifice.io/react 2.6.7-develop-integration.20261005091442 → 2.6.7-develop-pedago.20261005162423
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/components/Layout/Layout.js +4 -3
- package/dist/components/Tree/utilities/tree.js +1 -21
- package/dist/homepage.js +2 -1
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/useBackground/useBackground.d.ts +1 -0
- package/dist/hooks/useBackground/useBackground.js +2 -0
- package/dist/index.js +182 -194
- package/dist/modules/editor/components/EditorToolbar/EditorToolbar.Typography.js +3 -3
- package/dist/modules/homepage/components/Communities/Communities.d.ts +2 -1
- package/dist/modules/homepage/components/Communities/Communities.js +14 -13
- package/dist/modules/homepage/components/Communities/CommunitiesContainer.d.ts +1 -1
- package/dist/modules/homepage/components/Communities/CommunitiesContainer.js +9 -5
- package/dist/modules/homepage/components/Communities/CommunitiesSkeleton.js +4 -7
- package/dist/modules/homepage/components/Communities/useCommunities.d.ts +4 -1
- package/dist/modules/homepage/components/Communities/useCommunities.js +8 -3
- package/dist/modules/homepage/components/HomeCard/HomeCardHeader.js +2 -2
- package/dist/modules/multimedia/FileCard/index.d.ts +0 -4
- package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.d.ts +1 -7
- package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.js +0 -2
- package/dist/modules/multimedia/MediaLibrary/MediaLibrary.d.ts +2 -2
- package/dist/modules/multimedia/MediaLibrary/MediaLibrary.js +12 -48
- package/dist/modules/multimedia/MediaLibrary/innertabs/index.d.ts +0 -2
- package/dist/modules/multimedia/MediaLibrary/innertabs/index.js +0 -4
- package/dist/modules/multimedia/Workspace/Workspace.js +5 -8
- package/dist/modules/multimedia/index.d.ts +0 -2
- package/dist/multimedia.js +18 -26
- package/package.json +6 -6
- package/dist/hooks/useGoogleDriveSearch/index.d.ts +0 -1
- package/dist/hooks/useGoogleDriveSearch/useGoogleDriveSearch.d.ts +0 -14
- package/dist/hooks/useGoogleDriveSearch/useGoogleDriveSearch.js +0 -60
- package/dist/hooks/useNextcloudSearch/index.d.ts +0 -1
- package/dist/hooks/useNextcloudSearch/useNextcloudSearch.d.ts +0 -14
- package/dist/hooks/useNextcloudSearch/useNextcloudSearch.js +0 -64
- package/dist/modules/multimedia/FileCard/GoogleDriveFileCard.d.ts +0 -25
- package/dist/modules/multimedia/FileCard/GoogleDriveFileCard.js +0 -102
- package/dist/modules/multimedia/FileCard/NextcloudFileCard.d.ts +0 -25
- package/dist/modules/multimedia/FileCard/NextcloudFileCard.js +0 -102
- package/dist/modules/multimedia/GoogleDrive/GoogleDrive.d.ts +0 -24
- package/dist/modules/multimedia/GoogleDrive/GoogleDrive.js +0 -100
- package/dist/modules/multimedia/GoogleDrive/index.d.ts +0 -2
- package/dist/modules/multimedia/MediaLibrary/innertabs/GoogleDrive.d.ts +0 -1
- package/dist/modules/multimedia/MediaLibrary/innertabs/GoogleDrive.js +0 -61
- package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.d.ts +0 -1
- package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.js +0 -48
- package/dist/modules/multimedia/Nextcloud/Nextcloud.d.ts +0 -24
- package/dist/modules/multimedia/Nextcloud/Nextcloud.js +0 -124
- package/dist/modules/multimedia/Nextcloud/index.d.ts +0 -2
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { NextcloudDocument, Role } from '@edifice.io/client';
|
|
2
|
-
/**
|
|
3
|
-
* Nextcloud component properties
|
|
4
|
-
*/
|
|
5
|
-
export interface NextcloudProps {
|
|
6
|
-
/**
|
|
7
|
-
* Notify parent when media elements are successfully selected.
|
|
8
|
-
*/
|
|
9
|
-
onSelect: (result: NextcloudDocument[]) => void;
|
|
10
|
-
/**
|
|
11
|
-
* Boolean to know if we can select 1 or many files.
|
|
12
|
-
*/
|
|
13
|
-
multiple?: boolean | undefined;
|
|
14
|
-
/**
|
|
15
|
-
* Document roles to filter files by; null (default) shows all roles.
|
|
16
|
-
*/
|
|
17
|
-
roles?: Role | Role[] | null;
|
|
18
|
-
/**
|
|
19
|
-
* Optional class for styling purpose
|
|
20
|
-
*/
|
|
21
|
-
className?: string;
|
|
22
|
-
}
|
|
23
|
-
declare const Nextcloud: ({ onSelect, multiple, roles, className, }: NextcloudProps) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
export default Nextcloud;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useRef, useState, useCallback, useEffect, useMemo } from "react";
|
|
3
|
-
import { DocumentHelper } from "@edifice.io/client";
|
|
4
|
-
import clsx from "clsx";
|
|
5
|
-
import { useTranslation } from "react-i18next";
|
|
6
|
-
import { findNodeById } from "../../../components/Tree/utilities/tree.js";
|
|
7
|
-
import SvgIconSortAscendingLetters from "../../icons/components/IconSortAscendingLetters.js";
|
|
8
|
-
import SvgIconSortDescendingLetters from "../../icons/components/IconSortDescendingLetters.js";
|
|
9
|
-
import SvgIconSortTime from "../../icons/components/IconSortTime.js";
|
|
10
|
-
import illuError from "@edifice.io/bootstrap/dist/images/emptyscreen/illu-error.svg";
|
|
11
|
-
import illuNoContentInFolder from "@edifice.io/bootstrap/dist/images/emptyscreen/illu-no-content-in-folder.svg";
|
|
12
|
-
import illuTrash from "@edifice.io/bootstrap/dist/images/emptyscreen/illu-trash.svg";
|
|
13
|
-
import useUser from "../../../hooks/useUser/useUser.js";
|
|
14
|
-
import useToast from "../../../hooks/useToast/useToast.js";
|
|
15
|
-
import useNextcloudSearch from "../../../hooks/useNextcloudSearch/useNextcloudSearch.js";
|
|
16
|
-
import LoadingScreen from "../../../components/LoadingScreen/LoadingScreen.js";
|
|
17
|
-
import Flex from "../../../components/Flex/Flex.js";
|
|
18
|
-
import EmptyScreen from "../../../components/EmptyScreen/EmptyScreen.js";
|
|
19
|
-
import Button from "../../../components/Button/Button.js";
|
|
20
|
-
import { Grid } from "../../../components/Grid/Grid.js";
|
|
21
|
-
import Tree from "../../../components/Tree/components/Tree.js";
|
|
22
|
-
import SearchBar from "../../../components/SearchBar/SearchBar.js";
|
|
23
|
-
import Dropdown from "../../../components/Dropdown/Dropdown.js";
|
|
24
|
-
import NextcloudFileCard from "../FileCard/NextcloudFileCard.js";
|
|
25
|
-
const ROOT_ID = "root";
|
|
26
|
-
function compare(a, b) {
|
|
27
|
-
return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : a.localeCompare(b);
|
|
28
|
-
}
|
|
29
|
-
const Nextcloud = ({
|
|
30
|
-
onSelect,
|
|
31
|
-
multiple = !0,
|
|
32
|
-
roles,
|
|
33
|
-
className
|
|
34
|
-
}) => {
|
|
35
|
-
const {
|
|
36
|
-
t
|
|
37
|
-
} = useTranslation(), {
|
|
38
|
-
user
|
|
39
|
-
} = useUser(), toast = useToast(), {
|
|
40
|
-
root,
|
|
41
|
-
needsAuth,
|
|
42
|
-
isCheckingAuth,
|
|
43
|
-
isAuthError,
|
|
44
|
-
refetchAuthStatus,
|
|
45
|
-
loadContent,
|
|
46
|
-
loadError
|
|
47
|
-
} = useNextcloudSearch(ROOT_ID, t("nextcloud"), user == null ? void 0 : user.userId), popupRef = useRef(null), [currentNodeId, setCurrentNodeId] = useState(ROOT_ID), currentNode = findNodeById(root, currentNodeId) ?? root, [searchTerm, setSearchTerm] = useState(void 0), [sortOrder, setSortOrder] = useState(["modified", "desc"]), [selectedDocuments, setSelectedDocuments] = useState([]), handleTreeItemChange = useCallback((nodeId) => {
|
|
48
|
-
setCurrentNodeId(nodeId), loadContent(nodeId);
|
|
49
|
-
}, [loadContent]);
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
needsAuth || loadContent(ROOT_ID);
|
|
52
|
-
}, [loadContent, needsAuth]);
|
|
53
|
-
const documents = useMemo(() => {
|
|
54
|
-
if (!currentNode.files) return;
|
|
55
|
-
const matchesRole = (doc) => {
|
|
56
|
-
if (!roles) return !0;
|
|
57
|
-
const role = DocumentHelper.role(doc.contentType, !1);
|
|
58
|
-
return Array.isArray(roles) ? roles.includes(role) : roles === role;
|
|
59
|
-
}, normalizedSearchTerm = searchTerm == null ? void 0 : searchTerm.toLowerCase(), list = currentNode.files.filter((f) => (!normalizedSearchTerm || f.name.toLowerCase().includes(normalizedSearchTerm)) && matchesRole(f));
|
|
60
|
-
let sortFunction;
|
|
61
|
-
return sortOrder[0] === "name" ? sortFunction = sortOrder[1] === "asc" ? (a, b) => compare(a.name, b.name) : (a, b) => compare(b.name, a.name) : sortFunction = (a, b) => compare(b.lastModified, a.lastModified), list.sort(sortFunction);
|
|
62
|
-
}, [currentNode, searchTerm, sortOrder, roles]), selectedPaths = useMemo(() => new Set(selectedDocuments.map((d) => d.path)), [selectedDocuments]), handleSearchChange = useCallback((e) => {
|
|
63
|
-
setSearchTerm(e.target.value);
|
|
64
|
-
}, [setSearchTerm]);
|
|
65
|
-
function getSortOrderLabel() {
|
|
66
|
-
return sortOrder[0] === "name" ? sortOrder[1] === "asc" ? t("sort.order.alpha.asc") : t("sort.order.alpha.desc") : t("sort.order.modify.desc");
|
|
67
|
-
}
|
|
68
|
-
function handleSelectDoc(doc) {
|
|
69
|
-
let currentDocuments = [...selectedDocuments];
|
|
70
|
-
multiple ? currentDocuments.some((selectedDocument) => selectedDocument.path === doc.path) ? currentDocuments = currentDocuments.filter((selectedDocument) => selectedDocument.path !== doc.path) : currentDocuments = [...currentDocuments, doc] : currentDocuments = [doc], setSelectedDocuments(currentDocuments), onSelect(currentDocuments);
|
|
71
|
-
}
|
|
72
|
-
const nextcloud = clsx("workspace flex-grow-1 gap-0", className), openLoginPopup = () => {
|
|
73
|
-
popupRef.current = window.open(`${window.location.origin}/nextcloud/user/oauth2/init`, "", "popup, height=600, width=400"), popupRef.current || toast.error(t("nextcloud.auth.popupBlocked"));
|
|
74
|
-
};
|
|
75
|
-
return useEffect(() => {
|
|
76
|
-
function handleMessage(event) {
|
|
77
|
-
var _a;
|
|
78
|
-
event.origin !== window.location.origin || ((_a = event.data) == null ? void 0 : _a.type) !== "nextcloud-connected" || (popupRef.current && !popupRef.current.closed && popupRef.current.close(), refetchAuthStatus());
|
|
79
|
-
}
|
|
80
|
-
return window.addEventListener("message", handleMessage), () => window.removeEventListener("message", handleMessage);
|
|
81
|
-
}, [refetchAuthStatus]), isCheckingAuth ? /* @__PURE__ */ jsx(LoadingScreen, {}) : isAuthError ? /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "12", className: "h-full w-100", justify: "center", align: "center", children: [
|
|
82
|
-
/* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuError, title: t("nextcloud.error.title"), text: t("nextcloud.error.description") }),
|
|
83
|
-
/* @__PURE__ */ jsx(Button, { onClick: () => refetchAuthStatus(), children: t("retry") })
|
|
84
|
-
] }) : needsAuth ? /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "12", className: "h-full w-100", justify: "center", align: "center", children: [
|
|
85
|
-
/* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8", justify: "center", align: "center", children: [
|
|
86
|
-
/* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuNoContentInFolder }),
|
|
87
|
-
/* @__PURE__ */ jsx("h2", { className: "h2 text-secondary mb-8", children: t("nextcloud.auth.title") }),
|
|
88
|
-
/* @__PURE__ */ jsx("div", { className: "text", children: t("nextcloud.auth.description") })
|
|
89
|
-
] }),
|
|
90
|
-
/* @__PURE__ */ jsx(Button, { onClick: openLoginPopup, children: t("nextcloud.auth.connect") })
|
|
91
|
-
] }) : /* @__PURE__ */ jsxs(Grid, { className: nextcloud, children: [
|
|
92
|
-
/* @__PURE__ */ jsx(Grid.Col, { sm: "12", md: "3", xl: "4", className: "workspace-folders p-12 pt-0 gap-12", children: /* @__PURE__ */ jsx("div", { style: {
|
|
93
|
-
position: "sticky",
|
|
94
|
-
top: 0,
|
|
95
|
-
paddingTop: "1.2rem"
|
|
96
|
-
}, children: /* @__PURE__ */ jsx(Tree, { nodes: root, selectedNodeId: currentNodeId, showIcon: !0, onTreeItemClick: handleTreeItemChange, onTreeItemUnfold: handleTreeItemChange }) }) }),
|
|
97
|
-
/* @__PURE__ */ jsx(Grid.Col, { sm: "12", md: "5", xl: "8", children: /* @__PURE__ */ jsxs(Grid, { className: "flex-grow-1 gap-0", children: [
|
|
98
|
-
/* @__PURE__ */ jsxs(Grid.Col, { sm: "4", md: "8", xl: "12", children: [
|
|
99
|
-
/* @__PURE__ */ jsx("div", { className: "workspace-search px-16 py-8 ", children: /* @__PURE__ */ jsx(SearchBar, { isVariant: !0, className: "gap-16", onChange: handleSearchChange }) }),
|
|
100
|
-
/* @__PURE__ */ jsxs(Flex, { className: "px-8 py-4", align: "center", justify: "end", children: [
|
|
101
|
-
/* @__PURE__ */ jsx("small", { className: "text-muted", children: t("workspace.search.order") }),
|
|
102
|
-
/* @__PURE__ */ jsxs(Dropdown, { children: [
|
|
103
|
-
/* @__PURE__ */ jsx(Dropdown.Trigger, { size: "sm", label: getSortOrderLabel(), variant: "ghost" }),
|
|
104
|
-
/* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
|
|
105
|
-
/* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortTime, {}), onClick: () => setSortOrder(["modified", "desc"]), children: t("sort.order.modify.desc") }),
|
|
106
|
-
/* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortAscendingLetters, {}), onClick: () => setSortOrder(["name", "asc"]), children: t("sort.order.alpha.asc") }),
|
|
107
|
-
/* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortDescendingLetters, {}), onClick: () => setSortOrder(["name", "desc"]), children: t("sort.order.alpha.desc") })
|
|
108
|
-
] })
|
|
109
|
-
] })
|
|
110
|
-
] })
|
|
111
|
-
] }),
|
|
112
|
-
/* @__PURE__ */ jsx(Grid.Col, { sm: "4", md: "8", xl: "12", className: "p-8 gap-8", children: loadError ? /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "12", className: "h-full w-100", justify: "center", align: "center", children: [
|
|
113
|
-
/* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuError, title: t("nextcloud.error.title"), text: t("nextcloud.error.description") }),
|
|
114
|
-
/* @__PURE__ */ jsx(Button, { onClick: () => loadContent(currentNodeId), children: t("retry") })
|
|
115
|
-
] }) : documents ? documents.length !== 0 ? /* @__PURE__ */ jsx("div", { className: "grid grid-workspace", children: documents.map((doc) => {
|
|
116
|
-
const isSelected = selectedPaths.has(doc.path);
|
|
117
|
-
return /* @__PURE__ */ jsx(NextcloudFileCard, { doc, userId: user.userId, isSelected, onClick: () => handleSelectDoc(doc) }, doc.path);
|
|
118
|
-
}) }) : /* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuTrash, text: t("workspace.empty.docSpace"), title: t("explorer.emptyScreen.trash.title") }) : /* @__PURE__ */ jsx(LoadingScreen, {}) })
|
|
119
|
-
] }) })
|
|
120
|
-
] });
|
|
121
|
-
};
|
|
122
|
-
export {
|
|
123
|
-
Nextcloud as default
|
|
124
|
-
};
|