@cloud-app-dev/vidc 3.2.14 → 3.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/es/{List/DynamicGridList → DynamicGridList}/Demo.d.ts +0 -0
  2. package/es/{List/DynamicGridList → DynamicGridList}/Demo.js +7 -2
  3. package/es/{List/DynamicGridList → DynamicGridList}/index.d.ts +1 -1
  4. package/es/{List/DynamicGridList → DynamicGridList}/index.js +1 -1
  5. package/es/DynamicList/demo.d.ts +2 -0
  6. package/es/DynamicList/demo.js +60 -0
  7. package/es/{List/DynamicList → DynamicList}/index.d.ts +18 -1
  8. package/es/{List/DynamicList → DynamicList}/index.js +8 -7
  9. package/es/{List/DynamicList → DynamicList}/index.less +0 -0
  10. package/es/{List/DynamicList → DynamicList}/interface.d.ts +0 -0
  11. package/es/{List/DynamicList → DynamicList}/utils.d.ts +0 -0
  12. package/es/{List/DynamicList → DynamicList}/utils.js +0 -0
  13. package/es/{List/GridList → GridList}/Demo.d.ts +0 -0
  14. package/es/{List/GridList → GridList}/Demo.js +4 -3
  15. package/es/GridList/data.d.ts +16 -0
  16. package/es/GridList/data.js +609 -0
  17. package/es/{List/GridList → GridList}/hook.d.ts +0 -0
  18. package/es/{List/GridList → GridList}/hook.js +0 -0
  19. package/es/{List/GridList → GridList}/index.d.ts +0 -0
  20. package/es/{List/GridList → GridList}/index.js +0 -0
  21. package/es/{List/GridList → GridList}/index.less +0 -0
  22. package/es/{List/GridList → GridList}/interface.d.ts +0 -0
  23. package/es/{List/GridList → GridList}/utils.d.ts +0 -0
  24. package/es/{List/GridList → GridList}/utils.js +0 -0
  25. package/es/List/index.d.ts +28 -5
  26. package/es/List/index.js +6 -5
  27. package/es/ListWithSizeAnimate/demo.js +121 -0
  28. package/es/ListWithSizeAnimate/index.d.ts +7 -2
  29. package/es/ListWithSizeAnimate/index.js +52 -11
  30. package/es/ListWithSizeAnimate/index.less +1 -0
  31. package/es/ScreenPlayer/Live.js +1 -1
  32. package/es/ScreenPlayer/ScreenSelect.js +1 -1
  33. package/es/{List/VList → VList}/index.d.ts +0 -0
  34. package/es/{List/VList → VList}/index.js +5 -4
  35. package/es/{List/VList → VList}/index.less +0 -0
  36. package/es/{List/VList → VList}/utils.d.ts +0 -0
  37. package/es/{List/VList → VList}/utils.js +0 -0
  38. package/es/index.d.ts +4 -0
  39. package/es/index.js +4 -0
  40. package/package.json +1 -1
  41. package/es/List/GridList/data.json +0 -710
  42. package/es/List/interface.d.ts +0 -29
@@ -1,6 +1,29 @@
1
1
  import React from 'react';
2
- import { ListProps } from './interface';
3
2
  import './index.less';
3
+ export interface ListProps<T> {
4
+ /**
5
+ * @description 列表数据
6
+ * @default []
7
+ */
8
+ list?: Array<T>;
9
+ /**
10
+ * @description 列表类名
11
+ * @default ''
12
+ */
13
+ className?: string;
14
+ /**
15
+ * @description 列表样式
16
+ * @default -
17
+ */
18
+ style?: React.CSSProperties;
19
+ /**
20
+ * @description 列表自定义渲染
21
+ * @default -
22
+ */
23
+ renderItem: (item: T, index: number) => JSX.Element;
24
+ rowHeight?: number;
25
+ renderHeaderExt?: () => JSX.Element;
26
+ }
4
27
  declare function List<T>(props: ListProps<T>): JSX.Element;
