cozy-search 2.0.10 → 2.1.0

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 (53) hide show
  1. package/dist/components/Assistant/AssistantAvatar.js +0 -2
  2. package/dist/components/Assistant/AssistantContainer.js +2 -19
  3. package/dist/components/Assistant/AssistantSelection.js +0 -2
  4. package/dist/components/Assistant/AssistantSelectionItem.js +0 -2
  5. package/dist/components/Assistant/styles.styl +0 -7
  6. package/dist/components/AssistantProvider.d.ts +0 -12
  7. package/dist/components/AssistantProvider.js +4 -22
  8. package/dist/components/Conversations/ConversationComposer.js +2 -4
  9. package/dist/components/CreateAssistantSteps/AssistantDialogContent.js +3 -1
  10. package/dist/components/CreateAssistantSteps/BasicInfoStep.d.ts +3 -1
  11. package/dist/components/CreateAssistantSteps/BasicInfoStep.js +9 -2
  12. package/dist/components/CreateAssistantSteps/useAssistantDialog.d.ts +2 -0
  13. package/dist/components/CreateAssistantSteps/useAssistantDialog.js +2 -1
  14. package/dist/components/KnowledgeBase/FolderPickerDialog.d.ts +10 -0
  15. package/dist/components/KnowledgeBase/FolderPickerDialog.js +112 -0
  16. package/dist/components/KnowledgeBase/KnowledgeBaseChip.d.ts +16 -0
  17. package/dist/components/KnowledgeBase/KnowledgeBaseChip.js +156 -0
  18. package/dist/components/KnowledgeBase/KnowledgeBaseSection.d.ts +5 -0
  19. package/dist/components/KnowledgeBase/KnowledgeBaseSection.js +173 -0
  20. package/dist/components/KnowledgeBase/knowledgeBase.d.ts +12 -0
  21. package/dist/components/KnowledgeBase/knowledgeBase.js +131 -0
  22. package/dist/components/KnowledgeBase/knowledgeBase.spec.d.ts +1 -0
  23. package/dist/components/KnowledgeBase/knowledgeBase.spec.js +177 -0
  24. package/dist/components/KnowledgeBase/styles.styl +12 -0
  25. package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.d.ts +8 -0
  26. package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.js +117 -0
  27. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.d.ts +9 -2
  28. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.js +20 -52
  29. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.d.ts +2 -3
  30. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +43 -24
  31. package/dist/components/TwakeKnowledges/styles.styl +0 -82
  32. package/dist/components/Views/CreateAssistantDialog.js +20 -4
  33. package/dist/components/Views/EditAssistantDialog.js +9 -2
  34. package/dist/components/queries.d.ts +9 -0
  35. package/dist/components/queries.js +17 -1
  36. package/dist/hooks/useConversation.spec.js +24 -13
  37. package/dist/hooks/useConversation.spec.jsx +27 -15
  38. package/dist/locales/en.json +10 -23
  39. package/dist/locales/fr.json +13 -26
  40. package/dist/locales/index.js +20 -58
  41. package/dist/locales/ru.json +0 -6
  42. package/dist/locales/vi.json +0 -6
  43. package/dist/stylesheet.css +12 -88
  44. package/package.json +5 -3
  45. package/dist/assets/tchat.png +0 -0
  46. package/dist/components/TwakeKnowledges/ChatKnowledge.d.ts +0 -6
  47. package/dist/components/TwakeKnowledges/ChatKnowledge.js +0 -107
  48. package/dist/components/TwakeKnowledges/DriveKnowledge.d.ts +0 -6
  49. package/dist/components/TwakeKnowledges/DriveKnowledge.js +0 -244
  50. package/dist/components/TwakeKnowledges/MailKnowledge.d.ts +0 -6
  51. package/dist/components/TwakeKnowledges/MailKnowledge.js +0 -264
  52. package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.d.ts +0 -4
  53. package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.js +0 -230
@@ -19,8 +19,6 @@ var _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"))
19
19
 
