hanbiro-react16-sdk 1.0.31 → 1.0.32
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/README.md +22 -35
- package/dist/components/ChatAIDraft/CreatePanel/index.js +2 -2
- package/dist/components/ChatAIDraft/ReplyPanel/index.js +2 -2
- package/dist/components/ChatAIDraft/helper.js +3 -31
- package/dist/components/SummaryAIEmails/index.js +3 -2
- package/dist/components/SummaryAIEmails/utils.js +1 -0
- package/dist/components/index.d.ts +0 -2
- package/dist/hanbiro-react16-sdk.style.css +1 -1
- package/dist/hanbiro-react16-sdk.umd.js +227 -262
- package/dist/index.js +9 -12
- package/dist/lang/index.js +2 -2
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/lang.d.ts +1 -1
- package/dist/utils/lang.js +2 -1
- package/dist/utils/url.d.ts +1 -9
- package/dist/utils/url.js +5 -23
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -40,28 +40,34 @@ import "hanbiro-react16-sdk/style.css";
|
|
|
40
40
|
|
|
41
41
|
## Exported Utils
|
|
42
42
|
|
|
43
|
-
| Function
|
|
44
|
-
|
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
43
|
+
| Function | Description | Import path |
|
|
44
|
+
| ----------------- | ---------------------------------------------------- | --------------------------- |
|
|
45
|
+
| `setLibLang` | Set the active language for SDK components | `hanbiro-react16-sdk/utils` |
|
|
46
|
+
| `getBaseUrl` | Get the base URL (derived from the current location) | `hanbiro-react16-sdk/utils` |
|
|
47
|
+
| `getGroupwareUrl` | Get the groupware URL | `hanbiro-react16-sdk/utils` |
|
|
48
|
+
| `getAppVersion` | Get the detected app version (`"v2"` \| `"v3"`) | `hanbiro-react16-sdk/utils` |
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
52
|
-
##
|
|
52
|
+
## Versioned Theming (Automatic)
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
The SDK serves both the v3 app (URL contains `/v3`) and the v2 app (URL contains `/ngw/app`).
|
|
55
|
+
On import, the SDK detects the current version from the URL and sets a
|
|
56
|
+
`data-hanbiro-sdk-version` attribute (`"v2"` | `"v3"`) on the `<html>` element:
|
|
55
57
|
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
baseUrl: "https://vndev.hanbiro.com",
|
|
61
|
-
signer: null, // Pass your signer instance here if available
|
|
62
|
-
});
|
|
58
|
+
```html
|
|
59
|
+
<html data-hanbiro-sdk-version="v2">
|
|
60
|
+
...
|
|
61
|
+
</html>
|
|
63
62
|
```
|
|
64
63
|
|
|
64
|
+
The stylesheet then overrides the primary color palette for v2 via the
|
|
65
|
+
`:root[data-hanbiro-sdk-version="v2"]` selector. **No initialization call is required** —
|
|
66
|
+
just import the SDK and its stylesheet.
|
|
67
|
+
|
|
68
|
+
> The base URL is derived automatically from the current location (`getBaseUrl`),
|
|
69
|
+
> so there is no manual setup step.
|
|
70
|
+
|
|
65
71
|
---
|
|
66
72
|
|
|
67
73
|
## Language Configuration (`setLibLang`)
|
|
@@ -75,13 +81,9 @@ Use `setLibLang` to configure the active language imperatively.
|
|
|
75
81
|
### ES Module (npm)
|
|
76
82
|
|
|
77
83
|
```ts
|
|
78
|
-
import {
|
|
84
|
+
import { setLibLang } from "hanbiro-react16-sdk/utils";
|
|
79
85
|
|
|
80
86
|
// Call ONCE at app startup, before rendering any SDK component
|
|
81
|
-
initHanbiroReactSDK({
|
|
82
|
-
baseUrl: "https://vndev.hanbiro.com",
|
|
83
|
-
signer: null,
|
|
84
|
-
});
|
|
85
87
|
setLibLang("ko");
|
|
86
88
|
```
|
|
87
89
|
|
|
@@ -107,10 +109,6 @@ function App() {
|
|
|
107
109
|
### UMD (script tag)
|
|
108
110
|
|
|
109
111
|
```js
|
|
110
|
-
HanbiroReact16SDK.initHanbiroReactSDK({
|
|
111
|
-
baseUrl: "https://vndev.hanbiro.com",
|
|
112
|
-
signer: null,
|
|
113
|
-
});
|
|
114
112
|
HanbiroReact16SDK.setLibLang("ko");
|
|
115
113
|
```
|
|
116
114
|
|
|
@@ -158,12 +156,6 @@ Load the SDK via `<script>` and `<link>` tags directly in your HTML. React and R
|
|
|
158
156
|
The SDK is exposed as a global variable `HanbiroReact16SDK`.
|
|
159
157
|
|
|
160
158
|
```js
|
|
161
|
-
// Initialize
|
|
162
|
-
HanbiroReact16SDK.initHanbiroReactSDK({
|
|
163
|
-
baseUrl: "https://vndev.hanbiro.com",
|
|
164
|
-
signer: null,
|
|
165
|
-
});
|
|
166
|
-
|
|
167
159
|
// Mount a component into a DOM element
|
|
168
160
|
ReactDOM.render(
|
|
169
161
|
React.createElement(HanbiroReact16SDK.ChatAIDraft, {
|
|
@@ -185,11 +177,6 @@ angular.module("myApp").directive("chatAiDraft", function () {
|
|
|
185
177
|
link: function (scope, element) {
|
|
186
178
|
var container = element[0];
|
|
187
179
|
|
|
188
|
-
HanbiroReact16SDK.initHanbiroReactSDK({
|
|
189
|
-
baseUrl: "https://vndev.hanbiro.com",
|
|
190
|
-
signer: null,
|
|
191
|
-
});
|
|
192
|
-
|
|
193
180
|
ReactDOM.render(
|
|
194
181
|
React.createElement(HanbiroReact16SDK.ChatAIDraft, {
|
|
195
182
|
baseUrl: HanbiroReact16SDK.getBaseUrl(),
|
|
@@ -45,7 +45,7 @@ import ChatInput from "../ChatInput.js";
|
|
|
45
45
|
import EmptyState from "./EmptyState.js";
|
|
46
46
|
import { getLengthOptions, getToneOptions } from "../constants.js";
|
|
47
47
|
import { AI_LANG_FLAGS } from "../../../constants/index.js";
|
|
48
|
-
import {
|
|
48
|
+
import { CURRENT_LANG } from "../../../utils/lang.js";
|
|
49
49
|
import v4 from "../../../node_modules/uuid/dist/esm-browser/v4.js";
|
|
50
50
|
class CreatePanel extends React.Component {
|
|
51
51
|
constructor(props) {
|
|
@@ -109,7 +109,7 @@ class CreatePanel extends React.Component {
|
|
|
109
109
|
__publicField(this, "setTone", (tone) => this.setState({ tone }));
|
|
110
110
|
__publicField(this, "setLength", (length) => this.setState({ length }));
|
|
111
111
|
this.rootRef = React.createRef();
|
|
112
|
-
const lang = ((_a = AI_LANG_FLAGS) == null ? void 0 : _a.find((_item) => (_item == null ? void 0 : _item.value) ===
|
|
112
|
+
const lang = ((_a = AI_LANG_FLAGS) == null ? void 0 : _a.find((_item) => (_item == null ? void 0 : _item.value) === CURRENT_LANG)) || AI_LANG_FLAGS[0];
|
|
113
113
|
this.state = {
|
|
114
114
|
message: "",
|
|
115
115
|
messages: [],
|
|
@@ -49,8 +49,8 @@ import ContextPreviewModal from "./ContextPreviewModal.js";
|
|
|
49
49
|
import { fetchMailView, fetchMailAiContext } from "./helper.js";
|
|
50
50
|
import { getLengthOptions, getToneOptions } from "../constants.js";
|
|
51
51
|
import { AI_LANG_FLAGS } from "../../../constants/index.js";
|
|
52
|
-
import { SDKConfig } from "../../../utils/url.js";
|
|
53
52
|
import { t } from "../../../lang/index.js";
|
|
53
|
+
import { CURRENT_LANG } from "../../../utils/lang.js";
|
|
54
54
|
import v4 from "../../../node_modules/uuid/dist/esm-browser/v4.js";
|
|
55
55
|
import { LangKey } from "../../../lang/keyLang.js";
|
|
56
56
|
class ReplyPanel extends React.Component {
|
|
@@ -181,7 +181,7 @@ class ReplyPanel extends React.Component {
|
|
|
181
181
|
__publicField(this, "setTone", (tone) => this.setState({ tone }));
|
|
182
182
|
__publicField(this, "setLength", (length) => this.setState({ length }));
|
|
183
183
|
this.rootRef = React.createRef();
|
|
184
|
-
const lang = ((_a = AI_LANG_FLAGS) == null ? void 0 : _a.find((_item) => (_item == null ? void 0 : _item.value) ===
|
|
184
|
+
const lang = ((_a = AI_LANG_FLAGS) == null ? void 0 : _a.find((_item) => (_item == null ? void 0 : _item.value) === CURRENT_LANG)) || AI_LANG_FLAGS[0];
|
|
185
185
|
this.state = {
|
|
186
186
|
view: "empty",
|
|
187
187
|
sourceMail: null,
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
1
|
var __async = (__this, __arguments, generator) => {
|
|
18
2
|
return new Promise((resolve, reject) => {
|
|
19
3
|
var fulfilled = (value) => {
|
|
@@ -34,32 +18,20 @@ var __async = (__this, __arguments, generator) => {
|
|
|
34
18
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
35
19
|
});
|
|
36
20
|
};
|
|
37
|
-
import { getBaseUrl
|
|
21
|
+
import { getBaseUrl } from "../../utils/url.js";
|
|
38
22
|
function callAI(_0, _1) {
|
|
39
23
|
return __async(this, arguments, function* (params, { setContent, setIsLoading, setConversationId }) {
|
|
40
|
-
var _a;
|
|
41
24
|
let currentContent = "";
|
|
42
25
|
const baseUrl = getBaseUrl();
|
|
43
26
|
try {
|
|
44
27
|
setIsLoading(true);
|
|
45
|
-
const config = {
|
|
46
|
-
method: "POST",
|
|
47
|
-
baseURL: baseUrl,
|
|
48
|
-
url: "/nmail/chatdraft",
|
|
49
|
-
params
|
|
50
|
-
};
|
|
51
|
-
let sigHeaders = {};
|
|
52
|
-
const signer = (_a = SDKConfig) == null ? void 0 : _a.signer;
|
|
53
|
-
if (signer && typeof signer.generateHeaders === "function") {
|
|
54
|
-
sigHeaders = yield signer.generateHeaders(config);
|
|
55
|
-
}
|
|
56
28
|
const response = yield fetch(`${baseUrl}/nmail/chatdraft`, {
|
|
57
29
|
method: "POST",
|
|
58
30
|
body: JSON.stringify(params),
|
|
59
|
-
headers:
|
|
31
|
+
headers: {
|
|
60
32
|
"Content-Type": "application/json",
|
|
61
33
|
"Access-Control-Allow-Origin": "*"
|
|
62
|
-
}
|
|
34
|
+
}
|
|
63
35
|
});
|
|
64
36
|
setIsLoading(false);
|
|
65
37
|
if (!response.body) {
|
|
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
import {
|
|
5
|
+
import { getBaseUrl } from "../../utils/url.js";
|
|
6
6
|
import { t } from "../../lang/index.js";
|
|
7
7
|
import LoadingContainer from "../LoadingContainer/index.js";
|
|
8
8
|
import TargetInfoBar from "./TargetInfoBar.js";
|
|
@@ -11,6 +11,7 @@ import SummaryItem from "./SummaryItem.js";
|
|
|
11
11
|
import Pagination from "../Pagination/index.js";
|
|
12
12
|
import LanguagePopover from "./LanguagePopover.js";
|
|
13
13
|
import { PAGE_SIZE, parseDataLine, findLangLabel } from "./utils.js";
|
|
14
|
+
import { CURRENT_LANG } from "../../utils/lang.js";
|
|
14
15
|
import { LangKey } from "../../lang/keyLang.js";
|
|
15
16
|
const INITIAL_META = {
|
|
16
17
|
total: 0,
|
|
@@ -95,7 +96,7 @@ class SummaryAIEmails extends React.Component {
|
|
|
95
96
|
this.setState({ langAnchor: null });
|
|
96
97
|
});
|
|
97
98
|
this.state = {
|
|
98
|
-
lang:
|
|
99
|
+
lang: CURRENT_LANG || "ko",
|
|
99
100
|
mailtype: "all",
|
|
100
101
|
page: 1,
|
|
101
102
|
items: [],
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { default as ChatAIDraft } from './ChatAIDraft';
|
|
2
|
-
export { default as LoadingCircular } from './LoadingCircular';
|
|
3
2
|
export { default as LoadingContainer } from './LoadingContainer';
|
|
4
|
-
export { default as Pagination } from './Pagination';
|
|
5
3
|
export { default as SummaryAIEmails } from './SummaryAIEmails';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* hanbiro-react16-sdk v1.0.
|
|
2
|
+
* hanbiro-react16-sdk v1.0.32
|
|
3
3
|
* Build Date: 2026-05-27
|
|
4
4
|
*/
|
|
5
5
|
function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }
|
|
@@ -145,77 +145,6 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
145
145
|
}
|
|
146
146
|
var React__namespace = /* @__PURE__ */_interopNamespaceDefault(React);
|
|
147
147
|
var ReactDOM__namespace = /* @__PURE__ */_interopNamespaceDefault(ReactDOM);
|
|
148
|
-
var getRandomValues;
|
|
149
|
-
var rnds8 = new Uint8Array(16);
|
|
150
|
-
function rng() {
|
|
151
|
-
if (!getRandomValues) {
|
|
152
|
-
getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
|
|
153
|
-
if (!getRandomValues) {
|
|
154
|
-
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return getRandomValues(rnds8);
|
|
158
|
-
}
|
|
159
|
-
var byteToHex = [];
|
|
160
|
-
for (var i = 0; i < 256; ++i) {
|
|
161
|
-
byteToHex.push((i + 256).toString(16).slice(1));
|
|
162
|
-
}
|
|
163
|
-
function unsafeStringify(arr) {
|
|
164
|
-
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
165
|
-
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
|
|
166
|
-
}
|
|
167
|
-
var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
168
|
-
var native = {
|
|
169
|
-
randomUUID: randomUUID
|
|
170
|
-
};
|
|
171
|
-
function v4(options, buf, offset) {
|
|
172
|
-
if (native.randomUUID && true && !options) {
|
|
173
|
-
return native.randomUUID();
|
|
174
|
-
}
|
|
175
|
-
options = options || {};
|
|
176
|
-
var rnds = options.random || (options.rng || rng)();
|
|
177
|
-
rnds[6] = rnds[6] & 15 | 64;
|
|
178
|
-
rnds[8] = rnds[8] & 63 | 128;
|
|
179
|
-
return unsafeStringify(rnds);
|
|
180
|
-
}
|
|
181
|
-
var LOCAL_STORAGE_KEY = /* @__PURE__ */function (LOCAL_STORAGE_KEY2) {
|
|
182
|
-
LOCAL_STORAGE_KEY2["LANG_CODE"] = "lang.code";
|
|
183
|
-
return LOCAL_STORAGE_KEY2;
|
|
184
|
-
}(LOCAL_STORAGE_KEY || {});
|
|
185
|
-
var localStorageService = {
|
|
186
|
-
get: function get(key) {
|
|
187
|
-
return localStorage.getItem(key);
|
|
188
|
-
},
|
|
189
|
-
set: function set(key, value) {
|
|
190
|
-
localStorage.setItem(key, value);
|
|
191
|
-
},
|
|
192
|
-
remove: function remove(key) {
|
|
193
|
-
localStorage.removeItem(key);
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
function getBrowserLang() {
|
|
197
|
-
var shortCode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
198
|
-
var language = navigator.language;
|
|
199
|
-
if (language.indexOf("-") !== -1 && shortCode) {
|
|
200
|
-
language = language.substring(0, 2);
|
|
201
|
-
}
|
|
202
|
-
if (language === "ja") {
|
|
203
|
-
language = "jp";
|
|
204
|
-
}
|
|
205
|
-
var supportLanguage = ["ko", "en", "jp", "ch", "zh", "id", "vi", "es"];
|
|
206
|
-
if (!(supportLanguage.indexOf(language) > -1)) {
|
|
207
|
-
language = "en";
|
|
208
|
-
}
|
|
209
|
-
return language || "en";
|
|
210
|
-
}
|
|
211
|
-
var getCurrentLang = function getCurrentLang() {
|
|
212
|
-
return localStorageService.get(LOCAL_STORAGE_KEY.LANG_CODE) || getBrowserLang(true);
|
|
213
|
-
};
|
|
214
|
-
var SDKConfig = {
|
|
215
|
-
baseUrl: "V3",
|
|
216
|
-
signer: null,
|
|
217
|
-
lang: getCurrentLang()
|
|
218
|
-
};
|
|
219
148
|
var getAppVersion = function getAppVersion() {
|
|
220
149
|
var locationInfo = window.location;
|
|
221
150
|
if (window.location !== window.parent.location) {
|
|
@@ -227,16 +156,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
227
156
|
}
|
|
228
157
|
return locationInfo.pathname.includes("/ngw/app") ? "v2" : "v3";
|
|
229
158
|
};
|
|
230
|
-
var
|
|
231
|
-
|
|
232
|
-
signer = _ref2.signer;
|
|
233
|
-
SDKConfig.baseUrl = baseUrl;
|
|
234
|
-
SDKConfig.signer = signer;
|
|
159
|
+
var applyVersionAttribute = function applyVersionAttribute() {
|
|
160
|
+
if (typeof document === "undefined") return;
|
|
235
161
|
document.documentElement.setAttribute("data-hanbiro-sdk-version", getAppVersion());
|
|
236
162
|
};
|
|
237
|
-
var setLibLang = function setLibLang(lang) {
|
|
238
|
-
if (lang) SDKConfig.lang = lang;
|
|
239
|
-
};
|
|
240
163
|
var checkDevelopment = function checkDevelopment() {
|
|
241
164
|
var locationInfo = window.location;
|
|
242
165
|
var hostname = locationInfo.hostname;
|
|
@@ -248,29 +171,56 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
248
171
|
};
|
|
249
172
|
var isDevelopment = checkDevelopment();
|
|
250
173
|
var getBaseUrl = function getBaseUrl() {
|
|
251
|
-
var _a2;
|
|
252
174
|
var locationInfo = window.location;
|
|
253
175
|
var host = locationInfo.host;
|
|
254
176
|
if (isDevelopment) {
|
|
255
|
-
|
|
256
|
-
if (baseUrlArr) {
|
|
257
|
-
return "https://" + (baseUrlArr == null ? void 0 : baseUrlArr[2]);
|
|
258
|
-
} else {
|
|
259
|
-
return "https://vndev.hanbiro.com";
|
|
260
|
-
}
|
|
177
|
+
return "https://vndev.hanbiro.com";
|
|
261
178
|
} else {
|
|
262
179
|
var data = localStorage.getItem("host") || host;
|
|
263
180
|
var dataArr = data == null ? void 0 : data.split("/");
|
|
264
181
|
return "https://" + (dataArr == null ? void 0 : dataArr[0]);
|
|
265
182
|
}
|
|
266
183
|
};
|
|
184
|
+
var getRandomValues;
|
|
185
|
+
var rnds8 = new Uint8Array(16);
|
|
186
|
+
function rng() {
|
|
187
|
+
if (!getRandomValues) {
|
|
188
|
+
getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
|
|
189
|
+
if (!getRandomValues) {
|
|
190
|
+
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return getRandomValues(rnds8);
|
|
194
|
+
}
|
|
195
|
+
var byteToHex = [];
|
|
196
|
+
for (var i = 0; i < 256; ++i) {
|
|
197
|
+
byteToHex.push((i + 256).toString(16).slice(1));
|
|
198
|
+
}
|
|
199
|
+
function unsafeStringify(arr) {
|
|
200
|
+
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
201
|
+
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
|
|
202
|
+
}
|
|
203
|
+
var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
204
|
+
var native = {
|
|
205
|
+
randomUUID: randomUUID
|
|
206
|
+
};
|
|
207
|
+
function v4(options, buf, offset) {
|
|
208
|
+
if (native.randomUUID && true && !options) {
|
|
209
|
+
return native.randomUUID();
|
|
210
|
+
}
|
|
211
|
+
options = options || {};
|
|
212
|
+
var rnds = options.random || (options.rng || rng)();
|
|
213
|
+
rnds[6] = rnds[6] & 15 | 64;
|
|
214
|
+
rnds[8] = rnds[8] & 63 | 128;
|
|
215
|
+
return unsafeStringify(rnds);
|
|
216
|
+
}
|
|
267
217
|
function callAI(_0, _1) {
|
|
268
|
-
return __async(this, arguments, function (params,
|
|
269
|
-
var setContent =
|
|
270
|
-
setIsLoading =
|
|
271
|
-
setConversationId =
|
|
218
|
+
return __async(this, arguments, function (params, _ref2) {
|
|
219
|
+
var setContent = _ref2.setContent,
|
|
220
|
+
setIsLoading = _ref2.setIsLoading,
|
|
221
|
+
setConversationId = _ref2.setConversationId;
|
|
272
222
|
return /*#__PURE__*/_regenerator().m(function _callee() {
|
|
273
|
-
var currentContent, baseUrl,
|
|
223
|
+
var currentContent, baseUrl, response, reader, fullContentDecode, readIndex, _yield$reader$read, done, value, originStr, jsonFormat, contentDecode, contentRegex, conversationIdRegex, matchArray, conversationIdmatch, _regMatchItem, nVal, decoded, _t;
|
|
274
224
|
return _regenerator().w(function (_context) {
|
|
275
225
|
while (1) switch (_context.p = _context.n) {
|
|
276
226
|
case 0:
|
|
@@ -278,61 +228,44 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
278
228
|
baseUrl = getBaseUrl();
|
|
279
229
|
_context.p = 1;
|
|
280
230
|
setIsLoading(true);
|
|
281
|
-
config = {
|
|
282
|
-
method: "POST",
|
|
283
|
-
baseURL: baseUrl,
|
|
284
|
-
url: "/nmail/chatdraft",
|
|
285
|
-
params: params
|
|
286
|
-
};
|
|
287
|
-
sigHeaders = {};
|
|
288
|
-
signer = SDKConfig == null ? void 0 : SDKConfig.signer;
|
|
289
|
-
if (!(signer && typeof signer.generateHeaders === "function")) {
|
|
290
|
-
_context.n = 3;
|
|
291
|
-
break;
|
|
292
|
-
}
|
|
293
231
|
_context.n = 2;
|
|
294
|
-
return signer.generateHeaders(config);
|
|
295
|
-
case 2:
|
|
296
|
-
sigHeaders = _context.v;
|
|
297
|
-
case 3:
|
|
298
|
-
_context.n = 4;
|
|
299
232
|
return fetch("".concat(baseUrl, "/nmail/chatdraft"), {
|
|
300
233
|
method: "POST",
|
|
301
234
|
body: JSON.stringify(params),
|
|
302
|
-
headers:
|
|
235
|
+
headers: {
|
|
303
236
|
"Content-Type": "application/json",
|
|
304
237
|
"Access-Control-Allow-Origin": "*"
|
|
305
|
-
}
|
|
238
|
+
}
|
|
306
239
|
});
|
|
307
|
-
case
|
|
240
|
+
case 2:
|
|
308
241
|
response = _context.v;
|
|
309
242
|
setIsLoading(false);
|
|
310
243
|
if (response.body) {
|
|
311
|
-
_context.n =
|
|
244
|
+
_context.n = 3;
|
|
312
245
|
break;
|
|
313
246
|
}
|
|
314
247
|
throw new Error("Response body is not available for streaming.");
|
|
315
|
-
case
|
|
248
|
+
case 3:
|
|
316
249
|
reader = response.body.getReader();
|
|
317
250
|
fullContentDecode = "";
|
|
318
251
|
readIndex = 0;
|
|
319
|
-
case
|
|
252
|
+
case 4:
|
|
320
253
|
if (!true) {
|
|
321
|
-
_context.n =
|
|
254
|
+
_context.n = 7;
|
|
322
255
|
break;
|
|
323
256
|
}
|
|
324
|
-
_context.n =
|
|
257
|
+
_context.n = 5;
|
|
325
258
|
return reader.read();
|
|
326
|
-
case
|
|
259
|
+
case 5:
|
|
327
260
|
_yield$reader$read = _context.v;
|
|
328
261
|
done = _yield$reader$read.done;
|
|
329
262
|
value = _yield$reader$read.value;
|
|
330
263
|
if (!done) {
|
|
331
|
-
_context.n =
|
|
264
|
+
_context.n = 6;
|
|
332
265
|
break;
|
|
333
266
|
}
|
|
334
|
-
return _context.a(3,
|
|
335
|
-
case
|
|
267
|
+
return _context.a(3, 7);
|
|
268
|
+
case 6:
|
|
336
269
|
originStr = "";
|
|
337
270
|
jsonFormat = "";
|
|
338
271
|
try {
|
|
@@ -365,23 +298,23 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
365
298
|
} catch (e) {
|
|
366
299
|
console.error("TextDecoder error: ", e, originStr);
|
|
367
300
|
}
|
|
368
|
-
_context.n =
|
|
301
|
+
_context.n = 4;
|
|
369
302
|
break;
|
|
370
|
-
case
|
|
303
|
+
case 7:
|
|
371
304
|
return _context.a(2, currentContent);
|
|
372
|
-
case
|
|
373
|
-
_context.p =
|
|
305
|
+
case 8:
|
|
306
|
+
_context.p = 8;
|
|
374
307
|
_t = _context.v;
|
|
375
308
|
console.error("Summary error:", _t);
|
|
376
309
|
setContent("");
|
|
377
|
-
case
|
|
378
|
-
_context.p =
|
|
310
|
+
case 9:
|
|
311
|
+
_context.p = 9;
|
|
379
312
|
setIsLoading(false);
|
|
380
|
-
return _context.f(
|
|
381
|
-
case
|
|
313
|
+
return _context.f(9);
|
|
314
|
+
case 10:
|
|
382
315
|
return _context.a(2, "");
|
|
383
316
|
}
|
|
384
|
-
}, _callee, null, [[1,
|
|
317
|
+
}, _callee, null, [[1, 8, 9, 10]]);
|
|
385
318
|
})();
|
|
386
319
|
});
|
|
387
320
|
}
|
|
@@ -4136,10 +4069,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4136
4069
|
}
|
|
4137
4070
|
}, {
|
|
4138
4071
|
key: "code",
|
|
4139
|
-
value: function code(
|
|
4140
|
-
var text =
|
|
4141
|
-
lang =
|
|
4142
|
-
escaped =
|
|
4072
|
+
value: function code(_ref3) {
|
|
4073
|
+
var text = _ref3.text,
|
|
4074
|
+
lang = _ref3.lang,
|
|
4075
|
+
escaped = _ref3.escaped;
|
|
4143
4076
|
var _a2;
|
|
4144
4077
|
var langString = (_a2 = (lang || "").match(other.notSpaceStart)) == null ? void 0 : _a2[0];
|
|
4145
4078
|
var code = text.replace(other.endingNewline, "") + "\n";
|
|
@@ -4150,22 +4083,22 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4150
4083
|
}
|
|
4151
4084
|
}, {
|
|
4152
4085
|
key: "blockquote",
|
|
4153
|
-
value: function blockquote(
|
|
4154
|
-
var tokens =
|
|
4086
|
+
value: function blockquote(_ref4) {
|
|
4087
|
+
var tokens = _ref4.tokens;
|
|
4155
4088
|
var body = this.parser.parse(tokens);
|
|
4156
4089
|
return "<blockquote>\n".concat(body, "</blockquote>\n");
|
|
4157
4090
|
}
|
|
4158
4091
|
}, {
|
|
4159
4092
|
key: "html",
|
|
4160
|
-
value: function html(
|
|
4161
|
-
var text =
|
|
4093
|
+
value: function html(_ref5) {
|
|
4094
|
+
var text = _ref5.text;
|
|
4162
4095
|
return text;
|
|
4163
4096
|
}
|
|
4164
4097
|
}, {
|
|
4165
4098
|
key: "heading",
|
|
4166
|
-
value: function heading(
|
|
4167
|
-
var tokens =
|
|
4168
|
-
depth =
|
|
4099
|
+
value: function heading(_ref6) {
|
|
4100
|
+
var tokens = _ref6.tokens,
|
|
4101
|
+
depth = _ref6.depth;
|
|
4169
4102
|
return "<h".concat(depth, ">").concat(this.parser.parseInline(tokens), "</h").concat(depth, ">\n");
|
|
4170
4103
|
}
|
|
4171
4104
|
}, {
|
|
@@ -4220,14 +4153,14 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4220
4153
|
}
|
|
4221
4154
|
}, {
|
|
4222
4155
|
key: "checkbox",
|
|
4223
|
-
value: function checkbox(
|
|
4224
|
-
var checked =
|
|
4156
|
+
value: function checkbox(_ref7) {
|
|
4157
|
+
var checked = _ref7.checked;
|
|
4225
4158
|
return "<input " + (checked ? 'checked="" ' : "") + 'disabled="" type="checkbox">';
|
|
4226
4159
|
}
|
|
4227
4160
|
}, {
|
|
4228
4161
|
key: "paragraph",
|
|
4229
|
-
value: function paragraph(
|
|
4230
|
-
var tokens =
|
|
4162
|
+
value: function paragraph(_ref8) {
|
|
4163
|
+
var tokens = _ref8.tokens;
|
|
4231
4164
|
return "<p>".concat(this.parser.parseInline(tokens), "</p>\n");
|
|
4232
4165
|
}
|
|
4233
4166
|
}, {
|
|
@@ -4257,8 +4190,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4257
4190
|
}
|
|
4258
4191
|
}, {
|
|
4259
4192
|
key: "tablerow",
|
|
4260
|
-
value: function tablerow(
|
|
4261
|
-
var text =
|
|
4193
|
+
value: function tablerow(_ref9) {
|
|
4194
|
+
var text = _ref9.text;
|
|
4262
4195
|
return "<tr>\n".concat(text, "</tr>\n");
|
|
4263
4196
|
}
|
|
4264
4197
|
}, {
|
|
@@ -4274,20 +4207,20 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4274
4207
|
*/
|
|
4275
4208
|
}, {
|
|
4276
4209
|
key: "strong",
|
|
4277
|
-
value: function strong(
|
|
4278
|
-
var tokens =
|
|
4210
|
+
value: function strong(_ref0) {
|
|
4211
|
+
var tokens = _ref0.tokens;
|
|
4279
4212
|
return "<strong>".concat(this.parser.parseInline(tokens), "</strong>");
|
|
4280
4213
|
}
|
|
4281
4214
|
}, {
|
|
4282
4215
|
key: "em",
|
|
4283
|
-
value: function em(
|
|
4284
|
-
var tokens =
|
|
4216
|
+
value: function em(_ref1) {
|
|
4217
|
+
var tokens = _ref1.tokens;
|
|
4285
4218
|
return "<em>".concat(this.parser.parseInline(tokens), "</em>");
|
|
4286
4219
|
}
|
|
4287
4220
|
}, {
|
|
4288
4221
|
key: "codespan",
|
|
4289
|
-
value: function codespan(
|
|
4290
|
-
var text =
|
|
4222
|
+
value: function codespan(_ref10) {
|
|
4223
|
+
var text = _ref10.text;
|
|
4291
4224
|
return "<code>".concat(escape2(text, true), "</code>");
|
|
4292
4225
|
}
|
|
4293
4226
|
}, {
|
|
@@ -4297,16 +4230,16 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4297
4230
|
}
|
|
4298
4231
|
}, {
|
|
4299
4232
|
key: "del",
|
|
4300
|
-
value: function del(
|
|
4301
|
-
var tokens =
|
|
4233
|
+
value: function del(_ref11) {
|
|
4234
|
+
var tokens = _ref11.tokens;
|
|
4302
4235
|
return "<del>".concat(this.parser.parseInline(tokens), "</del>");
|
|
4303
4236
|
}
|
|
4304
4237
|
}, {
|
|
4305
4238
|
key: "link",
|
|
4306
|
-
value: function link(
|
|
4307
|
-
var href =
|
|
4308
|
-
title =
|
|
4309
|
-
tokens =
|
|
4239
|
+
value: function link(_ref12) {
|
|
4240
|
+
var href = _ref12.href,
|
|
4241
|
+
title = _ref12.title,
|
|
4242
|
+
tokens = _ref12.tokens;
|
|
4310
4243
|
var text = this.parser.parseInline(tokens);
|
|
4311
4244
|
var cleanHref = cleanUrl(href);
|
|
4312
4245
|
if (cleanHref === null) {
|
|
@@ -4322,11 +4255,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4322
4255
|
}
|
|
4323
4256
|
}, {
|
|
4324
4257
|
key: "image",
|
|
4325
|
-
value: function image(
|
|
4326
|
-
var href =
|
|
4327
|
-
title =
|
|
4328
|
-
text =
|
|
4329
|
-
tokens =
|
|
4258
|
+
value: function image(_ref13) {
|
|
4259
|
+
var href = _ref13.href,
|
|
4260
|
+
title = _ref13.title,
|
|
4261
|
+
text = _ref13.text,
|
|
4262
|
+
tokens = _ref13.tokens;
|
|
4330
4263
|
if (tokens) {
|
|
4331
4264
|
text = this.parser.parseInline(tokens, this.parser.textRenderer);
|
|
4332
4265
|
}
|
|
@@ -4357,50 +4290,50 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
4357
4290
|
key: "strong",
|
|
4358
4291
|
value:
|
|
4359
4292
|
// no need for block level renderers
|
|
4360
|
-
function strong(
|
|
4361
|
-
var text =
|
|
4293
|
+
function strong(_ref14) {
|
|
4294
|
+
var text = _ref14.text;
|
|
4362
4295
|
return text;
|
|
4363
4296
|
}
|
|
4364
4297
|
}, {
|
|
4365
4298
|
key: "em",
|
|
4366
|
-
value: function em(
|
|
4367
|
-
var text =
|
|
4299
|
+
value: function em(_ref15) {
|
|
4300
|
+
var text = _ref15.text;
|
|
4368
4301
|
return text;
|
|
4369
4302
|
}
|
|
4370
4303
|
}, {
|
|
4371
4304
|
key: "codespan",
|
|
4372
|
-
value: function codespan(
|
|
4373
|
-
var text =
|
|
4305
|
+
value: function codespan(_ref16) {
|
|
4306
|
+
var text = _ref16.text;
|
|
4374
4307
|
return text;
|
|
4375
4308
|
}
|
|
4376
4309
|
}, {
|
|
4377
4310
|
key: "del",
|
|
4378
|
-
value: function del(
|
|
4379
|
-
var text =
|
|
4311
|
+
value: function del(_ref17) {
|
|
4312
|
+
var text = _ref17.text;
|
|
4380
4313
|
return text;
|
|
4381
4314
|
}
|
|
4382
4315
|
}, {
|
|
4383
4316
|
key: "html",
|
|
4384
|
-
value: function html(
|
|
4385
|
-
var text =
|
|
4317
|
+
value: function html(_ref18) {
|
|
4318
|
+
var text = _ref18.text;
|
|
4386
4319
|
return text;
|
|
4387
4320
|
}
|
|
4388
4321
|
}, {
|
|
4389
4322
|
key: "text",
|
|
4390
|
-
value: function text(
|
|
4391
|
-
var _text =
|
|
4323
|
+
value: function text(_ref19) {
|
|
4324
|
+
var _text = _ref19.text;
|
|
4392
4325
|
return _text;
|
|
4393
4326
|
}
|
|
4394
4327
|
}, {
|
|
4395
4328
|
key: "link",
|
|
4396
|
-
value: function link(
|
|
4397
|
-
var text =
|
|
4329
|
+
value: function link(_ref20) {
|
|
4330
|
+
var text = _ref20.text;
|
|
4398
4331
|
return "" + text;
|
|
4399
4332
|
}
|
|
4400
4333
|
}, {
|
|
4401
4334
|
key: "image",
|
|
4402
|
-
value: function image(
|
|
4403
|
-
var text =
|
|
4335
|
+
value: function image(_ref21) {
|
|
4336
|
+
var text = _ref21.text;
|
|
4404
4337
|
return "" + text;
|
|
4405
4338
|
}
|
|
4406
4339
|
}, {
|
|
@@ -5101,9 +5034,9 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
5101
5034
|
marked.parseInline;
|
|
5102
5035
|
_Parser.parse;
|
|
5103
5036
|
_Lexer.lex;
|
|
5104
|
-
var TypingText = function TypingText(
|
|
5105
|
-
var data =
|
|
5106
|
-
style =
|
|
5037
|
+
var TypingText = function TypingText(_ref22) {
|
|
5038
|
+
var data = _ref22.data,
|
|
5039
|
+
style = _ref22.style;
|
|
5107
5040
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
5108
5041
|
style: __spreadValues({
|
|
5109
5042
|
maxWidth: "80%"
|
|
@@ -5139,9 +5072,9 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
5139
5072
|
}
|
|
5140
5073
|
}, "AI");
|
|
5141
5074
|
};
|
|
5142
|
-
var LoadingDots = function LoadingDots(
|
|
5143
|
-
var
|
|
5144
|
-
label =
|
|
5075
|
+
var LoadingDots = function LoadingDots(_ref23) {
|
|
5076
|
+
var _ref23$label = _ref23.label,
|
|
5077
|
+
label = _ref23$label === void 0 ? "Thinking" : _ref23$label;
|
|
5145
5078
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
5146
5079
|
style: {
|
|
5147
5080
|
display: "inline-flex",
|
|
@@ -5248,21 +5181,55 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
5248
5181
|
var en = (_en = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.SUMMARY_WARNING, "This is a summary compiled by AI · May contain some inaccuracies"), LangKey.NO_DATA, "No data"), LangKey.SENT, "Sent"), LangKey.RECEIVED, "Received"), LangKey.ALL, "All"), LangKey.CREATE_EMPTY_TITLE, "Let's draft a new email together from scratch."), LangKey.CREATE_EMPTY_SUBTITLE, "Tell me what kind of email you'd like to write."), LangKey.CREATE_EMPTY_GUIDE, "Give me the recipient, purpose, and key points\nand AI will generate a polished draft."), LangKey.CREATE_FEATURE_1_TITLE, "Request via message"), LangKey.CREATE_FEATURE_1_DESC, 'e.g., "Draft an email to Director Hong proposing a Q3 collaboration meeting (May 20, 3 PM)"'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.CREATE_FEATURE_2_TITLE, "AI generates a draft"), LangKey.CREATE_FEATURE_2_DESC, "Refine the draft freely with follow-ups like 'more polite' or 'add a deadline'."), LangKey.CREATE_FEATURE_3_TITLE, "Apply to body"), LangKey.CREATE_FEATURE_3_DESC, "Insert the response you like into the email body and send."), LangKey.CREATE_PROMPT_HINT, "💡 Try these prompts to get a draft right away"), LangKey.CREATE_SUGGESTION_1, "Propose a Q3 meeting to Director Hong (May 20, 3 PM)"), LangKey.CREATE_SUGGESTION_2, "Notify client of payment schedule (Due May 30)"), LangKey.CREATE_SUGGESTION_3, "Welcome message to new employee (Joining May 22)"), LangKey.REPLY_EMPTY_TITLE, "We'll draft a reply based on the received email.\nAdd send history if you want to match the tone."), LangKey.REPLY_EMPTY_GUIDE, "The source is auto-included. Adjust tone and length through conversation."), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.REPLY_FEATURE_1_TITLE, "Auto-include source"), LangKey.REPLY_FEATURE_1_DESC, "The email you are replying to is automatically added as context."), LangKey.REPLY_FEATURE_2_TITLE, "Add send history (optional)"), LangKey.REPLY_FEATURE_2_DESC, "Use '+ Add' to pick past emails and reference their tone."), LangKey.REPLY_FEATURE_3_TITLE, "Refine with conversation"), LangKey.REPLY_FEATURE_3_DESC, "Get an AI draft, then adjust freely with chips or messages."), LangKey.CHAT_INPUT_PLACEHOLDER, "Describe your email..."), LangKey.CHAT_INPUT_PLACEHOLDER_REPLY, "Type a message..."), LangKey.APPLY_CONTENT, "Apply content"), LangKey.SETTING_LANGUAGE, "Language"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.SETTING_TONE, "Tone"), LangKey.SETTING_LENGTH, "Length"), LangKey.TONE_FORMAL, "Formal"), LangKey.TONE_POLITE, "Polite"), LangKey.TONE_NEUTRAL, "Neutral"), LangKey.TONE_FRIENDLY, "Friendly"), LangKey.TONE_FIRM, "Firm"), LangKey.TONE_APOLOGY, "Apology"), LangKey.LENGTH_SHORT, "Short"), LangKey.LENGTH_MEDIUM, "Medium"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.LENGTH_LONG, "Long"), LangKey.LENGTH_ONE_LINER, "1-liner"), LangKey.PAGINATION_TOTAL, "Total"), LangKey.PAGINATION_PAGE, "Page"), LangKey.PAGINATION_PAGE_OF, "Page"), LangKey.REPLY_LOADING_CONTEXT, "Loading context..."), LangKey.SOURCE_CONTEXT, "Source context"), LangKey.AUTO, "Auto"), LangKey.SELECTED_CONTEXT, "Selected context"), LangKey.ADD, "Add"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, LangKey.BACK, "Back"), LangKey.ADD_CONTEXT_TITLE, "Add context from receive history"), LangKey.ADD_CONTEXT_DESC, "Select related emails to provide AI context."), LangKey.SELECTED_UP_TO, "selected · up to"), LangKey.CLEAR_ALL, "Clear all"), LangKey.SORT_LATEST, "Sort: latest"), LangKey.NO_EMAILS_FOUND, "No emails found."), LangKey.CANCEL, "Cancel"), LangKey.ADD_AS_CONTEXT, "as context →"), LangKey.NO_SUBJECT, "(no subject)"));
|
|
5249
5182
|
var vi = (_vi = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.SUMMARY_WARNING, "Đây là bản tóm tắt do AI tổng hợp · Có thể chứa một số điểm không chính xác"), LangKey.NO_DATA, "Không có dữ liệu"), LangKey.SENT, "Đã gửi"), LangKey.RECEIVED, "Đã nhận"), LangKey.ALL, "Tất cả"), LangKey.CREATE_EMPTY_TITLE, "Hãy cùng nhau soạn thảo một email mới từ đầu."), LangKey.CREATE_EMPTY_SUBTITLE, "Hãy cho tôi biết bạn muốn viết loại email nào."), LangKey.CREATE_EMPTY_GUIDE, "Cho tôi người nhận, mục đích và những điểm chính\nvà AI sẽ tạo ra một bản nháp hoàn chỉnh."), LangKey.CREATE_FEATURE_1_TITLE, "Yêu cầu qua tin nhắn"), LangKey.CREATE_FEATURE_1_DESC, 'VD: "Soạn email gửi Giám đốc Hong đề xuất cuộc họp hợp tác quý 3 (20/5, 3 giờ chiều)"'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.CREATE_FEATURE_2_TITLE, "AI tạo bản nháp"), LangKey.CREATE_FEATURE_2_DESC, "Tinh chỉnh bản nháp thoải mái với các yêu cầu tiếp theo như 'lịch sự hơn' hoặc 'thêm thời hạn'."), LangKey.CREATE_FEATURE_3_TITLE, "Áp dụng vào nội dung"), LangKey.CREATE_FEATURE_3_DESC, "Chèn phản hồi bạn thích vào nội dung email và gửi."), LangKey.CREATE_PROMPT_HINT, "💡 Thử các câu lệnh này để nhận bản nháp ngay lập tức"), LangKey.CREATE_SUGGESTION_1, "Đề xuất cuộc họp quý 3 với Giám đốc Hong (20/5, 3 giờ chiều)"), LangKey.CREATE_SUGGESTION_2, "Thông báo lịch thanh toán cho khách hàng (Hạn chót 30/5)"), LangKey.CREATE_SUGGESTION_3, "Tin nhắn chào mừng nhân viên mới (Gia nhập 22/5)"), LangKey.REPLY_EMPTY_TITLE, "Chúng tôi sẽ soạn thảo thư trả lời dựa trên email đã nhận.\nThêm lịch sử gửi nếu bạn muốn khớp với giọng điệu."), LangKey.REPLY_EMPTY_GUIDE, "Nguồn được tự động bao gồm. Điều chỉnh giọng điệu và độ dài thông qua cuộc trò chuyện."), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.REPLY_FEATURE_1_TITLE, "Tự động bao gồm nguồn"), LangKey.REPLY_FEATURE_1_DESC, "Email bạn đang trả lời tự động được thêm làm ngữ cảnh."), LangKey.REPLY_FEATURE_2_TITLE, "Thêm lịch sử gửi (tùy chọn)"), LangKey.REPLY_FEATURE_2_DESC, "Sử dụng '+ Thêm' để chọn các email trước đây và tham khảo giọng điệu của chúng."), LangKey.REPLY_FEATURE_3_TITLE, "Tinh chỉnh thông qua trò chuyện"), LangKey.REPLY_FEATURE_3_DESC, "Nhận bản nháp AI, sau đó điều chỉnh thoải mái bằng thẻ hoặc tin nhắn."), LangKey.CHAT_INPUT_PLACEHOLDER, "Mô tả email của bạn..."), LangKey.CHAT_INPUT_PLACEHOLDER_REPLY, "Nhập tin nhắn..."), LangKey.APPLY_CONTENT, "Áp dụng nội dung"), LangKey.SETTING_LANGUAGE, "Ngôn ngữ"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.SETTING_TONE, "Giọng điệu"), LangKey.SETTING_LENGTH, "Độ dài"), LangKey.TONE_FORMAL, "Trang trọng"), LangKey.TONE_POLITE, "Lịch sự"), LangKey.TONE_NEUTRAL, "Trung lập"), LangKey.TONE_FRIENDLY, "Thân thiện"), LangKey.TONE_FIRM, "Cứng rắn"), LangKey.TONE_APOLOGY, "Xin lỗi"), LangKey.LENGTH_SHORT, "Ngắn"), LangKey.LENGTH_MEDIUM, "Trung bình"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.LENGTH_LONG, "Dài"), LangKey.LENGTH_ONE_LINER, "1 dòng"), LangKey.PAGINATION_TOTAL, "Tổng"), LangKey.PAGINATION_PAGE, "Trang"), LangKey.PAGINATION_PAGE_OF, "Trang"), LangKey.REPLY_LOADING_CONTEXT, "Đang tải ngữ cảnh..."), LangKey.SOURCE_CONTEXT, "Ngữ cảnh nguồn"), LangKey.AUTO, "Tự động"), LangKey.SELECTED_CONTEXT, "Ngữ cảnh đã chọn"), LangKey.ADD, "Thêm"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_vi, LangKey.BACK, "Trở lại"), LangKey.ADD_CONTEXT_TITLE, "Thêm ngữ cảnh từ lịch sử nhận"), LangKey.ADD_CONTEXT_DESC, "Chọn các email liên quan để cung cấp ngữ cảnh cho AI."), LangKey.SELECTED_UP_TO, "đã chọn · tối đa"), LangKey.CLEAR_ALL, "Xóa tất cả"), LangKey.SORT_LATEST, "Sắp xếp: mới nhất"), LangKey.NO_EMAILS_FOUND, "Không tìm thấy email nào."), LangKey.CANCEL, "Hủy bỏ"), LangKey.ADD_AS_CONTEXT, "làm ngữ cảnh →"), LangKey.NO_SUBJECT, "(không có chủ đề)"));
|
|
5250
5183
|
var ko = (_ko = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.SUMMARY_WARNING, "이것은 AI가 작성한 요약입니다 · 일부 부정확한 내용이 포함될 수 있습니다"), LangKey.NO_DATA, "데이터 없음"), LangKey.SENT, "보낸 편지"), LangKey.RECEIVED, "받은 편지"), LangKey.ALL, "전체"), LangKey.CREATE_EMPTY_TITLE, "처음부터 새로운 이메일 초안을 함께 작성해 봅시다."), LangKey.CREATE_EMPTY_SUBTITLE, "어떤 종류의 이메일을 작성하고 싶으신가요?"), LangKey.CREATE_EMPTY_GUIDE, "수신자, 목적 및 주요 내용을 알려주시면\nAI가 완성도 높은 초안을 생성해 드립니다."), LangKey.CREATE_FEATURE_1_TITLE, "메시지로 요청"), LangKey.CREATE_FEATURE_1_DESC, '예: "홍길동 이사님께 3분기 협력 회의 제안 이메일 작성 (5월 20일 오후 3시)"'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.CREATE_FEATURE_2_TITLE, "AI 초안 생성"), LangKey.CREATE_FEATURE_2_DESC, "'더 정중하게' 또는 '마감일 추가'와 같은 후속 요청으로 초안을 자유롭게 수정하세요."), LangKey.CREATE_FEATURE_3_TITLE, "본문에 적용"), LangKey.CREATE_FEATURE_3_DESC, "마음에 드는 답변을 이메일 본문에 삽입하고 전송하세요."), LangKey.CREATE_PROMPT_HINT, "💡 바로 초안을 받으려면 다음 프롬프트를 시도해 보세요"), LangKey.CREATE_SUGGESTION_1, "홍길동 이사님께 3분기 회의 제안 (5월 20일 오후 3시)"), LangKey.CREATE_SUGGESTION_2, "고객에게 결제 일정 안내 (마감일 5월 30일)"), LangKey.CREATE_SUGGESTION_3, "신입 사원 환영 메시지 (5월 22일 입사)"), LangKey.REPLY_EMPTY_TITLE, "받은 이메일을 바탕으로 답장 초안을 작성합니다.\n어조를 맞추고 싶다면 보낸 내역을 추가하세요."), LangKey.REPLY_EMPTY_GUIDE, "원본 메일은 자동으로 포함됩니다. 대화를 통해 어조와 길이를 조정하세요."), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.REPLY_FEATURE_1_TITLE, "원본 자동 포함"), LangKey.REPLY_FEATURE_1_DESC, "답장하려는 이메일이 자동으로 컨텍스트로 추가됩니다."), LangKey.REPLY_FEATURE_2_TITLE, "발송 내역 추가 (선택사항)"), LangKey.REPLY_FEATURE_2_DESC, "'+ 추가'를 사용하여 과거 이메일을 선택하고 어조를 참조하세요."), LangKey.REPLY_FEATURE_3_TITLE, "대화로 수정"), LangKey.REPLY_FEATURE_3_DESC, "AI 초안을 받은 후 칩이나 메시지를 사용하여 자유롭게 조정하세요."), LangKey.CHAT_INPUT_PLACEHOLDER, "이메일을 설명해주세요..."), LangKey.CHAT_INPUT_PLACEHOLDER_REPLY, "메시지 입력..."), LangKey.APPLY_CONTENT, "내용 적용"), LangKey.SETTING_LANGUAGE, "언어"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.SETTING_TONE, "어조"), LangKey.SETTING_LENGTH, "길이"), LangKey.TONE_FORMAL, "격식"), LangKey.TONE_POLITE, "정중"), LangKey.TONE_NEUTRAL, "중립"), LangKey.TONE_FRIENDLY, "친근"), LangKey.TONE_FIRM, "단호"), LangKey.TONE_APOLOGY, "사과"), LangKey.LENGTH_SHORT, "짧게"), LangKey.LENGTH_MEDIUM, "보통"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.LENGTH_LONG, "길게"), LangKey.LENGTH_ONE_LINER, "한 줄"), LangKey.PAGINATION_TOTAL, "전체"), LangKey.PAGINATION_PAGE, "페이지"), LangKey.PAGINATION_PAGE_OF, "페이지"), LangKey.REPLY_LOADING_CONTEXT, "컨텍스트 로딩 중..."), LangKey.SOURCE_CONTEXT, "원본 컨텍스트"), LangKey.AUTO, "자동"), LangKey.SELECTED_CONTEXT, "선택한 컨텍스트"), LangKey.ADD, "추가"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ko, LangKey.BACK, "뒤로"), LangKey.ADD_CONTEXT_TITLE, "수신 내역에서 컨텍스트 추가"), LangKey.ADD_CONTEXT_DESC, "관련 이메일을 선택하여 AI에 컨텍스트를 제공하세요."), LangKey.SELECTED_UP_TO, "개 선택됨 · 최대"), LangKey.CLEAR_ALL, "모두 지우기"), LangKey.SORT_LATEST, "정렬: 최신순"), LangKey.NO_EMAILS_FOUND, "이메일을 찾을 수 없습니다."), LangKey.CANCEL, "취소"), LangKey.ADD_AS_CONTEXT, "컨텍스트로 추가 →"), LangKey.NO_SUBJECT, "(제목 없음)"));
|
|
5184
|
+
var LOCAL_STORAGE_KEY = /* @__PURE__ */function (LOCAL_STORAGE_KEY2) {
|
|
5185
|
+
LOCAL_STORAGE_KEY2["LANG_CODE"] = "lang.code";
|
|
5186
|
+
return LOCAL_STORAGE_KEY2;
|
|
5187
|
+
}(LOCAL_STORAGE_KEY || {});
|
|
5188
|
+
var localStorageService = {
|
|
5189
|
+
get: function get(key) {
|
|
5190
|
+
return localStorage.getItem(key);
|
|
5191
|
+
},
|
|
5192
|
+
set: function set(key, value) {
|
|
5193
|
+
localStorage.setItem(key, value);
|
|
5194
|
+
},
|
|
5195
|
+
remove: function remove(key) {
|
|
5196
|
+
localStorage.removeItem(key);
|
|
5197
|
+
}
|
|
5198
|
+
};
|
|
5199
|
+
function getBrowserLang() {
|
|
5200
|
+
var shortCode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
5201
|
+
var language = navigator.language;
|
|
5202
|
+
if (language.indexOf("-") !== -1 && shortCode) {
|
|
5203
|
+
language = language.substring(0, 2);
|
|
5204
|
+
}
|
|
5205
|
+
if (language === "ja") {
|
|
5206
|
+
language = "jp";
|
|
5207
|
+
}
|
|
5208
|
+
var supportLanguage = ["ko", "en", "jp", "ch", "zh", "id", "vi", "es"];
|
|
5209
|
+
if (!(supportLanguage.indexOf(language) > -1)) {
|
|
5210
|
+
language = "en";
|
|
5211
|
+
}
|
|
5212
|
+
return language || "en";
|
|
5213
|
+
}
|
|
5214
|
+
var getCurrentLang = function getCurrentLang() {
|
|
5215
|
+
return localStorageService.get(LOCAL_STORAGE_KEY.LANG_CODE) || getBrowserLang(true);
|
|
5216
|
+
};
|
|
5217
|
+
var CURRENT_LANG = getCurrentLang();
|
|
5251
5218
|
var dicts = {
|
|
5252
5219
|
en: en,
|
|
5253
5220
|
vi: vi,
|
|
5254
5221
|
ko: ko
|
|
5255
5222
|
};
|
|
5256
5223
|
var t = function t(key) {
|
|
5257
|
-
var lang =
|
|
5224
|
+
var lang = CURRENT_LANG || "en";
|
|
5258
5225
|
var prefix = lang.split("-")[0];
|
|
5259
5226
|
var dict = dicts[lang] || dicts[prefix] || dicts.en;
|
|
5260
5227
|
return dict[key] || en[key] || key;
|
|
5261
5228
|
};
|
|
5262
|
-
var MessageItem = function MessageItem(
|
|
5263
|
-
var item =
|
|
5264
|
-
onApply =
|
|
5265
|
-
getEditorContent =
|
|
5229
|
+
var MessageItem = function MessageItem(_ref24) {
|
|
5230
|
+
var item = _ref24.item,
|
|
5231
|
+
onApply = _ref24.onApply,
|
|
5232
|
+
getEditorContent = _ref24.getEditorContent;
|
|
5266
5233
|
var handleApply = function handleApply() {
|
|
5267
5234
|
return __async(_this9, null, /*#__PURE__*/_regenerator().m(function _callee3() {
|
|
5268
5235
|
var editorValue, html2;
|
|
@@ -5352,10 +5319,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
5352
5319
|
size: 16
|
|
5353
5320
|
}))))))));
|
|
5354
5321
|
};
|
|
5355
|
-
var ChatList = function ChatList(
|
|
5356
|
-
var items =
|
|
5357
|
-
onApply =
|
|
5358
|
-
getEditorContent =
|
|
5322
|
+
var ChatList = function ChatList(_ref25) {
|
|
5323
|
+
var items = _ref25.items,
|
|
5324
|
+
onApply = _ref25.onApply,
|
|
5325
|
+
getEditorContent = _ref25.getEditorContent;
|
|
5359
5326
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
5360
5327
|
style: {
|
|
5361
5328
|
flex: 1,
|
|
@@ -7231,13 +7198,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
7231
7198
|
}
|
|
7232
7199
|
}]);
|
|
7233
7200
|
}(React__namespace.Component);
|
|
7234
|
-
var ChipGroup = function ChipGroup(
|
|
7235
|
-
var options =
|
|
7236
|
-
selected =
|
|
7237
|
-
onSelect =
|
|
7238
|
-
iconMap =
|
|
7239
|
-
|
|
7240
|
-
columns =
|
|
7201
|
+
var ChipGroup = function ChipGroup(_ref26) {
|
|
7202
|
+
var options = _ref26.options,
|
|
7203
|
+
selected = _ref26.selected,
|
|
7204
|
+
onSelect = _ref26.onSelect,
|
|
7205
|
+
iconMap = _ref26.iconMap,
|
|
7206
|
+
_ref26$columns = _ref26.columns,
|
|
7207
|
+
columns = _ref26$columns === void 0 ? 3 : _ref26$columns;
|
|
7241
7208
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
7242
7209
|
style: {
|
|
7243
7210
|
display: "grid",
|
|
@@ -7668,13 +7635,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
7668
7635
|
}
|
|
7669
7636
|
}]);
|
|
7670
7637
|
}(React__namespace.Component);
|
|
7671
|
-
var CustomAiIcon = function CustomAiIcon(
|
|
7672
|
-
var
|
|
7673
|
-
isGradient =
|
|
7674
|
-
|
|
7675
|
-
stroke =
|
|
7676
|
-
|
|
7677
|
-
size =
|
|
7638
|
+
var CustomAiIcon = function CustomAiIcon(_ref27) {
|
|
7639
|
+
var _ref27$isGradient = _ref27.isGradient,
|
|
7640
|
+
isGradient = _ref27$isGradient === void 0 ? false : _ref27$isGradient,
|
|
7641
|
+
_ref27$stroke = _ref27.stroke,
|
|
7642
|
+
stroke = _ref27$stroke === void 0 ? 1.5 : _ref27$stroke,
|
|
7643
|
+
_ref27$size = _ref27.size,
|
|
7644
|
+
size = _ref27$size === void 0 ? 40 : _ref27$size;
|
|
7678
7645
|
var gradientId = "ai-gradient-" + Math.random().toString(36).substr(2, 9);
|
|
7679
7646
|
return /* @__PURE__ */React__namespace.createElement("svg", {
|
|
7680
7647
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -7751,8 +7718,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
7751
7718
|
desc: t(LangKey.CREATE_FEATURE_3_DESC)
|
|
7752
7719
|
}];
|
|
7753
7720
|
var SUGGESTIONS = [t(LangKey.CREATE_SUGGESTION_1), t(LangKey.CREATE_SUGGESTION_2), t(LangKey.CREATE_SUGGESTION_3)];
|
|
7754
|
-
var EmptyState$1 = function EmptyState$1(
|
|
7755
|
-
var onSelectPrompt =
|
|
7721
|
+
var EmptyState$1 = function EmptyState$1(_ref28) {
|
|
7722
|
+
var onSelectPrompt = _ref28.onSelectPrompt;
|
|
7756
7723
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
7757
7724
|
style: {
|
|
7758
7725
|
flex: 1,
|
|
@@ -8021,7 +7988,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8021
7988
|
});
|
|
8022
7989
|
_this12.rootRef = React__namespace.createRef();
|
|
8023
7990
|
var lang = (AI_LANG_FLAGS == null ? void 0 : AI_LANG_FLAGS.find(function (_item) {
|
|
8024
|
-
return (_item == null ? void 0 : _item.value) ===
|
|
7991
|
+
return (_item == null ? void 0 : _item.value) === CURRENT_LANG;
|
|
8025
7992
|
})) || AI_LANG_FLAGS[0];
|
|
8026
7993
|
_this12.state = {
|
|
8027
7994
|
message: "",
|
|
@@ -8212,9 +8179,9 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8212
8179
|
}, f.desc)));
|
|
8213
8180
|
})));
|
|
8214
8181
|
};
|
|
8215
|
-
var SourceCard = function SourceCard(
|
|
8216
|
-
var mail =
|
|
8217
|
-
onClick =
|
|
8182
|
+
var SourceCard = function SourceCard(_ref29) {
|
|
8183
|
+
var mail = _ref29.mail,
|
|
8184
|
+
onClick = _ref29.onClick;
|
|
8218
8185
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
8219
8186
|
onClick: onClick,
|
|
8220
8187
|
style: {
|
|
@@ -8252,11 +8219,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8252
8219
|
}
|
|
8253
8220
|
}, mail.from_name, mail.from_addr ? " <".concat(mail.from_addr, ">") : "", mail.date ? " \xB7 ".concat(mail.date) : "")));
|
|
8254
8221
|
};
|
|
8255
|
-
var SelectedChip = function SelectedChip(
|
|
8256
|
-
var index =
|
|
8257
|
-
mail =
|
|
8258
|
-
_onClick =
|
|
8259
|
-
onRemove =
|
|
8222
|
+
var SelectedChip = function SelectedChip(_ref30) {
|
|
8223
|
+
var index = _ref30.index,
|
|
8224
|
+
mail = _ref30.mail,
|
|
8225
|
+
_onClick = _ref30.onClick,
|
|
8226
|
+
onRemove = _ref30.onRemove;
|
|
8260
8227
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
8261
8228
|
onClick: function onClick() {
|
|
8262
8229
|
return _onClick(mail);
|
|
@@ -8312,13 +8279,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8312
8279
|
}
|
|
8313
8280
|
}, "×"));
|
|
8314
8281
|
};
|
|
8315
|
-
var ContextHeader = function ContextHeader(
|
|
8316
|
-
var sourceMail =
|
|
8317
|
-
selectedMails =
|
|
8318
|
-
onAddClick =
|
|
8319
|
-
onSourceClick =
|
|
8320
|
-
onChipClick =
|
|
8321
|
-
onRemoveChip =
|
|
8282
|
+
var ContextHeader = function ContextHeader(_ref31) {
|
|
8283
|
+
var sourceMail = _ref31.sourceMail,
|
|
8284
|
+
selectedMails = _ref31.selectedMails,
|
|
8285
|
+
onAddClick = _ref31.onAddClick,
|
|
8286
|
+
onSourceClick = _ref31.onSourceClick,
|
|
8287
|
+
onChipClick = _ref31.onChipClick,
|
|
8288
|
+
onRemoveChip = _ref31.onRemoveChip;
|
|
8322
8289
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
8323
8290
|
style: {
|
|
8324
8291
|
display: "flex",
|
|
@@ -8419,13 +8386,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8419
8386
|
});
|
|
8420
8387
|
}))));
|
|
8421
8388
|
};
|
|
8422
|
-
var LoadingCircular = function LoadingCircular(
|
|
8423
|
-
var
|
|
8424
|
-
size =
|
|
8425
|
-
|
|
8426
|
-
color =
|
|
8427
|
-
|
|
8428
|
-
thickness =
|
|
8389
|
+
var LoadingCircular = function LoadingCircular(_ref32) {
|
|
8390
|
+
var _ref32$size = _ref32.size,
|
|
8391
|
+
size = _ref32$size === void 0 ? 40 : _ref32$size,
|
|
8392
|
+
_ref32$color = _ref32.color,
|
|
8393
|
+
color = _ref32$color === void 0 ? "var(--primary-main)" : _ref32$color,
|
|
8394
|
+
_ref32$thickness = _ref32.thickness,
|
|
8395
|
+
thickness = _ref32$thickness === void 0 ? 3.6 : _ref32$thickness;
|
|
8429
8396
|
var radius = 20;
|
|
8430
8397
|
var circumference = 2 * Math.PI * radius;
|
|
8431
8398
|
return /* @__PURE__ */React.createElement("div", {
|
|
@@ -8457,13 +8424,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
8457
8424
|
small: 28,
|
|
8458
8425
|
medium: 40
|
|
8459
8426
|
};
|
|
8460
|
-
var LoadingContainer = function LoadingContainer(
|
|
8461
|
-
var style =
|
|
8462
|
-
|
|
8463
|
-
fullHeight =
|
|
8464
|
-
|
|
8465
|
-
size =
|
|
8466
|
-
label =
|
|
8427
|
+
var LoadingContainer = function LoadingContainer(_ref33) {
|
|
8428
|
+
var style = _ref33.style,
|
|
8429
|
+
_ref33$fullHeight = _ref33.fullHeight,
|
|
8430
|
+
fullHeight = _ref33$fullHeight === void 0 ? false : _ref33$fullHeight,
|
|
8431
|
+
_ref33$size = _ref33.size,
|
|
8432
|
+
size = _ref33$size === void 0 ? "medium" : _ref33$size,
|
|
8433
|
+
label = _ref33.label;
|
|
8467
8434
|
return /* @__PURE__ */React.createElement("div", {
|
|
8468
8435
|
style: __spreadValues({
|
|
8469
8436
|
display: "flex",
|
|
@@ -9200,8 +9167,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9200
9167
|
return md;
|
|
9201
9168
|
}
|
|
9202
9169
|
};
|
|
9203
|
-
var MailHeader = function MailHeader(
|
|
9204
|
-
var mail =
|
|
9170
|
+
var MailHeader = function MailHeader(_ref34) {
|
|
9171
|
+
var mail = _ref34.mail;
|
|
9205
9172
|
return /* @__PURE__ */React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */React__namespace.createElement("div", {
|
|
9206
9173
|
style: {
|
|
9207
9174
|
fontSize: 14,
|
|
@@ -9222,9 +9189,9 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9222
9189
|
}
|
|
9223
9190
|
}, mail.from_name, mail.from_addr ? " <".concat(mail.from_addr, ">") : "", mail.date ? " \xB7 ".concat(mail.date) : ""));
|
|
9224
9191
|
};
|
|
9225
|
-
var ContextPreviewModal = function ContextPreviewModal(
|
|
9226
|
-
var preview =
|
|
9227
|
-
onClose =
|
|
9192
|
+
var ContextPreviewModal = function ContextPreviewModal(_ref35) {
|
|
9193
|
+
var preview = _ref35.preview,
|
|
9194
|
+
onClose = _ref35.onClose;
|
|
9228
9195
|
var html2 = preview ? preview.mode === "html" ? preview.mail.contents || "" : renderMarkdown(preview.mail.ai_contents || "") : "";
|
|
9229
9196
|
return /* @__PURE__ */React__namespace.createElement(BaseModal, {
|
|
9230
9197
|
isOpen: !!preview,
|
|
@@ -9469,7 +9436,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9469
9436
|
});
|
|
9470
9437
|
_this19.rootRef = React__namespace.createRef();
|
|
9471
9438
|
var lang = (AI_LANG_FLAGS == null ? void 0 : AI_LANG_FLAGS.find(function (_item) {
|
|
9472
|
-
return (_item == null ? void 0 : _item.value) ===
|
|
9439
|
+
return (_item == null ? void 0 : _item.value) === CURRENT_LANG;
|
|
9473
9440
|
})) || AI_LANG_FLAGS[0];
|
|
9474
9441
|
_this19.state = {
|
|
9475
9442
|
view: "empty",
|
|
@@ -9588,11 +9555,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9588
9555
|
}
|
|
9589
9556
|
return /* @__PURE__ */React__namespace.createElement(CreatePanel, __spreadValues({}, rest));
|
|
9590
9557
|
};
|
|
9591
|
-
var TargetInfoBar = function TargetInfoBar(
|
|
9592
|
-
var targetName =
|
|
9593
|
-
targetEmail =
|
|
9594
|
-
currentLangLabel =
|
|
9595
|
-
onOpenLang =
|
|
9558
|
+
var TargetInfoBar = function TargetInfoBar(_ref36) {
|
|
9559
|
+
var targetName = _ref36.targetName,
|
|
9560
|
+
targetEmail = _ref36.targetEmail,
|
|
9561
|
+
currentLangLabel = _ref36.currentLangLabel,
|
|
9562
|
+
onOpenLang = _ref36.onOpenLang;
|
|
9596
9563
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
9597
9564
|
style: {
|
|
9598
9565
|
display: "flex",
|
|
@@ -9702,9 +9669,9 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9702
9669
|
if (found) return found.label;
|
|
9703
9670
|
return lang === "ko" ? "한국어" : lang;
|
|
9704
9671
|
};
|
|
9705
|
-
var FilterTabs = function FilterTabs(
|
|
9706
|
-
var mailtype =
|
|
9707
|
-
onChangeFilter =
|
|
9672
|
+
var FilterTabs = function FilterTabs(_ref37) {
|
|
9673
|
+
var mailtype = _ref37.mailtype,
|
|
9674
|
+
onChangeFilter = _ref37.onChangeFilter;
|
|
9708
9675
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
9709
9676
|
style: {
|
|
9710
9677
|
display: "flex",
|
|
@@ -9749,8 +9716,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
9749
9716
|
}, t(f.label));
|
|
9750
9717
|
})));
|
|
9751
9718
|
};
|
|
9752
|
-
var SummaryItem = function SummaryItem(
|
|
9753
|
-
var item =
|
|
9719
|
+
var SummaryItem = function SummaryItem(_ref38) {
|
|
9720
|
+
var item = _ref38.item;
|
|
9754
9721
|
var isSent = (item == null ? void 0 : item.direction) === "sent" || (item == null ? void 0 : item.sig) === "out";
|
|
9755
9722
|
return /* @__PURE__ */React__namespace.createElement("div", {
|
|
9756
9723
|
style: {
|
|
@@ -10028,7 +9995,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
10028
9995
|
});
|
|
10029
9996
|
});
|
|
10030
9997
|
_this22.state = {
|
|
10031
|
-
lang:
|
|
9998
|
+
lang: CURRENT_LANG || "ko",
|
|
10032
9999
|
mailtype: "all",
|
|
10033
10000
|
page: 1,
|
|
10034
10001
|
items: [],
|
|
@@ -10138,14 +10105,12 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
10138
10105
|
}
|
|
10139
10106
|
}]);
|
|
10140
10107
|
}(React__namespace.Component);
|
|
10108
|
+
applyVersionAttribute();
|
|
10141
10109
|
exports2.AI_LANG_FLAGS = AI_LANG_FLAGS;
|
|
10142
10110
|
exports2.ChatAIDraft = ChatAIDraft;
|
|
10143
|
-
exports2.LoadingCircular = LoadingCircular;
|
|
10144
10111
|
exports2.LoadingContainer = LoadingContainer;
|
|
10145
|
-
exports2.Pagination = Pagination;
|
|
10146
10112
|
exports2.SummaryAIEmails = SummaryAIEmails;
|
|
10147
|
-
exports2.
|
|
10148
|
-
exports2.setLibLang = setLibLang;
|
|
10113
|
+
exports2.getAppVersion = getAppVersion;
|
|
10149
10114
|
Object.defineProperty(exports2, Symbol.toStringTag, {
|
|
10150
10115
|
value: "Module"
|
|
10151
10116
|
});
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* hanbiro-react16-sdk v1.0.
|
|
2
|
+
* hanbiro-react16-sdk v1.0.32
|
|
3
3
|
* Build Date: 2026-05-27
|
|
4
4
|
*/
|
|
5
5
|
/* empty css */
|
|
6
|
+
import { applyVersionAttribute } from "./utils/url.js";
|
|
7
|
+
import { getAppVersion } from "./utils/url.js";
|
|
6
8
|
import { AI_LANG_FLAGS } from "./constants/index.js";
|
|
7
9
|
import { default as default2 } from "./components/ChatAIDraft/index.js";
|
|
8
|
-
import { default as default3 } from "./components/
|
|
9
|
-
import { default as default4 } from "./components/
|
|
10
|
-
|
|
11
|
-
import { default as default6 } from "./components/SummaryAIEmails/index.js";
|
|
12
|
-
import { initHanbiroReactSDK, setLibLang } from "./utils/url.js";
|
|
10
|
+
import { default as default3 } from "./components/LoadingContainer/index.js";
|
|
11
|
+
import { default as default4 } from "./components/SummaryAIEmails/index.js";
|
|
12
|
+
applyVersionAttribute();
|
|
13
13
|
export {
|
|
14
14
|
AI_LANG_FLAGS,
|
|
15
15
|
default2 as ChatAIDraft,
|
|
16
|
-
default3 as
|
|
17
|
-
default4 as
|
|
18
|
-
|
|
19
|
-
default6 as SummaryAIEmails,
|
|
20
|
-
initHanbiroReactSDK,
|
|
21
|
-
setLibLang
|
|
16
|
+
default3 as LoadingContainer,
|
|
17
|
+
default4 as SummaryAIEmails,
|
|
18
|
+
getAppVersion
|
|
22
19
|
};
|
package/dist/lang/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { SDKConfig } from "../utils/url.js";
|
|
2
1
|
import { en } from "./en.js";
|
|
3
2
|
import { vi } from "./vi.js";
|
|
4
3
|
import { ko } from "./ko.js";
|
|
4
|
+
import { CURRENT_LANG } from "../utils/lang.js";
|
|
5
5
|
const dicts = {
|
|
6
6
|
en,
|
|
7
7
|
vi,
|
|
8
8
|
ko
|
|
9
9
|
};
|
|
10
10
|
const t = (key) => {
|
|
11
|
-
const lang =
|
|
11
|
+
const lang = CURRENT_LANG || "en";
|
|
12
12
|
const prefix = lang.split("-")[0];
|
|
13
13
|
const dict = dicts[lang] || dicts[prefix] || dicts.en;
|
|
14
14
|
return dict[key] || en[key] || key;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { getAppVersion } from './url';
|
package/dist/utils/lang.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const CURRENT_LANG: string;
|
package/dist/utils/lang.js
CHANGED
|
@@ -25,6 +25,7 @@ function getBrowserLang(shortCode = true) {
|
|
|
25
25
|
const getCurrentLang = () => {
|
|
26
26
|
return localStorageService.get(LOCAL_STORAGE_KEY.LANG_CODE) || getBrowserLang(true);
|
|
27
27
|
};
|
|
28
|
+
const CURRENT_LANG = getCurrentLang();
|
|
28
29
|
export {
|
|
29
|
-
|
|
30
|
+
CURRENT_LANG
|
|
30
31
|
};
|
package/dist/utils/url.d.ts
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
interface SDKConfig {
|
|
2
|
-
baseUrl: string;
|
|
3
|
-
signer: any | null;
|
|
4
|
-
lang?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare const SDKConfig: SDKConfig;
|
|
7
1
|
export declare const getAppVersion: () => "v2" | "v3";
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const setLibLang: (lang: string) => void;
|
|
2
|
+
export declare const applyVersionAttribute: () => void;
|
|
10
3
|
export declare const isDevelopment: boolean;
|
|
11
4
|
export declare const getBaseUrl: () => string;
|
|
12
5
|
export declare const getGroupwareUrl: () => string;
|
|
13
|
-
export {};
|
package/dist/utils/url.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { getCurrentLang } from "./lang.js";
|
|
2
|
-
const SDKConfig = {
|
|
3
|
-
baseUrl: "V3",
|
|
4
|
-
signer: null,
|
|
5
|
-
lang: getCurrentLang()
|
|
6
|
-
};
|
|
7
1
|
const getAppVersion = () => {
|
|
8
2
|
let locationInfo = window.location;
|
|
9
3
|
if (window.location !== window.parent.location) {
|
|
@@ -15,17 +9,13 @@ const getAppVersion = () => {
|
|
|
15
9
|
}
|
|
16
10
|
return locationInfo.pathname.includes("/ngw/app") ? "v2" : "v3";
|
|
17
11
|
};
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
SDKConfig.signer = signer;
|
|
12
|
+
const applyVersionAttribute = () => {
|
|
13
|
+
if (typeof document === "undefined") return;
|
|
21
14
|
document.documentElement.setAttribute(
|
|
22
15
|
"data-hanbiro-sdk-version",
|
|
23
16
|
getAppVersion()
|
|
24
17
|
);
|
|
25
18
|
};
|
|
26
|
-
const setLibLang = (lang) => {
|
|
27
|
-
if (lang) SDKConfig.lang = lang;
|
|
28
|
-
};
|
|
29
19
|
const checkDevelopment = () => {
|
|
30
20
|
const locationInfo = window.location;
|
|
31
21
|
const { hostname } = locationInfo;
|
|
@@ -37,16 +27,10 @@ const checkDevelopment = () => {
|
|
|
37
27
|
};
|
|
38
28
|
const isDevelopment = checkDevelopment();
|
|
39
29
|
const getBaseUrl = () => {
|
|
40
|
-
var _a;
|
|
41
30
|
let locationInfo = window.location;
|
|
42
31
|
const { host } = locationInfo;
|
|
43
32
|
if (isDevelopment) {
|
|
44
|
-
|
|
45
|
-
if (baseUrlArr) {
|
|
46
|
-
return "https://" + (baseUrlArr == null ? void 0 : baseUrlArr[2]);
|
|
47
|
-
} else {
|
|
48
|
-
return "https://vndev.hanbiro.com";
|
|
49
|
-
}
|
|
33
|
+
return "https://vndev.hanbiro.com";
|
|
50
34
|
} else {
|
|
51
35
|
const data = localStorage.getItem("host") || host;
|
|
52
36
|
const dataArr = data == null ? void 0 : data.split("/");
|
|
@@ -54,10 +38,8 @@ const getBaseUrl = () => {
|
|
|
54
38
|
}
|
|
55
39
|
};
|
|
56
40
|
export {
|
|
57
|
-
|
|
41
|
+
applyVersionAttribute,
|
|
58
42
|
getAppVersion,
|
|
59
43
|
getBaseUrl,
|
|
60
|
-
|
|
61
|
-
isDevelopment,
|
|
62
|
-
setLibLang
|
|
44
|
+
isDevelopment
|
|
63
45
|
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hanbiro-react16-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.32",
|
|
4
4
|
"description": "React 16.2.0 compatible UI components for Hanbiro",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/hanbiro-react16-sdk.umd.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
8
8
|
"sideEffects": [
|
|
9
|
-
"**/*.css"
|
|
9
|
+
"**/*.css",
|
|
10
|
+
"./dist/index.js"
|
|
10
11
|
],
|
|
11
12
|
"exports": {
|
|
12
13
|
".": {
|