@usecsv/vuejs 1.1.19 → 1.1.22
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/dist/UseCSVButton.esm.js +132 -46
- package/dist/UseCSVButton.min.js +3 -17
- package/dist/UseCSVButton.ssr.js +169 -85
- package/dist/types/src/UseCSVButton.vue.d.ts +5 -2
- package/package.json +21 -21
- package/src/UseCSVButton.vue +7 -4
package/dist/UseCSVButton.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import Vue from 'vue';
|
|
2
2
|
|
|
3
3
|
/*!
|
|
4
|
-
* @usecsv/js v0.
|
|
4
|
+
* @usecsv/js v0.14.0
|
|
5
5
|
* (c) layercode
|
|
6
6
|
* Released under the MIT License.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
/******************************************************************************
|
|
10
10
|
Copyright (c) Microsoft Corporation.
|
|
11
11
|
|
|
12
12
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -214,14 +214,14 @@ const deserializeError = (obj) => {
|
|
|
214
214
|
* Listens for "call" messages coming from the remote, executes the corresponding method, and
|
|
215
215
|
* responds with the return value.
|
|
216
216
|
*/
|
|
217
|
-
var connectCallReceiver = (info,
|
|
217
|
+
var connectCallReceiver = (info, serializedMethods, log) => {
|
|
218
218
|
const { localName, local, remote, originForSending, originForReceiving, } = info;
|
|
219
219
|
let destroyed = false;
|
|
220
220
|
const handleMessageEvent = (event) => {
|
|
221
221
|
if (event.source !== remote || event.data.penpal !== MessageType.Call) {
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
|
-
if (event.origin !== originForReceiving) {
|
|
224
|
+
if (originForReceiving !== '*' && event.origin !== originForReceiving) {
|
|
225
225
|
log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);
|
|
226
226
|
return;
|
|
227
227
|
}
|
|
@@ -271,7 +271,7 @@ var connectCallReceiver = (info, methods, log) => {
|
|
|
271
271
|
}
|
|
272
272
|
};
|
|
273
273
|
};
|
|
274
|
-
new Promise((resolve) => resolve(
|
|
274
|
+
new Promise((resolve) => resolve(serializedMethods[methodName].apply(serializedMethods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));
|
|
275
275
|
};
|
|
276
276
|
local.addEventListener(NativeEventType.Message, handleMessageEvent);
|
|
277
277
|
return () => {
|
|
@@ -286,18 +286,86 @@ let id = 0;
|
|
|
286
286
|
*/
|
|
287
287
|
var generateId = () => ++id;
|
|
288
288
|
|
|
289
|
+
const KEY_PATH_DELIMITER = '.';
|
|
290
|
+
const keyPathToSegments = (keyPath) => keyPath ? keyPath.split(KEY_PATH_DELIMITER) : [];
|
|
291
|
+
const segmentsToKeyPath = (segments) => segments.join(KEY_PATH_DELIMITER);
|
|
292
|
+
const createKeyPath = (key, prefix) => {
|
|
293
|
+
const segments = keyPathToSegments(prefix || '');
|
|
294
|
+
segments.push(key);
|
|
295
|
+
return segmentsToKeyPath(segments);
|
|
296
|
+
};
|
|
297
|
+
/**
|
|
298
|
+
* Given a `keyPath`, set it to be `value` on `subject`, creating any intermediate
|
|
299
|
+
* objects along the way.
|
|
300
|
+
*
|
|
301
|
+
* @param {Object} subject The object on which to set value.
|
|
302
|
+
* @param {string} keyPath The key path at which to set value.
|
|
303
|
+
* @param {Object} value The value to store at the given key path.
|
|
304
|
+
* @returns {Object} Updated subject.
|
|
305
|
+
*/
|
|
306
|
+
const setAtKeyPath = (subject, keyPath, value) => {
|
|
307
|
+
const segments = keyPathToSegments(keyPath);
|
|
308
|
+
segments.reduce((prevSubject, key, idx) => {
|
|
309
|
+
if (typeof prevSubject[key] === 'undefined') {
|
|
310
|
+
prevSubject[key] = {};
|
|
311
|
+
}
|
|
312
|
+
if (idx === segments.length - 1) {
|
|
313
|
+
prevSubject[key] = value;
|
|
314
|
+
}
|
|
315
|
+
return prevSubject[key];
|
|
316
|
+
}, subject);
|
|
317
|
+
return subject;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Given a dictionary of (nested) keys to function, flatten them to a map
|
|
321
|
+
* from key path to function.
|
|
322
|
+
*
|
|
323
|
+
* @param {Object} methods The (potentially nested) object to serialize.
|
|
324
|
+
* @param {string} prefix A string with which to prefix entries. Typically not intended to be used by consumers.
|
|
325
|
+
* @returns {Object} An map from key path in `methods` to functions.
|
|
326
|
+
*/
|
|
327
|
+
const serializeMethods = (methods, prefix) => {
|
|
328
|
+
const flattenedMethods = {};
|
|
329
|
+
Object.keys(methods).forEach((key) => {
|
|
330
|
+
const value = methods[key];
|
|
331
|
+
const keyPath = createKeyPath(key, prefix);
|
|
332
|
+
if (typeof value === 'object') {
|
|
333
|
+
// Recurse into any nested children.
|
|
334
|
+
Object.assign(flattenedMethods, serializeMethods(value, keyPath));
|
|
335
|
+
}
|
|
336
|
+
if (typeof value === 'function') {
|
|
337
|
+
// If we've found a method, expose it.
|
|
338
|
+
flattenedMethods[keyPath] = value;
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
return flattenedMethods;
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Given a map of key paths to functions, unpack the key paths to an object.
|
|
345
|
+
*
|
|
346
|
+
* @param {Object} flattenedMethods A map of key paths to functions to unpack.
|
|
347
|
+
* @returns {Object} A (potentially nested) map of functions.
|
|
348
|
+
*/
|
|
349
|
+
const deserializeMethods = (flattenedMethods) => {
|
|
350
|
+
const methods = {};
|
|
351
|
+
for (const keyPath in flattenedMethods) {
|
|
352
|
+
setAtKeyPath(methods, keyPath, flattenedMethods[keyPath]);
|
|
353
|
+
}
|
|
354
|
+
return methods;
|
|
355
|
+
};
|
|
356
|
+
|
|
289
357
|
/**
|
|
290
358
|
* Augments an object with methods that match those defined by the remote. When these methods are
|
|
291
359
|
* called, a "call" message will be sent to the remote, the remote's corresponding method will be
|
|
292
360
|
* executed, and the method's return value will be returned via a message.
|
|
293
361
|
* @param {Object} callSender Sender object that should be augmented with methods.
|
|
294
362
|
* @param {Object} info Information about the local and remote windows.
|
|
295
|
-
* @param {Array}
|
|
363
|
+
* @param {Array} methodKeyPaths Key paths of methods available to be called on the remote.
|
|
296
364
|
* @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal
|
|
297
365
|
* connection.
|
|
298
366
|
* @returns {Object} The call sender object with methods that may be called.
|
|
299
367
|
*/
|
|
300
|
-
var connectCallSender = (callSender, info,
|
|
368
|
+
var connectCallSender = (callSender, info, methodKeyPaths, destroyConnection, log) => {
|
|
301
369
|
const { localName, local, remote, originForSending, originForReceiving, } = info;
|
|
302
370
|
let destroyed = false;
|
|
303
371
|
log(`${localName}: Connecting call sender`);
|
|
@@ -338,7 +406,8 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
338
406
|
event.data.id !== id) {
|
|
339
407
|
return;
|
|
340
408
|
}
|
|
341
|
-
if (
|
|
409
|
+
if (originForReceiving !== '*' &&
|
|
410
|
+
event.origin !== originForReceiving) {
|
|
342
411
|
log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);
|
|
343
412
|
return;
|
|
344
413
|
}
|
|
@@ -362,10 +431,14 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
362
431
|
});
|
|
363
432
|
};
|
|
364
433
|
};
|
|
365
|
-
|
|
366
|
-
|
|
434
|
+
// Wrap each method in a proxy which sends it to the corresponding receiver.
|
|
435
|
+
const flattenedMethods = methodKeyPaths.reduce((api, name) => {
|
|
436
|
+
api[name] = createMethodProxy(name);
|
|
367
437
|
return api;
|
|
368
|
-
},
|
|
438
|
+
}, {});
|
|
439
|
+
// Unpack the structure of the provided methods object onto the CallSender, exposing
|
|
440
|
+
// the methods in the same shape they were provided.
|
|
441
|
+
Object.assign(callSender, deserializeMethods(flattenedMethods));
|
|
369
442
|
return () => {
|
|
370
443
|
destroyed = true;
|
|
371
444
|
};
|
|
@@ -374,7 +447,7 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
374
447
|
/**
|
|
375
448
|
* Handles an ACK handshake message.
|
|
376
449
|
*/
|
|
377
|
-
var handleAckMessageFactory = (
|
|
450
|
+
var handleAckMessageFactory = (serializedMethods, childOrigin, originForSending, destructor, log) => {
|
|
378
451
|
const { destroy, onDestroy } = destructor;
|
|
379
452
|
let destroyCallReceiver;
|
|
380
453
|
let receiverMethodNames;
|
|
@@ -384,7 +457,7 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
384
457
|
// latest provided by the child.
|
|
385
458
|
const callSender = {};
|
|
386
459
|
return (event) => {
|
|
387
|
-
if (event.origin !== childOrigin) {
|
|
460
|
+
if (childOrigin !== '*' && event.origin !== childOrigin) {
|
|
388
461
|
log(`Parent: Handshake - Received ACK message from origin ${event.origin} which did not match expected origin ${childOrigin}`);
|
|
389
462
|
return;
|
|
390
463
|
}
|
|
@@ -401,7 +474,7 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
401
474
|
if (destroyCallReceiver) {
|
|
402
475
|
destroyCallReceiver();
|
|
403
476
|
}
|
|
404
|
-
destroyCallReceiver = connectCallReceiver(info,
|
|
477
|
+
destroyCallReceiver = connectCallReceiver(info, serializedMethods, log);
|
|
405
478
|
onDestroy(destroyCallReceiver);
|
|
406
479
|
// If the child reconnected, we need to remove the methods from the
|
|
407
480
|
// previous call receiver off the sender.
|
|
@@ -420,16 +493,23 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
420
493
|
/**
|
|
421
494
|
* Handles a SYN handshake message.
|
|
422
495
|
*/
|
|
423
|
-
var handleSynMessageFactory = (log,
|
|
496
|
+
var handleSynMessageFactory = (log, serializedMethods, childOrigin, originForSending) => {
|
|
424
497
|
return (event) => {
|
|
425
|
-
|
|
498
|
+
// Under specific timing circumstances, we can receive an event
|
|
499
|
+
// whose source is null. This seems to happen when the child iframe is
|
|
500
|
+
// removed from the DOM about the same time it has sent the SYN event.
|
|
501
|
+
// https://github.com/Aaronius/penpal/issues/85
|
|
502
|
+
if (!event.source) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
if (childOrigin !== '*' && event.origin !== childOrigin) {
|
|
426
506
|
log(`Parent: Handshake - Received SYN message from origin ${event.origin} which did not match expected origin ${childOrigin}`);
|
|
427
507
|
return;
|
|
428
508
|
}
|
|
429
509
|
log('Parent: Handshake - Received SYN, responding with SYN-ACK');
|
|
430
510
|
const synAckMessage = {
|
|
431
511
|
penpal: MessageType.SynAck,
|
|
432
|
-
methodNames: Object.keys(
|
|
512
|
+
methodNames: Object.keys(serializedMethods),
|
|
433
513
|
};
|
|
434
514
|
event.source.postMessage(synAckMessage, originForSending);
|
|
435
515
|
};
|
|
@@ -500,8 +580,9 @@ var connectToChild = (options) => {
|
|
|
500
580
|
// must post messages with "*" as targetOrigin when sending messages.
|
|
501
581
|
// https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Using_window.postMessage_in_extensions
|
|
502
582
|
const originForSending = childOrigin === 'null' ? '*' : childOrigin;
|
|
503
|
-
const
|
|
504
|
-
const
|
|
583
|
+
const serializedMethods = serializeMethods(methods);
|
|
584
|
+
const handleSynMessage = handleSynMessageFactory(log, serializedMethods, childOrigin, originForSending);
|
|
585
|
+
const handleAckMessage = handleAckMessageFactory(serializedMethods, childOrigin, originForSending, destructor, log);
|
|
505
586
|
const promise = new Promise((resolve, reject) => {
|
|
506
587
|
const stopConnectionTimeout = startConnectionTimeout(timeout, destroy);
|
|
507
588
|
const handleMessage = (event) => {
|
|
@@ -601,7 +682,7 @@ var insertIframe = function (id, importerDisplay) {
|
|
|
601
682
|
return iframe;
|
|
602
683
|
};
|
|
603
684
|
var useCsvPlugin = function (_a) {
|
|
604
|
-
var importerKey = _a.importerKey, user = _a.user, metadata = _a.metadata, onData = _a.onData, onRecordsInitial = _a.onRecordsInitial, onRecordEdit = _a.onRecordEdit, _b = _a.importerDisplay, importerDisplay = _b === void 0 ? "modal" : _b, onClose = _a.onClose, theme = _a.theme, batchSize = _a.batchSize;
|
|
685
|
+
var importerKey = _a.importerKey, user = _a.user, metadata = _a.metadata, onData = _a.onData, onRecordsInitial = _a.onRecordsInitial, onRecordEdit = _a.onRecordEdit, _b = _a.importerDisplay, importerDisplay = _b === void 0 ? "modal" : _b, onClose = _a.onClose, theme = _a.theme, batchSize = _a.batchSize, sampleFileURL = _a.sampleFileURL, _c = _a.downloadExampleButton, downloadExampleButton = _c === void 0 ? true : _c, dynamicColumns = _a.dynamicColumns;
|
|
605
686
|
var id = "usecsv-".concat(Math.round(Math.random() * 100000000));
|
|
606
687
|
return whenDomReady().then(function () {
|
|
607
688
|
var iframe = insertIframe(id, importerDisplay);
|
|
@@ -633,7 +714,19 @@ var useCsvPlugin = function (_a) {
|
|
|
633
714
|
var _a;
|
|
634
715
|
(_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a.classList.remove("loading");
|
|
635
716
|
// eslint-disable-next-line dot-notation
|
|
636
|
-
child["setParams"] &&
|
|
717
|
+
child["setParams"] &&
|
|
718
|
+
// eslint-disable-next-line dot-notation
|
|
719
|
+
child["setParams"]({
|
|
720
|
+
importerKey: importerKey,
|
|
721
|
+
user: user,
|
|
722
|
+
metadata: metadata,
|
|
723
|
+
importerDisplay: importerDisplay,
|
|
724
|
+
theme: theme,
|
|
725
|
+
batchSize: batchSize,
|
|
726
|
+
sampleFileURL: sampleFileURL,
|
|
727
|
+
downloadExampleButton: downloadExampleButton,
|
|
728
|
+
dynamicColumns: dynamicColumns,
|
|
729
|
+
});
|
|
637
730
|
});
|
|
638
731
|
return iframeConnection;
|
|
639
732
|
});
|
|
@@ -651,15 +744,16 @@ var script = /*#__PURE__*/Vue.extend({
|
|
|
651
744
|
onRecordEdit: {},
|
|
652
745
|
onClose: {},
|
|
653
746
|
theme: {},
|
|
654
|
-
batchSize: {}
|
|
747
|
+
batchSize: {},
|
|
748
|
+
sampleFileURL: {},
|
|
749
|
+
downloadExampleButton: {},
|
|
750
|
+
dynamicColumns: {}
|
|
655
751
|
},
|
|
656
|
-
|
|
657
752
|
data() {
|
|
658
753
|
return {
|
|
659
754
|
hasSlot: !!this.$slots.default
|
|
660
755
|
};
|
|
661
756
|
},
|
|
662
|
-
|
|
663
757
|
methods: {
|
|
664
758
|
openModal() {
|
|
665
759
|
useCsvPlugin({
|
|
@@ -672,14 +766,15 @@ var script = /*#__PURE__*/Vue.extend({
|
|
|
672
766
|
onRecordEdit: this.onRecordEdit,
|
|
673
767
|
onClose: this.onClose,
|
|
674
768
|
theme: this.theme,
|
|
675
|
-
batchSize: this.batchSize
|
|
769
|
+
batchSize: this.batchSize,
|
|
770
|
+
sampleFileURL: this.sampleFileURL,
|
|
771
|
+
downloadExampleButton: this.downloadExampleButton,
|
|
772
|
+
dynamicColumns: this.dynamicColumns
|
|
676
773
|
});
|
|
677
774
|
},
|
|
678
|
-
|
|
679
775
|
hasScopedSlot() {
|
|
680
776
|
return (this.$scopedSlots.default && this.$scopedSlots.default.name) === "normalized";
|
|
681
777
|
}
|
|
682
|
-
|
|
683
778
|
}
|
|
684
779
|
});
|
|
685
780
|
|
|
@@ -813,15 +908,12 @@ function addStyle(id, css) {
|
|
|
813
908
|
|
|
814
909
|
/* script */
|
|
815
910
|
const __vue_script__ = script;
|
|
816
|
-
/* template */
|
|
817
911
|
|
|
912
|
+
/* template */
|
|
818
913
|
var __vue_render__ = function () {
|
|
819
914
|
var _vm = this;
|
|
820
|
-
|
|
821
915
|
var _h = _vm.$createElement;
|
|
822
|
-
|
|
823
916
|
var _c = _vm._self._c || _h;
|
|
824
|
-
|
|
825
917
|
return _c('div', {
|
|
826
918
|
staticClass: "usecsv"
|
|
827
919
|
}, [_vm.hasScopedSlot() ? _c('div', [_vm._t("default", null, {
|
|
@@ -838,27 +930,22 @@ var __vue_render__ = function () {
|
|
|
838
930
|
return [_vm._v(" open usecsv ")];
|
|
839
931
|
})], 2)])]);
|
|
840
932
|
};
|
|
841
|
-
|
|
842
933
|
var __vue_staticRenderFns__ = [];
|
|
843
|
-
/* style */
|
|
844
934
|
|
|
935
|
+
/* style */
|
|
845
936
|
const __vue_inject_styles__ = function (inject) {
|
|
846
937
|
if (!inject) return;
|
|
847
|
-
inject("data-v-
|
|
848
|
-
source: "#usecsv-button[data-v-
|
|
938
|
+
inject("data-v-433de40e_0", {
|
|
939
|
+
source: "#usecsv-button[data-v-433de40e]{background-color:#fff;color:#000;border:2px solid #000;border-radius:6px;padding:10px 15px;text-align:center;font-size:16px;cursor:pointer}",
|
|
849
940
|
map: undefined,
|
|
850
941
|
media: undefined
|
|
851
942
|
});
|
|
852
943
|
};
|
|
853
944
|
/* scoped */
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
const __vue_scope_id__ = "data-v-5ce762cb";
|
|
945
|
+
const __vue_scope_id__ = "data-v-433de40e";
|
|
857
946
|
/* module identifier */
|
|
858
|
-
|
|
859
947
|
const __vue_module_identifier__ = undefined;
|
|
860
948
|
/* functional template */
|
|
861
|
-
|
|
862
949
|
const __vue_is_functional_template__ = false;
|
|
863
950
|
/* style inject SSR */
|
|
864
951
|
|
|
@@ -868,23 +955,22 @@ const __vue_component__ = /*#__PURE__*/normalizeComponent({
|
|
|
868
955
|
render: __vue_render__,
|
|
869
956
|
staticRenderFns: __vue_staticRenderFns__
|
|
870
957
|
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, createInjector, undefined, undefined);
|
|
871
|
-
|
|
872
958
|
var component = __vue_component__;
|
|
873
959
|
|
|
874
960
|
// Import vue component
|
|
961
|
+
// Default export is installable instance of component.
|
|
875
962
|
// IIFE injects install function into component, allowing component
|
|
876
963
|
// to be registered via Vue.use() as well as Vue.component(),
|
|
877
|
-
|
|
878
964
|
var entry_esm = /*#__PURE__*/(() => {
|
|
879
965
|
// Assign InstallableComponent type
|
|
880
|
-
const installable = component;
|
|
881
|
-
|
|
966
|
+
const installable = component;
|
|
967
|
+
// Attach install function executed by Vue.use()
|
|
882
968
|
installable.install = Vue => {
|
|
883
969
|
Vue.component('usecsv-button', installable);
|
|
884
970
|
};
|
|
885
|
-
|
|
886
971
|
return installable;
|
|
887
|
-
})();
|
|
972
|
+
})();
|
|
973
|
+
// It's possible to expose named exports when writing components that can
|
|
888
974
|
// also be used as directives, etc. - eg. import { RollupDemoDirective } from 'rollup-demo';
|
|
889
975
|
// export const RollupDemoDirective = directive;
|
|
890
976
|
|
package/dist/UseCSVButton.min.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
var UseCSVButton=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null
|
|
1
|
+
var UseCSVButton=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,s,a=[],c=!0,d=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(o=i.call(n)).done)&&(a.push(o.value),a.length!==t);c=!0);}catch(e){d=!0,r=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(d)throw r}}return a}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}
|
|
2
2
|
/*!
|
|
3
|
-
* @usecsv/js v0.
|
|
3
|
+
* @usecsv/js v0.14.0
|
|
4
4
|
* (c) layercode
|
|
5
5
|
* Released under the MIT License.
|
|
6
|
-
*/
|
|
7
|
-
/*! *****************************************************************************
|
|
8
|
-
Copyright (c) Microsoft Corporation.
|
|
9
|
-
|
|
10
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
11
|
-
purpose with or without fee is hereby granted.
|
|
12
|
-
|
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
14
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
15
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
16
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
17
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
18
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
19
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
20
|
-
***************************************************************************** */()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var i=function(){return i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},i.apply(this,arguments)},s=[],a=[];function c(e,t){if(t=t||{},void 0===e)throw new Error("insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).");var n,o=!0===t.prepend?"prepend":"append",r=void 0!==t.container?t.container:document.querySelector("head"),i=s.indexOf(r);return-1===i&&(i=s.push(r)-1,a[i]={}),void 0!==a[i]&&void 0!==a[i][o]?n=a[i][o]:(n=a[i][o]=function(){var e=document.createElement("style");return e.setAttribute("type","text/css"),e}(),"prepend"===o?r.insertBefore(n,r.childNodes[0]):r.appendChild(n)),65279===e.charCodeAt(0)&&(e=e.substr(1,e.length)),n.styleSheet?n.styleSheet.cssText+=e:n.textContent+=e,n}var d,l,u,m,p,f=c;c.insertCss=f,function(e){e.Call="call",e.Reply="reply",e.Syn="syn",e.SynAck="synAck",e.Ack="ack"}(d||(d={})),function(e){e.Fulfilled="fulfilled",e.Rejected="rejected"}(l||(l={})),function(e){e.ConnectionDestroyed="ConnectionDestroyed",e.ConnectionTimeout="ConnectionTimeout",e.NoIframeSrc="NoIframeSrc"}(u||(u={})),function(e){e.DataCloneError="DataCloneError"}(m||(m={})),function(e){e.Message="message"}(p||(p={}));const h={"http:":"80","https:":"443"},v=/^(https?:)?\/\/([^/:]+)?(:(\d+))?/,y=["file:","data:"];const g=({name:e,message:t,stack:n})=>({name:e,message:t,stack:n});let b=0;var C=()=>++b,S=(e,t,n,o,r)=>{const{localName:i,local:s,remote:a,originForSending:c,originForReceiving:m}=t;let f=!1;r(`${i}: Connecting call sender`);const h=e=>(...t)=>{let n;r(`${i}: Sending ${e}() call`);try{a.closed&&(n=!0)}catch(e){n=!0}if(n&&o(),f){const t=new Error(`Unable to send ${e}() call due to destroyed connection`);throw t.code=u.ConnectionDestroyed,t}return new Promise(((n,o)=>{const u=C(),f=t=>{if(t.source!==a||t.data.penpal!==d.Reply||t.data.id!==u)return;if(t.origin!==m)return void r(`${i} received message from origin ${t.origin} which did not match expected origin ${m}`);const c=t.data;r(`${i}: Received ${e}() reply`),s.removeEventListener(p.Message,f);let h=c.returnValue;c.returnValueIsError&&(h=(e=>{const t=new Error;return Object.keys(e).forEach((n=>t[n]=e[n])),t})(h)),(c.resolution===l.Fulfilled?n:o)(h)};s.addEventListener(p.Message,f);const h={penpal:d.Call,id:u,methodName:e,args:t};a.postMessage(h,c)}))};return n.reduce(((e,t)=>(e[t]=h(t),e)),e),()=>{f=!0}},w=(e,t,n,o,r)=>{const{destroy:i,onDestroy:s}=o;let a,c;const u={};return o=>{if(o.origin!==t)return void r(`Parent: Handshake - Received ACK message from origin ${o.origin} which did not match expected origin ${t}`);r("Parent: Handshake - Received ACK");const f={localName:"Parent",local:window,remote:o.source,originForSending:n,originForReceiving:t};a&&a(),a=((e,t,n)=>{const{localName:o,local:r,remote:i,originForSending:s,originForReceiving:a}=e;let c=!1;const u=e=>{if(e.source!==i||e.data.penpal!==d.Call)return;if(e.origin!==a)return void n(`${o} received message from origin ${e.origin} which did not match expected origin ${a}`);const r=e.data,{methodName:u,args:p,id:f}=r;n(`${o}: Received ${u}() call`);const h=e=>t=>{if(n(`${o}: Sending ${u}() reply`),c)return void n(`${o}: Unable to send ${u}() reply due to destroyed connection`);const r={penpal:d.Reply,id:f,resolution:e,returnValue:t};e===l.Rejected&&t instanceof Error&&(r.returnValue=g(t),r.returnValueIsError=!0);try{i.postMessage(r,s)}catch(e){if(e.name===m.DataCloneError){const t={penpal:d.Reply,id:f,resolution:l.Rejected,returnValue:g(e),returnValueIsError:!0};i.postMessage(t,s)}throw e}};new Promise((e=>e(t[u].apply(t,p)))).then(h(l.Fulfilled),h(l.Rejected))};return r.addEventListener(p.Message,u),()=>{c=!0,r.removeEventListener(p.Message,u)}})(f,e,r),s(a),c&&c.forEach((e=>{delete u[e]})),c=o.data.methodNames;const h=S(u,f,c,i,r);return s(h),u}};var E=e=>{let{iframe:t,methods:n={},childOrigin:o,timeout:r,debug:i=!1}=e;const s=(e=>(...t)=>{e&&console.log("[Penpal]",...t)})(i),a=((e,t)=>{const n=[];let o=!1;return{destroy(r){o||(o=!0,t(`${e}: Destroying connection`),n.forEach((e=>{e(r)})))},onDestroy(e){o?e():n.push(e)}}})("Parent",s),{onDestroy:c,destroy:l}=a;o||((e=>{if(!e.src&&!e.srcdoc){const e=new Error("Iframe must have src or srcdoc property defined.");throw e.code=u.NoIframeSrc,e}})(t),o=(e=>{if(e&&y.find((t=>e.startsWith(t))))return"null";const t=document.location,n=v.exec(e);let o,r,i;return n?(o=n[1]?n[1]:t.protocol,r=n[2],i=n[4]):(o=t.protocol,r=t.hostname,i=t.port),`${o}//${r}${i&&i!==h[o]?`:${i}`:""}`})(t.src));const m="null"===o?"*":o,f=((e,t,n,o)=>r=>{if(r.origin!==n)return void e(`Parent: Handshake - Received SYN message from origin ${r.origin} which did not match expected origin ${n}`);e("Parent: Handshake - Received SYN, responding with SYN-ACK");const i={penpal:d.SynAck,methodNames:Object.keys(t)};r.source.postMessage(i,o)})(s,n,o,m),g=w(n,o,m,a,s),b=new Promise(((e,n)=>{const o=((e,t)=>{let n;return void 0!==e&&(n=window.setTimeout((()=>{const n=new Error(`Connection timed out after ${e}ms`);n.code=u.ConnectionTimeout,t(n)}),e)),()=>{clearTimeout(n)}})(r,l),i=n=>{if(n.source===t.contentWindow&&n.data)if(n.data.penpal!==d.Syn)if(n.data.penpal!==d.Ack);else{const t=g(n);t&&(o(),e(t))}else f(n)};window.addEventListener(p.Message,i),s("Parent: Awaiting handshake"),((e,t)=>{const{destroy:n,onDestroy:o}=t,r=setInterval((()=>{e.isConnected||(clearInterval(r),n())}),6e4);o((()=>{clearInterval(r)}))})(t,a),c((e=>{window.removeEventListener(p.Message,i),e&&n(e)}))}));return{promise:b,destroy(){l()}}},$=["interactive","complete"],R=function(e,t){return new Promise((function(n){e&&"function"!=typeof e&&(t=e,e=null),t=t||window.document;var o=function(){return n(void(e&&setTimeout(e)))};-1!==$.indexOf(t.readyState)?o():t.addEventListener("DOMContentLoaded",o)}))};R.resume=function(e){return function(t){return R(e).then((function(){return t}))}};var _=function(e){var t=e.importerKey,n=e.user,o=e.metadata,r=e.onData,s=e.onRecordsInitial,a=e.onRecordEdit,c=e.importerDisplay,d=void 0===c?"modal":c,l=e.onClose,u=e.theme,m=e.batchSize,p="usecsv-".concat(Math.round(1e8*Math.random()));return R().then((function(){var e=function(e,t){var n=document.getElementById("usecsv-importer-inline-wrapper");f("\n ".concat("modal"!==t&&n?"":".usecsv_container { position: fixed; top: 0px; bottom: 0; right: 0; left: 0; z-index: 100000; }","\n .usecsv_container iframe {\n width: 100%;\n height: 100%;\n position: absolute;\n border-width: 0;\n }\n .usecsv_container {\n overflow: hidden;\n overscroll-behavior-x: none;\n }\n")),document.body.insertAdjacentHTML("beforeend","<div id=".concat(e,' class="usecsv_container loading"></div>'));var o=document.createElement("iframe");o.setAttribute("src","https://app.usecsv.com/importer");var r=document.getElementById(e);return null==r||r.appendChild(o),"inline"===t&&n&&(null==n||n.appendChild(r)),o}(p,d),c=function(){var e;null===(e=document.getElementById(p))||void 0===e||e.remove()},h=E({iframe:e,methods:i(i(i(i({closeIframe:c},r?{onData:function(e){return r(e,c)}}:{}),s?{onRecordsInitial:s}:{}),a?{onRecordEdit:a}:{}),l?{onClose:l}:{})});return h.promise.then((function(e){var r;null===(r=document.getElementById(p))||void 0===r||r.classList.remove("loading"),e.setParams&&e.setParams({importerKey:t,user:n,metadata:o,importerDisplay:d,theme:u,batchSize:m})})),h}))},x=n.default.extend({name:"usecsv-button",props:{importerKey:{},user:{},metadata:{},onData:{},importerDisplay:{},onRecordsInitial:{},onRecordEdit:{},onClose:{},theme:{},batchSize:{}},data:function(){return{hasSlot:!!this.$slots.default}},methods:{openModal:function(){_({importerKey:this.importerKey,user:this.user,metadata:this.metadata,onData:this.onData,importerDisplay:this.importerDisplay,onRecordsInitial:this.onRecordsInitial,onRecordEdit:this.onRecordEdit,onClose:this.onClose,theme:this.theme,batchSize:this.batchSize})},hasScopedSlot:function(){return"normalized"===(this.$scopedSlots.default&&this.$scopedSlots.default.name)}}});function I(e,t,n,o,r,i,s,a,c,d){"boolean"!=typeof s&&(c=a,a=s,s=!1);const l="function"==typeof n?n.options:n;let u;if(e&&e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0,r&&(l.functional=!0)),o&&(l._scopeId=o),i?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,c(e)),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=u):t&&(u=s?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),u)if(l.functional){const e=l.render;l.render=function(t,n){return u.call(n),e(t,n)}}else{const e=l.beforeCreate;l.beforeCreate=e?[].concat(e,u):[u]}return n}const D="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function A(e){return(e,t)=>function(e,t){const n=D?t.media||"default":e,o=N[n]||(N[n]={ids:new Set,styles:[]});if(!o.ids.has(e)){o.ids.add(e);let n=t.source;if(t.map&&(n+="\n/*# sourceURL="+t.map.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),o.element||(o.element=document.createElement("style"),o.element.type="text/css",t.media&&o.element.setAttribute("media",t.media),void 0===M&&(M=document.head||document.getElementsByTagName("head")[0]),M.appendChild(o.element)),"styleSheet"in o.element)o.styles.push(n),o.element.styleSheet.cssText=o.styles.filter(Boolean).join("\n");else{const e=o.ids.size-1,t=document.createTextNode(n),r=o.element.childNodes;r[e]&&o.element.removeChild(r[e]),r.length?o.element.insertBefore(t,r[e]):o.element.appendChild(t)}}}(e,t)}let M;const N={};var j=I({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"usecsv"},[e.hasScopedSlot()?n("div",[e._t("default",null,{openModal:e.openModal})],2):n("div",[n("button",{attrs:{type:"button",id:"usecsv-button"},on:{click:e.openModal}},[e._t("default",(function(){return[e._v(" open usecsv ")]}))],2)])])},staticRenderFns:[]},(function(e){e&&e("data-v-5ce762cb_0",{source:"#usecsv-button[data-v-5ce762cb]{background-color:#fff;color:#000;border:2px solid #000;border-radius:6px;padding:10px 15px;text-align:center;font-size:16px;cursor:pointer}",map:void 0,media:void 0})}),x,"data-v-5ce762cb",false,undefined,!1,A,void 0,void 0),k=function(){var e=j;return e.install=function(t){t.component("usecsv-button",e)},e}(),O=Object.freeze({__proto__:null,default:k});return Object.entries(O).forEach((function(e){var t=o(e,2),n=t[0],r=t[1];"default"!==n&&(k[n]=r)})),k}(Vue);
|
|
6
|
+
*/()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var i=function(){return i=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},i.apply(this,arguments)},s=[],a=[];function c(e,t){if(t=t||{},void 0===e)throw new Error("insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).");var n,o=!0===t.prepend?"prepend":"append",r=void 0!==t.container?t.container:document.querySelector("head"),i=s.indexOf(r);return-1===i&&(i=s.push(r)-1,a[i]={}),void 0!==a[i]&&void 0!==a[i][o]?n=a[i][o]:(n=a[i][o]=function(){var e=document.createElement("style");return e.setAttribute("type","text/css"),e}(),"prepend"===o?r.insertBefore(n,r.childNodes[0]):r.appendChild(n)),65279===e.charCodeAt(0)&&(e=e.substr(1,e.length)),n.styleSheet?n.styleSheet.cssText+=e:n.textContent+=e,n}var d,l,u,m,p,f=c;c.insertCss=f,function(e){e.Call="call",e.Reply="reply",e.Syn="syn",e.SynAck="synAck",e.Ack="ack"}(d||(d={})),function(e){e.Fulfilled="fulfilled",e.Rejected="rejected"}(l||(l={})),function(e){e.ConnectionDestroyed="ConnectionDestroyed",e.ConnectionTimeout="ConnectionTimeout",e.NoIframeSrc="NoIframeSrc"}(u||(u={})),function(e){e.DataCloneError="DataCloneError"}(m||(m={})),function(e){e.Message="message"}(p||(p={}));const h={"http:":"80","https:":"443"},v=/^(https?:)?\/\/([^/:]+)?(:(\d+))?/,y=["file:","data:"];const g=({name:e,message:t,stack:n})=>({name:e,message:t,stack:n});let b=0;var C=()=>++b;const E=e=>e?e.split("."):[],S=(e,t,n)=>{const o=E(t);return o.reduce(((e,t,r)=>(void 0===e[t]&&(e[t]={}),r===o.length-1&&(e[t]=n),e[t])),e),e},w=(e,t)=>{const n={};return Object.keys(e).forEach((o=>{const r=e[o],i=((e,t)=>{const n=E(t||"");return n.push(e),(e=>e.join("."))(n)})(o,t);"object"==typeof r&&Object.assign(n,w(r,i)),"function"==typeof r&&(n[i]=r)})),n};var R=(e,t,n,o,r)=>{const{localName:i,local:s,remote:a,originForSending:c,originForReceiving:m}=t;let f=!1;r(`${i}: Connecting call sender`);const h=e=>(...t)=>{let n;r(`${i}: Sending ${e}() call`);try{a.closed&&(n=!0)}catch(e){n=!0}if(n&&o(),f){const t=new Error(`Unable to send ${e}() call due to destroyed connection`);throw t.code=u.ConnectionDestroyed,t}return new Promise(((n,o)=>{const u=C(),f=t=>{if(t.source!==a||t.data.penpal!==d.Reply||t.data.id!==u)return;if("*"!==m&&t.origin!==m)return void r(`${i} received message from origin ${t.origin} which did not match expected origin ${m}`);const c=t.data;r(`${i}: Received ${e}() reply`),s.removeEventListener(p.Message,f);let h=c.returnValue;c.returnValueIsError&&(h=(e=>{const t=new Error;return Object.keys(e).forEach((n=>t[n]=e[n])),t})(h)),(c.resolution===l.Fulfilled?n:o)(h)};s.addEventListener(p.Message,f);const h={penpal:d.Call,id:u,methodName:e,args:t};a.postMessage(h,c)}))},v=n.reduce(((e,t)=>(e[t]=h(t),e)),{});return Object.assign(e,(e=>{const t={};for(const n in e)S(t,n,e[n]);return t})(v)),()=>{f=!0}},$=(e,t,n,o,r)=>{const{destroy:i,onDestroy:s}=o;let a,c;const u={};return o=>{if("*"!==t&&o.origin!==t)return void r(`Parent: Handshake - Received ACK message from origin ${o.origin} which did not match expected origin ${t}`);r("Parent: Handshake - Received ACK");const f={localName:"Parent",local:window,remote:o.source,originForSending:n,originForReceiving:t};a&&a(),a=((e,t,n)=>{const{localName:o,local:r,remote:i,originForSending:s,originForReceiving:a}=e;let c=!1;const u=e=>{if(e.source!==i||e.data.penpal!==d.Call)return;if("*"!==a&&e.origin!==a)return void n(`${o} received message from origin ${e.origin} which did not match expected origin ${a}`);const r=e.data,{methodName:u,args:p,id:f}=r;n(`${o}: Received ${u}() call`);const h=e=>t=>{if(n(`${o}: Sending ${u}() reply`),c)return void n(`${o}: Unable to send ${u}() reply due to destroyed connection`);const r={penpal:d.Reply,id:f,resolution:e,returnValue:t};e===l.Rejected&&t instanceof Error&&(r.returnValue=g(t),r.returnValueIsError=!0);try{i.postMessage(r,s)}catch(e){if(e.name===m.DataCloneError){const t={penpal:d.Reply,id:f,resolution:l.Rejected,returnValue:g(e),returnValueIsError:!0};i.postMessage(t,s)}throw e}};new Promise((e=>e(t[u].apply(t,p)))).then(h(l.Fulfilled),h(l.Rejected))};return r.addEventListener(p.Message,u),()=>{c=!0,r.removeEventListener(p.Message,u)}})(f,e,r),s(a),c&&c.forEach((e=>{delete u[e]})),c=o.data.methodNames;const h=R(u,f,c,i,r);return s(h),u}};var x=e=>{let{iframe:t,methods:n={},childOrigin:o,timeout:r,debug:i=!1}=e;const s=(e=>(...t)=>{e&&console.log("[Penpal]",...t)})(i),a=((e,t)=>{const n=[];let o=!1;return{destroy(r){o||(o=!0,t(`${e}: Destroying connection`),n.forEach((e=>{e(r)})))},onDestroy(e){o?e():n.push(e)}}})("Parent",s),{onDestroy:c,destroy:l}=a;o||((e=>{if(!e.src&&!e.srcdoc){const e=new Error("Iframe must have src or srcdoc property defined.");throw e.code=u.NoIframeSrc,e}})(t),o=(e=>{if(e&&y.find((t=>e.startsWith(t))))return"null";const t=document.location,n=v.exec(e);let o,r,i;return n?(o=n[1]?n[1]:t.protocol,r=n[2],i=n[4]):(o=t.protocol,r=t.hostname,i=t.port),`${o}//${r}${i&&i!==h[o]?`:${i}`:""}`})(t.src));const m="null"===o?"*":o,f=w(n),g=((e,t,n,o)=>r=>{if(!r.source)return;if("*"!==n&&r.origin!==n)return void e(`Parent: Handshake - Received SYN message from origin ${r.origin} which did not match expected origin ${n}`);e("Parent: Handshake - Received SYN, responding with SYN-ACK");const i={penpal:d.SynAck,methodNames:Object.keys(t)};r.source.postMessage(i,o)})(s,f,o,m),b=$(f,o,m,a,s),C=new Promise(((e,n)=>{const o=((e,t)=>{let n;return void 0!==e&&(n=window.setTimeout((()=>{const n=new Error(`Connection timed out after ${e}ms`);n.code=u.ConnectionTimeout,t(n)}),e)),()=>{clearTimeout(n)}})(r,l),i=n=>{if(n.source===t.contentWindow&&n.data)if(n.data.penpal!==d.Syn)if(n.data.penpal!==d.Ack);else{const t=b(n);t&&(o(),e(t))}else g(n)};window.addEventListener(p.Message,i),s("Parent: Awaiting handshake"),((e,t)=>{const{destroy:n,onDestroy:o}=t,r=setInterval((()=>{e.isConnected||(clearInterval(r),n())}),6e4);o((()=>{clearInterval(r)}))})(t,a),c((e=>{window.removeEventListener(p.Message,i),e&&n(e)}))}));return{promise:C,destroy(){l()}}},_=["interactive","complete"],j=function(e,t){return new Promise((function(n){e&&"function"!=typeof e&&(t=e,e=null),t=t||window.document;var o=function(){return n(void(e&&setTimeout(e)))};-1!==_.indexOf(t.readyState)?o():t.addEventListener("DOMContentLoaded",o)}))};j.resume=function(e){return function(t){return j(e).then((function(){return t}))}};var I=function(e){var t=e.importerKey,n=e.user,o=e.metadata,r=e.onData,s=e.onRecordsInitial,a=e.onRecordEdit,c=e.importerDisplay,d=void 0===c?"modal":c,l=e.onClose,u=e.theme,m=e.batchSize,p=e.sampleFileURL,h=e.downloadExampleButton,v=void 0===h||h,y=e.dynamicColumns,g="usecsv-".concat(Math.round(1e8*Math.random()));return j().then((function(){var e=function(e,t){var n=document.getElementById("usecsv-importer-inline-wrapper");f("\n ".concat("modal"!==t&&n?"":".usecsv_container { position: fixed; top: 0px; bottom: 0; right: 0; left: 0; z-index: 100000; }","\n .usecsv_container iframe {\n width: 100%;\n height: 100%;\n position: absolute;\n border-width: 0;\n }\n .usecsv_container {\n overflow: hidden;\n overscroll-behavior-x: none;\n }\n")),document.body.insertAdjacentHTML("beforeend","<div id=".concat(e,' class="usecsv_container loading"></div>'));var o=document.createElement("iframe");o.setAttribute("src","https://app.usecsv.com/importer");var r=document.getElementById(e);return null==r||r.appendChild(o),"inline"===t&&n&&(null==n||n.appendChild(r)),o}(g,d),c=function(){var e;null===(e=document.getElementById(g))||void 0===e||e.remove()},h=x({iframe:e,methods:i(i(i(i({closeIframe:c},r?{onData:function(e){return r(e,c)}}:{}),s?{onRecordsInitial:s}:{}),a?{onRecordEdit:a}:{}),l?{onClose:l}:{})});return h.promise.then((function(e){var r;null===(r=document.getElementById(g))||void 0===r||r.classList.remove("loading"),e.setParams&&e.setParams({importerKey:t,user:n,metadata:o,importerDisplay:d,theme:u,batchSize:m,sampleFileURL:p,downloadExampleButton:v,dynamicColumns:y})})),h}))},D=n.default.extend({name:"usecsv-button",props:{importerKey:{},user:{},metadata:{},onData:{},importerDisplay:{},onRecordsInitial:{},onRecordEdit:{},onClose:{},theme:{},batchSize:{},sampleFileURL:{},downloadExampleButton:{},dynamicColumns:{}},data:function(){return{hasSlot:!!this.$slots.default}},methods:{openModal:function(){I({importerKey:this.importerKey,user:this.user,metadata:this.metadata,onData:this.onData,importerDisplay:this.importerDisplay,onRecordsInitial:this.onRecordsInitial,onRecordEdit:this.onRecordEdit,onClose:this.onClose,theme:this.theme,batchSize:this.batchSize,sampleFileURL:this.sampleFileURL,downloadExampleButton:this.downloadExampleButton,dynamicColumns:this.dynamicColumns})},hasScopedSlot:function(){return"normalized"===(this.$scopedSlots.default&&this.$scopedSlots.default.name)}}});function A(e,t,n,o,r,i,s,a,c,d){"boolean"!=typeof s&&(c=a,a=s,s=!1);const l="function"==typeof n?n.options:n;let u;if(e&&e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0,r&&(l.functional=!0)),o&&(l._scopeId=o),i?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,c(e)),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=u):t&&(u=s?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),u)if(l.functional){const e=l.render;l.render=function(t,n){return u.call(n),e(t,n)}}else{const e=l.beforeCreate;l.beforeCreate=e?[].concat(e,u):[u]}return n}const M="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function O(e){return(e,t)=>function(e,t){const n=M?t.media||"default":e,o=k[n]||(k[n]={ids:new Set,styles:[]});if(!o.ids.has(e)){o.ids.add(e);let n=t.source;if(t.map&&(n+="\n/*# sourceURL="+t.map.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),o.element||(o.element=document.createElement("style"),o.element.type="text/css",t.media&&o.element.setAttribute("media",t.media),void 0===N&&(N=document.head||document.getElementsByTagName("head")[0]),N.appendChild(o.element)),"styleSheet"in o.element)o.styles.push(n),o.element.styleSheet.cssText=o.styles.filter(Boolean).join("\n");else{const e=o.ids.size-1,t=document.createTextNode(n),r=o.element.childNodes;r[e]&&o.element.removeChild(r[e]),r.length?o.element.insertBefore(t,r[e]):o.element.appendChild(t)}}}(e,t)}let N;const k={};var L=A({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"usecsv"},[e.hasScopedSlot()?n("div",[e._t("default",null,{openModal:e.openModal})],2):n("div",[n("button",{attrs:{type:"button",id:"usecsv-button"},on:{click:e.openModal}},[e._t("default",(function(){return[e._v(" open usecsv ")]}))],2)])])},staticRenderFns:[]},(function(e){e&&e("data-v-433de40e_0",{source:"#usecsv-button[data-v-433de40e]{background-color:#fff;color:#000;border:2px solid #000;border-radius:6px;padding:10px 15px;text-align:center;font-size:16px;cursor:pointer}",map:void 0,media:void 0})}),D,"data-v-433de40e",false,undefined,!1,O,void 0,void 0),F=function(){var e=L;return e.install=function(t){t.component("usecsv-button",e)},e}(),T=Object.freeze({__proto__:null,default:F});return Object.entries(T).forEach((function(e){var t=o(e,2),n=t[0],r=t[1];"default"!==n&&(F[n]=r)})),F}(Vue);
|
package/dist/UseCSVButton.ssr.js
CHANGED
|
@@ -1,41 +1,36 @@
|
|
|
1
|
-
'use strict';var Vue=require('vue');function _interopDefaultLegacy(e){return e&&typeof e==='object'&&'default'in e?e:{'default':e}}var Vue__default=/*#__PURE__*/_interopDefaultLegacy(Vue);function
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (_i == null) return;
|
|
13
|
-
var _arr = [];
|
|
14
|
-
var _n = true;
|
|
15
|
-
var _d = false;
|
|
16
|
-
|
|
17
|
-
var _s, _e;
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
21
|
-
_arr.push(_s.value);
|
|
22
|
-
|
|
23
|
-
if (i && _arr.length === i) break;
|
|
24
|
-
}
|
|
25
|
-
} catch (err) {
|
|
26
|
-
_d = true;
|
|
27
|
-
_e = err;
|
|
28
|
-
} finally {
|
|
1
|
+
'use strict';var Vue=require('vue');function _interopDefaultLegacy(e){return e&&typeof e==='object'&&'default'in e?e:{'default':e}}var Vue__default=/*#__PURE__*/_interopDefaultLegacy(Vue);function _iterableToArrayLimit(arr, i) {
|
|
2
|
+
var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
|
|
3
|
+
if (null != _i) {
|
|
4
|
+
var _s,
|
|
5
|
+
_e,
|
|
6
|
+
_x,
|
|
7
|
+
_r,
|
|
8
|
+
_arr = [],
|
|
9
|
+
_n = !0,
|
|
10
|
+
_d = !1;
|
|
29
11
|
try {
|
|
30
|
-
if (
|
|
12
|
+
if (_x = (_i = _i.call(arr)).next, 0 === i) {
|
|
13
|
+
if (Object(_i) !== _i) return;
|
|
14
|
+
_n = !1;
|
|
15
|
+
} else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
_d = !0, _e = err;
|
|
31
18
|
} finally {
|
|
32
|
-
|
|
19
|
+
try {
|
|
20
|
+
if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
|
|
21
|
+
} finally {
|
|
22
|
+
if (_d) throw _e;
|
|
23
|
+
}
|
|
33
24
|
}
|
|
25
|
+
return _arr;
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
return _arr;
|
|
37
27
|
}
|
|
38
|
-
|
|
28
|
+
function _slicedToArray(arr, i) {
|
|
29
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
30
|
+
}
|
|
31
|
+
function _arrayWithHoles(arr) {
|
|
32
|
+
if (Array.isArray(arr)) return arr;
|
|
33
|
+
}
|
|
39
34
|
function _unsupportedIterableToArray(o, minLen) {
|
|
40
35
|
if (!o) return;
|
|
41
36
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
@@ -44,24 +39,20 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
|
44
39
|
if (n === "Map" || n === "Set") return Array.from(o);
|
|
45
40
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
46
41
|
}
|
|
47
|
-
|
|
48
42
|
function _arrayLikeToArray(arr, len) {
|
|
49
43
|
if (len == null || len > arr.length) len = arr.length;
|
|
50
|
-
|
|
51
44
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
52
|
-
|
|
53
45
|
return arr2;
|
|
54
46
|
}
|
|
55
|
-
|
|
56
47
|
function _nonIterableRest() {
|
|
57
48
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
58
49
|
}/*!
|
|
59
|
-
* @usecsv/js v0.
|
|
50
|
+
* @usecsv/js v0.14.0
|
|
60
51
|
* (c) layercode
|
|
61
52
|
* Released under the MIT License.
|
|
62
53
|
*/
|
|
63
54
|
|
|
64
|
-
|
|
55
|
+
/******************************************************************************
|
|
65
56
|
Copyright (c) Microsoft Corporation.
|
|
66
57
|
|
|
67
58
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -269,14 +260,14 @@ const deserializeError = (obj) => {
|
|
|
269
260
|
* Listens for "call" messages coming from the remote, executes the corresponding method, and
|
|
270
261
|
* responds with the return value.
|
|
271
262
|
*/
|
|
272
|
-
var connectCallReceiver = (info,
|
|
263
|
+
var connectCallReceiver = (info, serializedMethods, log) => {
|
|
273
264
|
const { localName, local, remote, originForSending, originForReceiving, } = info;
|
|
274
265
|
let destroyed = false;
|
|
275
266
|
const handleMessageEvent = (event) => {
|
|
276
267
|
if (event.source !== remote || event.data.penpal !== MessageType.Call) {
|
|
277
268
|
return;
|
|
278
269
|
}
|
|
279
|
-
if (event.origin !== originForReceiving) {
|
|
270
|
+
if (originForReceiving !== '*' && event.origin !== originForReceiving) {
|
|
280
271
|
log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);
|
|
281
272
|
return;
|
|
282
273
|
}
|
|
@@ -326,7 +317,7 @@ var connectCallReceiver = (info, methods, log) => {
|
|
|
326
317
|
}
|
|
327
318
|
};
|
|
328
319
|
};
|
|
329
|
-
new Promise((resolve) => resolve(
|
|
320
|
+
new Promise((resolve) => resolve(serializedMethods[methodName].apply(serializedMethods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));
|
|
330
321
|
};
|
|
331
322
|
local.addEventListener(NativeEventType.Message, handleMessageEvent);
|
|
332
323
|
return () => {
|
|
@@ -341,18 +332,86 @@ let id = 0;
|
|
|
341
332
|
*/
|
|
342
333
|
var generateId = () => ++id;
|
|
343
334
|
|
|
335
|
+
const KEY_PATH_DELIMITER = '.';
|
|
336
|
+
const keyPathToSegments = (keyPath) => keyPath ? keyPath.split(KEY_PATH_DELIMITER) : [];
|
|
337
|
+
const segmentsToKeyPath = (segments) => segments.join(KEY_PATH_DELIMITER);
|
|
338
|
+
const createKeyPath = (key, prefix) => {
|
|
339
|
+
const segments = keyPathToSegments(prefix || '');
|
|
340
|
+
segments.push(key);
|
|
341
|
+
return segmentsToKeyPath(segments);
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Given a `keyPath`, set it to be `value` on `subject`, creating any intermediate
|
|
345
|
+
* objects along the way.
|
|
346
|
+
*
|
|
347
|
+
* @param {Object} subject The object on which to set value.
|
|
348
|
+
* @param {string} keyPath The key path at which to set value.
|
|
349
|
+
* @param {Object} value The value to store at the given key path.
|
|
350
|
+
* @returns {Object} Updated subject.
|
|
351
|
+
*/
|
|
352
|
+
const setAtKeyPath = (subject, keyPath, value) => {
|
|
353
|
+
const segments = keyPathToSegments(keyPath);
|
|
354
|
+
segments.reduce((prevSubject, key, idx) => {
|
|
355
|
+
if (typeof prevSubject[key] === 'undefined') {
|
|
356
|
+
prevSubject[key] = {};
|
|
357
|
+
}
|
|
358
|
+
if (idx === segments.length - 1) {
|
|
359
|
+
prevSubject[key] = value;
|
|
360
|
+
}
|
|
361
|
+
return prevSubject[key];
|
|
362
|
+
}, subject);
|
|
363
|
+
return subject;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Given a dictionary of (nested) keys to function, flatten them to a map
|
|
367
|
+
* from key path to function.
|
|
368
|
+
*
|
|
369
|
+
* @param {Object} methods The (potentially nested) object to serialize.
|
|
370
|
+
* @param {string} prefix A string with which to prefix entries. Typically not intended to be used by consumers.
|
|
371
|
+
* @returns {Object} An map from key path in `methods` to functions.
|
|
372
|
+
*/
|
|
373
|
+
const serializeMethods = (methods, prefix) => {
|
|
374
|
+
const flattenedMethods = {};
|
|
375
|
+
Object.keys(methods).forEach((key) => {
|
|
376
|
+
const value = methods[key];
|
|
377
|
+
const keyPath = createKeyPath(key, prefix);
|
|
378
|
+
if (typeof value === 'object') {
|
|
379
|
+
// Recurse into any nested children.
|
|
380
|
+
Object.assign(flattenedMethods, serializeMethods(value, keyPath));
|
|
381
|
+
}
|
|
382
|
+
if (typeof value === 'function') {
|
|
383
|
+
// If we've found a method, expose it.
|
|
384
|
+
flattenedMethods[keyPath] = value;
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
return flattenedMethods;
|
|
388
|
+
};
|
|
389
|
+
/**
|
|
390
|
+
* Given a map of key paths to functions, unpack the key paths to an object.
|
|
391
|
+
*
|
|
392
|
+
* @param {Object} flattenedMethods A map of key paths to functions to unpack.
|
|
393
|
+
* @returns {Object} A (potentially nested) map of functions.
|
|
394
|
+
*/
|
|
395
|
+
const deserializeMethods = (flattenedMethods) => {
|
|
396
|
+
const methods = {};
|
|
397
|
+
for (const keyPath in flattenedMethods) {
|
|
398
|
+
setAtKeyPath(methods, keyPath, flattenedMethods[keyPath]);
|
|
399
|
+
}
|
|
400
|
+
return methods;
|
|
401
|
+
};
|
|
402
|
+
|
|
344
403
|
/**
|
|
345
404
|
* Augments an object with methods that match those defined by the remote. When these methods are
|
|
346
405
|
* called, a "call" message will be sent to the remote, the remote's corresponding method will be
|
|
347
406
|
* executed, and the method's return value will be returned via a message.
|
|
348
407
|
* @param {Object} callSender Sender object that should be augmented with methods.
|
|
349
408
|
* @param {Object} info Information about the local and remote windows.
|
|
350
|
-
* @param {Array}
|
|
409
|
+
* @param {Array} methodKeyPaths Key paths of methods available to be called on the remote.
|
|
351
410
|
* @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal
|
|
352
411
|
* connection.
|
|
353
412
|
* @returns {Object} The call sender object with methods that may be called.
|
|
354
413
|
*/
|
|
355
|
-
var connectCallSender = (callSender, info,
|
|
414
|
+
var connectCallSender = (callSender, info, methodKeyPaths, destroyConnection, log) => {
|
|
356
415
|
const { localName, local, remote, originForSending, originForReceiving, } = info;
|
|
357
416
|
let destroyed = false;
|
|
358
417
|
log(`${localName}: Connecting call sender`);
|
|
@@ -393,7 +452,8 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
393
452
|
event.data.id !== id) {
|
|
394
453
|
return;
|
|
395
454
|
}
|
|
396
|
-
if (
|
|
455
|
+
if (originForReceiving !== '*' &&
|
|
456
|
+
event.origin !== originForReceiving) {
|
|
397
457
|
log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);
|
|
398
458
|
return;
|
|
399
459
|
}
|
|
@@ -417,10 +477,14 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
417
477
|
});
|
|
418
478
|
};
|
|
419
479
|
};
|
|
420
|
-
|
|
421
|
-
|
|
480
|
+
// Wrap each method in a proxy which sends it to the corresponding receiver.
|
|
481
|
+
const flattenedMethods = methodKeyPaths.reduce((api, name) => {
|
|
482
|
+
api[name] = createMethodProxy(name);
|
|
422
483
|
return api;
|
|
423
|
-
},
|
|
484
|
+
}, {});
|
|
485
|
+
// Unpack the structure of the provided methods object onto the CallSender, exposing
|
|
486
|
+
// the methods in the same shape they were provided.
|
|
487
|
+
Object.assign(callSender, deserializeMethods(flattenedMethods));
|
|
424
488
|
return () => {
|
|
425
489
|
destroyed = true;
|
|
426
490
|
};
|
|
@@ -429,7 +493,7 @@ var connectCallSender = (callSender, info, methodNames, destroyConnection, log)
|
|
|
429
493
|
/**
|
|
430
494
|
* Handles an ACK handshake message.
|
|
431
495
|
*/
|
|
432
|
-
var handleAckMessageFactory = (
|
|
496
|
+
var handleAckMessageFactory = (serializedMethods, childOrigin, originForSending, destructor, log) => {
|
|
433
497
|
const { destroy, onDestroy } = destructor;
|
|
434
498
|
let destroyCallReceiver;
|
|
435
499
|
let receiverMethodNames;
|
|
@@ -439,7 +503,7 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
439
503
|
// latest provided by the child.
|
|
440
504
|
const callSender = {};
|
|
441
505
|
return (event) => {
|
|
442
|
-
if (event.origin !== childOrigin) {
|
|
506
|
+
if (childOrigin !== '*' && event.origin !== childOrigin) {
|
|
443
507
|
log(`Parent: Handshake - Received ACK message from origin ${event.origin} which did not match expected origin ${childOrigin}`);
|
|
444
508
|
return;
|
|
445
509
|
}
|
|
@@ -456,7 +520,7 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
456
520
|
if (destroyCallReceiver) {
|
|
457
521
|
destroyCallReceiver();
|
|
458
522
|
}
|
|
459
|
-
destroyCallReceiver = connectCallReceiver(info,
|
|
523
|
+
destroyCallReceiver = connectCallReceiver(info, serializedMethods, log);
|
|
460
524
|
onDestroy(destroyCallReceiver);
|
|
461
525
|
// If the child reconnected, we need to remove the methods from the
|
|
462
526
|
// previous call receiver off the sender.
|
|
@@ -475,16 +539,23 @@ var handleAckMessageFactory = (methods, childOrigin, originForSending, destructo
|
|
|
475
539
|
/**
|
|
476
540
|
* Handles a SYN handshake message.
|
|
477
541
|
*/
|
|
478
|
-
var handleSynMessageFactory = (log,
|
|
542
|
+
var handleSynMessageFactory = (log, serializedMethods, childOrigin, originForSending) => {
|
|
479
543
|
return (event) => {
|
|
480
|
-
|
|
544
|
+
// Under specific timing circumstances, we can receive an event
|
|
545
|
+
// whose source is null. This seems to happen when the child iframe is
|
|
546
|
+
// removed from the DOM about the same time it has sent the SYN event.
|
|
547
|
+
// https://github.com/Aaronius/penpal/issues/85
|
|
548
|
+
if (!event.source) {
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
if (childOrigin !== '*' && event.origin !== childOrigin) {
|
|
481
552
|
log(`Parent: Handshake - Received SYN message from origin ${event.origin} which did not match expected origin ${childOrigin}`);
|
|
482
553
|
return;
|
|
483
554
|
}
|
|
484
555
|
log('Parent: Handshake - Received SYN, responding with SYN-ACK');
|
|
485
556
|
const synAckMessage = {
|
|
486
557
|
penpal: MessageType.SynAck,
|
|
487
|
-
methodNames: Object.keys(
|
|
558
|
+
methodNames: Object.keys(serializedMethods),
|
|
488
559
|
};
|
|
489
560
|
event.source.postMessage(synAckMessage, originForSending);
|
|
490
561
|
};
|
|
@@ -555,8 +626,9 @@ var connectToChild = (options) => {
|
|
|
555
626
|
// must post messages with "*" as targetOrigin when sending messages.
|
|
556
627
|
// https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Using_window.postMessage_in_extensions
|
|
557
628
|
const originForSending = childOrigin === 'null' ? '*' : childOrigin;
|
|
558
|
-
const
|
|
559
|
-
const
|
|
629
|
+
const serializedMethods = serializeMethods(methods);
|
|
630
|
+
const handleSynMessage = handleSynMessageFactory(log, serializedMethods, childOrigin, originForSending);
|
|
631
|
+
const handleAckMessage = handleAckMessageFactory(serializedMethods, childOrigin, originForSending, destructor, log);
|
|
560
632
|
const promise = new Promise((resolve, reject) => {
|
|
561
633
|
const stopConnectionTimeout = startConnectionTimeout(timeout, destroy);
|
|
562
634
|
const handleMessage = (event) => {
|
|
@@ -656,7 +728,7 @@ var insertIframe = function (id, importerDisplay) {
|
|
|
656
728
|
return iframe;
|
|
657
729
|
};
|
|
658
730
|
var useCsvPlugin = function (_a) {
|
|
659
|
-
var importerKey = _a.importerKey, user = _a.user, metadata = _a.metadata, onData = _a.onData, onRecordsInitial = _a.onRecordsInitial, onRecordEdit = _a.onRecordEdit, _b = _a.importerDisplay, importerDisplay = _b === void 0 ? "modal" : _b, onClose = _a.onClose, theme = _a.theme, batchSize = _a.batchSize;
|
|
731
|
+
var importerKey = _a.importerKey, user = _a.user, metadata = _a.metadata, onData = _a.onData, onRecordsInitial = _a.onRecordsInitial, onRecordEdit = _a.onRecordEdit, _b = _a.importerDisplay, importerDisplay = _b === void 0 ? "modal" : _b, onClose = _a.onClose, theme = _a.theme, batchSize = _a.batchSize, sampleFileURL = _a.sampleFileURL, _c = _a.downloadExampleButton, downloadExampleButton = _c === void 0 ? true : _c, dynamicColumns = _a.dynamicColumns;
|
|
660
732
|
var id = "usecsv-".concat(Math.round(Math.random() * 100000000));
|
|
661
733
|
return whenDomReady().then(function () {
|
|
662
734
|
var iframe = insertIframe(id, importerDisplay);
|
|
@@ -688,7 +760,19 @@ var useCsvPlugin = function (_a) {
|
|
|
688
760
|
var _a;
|
|
689
761
|
(_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a.classList.remove("loading");
|
|
690
762
|
// eslint-disable-next-line dot-notation
|
|
691
|
-
child["setParams"] &&
|
|
763
|
+
child["setParams"] &&
|
|
764
|
+
// eslint-disable-next-line dot-notation
|
|
765
|
+
child["setParams"]({
|
|
766
|
+
importerKey: importerKey,
|
|
767
|
+
user: user,
|
|
768
|
+
metadata: metadata,
|
|
769
|
+
importerDisplay: importerDisplay,
|
|
770
|
+
theme: theme,
|
|
771
|
+
batchSize: batchSize,
|
|
772
|
+
sampleFileURL: sampleFileURL,
|
|
773
|
+
downloadExampleButton: downloadExampleButton,
|
|
774
|
+
dynamicColumns: dynamicColumns,
|
|
775
|
+
});
|
|
692
776
|
});
|
|
693
777
|
return iframeConnection;
|
|
694
778
|
});
|
|
@@ -705,7 +789,10 @@ var useCsvPlugin = function (_a) {
|
|
|
705
789
|
onRecordEdit: {},
|
|
706
790
|
onClose: {},
|
|
707
791
|
theme: {},
|
|
708
|
-
batchSize: {}
|
|
792
|
+
batchSize: {},
|
|
793
|
+
sampleFileURL: {},
|
|
794
|
+
downloadExampleButton: {},
|
|
795
|
+
dynamicColumns: {}
|
|
709
796
|
},
|
|
710
797
|
data: function data() {
|
|
711
798
|
return {
|
|
@@ -724,7 +811,10 @@ var useCsvPlugin = function (_a) {
|
|
|
724
811
|
onRecordEdit: this.onRecordEdit,
|
|
725
812
|
onClose: this.onClose,
|
|
726
813
|
theme: this.theme,
|
|
727
|
-
batchSize: this.batchSize
|
|
814
|
+
batchSize: this.batchSize,
|
|
815
|
+
sampleFileURL: this.sampleFileURL,
|
|
816
|
+
downloadExampleButton: this.downloadExampleButton,
|
|
817
|
+
dynamicColumns: this.dynamicColumns
|
|
728
818
|
});
|
|
729
819
|
},
|
|
730
820
|
hasScopedSlot: function hasScopedSlot() {
|
|
@@ -846,44 +936,36 @@ function renderStyles(styles) {
|
|
|
846
936
|
return css;
|
|
847
937
|
}/* script */
|
|
848
938
|
var __vue_script__ = script;
|
|
849
|
-
/* template */
|
|
850
939
|
|
|
940
|
+
/* template */
|
|
851
941
|
var __vue_render__ = function __vue_render__() {
|
|
852
942
|
var _vm = this;
|
|
853
|
-
|
|
854
943
|
var _h = _vm.$createElement;
|
|
855
|
-
|
|
856
944
|
var _c = _vm._self._c || _h;
|
|
857
|
-
|
|
858
945
|
return _c('div', {
|
|
859
946
|
staticClass: "usecsv"
|
|
860
|
-
}, [_vm.hasScopedSlot() ? _vm._ssrNode("<div data-v-
|
|
947
|
+
}, [_vm.hasScopedSlot() ? _vm._ssrNode("<div data-v-433de40e>", "</div>", [_vm._t("default", null, {
|
|
861
948
|
"openModal": _vm.openModal
|
|
862
|
-
})], 2) : _vm._ssrNode("<div data-v-
|
|
949
|
+
})], 2) : _vm._ssrNode("<div data-v-433de40e>", "</div>", [_vm._ssrNode("<button type=\"button\" id=\"usecsv-button\" data-v-433de40e>", "</button>", [_vm._t("default", function () {
|
|
863
950
|
return [_vm._v(" open usecsv ")];
|
|
864
951
|
})], 2)])]);
|
|
865
952
|
};
|
|
866
|
-
|
|
867
953
|
var __vue_staticRenderFns__ = [];
|
|
868
|
-
/* style */
|
|
869
954
|
|
|
955
|
+
/* style */
|
|
870
956
|
var __vue_inject_styles__ = function __vue_inject_styles__(inject) {
|
|
871
957
|
if (!inject) return;
|
|
872
|
-
inject("data-v-
|
|
873
|
-
source: "#usecsv-button[data-v-
|
|
958
|
+
inject("data-v-433de40e_0", {
|
|
959
|
+
source: "#usecsv-button[data-v-433de40e]{background-color:#fff;color:#000;border:2px solid #000;border-radius:6px;padding:10px 15px;text-align:center;font-size:16px;cursor:pointer}",
|
|
874
960
|
map: undefined,
|
|
875
961
|
media: undefined
|
|
876
962
|
});
|
|
877
963
|
};
|
|
878
964
|
/* scoped */
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
var __vue_scope_id__ = "data-v-5ce762cb";
|
|
965
|
+
var __vue_scope_id__ = "data-v-433de40e";
|
|
882
966
|
/* module identifier */
|
|
883
|
-
|
|
884
|
-
var __vue_module_identifier__ = "data-v-5ce762cb";
|
|
967
|
+
var __vue_module_identifier__ = "data-v-433de40e";
|
|
885
968
|
/* functional template */
|
|
886
|
-
|
|
887
969
|
var __vue_is_functional_template__ = false;
|
|
888
970
|
/* style inject shadow dom */
|
|
889
971
|
|
|
@@ -891,31 +973,33 @@ var __vue_component__ = /*#__PURE__*/normalizeComponent({
|
|
|
891
973
|
render: __vue_render__,
|
|
892
974
|
staticRenderFns: __vue_staticRenderFns__
|
|
893
975
|
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, createInjectorSSR, undefined);
|
|
894
|
-
|
|
895
976
|
var component$1 = __vue_component__;// Import vue component
|
|
896
977
|
|
|
978
|
+
// Define typescript interfaces for installable component
|
|
979
|
+
|
|
897
980
|
// Default export is installable instance of component.
|
|
898
981
|
// IIFE injects install function into component, allowing component
|
|
899
982
|
// to be registered via Vue.use() as well as Vue.component(),
|
|
900
983
|
var component = /*#__PURE__*/(function () {
|
|
901
984
|
// Assign InstallableComponent type
|
|
902
|
-
var installable = component$1;
|
|
985
|
+
var installable = component$1;
|
|
903
986
|
|
|
987
|
+
// Attach install function executed by Vue.use()
|
|
904
988
|
installable.install = function (Vue) {
|
|
905
989
|
Vue.component('usecsv-button', installable);
|
|
906
990
|
};
|
|
907
|
-
|
|
908
991
|
return installable;
|
|
909
|
-
})();
|
|
992
|
+
})();
|
|
993
|
+
|
|
994
|
+
// It's possible to expose named exports when writing components that can
|
|
910
995
|
// also be used as directives, etc. - eg. import { RollupDemoDirective } from 'rollup-demo';
|
|
911
996
|
// export const RollupDemoDirective = directive;
|
|
912
|
-
var namedExports=/*#__PURE__*/Object.freeze({__proto__:null,'default':component});//
|
|
997
|
+
var namedExports=/*#__PURE__*/Object.freeze({__proto__:null,'default':component});// Attach named exports directly to component. IIFE/CJS will
|
|
998
|
+
// only expose one global var, with named exports exposed as properties of
|
|
913
999
|
// that global var (eg. plugin.namedExport)
|
|
914
|
-
|
|
915
1000
|
Object.entries(namedExports).forEach(function (_ref) {
|
|
916
1001
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
1002
|
+
exportName = _ref2[0],
|
|
1003
|
+
exported = _ref2[1];
|
|
920
1004
|
if (exportName !== 'default') component[exportName] = exported;
|
|
921
1005
|
});module.exports=component;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Vue from "vue";
|
|
2
|
-
declare const _default: import("vue/types/vue").ExtendedVue<Vue, {
|
|
2
|
+
declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
|
|
3
3
|
hasSlot: boolean;
|
|
4
4
|
}, {
|
|
5
5
|
openModal: () => void;
|
|
@@ -20,5 +20,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue, {
|
|
|
20
20
|
onClose?: (() => void) | undefined;
|
|
21
21
|
theme?: import("@usecsv/js/build/types/lib/types").ThemeType | undefined;
|
|
22
22
|
batchSize?: number | undefined;
|
|
23
|
-
|
|
23
|
+
sampleFileURL?: string | undefined;
|
|
24
|
+
downloadExampleButton?: boolean | undefined;
|
|
25
|
+
dynamicColumns?: import("@usecsv/js/build/types/lib/types").DynamicColumnsType | undefined;
|
|
26
|
+
}, {}, import("vue/types/v3-component-options").ComponentOptionsMixin, import("vue/types/v3-component-options").ComponentOptionsMixin>;
|
|
24
27
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usecsv/vuejs",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.22",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/UseCSVButton.ssr.js",
|
|
6
6
|
"browser": "dist/UseCSVButton.esm.js",
|
|
@@ -24,42 +24,42 @@
|
|
|
24
24
|
"prepublishOnly": "yarn build"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@usecsv/js": "^0.
|
|
27
|
+
"@usecsv/js": "^0.14.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@babel/core": "^7.
|
|
31
|
-
"@babel/preset-env": "^7.
|
|
32
|
-
"@babel/preset-typescript": "^7.
|
|
30
|
+
"@babel/core": "^7.21.8",
|
|
31
|
+
"@babel/preset-env": "^7.21.5",
|
|
32
|
+
"@babel/preset-typescript": "^7.21.5",
|
|
33
33
|
"@rollup/plugin-alias": "^3.1.2",
|
|
34
34
|
"@rollup/plugin-babel": "^5.3.0",
|
|
35
|
-
"@rollup/plugin-commonjs": "^
|
|
36
|
-
"@rollup/plugin-node-resolve": "^
|
|
37
|
-
"@rollup/plugin-replace": "^
|
|
38
|
-
"@rushstack/eslint-patch": "^1.
|
|
39
|
-
"@semantic-release/changelog": "^6.0.
|
|
35
|
+
"@rollup/plugin-commonjs": "^24.1.0",
|
|
36
|
+
"@rollup/plugin-node-resolve": "^15.0.2",
|
|
37
|
+
"@rollup/plugin-replace": "^5.0.2",
|
|
38
|
+
"@rushstack/eslint-patch": "^1.2.0",
|
|
39
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
40
40
|
"@semantic-release/commit-analyzer": "^9.0.2",
|
|
41
41
|
"@semantic-release/git": "^10.0.1",
|
|
42
42
|
"@semantic-release/github": "^8.0.7",
|
|
43
|
-
"@semantic-release/release-notes-generator": "^
|
|
44
|
-
"@vue/cli-plugin-babel": "^
|
|
45
|
-
"@vue/cli-plugin-typescript": "^
|
|
46
|
-
"@vue/cli-service": "^
|
|
43
|
+
"@semantic-release/release-notes-generator": "^11.0.1",
|
|
44
|
+
"@vue/cli-plugin-babel": "^5.0.8",
|
|
45
|
+
"@vue/cli-plugin-typescript": "^5.0.8",
|
|
46
|
+
"@vue/cli-service": "^5.0.8",
|
|
47
47
|
"@vue/eslint-config-typescript": "^10.0.0",
|
|
48
48
|
"@zerollup/ts-transform-paths": "^1.7.18",
|
|
49
49
|
"cross-env": "^7.0.3",
|
|
50
|
-
"eslint": "^8.
|
|
50
|
+
"eslint": "^8.39.0",
|
|
51
51
|
"eslint-plugin-vue": "^8.4.1",
|
|
52
|
-
"minimist": "^1.2.
|
|
52
|
+
"minimist": "^1.2.8",
|
|
53
53
|
"rimraf": "^3.0.2",
|
|
54
54
|
"rollup": "^2.52.8",
|
|
55
55
|
"rollup-plugin-terser": "^7.0.2",
|
|
56
|
-
"rollup-plugin-typescript2": "^0.
|
|
56
|
+
"rollup-plugin-typescript2": "^0.34.1",
|
|
57
57
|
"rollup-plugin-vue": "^5.1.9",
|
|
58
|
-
"semantic-release": "^
|
|
59
|
-
"ttypescript": "^1.5.
|
|
60
|
-
"typescript": "
|
|
58
|
+
"semantic-release": "^21.0.2",
|
|
59
|
+
"ttypescript": "^1.5.15",
|
|
60
|
+
"typescript": "<4.8",
|
|
61
61
|
"vue": "^2.6.14",
|
|
62
|
-
"vue-template-compiler": "^2.
|
|
62
|
+
"vue-template-compiler": "^2.7.14"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"vue": "^2.6.14"
|
package/src/UseCSVButton.vue
CHANGED
|
@@ -22,6 +22,9 @@ export default /*#__PURE__*/ Vue.extend<
|
|
|
22
22
|
onClose: {},
|
|
23
23
|
theme: {},
|
|
24
24
|
batchSize: {},
|
|
25
|
+
sampleFileURL: {},
|
|
26
|
+
downloadExampleButton: {},
|
|
27
|
+
dynamicColumns: {},
|
|
25
28
|
},
|
|
26
29
|
data() {
|
|
27
30
|
return {
|
|
@@ -41,13 +44,13 @@ export default /*#__PURE__*/ Vue.extend<
|
|
|
41
44
|
onClose: this.onClose,
|
|
42
45
|
theme: this.theme,
|
|
43
46
|
batchSize: this.batchSize,
|
|
47
|
+
sampleFileURL: this.sampleFileURL,
|
|
48
|
+
downloadExampleButton: this.downloadExampleButton,
|
|
49
|
+
dynamicColumns: this.dynamicColumns,
|
|
44
50
|
});
|
|
45
51
|
},
|
|
46
52
|
hasScopedSlot(): boolean {
|
|
47
|
-
return (
|
|
48
|
-
(this.$scopedSlots.default && this.$scopedSlots.default.name) ===
|
|
49
|
-
"normalized"
|
|
50
|
-
);
|
|
53
|
+
return (this.$scopedSlots.default && this.$scopedSlots.default.name) === "normalized";
|
|
51
54
|
},
|
|
52
55
|
},
|
|
53
56
|
});
|