20
20
  var styles = {
21
21
  "assistant-container": "styles__assistant-container___2WDzp",
22
- "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
23
- "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
24
22
  "trigger-button": "styles__trigger-button___yyIz8",
25
23
  "assistant-icon": "styles__assistant-icon___1VM6i",
26
24
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
@@ -13,8 +13,6 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
15
 
16
- var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
17
-
18
16
  var _AssistantProvider = require("../AssistantProvider");
19
17
 
20
18
  var _PrettyScrollbar = _interopRequireDefault(require("../Containers/PrettyScrollbar"));
@@ -27,12 +25,8 @@ var _SearchConversation = _interopRequireDefault(require("../Search/SearchConver
27
25
 
28
26
  var _Sidebar = _interopRequireDefault(require("../Sidebar"));
29
27
 
30
- var _TwakeKnowledgePanel = _interopRequireDefault(require("../TwakeKnowledges/TwakeKnowledgePanel"));
31
-
32
28
  var styles = {
33
29
  "assistant-container": "styles__assistant-container___2WDzp",
34
- "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
35
- "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
36
30
  "trigger-button": "styles__trigger-button___yyIz8",
37
31
  "assistant-icon": "styles__assistant-icon___1VM6i",
38
32
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
@@ -47,12 +41,7 @@ var styles = {
47
41
 
48
42
  var AssistantContainer = function AssistantContainer() {
49
43
  var _useAssistant = (0, _AssistantProvider.useAssistant)(),
50
- isOpenSearchConversation = _useAssistant.isOpenSearchConversation,
51
- openedKnowledgePanel = _useAssistant.openedKnowledgePanel,
52
- setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel;
53
-
54
- var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
55
- theme = _useCozyTheme.type;
44
+ isOpenSearchConversation = _useAssistant.isOpenSearchConversation;
56
45
 
57
46
  return /*#__PURE__*/_react.default.createElement("div", {
58
47
  className: (0, _classnames.default)('u-flex u-ov-hidden u-h-100', styles['assistant-container'])
@@ -60,13 +49,7 @@ var AssistantContainer = function AssistantContainer() {
60
49
  className: "u-pb-0-t u-pb-1"
61
50
  }), /*#__PURE__*/_react.default.createElement(_PrettyScrollbar.default, {
62
51
  className: "u-flex-auto u-flex u-flex-column u-pb-0-t u-pb-1 u-ov-hidden"
63
- }, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.assistant.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))), openedKnowledgePanel && (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled') && /*#__PURE__*/_react.default.createElement("div", {
64
- className: (0, _classnames.default)('u-h-100 u-maw-7 u-pl-half', styles["knowledge-panel--".concat(theme)])
65
- }, /*#__PURE__*/_react.default.createElement(_TwakeKnowledgePanel.default, {
66
- onClose: function onClose() {
67
- return setOpenedKnowledgePanel(undefined);
68
- }
69
- })));
52
+ }, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.assistant.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))));
70
53
  };
71
54
 
72
55
  var _default = AssistantContainer;
@@ -47,8 +47,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
47
47
 
