@doenet/doenetml 0.7.24-dev.484 → 0.7.24-dev.486

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.
Files changed (112) hide show
  1. package/{AnswerResponseButton-DOkiGXwR.js → AnswerResponseButton-XKnLjuuA.js} +2 -2
  2. package/{Description-dd5zo0Da.js → Description-Dh2cMINb.js} +1 -1
  3. package/EditorViewer/EditorViewer.d.ts +6 -0
  4. package/EditorViewer/EditorViewer.d.ts.map +1 -1
  5. package/{GraphFrame-CJnYmlxB.js → GraphFrame-CoR6zZFS.js} +2 -2
  6. package/{JSXGraphRenderer-CqQeYbb_.js → JSXGraphRenderer-Bq1h8yN6.js} +1 -1
  7. package/{NonInlineMediaWrapper-Bzzs4aLp.js → NonInlineMediaWrapper-Bre5BZoP.js} +1 -1
  8. package/Viewer/DocViewer.d.ts +15 -1
  9. package/Viewer/DocViewer.d.ts.map +1 -1
  10. package/{_error-DshBxNw7.js → _error-B1JAx-ob.js} +2 -2
  11. package/{alert-boEZiy8P.js → alert-CvkDuRqi.js} +3 -3
  12. package/{angle-Cg_cvHt2.js → angle-BDZD0oAp.js} +6 -6
  13. package/{answer-Cv8KidCI.js → answer-DnCm4w3g.js} +5 -5
  14. package/{asList-BRziaNyA.js → asList-BPDtyhFP.js} +2 -2
  15. package/{blockQuote-DHZVW_Gd.js → blockQuote-By6NN2EG.js} +3 -3
  16. package/{boolean-CD7ZkKG1.js → boolean-ULg_g9h3.js} +2 -2
  17. package/{booleanInput-B2d95be3.js → booleanInput-CJgXieYS.js} +6 -6
  18. package/{br-BySBp0Qm.js → br-B_MJywNl.js} +2 -2
  19. package/{button-i7QU2Gp2.js → button-k3kV2nYB.js} +4 -4
  20. package/{c-C6eFHKOm.js → c-DMW2serk.js} +3 -3
  21. package/{cell-CuBy_sd-.js → cell-BwreMR82.js} +3 -3
  22. package/{choiceInput-cCdnPZxl.js → choiceInput-nqoJpFM9.js} +4 -4
  23. package/{circle-Cl0ehDpP.js → circle-DP5PVQ57.js} +6 -6
  24. package/{cobwebPolyline-CIbCw1DX.js → cobwebPolyline-BkwcXd8R.js} +4 -4
  25. package/{codeEditor-CVdj4BCY.js → codeEditor-COhhb7wH.js} +2 -2
  26. package/{composites-BahnWZ44.js → composites-7vkKK_uQ.js} +1 -1
  27. package/{containerBlock-DrN10qVb.js → containerBlock-B4p79ga5.js} +4 -4
  28. package/{containerInline-BMaCC4K_.js → containerInline-b4gD_dws.js} +4 -4
  29. package/{curve-D_UKYjPX.js → curve-CHP53IOC.js} +4 -4
  30. package/{doenetml-aUmY9leg.js → doenetml-DYY06WUu.js} +152 -34
  31. package/doenetml-external-worker.js +2 -2
  32. package/doenetml-inline-worker.js +2 -2
  33. package/doenetml.d.ts +13 -1
  34. package/doenetml.d.ts.map +1 -1
  35. package/{ellipsis-CY3IE_8F.js → ellipsis-DRfYwdzZ.js} +2 -2
  36. package/{em-B1X1bCB5.js → em-B7-gUmqe.js} +3 -3
  37. package/{embed-CKDnpG5N.js → embed-CmPH08aV.js} +2 -2
  38. package/{feedback-COUFZk1c.js → feedback-Ceo6f3yn.js} +4 -4
  39. package/{figure-Blo3AaKP.js → figure-3Hq1EnOM.js} +3 -3
  40. package/{fillPatterns-BMeeuJF5.js → fillPatterns-CUlTAPd2.js} +1 -1
  41. package/{footnote-LNP_5Px7.js → footnote-D7RYIrVb.js} +3 -3
  42. package/{fractionInput-B0vgkmCH.js → fractionInput-DLOWjDLI.js} +4 -4
  43. package/global-config.d.ts +11 -7
  44. package/global-config.d.ts.map +1 -1
  45. package/{graph-tfQQFRA6.js → graph-B0fmps0e.js} +6 -6
  46. package/{hint-BNFwH9y4.js → hint-HzAGnzGA.js} +4 -4
  47. package/{hr-DLtP75RR.js → hr-D2-K7x8O.js} +2 -2
  48. package/{image-BAVOKRjs.js → image-DK5RM3SK.js} +7 -7
  49. package/{index-DEGhhHR0.js → index-XhmlPdJX.js} +1 -1
  50. package/{index.es-EwFj50Xp.js → index.es-Ceo2FiZx.js} +1 -1
  51. package/index.js +1 -1
  52. package/{label-CcWhR8P3.js → label-C2R0RtI5.js} +6 -6
  53. package/{labelWithLatex-CG5R0Beu.js → labelWithLatex-CykQVcza.js} +1 -1
  54. package/{legend-CTr43fsJ.js → legend-DdY3z3O9.js} +4 -4
  55. package/{line-Uh10z24B.js → line-iUHka3pR.js} +6 -6
  56. package/{lineFamilyDragHandlers-Cq8PcFCJ.js → lineFamilyDragHandlers-CNgQjRxW.js} +1 -1
  57. package/{lineSegment-hVn537jV.js → lineSegment-DBrrRMbb.js} +5 -5
  58. package/{list-C-YcT9Dk.js → list-CC02MNvZ.js} +4 -4
  59. package/{lq-Cj3uwOLp.js → lq-q7qprVSb.js} +2 -2
  60. package/{lsq-7QeR5rpb.js → lsq-jUtkHSDC.js} +2 -2
  61. package/{markupRenderer-DaZQsDAf.js → markupRenderer-CyoqYLhP.js} +1 -1
  62. package/{math-DrMdOcrl.js → math-CeuOGNyS.js} +6 -6
  63. package/{mathInput-CtURtu72.js → mathInput-STleJNTX.js} +7 -7
  64. package/{matrixInput-DgV6Rt8a.js → matrixInput-tLWhu4j6.js} +4 -4
  65. package/{mdash-4WjRv6iT.js → mdash-CD2JKxkq.js} +2 -2
  66. package/{nbsp-yuITh3Y6.js → nbsp-De--mMwo.js} +2 -2
  67. package/{ndash-DkVZ1P1m.js → ndash-TpfqxeCb.js} +2 -2
  68. package/{number-AVe_Yorf.js → number-y4gfrlw9.js} +6 -6
  69. package/{orbitalDiagram-BgRjqqBD.js → orbitalDiagram-B4QxQhcb.js} +2 -2
  70. package/{orbitalDiagramInput-CbCVpaO2.js → orbitalDiagramInput-Dzv0gwgO.js} +2 -2
  71. package/{p-B9P3Wh1I.js → p-DxoLDBQi.js} +4 -4
  72. package/package.json +1 -1
  73. package/{paginatorControls-CgRMs12_.js → paginatorControls-BWiE0HBB.js} +2 -2
  74. package/{pegboard-DOmqpNmS.js → pegboard-C0Adh_43.js} +4 -4
  75. package/{point-Dek6LcYq.js → point-CHznhj63.js} +6 -6
  76. package/{polygon-CtjOBqjz.js → polygon-CU1FPxpV.js} +6 -6
  77. package/{polyline-PBXmF4gv.js → polyline-BHuszkzT.js} +5 -5
  78. package/{pre-CwsrcLE-.js → pre-D-g_jk88.js} +3 -3
  79. package/{prefigure-BYOevvcI.js → prefigure-GOVqurod.js} +1 -1
  80. package/{pretzel-3C2U-3Z2.js → pretzel-DJQ6qCSl.js} +4 -4
  81. package/{q-B0j14wnX.js → q-BCLAkLFl.js} +3 -3
  82. package/{ray-DquLwch7.js → ray-DAFTYk5O.js} +5 -5
  83. package/{ref-gb-FQAGZ.js → ref-CZ5sA88e.js} +2 -2
  84. package/{regionBetweenCurveXAxis-BmWzX2yw.js → regionBetweenCurveXAxis-BOogk9l8.js} +5 -5
  85. package/{regionBetweenCurves-UTO3bi4h.js → regionBetweenCurves-38QNZodB.js} +5 -5
  86. package/{row-CxL5y8rd.js → row-zyewjtmj.js} +2 -2
  87. package/{rq-DObfWLeh.js → rq-9yTyIeeD.js} +2 -2
  88. package/{rsq-CPquodKd.js → rsq-Cn0b8WQG.js} +2 -2
  89. package/{section-DHS5-Mky.js → section-BYNBuO3r.js} +5 -5
  90. package/{sha256-DT5xJ2Hv-8W5OTWey.js → sha256-DT5xJ2Hv-DSXRomyG.js} +1 -1
  91. package/{sideBySide-BZMviE2e.js → sideBySide-OuKpmQLa.js} +2 -2
  92. package/{slider-DQ_e-7JO.js → slider-BQ3wLOwR.js} +3 -3
  93. package/{slopeField-DhpVaCAs.js → slopeField-Cy3yTScw.js} +2 -2
  94. package/{solution-CeOknXdN.js → solution-_hPAXnKh.js} +4 -4
  95. package/{spreadsheet-Bb7QZCwp.js → spreadsheet-5SUvg7IK.js} +2 -2
  96. package/{sq-DFXnQtlX.js → sq-DL1MOouF.js} +3 -3
  97. package/{subsetOfRealsInput-OMZK5TMU.js → subsetOfRealsInput-4MmqB_Vb.js} +2 -2
  98. package/{summaryStatistics-DL5x6SV9.js → summaryStatistics-Dr4zaYfC.js} +2 -2
  99. package/{table-Ch6FGFNm.js → table-CRgfHe5B.js} +2 -2
  100. package/{tabular-i1heii-8.js → tabular-D3QmFZAN.js} +2 -2
  101. package/{tag-BMGntAbf.js → tag-Cnjb85Kf.js} +2 -2
  102. package/{text-Dc55QUnq.js → text-Xm4fKkll.js} +6 -6
  103. package/{textInput-B3xysjq1.js → textInput-BXYovocc.js} +6 -6
  104. package/{tooltip-provider-DZ3hRPOU.js → tooltip-provider-B8hAf3i7.js} +1 -1
  105. package/{useAnchoredGraphDragHandler-BCAKAf-r.js → useAnchoredGraphDragHandler-DwfO0NmX.js} +1 -1
  106. package/useDoenetRenderer-9ms1rqyh.js +114 -0
  107. package/{useFieldCurve-hjrRP_ku.js → useFieldCurve-D2_THLHH.js} +2 -2
  108. package/{useSubmitActionWithDelay-ByB5sjDD.js → useSubmitActionWithDelay-BlKfgtmD.js} +2 -2
  109. package/{vector-OZe-6Ily.js → vector-Dju-cA7W.js} +6 -6
  110. package/{vectorField-D9u-3-c1.js → vectorField-BV6FAaCj.js} +2 -2
  111. package/{video-B3Ot8JE_.js → video-CITdZVjK.js} +4 -4
  112. package/useDoenetRenderer-D0-8JAxz.js +0 -114
