Skip to content

Commit 06d3fcc

Browse files
feat (lib to dist)
1 parent 5919d87 commit 06d3fcc

File tree

6 files changed

+468
-2
lines changed

6 files changed

+468
-2
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ lib
33
node_modules
44
*.log
55
.idea/
6-
/.nyc_output/
7-
/coverage/
6+
.nyc_output/
7+
coverage/

dist/components/ExcelFile.js

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _createClass = function () {
8+
function defineProperties(target, props) {
9+
for (var i = 0; i < props.length; i++) {
10+
var descriptor = props[i];
11+
descriptor.enumerable = descriptor.enumerable || false;
12+
descriptor.configurable = true;
13+
if ("value" in descriptor) descriptor.writable = true;
14+
Object.defineProperty(target, descriptor.key, descriptor);
15+
}
16+
}
17+
18+
return function (Constructor, protoProps, staticProps) {
19+
if (protoProps) defineProperties(Constructor.prototype, protoProps);
20+
if (staticProps) defineProperties(Constructor, staticProps);
21+
return Constructor;
22+
};
23+
}();
24+
25+
var _react = require("react");
26+
27+
var _react2 = _interopRequireDefault(_react);
28+
29+
var _propTypes = require("prop-types");
30+
31+
var _propTypes2 = _interopRequireDefault(_propTypes);
32+
33+
var _fileSaver = require("file-saver");
34+
35+
var _xlsx = require("xlsx");
36+
37+
var _xlsx2 = _interopRequireDefault(_xlsx);
38+
39+
var _ExcelSheet = require("../elements/ExcelSheet");
40+
41+
var _ExcelSheet2 = _interopRequireDefault(_ExcelSheet);
42+
43+
var _DataUtil = require("../utils/DataUtil");
44+
45+
function _interopRequireDefault(obj) {
46+
return obj && obj.__esModule ? obj : {default: obj};
47+
}
48+
49+
function _classCallCheck(instance, Constructor) {
50+
if (!(instance instanceof Constructor)) {
51+
throw new TypeError("Cannot call a class as a function");
52+
}
53+
}
54+
55+
function _possibleConstructorReturn(self, call) {
56+
if (!self) {
57+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
58+
}
59+
return call && (typeof call === "object" || typeof call === "function") ? call : self;
60+
}
61+
62+
function _inherits(subClass, superClass) {
63+
if (typeof superClass !== "function" && superClass !== null) {
64+
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
65+
}
66+
subClass.prototype = Object.create(superClass && superClass.prototype, {
67+
constructor: {
68+
value: subClass,
69+
enumerable: false,
70+
writable: true,
71+
configurable: true
72+
}
73+
});
74+
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
75+
}
76+
77+
var ExcelFile = function (_React$Component) {
78+
_inherits(ExcelFile, _React$Component);
79+
80+
function ExcelFile(props) {
81+
_classCallCheck(this, ExcelFile);
82+
83+
var _this = _possibleConstructorReturn(this, (ExcelFile.__proto__ || Object.getPrototypeOf(ExcelFile)).call(this, props));
84+
85+
_this.handleDownload = _this.download.bind(_this);
86+
_this.createSheetData = _this.createSheetData.bind(_this);
87+
return _this;
88+
}
89+
90+
_createClass(ExcelFile, [{
91+
key: "createSheetData",
92+
value: function createSheetData(sheet) {
93+
var columns = sheet.props.children;
94+
var sheetData = [_react2.default.Children.map(columns, function (column) {
95+
return column.props.label;
96+
})];
97+
var data = typeof sheet.props.data === 'function' ? sheet.props.data() : sheet.props.data;
98+
99+
data.forEach(function (row) {
100+
var sheetRow = [];
101+
102+
_react2.default.Children.forEach(columns, function (column) {
103+
var getValue = typeof column.props.value === 'function' ? column.props.value : function (row) {
104+
return row[column.props.value];
105+
};
106+
sheetRow.push(getValue(row) || '');
107+
});
108+
109+
sheetData.push(sheetRow);
110+
});
111+
112+
return sheetData;
113+
}
114+
}, {
115+
key: "download",
116+
value: function download() {
117+
var _this2 = this;
118+
119+
var wb = {
120+
SheetNames: _react2.default.Children.map(this.props.children, function (sheet) {
121+
return sheet.props.name;
122+
}),
123+
Sheets: {}
124+
};
125+
126+
_react2.default.Children.forEach(this.props.children, function (sheet) {
127+
wb.Sheets[sheet.props.name] = (0, _DataUtil.excelSheetFromAoA)(_this2.createSheetData(sheet));
128+
});
129+
130+
var wbout = _xlsx2.default.write(wb, {bookType: 'xlsx', bookSST: true, type: 'binary'});
131+
(0, _fileSaver.saveAs)(new Blob([(0, _DataUtil.strToArrBuffer)(wbout)], {type: "application/octet-stream"}), this.props.filename);
132+
}
133+
}, {
134+
key: "render",
135+
value: function render() {
136+
return _react2.default.createElement(
137+
"span",
138+
{onClick: this.handleDownload},
139+
this.props.element
140+
);
141+
}
142+
}]);
143+
144+
return ExcelFile;
145+
}(_react2.default.Component);
146+
147+
ExcelFile.props = {
148+
filename: _propTypes2.default.string,
149+
element: _propTypes2.default.any,
150+
children: function children(props, propName, componentName) {
151+
_react2.default.Children.forEach(props[propName], function (child) {
152+
if (child.type !== _ExcelSheet2.default) {
153+
throw new Error('<ExcelFile> can only have <ExcelSheet> as children. ');
154+
}
155+
});
156+
}
157+
};
158+
ExcelFile.defaultProps = {
159+
filename: "Download.xlsx",
160+
element: _react2.default.createElement(
161+
"button",
162+
null,
163+
"Download"
164+
)
165+
};
166+
exports.default = ExcelFile;