48
48
  var styles = {
49
49
  "assistant-container": "styles__assistant-container___2WDzp",
50
- "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
51
- "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
52
50
  "trigger-button": "styles__trigger-button___yyIz8",
53
51
  "assistant-icon": "styles__assistant-icon___1VM6i",
54
52
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
@@ -33,8 +33,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
33
33
 
34
34
  var styles = {
35
35
  "assistant-container": "styles__assistant-container___2WDzp",
36
- "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
37
- "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
38
36
  "trigger-button": "styles__trigger-button___yyIz8",
39
37
  "assistant-icon": "styles__assistant-icon___1VM6i",
40
38
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
@@ -1,13 +1,6 @@
1
1
  .assistant-container
2
2
  z-index 1
3
3
 
4
- .knowledge-panel
5
- &--light
6
- background-color var(--primaryBackgroundLight)
7
-
8
- &--dark
9
- background-color var(--greyA400)
10
-
11
4
  .trigger-button
12
5
  border-radius 20px
13
6
  padding 4px 12px
@@ -1,11 +1,5 @@
1
1
  import React from 'react'
2
2
 
3
- export interface TwakeKnowledgeState {
4
- drive: { id: string; name: string }[]
5
- mail: { id: string; name: string }[]
6
- chat: { id: string; name: string }[]
7
- }
8
-
9
3
  export interface AssistantContextValue {
10
4
  isOpenCreateAssistant: boolean
11
5
  isOpenDeleteAssistant: boolean
@@ -13,18 +7,12 @@ export interface AssistantContextValue {
13
7
  assistantIdInAction: string | null
14
8
  selectedAssistantId: string
15
9
  isOpenSearchConversation: boolean
16
- openedKnowledgePanel: string | null
17
- selectedTwakeKnowledge: TwakeKnowledgeState
18
10
  setAssistantIdInAction: (id: string | null) => void
19
11
  setIsOpenDeleteAssistant: (isOpen: boolean) => void
20
12
  setIsOpenCreateAssistant: (isOpen: boolean) => void
21
13
  setIsOpenEditAssistant: (isOpen: boolean) => void
22
14
  setSelectedAssistantId: (id: string) => void
23
15
  setIsOpenSearchConversation: (isOpen: boolean) => void
24
- setOpenedKnowledgePanel: (panel: string | null) => void
25
- setSelectedTwakeKnowledge: React.Dispatch<
26
- React.SetStateAction<TwakeKnowledgeState>
27
- >
28
16
  websearchEnabled: boolean
29
17
  setWebsearchEnabled: React.Dispatch<React.SetStateAction<boolean>>
30
18
  }
@@ -70,24 +70,10 @@ var AssistantProvider = function AssistantProvider(_ref) {
70
70
  isOpenSearchConversation = _useState12[0],
71
71
  setIsOpenSearchConversation = _useState12[1];
72
72
 
73
- var _useState13 = (0, _react.useState)({
74
- drive: [],
75
- mail: [],
76
- chat: []
77
- }),
73
+ var _useState13 = (0, _react.useState)(false),
78
74
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
79
- selectedTwakeKnowledge = _useState14[0],
80
- setSelectedTwakeKnowledge = _useState14[1];
81
-
82
- var _useState15 = (0, _react.useState)(null),
83
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
84
- openedKnowledgePanel = _useState16[0],
85
- setOpenedKnowledgePanel = _useState16[1];
86
-
87
- var _useState17 = (0, _react.useState)(false),
88
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
89
- websearchEnabled = _useState18[0],
90
- setWebsearchEnabled = _useState18[1];
75
+ websearchEnabled = _useState14[0],
76
+ setWebsearchEnabled = _useState14[1];
91
77
 
92
78
  var value = (0, _react.useMemo)(function () {
93
79
  return {
@@ -97,20 +83,16 @@ var AssistantProvider = function AssistantProvider(_ref) {
97
83
  assistantIdInAction: assistantIdInAction,
98
84
  selectedAssistantId: selectedAssistantId,
99
85
  isOpenSearchConversation: isOpenSearchConversation,
100
- openedKnowledgePanel: openedKnowledgePanel,
101
- selectedTwakeKnowledge: selectedTwakeKnowledge,
102
86
  setAssistantIdInAction: setAssistantIdInAction,
103
87
  setIsOpenDeleteAssistant: setIsOpenDeleteAssistant,
104
88
  setIsOpenCreateAssistant: setIsOpenCreateAssistant,
105
89
  setIsOpenEditAssistant: setIsOpenEditAssistant,
106
90
  setSelectedAssistantId: setSelectedAssistantId,
107
91
  setIsOpenSearchConversation: setIsOpenSearchConversation,
108
- setOpenedKnowledgePanel: setOpenedKnowledgePanel,
109
- setSelectedTwakeKnowledge: setSelectedTwakeKnowledge,
110
92
  websearchEnabled: websearchEnabled,
111
93
  setWebsearchEnabled: setWebsearchEnabled
112
94
  };
113
- }, [isOpenCreateAssistant, isOpenDeleteAssistant, isOpenEditAssistant, assistantIdInAction, selectedAssistantId, isOpenSearchConversation, openedKnowledgePanel, selectedTwakeKnowledge, websearchEnabled]);
95
+ }, [isOpenCreateAssistant, isOpenDeleteAssistant, isOpenEditAssistant, assistantIdInAction, selectedAssistantId, isOpenSearchConversation, websearchEnabled]);
114
96
  return /*#__PURE__*/_react.default.createElement(AssistantContext.Provider, {
115
97
  value: value
116
98
  }, children);
@@ -11,12 +11,12 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var _react = require("@assistant-ui/react");
13
13
 
14
- var _twakeIcons = require("@linagora/twake-icons");
15
-
16
14
  var _classnames = _interopRequireDefault(require("classnames"));
17
15
 
18
16
  var _react2 = _interopRequireWildcard(require("react"));
19
17
 
18
+ var _twakeIcons = require("@linagora/twake-icons");
19
+
20
20
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
21
21
 
22
22
  var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
@@ -82,7 +82,6 @@ var ConversationComposer = function ConversationComposer() {
82
82
  });
83
83
 
84
84
  var _useAssistant = (0, _AssistantProvider.useAssistant)(),
85
- setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel,
86
85
  websearchEnabled = _useAssistant.websearchEnabled,
87
86
  setWebsearchEnabled = _useAssistant.setWebsearchEnabled;
88
87
 
@@ -152,7 +151,6 @@ var ConversationComposer = function ConversationComposer() {
152
151
  disabled: !isThreadEmpty
153
152
  }), /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
154
153
  className: "u-ml-auto",
155
- onSelectTwakeKnowledge: setOpenedKnowledgePanel,
156
154
  websearchEnabled: websearchEnabled,
157
155
  onToggleWebsearch: handleToggleWebsearch
158
156
  })));