@@ -31812,7 +31812,7 @@ async function cidFromArrayBuffer(data) {
31812
31812
  await crypto.subtle.digest("SHA-256", new Uint8Array());
31813
31813
  digest = (data2) => crypto.subtle.digest("SHA-256", data2);
31814
31814
  } catch (e2) {
31815
- const sha256 = (await import("./sha256-DT5xJ2Hv-8W5OTWey.js").then((n2) => n2.s)).default;
31815
+ const sha256 = (await import("./sha256-DT5xJ2Hv-DSXRomyG.js").then((n2) => n2.s)).default;
31816
31816
  digest = (data2) => sha256(data2, {
31817
31817
  asBytes: true
31818
31818
  });
@@ -47693,6 +47693,7 @@ function DocViewer({
47693
47693
  reportScoreAndStateCallback: specifiedReportScoreAndStateCallback,
47694
47694
  documentStructureCallback,
47695
47695
  initializedCallback,
47696
+ coreStartFailedCallback,
47696
47697
  setIsInErrorState,
47697
47698
  prefixForIds = "",
47698
47699
  doenetViewerUrl,
@@ -47862,6 +47863,9 @@ function DocViewer({
47862
47863
  const loadedInitialRendererState = useRef(false);
47863
47864
  const coreCreated = useRef(false);
47864
47865
  const coreCreationInProgress = useRef(false);
47866
+ const coreStartFailureReportedFor = useRef(null);
47867
+ const viewerUnmounted = useRef(false);
47868
+ const bootLadderCoreId = useRef(null);
47865
47869
  const coreId = useRef("");
47866
47870
  const diagnostics2 = useRef([]);
47867
47871
  const rawDiagnostics = useRef([]);
@@ -47969,7 +47973,9 @@ function DocViewer({
47969
47973
  reportGraphElementUp
47970
47974
  };
47971
47975
  useEffect(() => {
47976
+ viewerUnmounted.current = false;
47972
47977
  return () => {
47978
+ viewerUnmounted.current = true;
47973
47979
  teardownCurrentCoreWorker({ graceful: true }).catch((e2) => {
47974
47980
  console.warn("DocViewer: core worker teardown failed", e2);
47975
47981
  });
@@ -47998,7 +48004,18 @@ function DocViewer({
47998
48004
  coreCreated.current = false;
47999
48005
  coreCreationInProgress.current = false;
48000
48006
  loadedInitialRendererState.current = false;
48001
- processLoadedDocState(e2.data.state);
48007
+ try {
48008
+ processLoadedDocState(e2.data.state);
48009
+ } catch (err) {
48010
+ setIsInErrorState?.(true);
48011
+ let message = "";
48012
+ if ("message" in err) {
48013
+ message = err.message;
48014
+ }
48015
+ setErrMsg(`Error loading doc state: ${message}`);
48016
+ reportCoreStartFailed();
48017
+ return;
48018
+ }
48002
48019
  if (render) {
48003
48020
  startCoreSafely();
48004
48021
  } else {
@@ -48162,7 +48179,7 @@ function DocViewer({
48162
48179
  }
48163
48180
  });
48164
48181
  }, [styleOverrides]);
48165
- async function initializeCoreWorkerForDoc(worker) {
48182
+ async function initializeCoreWorkerForDoc(worker, ownerCoreId = coreId.current) {
48166
48183
  const result2 = await initializeCoreWorker({
48167
48184
  coreWorker: worker,
48168
48185
  doenetML,
@@ -48171,15 +48188,21 @@ function DocViewer({
48171
48188
  docId,
48172
48189
  requestedVariantIndex,
48173
48190
  attemptNumber,
48174
- documentStructureCallback,
48191
+ documentStructureCallback: documentStructureCallback ? (structure) => {
48192
+ if (stillSpeaksForDocument(ownerCoreId)) {
48193
+ documentStructureCallback(structure);
48194
+ }
48195
+ } : void 0,
48175
48196
  fetchExternalDoenetML,
48176
48197
  documentLocale,
48177
48198
  localeResources: availableCatalogs
48178
48199
  });
48179
- setEffectiveDocumentLocale(result2.resolvedDocumentLocale);
48200
+ if (stillSpeaksForDocument(ownerCoreId)) {
48201
+ setEffectiveDocumentLocale(result2.resolvedDocumentLocale);
48202
+ }
48180
48203
  return result2;
48181
48204
  }
48182
- async function reinitializeCoreAndTerminateAnimations() {
48205
+ async function reinitializeCoreAndTerminateAnimations(ownerCoreId = coreId.current) {
48183
48206
  if (coreWorker.current !== null) {
48184
48207
  preventMoreAnimations.current = true;
48185
48208
  await teardownCurrentCoreWorker({ graceful: true });
@@ -48192,7 +48215,7 @@ function DocViewer({
48192
48215
  const remote = attachNewCoreWorker();
48193
48216
  coreCreated.current = false;
48194
48217
  coreCreationInProgress.current = false;
48195
- await initializeCoreWorkerForDoc(remote);
48218
+ await initializeCoreWorkerForDoc(remote, ownerCoreId);
48196
48219
  return remote;
48197
48220
  }
48198
48221
  function callAction({
@@ -48334,7 +48357,7 @@ function DocViewer({
48334
48357
  }
48335
48358
  }
48336
48359
  }
48337
- function initializeRenderers(args) {
48360
+ function initializeRenderers(args, ownerCoreId = coreId.current) {
48338
48361
  if (args.rendererState) {
48339
48362
  if (forceDisable || forceShowCorrectness || forceShowSolution || forceUnsuppressCheckWork) {
48340
48363
  forceRendererState({
@@ -48379,12 +48402,15 @@ function DocViewer({
48379
48402
  for (const rendererClassName of coreInfo.current.rendererTypesInDocument) {
48380
48403
  rendererClassNames.push(rendererClassName);
48381
48404
  rendererLoaders.push(
48382
- () => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./renderers/GraphFrame.tsx": () => import("./GraphFrame-CJnYmlxB.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-CqQeYbb_.js").then((n2) => n2.m), "./renderers/_error.tsx": () => import("./_error-DshBxNw7.js"), "./renderers/alert.tsx": () => import("./alert-boEZiy8P.js"), "./renderers/angle.tsx": () => import("./angle-Cg_cvHt2.js"), "./renderers/answer.tsx": () => import("./answer-Cv8KidCI.js"), "./renderers/asList.tsx": () => import("./asList-BRziaNyA.js"), "./renderers/blockQuote.tsx": () => import("./blockQuote-DHZVW_Gd.js"), "./renderers/boolean.tsx": () => import("./boolean-CD7ZkKG1.js"), "./renderers/booleanInput.tsx": () => import("./booleanInput-B2d95be3.js"), "./renderers/br.tsx": () => import("./br-BySBp0Qm.js"), "./renderers/button.tsx": () => import("./button-i7QU2Gp2.js"), "./renderers/c.tsx": () => import("./c-C6eFHKOm.js"), "./renderers/cell.tsx": () => import("./cell-CuBy_sd-.js"), "./renderers/choiceInput.tsx": () => import("./choiceInput-cCdnPZxl.js"), "./renderers/circle.tsx": () => import("./circle-Cl0ehDpP.js"), "./renderers/cobwebPolyline.tsx": () => import("./cobwebPolyline-CIbCw1DX.js"), "./renderers/codeEditor.tsx": () => import("./codeEditor-CVdj4BCY.js"), "./renderers/containerBlock.tsx": () => import("./containerBlock-DrN10qVb.js"), "./renderers/containerInline.tsx": () => import("./containerInline-BMaCC4K_.js"), "./renderers/curve.tsx": () => import("./curve-D_UKYjPX.js"), "./renderers/ellipsis.tsx": () => import("./ellipsis-CY3IE_8F.js"), "./renderers/em.tsx": () => import("./em-B1X1bCB5.js"), "./renderers/embed.tsx": () => import("./embed-CKDnpG5N.js"), "./renderers/feedback.tsx": () => import("./feedback-COUFZk1c.js"), "./renderers/figure.tsx": () => import("./figure-Blo3AaKP.js"), "./renderers/footnote.tsx": () => import("./footnote-LNP_5Px7.js"), "./renderers/fractionInput.tsx": () => import("./fractionInput-B0vgkmCH.js"), "./renderers/graph.tsx": () => import("./graph-tfQQFRA6.js"), "./renderers/hint.tsx": () => import("./hint-BNFwH9y4.js"), "./renderers/hr.tsx": () => import("./hr-DLtP75RR.js"), "./renderers/image.tsx": () => import("./image-BAVOKRjs.js"), "./renderers/label.tsx": () => import("./label-CcWhR8P3.js"), "./renderers/legend.tsx": () => import("./legend-CTr43fsJ.js"), "./renderers/line.tsx": () => import("./line-Uh10z24B.js"), "./renderers/lineSegment.tsx": () => import("./lineSegment-hVn537jV.js"), "./renderers/list.tsx": () => import("./list-C-YcT9Dk.js"), "./renderers/lq.tsx": () => import("./lq-Cj3uwOLp.js"), "./renderers/lsq.tsx": () => import("./lsq-7QeR5rpb.js"), "./renderers/math.tsx": () => import("./math-DrMdOcrl.js"), "./renderers/mathInput.tsx": () => import("./mathInput-CtURtu72.js"), "./renderers/matrixInput.tsx": () => import("./matrixInput-DgV6Rt8a.js"), "./renderers/mdash.tsx": () => import("./mdash-4WjRv6iT.js"), "./renderers/nbsp.tsx": () => import("./nbsp-yuITh3Y6.js"), "./renderers/ndash.tsx": () => import("./ndash-DkVZ1P1m.js"), "./renderers/number.tsx": () => import("./number-AVe_Yorf.js"), "./renderers/orbitalDiagram.tsx": () => import("./orbitalDiagram-BgRjqqBD.js"), "./renderers/orbitalDiagramInput.tsx": () => import("./orbitalDiagramInput-CbCVpaO2.js"), "./renderers/p.tsx": () => import("./p-B9P3Wh1I.js"), "./renderers/paginatorControls.tsx": () => import("./paginatorControls-CgRMs12_.js"), "./renderers/pegboard.tsx": () => import("./pegboard-DOmqpNmS.js"), "./renderers/point.tsx": () => import("./point-Dek6LcYq.js"), "./renderers/polygon.tsx": () => import("./polygon-CtjOBqjz.js"), "./renderers/polyline.tsx": () => import("./polyline-PBXmF4gv.js"), "./renderers/pre.tsx": () => import("./pre-CwsrcLE-.js"), "./renderers/prefigure.tsx": () => import("./prefigure-BYOevvcI.js"), "./renderers/pretzel.tsx": () => import("./pretzel-3C2U-3Z2.js"), "./renderers/q.tsx": () => import("./q-B0j14wnX.js"), "./renderers/ray.tsx": () => import("./ray-DquLwch7.js"), "./renderers/ref.tsx": () => import("./ref-gb-FQAGZ.js"), "./renderers/regionBetweenCurveXAxis.tsx": () => import("./regionBetweenCurveXAxis-BmWzX2yw.js"), "./renderers/regionBetweenCurves.tsx": () => import("./regionBetweenCurves-UTO3bi4h.js"), "./renderers/row.tsx": () => import("./row-CxL5y8rd.js"), "./renderers/rq.tsx": () => import("./rq-DObfWLeh.js"), "./renderers/rsq.tsx": () => import("./rsq-CPquodKd.js"), "./renderers/section.tsx": () => import("./section-DHS5-Mky.js"), "./renderers/sideBySide.tsx": () => import("./sideBySide-BZMviE2e.js"), "./renderers/slider.tsx": () => import("./slider-DQ_e-7JO.js"), "./renderers/slopeField.tsx": () => import("./slopeField-DhpVaCAs.js"), "./renderers/solution.tsx": () => import("./solution-CeOknXdN.js"), "./renderers/spreadsheet.tsx": () => import("./spreadsheet-Bb7QZCwp.js"), "./renderers/sq.tsx": () => import("./sq-DFXnQtlX.js"), "./renderers/subsetOfRealsInput.tsx": () => import("./subsetOfRealsInput-OMZK5TMU.js"), "./renderers/summaryStatistics.tsx": () => import("./summaryStatistics-DL5x6SV9.js"), "./renderers/table.tsx": () => import("./table-Ch6FGFNm.js"), "./renderers/tabular.tsx": () => import("./tabular-i1heii-8.js"), "./renderers/tag.tsx": () => import("./tag-BMGntAbf.js"), "./renderers/text.tsx": () => import("./text-Dc55QUnq.js"), "./renderers/textInput.tsx": () => import("./textInput-B3xysjq1.js"), "./renderers/vector.tsx": () => import("./vector-OZe-6Ily.js"), "./renderers/vectorField.tsx": () => import("./vectorField-D9u-3-c1.js"), "./renderers/video.tsx": () => import("./video-B3Ot8JE_.js") }), `./renderers/${rendererClassName}.tsx`, 3)
48405
+ () => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./renderers/GraphFrame.tsx": () => import("./GraphFrame-CoR6zZFS.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-Bq1h8yN6.js").then((n2) => n2.m), "./renderers/_error.tsx": () => import("./_error-B1JAx-ob.js"), "./renderers/alert.tsx": () => import("./alert-CvkDuRqi.js"), "./renderers/angle.tsx": () => import("./angle-BDZD0oAp.js"), "./renderers/answer.tsx": () => import("./answer-DnCm4w3g.js"), "./renderers/asList.tsx": () => import("./asList-BPDtyhFP.js"), "./renderers/blockQuote.tsx": () => import("./blockQuote-By6NN2EG.js"), "./renderers/boolean.tsx": () => import("./boolean-ULg_g9h3.js"), "./renderers/booleanInput.tsx": () => import("./booleanInput-CJgXieYS.js"), "./renderers/br.tsx": () => import("./br-B_MJywNl.js"), "./renderers/button.tsx": () => import("./button-k3kV2nYB.js"), "./renderers/c.tsx": () => import("./c-DMW2serk.js"), "./renderers/cell.tsx": () => import("./cell-BwreMR82.js"), "./renderers/choiceInput.tsx": () => import("./choiceInput-nqoJpFM9.js"), "./renderers/circle.tsx": () => import("./circle-DP5PVQ57.js"), "./renderers/cobwebPolyline.tsx": () => import("./cobwebPolyline-BkwcXd8R.js"), "./renderers/codeEditor.tsx": () => import("./codeEditor-COhhb7wH.js"), "./renderers/containerBlock.tsx": () => import("./containerBlock-B4p79ga5.js"), "./renderers/containerInline.tsx": () => import("./containerInline-b4gD_dws.js"), "./renderers/curve.tsx": () => import("./curve-CHP53IOC.js"), "./renderers/ellipsis.tsx": () => import("./ellipsis-DRfYwdzZ.js"), "./renderers/em.tsx": () => import("./em-B7-gUmqe.js"), "./renderers/embed.tsx": () => import("./embed-CmPH08aV.js"), "./renderers/feedback.tsx": () => import("./feedback-Ceo6f3yn.js"), "./renderers/figure.tsx": () => import("./figure-3Hq1EnOM.js"), "./renderers/footnote.tsx": () => import("./footnote-D7RYIrVb.js"), "./renderers/fractionInput.tsx": () => import("./fractionInput-DLOWjDLI.js"), "./renderers/graph.tsx": () => import("./graph-B0fmps0e.js"), "./renderers/hint.tsx": () => import("./hint-HzAGnzGA.js"), "./renderers/hr.tsx": () => import("./hr-D2-K7x8O.js"), "./renderers/image.tsx": () => import("./image-DK5RM3SK.js"), "./renderers/label.tsx": () => import("./label-C2R0RtI5.js"), "./renderers/legend.tsx": () => import("./legend-DdY3z3O9.js"), "./renderers/line.tsx": () => import("./line-iUHka3pR.js"), "./renderers/lineSegment.tsx": () => import("./lineSegment-DBrrRMbb.js"), "./renderers/list.tsx": () => import("./list-CC02MNvZ.js"), "./renderers/lq.tsx": () => import("./lq-q7qprVSb.js"), "./renderers/lsq.tsx": () => import("./lsq-jUtkHSDC.js"), "./renderers/math.tsx": () => import("./math-CeuOGNyS.js"), "./renderers/mathInput.tsx": () => import("./mathInput-STleJNTX.js"), "./renderers/matrixInput.tsx": () => import("./matrixInput-tLWhu4j6.js"), "./renderers/mdash.tsx": () => import("./mdash-CD2JKxkq.js"), "./renderers/nbsp.tsx": () => import("./nbsp-De--mMwo.js"), "./renderers/ndash.tsx": () => import("./ndash-TpfqxeCb.js"), "./renderers/number.tsx": () => import("./number-y4gfrlw9.js"), "./renderers/orbitalDiagram.tsx": () => import("./orbitalDiagram-B4QxQhcb.js"), "./renderers/orbitalDiagramInput.tsx": () => import("./orbitalDiagramInput-Dzv0gwgO.js"), "./renderers/p.tsx": () => import("./p-DxoLDBQi.js"), "./renderers/paginatorControls.tsx": () => import("./paginatorControls-BWiE0HBB.js"), "./renderers/pegboard.tsx": () => import("./pegboard-C0Adh_43.js"), "./renderers/point.tsx": () => import("./point-CHznhj63.js"), "./renderers/polygon.tsx": () => import("./polygon-CU1FPxpV.js"), "./renderers/polyline.tsx": () => import("./polyline-BHuszkzT.js"), "./renderers/pre.tsx": () => import("./pre-D-g_jk88.js"), "./renderers/prefigure.tsx": () => import("./prefigure-GOVqurod.js"), "./renderers/pretzel.tsx": () => import("./pretzel-DJQ6qCSl.js"), "./renderers/q.tsx": () => import("./q-BCLAkLFl.js"), "./renderers/ray.tsx": () => import("./ray-DAFTYk5O.js"), "./renderers/ref.tsx": () => import("./ref-CZ5sA88e.js"), "./renderers/regionBetweenCurveXAxis.tsx": () => import("./regionBetweenCurveXAxis-BOogk9l8.js"), "./renderers/regionBetweenCurves.tsx": () => import("./regionBetweenCurves-38QNZodB.js"), "./renderers/row.tsx": () => import("./row-zyewjtmj.js"), "./renderers/rq.tsx": () => import("./rq-9yTyIeeD.js"), "./renderers/rsq.tsx": () => import("./rsq-Cn0b8WQG.js"), "./renderers/section.tsx": () => import("./section-BYNBuO3r.js"), "./renderers/sideBySide.tsx": () => import("./sideBySide-OuKpmQLa.js"), "./renderers/slider.tsx": () => import("./slider-BQ3wLOwR.js"), "./renderers/slopeField.tsx": () => import("./slopeField-Cy3yTScw.js"), "./renderers/solution.tsx": () => import("./solution-_hPAXnKh.js"), "./renderers/spreadsheet.tsx": () => import("./spreadsheet-5SUvg7IK.js"), "./renderers/sq.tsx": () => import("./sq-DL1MOouF.js"), "./renderers/subsetOfRealsInput.tsx": () => import("./subsetOfRealsInput-4MmqB_Vb.js"), "./renderers/summaryStatistics.tsx": () => import("./summaryStatistics-Dr4zaYfC.js"), "./renderers/table.tsx": () => import("./table-CRgfHe5B.js"), "./renderers/tabular.tsx": () => import("./tabular-D3QmFZAN.js"), "./renderers/tag.tsx": () => import("./tag-Cnjb85Kf.js"), "./renderers/text.tsx": () => import("./text-Xm4fKkll.js"), "./renderers/textInput.tsx": () => import("./textInput-BXYovocc.js"), "./renderers/vector.tsx": () => import("./vector-Dju-cA7W.js"), "./renderers/vectorField.tsx": () => import("./vectorField-BV6FAaCj.js"), "./renderers/video.tsx": () => import("./video-CITdZVjK.js") }), `./renderers/${rendererClassName}.tsx`, 3)
48383
48406
  );
48384
48407
  }
48385
48408
  const documentComponentInstructions = coreInfo.current.documentToRender;
48386
48409
  renderersLoadComponent(rendererLoaders, rendererClassNames).then(
48387
48410
  ({ rendererClasses: newRendererClasses, failedRenderers }) => {
48411
+ if (!stillSpeaksForDocument(ownerCoreId)) {
48412
+ return;
48413
+ }
48388
48414
  if (failedRenderers.length > 0) {
48389
48415
  errorInitializingRenderers.current = true;
48390
48416
  }
@@ -48501,10 +48527,16 @@ function DocViewer({
48501
48527
  }
48502
48528
  }
48503
48529
  }
48504
- async function loadStateAndInitialize() {
48505
- const coreIdWhenCalled = coreId.current;
48530
+ async function loadStateAndInitialize(coreIdWhenCalled) {
48506
48531
  let loadedState = false;
48507
- cid.current = await cidFromText(doenetML);
48532
+ if (doenetGlobalConfig.__doenetTestCoreInitHook) {
48533
+ await doenetGlobalConfig.__doenetTestCoreInitHook("stateLoad", 0);
48534
+ }
48535
+ const documentCid = await cidFromText(doenetML);
48536
+ if (!stillSpeaksForDocument(coreIdWhenCalled)) {
48537
+ return;
48538
+ }
48539
+ cid.current = documentCid;
48508
48540
  if (flags.allowLocalState) {
48509
48541
  let localInfo;
48510
48542
  try {
@@ -48516,6 +48548,9 @@ function DocViewer({
48516
48548
  }
48517
48549
  } catch (e2) {
48518
48550
  }
48551
+ if (!stillSpeaksForDocument(coreIdWhenCalled)) {
48552
+ return;
48553
+ }
48519
48554
  if (localInfo) {
48520
48555
  const coreState = JSON.parse(
48521
48556
  localInfo.coreState,
@@ -48530,10 +48565,13 @@ function DocViewer({
48530
48565
  serializedComponentsReviver
48531
48566
  );
48532
48567
  loadedInitialRendererState.current = Boolean(rendererState);
48533
- initializeRenderers({
48534
- rendererState,
48535
- coreInfo: coreInfo2
48536
- });
48568
+ initializeRenderers(
48569
+ {
48570
+ rendererState,
48571
+ coreInfo: coreInfo2
48572
+ },
48573
+ coreIdWhenCalled
48574
+ );
48537
48575
  initialCoreData.current = {
48538
48576
  coreState,
48539
48577
  requestedVariant: JSON.parse(
@@ -48559,17 +48597,21 @@ function DocViewer({
48559
48597
  });
48560
48598
  }
48561
48599
  } catch (e2) {
48600
+ if (!stillSpeaksForDocument(coreIdWhenCalled)) {
48601
+ return;
48602
+ }
48562
48603
  setIsInErrorState?.(true);
48563
48604
  let message = "";
48564
48605
  if ("message" in e2) {
48565
48606
  message = e2.message;
48566
48607
  }
48567
48608
  setErrMsg(`Error loading doc state: ${message}`);
48609
+ reportCoreStartFailed();
48568
48610
  return;
48569
48611
  }
48570
48612
  }
48571
48613
  }
48572
- if (coreIdWhenCalled === coreId.current) {
48614
+ if (stillSpeaksForDocument(coreIdWhenCalled)) {
48573
48615
  if (render) {
48574
48616
  startCoreSafely();
48575
48617
  } else {
@@ -48630,13 +48672,21 @@ function DocViewer({
48630
48672
  )
48631
48673
  );
48632
48674
  setHasInitialError(true);
48675
+ reportCoreStartFailed();
48676
+ }
48677
+ function reportCoreStartFailed() {
48678
+ if (coreStartFailureReportedFor.current === coreId.current) {
48679
+ return;
48680
+ }
48681
+ coreStartFailureReportedFor.current = coreId.current;
48682
+ coreStartFailedCallback?.({ activityId, docId });
48633
48683
  }
48634
- async function handshakeCore(attempt) {
48684
+ async function handshakeCore(attempt, ownerCoreId) {
48635
48685
  let thisCoreWorker = coreWorker.current;
48636
48686
  if (attempt > 0 || coreCreated.current || !thisCoreWorker) {
48637
- thisCoreWorker = await reinitializeCoreAndTerminateAnimations();
48687
+ thisCoreWorker = await reinitializeCoreAndTerminateAnimations(ownerCoreId);
48638
48688
  } else {
48639
- await initializeCoreWorkerForDoc(thisCoreWorker);
48689
+ await initializeCoreWorkerForDoc(thisCoreWorker, ownerCoreId);
48640
48690
  }
48641
48691
  if (doenetGlobalConfig.__doenetTestCoreInitHook) {
48642
48692
  await doenetGlobalConfig.__doenetTestCoreInitHook(
@@ -48646,8 +48696,19 @@ function DocViewer({
48646
48696
  }
48647
48697
  return thisCoreWorker;
48648
48698
  }
48649
- async function startCore() {
48699
+ function stillSpeaksForDocument(launchedFor) {
48700
+ return !viewerUnmounted.current && coreId.current === launchedFor;
48701
+ }
48702
+ async function startCore(coreIdWhenCalled) {
48650
48703
  setHasInitialError(false);
48704
+ function bootAbandoned() {
48705
+ return !stillSpeaksForDocument(coreIdWhenCalled);
48706
+ }
48707
+ async function standDown() {
48708
+ if (viewerUnmounted.current) {
48709
+ await teardownCurrentCoreWorker({ graceful: true });
48710
+ }
48711
+ }
48651
48712
  const maxAttempts = Math.max(
48652
48713
  1,
48653
48714
  doenetGlobalConfig.coreBootMaxAttempts ?? DEFAULT_CORE_BOOT_MAX_ATTEMPTS
@@ -48656,15 +48717,27 @@ function DocViewer({
48656
48717
  let thisCoreWorker = null;
48657
48718
  let handshakeSucceeded = false;
48658
48719
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
48720
+ if (bootAbandoned()) {
48721
+ await standDown();
48722
+ return;
48723
+ }
48659
48724
  try {
48660
48725
  thisCoreWorker = await withTimeout(
48661
- () => handshakeCore(attempt),
48726
+ () => handshakeCore(attempt, coreIdWhenCalled),
48662
48727
  handshakeWatchdogMs,
48663
48728
  `core worker handshake (attempt ${attempt + 1}/${maxAttempts})`
48664
48729
  );
48665
48730
  handshakeSucceeded = true;
48666
48731
  break;
48667
48732
  } catch (err) {
48733
+ if (bootAbandoned()) {
48734
+ console.warn(
48735
+ "DocViewer: abandoning a superseded core worker handshake",
48736
+ err
48737
+ );
48738
+ await standDown();
48739
+ return;
48740
+ }
48668
48741
  console.warn(
48669
48742
  `DocViewer: core worker handshake attempt ${attempt + 1} of ${maxAttempts} failed` + (attempt + 1 < maxAttempts ? "; retrying with a fresh worker." : "; giving up."),
48670
48743
  err
@@ -48679,12 +48752,20 @@ function DocViewer({
48679
48752
  }
48680
48753
  }
48681
48754
  }
48755
+ if (bootAbandoned()) {
48756
+ await standDown();
48757
+ return;
48758
+ }
48682
48759
  if (!handshakeSucceeded || thisCoreWorker === null) {
48683
48760
  failCoreStart();
48684
48761
  return;
48685
48762
  }
48686
48763
  onActionCallbacks.current.clear();
48687
48764
  coreCreationInProgress.current = true;
48765
+ const speakingFor = (callback) => {
48766
+ return (...args) => stillSpeaksForDocument(coreIdWhenCalled) ? callback(...args) : void 0;
48767
+ };
48768
+ const requestSolutionViewIfCurrent = (componentIdx) => stillSpeaksForDocument(coreIdWhenCalled) ? requestSolutionView(componentIdx) : Promise.resolve({ allowView: false });
48688
48769
  let dastResult;
48689
48770
  try {
48690
48771
  if (doenetGlobalConfig.__doenetTestCoreInitHook) {
@@ -48707,23 +48788,34 @@ function DocViewer({
48707
48788
  ) : void 0,
48708
48789
  initializeCounters: initializeCounters.current
48709
48790
  },
48710
- proxy(updateRenderers),
48711
- proxy(reportScoreAndStateCallback),
48791
+ proxy(speakingFor(updateRenderers)),
48792
+ proxy(speakingFor(reportScoreAndStateCallback)),
48712
48793
  proxy(requestAnimationFrame2),
48713
48794
  proxy(cancelAnimationFrame2),
48714
- proxy(copyToClipboard),
48715
- proxy(sendEvent),
48716
- proxy(requestSolutionView)
48795
+ proxy(speakingFor(copyToClipboard)),
48796
+ proxy(speakingFor(sendEvent)),
48797
+ proxy(requestSolutionViewIfCurrent)
48717
48798
  );
48718
48799
  } catch (err) {
48800
+ if (bootAbandoned()) {
48801
+ await standDown();
48802
+ return;
48803
+ }
48719
48804
  console.warn("DocViewer: generateJavascriptDast failed", err);
48720
48805
  failCoreStart();
48721
48806
  return;
48722
48807
  }
48808
+ if (bootAbandoned()) {
48809
+ await standDown();
48810
+ return;
48811
+ }
48723
48812
  if (dastResult.success) {
48724
48813
  if (coreInfo.current && JSON.stringify(coreInfo.current) === JSON.stringify(dastResult.coreInfo) && !errorInitializingRenderers.current && !errorInsideRenderers.current) ;
48725
48814
  else {
48726
- initializeRenderers({ coreInfo: dastResult.coreInfo });
48815
+ initializeRenderers(
48816
+ { coreInfo: dastResult.coreInfo },
48817
+ coreIdWhenCalled
48818
+ );
48727
48819
  if (errorInsideRenderers.current) {
48728
48820
  setIgnoreRendererError(true);
48729
48821
  setIsInErrorState?.(false);
@@ -48755,11 +48847,28 @@ function DocViewer({
48755
48847
  initializedCallback?.({ activityId, docId });
48756
48848
  }
48757
48849
  function startCoreSafely() {
48758
- startCore().catch((e2) => {
48850
+ const launchedFor = coreId.current;
48851
+ if (bootLadderCoreId.current === launchedFor) {
48852
+ return;
48853
+ }
48854
+ bootLadderCoreId.current = launchedFor;
48855
+ runBootLadder(launchedFor).catch((e2) => {
48759
48856
  console.warn("DocViewer: startCore failed unexpectedly", e2);
48857
+ if (!stillSpeaksForDocument(launchedFor) || coreCreated.current) {
48858
+ return;
48859
+ }
48760
48860
  failCoreStart();
48761
48861
  });
48762
48862
  }
48863
+ async function runBootLadder(launchedFor) {
48864
+ try {
48865
+ await startCore(launchedFor);
48866
+ } finally {
48867
+ if (bootLadderCoreId.current === launchedFor) {
48868
+ bootLadderCoreId.current = null;
48869
+ }
48870
+ }
48871
+ }
48763
48872
  function requestAnimationFrame2({
48764
48873
  action,
48765
48874
  actionArgs,
@@ -48937,9 +49046,12 @@ function DocViewer({
48937
49046
  loadedInitialRendererState.current = false;
48938
49047
  positionByDomId.current.clear();
48939
49048
  setStage("wait");
48940
- loadStateAndInitialize().catch((e2) => {
49049
+ const loadingFor = coreId.current;
49050
+ loadStateAndInitialize(loadingFor).catch((e2) => {
48941
49051
  console.warn("DocViewer: loadStateAndInitialize failed", e2);
48942
- failCoreStart();
49052
+ if (stillSpeaksForDocument(loadingFor)) {
49053
+ failCoreStart();
49054
+ }
48943
49055
  });
48944
49056
  return null;
48945
49057
  }
@@ -188929,12 +189041,12 @@ function EditorFooter({
188929
189041
  className: "doenetml-version",
188930
189042
  title: t4(
188931
189043
  "editor-version-title",
188932
- { version: "0.7.24-dev.484" },
188933
- `DoenetML version ${"0.7.24-dev.484"}`
189044
+ { version: "0.7.24-dev.486" },
189045
+ `DoenetML version ${"0.7.24-dev.486"}`
188934
189046
  ),
188935
189047
  children: [
188936
189048
  "v",
188937
- "0.7.24-dev.484"
189049
+ "0.7.24-dev.486"
188938
189050
  ]
188939
189051
  }
188940
189052
  ),
@@ -196910,6 +197022,7 @@ const EditorViewer = React__default.forwardRef(function EditorViewer2({
196910
197022
  doenetmlChangeCallback,
196911
197023
  immediateDoenetmlChangeCallback,
196912
197024
  documentStructureCallback,
197025
+ coreStartFailedCallback,
196913
197026
  diagnosticsSummaryCallback,
196914
197027
  id: specifiedId,
196915
197028
  readOnly: readOnly2 = false,
@@ -197657,6 +197770,7 @@ const EditorViewer = React__default.forwardRef(function EditorViewer2({
197657
197770
  requestedVariantIndex: variants.index,
197658
197771
  setDiagnosticsCallback,
197659
197772
  documentStructureCallback: documentStructureThenChangeCallback,
197773
+ coreStartFailedCallback,
197660
197774
  doenetViewerUrl,
197661
197775
  doenetImagesUrl,
197662
197776
  darkMode,
@@ -197797,6 +197911,7 @@ function DoenetViewer({
197797
197911
  generatedVariantCallback: specifiedGeneratedVariantCallback,
197798
197912
  documentStructureCallback,
197799
197913
  initializedCallback,
197914
+ coreStartFailedCallback,
197800
197915
  setDiagnosticsCallback,
197801
197916
  setErrorsAndWarningsCallback,
197802
197917
  forceDisable = false,
@@ -197924,6 +198039,7 @@ function DoenetViewer({
197924
198039
  generatedVariantCallback,
197925
198040
  documentStructureCallback,
197926
198041
  initializedCallback,
198042
+ coreStartFailedCallback,
197927
198043
  setDiagnosticsCallback: effectiveDiagnosticsCallback,
197928
198044
  forceDisable,
197929
198045
  forceShowCorrectness,
@@ -198013,6 +198129,7 @@ const DoenetEditor = React__default.forwardRef(function DoenetEditor2({
198013
198129
  doenetmlChangeCallback,
198014
198130
  immediateDoenetmlChangeCallback,
198015
198131
  documentStructureCallback,
198132
+ coreStartFailedCallback,
198016
198133
  diagnosticsSummaryCallback,
198017
198134
  id: id2,
198018
198135
  readOnly: readOnly2 = false,
@@ -198082,6 +198199,7 @@ const DoenetEditor = React__default.forwardRef(function DoenetEditor2({
198082
198199
  doenetmlChangeCallback,
198083
198200
  immediateDoenetmlChangeCallback,
198084
198201
  documentStructureCallback,
198202
+ coreStartFailedCallback,
198085
198203
  diagnosticsSummaryCallback,
198086
198204
  id: id2,
198087
198205
  readOnly: readOnly2,
@@ -1,5 +1,5 @@
1
- import { n as doenetGlobalConfig } from "./doenetml-aUmY9leg.js";
2
- import { C, D, a, c, b, d, f, g, e, h, i, m, j, r, s, k, l } from "./doenetml-aUmY9leg.js";
1
+ import { n as doenetGlobalConfig } from "./doenetml-DYY06WUu.js";
2
+ import { C, D, a, c, b, d, f, g, e, h, i, m, j, r, s, k, l } from "./doenetml-DYY06WUu.js";
3
3
  const workerPath = "./doenetml-worker/index.js";
4
4
  function resolveWorkerUrl() {
5
5
  try {