dist/elements/ExcelColumn.js

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _createClass = function () {
8+
function defineProperties(target, props) {
9+
for (var i = 0; i < props.length; i++) {
10+
var descriptor = props[i];
11+
descriptor.enumerable = descriptor.enumerable || false;
12+
descriptor.configurable = true;
13+
if ("value" in descriptor) descriptor.writable = true;
14+
Object.defineProperty(target, descriptor.key, descriptor);
15+
}
16+
}
17+
18+
return function (Constructor, protoProps, staticProps) {
19+
if (protoProps) defineProperties(Constructor.prototype, protoProps);
20+
if (staticProps) defineProperties(Constructor, staticProps);
21+
return Constructor;
22+
};
23+
}();
24+
25+
var _react = require("react");
26+
27+
var _react2 = _interopRequireDefault(_react);
28+
29+
var _propTypes = require("prop-types");
30+
31+
var _propTypes2 = _interopRequireDefault(_propTypes);
32+
33+
function _interopRequireDefault(obj) {
34+
return obj && obj.__esModule ? obj : {default: obj};
35+
}
36+
37+
function _classCallCheck(instance, Constructor) {
38+
if (!(instance instanceof Constructor)) {
39+
throw new TypeError("Cannot call a class as a function");
40+
}
41+
}
42+
43+
function _possibleConstructorReturn(self, call) {
44+
if (!self) {
45+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
46+
}
47+
return call && (typeof call === "object" || typeof call === "function") ? call : self;
48+
}
49+
50+
function _inherits(subClass, superClass) {
51+
if (typeof superClass !== "function" && superClass !== null) {
52+
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
53+
}
54+
subClass.prototype = Object.create(superClass && superClass.prototype, {
55+
constructor: {
56+
value: subClass,
57+
enumerable: false,
58+
writable: true,
59+
configurable: true
60+
}
61+
});
62+
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
63+
}
64+
65+
var ExcelColumn = function (_React$Component) {
66+
_inherits(ExcelColumn, _React$Component);
67+
68+
function ExcelColumn() {
69+
_classCallCheck(this, ExcelColumn);
70+
71+
return _possibleConstructorReturn(this, (ExcelColumn.__proto__ || Object.getPrototypeOf(ExcelColumn)).apply(this, arguments));
72+
}
73+
74+
_createClass(ExcelColumn, [{
75+
key: "render",
76+
value: function render() {
77+
return null;
78+
}
79+
}]);
80+
81+
return ExcelColumn;
82+
}(_react2.default.Component);
83+
84+
ExcelColumn.propsTypes = {
85+
label: _propTypes2.default.string.isRequired,
86+
value: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool, _propTypes2.default.string, _propTypes2.default.func]).isRequired
87+
};
88+
exports.default = ExcelColumn;

