cozy-search 2.0.11 → 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.
- package/dist/components/Assistant/AssistantAvatar.js +0 -2
- package/dist/components/Assistant/AssistantContainer.js +2 -19
- package/dist/components/Assistant/AssistantSelection.js +0 -2
- package/dist/components/Assistant/AssistantSelectionItem.js +0 -2
- package/dist/components/Assistant/styles.styl +0 -7
- package/dist/components/AssistantProvider.d.ts +0 -12
- package/dist/components/AssistantProvider.js +4 -22
- package/dist/components/Conversations/ConversationComposer.js +2 -4
- package/dist/components/CreateAssistantSteps/AssistantDialogContent.js +3 -1
- package/dist/components/CreateAssistantSteps/BasicInfoStep.d.ts +3 -1
- package/dist/components/CreateAssistantSteps/BasicInfoStep.js +9 -2
- package/dist/components/CreateAssistantSteps/useAssistantDialog.d.ts +2 -0
- package/dist/components/CreateAssistantSteps/useAssistantDialog.js +2 -1
- package/dist/components/KnowledgeBase/FolderPickerDialog.d.ts +10 -0
- package/dist/components/KnowledgeBase/FolderPickerDialog.js +112 -0
- package/dist/components/KnowledgeBase/KnowledgeBaseChip.d.ts +16 -0
- package/dist/components/KnowledgeBase/KnowledgeBaseChip.js +156 -0
- package/dist/components/KnowledgeBase/KnowledgeBaseSection.d.ts +5 -0
- package/dist/components/KnowledgeBase/KnowledgeBaseSection.js +173 -0
- package/dist/components/KnowledgeBase/knowledgeBase.d.ts +12 -0
- package/dist/components/KnowledgeBase/knowledgeBase.js +131 -0
- package/dist/components/KnowledgeBase/knowledgeBase.spec.d.ts +1 -0
- package/dist/components/KnowledgeBase/knowledgeBase.spec.js +177 -0
- package/dist/components/KnowledgeBase/styles.styl +12 -0
- package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.d.ts +8 -0
- package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.js +117 -0
- package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.d.ts +9 -2
- package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.js +20 -52
- package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.d.ts +2 -3
- package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +43 -24
- package/dist/components/TwakeKnowledges/styles.styl +0 -82
- package/dist/components/Views/CreateAssistantDialog.js +20 -4
- package/dist/components/Views/EditAssistantDialog.js +9 -2
- package/dist/components/queries.d.ts +9 -0
- package/dist/components/queries.js +17 -1
- package/dist/hooks/useConversation.spec.js +24 -13
- package/dist/hooks/useConversation.spec.jsx +27 -15
- package/dist/locales/en.json +10 -23
- package/dist/locales/fr.json +13 -26
- package/dist/locales/index.js +20 -58
- package/dist/locales/ru.json +0 -6
- package/dist/locales/vi.json +0 -6
- package/dist/stylesheet.css +12 -88
- package/package.json +4 -2
- package/dist/assets/tchat.png +0 -0
- package/dist/components/TwakeKnowledges/ChatKnowledge.d.ts +0 -6
- package/dist/components/TwakeKnowledges/ChatKnowledge.js +0 -107
- package/dist/components/TwakeKnowledges/DriveKnowledge.d.ts +0 -6
- package/dist/components/TwakeKnowledges/DriveKnowledge.js +0 -244
- package/dist/components/TwakeKnowledges/MailKnowledge.d.ts +0 -6
- package/dist/components/TwakeKnowledges/MailKnowledge.js +0 -264
- package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.d.ts +0 -4
- 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)))
|
|
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,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
|
-
|
|
80
|
-
|
|
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,
|
|
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;
|