5
28
  declare namespace List {
6
29
  var defaultProps: {
@@ -10,9 +33,9 @@ declare namespace List {
10
33
  itemNameKey: string;
11
34
  renderHeaderExt: () => JSX.Element;
12
35
  };
13
- var VList: typeof import("./VList").default;
14
- var DynamicList: typeof import("./DynamicList").default;
15
- var GridList: React.ForwardRefExoticComponent<import("./GridList").GridListProps<unknown> & React.RefAttributes<HTMLDivElement>>;
16
- var DynamicGridList: typeof import("./DynamicGridList").default;
36
+ var VList: typeof import("../VList").default;
37
+ var DynamicList: typeof import("../DynamicList").default;
38
+ var GridList: React.ForwardRefExoticComponent<import("../GridList").GridListProps<unknown> & React.RefAttributes<HTMLDivElement>>;
39
+ var DynamicGridList: typeof import("../DynamicGridList").default;
17
40
  }
18
41
  export default List;
package/es/List/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
- import DynamicList from "./DynamicList";
3
- import GridList from "./GridList";
4
- import DynamicGridList from "./DynamicGridList";
5
- import VList from "./VList";
2
+ import DynamicGridList from "../DynamicGridList";
3
+ import DynamicList from "../DynamicList";
4
+ import GridList from "../GridList";
5
+ import VList from "../VList"; // style
6
+
6
7
  import "./index.less";
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
8
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -20,7 +21,7 @@ function List(props) {
20
21
  style: style,
21
22
  children: [/*#__PURE__*/_jsx("div", {
22
23
  className: "lm-c-list-header",
23
- children: renderHeaderExt()
24
+ children: renderHeaderExt === null || renderHeaderExt === void 0 ? void 0 : renderHeaderExt()
24
25
  }), /*#__PURE__*/_jsx("div", {
25
26
  className: "lm-c-base-list-layout",
26
27
  children: /*#__PURE__*/_jsx(VList, {
@@ -1,6 +1,56 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+
3
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
+
9
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
+
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
+
13
+ /* eslint-disable @typescript-eslint/no-unused-expressions */
1
14
  import React from 'react';
2
15
  import ListWithSizeAnimate from "./index";
3
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+
19
+ function random(low, high) {
20
+ return Math.floor(Math.random() * high) + low;
21
+ }
22
+
23
+ var IMAGES = function IMAGES() {
24
+ return Array.from({
25
+ length: 20
26
+ }, function (_, index) {
27
+ var width = 300;
28
+ var height = random(200, 300);
29
+ return {
30
+ url: "https://picsum.photos/id/".concat(index + 1, "/").concat(width, "/").concat(height, ".jpg"),
31
+ width: width,
32
+ height: height
33
+ };
34
+ });
35
+ };
36
+
37
+ function loadPage(d) {
38
+ if (!d) {
39
+ // eslint-disable-next-line no-param-reassign
40
+ d = {};
41
+ }
42
+
43
+ var resultData = IMAGES();
44
+ d.page ? d.page++ : d.page = 1;
45
+ d.list ? d.list = [].concat(_toConsumableArray(d.list), _toConsumableArray(resultData)) : d.list = resultData;
46
+ return new Promise(function (resolve) {
47
+ console.log(d.page);
48
+ setTimeout(function () {
49
+ return resolve(d);
50
+ }, 10);
51
+ });
52
+ }
53
+
4
54
  export default function App() {
5
55
  return /*#__PURE__*/_jsx("div", {
6
56
  style: {
@@ -9,6 +59,77 @@ export default function App() {
9
59
  },
10
60
  children: /*#__PURE__*/_jsx(ListWithSizeAnimate, {
11
61
  headerSize: 400,
62
+ header: /*#__PURE__*/_jsx("div", {
63
+ children: /*#__PURE__*/_jsxs("ul", {
64
+ children: [/*#__PURE__*/_jsx("li", {
65
+ children: "\u6761\u4EF61"
66
+ }), /*#__PURE__*/_jsx("li", {
67
+ children: "\u6761\u4EF62"
68
+ }), /*#__PURE__*/_jsx("li", {
69
+ children: "\u6761\u4EF63"
70
+ }), /*#__PURE__*/_jsx("li", {
71
+ children: "\u6761\u4EF63"
72
+ }), /*#__PURE__*/_jsx("li", {
73
+ children: "\u6761\u4EF63"
74
+ }), /*#__PURE__*/_jsx("li", {
75
+ children: "\u6761\u4EF63"
76
+ }), /*#__PURE__*/_jsx("li", {
77
+ children: "\u6761\u4EF63"
78
+ }), /*#__PURE__*/_jsx("li", {
79
+ children: "\u6761\u4EF63"
80
+ }), /*#__PURE__*/_jsx("li", {
81
+ children: "\u6761\u4EF63"
82
+ }), /*#__PURE__*/_jsx("li", {
83
+ children: "\u6761\u4EF63"
84
+ }), /*#__PURE__*/_jsx("li", {
85
+ children: "\u6761\u4EF63"
86
+ }), /*#__PURE__*/_jsx("li", {
87
+ children: "\u6761\u4EF63"
88
+ }), /*#__PURE__*/_jsx("li", {
89
+ children: "\u6761\u4EF63"
90
+ }), /*#__PURE__*/_jsx("li", {
91
+ children: "\u6761\u4EF63"
92
+ }), /*#__PURE__*/_jsx("li", {
93
+ children: "\u6761\u4EF63"
94
+ }), /*#__PURE__*/_jsx("li", {
95
+ children: "\u6761\u4EF63"
96
+ })]
97
+ })
98
+ }),
99
+ itemKey: "url",
100
+ itemHeight: 300,
101
+ itemWidth: 250,
102
+ renderItem: function renderItem(image) {
103
+ return /*#__PURE__*/_jsxs("div", {
104
+ style: {
105
+ border: '1px solid gray',
106
+ height: '100%',
107
+ display: 'flex',
108
+ flexDirection: 'column'
109
+ },
110
+ children: [/*#__PURE__*/_jsx("div", {
111
+ style: {
112
+ flex: 1,
113
+ overflow: 'hidden'
114
+ },
115
+ children: /*#__PURE__*/_jsx("img", {
116
+ src: image.url,
117
+ alt: "",
118
+ style: {
119
+ objectFit: 'cover',
120
+ display: 'block',
121
+ width: '100%',
122
+ height: '100%'
123
+ }
124
+ })
125
+ }), /*#__PURE__*/_jsx("p", {
126
+ children: "\u6807\u9898"
127
+ }), /*#__PURE__*/_jsx("p", {
128
+ children: "\u63CF\u8FF0"
129
+ })]
130
+ });
131
+ },
132
+ loadPage: loadPage,
12
133
  children: /*#__PURE__*/_jsx("div", {
13
134
  style: {
14
135
  height: 800
@@ -1,9 +1,14 @@
1
1
  import React from 'react';
2
+ import { IDynamicGridListProps } from '../DynamicGridList';
2
3
  import './index.less';
3
- interface IListWithSizeAnimateProps {
4
+ interface IListWithSizeAnimateProps<T> extends IDynamicGridListProps<T> {
4
5
  headerSize: number;
5
6
  children?: React.ReactNode;
6
7
  header?: React.ReactNode;
7
8
  }
8
- declare function ListWithSizeAnimate({ headerSize, children, header }: IListWithSizeAnimateProps): JSX.Element;
9
+ interface IListWithSizeAnimateRef {
10
+ open: () => void;
11
+ close: () => void;
12
+ }
13
+ declare const ListWithSizeAnimate: React.ForwardRefExoticComponent<IListWithSizeAnimateProps<unknown> & React.RefAttributes<IListWithSizeAnimateRef>>;
9
14
  export default ListWithSizeAnimate;
@@ -1,4 +1,11 @@
1
1
  import _useEventListener from "ahooks/es/useEventListener";
2
+ var _excluded = ["headerSize", "header"];
3
+
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
+
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
9
 
3
10
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
11
 
@@ -12,16 +19,22 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
12
19
 
13
20
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
21
 
15
- import React, { useMemo, useRef } from 'react';
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+
26
+ import React, { useImperativeHandle, useMemo, useRef } from 'react';
27
+ import DynamicGridList from "../DynamicGridList";
16
28
  import useSimpleState from "../useSimpleState";
17
29
  import "./index.less";
18
30
  import { jsx as _jsx } from "react/jsx-runtime";
19
31
  import { jsxs as _jsxs } from "react/jsx-runtime";
32
+ var ListWithSizeAnimate = /*#__PURE__*/React.forwardRef(function ListWithSizeAnimate(_ref, forwardRef) {
33
+ var _ref$current;
20
34
 
21
- function ListWithSizeAnimate(_ref) {
22
35
  var headerSize = _ref.headerSize,
23
- children = _ref.children,
24
- header = _ref.header;
36
+ header = _ref.header,
37
+ props = _objectWithoutProperties(_ref, _excluded);
25
38
 
26
39
  var _useSimpleState = useSimpleState({
27
40
  open: true
@@ -39,20 +52,49 @@ function ListWithSizeAnimate(_ref) {
39
52
  }, [headerHeight]);
40
53
 
41
54
  _useEventListener('wheel', function (event) {
42
- updateState({
43
- open: event.deltaY < 0
44
- });
55
+ if (event.deltaY > 0 && state.open) {
56
+ updateState({
57
+ open: false
58
+ });
59
+ }
45
60
  }, {
46
61
  target: ref
47
62
  });
48
63
 
64
+ _useEventListener('scroll', function (event) {
65
+ var _event$currentTarget;
66
+
67
+ if (((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 ? void 0 : _event$currentTarget.scrollTop) === 0) {
68
+ updateState({
69
+ open: true
70
+ });
71
+ }
72
+ }, {
73
+ target: (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.querySelector('.cloudapp-dynamic-grid-list')
74
+ });
75
+
76
+ useImperativeHandle(forwardRef, function () {
77
+ return {
78
+ open: function open() {
79
+ return updateState({
80
+ open: true
81
+ });
82
+ },
83
+ close: function close() {
84
+ return updateState({
85
+ open: false
86
+ });
87
+ }
88
+ };
89
+ }, []);
49
90
  return /*#__PURE__*/_jsxs("div", {
50
91
  className: "list-with-size-animate-layout",
51
92
  ref: ref,
52
93
  children: [/*#__PURE__*/_jsx("div", {
53
94
  className: "list-animate-header",
54
95
  style: {
55
- height: headerHeight
96
+ height: headerHeight,
97
+ overflow: !state.open ? 'hidden' : undefined
56
98
  },
57
99
  children: /*#__PURE__*/_jsx("div", {
58
100
  className: "list-animate-header-content",
@@ -63,9 +105,8 @@ function ListWithSizeAnimate(_ref) {
63
105
  style: {
64
106
  height: contentHeight
65
107
  },
66
- children: children
108
+ children: /*#__PURE__*/_jsx(DynamicGridList, _objectSpread({}, props))
67
109
  })]
68
110
  });
69
- }
70
-
111
+ });
71
112
  export default ListWithSizeAnimate;
@@ -9,5 +9,6 @@
9
9
  .list-animate-content {
10
10
  background-color: blue;
11
11
  overflow: hidden;
12
+ transition: height 0.3s;
12
13
  }
13
14
  }
@@ -80,7 +80,7 @@ function LivePlayer(_ref) {
80
80
  var _playerRef$current, _playerRef$current$ci;
81
81
 
82
82
  var item = list ? list[state.selectIndex] : {};
83
- var cid = item.cid;
83
+ var cid = item === null || item === void 0 ? void 0 : item.cid;
84
84
  return cid ? (_playerRef$current = playerRef.current) === null || _playerRef$current === void 0 ? void 0 : (_playerRef$current$ci = _playerRef$current[cid]) === null || _playerRef$current$ci === void 0 ? void 0 : _playerRef$current$ci.current : undefined;
85
85
  }; // 更新状态
86
86
 
@@ -2,8 +2,8 @@ import "antd/lib/select/style";
2
2
  import _Select from "antd/lib/select";
3
3
  import React, { useMemo } from 'react';
4
4
  import CustomRenderSelect from "../CustomRenderSelect";
5
- import { ScreenType } from "./utils";
6
5
  import IconFont from "../Player/iconfont";
6
+ import { ScreenType } from "./utils";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
9
9
 
File without changes
@@ -11,17 +11,18 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
13
  import React, { useRef } from 'react';
14
- import useVirtualList from "../../useVirtualList";
14
+ import useVirtualList from "../useVirtualList";
15
15
  import "./index.less";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
 
18
18
  function VList(_ref) {
19
19
  var className = _ref.className,
20
20
  rowHeight = _ref.rowHeight,
21
- data = _ref.data,
21
+ _ref$data = _ref.data,
22
+ data = _ref$data === void 0 ? [] : _ref$data,
22
23
  renderItem = _ref.renderItem;
23
- var containerRef = useRef();
24
- var wrapperRef = useRef();
24
+ var containerRef = useRef(null);
25
+ var wrapperRef = useRef(null);
25
26
 
26
27
  var _useVirtualList = useVirtualList(data, {
27
28
  containerTarget: containerRef,
File without changes
File without changes
File without changes
package/es/index.d.ts CHANGED
@@ -11,9 +11,12 @@ export { default as DisableMark } from './DisableMark';
11
11
  export { default as DomMove } from './DomMove';
12
12
  export { default as Drag } from './Drag';
13
13
  export { default as Drawer } from './Drawer';
14
+ export { default as DynamicGridList } from './DynamicGridList';
15
+ export { default as DynamicList } from './DynamicList';
14
16
  export { default as ErrorFallback } from './ErrorFallback';
15
17
  export { default as FrontendPlayer } from './FrontendPlayer';
16
18
  export { default as FullScreen } from './FullScreen';
19
+ export { default as GridList } from './GridList';
17
20
  export { default as HightLevel } from './HightLevel';
18
21
  export { default as IconFont } from './IconFont';
19
22
  export { default as ImageView } from './ImageView';
@@ -38,6 +41,7 @@ export { default as TableLayout } from './TableLayout';
38
41
  export { default as ThemeAntd } from './ThemeAntd';
39
42
  export { default as Timeout } from './Timeout';
40
43
  export { default as Tree } from './Tree';
44
+ export { default as VList } from './VList';
41
45
  export { default as useDrawROI } from './useDrawROI';
42
46
  export { default as useEventEmitterHandle } from './useEventEmitterHandle';
43
47
  export { default as useFullscreen } from './useFullscreen';
package/es/index.js CHANGED
@@ -11,9 +11,12 @@ export { default as DisableMark } from "./DisableMark";
11
11
  export { default as DomMove } from "./DomMove";
12
12
  export { default as Drag } from "./Drag";
13
13
  export { default as Drawer } from "./Drawer";
14
+ export { default as DynamicGridList } from "./DynamicGridList";
15
+ export { default as DynamicList } from "./DynamicList";
14
16
  export { default as ErrorFallback } from "./ErrorFallback";
15
17
  export { default as FrontendPlayer } from "./FrontendPlayer";
16
18
  export { default as FullScreen } from "./FullScreen";
19
+ export { default as GridList } from "./GridList";
17
20
  export { default as HightLevel } from "./HightLevel";
18
21
  export { default as IconFont } from "./IconFont";
19
22
  export { default as ImageView } from "./ImageView";
@@ -38,6 +41,7 @@ export { default as TableLayout } from "./TableLayout";
38
41
  export { default as ThemeAntd } from "./ThemeAntd";
39
42
  export { default as Timeout } from "./Timeout";
40
43
  export { default as Tree } from "./Tree";
44
+ export { default as VList } from "./VList";
41
45
  export { default as useDrawROI } from "./useDrawROI";
42
46
  export { default as useEventEmitterHandle } from "./useEventEmitterHandle";
43
47
  export { default as useFullscreen } from "./useFullscreen";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "@cloud-app-dev/vidc",
4
4
  "description": "Video Image Data Componennts",
5
- "version": "3.2.14",
5
+ "version": "3.2.15",
6
6
  "scripts": {
7
7
  "docs:deploy": "gh-pages -d docs-dist",
8
8
  "build": "npm run entry && father build",