@edifice.io/react 2.2.2-develop-pedago.20250409103005 → 2.2.2-develop-b2school.20250410105023

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.
Files changed (125) hide show
  1. package/dist/components/Avatar/Avatar.d.ts +0 -21
  2. package/dist/components/Avatar/Avatar.js +2 -15
  3. package/dist/components/Card/Card.d.ts +1 -3
  4. package/dist/components/Card/CardBody.d.ts +1 -3
  5. package/dist/components/Card/CardBody.js +2 -4
  6. package/dist/components/Combobox/Combobox.d.ts +55 -5
  7. package/dist/components/Combobox/Combobox.js +13 -7
  8. package/dist/components/Combobox/ComboboxTrigger.d.ts +30 -2
  9. package/dist/components/Combobox/ComboboxTrigger.js +27 -8
  10. package/dist/components/Dropdown/Dropdown.d.ts +10 -6
  11. package/dist/components/Dropdown/Dropdown.js +5 -5
  12. package/dist/components/Dropdown/DropdownItem.d.ts +3 -3
  13. package/dist/components/Dropdown/DropdownItem.js +6 -8
  14. package/dist/components/Dropdown/DropdownTrigger.d.ts +2 -31
  15. package/dist/components/Dropdown/DropdownTrigger.js +8 -24
  16. package/dist/components/List/List.d.ts +9 -1
  17. package/dist/components/List/List.js +9 -9
  18. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  19. package/dist/components/SearchBar/SearchBar.js +3 -1
  20. package/dist/components/index.d.ts +0 -4
  21. package/dist/editor.js +22 -22
  22. package/dist/hooks/index.d.ts +1 -0
  23. package/dist/hooks/useCheckable/useCheckable.js +10 -3
  24. package/dist/hooks/useConf/useConf.d.ts +1 -1
  25. package/dist/hooks/useConversation/useConversation.d.ts +1 -1
  26. package/dist/hooks/useConversation/useConversation.js +13 -17
  27. package/dist/hooks/useDropdown/useDropdown.d.ts +2 -1
  28. package/dist/hooks/useDropdown/useDropdown.js +5 -3
  29. package/dist/hooks/useSession/useSession.d.ts +1 -1
  30. package/dist/hooks/useWorkspaceFolders/index.d.ts +1 -0
  31. package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.d.ts +14 -0
  32. package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.js +44 -0
  33. package/dist/icons.js +230 -212
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.js +172 -154
  36. package/dist/modals.js +16 -14
  37. package/dist/modules/comments/components/Comment.js +34 -49
  38. package/dist/modules/comments/components/CommentForm.d.ts +1 -2
  39. package/dist/modules/comments/components/CommentForm.js +8 -12
  40. package/dist/modules/comments/components/CommentList.js +3 -3
  41. package/dist/modules/comments/constants.d.ts +0 -4
  42. package/dist/modules/comments/constants.js +1 -2
  43. package/dist/modules/comments/context/Context.d.ts +4 -6
  44. package/dist/modules/comments/hooks/useComments.d.ts +7 -7
  45. package/dist/modules/comments/hooks/useComments.js +19 -24
  46. package/dist/modules/comments/hooks/useCommentsContext.d.ts +4 -6
  47. package/dist/modules/comments/provider/CommentProvider.js +13 -16
  48. package/dist/modules/comments/types.d.ts +1 -14
  49. package/dist/modules/editor/components/Editor/Editor.d.ts +3 -1
  50. package/dist/modules/editor/components/Editor/Editor.js +5 -8
  51. package/dist/modules/editor/components/EditorToolbar/EditorToolbar.js +0 -12
  52. package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.d.ts +2 -0
  53. package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.js +10 -0
  54. package/dist/modules/editor/components/NodeView/index.d.ts +2 -2
  55. package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.d.ts +8 -0
  56. package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.js +28 -0
  57. package/dist/modules/editor/components/Renderer/index.d.ts +2 -2
  58. package/dist/modules/editor/hooks/useTipTapEditor.d.ts +6 -2
  59. package/dist/modules/editor/hooks/useTipTapEditor.js +2 -4
  60. package/dist/modules/icons/components/IconFolderAdd.d.ts +7 -0
  61. package/dist/modules/icons/components/IconFolderAdd.js +13 -0
  62. package/dist/modules/icons/components/IconFolderDelete.d.ts +7 -0
  63. package/dist/modules/icons/components/IconFolderDelete.js +12 -0
  64. package/dist/modules/icons/components/IconGlobe2.d.ts +7 -0
  65. package/dist/modules/icons/components/IconGlobe2.js +16 -0
  66. package/dist/modules/icons/components/IconGroupAvatar.d.ts +7 -0
  67. package/dist/modules/icons/components/IconGroupAvatar.js +12 -0
  68. package/dist/modules/icons/components/IconMailRecall.d.ts +7 -0
  69. package/dist/modules/icons/components/IconMailRecall.js +13 -0
  70. package/dist/modules/icons/components/IconQuestionMark.d.ts +7 -0
  71. package/dist/modules/icons/components/IconQuestionMark.js +13 -0
  72. package/dist/modules/icons/components/IconReadMail.d.ts +7 -0
  73. package/dist/modules/icons/components/IconReadMail.js +16 -0
  74. package/dist/modules/icons/components/IconSignature.d.ts +7 -0
  75. package/dist/modules/icons/components/IconSignature.js +13 -0
  76. package/dist/modules/icons/components/IconUndoAll.d.ts +7 -0
  77. package/dist/modules/icons/components/IconUndoAll.js +14 -0
  78. package/dist/modules/icons/components/IconUnreadMail.d.ts +7 -0
  79. package/dist/modules/icons/components/IconUnreadMail.js +16 -0
  80. package/dist/modules/icons/components/index.d.ts +10 -1
  81. package/dist/modules/modals/ConfirmModal/ConfirmModal.d.ts +42 -0
  82. package/dist/modules/modals/ConfirmModal/ConfirmModal.js +36 -0
  83. package/dist/modules/modals/ConfirmModal/index.d.ts +1 -0
  84. package/dist/modules/modals/ResourceModal/ResourceModal.d.ts +1 -1
  85. package/dist/modules/modals/ResourceModal/hooks/useUpdateMutation.d.ts +1 -1
  86. package/dist/modules/modals/ShareModal/ShareModal.d.ts +1 -1
  87. package/dist/modules/modals/ShareModal/apps/ShareBlog.d.ts +1 -1
  88. package/dist/modules/modals/ShareModal/hooks/useShareMutation.d.ts +1 -1
  89. package/dist/modules/modals/index.d.ts +1 -0
  90. package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.js +5 -9
  91. package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.d.ts +8 -0
  92. package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.js +28 -0
  93. package/dist/modules/multimedia/WorkspaceFolders/index.d.ts +1 -0
  94. package/dist/modules/multimedia/index.d.ts +1 -0
  95. package/dist/multimedia.js +3 -1
  96. package/dist/providers/EdificeClientProvider/EdificeClientProvider.context.d.ts +1 -1
  97. package/dist/types/index.d.ts +0 -1
  98. package/package.json +6 -6
  99. package/dist/components/AvatarGroup/AvatarGroup.d.ts +0 -24
  100. package/dist/components/AvatarGroup/AvatarGroup.js +0 -24
  101. package/dist/components/AvatarGroup/index.d.ts +0 -2
  102. package/dist/components/PreventPropagation/PreventPropagation.d.ts +0 -10
  103. package/dist/components/PreventPropagation/PreventPropagation.js +0 -9
  104. package/dist/components/PreventPropagation/index.d.ts +0 -2
  105. package/dist/components/StackedGroup/StackedGroup.d.ts +0 -23
  106. package/dist/components/StackedGroup/StackedGroup.js +0 -21
  107. package/dist/components/StackedGroup/index.d.ts +0 -1
  108. package/dist/components/Switch/Switch.d.ts +0 -29
  109. package/dist/components/Switch/Switch.js +0 -27
  110. package/dist/components/Switch/index.d.ts +0 -2
  111. package/dist/modules/comments/components/CommentDeleted.d.ts +0 -1
  112. package/dist/modules/comments/components/CommentDeleted.js +0 -11
  113. package/dist/modules/comments/components/CommentReplies.d.ts +0 -4
  114. package/dist/modules/comments/components/CommentReplies.js +0 -33
  115. package/dist/modules/comments/hooks/useCommentReplies.d.ts +0 -12
  116. package/dist/modules/comments/hooks/useCommentReplies.js +0 -36
  117. package/dist/modules/editor/components/BubbleMenuEditInformationPane/BubbleMenuEditInformationPane.d.ts +0 -6
  118. package/dist/modules/editor/components/BubbleMenuEditInformationPane/BubbleMenuEditInformationPane.js +0 -136
  119. package/dist/modules/editor/components/BubbleMenuEditInformationPane/index.d.ts +0 -1
  120. package/dist/modules/editor/components/NodeView/InformationPaneNodeView.d.ts +0 -2
  121. package/dist/modules/editor/components/NodeView/InformationPaneNodeView.js +0 -10
  122. package/dist/modules/editor/components/Renderer/InformationPaneRenderer.d.ts +0 -3
  123. package/dist/modules/editor/components/Renderer/InformationPaneRenderer.js +0 -33
  124. package/dist/modules/icons/components/IconInfoRectangle.d.ts +0 -7
  125. package/dist/modules/icons/components/IconInfoRectangle.js +0 -13
