linkmore-design 1.0.76 → 1.0.79

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 (49) hide show
  1. package/dist/LmFilter/LmFilter.d.ts +1 -0
  2. package/dist/LmFilter/demos/custom.d.ts +2 -0
  3. package/dist/LmFilter/filterFns/index.d.ts +10 -1
  4. package/dist/LmTable/components/inputDataEdit.d.ts +8 -0
  5. package/dist/LmTable/components/sheelTableCell.d.ts +11 -0
  6. package/dist/LmTable/components/tableChartsModal.d.ts +22 -0
  7. package/dist/LmTable/demos/excel.d.ts +2 -0
  8. package/dist/index.umd.js +75126 -3372
  9. package/dist/index.umd.min.js +6 -6
  10. package/es/CardTable/table/TableContainer.js +1 -2
  11. package/es/CkFilter/README.md.old +137 -0
  12. package/es/LmFilter/LmFilter.js +13 -3
  13. package/es/LmFilter/baseFilter/fuzzySearch.js +23 -13
  14. package/es/LmFilter/clearFilter/index.js +1 -3
  15. package/es/LmFilter/complexFilter/valueDrawer.js +1 -1
  16. package/es/LmFilter/customFilter/index.js +19 -7
  17. package/es/LmFilter/filterFns/index.js +266 -92
  18. package/es/LmFilter/wrapper/Filter.js +1 -1
  19. package/es/LmFilter/wrapper/FilterRoot.js +24 -2
  20. package/es/LmTable/Table.js +492 -43
  21. package/es/LmTable/components/inputDataEdit.d.ts +8 -0
  22. package/es/LmTable/components/inputDataEdit.js +39 -0
  23. package/es/LmTable/components/sheelTableCell.d.ts +11 -0
  24. package/es/LmTable/components/sheelTableCell.js +151 -0
  25. package/es/LmTable/components/tableChartsModal.d.ts +22 -0
  26. package/es/LmTable/components/tableChartsModal.js +115 -0
  27. package/es/LmTable/style/index.css +53 -0
  28. package/es/Modal/index.js +2 -0
  29. package/lib/CardTable/table/TableContainer.js +1 -2
  30. package/lib/CkFilter/README.md.old +137 -0
  31. package/lib/LmFilter/LmFilter.js +13 -3
  32. package/lib/LmFilter/baseFilter/fuzzySearch.js +23 -13
  33. package/lib/LmFilter/clearFilter/index.js +1 -3
  34. package/lib/LmFilter/complexFilter/valueDrawer.js +1 -1
  35. package/lib/LmFilter/customFilter/index.js +19 -7
  36. package/lib/LmFilter/filterFns/index.js +266 -92
  37. package/lib/LmFilter/wrapper/Filter.js +1 -1
  38. package/lib/LmFilter/wrapper/FilterRoot.js +24 -2
  39. package/lib/LmTable/Table.js +492 -43
  40. package/lib/LmTable/components/inputDataEdit.d.ts +8 -0
  41. package/lib/LmTable/components/inputDataEdit.js +50 -0
  42. package/lib/LmTable/components/sheelTableCell.d.ts +11 -0
  43. package/lib/LmTable/components/sheelTableCell.js +167 -0
  44. package/lib/LmTable/components/tableChartsModal.d.ts +22 -0
  45. package/lib/LmTable/components/tableChartsModal.js +128 -0
  46. package/lib/LmTable/style/index.css +53 -0
  47. package/lib/Modal/index.js +2 -0
  48. package/package.json +5 -4
  49. package/typings/index.d.ts +0 -19
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _linkmoreDesign = require("linkmore-design");
13
+
14
+ var InputDataEdit = function InputDataEdit(props) {
15
+ var value = props.value,
16
+ onChange = props.onChange,
17
+ onKeyDown = props.onKeyDown,
18
+ handleSave = props.handleSave;
19
+ var inputRef = (0, _react.useRef)(null);
20
+ (0, _react.useEffect)(function () {
21
+ setTimeout(function () {
22
+ var _a;
23
+
24
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
25
+ }, 150);
26
+ return function () {
27
+ console.log('unmounds');
28
+ handleSave === null || handleSave === void 0 ? void 0 : handleSave(inputRef.current);
29
+ };
30
+ }, []);
31
+
32
+ var handleChange = function handleChange(e) {
33
+ onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
34
+ };
35
+
36
+ return /*#__PURE__*/_react.default.createElement(_linkmoreDesign.Input, {
37
+ ref: inputRef,
38
+ className: "data-editor",
39
+ value: value,
40
+ size: 'small',
41
+ bordered: false,
42
+ onChange: handleChange,
43
+ onKeyDown: onKeyDown,
44
+ onPressEnter: handleSave,
45
+ onBlur: handleSave
46
+ });
47
+ };
48
+
49
+ var _default = InputDataEdit;
50
+ exports.default = _default;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface IProps {
3
+ record: Record<string, any>;
4
+ rowKey: string;
5
+ col: any;
6
+ rowIndex: number;
7
+ colIndex: number;
8
+ [key: string]: any;
9
+ }
10
+ declare const SheelTabelCell: React.FC<IProps>;
11
+ export default SheelTabelCell;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _ahooks = require("ahooks");
21
+
22
+ var _inputDataEdit = _interopRequireDefault(require("./inputDataEdit"));
23
+
24
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
25
+ var t = {};
26
+
27
+ for (var p in s) {
28
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
29
+ }
30
+
31
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
32
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+
37
+ var SheelTabelCell = function SheelTabelCell(props) {
38
+ var record = props.record,
39
+ col = props.col,
40
+ rowKey = props.rowKey,
41
+ children = props.children,
42
+ rowIndex = props.rowIndex,
43
+ colIndex = props.colIndex,
44
+ onMouseDown = props.onMouseDown,
45
+ onMouseOver = props.onMouseOver,
46
+ isSelected = props.isSelected,
47
+ selectIng = props.selectIng,
48
+ onContextMenu = props.onContextMenu,
49
+ onDoubleClick = props.onDoubleClick,
50
+ dataSourceChange = props.dataSourceChange,
51
+ restProps = __rest(props, ["record", "col", "rowKey", "children", "rowIndex", "colIndex", "onMouseDown", "onMouseOver", "isSelected", "selectIng", "onContextMenu", "onDoubleClick", "dataSourceChange"]);
52
+
53
+ var onMouseEnter = restProps.onMouseEnter,
54
+ onMouseLeave = restProps.onMouseLeave,
55
+ clearProps = __rest(restProps, ["onMouseEnter", "onMouseLeave"]);
56
+
57
+ var _ref = (isSelected === null || isSelected === void 0 ? void 0 : isSelected(rowIndex, colIndex)) || {},
58
+ _ref$isSelected = _ref.isSelected,
59
+ sd = _ref$isSelected === void 0 ? false : _ref$isSelected,
60
+ _ref$isEnd = _ref.isEnd,
61
+ isEnd = _ref$isEnd === void 0 ? false : _ref$isEnd,
62
+ _ref$isRightEnd = _ref.isRightEnd,
63
+ isRightEnd = _ref$isRightEnd === void 0 ? false : _ref$isRightEnd,
64
+ _ref$isEditing = _ref.isEditing,
65
+ isEditing = _ref$isEditing === void 0 ? false : _ref$isEditing;
66
+
67
+ var _useState = (0, _react.useState)((record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]) || ''),
68
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
69
+ value = _useState2[0],
70
+ setValue = _useState2[1];
71
+
72
+ var valueRef = (0, _react.useRef)((record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]) || '');
73
+ (0, _ahooks.useUpdateEffect)(function () {
74
+ console.log(value, '----changeValue');
75
+ valueRef.current = value;
76
+ }, [value]);
77
+ (0, _ahooks.useUpdateEffect)(function () {
78
+ if (value !== (record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex])) {
79
+ setValue(record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]);
80
+ }
81
+ }, [record]);
82
+ /** 鼠标点击 */
83
+
84
+ var handleMouseDown = function handleMouseDown(e) {
85
+ if (e.button === 2) {
86
+ console.log('点击了右键');
87
+ } else if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
88
+ onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(rowIndex, colIndex, e);
89
+ }
90
+ };
91
+ /** 鼠标右键 */
92
+
93
+
94
+ var handleContextMenu = function handleContextMenu(e) {
95
+ if (!col.disableEvents) {
96
+ onContextMenu(e, rowIndex, colIndex);
97
+ }
98
+ };
99
+ /** 鼠标松开 */
100
+
101
+
102
+ var handleMouseOver = function handleMouseOver(e) {
103
+ if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
104
+ onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(rowIndex, colIndex);
105
+ }
106
+ };
107
+ /** 双击 */
108
+
109
+
110
+ var handleDoubleClick = function handleDoubleClick(e) {
111
+ if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
112
+ onDoubleClick(rowIndex, colIndex, col);
113
+ }
114
+ };
115
+
116
+ var renderComponent = function renderComponent() {
117
+ var _ref2 = col || {},
118
+ component = _ref2.component,
119
+ readOnly = _ref2.readOnly;
120
+
121
+ if (isEditing && !readOnly) {
122
+ return component || null;
123
+ }
124
+
125
+ return null;
126
+ };
127
+
128
+ var saveRenderValue = function saveRenderValue() {
129
+ if (valueRef.current !== (record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex])) {
130
+ dataSourceChange === null || dataSourceChange === void 0 ? void 0 : dataSourceChange(rowIndex, colIndex, Object.assign(Object.assign({}, record), (0, _defineProperty2.default)({}, col.dataIndex, valueRef.current)));
131
+ }
132
+ };
133
+
134
+ var renderEditor = function renderEditor() {
135
+ if (isEditing) {
136
+ var Editor = (col === null || col === void 0 ? void 0 : col.dataEditor) || _inputDataEdit.default;
137
+ return /*#__PURE__*/_react.default.createElement(Editor, {
138
+ cell: col,
139
+ row: rowIndex,
140
+ col: colIndex,
141
+ value: value,
142
+ onChange: setValue,
143
+ handleSave: saveRenderValue
144
+ });
145
+ }
146
+
147
+ return null;
148
+ };
149
+
150
+ var renderViewer = children;
151
+ var content = renderComponent() || renderEditor() || renderViewer;
152
+ return /*#__PURE__*/_react.default.createElement("td", Object.assign({}, clearProps, {
153
+ style: {
154
+ userSelect: 'none'
155
+ },
156
+ className: (0, _classnames.default)(sd && selectIng && 'selected', isEnd && 'end', isRightEnd && 'right_end', isEditing && 'editing'),
157
+ onMouseDown: handleMouseDown,
158
+ onMouseOver: handleMouseOver,
159
+ onContextMenu: handleContextMenu,
160
+ onDoubleClick: handleDoubleClick,
161
+ // onKeyUp={onKeyUp}
162
+ key: "".concat(rowIndex, "_").concat(colIndex)
163
+ }), content);
164
+ };
165
+
166
+ var _default = SheelTabelCell;
167
+ exports.default = _default;
@@ -0,0 +1,22 @@
1
+ import type { ILMModalProps } from 'linkmore-design';
2
+ import type { TableColumnProps } from 'antd';
3
+ interface IProps extends ILMModalProps {
4
+ data?: Record<string, unknown>[];
5
+ type: 'line' | 'pie' | 'column' | null;
6
+ columns?: (TableColumnProps<any> & {
7
+ etype: string;
8
+ })[];
9
+ selectInfo?: {
10
+ start: {
11
+ i: number;
12
+ j: number;
13
+ };
14
+ end: {
15
+ i: number;
16
+ j: number;
17
+ };
18
+ };
19
+ }
20
+ /** i 是行 j 是列 */
21
+ declare const TableChartsModal: (props: IProps) => JSX.Element;
22
+ export default TableChartsModal;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _lodash = require("lodash");
13
+
14
+ var _linkmoreDesign = require("linkmore-design");
15
+
16
+ var _plots = require("@ant-design/plots");
17
+
18
+ /** i 是行 j 是列 */
19
+ var TableChartsModal = function TableChartsModal(props) {
20
+ var type = props.type,
21
+ onCancel = props.onCancel,
22
+ data = props.data,
23
+ columns = props.columns,
24
+ selectInfo = props.selectInfo;
25
+ var resultData = (0, _react.useMemo)(function () {
26
+ var start = selectInfo.start,
27
+ end = selectInfo.end;
28
+ var rCol = columns === null || columns === void 0 ? void 0 : columns.filter(function (item, index) {
29
+ var maxJ = Math.max(start.j, end.j);
30
+ var minJ = Math.min(start.j, end.j);
31
+
32
+ if (index >= minJ && index <= maxJ) {
33
+ return true;
34
+ }
35
+
36
+ return false;
37
+ }).map(function (item) {
38
+ return item.dataIndex;
39
+ });
40
+ var maxi = Math.max(start.i, end.i);
41
+ var mini = Math.min(start.i, end.i);
42
+ var rDataSource = data === null || data === void 0 ? void 0 : data.filter(function (item, index) {
43
+ if (index >= mini && index <= maxi) {
44
+ return true;
45
+ }
46
+
47
+ return false;
48
+ }).map(function (item) {
49
+ return (0, _lodash.pick)(item, rCol);
50
+ });
51
+ return {
52
+ rDataSource: rDataSource,
53
+ rCol: rCol
54
+ };
55
+ }, [data, columns, selectInfo]);
56
+ var getTypeCol = (0, _react.useMemo)(function () {
57
+ return columns.filter(function (item) {
58
+ return item.etype === 'number';
59
+ }).map(function (item) {
60
+ return item.dataIndex;
61
+ });
62
+ }, [columns]);
63
+ var Field = (0, _react.useMemo)(function () {
64
+ var rCol = resultData.rCol;
65
+ var xField = rCol.find(function (item) {
66
+ return !getTypeCol.includes(item);
67
+ });
68
+ var yField = getTypeCol === null || getTypeCol === void 0 ? void 0 : getTypeCol[0];
69
+ return {
70
+ xField: xField,
71
+ yField: yField
72
+ };
73
+ }, [resultData, getTypeCol]);
74
+ var config = (0, _react.useMemo)(function () {
75
+ if (type === 'pie') {
76
+ return {
77
+ appendPadding: 10,
78
+ data: resultData.rDataSource,
79
+ angleField: Field.yField,
80
+ colorField: Field.xField,
81
+ radius: 0.9,
82
+ label: {
83
+ type: 'inner',
84
+ offset: '-30%',
85
+ content: function content(_ref) {
86
+ var percent = _ref.percent;
87
+ return "".concat((percent * 100).toFixed(0), "%");
88
+ },
89
+ style: {
90
+ fontSize: 14,
91
+ textAlign: 'center'
92
+ }
93
+ },
94
+ interactions: [{
95
+ type: 'element-active'
96
+ }]
97
+ };
98
+ }
99
+
100
+ return {
101
+ data: resultData.rDataSource,
102
+ xField: Field.xField,
103
+ yField: Field.yField,
104
+ label: {
105
+ position: 'middle',
106
+ style: {
107
+ fill: '#FFFFFF',
108
+ opacity: 0.6
109
+ }
110
+ },
111
+ xAxis: {
112
+ label: {
113
+ autoHide: true,
114
+ autoRotate: false
115
+ }
116
+ }
117
+ };
118
+ }, [Field, resultData, type]);
119
+ return /*#__PURE__*/_react.default.createElement(_linkmoreDesign.Modal, {
120
+ visible: !!type,
121
+ title: "\u667A\u80FD\u62A5\u8868",
122
+ onOk: onCancel,
123
+ onCancel: onCancel
124
+ }, type === 'column' && /*#__PURE__*/_react.default.createElement(_plots.Column, Object.assign({}, config)), type === 'line' && /*#__PURE__*/_react.default.createElement(_plots.Line, Object.assign({}, config)), type === 'pie' && /*#__PURE__*/_react.default.createElement(_plots.Pie, Object.assign({}, config)));
125
+ };
126
+
127
+ var _default = TableChartsModal;
128
+ exports.default = _default;
@@ -836,6 +836,42 @@ p {
836
836
  #lm_protable_warp .lm_protable .ant-table {
837
837
  font-size: 12px;
838
838
  }