@@ -32,8 +32,10 @@ var AssistantDialogContent = function AssistantDialogContent(_ref) {
32
32
  name: formData.name,
33
33
  description: formData.description,
34
34
  icon: formData.icon,
35
+ knowledgeBase: formData.knowledgeBase,
35
36
  onChange: onChange,
36
- onAvatarChange: onAvatarChange
37
+ onAvatarChange: onAvatarChange,
38
+ onKnowledgeBaseChange: onChange('knowledgeBase')
37
39
  });
38
40
 
39
41
  case _useAssistantDialog.STEPS.MODEL_SELECTION:
@@ -1,8 +1,10 @@
1
1
  export default BasicInfoStep;
2
- declare function BasicInfoStep({ name, description, icon, onChange, onAvatarChange }: {
2
+ declare function BasicInfoStep({ name, description, icon, knowledgeBase, onChange, onAvatarChange, onKnowledgeBaseChange }: {
3
3
  name: any;
4
4
  description: any;
5
5
  icon: any;
6
+ knowledgeBase: any;
6
7
  onChange: any;
7
8
  onAvatarChange: any;
9
+ onKnowledgeBaseChange: any;
8
10
  }): JSX.Element;
@@ -17,6 +17,8 @@ var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typog
17
17
 
18
18
  var _twakeI18n = require("twake-i18n");
19
19
 
20
+ var _KnowledgeBaseSection = _interopRequireDefault(require("../KnowledgeBase/KnowledgeBaseSection"));
21
+
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
 
22
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -46,8 +48,10 @@ var BasicInfoStep = function BasicInfoStep(_ref) {
46
48
  var name = _ref.name,
47
49
  description = _ref.description,
48
50
  icon = _ref.icon,
51
+ knowledgeBase = _ref.knowledgeBase,
49
52
  onChange = _ref.onChange,
50
- onAvatarChange = _ref.onAvatarChange;
53
+ onAvatarChange = _ref.onAvatarChange,
54
+ onKnowledgeBaseChange = _ref.onKnowledgeBaseChange;
51
55
 
52
56
  var _useI18n = (0, _twakeI18n.useI18n)(),
53
57
  t = _useI18n.t;
@@ -129,7 +133,10 @@ var BasicInfoStep = function BasicInfoStep(_ref) {
129
133
  value: description,
130
134
  onChange: onChange('description'),
131
135
  variant: "outlined"
132
- })));
136
+ })), /*#__PURE__*/_react.default.createElement(_KnowledgeBaseSection.default, {
137
+ knowledgeBase: knowledgeBase,
138
+ onChange: onKnowledgeBaseChange
139
+ }));
133
140
  };