dist/elements/ExcelSheet.js

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _createClass = function () {
8+
function defineProperties(target, props) {
9+
for (var i = 0; i < props.length; i++) {
10+
var descriptor = props[i];
11+
descriptor.enumerable = descriptor.enumerable || false;
12+
descriptor.configurable = true;
13+
if ("value" in descriptor) descriptor.writable = true;
14+
Object.defineProperty(target, descriptor.key, descriptor);
15+
}
16+
}
17+
18+
return function (Constructor, protoProps, staticProps) {
19+
if (protoProps) defineProperties(Constructor.prototype, protoProps);
20+
if (staticProps) defineProperties(Constructor, staticProps);
21+
return Constructor;
22+
};
23+
}();
24+
25+
var _react = require("react");
26+
27+
var _react2 = _interopRequireDefault(_react);
28+
29+
var _propTypes = require("prop-types");
30+
31+
var _propTypes2 = _interopRequireDefault(_propTypes);
32+
33+
var _ExcelColumn = require("./ExcelColumn");
34+
35+
var _ExcelColumn2 = _interopRequireDefault(_ExcelColumn);
36+
37+
function _interopRequireDefault(obj) {
38+
return obj && obj.__esModule ? obj : {default: obj};
39+
}
40+
41+
function _classCallCheck(instance, Constructor) {
42+
if (!(instance instanceof Constructor)) {
43+
throw new TypeError("Cannot call a class as a function");
44+
}
45+
}
46+
47+
function _possibleConstructorReturn(self, call) {
48+
if (!self) {
49+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
50+
}
51+
return call && (typeof call === "object" || typeof call === "function") ? call : self;
52+
}
53+
54+
function _inherits(subClass, superClass) {
55+
if (typeof superClass !== "function" && superClass !== null) {
56+
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
57+
}
58+
subClass.prototype = Object.create(superClass && superClass.prototype, {
59+
constructor: {
60+
value: subClass,
61+
enumerable: false,
62+
writable: true,
63+
configurable: true
64+
}
65+
});
66+
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
67+
}
68+
69+
var ExcelSheet = function (_React$Component) {
70+
_inherits(ExcelSheet, _React$Component);
71+
72+
function ExcelSheet() {
73+
_classCallCheck(this, ExcelSheet);
74+
75+
return _possibleConstructorReturn(this, (ExcelSheet.__proto__ || Object.getPrototypeOf(ExcelSheet)).apply(this, arguments));
76+
}
77+
78+
_createClass(ExcelSheet, [{
79+
key: "render",
80+
value: function render() {
81+
return null;
82+
}
83+
}]);
84+
85+
return ExcelSheet;
86+
}(_react2.default.Component);
87+
88+
ExcelSheet.propsTypes = {
89+
name: _propTypes2.default.string.isRequired,
90+
value: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.func]).isRequired,
91+
children: _propTypes2.default.arrayOf(function (propValue, key) {
92+
var type = propValue[key];
93+
94+
if (type !== _ExcelColumn2.default) {
95+
throw new Error("<ExcelSheet> can only have <ExcelColumn> as children");
96+
}
97+
}).isRequired
98+
};
99+
exports.default = ExcelSheet;

dist/index.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use strict";
2+
3+
var _ExcelFile = require("./components/ExcelFile");
4+
5+
var _ExcelFile2 = _interopRequireDefault(_ExcelFile);
6+
7+
var _ExcelSheet = require("./elements/ExcelSheet");
8+
9+
var _ExcelSheet2 = _interopRequireDefault(_ExcelSheet);
10+
11+
var _ExcelColumn = require("./elements/ExcelColumn");
12+
13+
var _ExcelColumn2 = _interopRequireDefault(_ExcelColumn);
14+
15+
function _interopRequireDefault(obj) {
16+
return obj && obj.__esModule ? obj : {default: obj};
17+
}
18+
19+
module.exports = {
20+
ExcelFile: _ExcelFile2.default,
21+
ExcelSheet: _ExcelSheet2.default,
22+
ExcelColumn: _ExcelColumn2.default
23+
};

0 commit comments

Comments
 (0)