839
+ #lm_protable_warp .lm_protable .ant-table td.selected,
840
+ #lm_protable_warp .lm_protable .ant-table td.editing {
841
+ border: 1px solid var(--primary-color);
842
+ border-bottom: 0px;
843
+ transition: none;
844
+ box-shadow: inset 0 -100px 0 rgb(33 133 13.86666667%);
845
+ border-right: 0;
846
+ }
847
+ #lm_protable_warp .lm_protable .ant-table td.selected.end,
848
+ #lm_protable_warp .lm_protable .ant-table td.editing.end {
849
+ border-bottom: 1px solid var(--primary-color);
850
+ }
851
+ #lm_protable_warp .lm_protable .ant-table td.selected.right_end,
852
+ #lm_protable_warp .lm_protable .ant-table td.editing.right_end {
853
+ border-right: 1px solid var(--primary-color);
854
+ }
855
+ #lm_protable_warp .lm_protable .ant-table td.selected .data-editor,
856
+ #lm_protable_warp .lm_protable .ant-table td.editing .data-editor {
857
+ border: 0;
858
+ background: none;
859
+ }
860
+ #lm_protable_warp .lm_protable .ant-table td.selected input,
861
+ #lm_protable_warp .lm_protable .ant-table td.editing input {
862
+ background: none;
863
+ outline: none !important;
864
+ border: 0;
865
+ }
866
+ #lm_protable_warp .lm_protable .ant-table td.selected input:hover,
867
+ #lm_protable_warp .lm_protable .ant-table td.editing input:hover {
868
+ background: none;
869
+ border: 0;
870
+ }
871
+ #lm_protable_warp .lm_protable .ant-table tr:last-child td.selected.end,
872
+ #lm_protable_warp .lm_protable .ant-table tr:last-child td.editing.end {
873
+ border-bottom: 2px solid var(--primary-color);
874
+ }
839
875
  #lm_protable_warp .lm_protable .ant-card-body,
