csvbox-react-test 1.1.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/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # @csvbox/react
2
+
3
+ > React adapter for csvbox.io
4
+
5
+ [![NPM](https://img.shields.io/npm/v/@csvbox/react.svg)](https://www.npmjs.com/package/@csvbox/react) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
6
+
7
+ ## Shell
8
+
9
+ ```bash
10
+ npm install @csvbox/react
11
+ ```
12
+
13
+ ## Import
14
+ ```js
15
+ import { CSVBoxButton } from '@csvbox/react'
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ```jsx
21
+ <CSVBoxButton
22
+ licenseKey="Sheet license key"
23
+ user={{
24
+ user_id: "default123"
25
+ }}
26
+ onImport={(result, data) => {
27
+ if(result){
28
+ console.log("success");
29
+ console.log(data.row_success + " rows uploaded");
30
+ //custom code
31
+ }else{
32
+ console.log("fail");
33
+ //custom code
34
+ }
35
+ }}
36
+ >
37
+ Import
38
+ </CSVBoxButton>
39
+ ```
40
+
41
+ ## Readme
42
+
43
+ For usage see the guide here - https://help.csvbox.io/getting-started#2-install-code
44
+
45
+
46
+ ## License
47
+
48
+ MIT © [csvbox-io](https://github.com/csvbox-io)
package/dist/index.js ADDED
@@ -0,0 +1,266 @@
1
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
2
+
3
+ var React = require('react');
4
+ var React__default = _interopDefault(React);
5
+
6
+ function _inheritsLoose(subClass, superClass) {
7
+ subClass.prototype = Object.create(superClass.prototype);
8
+ subClass.prototype.constructor = subClass;
9
+
10
+ _setPrototypeOf(subClass, superClass);
11
+ }
12
+
13
+ function _setPrototypeOf(o, p) {
14
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
15
+ o.__proto__ = p;
16
+ return o;
17
+ };
18
+
19
+ return _setPrototypeOf(o, p);
20
+ }
21
+
22
+ function _assertThisInitialized(self) {
23
+ if (self === void 0) {
24
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
25
+ }
26
+
27
+ return self;
28
+ }
29
+
30
+ var version = "1.1.0";
31
+
32
+ var CSVBoxButton = /*#__PURE__*/function (_Component) {
33
+ _inheritsLoose(CSVBoxButton, _Component);
34
+
35
+ function CSVBoxButton(props) {
36
+ var _this;
37
+
38
+ _this = _Component.call(this, props) || this;
39
+ _this.holder = React__default.createRef();
40
+ _this.iframe = React__default.createRef();
41
+ _this.openModal = _this.openModal.bind(_assertThisInitialized(_this));
42
+ _this.isModalShown = false;
43
+ _this.uuid = _this.generateUuid();
44
+ _this.state = {
45
+ disabled: true
46
+ };
47
+ return _this;
48
+ }
49
+
50
+ var _proto = CSVBoxButton.prototype;
51
+
52
+ _proto.componentDidMount = function componentDidMount() {
53
+ var _this2 = this;
54
+
55
+ var onImport = this.props.onImport;
56
+ var user = this.props.user;
57
+ var dynamicColumns = this.props.dynamicColumns;
58
+ var options = this.props.options;
59
+ var onReady = this.props.onReady;
60
+ var onSubmit = this.props.onSubmit;
61
+ var onClose = this.props.onClose;
62
+ window.addEventListener("message", function (event) {
63
+ if (event.data === "mainModalHidden") {
64
+ if (_this2.holder && _this2.holder.current) {
65
+ _this2.holder.current.style.display = 'none';
66
+ }
67
+ _this2.isModalShown = false;
68
+ onClose === null || onClose === void 0 ? void 0 : onClose();
69
+ }
70
+
71
+ if (event.data === "uploadSuccessful") {
72
+ onImport(true);
73
+ }
74
+
75
+ if (event.data === "uploadFailed") {
76
+ onImport(false);
77
+ }
78
+
79
+ if (typeof event.data == "object") {
80
+ var _event$data, _event$data$data;
81
+
82
+ if ((event === null || event === void 0 ? void 0 : (_event$data = event.data) === null || _event$data === void 0 ? void 0 : (_event$data$data = _event$data.data) === null || _event$data$data === void 0 ? void 0 : _event$data$data.unique_token) == _this2.uuid) {
83
+ if (event.data.type && event.data.type == "data-on-submit") {
84
+ var metadata = event.data.data;
85
+ metadata["column_mappings"] = event.data.column_mapping;
86
+ delete metadata["unique_token"];
87
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(metadata);
88
+ } else if (event.data.type && event.data.type == "data-push-status") {
89
+ if (event.data.data.import_status = "success") {
90
+ if (event.data && event.data.row_data) {
91
+ var primary_row_data = event.data.row_data;
92
+ var headers = event.data.headers;
93
+ var rows = [];
94
+ var dynamic_columns_indexes = event.data.dynamicColumnsIndexes;
95
+ var virtual_columns_indexes = event.data.virtualColumnsIndexes || [];
96
+ var dropdown_display_labels_mappings = event.data.dropdown_display_labels_mappings;
97
+ primary_row_data.forEach(function (row_data) {
98
+ var x = {};
99
+ var dynamic_columns = {};
100
+ var virtual_data = {};
101
+ row_data.data.forEach(function (col, i) {
102
+ if (col == undefined) {
103
+ col = "";
104
+ }
105
+
106
+ if (!!dropdown_display_labels_mappings[i] && !!dropdown_display_labels_mappings[i][col]) {
107
+ col = dropdown_display_labels_mappings[i][col];
108
+ }
109
+
110
+ if (dynamic_columns_indexes.includes(i)) {
111
+ dynamic_columns[headers[i]] = col;
112
+ } else if (virtual_columns_indexes.includes(i)) {
113
+ virtual_data[headers[i]] = col;
114
+ } else {
115
+ x[headers[i]] = col;
116
+ }
117
+ });
118
+
119
+ if (row_data.unmapped_data) {
120
+ x["_unmapped_data"] = row_data.unmapped_data;
121
+ }
122
+
123
+ if (dynamic_columns && Object.keys(dynamic_columns).length > 0) {
124
+ x["_dynamic_data"] = dynamic_columns;
125
+ }
126
+
127
+ if (virtual_data && Object.keys(virtual_data).length > 0) {
128
+ x["_virtual_data"] = virtual_data;
129
+ }
130
+
131
+ rows.push(x);
132
+ });
133
+ var _metadata = event.data.data;
134
+ _metadata["rows"] = rows;
135
+ delete _metadata["unique_token"];
136
+ onImport(true, _metadata);
137
+ } else {
138
+ var _metadata2 = event.data.data;
139
+ delete _metadata2["unique_token"];
140
+ onImport(true, _metadata2);
141
+ }
142
+ } else {
143
+ onImport(false, event.data.data);
144
+ }
145
+ } else if (event.data.type && event.data.type == "csvbox-modal-hidden") {
146
+ if (_this2.holder && _this2.holder.current) {
147
+ _this2.holder.current.style.display = 'none';
148
+ }
149
+ _this2.isModalShown = false;
150
+ onClose === null || onClose === void 0 ? void 0 : onClose();
151
+ } else if (event.data.type && event.data.type == "csvbox-upload-successful") {
152
+ var _this2$onImport;
153
+
154
+ (_this2$onImport = _this2.onImport) === null || _this2$onImport === void 0 ? void 0 : _this2$onImport.call(_this2, true);
155
+ } else if (event.data.type && event.data.type == "csvbox-upload-failed") {
156
+ var _this2$onImport2;
157
+
158
+ (_this2$onImport2 = _this2.onImport) === null || _this2$onImport2 === void 0 ? void 0 : _this2$onImport2.call(_this2, false);
159
+ }
160
+ }
161
+ }
162
+ }, false);
163
+ var iframe = this.iframe.current;
164
+ var self = this;
165
+
166
+ iframe.onload = function () {
167
+ onReady === null || onReady === void 0 ? void 0 : onReady();
168
+ self.enableInitator();
169
+ iframe.contentWindow.postMessage({
170
+ "customer": user ? user : null,
171
+ "columns": dynamicColumns ? dynamicColumns : null,
172
+ "options": options ? options : null,
173
+ "unique_token": self.uuid
174
+ }, "*");
175
+ };
176
+ };
177
+
178
+ _proto.openModal = function openModal() {
179
+ if (!this.isModalShown) {
180
+ this.isModalShown = true;
181
+ this.iframe.current.contentWindow.postMessage('openModal', '*');
182
+ this.holder.current.style.display = 'block';
183
+ }
184
+ };
185
+
186
+ _proto.generateUuid = function generateUuid() {
187
+ return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
188
+ };
189
+
190
+ _proto.enableInitator = function enableInitator() {
191
+ this.setState({
192
+ disabled: !this.state.disabled
193
+ });
194
+ };
195
+
196
+ _proto.render = function render() {
197
+ var licenseKey = this.props.licenseKey;
198
+ var dataLocation = this.props.dataLocation;
199
+ var customDomain = this.props.customDomain;
200
+ var domain = customDomain ? customDomain : "app.csvbox.io";
201
+
202
+ if (dataLocation) {
203
+ domain = dataLocation + "-" + domain;
204
+ }
205
+
206
+ var iframeUrl = "https://" + domain + "/embed/" + licenseKey;
207
+ iframeUrl += "?library-version=" + version;
208
+ iframeUrl += "&framework=react";
209
+
210
+ if (dataLocation) {
211
+ iframeUrl += "&preventRedirect";
212
+ }
213
+
214
+ var holderStyle = {
215
+ display: "none",
216
+ zIndex: 2147483647,
217
+ position: "fixed",
218
+ top: 0,
219
+ bottom: 0,
220
+ left: 0,
221
+ right: 0
222
+ };
223
+ var iframeStyle = {
224
+ height: "100%",
225
+ width: "100%",
226
+ position: "absolute",
227
+ top: "0px",
228
+ left: "0px"
229
+ };
230
+
231
+ if (this.props.render) {
232
+ return /*#__PURE__*/React__default.createElement("div", null, this.props.render(this.openModal, this.state.disabled), /*#__PURE__*/React__default.createElement("div", {
233
+ ref: this.holder,
234
+ style: holderStyle
235
+ }, /*#__PURE__*/React__default.createElement("iframe", {
236
+ ref: this.iframe,
237
+ style: iframeStyle,
238
+ "data-csvbox-token": this.uuid,
239
+ src: iframeUrl,
240
+ frameBorder: "0"
241
+ })));
242
+ } else {
243
+ return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("button", {
244
+ disabled: this.state.disabled,
245
+ onClick: this.openModal,
246
+ "data-csvbox-initator": true,
247
+ "data-csvbox-token": this.uuid
248
+ }, this.props.children), /*#__PURE__*/React__default.createElement("div", {
249
+ ref: this.holder,
250
+ style: holderStyle
251
+ }, /*#__PURE__*/React__default.createElement("iframe", {
252
+ ref: this.iframe,
253
+ style: iframeStyle,
254
+ "data-csvbox-token": this.uuid,
255
+ src: iframeUrl,
256
+ frameBorder: "0"
257
+ })));
258
+ }
259
+ };
260
+
261
+ return CSVBoxButton;
262
+ }(React.Component);
263
+
264
+ exports.CSVBoxButton = CSVBoxButton;
265
+ exports.default = CSVBoxButton;
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.js"],"sourcesContent":["import React, { Component } from 'react';\n// import styles from './styles.module.css'\n\nimport { version } from '../package.json';\n\nexport class CSVBoxButton extends Component {\n\n constructor(props) {\n super(props)\n this.holder = React.createRef();\n this.iframe = React.createRef();\n this.openModal = this.openModal.bind(this)\n this.isModalShown = false;\n this.uuid = this.generateUuid();\n this.state = {\n disabled: true\n };\n }\n\n componentDidMount() {\n\n const { onImport } = this.props;\n const { user } = this.props;\n const { dynamicColumns } = this.props;\n const { options } = this.props;\n const { onReady } = this.props;\n const { onSubmit } = this.props;\n const { onClose } = this.props;\n\n window.addEventListener(\"message\", (event) => {\n\n // console.log(\"message\", event);\n\n if (event.data === \"mainModalHidden\") {\n if (this.holder && this.holder.current) {\n this.holder.current.style.display = 'none';\n };\n this.isModalShown = false;\n onClose?.();\n }\n if(event.data === \"uploadSuccessful\") {\n onImport(true);\n }\n if(event.data === \"uploadFailed\") {\n onImport(false);\n }\n if(typeof event.data == \"object\") {\n\n if(event?.data?.data?.unique_token == this.uuid) {\n\n if(event.data.type && event.data.type == \"data-on-submit\") {\n let metadata = event.data.data;\n metadata[\"column_mappings\"] = event.data.column_mapping;\n delete metadata[\"unique_token\"];\n onSubmit?.(metadata);\n }\n else if(event.data.type && event.data.type == \"data-push-status\") {\n if(event.data.data.import_status = \"success\"){\n if(event.data && event.data.row_data) {\n let primary_row_data = event.data.row_data;\n let headers = event.data.headers;\n let rows = [];\n let dynamic_columns_indexes = event.data.dynamicColumnsIndexes;\n let virtual_columns_indexes = event.data.virtualColumnsIndexes || [];\n\n let dropdown_display_labels_mappings = event.data.dropdown_display_labels_mappings;\n primary_row_data.forEach((row_data) => {\n let x = {};\n let dynamic_columns = {};\n let virtual_data = {};\n row_data.data.forEach((col, i)=>{\n if(col == undefined){ col = \"\" }\n if(!!dropdown_display_labels_mappings[i] && !!dropdown_display_labels_mappings[i][col]) {\n col = dropdown_display_labels_mappings[i][col];\n }\n if(dynamic_columns_indexes.includes(i)) {\n dynamic_columns[headers[i]] = col;\n }\n else if(virtual_columns_indexes.includes(i)) {\n virtual_data[headers[i]] = col;\n }\n else{\n x[headers[i]] = col;\n }\n });\n if(row_data.unmapped_data) {\n x[\"_unmapped_data\"] = row_data.unmapped_data;\n }\n if(dynamic_columns && Object.keys(dynamic_columns).length > 0) {\n x[\"_dynamic_data\"] = dynamic_columns;\n }\n if(virtual_data && Object.keys(virtual_data).length > 0) {\n x[\"_virtual_data\"] = virtual_data;\n }\n rows.push(x);\n });\n let metadata = event.data.data;\n metadata[\"rows\"] = rows;\n delete metadata[\"unique_token\"];\n onImport(true, metadata);\n }else{\n let metadata = event.data.data;\n delete metadata[\"unique_token\"];\n onImport(true, metadata);\n }\n }else {\n onImport(false, event.data.data);\n }\n } else if(event.data.type && event.data.type == \"csvbox-modal-hidden\") {\n if (this.holder && this.holder.current) {\n this.holder.current.style.display = 'none';\n };\n this.isModalShown = false;\n onClose?.();\n } else if(event.data.type && event.data.type == \"csvbox-upload-successful\") {\n this.onImport?.(true);\n } else if(event.data.type && event.data.type == \"csvbox-upload-failed\") {\n this.onImport?.(false);\n }\n }\n\n\n }\n }, false);\n let iframe = this.iframe.current;\n\n let self = this;\n\n iframe.onload = function () {\n\n onReady?.();\n\n self.enableInitator();\n\n iframe.contentWindow.postMessage({\n \"customer\" : user ? user : null,\n \"columns\" : dynamicColumns ? dynamicColumns : null,\n \"options\" : options ? options : null,\n \"unique_token\": self.uuid\n }, \"*\");\n\n }\n }\n openModal() {\n if(!this.isModalShown) {\n this.isModalShown = true;\n this.iframe.current.contentWindow.postMessage('openModal', '*');\n this.holder.current.style.display = 'block';\n }\n }\n\n generateUuid() {\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n }\n\n enableInitator() {\n this.setState({\n disabled: !this.state.disabled\n })\n }\n\n render() {\n\n const { licenseKey } = this.props;\n const { dataLocation } = this.props;\n const { customDomain } = this.props;\n\n let domain = customDomain ? customDomain : \"app.csvbox.io\";\n\n if(dataLocation) {\n domain = `${dataLocation}-${domain}`;\n }\n\n let iframeUrl = `https://${domain}/embed/${licenseKey}`;\n\n iframeUrl += `?library-version=${version}`;\n iframeUrl += \"&framework=react\";\n\n if(dataLocation) {\n iframeUrl += \"&preventRedirect\";\n }\n\n const holderStyle = {\n display: \"none\",\n zIndex: 2147483647,\n position: \"fixed\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n\n const iframeStyle = {\n height: \"100%\",\n width: \"100%\",\n position: \"absolute\",\n top: \"0px\",\n left: \"0px\"\n };\n\n if(this.props.render) {\n return (\n <div>\n {this.props.render(this.openModal, this.state.disabled)}\n <div ref={this.holder} style={holderStyle}>\n <iframe ref={this.iframe} style={iframeStyle} data-csvbox-token={this.uuid} src={iframeUrl} frameBorder=\"0\" ></iframe>\n </div>\n </div>\n )\n }else{\n return (\n <div>\n <button disabled={this.state.disabled} onClick={this.openModal} data-csvbox-initator data-csvbox-token={this.uuid}>{this.props.children}</button>\n <div ref={this.holder} style={holderStyle}>\n <iframe ref={this.iframe} style={iframeStyle} data-csvbox-token={this.uuid} src={iframeUrl} frameBorder=\"0\" ></iframe>\n </div>\n </div>\n )\n }\n\n\n }\n}\n\nexport default CSVBoxButton;\n"],"names":["CSVBoxButton","props","holder","React","createRef","iframe","openModal","bind","isModalShown","uuid","generateUuid","state","disabled","componentDidMount","onImport","user","dynamicColumns","options","onReady","onSubmit","onClose","window","addEventListener","event","data","current","style","display","unique_token","type","metadata","column_mapping","import_status","row_data","primary_row_data","headers","rows","dynamic_columns_indexes","dynamicColumnsIndexes","virtual_columns_indexes","virtualColumnsIndexes","dropdown_display_labels_mappings","forEach","x","dynamic_columns","virtual_data","col","i","undefined","includes","unmapped_data","Object","keys","length","push","self","onload","enableInitator","contentWindow","postMessage","Math","random","toString","substring","setState","render","licenseKey","dataLocation","customDomain","domain","iframeUrl","version","holderStyle","zIndex","position","top","bottom","left","right","iframeStyle","height","width","children","Component"],"mappings":"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"}
@@ -0,0 +1,263 @@
1
+ import React, { Component } from 'react';
2
+
3
+ function _inheritsLoose(subClass, superClass) {
4
+ subClass.prototype = Object.create(superClass.prototype);
5
+ subClass.prototype.constructor = subClass;
6
+
7
+ _setPrototypeOf(subClass, superClass);
8
+ }
9
+
10
+ function _setPrototypeOf(o, p) {
11
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
12
+ o.__proto__ = p;
13
+ return o;
14
+ };
15
+
16
+ return _setPrototypeOf(o, p);
17
+ }
18
+
19
+ function _assertThisInitialized(self) {
20
+ if (self === void 0) {
21
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
22
+ }
23
+
24
+ return self;
25
+ }
26
+
27
+ var version = "1.1.0";
28
+
29
+ var CSVBoxButton = /*#__PURE__*/function (_Component) {
30
+ _inheritsLoose(CSVBoxButton, _Component);
31
+
32
+ function CSVBoxButton(props) {
33
+ var _this;
34
+
35
+ _this = _Component.call(this, props) || this;
36
+ _this.holder = React.createRef();
37
+ _this.iframe = React.createRef();
38
+ _this.openModal = _this.openModal.bind(_assertThisInitialized(_this));
39
+ _this.isModalShown = false;
40
+ _this.uuid = _this.generateUuid();
41
+ _this.state = {
42
+ disabled: true
43
+ };
44
+ return _this;
45
+ }
46
+
47
+ var _proto = CSVBoxButton.prototype;
48
+
49
+ _proto.componentDidMount = function componentDidMount() {
50
+ var _this2 = this;
51
+
52
+ var onImport = this.props.onImport;
53
+ var user = this.props.user;
54
+ var dynamicColumns = this.props.dynamicColumns;
55
+ var options = this.props.options;
56
+ var onReady = this.props.onReady;
57
+ var onSubmit = this.props.onSubmit;
58
+ var onClose = this.props.onClose;
59
+ window.addEventListener("message", function (event) {
60
+ if (event.data === "mainModalHidden") {
61
+ if (_this2.holder && _this2.holder.current) {
62
+ _this2.holder.current.style.display = 'none';
63
+ }
64
+ _this2.isModalShown = false;
65
+ onClose === null || onClose === void 0 ? void 0 : onClose();
66
+ }
67
+
68
+ if (event.data === "uploadSuccessful") {
69
+ onImport(true);
70
+ }
71
+
72
+ if (event.data === "uploadFailed") {
73
+ onImport(false);
74
+ }
75
+
76
+ if (typeof event.data == "object") {
77
+ var _event$data, _event$data$data;
78
+
79
+ if ((event === null || event === void 0 ? void 0 : (_event$data = event.data) === null || _event$data === void 0 ? void 0 : (_event$data$data = _event$data.data) === null || _event$data$data === void 0 ? void 0 : _event$data$data.unique_token) == _this2.uuid) {
80
+ if (event.data.type && event.data.type == "data-on-submit") {
81
+ var metadata = event.data.data;
82
+ metadata["column_mappings"] = event.data.column_mapping;
83
+ delete metadata["unique_token"];
84
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(metadata);
85
+ } else if (event.data.type && event.data.type == "data-push-status") {
86
+ if (event.data.data.import_status = "success") {
87
+ if (event.data && event.data.row_data) {
88
+ var primary_row_data = event.data.row_data;
89
+ var headers = event.data.headers;
90
+ var rows = [];
91
+ var dynamic_columns_indexes = event.data.dynamicColumnsIndexes;
92
+ var virtual_columns_indexes = event.data.virtualColumnsIndexes || [];
93
+ var dropdown_display_labels_mappings = event.data.dropdown_display_labels_mappings;
94
+ primary_row_data.forEach(function (row_data) {
95
+ var x = {};
96
+ var dynamic_columns = {};
97
+ var virtual_data = {};
98
+ row_data.data.forEach(function (col, i) {
99
+ if (col == undefined) {
100
+ col = "";
101
+ }
102
+
103
+ if (!!dropdown_display_labels_mappings[i] && !!dropdown_display_labels_mappings[i][col]) {
104
+ col = dropdown_display_labels_mappings[i][col];
105
+ }
106
+
107
+ if (dynamic_columns_indexes.includes(i)) {
108
+ dynamic_columns[headers[i]] = col;
109
+ } else if (virtual_columns_indexes.includes(i)) {
110
+ virtual_data[headers[i]] = col;
111
+ } else {
112
+ x[headers[i]] = col;
113
+ }
114
+ });
115
+
116
+ if (row_data.unmapped_data) {
117
+ x["_unmapped_data"] = row_data.unmapped_data;
118
+ }
119
+
120
+ if (dynamic_columns && Object.keys(dynamic_columns).length > 0) {
121
+ x["_dynamic_data"] = dynamic_columns;
122
+ }
123
+
124
+ if (virtual_data && Object.keys(virtual_data).length > 0) {
125
+ x["_virtual_data"] = virtual_data;
126
+ }
127
+
128
+ rows.push(x);
129
+ });
130
+ var _metadata = event.data.data;
131
+ _metadata["rows"] = rows;
132
+ delete _metadata["unique_token"];
133
+ onImport(true, _metadata);
134
+ } else {
135
+ var _metadata2 = event.data.data;
136
+ delete _metadata2["unique_token"];
137
+ onImport(true, _metadata2);
138
+ }
139
+ } else {
140
+ onImport(false, event.data.data);
141
+ }
142
+ } else if (event.data.type && event.data.type == "csvbox-modal-hidden") {
143
+ if (_this2.holder && _this2.holder.current) {
144
+ _this2.holder.current.style.display = 'none';
145
+ }
146
+ _this2.isModalShown = false;
147
+ onClose === null || onClose === void 0 ? void 0 : onClose();
148
+ } else if (event.data.type && event.data.type == "csvbox-upload-successful") {
149
+ var _this2$onImport;
150
+
151
+ (_this2$onImport = _this2.onImport) === null || _this2$onImport === void 0 ? void 0 : _this2$onImport.call(_this2, true);
152
+ } else if (event.data.type && event.data.type == "csvbox-upload-failed") {
153
+ var _this2$onImport2;
154
+
155
+ (_this2$onImport2 = _this2.onImport) === null || _this2$onImport2 === void 0 ? void 0 : _this2$onImport2.call(_this2, false);
156
+ }
157
+ }
158
+ }
159
+ }, false);
160
+ var iframe = this.iframe.current;
161
+ var self = this;
162
+
163
+ iframe.onload = function () {
164
+ onReady === null || onReady === void 0 ? void 0 : onReady();
165
+ self.enableInitator();
166
+ iframe.contentWindow.postMessage({
167
+ "customer": user ? user : null,
168
+ "columns": dynamicColumns ? dynamicColumns : null,
169
+ "options": options ? options : null,
170
+ "unique_token": self.uuid
171
+ }, "*");
172
+ };
173
+ };
174
+
175
+ _proto.openModal = function openModal() {
176
+ if (!this.isModalShown) {
177
+ this.isModalShown = true;
178
+ this.iframe.current.contentWindow.postMessage('openModal', '*');
179
+ this.holder.current.style.display = 'block';
180
+ }
181
+ };
182
+
183
+ _proto.generateUuid = function generateUuid() {
184
+ return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
185
+ };
186
+
187
+ _proto.enableInitator = function enableInitator() {
188
+ this.setState({
189
+ disabled: !this.state.disabled
190
+ });
191
+ };
192
+
193
+ _proto.render = function render() {
194
+ var licenseKey = this.props.licenseKey;
195
+ var dataLocation = this.props.dataLocation;
196
+ var customDomain = this.props.customDomain;
197
+ var domain = customDomain ? customDomain : "app.csvbox.io";
198
+
199
+ if (dataLocation) {
200
+ domain = dataLocation + "-" + domain;
201
+ }
202
+
203
+ var iframeUrl = "https://" + domain + "/embed/" + licenseKey;
204
+ iframeUrl += "?library-version=" + version;
205
+ iframeUrl += "&framework=react";
206
+
207
+ if (dataLocation) {
208
+ iframeUrl += "&preventRedirect";
209
+ }
210
+
211
+ var holderStyle = {
212
+ display: "none",
213
+ zIndex: 2147483647,
214
+ position: "fixed",
215
+ top: 0,
216
+ bottom: 0,
217
+ left: 0,
218
+ right: 0
219
+ };
220
+ var iframeStyle = {
221
+ height: "100%",
222
+ width: "100%",
223
+ position: "absolute",
224
+ top: "0px",
225
+ left: "0px"
226
+ };
227
+
228
+ if (this.props.render) {
229
+ return /*#__PURE__*/React.createElement("div", null, this.props.render(this.openModal, this.state.disabled), /*#__PURE__*/React.createElement("div", {
230
+ ref: this.holder,
231
+ style: holderStyle
232
+ }, /*#__PURE__*/React.createElement("iframe", {
233
+ ref: this.iframe,
234
+ style: iframeStyle,
235
+ "data-csvbox-token": this.uuid,
236
+ src: iframeUrl,
237
+ frameBorder: "0"
238
+ })));
239
+ } else {
240
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("button", {
241
+ disabled: this.state.disabled,
242
+ onClick: this.openModal,
243
+ "data-csvbox-initator": true,
244
+ "data-csvbox-token": this.uuid
245
+ }, this.props.children), /*#__PURE__*/React.createElement("div", {
246
+ ref: this.holder,
247
+ style: holderStyle
248
+ }, /*#__PURE__*/React.createElement("iframe", {
249
+ ref: this.iframe,
250
+ style: iframeStyle,
251
+ "data-csvbox-token": this.uuid,
252
+ src: iframeUrl,
253
+ frameBorder: "0"
254
+ })));
255
+ }
256
+ };
257
+
258
+ return CSVBoxButton;
259
+ }(Component);
260
+
261
+ export default CSVBoxButton;
262
+ export { CSVBoxButton };
263
+ //# sourceMappingURL=index.modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.js","sources":["../src/index.js"],"sourcesContent":["import React, { Component } from 'react';\n// import styles from './styles.module.css'\n\nimport { version } from '../package.json';\n\nexport class CSVBoxButton extends Component {\n\n constructor(props) {\n super(props)\n this.holder = React.createRef();\n this.iframe = React.createRef();\n this.openModal = this.openModal.bind(this)\n this.isModalShown = false;\n this.uuid = this.generateUuid();\n this.state = {\n disabled: true\n };\n }\n\n componentDidMount() {\n\n const { onImport } = this.props;\n const { user } = this.props;\n const { dynamicColumns } = this.props;\n const { options } = this.props;\n const { onReady } = this.props;\n const { onSubmit } = this.props;\n const { onClose } = this.props;\n\n window.addEventListener(\"message\", (event) => {\n\n // console.log(\"message\", event);\n\n if (event.data === \"mainModalHidden\") {\n if (this.holder && this.holder.current) {\n this.holder.current.style.display = 'none';\n };\n this.isModalShown = false;\n onClose?.();\n }\n if(event.data === \"uploadSuccessful\") {\n onImport(true);\n }\n if(event.data === \"uploadFailed\") {\n onImport(false);\n }\n if(typeof event.data == \"object\") {\n\n if(event?.data?.data?.unique_token == this.uuid) {\n\n if(event.data.type && event.data.type == \"data-on-submit\") {\n let metadata = event.data.data;\n metadata[\"column_mappings\"] = event.data.column_mapping;\n delete metadata[\"unique_token\"];\n onSubmit?.(metadata);\n }\n else if(event.data.type && event.data.type == \"data-push-status\") {\n if(event.data.data.import_status = \"success\"){\n if(event.data && event.data.row_data) {\n let primary_row_data = event.data.row_data;\n let headers = event.data.headers;\n let rows = [];\n let dynamic_columns_indexes = event.data.dynamicColumnsIndexes;\n let virtual_columns_indexes = event.data.virtualColumnsIndexes || [];\n\n let dropdown_display_labels_mappings = event.data.dropdown_display_labels_mappings;\n primary_row_data.forEach((row_data) => {\n let x = {};\n let dynamic_columns = {};\n let virtual_data = {};\n row_data.data.forEach((col, i)=>{\n if(col == undefined){ col = \"\" }\n if(!!dropdown_display_labels_mappings[i] && !!dropdown_display_labels_mappings[i][col]) {\n col = dropdown_display_labels_mappings[i][col];\n }\n if(dynamic_columns_indexes.includes(i)) {\n dynamic_columns[headers[i]] = col;\n }\n else if(virtual_columns_indexes.includes(i)) {\n virtual_data[headers[i]] = col;\n }\n else{\n x[headers[i]] = col;\n }\n });\n if(row_data.unmapped_data) {\n x[\"_unmapped_data\"] = row_data.unmapped_data;\n }\n if(dynamic_columns && Object.keys(dynamic_columns).length > 0) {\n x[\"_dynamic_data\"] = dynamic_columns;\n }\n if(virtual_data && Object.keys(virtual_data).length > 0) {\n x[\"_virtual_data\"] = virtual_data;\n }\n rows.push(x);\n });\n let metadata = event.data.data;\n metadata[\"rows\"] = rows;\n delete metadata[\"unique_token\"];\n onImport(true, metadata);\n }else{\n let metadata = event.data.data;\n delete metadata[\"unique_token\"];\n onImport(true, metadata);\n }\n }else {\n onImport(false, event.data.data);\n }\n } else if(event.data.type && event.data.type == \"csvbox-modal-hidden\") {\n if (this.holder && this.holder.current) {\n this.holder.current.style.display = 'none';\n };\n this.isModalShown = false;\n onClose?.();\n } else if(event.data.type && event.data.type == \"csvbox-upload-successful\") {\n this.onImport?.(true);\n } else if(event.data.type && event.data.type == \"csvbox-upload-failed\") {\n this.onImport?.(false);\n }\n }\n\n\n }\n }, false);\n let iframe = this.iframe.current;\n\n let self = this;\n\n iframe.onload = function () {\n\n onReady?.();\n\n self.enableInitator();\n\n iframe.contentWindow.postMessage({\n \"customer\" : user ? user : null,\n \"columns\" : dynamicColumns ? dynamicColumns : null,\n \"options\" : options ? options : null,\n \"unique_token\": self.uuid\n }, \"*\");\n\n }\n }\n openModal() {\n if(!this.isModalShown) {\n this.isModalShown = true;\n this.iframe.current.contentWindow.postMessage('openModal', '*');\n this.holder.current.style.display = 'block';\n }\n }\n\n generateUuid() {\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n }\n\n enableInitator() {\n this.setState({\n disabled: !this.state.disabled\n })\n }\n\n render() {\n\n const { licenseKey } = this.props;\n const { dataLocation } = this.props;\n const { customDomain } = this.props;\n\n let domain = customDomain ? customDomain : \"app.csvbox.io\";\n\n if(dataLocation) {\n domain = `${dataLocation}-${domain}`;\n }\n\n let iframeUrl = `https://${domain}/embed/${licenseKey}`;\n\n iframeUrl += `?library-version=${version}`;\n iframeUrl += \"&framework=react\";\n\n if(dataLocation) {\n iframeUrl += \"&preventRedirect\";\n }\n\n const holderStyle = {\n display: \"none\",\n zIndex: 2147483647,\n position: \"fixed\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n\n const iframeStyle = {\n height: \"100%\",\n width: \"100%\",\n position: \"absolute\",\n top: \"0px\",\n left: \"0px\"\n };\n\n if(this.props.render) {\n return (\n <div>\n {this.props.render(this.openModal, this.state.disabled)}\n <div ref={this.holder} style={holderStyle}>\n <iframe ref={this.iframe} style={iframeStyle} data-csvbox-token={this.uuid} src={iframeUrl} frameBorder=\"0\" ></iframe>\n </div>\n </div>\n )\n }else{\n return (\n <div>\n <button disabled={this.state.disabled} onClick={this.openModal} data-csvbox-initator data-csvbox-token={this.uuid}>{this.props.children}</button>\n <div ref={this.holder} style={holderStyle}>\n <iframe ref={this.iframe} style={iframeStyle} data-csvbox-token={this.uuid} src={iframeUrl} frameBorder=\"0\" ></iframe>\n </div>\n </div>\n )\n }\n\n\n }\n}\n\nexport default CSVBoxButton;\n"],"names":["CSVBoxButton","props","holder","React","createRef","iframe","openModal","bind","isModalShown","uuid","generateUuid","state","disabled","componentDidMount","onImport","user","dynamicColumns","options","onReady","onSubmit","onClose","window","addEventListener","event","data","current","style","display","unique_token","type","metadata","column_mapping","import_status","row_data","primary_row_data","headers","rows","dynamic_columns_indexes","dynamicColumnsIndexes","virtual_columns_indexes","virtualColumnsIndexes","dropdown_display_labels_mappings","forEach","x","dynamic_columns","virtual_data","col","i","undefined","includes","unmapped_data","Object","keys","length","push","self","onload","enableInitator","contentWindow","postMessage","Math","random","toString","substring","setState","render","licenseKey","dataLocation","customDomain","domain","iframeUrl","version","holderStyle","zIndex","position","top","bottom","left","right","iframeStyle","height","width","children","Component"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "csvbox-react-test",
3
+ "version": "1.1.0",
4
+ "description": "React adapter for csvbox.io",
5
+ "author": "csvbox-io",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/csvbox-io/react.git"
10
+ },
11
+ "main": "dist/index.js",
12
+ "module": "dist/index.modern.js",
13
+ "source": "src/index.js",
14
+ "engines": {
15
+ "node": ">=10"
16
+ },
17
+ "scripts": {
18
+ "build": "microbundle-crl --no-compress --format modern,cjs",
19
+ "start": "microbundle-crl watch --no-compress --format modern,cjs",
20
+ "prepare": "run-s build",
21
+ "test": "run-s test:unit test:lint test:build",
22
+ "test:build": "run-s build",
23
+ "test:lint": "eslint .",
24
+ "test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
25
+ "test:watch": "react-scripts test --env=jsdom",
26
+ "predeploy": "cd example && npm install && npm run build",
27
+ "deploy": "gh-pages -d example/build"
28
+ },
29
+ "peerDependencies": {
30
+ "react": "^16.13.1 || ^17.0.2 || ^ 18.0.0",
31
+ "react-dom": "^16.13.1 || ^17.0.2 || ^18.0.0"
32
+ },
33
+ "devDependencies": {
34
+ "babel-eslint": "^10.0.3",
35
+ "cross-env": "^7.0.2",
36
+ "eslint": "^6.8.0",
37
+ "eslint-config-prettier": "^6.7.0",
38
+ "eslint-config-standard": "^14.1.0",
39
+ "eslint-config-standard-react": "^9.2.0",
40
+ "eslint-plugin-import": "^2.18.2",
41
+ "eslint-plugin-node": "^11.0.0",
42
+ "eslint-plugin-prettier": "^3.1.1",
43
+ "eslint-plugin-promise": "^4.2.1",
44
+ "eslint-plugin-react": "^7.17.0",
45
+ "eslint-plugin-standard": "^4.0.1",
46
+ "gh-pages": "^2.2.0",
47
+ "microbundle-crl": "^0.13.10",
48
+ "npm-run-all": "^4.1.5",
49
+ "prettier": "^2.0.4",
50
+ "react": "^16.13.1",
51
+ "react-dom": "^16.13.1",
52
+ "react-scripts": "^3.4.1"
53
+ },
54
+ "files": [
55
+ "dist"
56
+ ],
57
+ "keywords": [
58
+ "csv",
59
+ "importer",
60
+ "uploader",
61
+ "csvbox",
62
+ "parser",
63
+ "csv-parse",
64
+ "excel",
65
+ "xls",
66
+ "csv import",
67
+ "csv upload",
68
+ "spreadsheet import",
69
+ "react csv",
70
+ "csv parse",
71
+ "csv to json"
72
+ ],
73
+ "bugs": {
74
+ "url": "https://github.com/csvbox-io/react/issues"
75
+ },
76
+ "homepage": "https://github.com/csvbox-io/react#readme",
77
+ "directories": {
78
+ "example": "example"
79
+ }
80
+ }