@teselagen/ui 0.7.6 → 0.7.7-beta.2

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/index.cjs.js CHANGED
@@ -67289,6 +67289,21 @@ function getNewName(list2, targetName) {
67289
67289
  return newName;
67290
67290
  }
67291
67291
  __name(getNewName, "getNewName");
67292
+ const useTraceUpdate = /* @__PURE__ */ __name((props) => {
67293
+ const prev = React$1.useRef(props);
67294
+ React$1.useEffect(() => {
67295
+ const changedProps = Object.entries(props).reduce((ps, [k2, v2]) => {
67296
+ if (prev.current[k2] !== v2) {
67297
+ ps[k2] = [prev.current[k2], v2];
67298
+ }
67299
+ return ps;
67300
+ }, {});
67301
+ if (Object.keys(changedProps).length > 0) {
67302
+ console.log("Changed props:", changedProps);
67303
+ }
67304
+ prev.current = props;
67305
+ });
67306
+ }, "useTraceUpdate");
67292
67307
  const manualEnterMessage = "Build CSV File";
67293
67308
  const manualEnterSubMessage = "Paste or type data to build a CSV file";
67294
67309
  const helperText = [
@@ -67458,7 +67473,7 @@ const Uploader = /* @__PURE__ */ __name(({
67458
67473
  }) => {
67459
67474
  var _a, _b;
67460
67475
  const dispatch = reactRedux.useDispatch();
67461
- const [acceptLoading, setAcceptLoading] = React$1.useState();
67476
+ const [acceptLoading, setAcceptLoading] = React$1.useState(true);
67462
67477
  const [resolvedAccept, setResolvedAccept] = React$1.useState();
67463
67478
  const [loading, setLoading] = React$1.useState(false);
67464
67479
  const filesToClean = React$1.useRef([]);
@@ -67548,16 +67563,24 @@ const Uploader = /* @__PURE__ */ __name(({
67548
67563
  }
67549
67564
  return __accept;
67550
67565
  }, [__accept, isAcceptPromise, resolvedAccept]);
67566
+ useTraceUpdate({
67567
+ __accept,
67568
+ isAcceptPromise
67569
+ });
67551
67570
  React$1.useEffect(() => {
67552
67571
  if (isAcceptPromise) {
67553
67572
  setAcceptLoading(true);
67554
67573
  Promise.allSettled(Array.isArray(__accept) ? __accept : [__accept]).then(
67555
67574
  (results) => {
67556
67575
  const resolved = flatMap(results, (r2) => r2.value);
67557
- setAcceptLoading(false);
67558
67576
  setResolvedAccept(resolved);
67577
+ setTimeout(() => {
67578
+ setAcceptLoading(false);
67579
+ }, 0);
67559
67580
  }
67560
67581
  );
67582
+ } else {
67583
+ setAcceptLoading(false);
67561
67584
  }
67562
67585
  }, [__accept, isAcceptPromise]);
67563
67586
  let dropzoneDisabled = disabled;
@@ -73690,21 +73713,6 @@ const CmdButton = withCommand({
73690
73713
  icon: "icon",
73691
73714
  disabled: "isDisabled"
73692
73715
  })(core.Button);
73693
- const useTraceUpdate = /* @__PURE__ */ __name((props) => {
73694
- const prev = React$1.useRef(props);
73695
- React$1.useEffect(() => {
73696
- const changedProps = Object.entries(props).reduce((ps, [k2, v2]) => {
73697
- if (prev.current[k2] !== v2) {
73698
- ps[k2] = [prev.current[k2], v2];
73699
- }
73700
- return ps;
73701
- }, {});
73702
- if (Object.keys(changedProps).length > 0) {
73703
- console.log("Changed props:", changedProps);
73704
- }
73705
- prev.current = props;
73706
- });
73707
- }, "useTraceUpdate");
73708
73716
  const showProgressToast = /* @__PURE__ */ __name((message, value, key, opts) => {
73709
73717
  return window.toastr.default(
73710
73718
  /* @__PURE__ */ React$1.createElement("div", null, /* @__PURE__ */ React$1.createElement("div", { style: { marginBottom: 10 } }, message), /* @__PURE__ */ React$1.createElement(
package/index.es.js CHANGED
@@ -67271,6 +67271,21 @@ function getNewName(list2, targetName) {
67271
67271
  return newName;
67272
67272
  }
67273
67273
  __name(getNewName, "getNewName");
67274
+ const useTraceUpdate = /* @__PURE__ */ __name((props) => {
67275
+ const prev = useRef(props);
67276
+ useEffect(() => {
67277
+ const changedProps = Object.entries(props).reduce((ps, [k2, v2]) => {
67278
+ if (prev.current[k2] !== v2) {
67279
+ ps[k2] = [prev.current[k2], v2];
67280
+ }
67281
+ return ps;
67282
+ }, {});
67283
+ if (Object.keys(changedProps).length > 0) {
67284
+ console.log("Changed props:", changedProps);
67285
+ }
67286
+ prev.current = props;
67287
+ });
67288
+ }, "useTraceUpdate");
67274
67289
  const manualEnterMessage = "Build CSV File";
67275
67290
  const manualEnterSubMessage = "Paste or type data to build a CSV file";
67276
67291
  const helperText = [
@@ -67440,7 +67455,7 @@ const Uploader = /* @__PURE__ */ __name(({
67440
67455
  }) => {
67441
67456
  var _a, _b;
67442
67457
  const dispatch = useDispatch();
67443
- const [acceptLoading, setAcceptLoading] = useState();
67458
+ const [acceptLoading, setAcceptLoading] = useState(true);
67444
67459
  const [resolvedAccept, setResolvedAccept] = useState();
67445
67460
  const [loading, setLoading] = useState(false);
67446
67461
  const filesToClean = useRef([]);
@@ -67530,16 +67545,24 @@ const Uploader = /* @__PURE__ */ __name(({
67530
67545
  }
67531
67546
  return __accept;
67532
67547
  }, [__accept, isAcceptPromise, resolvedAccept]);
67548
+ useTraceUpdate({
67549
+ __accept,
67550
+ isAcceptPromise
67551
+ });
67533
67552
  useEffect(() => {
67534
67553
  if (isAcceptPromise) {
67535
67554
  setAcceptLoading(true);
67536
67555
  Promise.allSettled(Array.isArray(__accept) ? __accept : [__accept]).then(
67537
67556
  (results) => {
67538
67557
  const resolved = flatMap(results, (r2) => r2.value);
67539
- setAcceptLoading(false);
67540
67558
  setResolvedAccept(resolved);
67559
+ setTimeout(() => {
67560
+ setAcceptLoading(false);
67561
+ }, 0);
67541
67562
  }
67542
67563
  );
67564
+ } else {
67565
+ setAcceptLoading(false);
67543
67566
  }
67544
67567
  }, [__accept, isAcceptPromise]);
67545
67568
  let dropzoneDisabled = disabled;
@@ -73672,21 +73695,6 @@ const CmdButton = withCommand({
73672
73695
  icon: "icon",
73673
73696
  disabled: "isDisabled"
73674
73697
  })(Button);
73675
- const useTraceUpdate = /* @__PURE__ */ __name((props) => {
73676
- const prev = useRef(props);
73677
- useEffect(() => {
73678
- const changedProps = Object.entries(props).reduce((ps, [k2, v2]) => {
73679
- if (prev.current[k2] !== v2) {
73680
- ps[k2] = [prev.current[k2], v2];
73681
- }
73682
- return ps;
73683
- }, {});
73684
- if (Object.keys(changedProps).length > 0) {
73685
- console.log("Changed props:", changedProps);
73686
- }
73687
- prev.current = props;
73688
- });
73689
- }, "useTraceUpdate");
73690
73698
  const showProgressToast = /* @__PURE__ */ __name((message, value, key, opts) => {
73691
73699
  return window.toastr.default(
73692
73700
  /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { style: { marginBottom: 10 } }, message), /* @__PURE__ */ React__default.createElement(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/ui",
3
- "version": "0.7.6",
3
+ "version": "0.7.7-beta.2",
4
4
  "main": "./src/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -49,6 +49,8 @@ import { LoadingDots } from "./LoadingDots";
49
49
  import { useDispatch } from "react-redux";
50
50
  import { flushSync } from "react-dom";
51
51
  import { useStableReference } from "../utils/hooks/useStableReference";
52
+ import useDeepCompareEffect from "use-deep-compare-effect";
53
+ import { useTraceUpdate } from "../utils/useTraceUpdate";
52
54
 
53
55
  const manualEnterMessage = "Build CSV File";
54
56
  const manualEnterSubMessage = "Paste or type data to build a CSV file";
@@ -252,7 +254,7 @@ const Uploader = ({
252
254
  validateAgainstSchema: _validateAgainstSchema
253
255
  }) => {
254
256
  const dispatch = useDispatch();
255
- const [acceptLoading, setAcceptLoading] = useState();
257
+ const [acceptLoading, setAcceptLoading] = useState(true); // set to true by default to prevent the dropzone from being actionable until the accept is resolved
256
258
  const [resolvedAccept, setResolvedAccept] = useState();
257
259
  const [loading, setLoading] = useState(false);
258
260
  const filesToClean = useRef([]);
@@ -362,17 +364,26 @@ const Uploader = ({
362
364
  }
363
365
  return __accept;
364
366
  }, [__accept, isAcceptPromise, resolvedAccept]);
365
-
367
+ useTraceUpdate({
368
+ __accept,
369
+ isAcceptPromise
370
+ });
366
371
  useEffect(() => {
367
372
  if (isAcceptPromise) {
368
373
  setAcceptLoading(true);
369
374
  Promise.allSettled(Array.isArray(__accept) ? __accept : [__accept]).then(
370
375
  results => {
371
376
  const resolved = flatMap(results, r => r.value);
372
- setAcceptLoading(false);
373
377
  setResolvedAccept(resolved);
378
+ setTimeout(() => {
379
+ // give the resolved accept a full JS cycle to update before allowing actionability on the dropzone
380
+ setAcceptLoading(false);
381
+ }, 0);
374
382
  }
375
383
  );
384
+ } else {
385
+ // set this to false since it is defaulted to true
386
+ setAcceptLoading(false);
376
387
  }
377
388
  }, [__accept, isAcceptPromise]);
378
389