840
876
  #lm_protable_warp .lm_protable .ant-pro-card-body {
841
877
  padding: 0;
@@ -1476,3 +1512,20 @@ p {
1476
1512
  height: 100%;
1477
1513
  cursor: col-resize;
1478
1514
  }
1515
+ .WeChatContactsAvatarTools {
1516
+ background-color: #fff;
1517
+ border: 1px solid #ddd;
1518
+ }
1519
+ .WeChatContactsAvatarTools .rightClickItems {
1520
+ height: 30px;
1521
+ border-bottom: 1px solid #ddd;
1522
+ padding: 0 8px;
1523
+ display: flex;
1524
+ align-items: center;
1525
+ justify-content: flex-start;
1526
+ font-size: 12px;
1527
+ cursor: pointer;
1528
+ }
1529
+ .WeChatContactsAvatarTools .rightClickItems:last-child {
1530
+ border-bottom: 0px;
1531
+ }
@@ -49,10 +49,12 @@ var CLMModal = function CLMModal(props) {
49
49
  width: size === 'default' ? 552 : 416,
50
50
  footer: [/*#__PURE__*/_react.default.createElement(_Button.default, {
51
51
  onClick: onCancel,
52
+ key: 'canncel_button',
52
53
  size: 'middle'
53
54
  }, cancelText), /*#__PURE__*/_react.default.createElement(_Button.default, {
54
55
  type: "primary",
55
56
  onClick: onOk,
57
+ key: 'ok_button',
56
58
  size: 'middle'
57
59
  }, okText)]
58
60
  }, other, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkmore-design",