@@ -24,10 +24,12 @@ const SearchBar = ({
24
24
  "ps-48": isVariant
25
25
  }), handleClick = () => {
26
26
  onClick == null || onClick();
27
+ }, handleKeyDown = (e) => {
28
+ e.key === "Enter" && (e.preventDefault(), handleClick());
27
29
  };
28
30
  return /* @__PURE__ */ jsxs(FormControl, { id: "search-bar", className: searchbar, children: [
29
31
  isVariant && /* @__PURE__ */ jsx("div", { className: "position-absolute z-1 top-50 start-0 translate-middle-y border-0 ps-12 bg-transparent", children: /* @__PURE__ */ jsx(SvgIconSearch, {}) }),
30
- /* @__PURE__ */ jsx(FormControl.Input, { type: "search", placeholder: t(placeholder), size, noValidationIcon: !0, className: input, onChange, disabled, ...restProps }),
32
+ /* @__PURE__ */ jsx(FormControl.Input, { type: "search", placeholder: t(placeholder), size, noValidationIcon: !0, className: input, onChange, disabled, onKeyDown: handleKeyDown, ...restProps }),
31
33
  !isVariant && /* @__PURE__ */ jsx(SearchButton, { type: "submit", "aria-label": t("search"), icon: /* @__PURE__ */ jsx(SvgIconSearch, {}), className: "border-start-0", onClick: handleClick })
32
34
  ] });