134
141
 
135
142
  var _default = BasicInfoStep;
@@ -23,6 +23,7 @@ export function useAssistantDialog({ onClose, initialData }: {
23
23
  model: string;
24
24
  baseUrl: string;
25
25
  apiKey: string;
26
+ knowledgeBase: never[];
26
27
  };
27
28
  setFormData: import("react").Dispatch<import("react").SetStateAction<{
28
29
  constructor: Function;
@@ -38,6 +39,7 @@ export function useAssistantDialog({ onClose, initialData }: {
38
39
  model: string;
39
40
  baseUrl: string;
40
41
  apiKey: string;
42
+ knowledgeBase: never[];
41
43
  }>>;
42
44
  selectedProvider: any;
43
45
  setSelectedProvider: import("react").Dispatch<any>;
@@ -76,7 +76,8 @@ var useAssistantDialog = function useAssistantDialog(_ref) {
76
76
  icon: null,
77
77
  model: '',
78
78
  baseUrl: '',
79
- apiKey: ''
79
+ apiKey: '',
80
+ knowledgeBase: []
80
81
  }, initialData)),
81
82
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
82
83
  formData = _useState6[0],
@@ -0,0 +1,10 @@
1
+ export default FolderPickerDialog;
2
+ /**
3
+ * Hosts the Drive `PICK io.cozy.files` intent (folder `reference` mode)
4
+ * in an iframe dialog, so the surrounding wizard keeps its state.
5
+ */
6
+ declare function FolderPickerDialog({ open, onClose, onSelect }: {
7
+ open: any;
8
+ onClose: any;
9
+ onSelect: any;
10
+ }): JSX.Element;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _cozyClient = require("cozy-client");
15
+
16
+ var _cozyInterapp = _interopRequireDefault(require("cozy-interapp"));
17
+
18
+ var _Dialog = _interopRequireWildcard(require("cozy-ui/transpiled/react/Dialog"));
19
+
20
+ var _Alert = require("cozy-ui/transpiled/react/providers/Alert");
21
+
22
+ var _twakeI18n = require("twake-i18n");
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ var styles = {
29
+ "intentHost": "styles__intentHost___1ixnl"
30
+ };
31
+ /**
32
+ * Hosts the Drive `PICK io.cozy.files` intent (folder `reference` mode)
33
+ * in an iframe dialog, so the surrounding wizard keeps its state.
34
+ */
35
+
36
+ var FolderPickerDialog = function FolderPickerDialog(_ref) {
37
+ var open = _ref.open,
38
+ onClose = _ref.onClose,
39
+ onSelect = _ref.onSelect;
40
+ var client = (0, _cozyClient.useClient)();
41
+
42
+ var _useI18n = (0, _twakeI18n.useI18n)(),
43
+ t = _useI18n.t;
44
+
45
+ var _useAlert = (0, _Alert.useAlert)(),
46
+ showAlert = _useAlert.showAlert; // Callback-ref into state: MUI's Portal attaches the dialog content in its
47
+ // own effect, so a plain ref is still null when this component's first
48
+ // effect runs. State makes the effect re-run once the host node exists.
49
+
50
+
51
+ var _useState = (0, _react.useState)(null),
52
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
53
+ intentHost = _useState2[0],
54
+ setIntentHost = _useState2[1];
55
+
56
+ (0, _react.useEffect)(function () {
57
+ if (!open || !intentHost) return undefined;
58
+ var cancelled = false;
59
+ var intents = new _cozyInterapp.default({
60
+ client: client
61
+ });
62
+ var startPromise = intents.create('PICK', 'io.cozy.files', {
63
+ // Drive's FilePickerConfig: null hides an action, so only the
64
+ // side-effect-free folder `reference` action remains visible
65
+ sharingLink: null,
66
+ downloadLink: null,
67
+ reference: {
68
+ label: t('assistant.knowledge_base.select_folder'),
69
+ allowFolder: true,
70
+ onlyFolder: true
71
+ }
72
+ }).start(intentHost);
73
+ startPromise.then(function (result) {
74
+ if (cancelled) return undefined;
75
+ var folder = Array.isArray(result) ? result[0] : result;
76
+
77
+ if (folder) {
78
+ onSelect(folder);
79
+ }
80
+
81
+ onClose();
82
+ return undefined;
83
+ }).catch(function () {
84
+ if (cancelled) return;
85
+ showAlert({
86
+ message: t('assistant.knowledge_base.picker_error'),
87
+ severity: 'error'
88
+ });
89
+ onClose();
90
+ });
91
+ return function () {
92
+ var _startPromise$stop;
93
+
94
+ cancelled = true;
95
+ (_startPromise$stop = startPromise.stop) === null || _startPromise$stop === void 0 ? void 0 : _startPromise$stop.call(startPromise);
96
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
97
+ }, [open, client, intentHost]);
98
+ return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
99
+ open: open,
100
+ onClose: onClose,
101
+ maxWidth: "md",
102
+ fullWidth: true
103
+ }, /*#__PURE__*/_react.default.createElement(_Dialog.DialogContent, {
104
+ className: "u-p-0"
105
+ }, /*#__PURE__*/_react.default.createElement("div", {
106
+ ref: setIntentHost,
107
+ className: styles.intentHost
108
+ })));
109
+ };
110
+
111
+ var _default = FolderPickerDialog;
112
+ exports.default = _default;
@@ -0,0 +1,16 @@
1
+ export default KnowledgeBaseChip;
2
+ /**
3
+ * Composer chip showing the selected assistant's knowledge-base folder,
4
+ * rendered in the "selected source" style (like the email source chip).
5
+ *
6
+ * Clicking stays in-app: it opens a small menu with explicit actions —
7
+ * open the folder in Drive (new tab) or change the knowledge base through
8
+ * the Drive folder picker (persisted on the assistant immediately).
9
+ */
10
+ declare function KnowledgeBaseChip({ dirId, folder, isUnavailable, isLast, onChangeFolder }: {
11
+ dirId: any;
12
+ folder: any;
13
+ isUnavailable: any;
14
+ isLast: any;
15
+ onChangeFolder: any;
16
+ }): JSX.Element;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _twakeIcons = require("@linagora/twake-icons");
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _cozyClient = require("cozy-client");
19
+
20
+ var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
21
+
22
+ var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
23
+
24
+ var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
25
+
26
+ var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
27
+
28
+ var _twakeI18n = require("twake-i18n");
29
+
30
+ var _FolderPickerDialog = _interopRequireDefault(require("./FolderPickerDialog"));
31
+
32
+ var _tdrive = _interopRequireDefault(require("../../assets/tdrive.png"));
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ /**
39
+ * Composer chip showing the selected assistant's knowledge-base folder,
40
+ * rendered in the "selected source" style (like the email source chip).
41
+ *
42
+ * Clicking stays in-app: it opens a small menu with explicit actions —
43
+ * open the folder in Drive (new tab) or change the knowledge base through
44
+ * the Drive folder picker (persisted on the assistant immediately).
45
+ */
46
+ var KnowledgeBaseChip = function KnowledgeBaseChip(_ref) {
47
+ var _folder$name;
48
+
49
+ var dirId = _ref.dirId,
50
+ folder = _ref.folder,
51
+ isUnavailable = _ref.isUnavailable,
52
+ isLast = _ref.isLast,
53
+ onChangeFolder = _ref.onChangeFolder;
54
+
55
+ var _useI18n = (0, _twakeI18n.useI18n)(),
56
+ t = _useI18n.t;
57
+
58
+ var client = (0, _cozyClient.useClient)();
59
+ var chipRef = (0, _react.useRef)(null);
60
+
61
+ var _useState = (0, _react.useState)(false),
62
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
63
+ isMenuOpen = _useState2[0],
64
+ setIsMenuOpen = _useState2[1];
65
+
66
+ var _useState3 = (0, _react.useState)(false),
67
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
68
+ isPickerOpen = _useState4[0],
69
+ setIsPickerOpen = _useState4[1];
70
+
71
+ var closeMenu = function closeMenu() {
72
+ return setIsMenuOpen(false);
73
+ };
74
+
75
+ var handleChangeFolder = function handleChangeFolder() {
76
+ closeMenu();
77
+ setIsPickerOpen(true);
78
+ };
79
+
80
+ var folderUrl = (0, _cozyClient.generateWebLink)({
81
+ slug: 'drive',
82
+ cozyUrl: client === null || client === void 0 ? void 0 : client.getStackClient().uri,
83
+ subDomainType: client === null || client === void 0 ? void 0 : client.getInstanceOptions().subdomain,
84
+ hash: "/folder/".concat(dirId)
85
+ });
86
+ var label = isUnavailable ? t('assistant.knowledge_base.unavailable') : (_folder$name = folder === null || folder === void 0 ? void 0 : folder.name) !== null && _folder$name !== void 0 ? _folder$name : '…';
87
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
88
+ ref: chipRef,
89
+ className: (0, _classnames.default)({
90
+ 'u-mr-half': !isLast
91
+ })
92
+ }, /*#__PURE__*/_react.default.createElement(_Chips.default, {
93
+ icon: /*#__PURE__*/_react.default.createElement("img", {
94
+ alt: "",
95
+ "aria-hidden": "true",
96
+ src: _tdrive.default,
97
+ width: 16,
98
+ className: "u-m-0"
99
+ }),
100
+ label: /*#__PURE__*/_react.default.createElement("span", {
101
+ className: "u-flex u-flex-items-center"
102
+ }, label, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
103
+ icon: _twakeIcons.Dropdown,
104
+ size: 16,
105
+ className: "u-ml-half"
106
+ })),
107
+ variant: "ghost",
108
+ clickable: true,
109
+ onClick: function onClick() {
110
+ return setIsMenuOpen(true);
111
+ },
112
+ className: "u-w-auto u-ph-half u-mr-0"
113
+ })), isMenuOpen && /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
114
+ open: true,
115
+ ref: chipRef,
116
+ onClose: closeMenu,
117
+ actions: [],
118
+ anchorOrigin: {
119
+ vertical: 'bottom',
120
+ horizontal: 'left'
121
+ }
122
+ }, !isUnavailable && /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
123
+ component: "a",
124
+ href: folderUrl,
125
+ target: "_blank",
126
+ rel: "noopener noreferrer",
127
+ onClick: closeMenu
128
+ }, /*#__PURE__*/_react.default.createElement("div", {
129
+ className: "u-flex u-flex-items-center"
130
+ }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
131
+ icon: _twakeIcons.LinkOut,
132
+ size: 16,
133
+ className: "u-mr-half"
134
+ }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
135
+ variant: "body1"
136
+ }, t('assistant.knowledge_base.open_folder')))), /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
137
+ onClick: handleChangeFolder
138
+ }, /*#__PURE__*/_react.default.createElement("div", {
139
+ className: "u-flex u-flex-items-center"
140
+ }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
141
+ icon: _twakeIcons.Pen,
142
+ size: 16,
143
+ className: "u-mr-half"
144
+ }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
145
+ variant: "body1"
146
+ }, t('assistant.knowledge_base.change_folder'))))), isPickerOpen && /*#__PURE__*/_react.default.createElement(_FolderPickerDialog.default, {
147
+ open: isPickerOpen,
148
+ onClose: function onClose() {
149
+ return setIsPickerOpen(false);
150
+ },
151
+ onSelect: onChangeFolder
152
+ }));
153
+ };
154
+
155
+ var _default = KnowledgeBaseChip;
156
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ export default KnowledgeBaseSection;
2
+ declare function KnowledgeBaseSection({ knowledgeBase, onChange }: {
3
+ knowledgeBase?: any[] | undefined;
4
+ onChange: any;
5
+ }): JSX.Element;