3
- "version": "1.0.76",
3
+ "version": "1.0.79",
4
4
  "author": {
5
5
  "name": "nowthen",
6
6
  "email": "rnlvwyx@gmail.com"
@@ -11,10 +11,9 @@
11
11
  "files": [
12
12
  "es",
13
13
  "lib",
14
- "dist",
15
- "typings"
14
+ "dist"
16
15
  ],
17
- "typings": "typings/index.d.ts",
16
+ "typings": "es/index.d.ts",
18
17
  "description": "🌈 🚀lm组件库。🚀",
19
18
  "keywords": [
20
19
  "react-web-pro",
@@ -48,9 +47,11 @@
48
47
  ]
49
48
  },
50
49
  "dependencies": {
50
+ "@ant-design/charts": "^1.4.2",
51
51
  "@ant-design/compatible": "^1.0.8",
52
52
  "@ant-design/icons": "^4.3.0",
53
53
  "@ant-design/pro-table": "^2.77.0",
54
+ "@antv/g2": "^4.2.7",
54
55
  "@babel/runtime": "^7.17.9",
55
56
  "@dnd-kit/core": "^5.0.3",
56
57
  "@dnd-kit/modifiers": "^5.0.0",
@@ -1,19 +0,0 @@
1
- declare module "slash2";
2
- declare module "*.css";
3
- declare module "*.less";
4
- declare module "*.scss";
5
- declare module "*.sass";
6
- declare module "*.svg";
7
- declare module "*.png";
8
- declare module "*.jpg";
9
- declare module "*.jpeg";
10
- declare module "*.gif";
11
- declare module "*.bmp";
12
- declare module "*.tiff";
13
- declare module "omit.js";
14
- declare module "react-copy-to-clipboard";
15
- declare module "react-fittext";
16
- declare module "@antv/data-set";
17
- declare module "nzh/cn";
18
- declare module "*.md";
19
- // declare module "linkmore-design";