33
35
  };
@@ -4,7 +4,6 @@ export * from './AppHeader';
4
4
  export * from './AppIcon';
5
5
  export * from './Attachment';
6
6
  export * from './Avatar';
7
- export * from './AvatarGroup';
8
7
  export * from './Badge';
9
8
  export * from './Breadcrumb';
10
9
  export * from './Button';
@@ -29,12 +28,9 @@ export * from './Logo';
29
28
  export * from './Menu';
30
29
  export * from './Modal';
31
30
  export * from './Popover';
32
- export * from './PreventPropagation';
33
31
  export * from './Radio';
34
32
  export * from './SearchBar';
35
33
  export * from './Select';
36
- export * from './StackedGroup';
37
- export * from './Switch';
38
34
  export * from './Table';
39
35
  export * from './Tabs';
40
36
  export * from './TextArea';
package/dist/editor.js CHANGED
@@ -2,17 +2,17 @@ import { EditorContent, Editor, useEditor } from "@tiptap/react";
2
2
  import { default as default2 } from "@tiptap/starter-kit";
3
3
  import { default as default3 } from "./modules/editor/components/Editor/Editor.js";
4
4
  import { default as default4 } from "./modules/editor/components/BubbleMenuEditImage/BubbleMenuEditImage.js";
5
- import { default as default5 } from "./modules/editor/components/NodeView/AudioNodeView.js";
6
- import { default as default6 } from "./modules/editor/components/NodeView/AttachmentNodeView.js";
7
- import { default as default7 } from "./modules/editor/components/NodeView/ImageNodeView.js";
8
- import { default as default8 } from "./modules/editor/components/NodeView/LinkerNodeView.js";
9
- import { default as default9 } from "./modules/editor/components/NodeView/VideoNodeView.js";
10
- import { default as default10 } from "./modules/editor/components/NodeView/InformationPaneNodeView.js";
11
- import { default as default11 } from "./modules/editor/components/Renderer/AudioRenderer.js";
12
- import { default as default12 } from "./modules/editor/components/Renderer/AttachmentRenderer.js";
13
- import { default as default13 } from "./modules/editor/components/Renderer/LinkerRenderer.js";
14
- import { default as default14 } from "./modules/editor/components/Renderer/MediaRenderer.js";
15
- import { default as default15 } from "./modules/editor/components/Renderer/InformationPaneRenderer.js";
5
+ import { default as default5 } from "./modules/editor/components/NodeView/AttachmentNodeView.js";
6
+ import { default as default6 } from "./modules/editor/components/NodeView/AudioNodeView.js";
7
+ import { default as default7 } from "./modules/editor/components/NodeView/ConversationHistoryNodeView.js";
8
+ import { default as default8 } from "./modules/editor/components/NodeView/ImageNodeView.js";
9
+ import { default as default9 } from "./modules/editor/components/NodeView/LinkerNodeView.js";
10
+ import { default as default10 } from "./modules/editor/components/NodeView/VideoNodeView.js";
11
+ import { default as default11 } from "./modules/editor/components/Renderer/AttachmentRenderer.js";
12
+ import { default as default12 } from "./modules/editor/components/Renderer/AudioRenderer.js";
13
+ import { default as default13 } from "./modules/editor/components/Renderer/ConversationHistoryRenderer.js";
14
+ import { default as default14 } from "./modules/editor/components/Renderer/LinkerRenderer.js";
15
+ import { default as default15 } from "./modules/editor/components/Renderer/MediaRenderer.js";
16
16
  import { default as default16 } from "./modules/editor/components/Toolbar/TableToolbar.js";
