@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.
@@ -1,12 +1,12 @@
1
1
  import Vue from 'vue';
2
2
 
3
3
  /*!
4
- * @usecsv/js v0.12.0
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, methods, log) => {
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(methods[methodName].apply(methods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));
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} methodNames Names of methods available to be called on the remote.
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, methodNames, destroyConnection, log) => {
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 (event.origin !== originForReceiving) {
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
- methodNames.reduce((api, methodName) => {
366
- api[methodName] = createMethodProxy(methodName);
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
- }, callSender);
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 = (methods, childOrigin, originForSending, destructor, log) => {
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, methods, log);
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, methods, childOrigin, originForSending) => {
496
+ var handleSynMessageFactory = (log, serializedMethods, childOrigin, originForSending) => {
424
497
  return (event) => {
425
- if (event.origin !== childOrigin) {
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(methods),
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 handleSynMessage = handleSynMessageFactory(log, methods, childOrigin, originForSending);
504
- const handleAckMessage = handleAckMessageFactory(methods, childOrigin, originForSending, destructor, log);
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"] && child["setParams"]({ importerKey: importerKey, user: user, metadata: metadata, importerDisplay: importerDisplay, theme: theme, batchSize: batchSize });
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-5ce762cb_0", {
848
- 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}",
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; // Attach install function executed by Vue.use()
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
- })(); // It's possible to expose named exports when writing components that can
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
 
@@ -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==n)return;var o,r,i=[],s=!0,a=!1;try{for(n=n.call(e);!(s=(o=n.next()).done)&&(i.push(o.value),!t||i.length!==t);s=!0);}catch(e){a=!0,r=e}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return i}(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.")}
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.12.0
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);
@@ -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 _slicedToArray(arr, i) {
2
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3
- }
4
-
5
- function _arrayWithHoles(arr) {
6
- if (Array.isArray(arr)) return arr;
7
- }
8
-
9
- function _iterableToArrayLimit(arr, i) {
10
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
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 (!_n && _i["return"] != null) _i["return"]();
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
- if (_d) throw _e;
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.12.0
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, methods, log) => {
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(methods[methodName].apply(methods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));
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} methodNames Names of methods available to be called on the remote.
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, methodNames, destroyConnection, log) => {
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 (event.origin !== originForReceiving) {
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
- methodNames.reduce((api, methodName) => {
421
- api[methodName] = createMethodProxy(methodName);
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
- }, callSender);
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 = (methods, childOrigin, originForSending, destructor, log) => {
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, methods, log);
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, methods, childOrigin, originForSending) => {
542
+ var handleSynMessageFactory = (log, serializedMethods, childOrigin, originForSending) => {
479
543
  return (event) => {
480
- if (event.origin !== childOrigin) {
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(methods),
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 handleSynMessage = handleSynMessageFactory(log, methods, childOrigin, originForSending);
559
- const handleAckMessage = handleAckMessageFactory(methods, childOrigin, originForSending, destructor, log);
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"] && child["setParams"]({ importerKey: importerKey, user: user, metadata: metadata, importerDisplay: importerDisplay, theme: theme, batchSize: batchSize });
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-5ce762cb>", "</div>", [_vm._t("default", null, {
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-5ce762cb>", "</div>", [_vm._ssrNode("<button type=\"button\" id=\"usecsv-button\" data-v-5ce762cb>", "</button>", [_vm._t("default", function () {
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-5ce762cb_0", {
873
- 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}",
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; // Attach install function executed by Vue.use()
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
- })(); // It's possible to expose named exports when writing components that can
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});// only expose one global var, with named exports exposed as properties of
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
- exportName = _ref2[0],
918
- exported = _ref2[1];
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.19",
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.12.0"
27
+ "@usecsv/js": "^0.14.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@babel/core": "^7.14.6",
31
- "@babel/preset-env": "^7.14.7",
32
- "@babel/preset-typescript": "^7.14.5",
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": "^14.0.0",
36
- "@rollup/plugin-node-resolve": "^9.0.0",
37
- "@rollup/plugin-replace": "^2.4.2",
38
- "@rushstack/eslint-patch": "^1.1.0",
39
- "@semantic-release/changelog": "^6.0.2",
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": "^10.0.3",
44
- "@vue/cli-plugin-babel": "^4.5.15",
45
- "@vue/cli-plugin-typescript": "^4.5.15",
46
- "@vue/cli-service": "^4.5.15",
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.9.0",
50
+ "eslint": "^8.39.0",
51
51
  "eslint-plugin-vue": "^8.4.1",
52
- "minimist": "^1.2.5",
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.30.0",
56
+ "rollup-plugin-typescript2": "^0.34.1",
57
57
  "rollup-plugin-vue": "^5.1.9",
58
- "semantic-release": "^20.0.2",
59
- "ttypescript": "^1.5.12",
60
- "typescript": "^4.0.3",
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.6.14"
62
+ "vue-template-compiler": "^2.7.14"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "vue": "^2.6.14"
@@ -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
  });