eli-video-interview 1.2.28 → 1.2.29-beta.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/esm/components/Charts/Chart.d.ts +1 -1
- package/esm/components/Charts/Chart.js +8 -8
- package/esm/components/Charts/ReportPie.js +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/modules/ai-report/components/MenuAnchor/MenuAnchor.d.ts +4 -0
- package/esm/modules/ai-report/components/MenuAnchor/MenuAnchor.js +106 -0
- package/esm/modules/ai-report/components/MenuAnchor/index.d.ts +3 -3
- package/esm/modules/ai-report/components/MenuAnchor/index.js +8 -103
- package/esm/modules/ai-report/components/MenuAnchor/interface.d.ts +10 -0
- package/esm/modules/ai-report/components/MenuAnchor/interface.js +1 -0
- package/esm/modules/ai-report/components/ScoreReport/Bar.js +3 -3
- package/esm/modules/ai-report/index.js +0 -1
- package/esm/modules/ai-report/interface.d.ts +0 -10
- package/lib/components/Charts/Chart.d.ts +1 -1
- package/lib/components/Charts/Chart.js +8 -8
- package/lib/components/Charts/ReportPie.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/modules/ai-report/components/MenuAnchor/MenuAnchor.d.ts +4 -0
- package/lib/modules/ai-report/components/MenuAnchor/MenuAnchor.js +108 -0
- package/lib/modules/ai-report/components/MenuAnchor/index.d.ts +3 -3
- package/lib/modules/ai-report/components/MenuAnchor/index.js +9 -101
- package/lib/modules/ai-report/components/MenuAnchor/interface.d.ts +10 -0
- package/lib/modules/ai-report/components/MenuAnchor/interface.js +2 -0
- package/lib/modules/ai-report/components/ScoreReport/Bar.js +3 -3
- package/lib/modules/ai-report/index.js +0 -1
- package/lib/modules/ai-report/interface.d.ts +0 -10
- package/package.json +7 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef } from 'react';
|
|
3
2
|
import * as echarts from 'echarts';
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
4
|
var charts = {};
|
|
5
5
|
var Chart = function (_a) {
|
|
6
6
|
var _b = _a.id, id = _b === void 0 ? '' : _b, options = _a.options;
|
|
7
7
|
var currentId = useRef('');
|
|
8
8
|
var target = useRef(null);
|
|
9
9
|
useEffect(function () {
|
|
10
|
-
if (id && !charts[id] && options) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
10
|
+
// if (id && !charts[id] && options) {
|
|
11
|
+
currentId.current = id;
|
|
12
|
+
charts[id] = echarts.init(target.current);
|
|
13
|
+
charts[id].resize();
|
|
14
|
+
charts[id].setOption(options, true);
|
|
15
|
+
// }
|
|
16
16
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17
17
|
}, [id, options]);
|
|
18
18
|
useEffect(function () {
|
|
@@ -24,7 +24,7 @@ var Chart = function (_a) {
|
|
|
24
24
|
};
|
|
25
25
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
26
|
}, []);
|
|
27
|
-
return (_jsx("div", { ref: target, style: {
|
|
27
|
+
return (_jsx("div", { id: id, ref: target, style: {
|
|
28
28
|
width: '100%',
|
|
29
29
|
height: '100%',
|
|
30
30
|
} }));
|
|
@@ -21,8 +21,8 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
-
import Chart from "./Chart";
|
|
25
24
|
import { levelMapping } from './const';
|
|
25
|
+
import Chart from "./Chart";
|
|
26
26
|
var formateTitle = function (originalTitle) {
|
|
27
27
|
var regex = /(\d+?)[.](.+)/;
|
|
28
28
|
if (!regex.test(originalTitle))
|
package/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as AiQuestion } from './modules/ai-question';
|
|
2
2
|
export { default as AiReport } from './modules/ai-report';
|
|
3
|
+
export { default as MenuAnchor } from './modules/ai-report/components/MenuAnchor/MenuAnchor';
|
|
3
4
|
export { default as AiTemplate } from './modules/ai-template';
|
|
4
5
|
export { default as AiAbility } from './modules/ai-ability';
|
|
5
6
|
export { default as VideoPreview } from './components/VideoPreview';
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as AiQuestion } from './modules/ai-question';
|
|
2
2
|
export { default as AiReport } from './modules/ai-report';
|
|
3
|
+
export { default as MenuAnchor } from './modules/ai-report/components/MenuAnchor/MenuAnchor';
|
|
3
4
|
export { default as AiTemplate } from './modules/ai-template';
|
|
4
5
|
export { default as AiAbility } from './modules/ai-ability';
|
|
5
6
|
export { default as VideoPreview } from './components/VideoPreview';
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { REPORT_MODULE_MAP } from "../../../../constants/ai-report";
|
|
14
|
+
import { PostAiInterviewResult } from "../../../../services/ai-report";
|
|
15
|
+
import { useRequest } from 'ahooks';
|
|
16
|
+
import { Box, MenuIcon } from 'fbm-ui';
|
|
17
|
+
import { List, ListItem, ListItemButton, ListItemText, Popover } from 'fbm-ui/lib/mui';
|
|
18
|
+
import { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
19
|
+
var MenuAnchor = forwardRef(function (props) {
|
|
20
|
+
var _a = useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
|
|
21
|
+
var _b = useState(), reportResult = _b[0], setReportResult = _b[1];
|
|
22
|
+
var open = Boolean(anchorEl);
|
|
23
|
+
// 接口请求
|
|
24
|
+
var token = props.token, showAiDimension = props.showAiDimension;
|
|
25
|
+
var firstLoad = useRef(true);
|
|
26
|
+
var _c = useState([]), list = _c[0], setList = _c[1];
|
|
27
|
+
var postAiInterviewResult = useRequest(function () { return PostAiInterviewResult([token]); }, {
|
|
28
|
+
manual: true,
|
|
29
|
+
onSuccess: function (_a) {
|
|
30
|
+
var list = _a.data.list;
|
|
31
|
+
var result = list[0];
|
|
32
|
+
setReportResult(result);
|
|
33
|
+
if (firstLoad.current) {
|
|
34
|
+
firstLoad.current = false;
|
|
35
|
+
handleMenuList(result);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
}).run;
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
firstLoad.current = true;
|
|
41
|
+
postAiInterviewResult();
|
|
42
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
|
+
}, [token]);
|
|
44
|
+
// 处理菜单数据
|
|
45
|
+
var handleMenuList = function (reportResult) {
|
|
46
|
+
if (!reportResult.status) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
var resList = [REPORT_MODULE_MAP['videoQuestion']];
|
|
50
|
+
var _a = reportResult.collection, collection = _a === void 0 ? [] : _a, _b = reportResult.workplaces, workplaces = _b === void 0 ? [] : _b, _c = reportResult.suggestion, suggestion = _c === void 0 ? { show: false } : _c, _d = reportResult.evaluations, evaluations = _d === void 0 ? [] : _d;
|
|
51
|
+
if (showAiDimension) {
|
|
52
|
+
if (suggestion === null || suggestion === void 0 ? void 0 : suggestion.show) {
|
|
53
|
+
resList.unshift(REPORT_MODULE_MAP['suggestion']);
|
|
54
|
+
}
|
|
55
|
+
if (collection.length > 0 && evaluations.length > 0) {
|
|
56
|
+
resList.unshift(REPORT_MODULE_MAP['evaluate']);
|
|
57
|
+
}
|
|
58
|
+
if (workplaces.length > 0) {
|
|
59
|
+
resList.unshift(REPORT_MODULE_MAP['workplace']);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (collection.length > 0) {
|
|
63
|
+
resList.unshift(REPORT_MODULE_MAP['score']);
|
|
64
|
+
}
|
|
65
|
+
console.log(resList);
|
|
66
|
+
setList(resList);
|
|
67
|
+
};
|
|
68
|
+
var handlePopoverOpen = function (event) {
|
|
69
|
+
setAnchorEl(event.currentTarget);
|
|
70
|
+
};
|
|
71
|
+
var handlePopoverClose = function () {
|
|
72
|
+
setAnchorEl(null);
|
|
73
|
+
};
|
|
74
|
+
var scrollToAnchor = useCallback(function (id) {
|
|
75
|
+
if (id) {
|
|
76
|
+
var anchorEle = document.getElementById(id);
|
|
77
|
+
if (anchorEle) {
|
|
78
|
+
anchorEle.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}, []);
|
|
82
|
+
var content = useMemo(function () {
|
|
83
|
+
return (_jsx(List, __assign({ style: { minWidth: 150 }, onMouseLeave: handlePopoverClose }, { children: list.map(function (_a) {
|
|
84
|
+
var name = _a.name, id = _a.id;
|
|
85
|
+
return (_jsx(ListItem, __assign({ disablePadding: true }, { children: _jsx(ListItemButton, __assign({ onClick: function () { return scrollToAnchor(id); } }, { children: _jsx(ListItemText, { primary: name }) })) }), id));
|
|
86
|
+
}) })));
|
|
87
|
+
}, [scrollToAnchor, list]);
|
|
88
|
+
return (_jsxs(_Fragment, { children: [(reportResult === null || reportResult === void 0 ? void 0 : reportResult.status) && (_jsx(Box, __assign({ style: {
|
|
89
|
+
display: 'flex',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
justifyContent: 'center',
|
|
92
|
+
height: 32,
|
|
93
|
+
width: 32,
|
|
94
|
+
backgroundColor: '#fff',
|
|
95
|
+
borderRadius: 4,
|
|
96
|
+
boxShadow: '0px 2px 4px rgba(0,0,0, 0.08)',
|
|
97
|
+
}, "aria-owns": open ? 'menu-anchor-popover' : undefined, "aria-haspopup": "true", onClick: handlePopoverOpen, onMouseEnter: handlePopoverOpen }, { children: _jsx(MenuIcon, {}) }))), _jsx(Popover, __assign({ id: "menu-anchor-popover", open: open, anchorEl: anchorEl, anchorOrigin: {
|
|
98
|
+
vertical: 'bottom',
|
|
99
|
+
horizontal: 'right',
|
|
100
|
+
}, transformOrigin: {
|
|
101
|
+
vertical: -8,
|
|
102
|
+
horizontal: 'right',
|
|
103
|
+
}, onClose: handlePopoverClose }, { children: content }))] }));
|
|
104
|
+
});
|
|
105
|
+
MenuAnchor.displayName = 'MenuAnchor';
|
|
106
|
+
export default memo(MenuAnchor);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
declare const _default:
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { MenuAnchorProps } from './interface';
|
|
3
|
+
declare const _default: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<MenuAnchorProps & import("react").RefAttributes<any>>>;
|
|
4
4
|
export default _default;
|
|
@@ -9,107 +9,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
import { jsx as _jsx
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
import { List, ListItem, ListItemButton, ListItemText, Popover } from 'fbm-ui/lib/mui';
|
|
19
|
-
import { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
20
|
-
var MenuAnchor = forwardRef(function (props) {
|
|
21
|
-
var _a = useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
|
|
22
|
-
var open = Boolean(anchorEl);
|
|
23
|
-
// 接口请求
|
|
24
|
-
var token = props.token, showAiDimension = props.showAiDimension;
|
|
25
|
-
var firstLoad = useRef(true);
|
|
26
|
-
var _b = useState([]), list = _b[0], setList = _b[1];
|
|
27
|
-
var _c = useAiReportStore(), reportResult = _c.reportResult, updateState = _c.updateState, updateReportResult = _c.updateReportResult;
|
|
28
|
-
var postAiInterviewResult = useRequest(function () { return PostAiInterviewResult([token]); }, {
|
|
29
|
-
manual: true,
|
|
30
|
-
onSuccess: function (_a) {
|
|
31
|
-
var list = _a.data.list;
|
|
32
|
-
var result = list[0];
|
|
33
|
-
updateReportResult(result);
|
|
34
|
-
if (firstLoad.current) {
|
|
35
|
-
firstLoad.current = false;
|
|
36
|
-
handleMenuList(result);
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
}).run;
|
|
40
|
-
useEffect(function () {
|
|
41
|
-
firstLoad.current = true;
|
|
42
|
-
postAiInterviewResult();
|
|
43
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
-
}, [token]);
|
|
45
|
-
useEffect(function () {
|
|
46
|
-
updateState(props);
|
|
47
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
-
}, [props]);
|
|
49
|
-
// 处理菜单数据
|
|
50
|
-
var handleMenuList = function (reportResult) {
|
|
51
|
-
if (!reportResult.status) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
var resList = [REPORT_MODULE_MAP['videoQuestion']];
|
|
55
|
-
var _a = reportResult.collection, collection = _a === void 0 ? [] : _a, _b = reportResult.workplaces, workplaces = _b === void 0 ? [] : _b, _c = reportResult.suggestion, suggestion = _c === void 0 ? { show: false } : _c, _d = reportResult.evaluations, evaluations = _d === void 0 ? [] : _d;
|
|
56
|
-
if (showAiDimension) {
|
|
57
|
-
if (suggestion === null || suggestion === void 0 ? void 0 : suggestion.show) {
|
|
58
|
-
resList.unshift(REPORT_MODULE_MAP['suggestion']);
|
|
59
|
-
}
|
|
60
|
-
if (collection.length > 0 && evaluations.length > 0) {
|
|
61
|
-
resList.unshift(REPORT_MODULE_MAP['evaluate']);
|
|
62
|
-
}
|
|
63
|
-
if (workplaces.length > 0) {
|
|
64
|
-
resList.unshift(REPORT_MODULE_MAP['workplace']);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (collection.length > 0) {
|
|
68
|
-
resList.unshift(REPORT_MODULE_MAP['score']);
|
|
69
|
-
}
|
|
70
|
-
console.log(resList);
|
|
71
|
-
setList(resList);
|
|
72
|
-
};
|
|
73
|
-
var handlePopoverOpen = function (event) {
|
|
74
|
-
setAnchorEl(event.currentTarget);
|
|
75
|
-
};
|
|
76
|
-
var handlePopoverClose = function () {
|
|
77
|
-
setAnchorEl(null);
|
|
78
|
-
};
|
|
79
|
-
var scrollToAnchor = useCallback(function (id) {
|
|
80
|
-
if (id) {
|
|
81
|
-
var anchorEle = document.getElementById(id);
|
|
82
|
-
if (anchorEle) {
|
|
83
|
-
anchorEle.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}, []);
|
|
87
|
-
var content = useMemo(function () {
|
|
88
|
-
return (_jsx(List, __assign({ style: { minWidth: 150 }, onMouseLeave: handlePopoverClose }, { children: list.map(function (_a) {
|
|
89
|
-
var name = _a.name, id = _a.id;
|
|
90
|
-
return (_jsx(ListItem, __assign({ disablePadding: true }, { children: _jsx(ListItemButton, __assign({ onClick: function () { return scrollToAnchor(id); } }, { children: _jsx(ListItemText, { primary: name }) })) }), id));
|
|
91
|
-
}) })));
|
|
92
|
-
}, [scrollToAnchor, list]);
|
|
93
|
-
return (_jsxs(_Fragment, { children: [(reportResult === null || reportResult === void 0 ? void 0 : reportResult.status) && (_jsx(Box, __assign({ style: {
|
|
94
|
-
display: 'flex',
|
|
95
|
-
alignItems: 'center',
|
|
96
|
-
justifyContent: 'center',
|
|
97
|
-
position: 'absolute',
|
|
98
|
-
top: 20,
|
|
99
|
-
right: -10,
|
|
100
|
-
zIndex: 999,
|
|
101
|
-
height: 32,
|
|
102
|
-
width: 32,
|
|
103
|
-
backgroundColor: '#fff',
|
|
104
|
-
borderRadius: 4,
|
|
105
|
-
boxShadow: '0px 2px 4px rgba(0,0,0, 0.08)',
|
|
106
|
-
}, "aria-owns": open ? 'menu-anchor-popover' : undefined, "aria-haspopup": "true", onClick: handlePopoverOpen, onMouseEnter: handlePopoverOpen }, { children: _jsx(MenuIcon, {}) }))), _jsx(Popover, __assign({ id: "menu-anchor-popover", open: open, anchorEl: anchorEl, anchorOrigin: {
|
|
107
|
-
vertical: 'bottom',
|
|
108
|
-
horizontal: 'right',
|
|
109
|
-
}, transformOrigin: {
|
|
110
|
-
vertical: -8,
|
|
111
|
-
horizontal: 'right',
|
|
112
|
-
}, onClose: handlePopoverClose }, { children: content }))] }));
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import MenuAnchor from './MenuAnchor';
|
|
14
|
+
import RootProvider from "../../../../components/RootProvider";
|
|
15
|
+
import { forwardRef, memo } from 'react';
|
|
16
|
+
var ReportMenuAnchor = forwardRef(function (props, ref) {
|
|
17
|
+
return (_jsx(RootProvider, { children: _jsx(MenuAnchor, __assign({}, props)) }));
|
|
113
18
|
});
|
|
114
|
-
|
|
115
|
-
export default memo(
|
|
19
|
+
ReportMenuAnchor.displayName = 'AiReport';
|
|
20
|
+
export default memo(ReportMenuAnchor);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -10,11 +10,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import {
|
|
14
|
-
import { Box, Typography } from 'fbm-ui';
|
|
13
|
+
import { rankPercent } from '../../utils';
|
|
15
14
|
import { scoreRankIntervalColors } from "../../../../constants/ai-report";
|
|
16
15
|
import { useAiReportStore } from "../../../../store/ai-report/global-store";
|
|
17
|
-
import {
|
|
16
|
+
import { Box, Typography } from 'fbm-ui';
|
|
17
|
+
import { useEffect, useState } from 'react';
|
|
18
18
|
var Bar = function () {
|
|
19
19
|
var _a = useState(1), currentRank = _a[0], setCurrentRank = _a[1];
|
|
20
20
|
var _b = useState(''), text = _b[0], setText = _b[1];
|
|
@@ -14,7 +14,6 @@ import ReportRoot from './Root';
|
|
|
14
14
|
import RootProvider from "../../components/RootProvider";
|
|
15
15
|
import { forwardRef, memo } from 'react';
|
|
16
16
|
var AiReport = forwardRef(function (props, ref) {
|
|
17
|
-
// const { token, showAiDimension = true } = props;
|
|
18
17
|
return (_jsx(RootProvider, { children: _jsx(ReportRoot, __assign({ ref: ref }, props)) }));
|
|
19
18
|
});
|
|
20
19
|
AiReport.displayName = 'AiReport';
|
|
@@ -175,13 +175,3 @@ export interface AiReportProps {
|
|
|
175
175
|
export interface AiReportRef {
|
|
176
176
|
handleRefresh: () => void;
|
|
177
177
|
}
|
|
178
|
-
export interface AnchorItem {
|
|
179
|
-
type: string;
|
|
180
|
-
name: string;
|
|
181
|
-
id: string;
|
|
182
|
-
}
|
|
183
|
-
export interface MenuAnchorProps {
|
|
184
|
-
list?: AnchorItem[];
|
|
185
|
-
token: string;
|
|
186
|
-
showAiDimension: boolean;
|
|
187
|
-
}
|
|
@@ -24,20 +24,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
-
var react_1 = require("react");
|
|
28
27
|
var echarts = __importStar(require("echarts"));
|
|
28
|
+
var react_1 = require("react");
|
|
29
29
|
var charts = {};
|
|
30
30
|
var Chart = function (_a) {
|
|
31
31
|
var _b = _a.id, id = _b === void 0 ? '' : _b, options = _a.options;
|
|
32
32
|
var currentId = (0, react_1.useRef)('');
|
|
33
33
|
var target = (0, react_1.useRef)(null);
|
|
34
34
|
(0, react_1.useEffect)(function () {
|
|
35
|
-
if (id && !charts[id] && options) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
35
|
+
// if (id && !charts[id] && options) {
|
|
36
|
+
currentId.current = id;
|
|
37
|
+
charts[id] = echarts.init(target.current);
|
|
38
|
+
charts[id].resize();
|
|
39
|
+
charts[id].setOption(options, true);
|
|
40
|
+
// }
|
|
41
41
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
42
|
}, [id, options]);
|
|
43
43
|
(0, react_1.useEffect)(function () {
|
|
@@ -49,7 +49,7 @@ var Chart = function (_a) {
|
|
|
49
49
|
};
|
|
50
50
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
51
|
}, []);
|
|
52
|
-
return ((0, jsx_runtime_1.jsx)("div", { ref: target, style: {
|
|
52
|
+
return ((0, jsx_runtime_1.jsx)("div", { id: id, ref: target, style: {
|
|
53
53
|
width: '100%',
|
|
54
54
|
height: '100%',
|
|
55
55
|
} }));
|
|
@@ -26,8 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
|
-
var Chart_1 = __importDefault(require("./Chart"));
|
|
30
29
|
var const_1 = require("./const");
|
|
30
|
+
var Chart_1 = __importDefault(require("./Chart"));
|
|
31
31
|
var formateTitle = function (originalTitle) {
|
|
32
32
|
var regex = /(\d+?)[.](.+)/;
|
|
33
33
|
if (!regex.test(originalTitle))
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as AiQuestion } from './modules/ai-question';
|
|
2
2
|
export { default as AiReport } from './modules/ai-report';
|
|
3
|
+
export { default as MenuAnchor } from './modules/ai-report/components/MenuAnchor/MenuAnchor';
|
|
3
4
|
export { default as AiTemplate } from './modules/ai-template';
|
|
4
5
|
export { default as AiAbility } from './modules/ai-ability';
|
|
5
6
|
export { default as VideoPreview } from './components/VideoPreview';
|
package/lib/index.js
CHANGED
|
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.avocadoVideoInterview = exports.useAiReport = exports.useAiQuestion = exports.VideoPreview = exports.AiAbility = exports.AiTemplate = exports.AiReport = exports.AiQuestion = void 0;
|
|
6
|
+
exports.avocadoVideoInterview = exports.useAiReport = exports.useAiQuestion = exports.VideoPreview = exports.AiAbility = exports.AiTemplate = exports.MenuAnchor = exports.AiReport = exports.AiQuestion = void 0;
|
|
7
7
|
var ai_question_1 = require("./modules/ai-question");
|
|
8
8
|
Object.defineProperty(exports, "AiQuestion", { enumerable: true, get: function () { return __importDefault(ai_question_1).default; } });
|
|
9
9
|
var ai_report_1 = require("./modules/ai-report");
|
|
10
10
|
Object.defineProperty(exports, "AiReport", { enumerable: true, get: function () { return __importDefault(ai_report_1).default; } });
|
|
11
|
+
var MenuAnchor_1 = require("./modules/ai-report/components/MenuAnchor/MenuAnchor");
|
|
12
|
+
Object.defineProperty(exports, "MenuAnchor", { enumerable: true, get: function () { return __importDefault(MenuAnchor_1).default; } });
|
|
11
13
|
var ai_template_1 = require("./modules/ai-template");
|
|
12
14
|
Object.defineProperty(exports, "AiTemplate", { enumerable: true, get: function () { return __importDefault(ai_template_1).default; } });
|
|
13
15
|
var ai_ability_1 = require("./modules/ai-ability");
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
|
+
var ai_report_1 = require("../../../../constants/ai-report");
|
|
16
|
+
var ai_report_2 = require("../../../../services/ai-report");
|
|
17
|
+
var ahooks_1 = require("ahooks");
|
|
18
|
+
var fbm_ui_1 = require("fbm-ui");
|
|
19
|
+
var mui_1 = require("fbm-ui/lib/mui");
|
|
20
|
+
var react_1 = require("react");
|
|
21
|
+
var MenuAnchor = (0, react_1.forwardRef)(function (props) {
|
|
22
|
+
var _a = (0, react_1.useState)(null), anchorEl = _a[0], setAnchorEl = _a[1];
|
|
23
|
+
var _b = (0, react_1.useState)(), reportResult = _b[0], setReportResult = _b[1];
|
|
24
|
+
var open = Boolean(anchorEl);
|
|
25
|
+
// 接口请求
|
|
26
|
+
var token = props.token, showAiDimension = props.showAiDimension;
|
|
27
|
+
var firstLoad = (0, react_1.useRef)(true);
|
|
28
|
+
var _c = (0, react_1.useState)([]), list = _c[0], setList = _c[1];
|
|
29
|
+
var postAiInterviewResult = (0, ahooks_1.useRequest)(function () { return (0, ai_report_2.PostAiInterviewResult)([token]); }, {
|
|
30
|
+
manual: true,
|
|
31
|
+
onSuccess: function (_a) {
|
|
32
|
+
var list = _a.data.list;
|
|
33
|
+
var result = list[0];
|
|
34
|
+
setReportResult(result);
|
|
35
|
+
if (firstLoad.current) {
|
|
36
|
+
firstLoad.current = false;
|
|
37
|
+
handleMenuList(result);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
}).run;
|
|
41
|
+
(0, react_1.useEffect)(function () {
|
|
42
|
+
firstLoad.current = true;
|
|
43
|
+
postAiInterviewResult();
|
|
44
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
|
+
}, [token]);
|
|
46
|
+
// 处理菜单数据
|
|
47
|
+
var handleMenuList = function (reportResult) {
|
|
48
|
+
if (!reportResult.status) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
var resList = [ai_report_1.REPORT_MODULE_MAP['videoQuestion']];
|
|
52
|
+
var _a = reportResult.collection, collection = _a === void 0 ? [] : _a, _b = reportResult.workplaces, workplaces = _b === void 0 ? [] : _b, _c = reportResult.suggestion, suggestion = _c === void 0 ? { show: false } : _c, _d = reportResult.evaluations, evaluations = _d === void 0 ? [] : _d;
|
|
53
|
+
if (showAiDimension) {
|
|
54
|
+
if (suggestion === null || suggestion === void 0 ? void 0 : suggestion.show) {
|
|
55
|
+
resList.unshift(ai_report_1.REPORT_MODULE_MAP['suggestion']);
|
|
56
|
+
}
|
|
57
|
+
if (collection.length > 0 && evaluations.length > 0) {
|
|
58
|
+
resList.unshift(ai_report_1.REPORT_MODULE_MAP['evaluate']);
|
|
59
|
+
}
|
|
60
|
+
if (workplaces.length > 0) {
|
|
61
|
+
resList.unshift(ai_report_1.REPORT_MODULE_MAP['workplace']);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (collection.length > 0) {
|
|
65
|
+
resList.unshift(ai_report_1.REPORT_MODULE_MAP['score']);
|
|
66
|
+
}
|
|
67
|
+
console.log(resList);
|
|
68
|
+
setList(resList);
|
|
69
|
+
};
|
|
70
|
+
var handlePopoverOpen = function (event) {
|
|
71
|
+
setAnchorEl(event.currentTarget);
|
|
72
|
+
};
|
|
73
|
+
var handlePopoverClose = function () {
|
|
74
|
+
setAnchorEl(null);
|
|
75
|
+
};
|
|
76
|
+
var scrollToAnchor = (0, react_1.useCallback)(function (id) {
|
|
77
|
+
if (id) {
|
|
78
|
+
var anchorEle = document.getElementById(id);
|
|
79
|
+
if (anchorEle) {
|
|
80
|
+
anchorEle.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, []);
|
|
84
|
+
var content = (0, react_1.useMemo)(function () {
|
|
85
|
+
return ((0, jsx_runtime_1.jsx)(mui_1.List, __assign({ style: { minWidth: 150 }, onMouseLeave: handlePopoverClose }, { children: list.map(function (_a) {
|
|
86
|
+
var name = _a.name, id = _a.id;
|
|
87
|
+
return ((0, jsx_runtime_1.jsx)(mui_1.ListItem, __assign({ disablePadding: true }, { children: (0, jsx_runtime_1.jsx)(mui_1.ListItemButton, __assign({ onClick: function () { return scrollToAnchor(id); } }, { children: (0, jsx_runtime_1.jsx)(mui_1.ListItemText, { primary: name }) })) }), id));
|
|
88
|
+
}) })));
|
|
89
|
+
}, [scrollToAnchor, list]);
|
|
90
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(reportResult === null || reportResult === void 0 ? void 0 : reportResult.status) && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ style: {
|
|
91
|
+
display: 'flex',
|
|
92
|
+
alignItems: 'center',
|
|
93
|
+
justifyContent: 'center',
|
|
94
|
+
height: 32,
|
|
95
|
+
width: 32,
|
|
96
|
+
backgroundColor: '#fff',
|
|
97
|
+
borderRadius: 4,
|
|
98
|
+
boxShadow: '0px 2px 4px rgba(0,0,0, 0.08)',
|
|
99
|
+
}, "aria-owns": open ? 'menu-anchor-popover' : undefined, "aria-haspopup": "true", onClick: handlePopoverOpen, onMouseEnter: handlePopoverOpen }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.MenuIcon, {}) }))), (0, jsx_runtime_1.jsx)(mui_1.Popover, __assign({ id: "menu-anchor-popover", open: open, anchorEl: anchorEl, anchorOrigin: {
|
|
100
|
+
vertical: 'bottom',
|
|
101
|
+
horizontal: 'right',
|
|
102
|
+
}, transformOrigin: {
|
|
103
|
+
vertical: -8,
|
|
104
|
+
horizontal: 'right',
|
|
105
|
+
}, onClose: handlePopoverClose }, { children: content }))] }));
|
|
106
|
+
});
|
|
107
|
+
MenuAnchor.displayName = 'MenuAnchor';
|
|
108
|
+
exports.default = (0, react_1.memo)(MenuAnchor);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
declare const _default:
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { MenuAnchorProps } from './interface';
|
|
3
|
+
declare const _default: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<MenuAnchorProps & import("react").RefAttributes<any>>>;
|
|
4
4
|
export default _default;
|
|
@@ -10,108 +10,16 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
13
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
17
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var global_store_1 = require("../../../../store/ai-report/global-store");
|
|
18
|
-
var ahooks_1 = require("ahooks");
|
|
19
|
-
var fbm_ui_1 = require("fbm-ui");
|
|
20
|
-
var mui_1 = require("fbm-ui/lib/mui");
|
|
18
|
+
var MenuAnchor_1 = __importDefault(require("./MenuAnchor"));
|
|
19
|
+
var RootProvider_1 = __importDefault(require("../../../../components/RootProvider"));
|
|
21
20
|
var react_1 = require("react");
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
var open = Boolean(anchorEl);
|
|
25
|
-
// 接口请求
|
|
26
|
-
var token = props.token, showAiDimension = props.showAiDimension;
|
|
27
|
-
var firstLoad = (0, react_1.useRef)(true);
|
|
28
|
-
var _b = (0, react_1.useState)([]), list = _b[0], setList = _b[1];
|
|
29
|
-
var _c = (0, global_store_1.useAiReportStore)(), reportResult = _c.reportResult, updateState = _c.updateState, updateReportResult = _c.updateReportResult;
|
|
30
|
-
var postAiInterviewResult = (0, ahooks_1.useRequest)(function () { return (0, ai_report_2.PostAiInterviewResult)([token]); }, {
|
|
31
|
-
manual: true,
|
|
32
|
-
onSuccess: function (_a) {
|
|
33
|
-
var list = _a.data.list;
|
|
34
|
-
var result = list[0];
|
|
35
|
-
updateReportResult(result);
|
|
36
|
-
if (firstLoad.current) {
|
|
37
|
-
firstLoad.current = false;
|
|
38
|
-
handleMenuList(result);
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
}).run;
|
|
42
|
-
(0, react_1.useEffect)(function () {
|
|
43
|
-
firstLoad.current = true;
|
|
44
|
-
postAiInterviewResult();
|
|
45
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
|
-
}, [token]);
|
|
47
|
-
(0, react_1.useEffect)(function () {
|
|
48
|
-
updateState(props);
|
|
49
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
|
-
}, [props]);
|
|
51
|
-
// 处理菜单数据
|
|
52
|
-
var handleMenuList = function (reportResult) {
|
|
53
|
-
if (!reportResult.status) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
var resList = [ai_report_1.REPORT_MODULE_MAP['videoQuestion']];
|
|
57
|
-
var _a = reportResult.collection, collection = _a === void 0 ? [] : _a, _b = reportResult.workplaces, workplaces = _b === void 0 ? [] : _b, _c = reportResult.suggestion, suggestion = _c === void 0 ? { show: false } : _c, _d = reportResult.evaluations, evaluations = _d === void 0 ? [] : _d;
|
|
58
|
-
if (showAiDimension) {
|
|
59
|
-
if (suggestion === null || suggestion === void 0 ? void 0 : suggestion.show) {
|
|
60
|
-
resList.unshift(ai_report_1.REPORT_MODULE_MAP['suggestion']);
|
|
61
|
-
}
|
|
62
|
-
if (collection.length > 0 && evaluations.length > 0) {
|
|
63
|
-
resList.unshift(ai_report_1.REPORT_MODULE_MAP['evaluate']);
|
|
64
|
-
}
|
|
65
|
-
if (workplaces.length > 0) {
|
|
66
|
-
resList.unshift(ai_report_1.REPORT_MODULE_MAP['workplace']);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (collection.length > 0) {
|
|
70
|
-
resList.unshift(ai_report_1.REPORT_MODULE_MAP['score']);
|
|
71
|
-
}
|
|
72
|
-
console.log(resList);
|
|
73
|
-
setList(resList);
|
|
74
|
-
};
|
|
75
|
-
var handlePopoverOpen = function (event) {
|
|
76
|
-
setAnchorEl(event.currentTarget);
|
|
77
|
-
};
|
|
78
|
-
var handlePopoverClose = function () {
|
|
79
|
-
setAnchorEl(null);
|
|
80
|
-
};
|
|
81
|
-
var scrollToAnchor = (0, react_1.useCallback)(function (id) {
|
|
82
|
-
if (id) {
|
|
83
|
-
var anchorEle = document.getElementById(id);
|
|
84
|
-
if (anchorEle) {
|
|
85
|
-
anchorEle.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}, []);
|
|
89
|
-
var content = (0, react_1.useMemo)(function () {
|
|
90
|
-
return ((0, jsx_runtime_1.jsx)(mui_1.List, __assign({ style: { minWidth: 150 }, onMouseLeave: handlePopoverClose }, { children: list.map(function (_a) {
|
|
91
|
-
var name = _a.name, id = _a.id;
|
|
92
|
-
return ((0, jsx_runtime_1.jsx)(mui_1.ListItem, __assign({ disablePadding: true }, { children: (0, jsx_runtime_1.jsx)(mui_1.ListItemButton, __assign({ onClick: function () { return scrollToAnchor(id); } }, { children: (0, jsx_runtime_1.jsx)(mui_1.ListItemText, { primary: name }) })) }), id));
|
|
93
|
-
}) })));
|
|
94
|
-
}, [scrollToAnchor, list]);
|
|
95
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(reportResult === null || reportResult === void 0 ? void 0 : reportResult.status) && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ style: {
|
|
96
|
-
display: 'flex',
|
|
97
|
-
alignItems: 'center',
|
|
98
|
-
justifyContent: 'center',
|
|
99
|
-
position: 'absolute',
|
|
100
|
-
top: 20,
|
|
101
|
-
right: -10,
|
|
102
|
-
zIndex: 999,
|
|
103
|
-
height: 32,
|
|
104
|
-
width: 32,
|
|
105
|
-
backgroundColor: '#fff',
|
|
106
|
-
borderRadius: 4,
|
|
107
|
-
boxShadow: '0px 2px 4px rgba(0,0,0, 0.08)',
|
|
108
|
-
}, "aria-owns": open ? 'menu-anchor-popover' : undefined, "aria-haspopup": "true", onClick: handlePopoverOpen, onMouseEnter: handlePopoverOpen }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.MenuIcon, {}) }))), (0, jsx_runtime_1.jsx)(mui_1.Popover, __assign({ id: "menu-anchor-popover", open: open, anchorEl: anchorEl, anchorOrigin: {
|
|
109
|
-
vertical: 'bottom',
|
|
110
|
-
horizontal: 'right',
|
|
111
|
-
}, transformOrigin: {
|
|
112
|
-
vertical: -8,
|
|
113
|
-
horizontal: 'right',
|
|
114
|
-
}, onClose: handlePopoverClose }, { children: content }))] }));
|
|
21
|
+
var ReportMenuAnchor = (0, react_1.forwardRef)(function (props, ref) {
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)(RootProvider_1.default, { children: (0, jsx_runtime_1.jsx)(MenuAnchor_1.default, __assign({}, props)) }));
|
|
115
23
|
});
|
|
116
|
-
|
|
117
|
-
exports.default = (0, react_1.memo)(
|
|
24
|
+
ReportMenuAnchor.displayName = 'AiReport';
|
|
25
|
+
exports.default = (0, react_1.memo)(ReportMenuAnchor);
|
|
@@ -12,11 +12,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
|
-
var
|
|
16
|
-
var fbm_ui_1 = require("fbm-ui");
|
|
15
|
+
var utils_1 = require("../../utils");
|
|
17
16
|
var ai_report_1 = require("../../../../constants/ai-report");
|
|
18
17
|
var global_store_1 = require("../../../../store/ai-report/global-store");
|
|
19
|
-
var
|
|
18
|
+
var fbm_ui_1 = require("fbm-ui");
|
|
19
|
+
var react_1 = require("react");
|
|
20
20
|
var Bar = function () {
|
|
21
21
|
var _a = (0, react_1.useState)(1), currentRank = _a[0], setCurrentRank = _a[1];
|
|
22
22
|
var _b = (0, react_1.useState)(''), text = _b[0], setText = _b[1];
|
|
@@ -19,7 +19,6 @@ var Root_1 = __importDefault(require("./Root"));
|
|
|
19
19
|
var RootProvider_1 = __importDefault(require("../../components/RootProvider"));
|
|
20
20
|
var react_1 = require("react");
|
|
21
21
|
var AiReport = (0, react_1.forwardRef)(function (props, ref) {
|
|
22
|
-
// const { token, showAiDimension = true } = props;
|
|
23
22
|
return ((0, jsx_runtime_1.jsx)(RootProvider_1.default, { children: (0, jsx_runtime_1.jsx)(Root_1.default, __assign({ ref: ref }, props)) }));
|
|
24
23
|
});
|
|
25
24
|
AiReport.displayName = 'AiReport';
|
|
@@ -175,13 +175,3 @@ export interface AiReportProps {
|
|
|
175
175
|
export interface AiReportRef {
|
|
176
176
|
handleRefresh: () => void;
|
|
177
177
|
}
|
|
178
|
-
export interface AnchorItem {
|
|
179
|
-
type: string;
|
|
180
|
-
name: string;
|
|
181
|
-
id: string;
|
|
182
|
-
}
|
|
183
|
-
export interface MenuAnchorProps {
|
|
184
|
-
list?: AnchorItem[];
|
|
185
|
-
token: string;
|
|
186
|
-
showAiDimension: boolean;
|
|
187
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eli-video-interview",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.29-beta.0",
|
|
4
4
|
"description": "鳄梨科技 AI视频面试 React SDK",
|
|
5
5
|
"author": "鳄梨科技",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,6 +29,12 @@
|
|
|
29
29
|
"typescript": "^4.7.2",
|
|
30
30
|
"use-immer": "^0.7.0"
|
|
31
31
|
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/jest": "^27.5.1",
|
|
34
|
+
"@types/node": "^16.11.36",
|
|
35
|
+
"@types/react": "^17.0.0",
|
|
36
|
+
"@types/react-dom": "^17.0.0"
|
|
37
|
+
},
|
|
32
38
|
"scripts": {
|
|
33
39
|
"clean": "rimraf lib esm build",
|
|
34
40
|
"serve": "npm run dev",
|