17
17
  import { default as default17 } from "./modules/editor/components/Toolbar/LinkToolbar.js";
18
18
  import { EditorToolbar } from "./modules/editor/components/EditorToolbar/EditorToolbar.js";
@@ -29,26 +29,26 @@ import { useSpeechRecognition } from "./modules/editor/hooks/useSpeechRecognitio
29
29
  import { useSpeechSynthetisis } from "./modules/editor/hooks/useSpeechSynthetisis.js";
30
30
  import { useTipTapEditor } from "./modules/editor/hooks/useTipTapEditor.js";
31
31
  export {
32
- default6 as AttachmentNodeView,
33
- default12 as AttachmentRenderer,
34
- default5 as AudioNodeView,
35
- default11 as AudioRenderer,
32
+ default5 as AttachmentNodeView,
33
+ default11 as AttachmentRenderer,
34
+ default6 as AudioNodeView,
35
+ default12 as AudioRenderer,
36
36
  default4 as BubbleMenuEditImage,
37
+ default7 as ConversationHistoryNodeView,
38
+ default13 as ConversationHistoryRenderer,
37
39
  default3 as Editor,
38
40
  EditorContent,
39
41
  EditorContext,
40
42
  Editor as EditorInstance,
41
43
  EditorToolbar,
42
- default7 as ImageNodeView,
43
- default10 as InformationPaneNodeView,
44
- default15 as InformationPaneRenderer,
44
+ default8 as ImageNodeView,
45
45
  default17 as LinkToolbar,
46
- default8 as LinkerNodeView,
47
- default13 as LinkerRenderer,
48
- default14 as MediaRenderer,
46
+ default9 as LinkerNodeView,
47
+ default14 as LinkerRenderer,
48
+ default15 as MediaRenderer,
49
49
  default2 as StarterKit,
50
50
  default16 as TableToolbar,
51
- default9 as VideoNodeView,
51
+ default10 as VideoNodeView,
52
52
  useActionOptions,
53
53
  useCommentEditor,
54
54
  useEditor,
@@ -29,6 +29,7 @@ export * from './useUpload';
29
29
  export * from './useUploadFiles';
30
30
  export * from './useUser';
31
31
  export * from './useWorkspaceFile';
32
+ export * from './useWorkspaceFolders';
32
33
  export * from './useWorkspaceSearch';
33
34
  export * from './useXitiTrackPageLoad';
34
35
  export * from './useZendeskGuide';
@@ -1,13 +1,20 @@
1
- import { useState } from "react";
1
+ import { useState, useEffect } from "react";
2
2
  const useCheckable = (data) => {
3
- const [selectedItems, setSelectedItems] = useState([]), handleOnSelectItem = (itemId) => {
3
+ const [selectedItems, setSelectedItems] = useState([]);
4
+ useEffect(() => {
5
+ if (data) {
6
+ const validSelectedItems = selectedItems.filter((id) => data.some((item) => item._id === id));
7
+ validSelectedItems.length !== selectedItems.length && setSelectedItems(validSelectedItems);
8
+ }
9
+ }, [data]);
10
+ const handleOnSelectItem = (itemId) => {
4
11
  setSelectedItems((currentSelection) => {
5
12
  const newSelection = [...currentSelection];
6
13
  return newSelection.includes(itemId) ? newSelection.splice(newSelection.indexOf(itemId), 1) : newSelection.push(itemId), newSelection;
7
14
  });
8
15
  }, handleOnSelectAllItems = (deselect) => {
9
16
  setSelectedItems(() => deselect ? [] : (data == null ? void 0 : data.map((item) => item._id)) ?? []);
10
- }, allItemsSelected = (selectedItems == null ? void 0 : selectedItems.length) === (data == null ? void 0 : data.length), isIndeterminate = data ? (selectedItems == null ? void 0 : selectedItems.length) > 0 && (selectedItems == null ? void 0 : selectedItems.length) < (data == null ? void 0 : data.length) : !1;
17
+ }, allItemsSelected = (selectedItems == null ? void 0 : selectedItems.length) === (data == null ? void 0 : data.length) && (data == null ? void 0 : data.length) > 0, isIndeterminate = data ? (selectedItems == null ? void 0 : selectedItems.length) > 0 && (selectedItems == null ? void 0 : selectedItems.length) < (data == null ? void 0 : data.length) : !1;
11
18
  return {
12
19
  selectedItems,
13
20
  allItemsSelected,
@@ -1,4 +1,4 @@
1
1
  import { App, IGetConf } from '@edifice.io/client';
2
2
  export default function useConf({ appCode }: {
3
3
  appCode: App;
4
- }): import('../../node_modules/@tanstack/react-query').UseQueryResult<IGetConf, Error>;
4
+ }): import('../../../node_modules/@tanstack/react-query').UseQueryResult<IGetConf, Error>;
@@ -1,5 +1,5 @@
1
1
  declare const useConversation: () => {
2
- readonly messages: number;
2
+ readonly messages: any;
3
3
  readonly msgLink: string;
4
4
  readonly zimbraWorkflow: boolean | Record<string, boolean> | undefined;
5
5
  };
@@ -1,23 +1,21 @@
1
1
  import { useState, useEffect } from "react";
2
2
  import { odeServices } from "@edifice.io/client";
3
+ import { useQuery } from "@tanstack/react-query";
3
4
  import useHasWorkflow from "../useHasWorkflow/useHasWorkflow.js";
4
5
  const useConversation = () => {
5
- const zimbraWorkflow = useHasWorkflow("fr.openent.zimbra.controllers.ZimbraController|view"), zimbraPreauth = useHasWorkflow("fr.openent.zimbra.controllers.ZimbraController|preauth"), [messages, setMessages] = useState(0), [msgLink, setMsgLink] = useState(""), queryParams = {
6
+ const zimbraWorkflow = useHasWorkflow("fr.openent.zimbra.controllers.ZimbraController|view"), zimbraPreauth = useHasWorkflow("fr.openent.zimbra.controllers.ZimbraController|preauth"), [msgLink, setMsgLink] = useState(""), queryParams = {
6
7
  unread: !0,
7
8
  _: (/* @__PURE__ */ new Date()).getTime()
8
- }, refreshMails = async () => {
9
- const url = zimbraWorkflow ? "/zimbra/count/INBOX" : "/conversation/count/INBOX";
10
- try {
11
- const {
12
- count
13
- } = await odeServices.http().get(url, {
14
- queryParams
15
- });
16
- setMessages(count ?? 0);
17
- } catch (error) {
18
- console.error(error), setMessages(0);
19
- }
20
- }, goToMessagerie = async () => {
9
+ }, {
10
+ data: messages
11
+ } = useQuery({
12
+ queryKey: ["conversation-navbar-count"],
13
+ queryFn: async () => await odeServices.http().get(zimbraWorkflow ? "/zimbra/count/INBOX" : "/conversation/count/INBOX", {
14
+ queryParams
15
+ }),
16
+ staleTime: 5 * 60 * 1e3
17
+ // 5 minutes
18
+ }), goToMessagerie = async () => {
21
19
  const defaultLink = "/zimbra/zimbra";
22
20
  try {
23
21
  const {
@@ -29,11 +27,9 @@ const useConversation = () => {
29
27
  }
30
28
  };
31
29
  return useEffect(() => {
32
- refreshMails();
33
- }, []), useEffect(() => {
34
30
  goToMessagerie();
35
31
  }, []), {
36
- messages,
32
+ messages: messages ? messages.count : 0,
37
33
  msgLink,
38
34
  zimbraWorkflow
39
35
  };
@@ -27,6 +27,7 @@ export interface UseDropdownProps {
27
27
  menuProps: Record<string, any>;
28
28
  itemProps: Record<string, any>;
29
29
  setVisible: Dispatch<SetStateAction<boolean>>;
30
+ openOnSpace?: boolean;
30
31
  }
31
- declare const useDropdown: (placement: Placement | undefined, extraTriggerKeyDownHandler?: (event: React.KeyboardEvent<HTMLButtonElement>) => void, isTriggerHovered?: boolean) => UseDropdownProps;
32
+ declare const useDropdown: (placement: Placement | undefined, extraTriggerKeyDownHandler?: (event: React.KeyboardEvent<HTMLButtonElement>) => void, isTriggerHovered?: boolean, focusOnVisible?: boolean, openOnSpace?: boolean) => UseDropdownProps;
32
33
  export default useDropdown;
@@ -1,7 +1,7 @@
1
1
  import { useId, useState, useRef, useEffect, useCallback } from "react";
2
2
  import { useFloating, offset, size, flip, autoUpdate, useHover, safePolygon } from "@floating-ui/react";
3
3
  import { mergeRefs } from "../../utilities/refs/ref.js";
4
- const useDropdown = (placement, extraTriggerKeyDownHandler, isTriggerHovered = !1) => {
4
+ const useDropdown = (placement, extraTriggerKeyDownHandler, isTriggerHovered = !1, focusOnVisible = !0, openOnSpace = !0) => {
5
5
  const id = useId(), [visible, setVisible] = useState(!1), [activeIndex, setActiveIndex] = useState(-1), [isFocused, setIsFocused] = useState(null), {
6
6
  refs,
7
7
  floatingStyles,
@@ -11,7 +11,7 @@ const useDropdown = (placement, extraTriggerKeyDownHandler, isTriggerHovered = !
11
11
  open: visible,
12
12
  onOpenChange: setVisible,
13
13
  whileElementsMounted: autoUpdate,
14
- middleware: [offset(4), size({
14
+ middleware: [offset(0), size({
15
15
  apply({
16
16
  rects,
17
17
  elements
@@ -32,7 +32,7 @@ const useDropdown = (placement, extraTriggerKeyDownHandler, isTriggerHovered = !
32
32
  });
33
33
  const menuRef = useRef(null), triggerRef = useRef(null), itemRefs = useRef({});
34
34
  useEffect(() => {
35
- visible ? menuRef.current && (menuRef.current.focus(), setActiveIndex(0)) : (setActiveIndex(-1), itemRefs.current = {});
35
+ visible && menuRef.current && focusOnVisible ? (menuRef.current.focus(), setActiveIndex(0)) : (setActiveIndex(-1), itemRefs.current = {});
36
36
  }, [visible]), useEffect(() => {
37
37
  if (activeIndex !== -1) {
38
38
  const currentItem = Object.values(itemRefs.current)[activeIndex];
@@ -66,6 +66,8 @@ const useDropdown = (placement, extraTriggerKeyDownHandler, isTriggerHovered = !
66
66
  switch (event.code) {
67
67
  case " ":
68
68
  case "Space":
69
+ if (!openOnSpace)
70
+ break;
69
71
  case "Enter":
70
72
  case "ArrowDown":
71
73
  case "Down":
@@ -1,2 +1,2 @@
1
1
  import { IGetSession } from '@edifice.io/client';
2
- export default function useSession(): import('../../node_modules/@tanstack/react-query').UseQueryResult<IGetSession, Error>;
2
+ export default function useSession(): import('../../../node_modules/@tanstack/react-query').UseQueryResult<IGetSession, Error>;
@@ -0,0 +1 @@
1
+ export { default as useWorkspaceFolders } from './useWorkspaceFolders';
@@ -0,0 +1,14 @@
1
+ interface FolderTreeNode {
2
+ id: string;
3
+ name: string;
4
+ children?: FolderTreeNode[];
5
+ }
6
+ declare function useWorkspaceFolders(): {
7
+ folderTree: {
8
+ id: string;
9
+ name: string;
10
+ children: FolderTreeNode[];
11
+ }[];
12
+ setSearchQuery: import('react').Dispatch<import('react').SetStateAction<string>>;
13
+ };
14
+ export default useWorkspaceFolders;
@@ -0,0 +1,44 @@
1
+ import { odeServices } from "@edifice.io/client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useState, useMemo } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+ function useWorkspaceFolders() {
6
+ const {
7
+ t
8
+ } = useTranslation(), {
9
+ data: folderData
10
+ } = useQuery({
11
+ queryKey: ["workspace-folders"],
12
+ queryFn: () => odeServices.workspace().listFolder("owner", !0)
13
+ }), [searchQuery, setSearchQuery] = useState(""), filterTree = (nodes, search) => nodes.map((node) => {
14
+ const filteredChildren = node.children ? filterTree(node.children, search) : [];
15
+ return node.name.toLowerCase().includes(search.toLowerCase()) || filteredChildren.length > 0 ? {
16
+ ...node,
17
+ children: filteredChildren
18
+ } : null;
19
+ }).filter((node) => node !== null);
20
+ return {
21
+ folderTree: useMemo(() => {
22
+ const buildWorkspaceTree = (data) => [{
23
+ id: "",
24
+ name: t("workspace.myDocuments"),
25
+ children: data
26
+ }];
27
+ if (!folderData) return buildWorkspaceTree([]);
28
+ const nodes = /* @__PURE__ */ new Map(), fullTree = [];
29
+ return folderData.forEach((item) => {
30
+ nodes.set(item._id, {
31
+ id: item._id,
32
+ name: item.name,
33
+ children: []
34
+ });
35
+ }), folderData.forEach((item) => {
36
+ item.eParent && nodes.has(item.eParent) ? nodes.get(item.eParent).children.push(nodes.get(item._id)) : fullTree.push(nodes.get(item._id));
37
+ }), buildWorkspaceTree(searchQuery ? filterTree(fullTree, searchQuery) : fullTree);
38
+ }, [folderData, searchQuery]),
39
+ setSearchQuery
40
+ };
41
+ }
42
+ export {
43
+ useWorkspaceFolders as default
44
+ };