@doenet/doenetml 0.7.21-dev.415 → 0.7.21-dev.417

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 (141) hide show
  1. package/{AnswerResponseButton-CsMwAC3t.js → AnswerResponseButton-DRQPLlOM.js} +2 -2
  2. package/{Description-B_KGuyjX.js → Description-DzHJcqCq.js} +1 -1
  3. package/{GraphFrame-BCe-sXyY.js → GraphFrame-BrgLBP-l.js} +2 -2
  4. package/{JSXGraphRenderer-CTbAGksr.js → JSXGraphRenderer-3rMxl-PD.js} +3 -2
  5. package/{NonInlineMediaWrapper-DqUh14n5.js → NonInlineMediaWrapper-CTSA5ztb.js} +1 -1
  6. package/Viewer/DocViewer.d.ts.map +1 -1
  7. package/Viewer/renderers/JSXGraphRenderer.d.ts.map +1 -1
  8. package/Viewer/renderers/_error.d.ts.map +1 -1
  9. package/Viewer/renderers/cell.d.ts.map +1 -1
  10. package/Viewer/renderers/feedback.d.ts.map +1 -1
  11. package/Viewer/renderers/fractionInput.d.ts.map +1 -1
  12. package/Viewer/renderers/hint.d.ts.map +1 -1
  13. package/Viewer/renderers/lineSegment.d.ts.map +1 -1
  14. package/Viewer/renderers/mathInput.d.ts.map +1 -1
  15. package/Viewer/renderers/mathquill/EditableMathField.d.ts.map +1 -1
  16. package/Viewer/renderers/matrixInput.d.ts.map +1 -1
  17. package/Viewer/renderers/orbitalDiagram.d.ts.map +1 -1
  18. package/Viewer/renderers/orbitalDiagramInput.d.ts.map +1 -1
  19. package/Viewer/renderers/polyline.d.ts.map +1 -1
  20. package/Viewer/renderers/prefigure.d.ts.map +1 -1
  21. package/Viewer/renderers/pretzel.d.ts.map +1 -1
  22. package/Viewer/renderers/row.d.ts.map +1 -1
  23. package/Viewer/renderers/section.d.ts.map +1 -1
  24. package/Viewer/renderers/sideBySide.d.ts.map +1 -1
  25. package/Viewer/renderers/slider.d.ts.map +1 -1
  26. package/Viewer/renderers/solution.d.ts.map +1 -1
  27. package/Viewer/renderers/spreadsheet.d.ts.map +1 -1
  28. package/Viewer/renderers/subsetOfRealsInput.d.ts.map +1 -1
  29. package/Viewer/renderers/summaryStatistics.d.ts.map +1 -1
  30. package/Viewer/renderers/textInput.d.ts.map +1 -1
  31. package/Viewer/renderers/utils/buildGraphicalAttributes.d.ts +28 -0
  32. package/Viewer/renderers/utils/buildGraphicalAttributes.d.ts.map +1 -1
  33. package/Viewer/renderers/utils/buildGraphicalAttributes.test.d.ts +2 -0
  34. package/Viewer/renderers/utils/buildGraphicalAttributes.test.d.ts.map +1 -0
  35. package/Viewer/renderers/utils/direction.d.ts +39 -0
  36. package/Viewer/renderers/utils/direction.d.ts.map +1 -0
  37. package/Viewer/renderers/vector.d.ts.map +1 -1
  38. package/{_error-8CVqZvs9.js → _error-BIkDYkum.js} +4 -3
  39. package/{alert-CnVNVwp0.js → alert-40qlFB8j.js} +3 -3
  40. package/{angle-DtykfDvk.js → angle-BOqYrXfU.js} +6 -6
  41. package/{answer-D8_55NUB.js → answer-Dgwe0dei.js} +6 -6
  42. package/{asList-Cvb4HFYc.js → asList-B1sJDQs3.js} +2 -2
  43. package/{blockQuote-CD7LAibH.js → blockQuote-BsG2geQs.js} +3 -3
  44. package/{boolean-i9xt_Fyy.js → boolean-N29Fwify.js} +2 -2
  45. package/{booleanInput-DxN2aj4D.js → booleanInput-CcgJltzp.js} +7 -7
  46. package/{br-Ch6INIwC.js → br-BQAkKbws.js} +2 -2
  47. package/{buildGraphicalAttributes-C7PtyKL7.js → buildGraphicalAttributes-0RNcbd2S.js} +22 -2
  48. package/{button-B5SnRU2e.js → button-D3QT17Wd.js} +4 -4
  49. package/{c-DArDpN4A.js → c-Daf8CQwR.js} +3 -3
  50. package/{cell-BFX6fxf0.js → cell-BNmEKrA0.js} +3 -3
  51. package/{choiceInput-DXKjyCqp.js → choiceInput-DWcLPKV7.js} +8 -8
  52. package/{circle-AbQzXEA5.js → circle-L-xmtaHy.js} +7 -7
  53. package/{cobwebPolyline-CB6cVyKX.js → cobwebPolyline-BVdEUH2r.js} +4 -4
  54. package/{codeEditor-D0vhTs3g.js → codeEditor-D0xuKEXG.js} +2 -2
  55. package/{composites-BY7-JuTc.js → composites-Dxl9i1nS.js} +1 -1
  56. package/{containerBlock-Cm-kBh3q.js → containerBlock-CdpPaxoi.js} +4 -4
  57. package/{containerInline-CcOaOhs8.js → containerInline-DHFXTqAT.js} +4 -4
  58. package/{curve-CdVn_xI2.js → curve-5OW8O5t-.js} +4 -4
  59. package/direction-BwrU7jHk.js +9 -0
  60. package/{doenetml-RwjW6x7w.js → doenetml-DynV7ZDD.js} +341 -102
  61. package/doenetml-external-worker.js +2 -2
  62. package/doenetml-inline-worker.js +2 -2
  63. package/doenetml.d.ts.map +1 -1
  64. package/{ellipsis-DVinv6-1.js → ellipsis-BJoPJy0v.js} +2 -2
  65. package/{em-B8Bn3iQ8.js → em-C4h-YkRj.js} +3 -3
  66. package/{embed-CCP_3Jzm.js → embed-CjlH0jbC.js} +2 -2
  67. package/{feedback-C7b_K-S3.js → feedback-EFnq4fTf.js} +6 -5
  68. package/{figure-vxfnUy1i.js → figure-BiAWioqb.js} +3 -3
  69. package/{fillPatterns-Cwsbhubm.js → fillPatterns-DmAM78RG.js} +1 -1
  70. package/{footnote-DniX_WDV.js → footnote-U6eszrz5.js} +3 -3
  71. package/{fractionInput-Byd4TDY-.js → fractionInput-Xkm2Vb3z.js} +7 -7
  72. package/{graph-BpbjUn8w.js → graph-BShdY7M2.js} +6 -6
  73. package/{hint-BSyMGzDu.js → hint-BJlVCHDc.js} +6 -5
  74. package/{hr-Dv_52Wxd.js → hr-D15XJLML.js} +2 -2
  75. package/{image-CDzqgIV7.js → image-unzIQyP1.js} +7 -7
  76. package/{index-Ci4K0tDE.js → index-D-0t5xCk.js} +1 -1
  77. package/{index.es-BCeR6l3D.js → index.es-B8Vdrw0-.js} +1 -1
  78. package/index.js +1 -1
  79. package/{label-BpLxA1Ur.js → label-D8LiLGZ0.js} +6 -6
  80. package/{labelWithLatex-CsOmIYzz.js → labelWithLatex-VCThzoHG.js} +1 -1
  81. package/{legend-ZPzJ1SLv.js → legend-wHw8PHjz.js} +4 -4
  82. package/{line-B1QiilgT.js → line-BcmltQzB.js} +7 -7
  83. package/{lineFamilyDragHandlers-DVSxZbFk.js → lineFamilyDragHandlers-HSo2HwSH.js} +1 -1
  84. package/{lineSegment-CT3KASYT.js → lineSegment-BYs7yPxL.js} +14 -18
  85. package/{list-CseGxUq-.js → list-79YU2kl7.js} +4 -4
  86. package/{lq-CAAidAOg.js → lq-PHOAGpAp.js} +2 -2
  87. package/{lsq-B28Z8bv3.js → lsq-DAA0vTFL.js} +2 -2
  88. package/{markupRenderer-BtKUERzJ.js → markupRenderer-BJWUpWkE.js} +1 -1
  89. package/{math-BREIxh-E.js → math-BVfjIEHd.js} +6 -6
  90. package/{mathInput-BkKkb63g.js → mathInput-BtcN3WJR.js} +36 -19
  91. package/{matrixInput-BNWpketN.js → matrixInput-lugF0Kwk.js} +8 -8
  92. package/{mdash-9jp_u7Un.js → mdash-DB7_sXiL.js} +2 -2
  93. package/{nbsp-C8hCQ6TS.js → nbsp-j9m7y0-y.js} +2 -2
  94. package/{ndash-CmJAVnNq.js → ndash-COenOscW.js} +2 -2
  95. package/{number-r1umcD9p.js → number-C5IDajKV.js} +6 -6
  96. package/{orbitalDiagram-CaNwebaQ.js → orbitalDiagram-LpaATJ7G.js} +10 -3
  97. package/{orbitalDiagramInput-B5JhTAdB.js → orbitalDiagramInput-CYnhgICY.js} +13 -6
  98. package/{p-DP7YNDfx.js → p-COajOvYn.js} +4 -4
  99. package/package.json +1 -1
  100. package/{paginatorControls-B-qNFkKU.js → paginatorControls-DzpHO-mO.js} +2 -2
  101. package/{pegboard-D7nAJ6RY.js → pegboard-BdfertiY.js} +4 -4
  102. package/{point-C59ja3n2.js → point-BLFxaE8O.js} +6 -6
  103. package/{polygon-CT-ARozK.js → polygon-DSoochqM.js} +7 -7
  104. package/{polyline-DeGq7WP0.js → polyline-CTIot66d.js} +9 -15
  105. package/{pre-BHH6fa9U.js → pre-xCSl5oZL.js} +3 -3
  106. package/{prefigure-BnSkAPHE.js → prefigure-FCWzkIVy.js} +2 -1
  107. package/{pretzel-CC5NgapN.js → pretzel-RAJStYo8.js} +9 -6
  108. package/{q-CcNznZUD.js → q-DRh3HpI-.js} +3 -3
  109. package/{ray-D1b2GIcp.js → ray-CG-m02gI.js} +6 -6
  110. package/{ref-OLToqdQ5.js → ref-C2DexbxV.js} +2 -2
  111. package/{regionBetweenCurveXAxis-PPEOPw8t.js → regionBetweenCurveXAxis-C1iatjqu.js} +5 -5
  112. package/{regionBetweenCurves-DOtEzJak.js → regionBetweenCurves-Cv-DJCUB.js} +5 -5
  113. package/{row-D42z_svT.js → row-DUzsOO4i.js} +2 -2
  114. package/{rq-DdecWWBG.js → rq-DBf5-NZS.js} +2 -2
  115. package/{rsq-D2qKFBXV.js → rsq-CRwgd5gN.js} +2 -2
  116. package/{section-AwW9I9a-.js → section-CEh-TNeP.js} +47 -50
  117. package/{sha256-Bzrm4-tO-BHq68al3.js → sha256-Bzrm4-tO-D5VzcQ6q.js} +1 -1
  118. package/{sideBySide-BE1-5d7U.js → sideBySide-C_9_ghNz.js} +8 -2
  119. package/{slider-B92oejpK.js → slider-DOgzk4EE.js} +34 -25
  120. package/{solution-DuvHYP7q.js → solution-CKUSv0BJ.js} +6 -5
  121. package/{spreadsheet-CYi5VTRB.js → spreadsheet-P7U0r_qV.js} +3 -2
  122. package/{sq-CGmtbJG8.js → sq-CTORexcM.js} +3 -3
  123. package/style.css +240 -176
  124. package/{subsetOfRealsInput-Dof9pDQJ.js → subsetOfRealsInput-CsAQMYD4.js} +71 -61
  125. package/{summaryStatistics-CHLmwy4B.js → summaryStatistics-BBREeWvh.js} +4 -3
  126. package/{table-Ds4FsDXG.js → table-Bhb19es1.js} +2 -2
  127. package/{tabular-D93ZooVU.js → tabular-DBI3KqQP.js} +2 -2
  128. package/{tag-CQG7jGLX.js → tag-BtGckMpT.js} +2 -2
  129. package/{text-Cs4GBrRa.js → text-7k2wXfRf.js} +6 -6
  130. package/{textInput-D08eVSJy.js → textInput-lbnI_I3U.js} +8 -8
  131. package/{tooltip-provider-mEVAI_oo.js → tooltip-provider-C8VlkKT9.js} +1 -1
  132. package/{useAnchoredGraphDragHandler-CE3goik5.js → useAnchoredGraphDragHandler-CRPtaTJZ.js} +1 -1
  133. package/useDoenetRenderer-By1VsaDX.js +114 -0
  134. package/{useSubmitActionWithDelay-Bl1nM1Rc.js → useSubmitActionWithDelay-DBCED73A.js} +2 -2
  135. package/utils/diagnostics.d.ts +7 -0
  136. package/utils/diagnostics.d.ts.map +1 -1
  137. package/utils/i18n.d.ts +67 -1
  138. package/utils/i18n.d.ts.map +1 -1
  139. package/{vector-DTjqdT0D.js → vector-lV5ajE68.js} +10 -16
  140. package/{video-Bj4ChYgg.js → video-C-iSvsQk.js} +4 -4
  141. package/useDoenetRenderer-BUPvEAwn.js +0 -114
@@ -2334,6 +2334,8 @@ function normalizeLocaleTag(tag2) {
2334
2334
  }
2335
2335
  }
2336
2336
  const PSEUDO_LOCALE = "en-XA";
2337
+ const PSEUDO_RTL_LOCALE = "en-XB";
2338
+ const PSEUDO_RTL_BRACKETS = ["‏»", "«‏"];
2337
2339
  const ACCENT_MAP = {
2338
2340
  a: "á",
2339
2341
  b: "ƀ",
@@ -2456,27 +2458,189 @@ function pseudoLocalize(ftlSource, options2 = {}) {
2456
2458
  return `${split.prefix}${open}${text2}${padding}${close}`;
2457
2459
  }).join("\n");
2458
2460
  }
2461
+ const RTL_SCRIPTS = /* @__PURE__ */ new Set([
2462
+ "Adlm",
2463
+ // Adlam
2464
+ "Arab",
2465
+ // Arabic
2466
+ "Aran",
2467
+ // Nastaliq
2468
+ "Armi",
2469
+ // Imperial Aramaic
2470
+ "Avst",
2471
+ // Avestan
2472
+ "Cprt",
2473
+ // Cypriot
2474
+ "Egyp",
2475
+ // Egyptian hieroglyphs
2476
+ "Elym",
2477
+ // Elymaic
2478
+ "Gara",
2479
+ // Garay
2480
+ "Hatr",
2481
+ // Hatran
2482
+ "Hebr",
2483
+ // Hebrew
2484
+ "Hung",
2485
+ // Old Hungarian
2486
+ "Khar",
2487
+ // Kharoshthi
2488
+ "Lydi",
2489
+ // Lydian
2490
+ "Mand",
2491
+ // Mandaic
2492
+ "Mani",
2493
+ // Manichaean
2494
+ "Mend",
2495
+ // Mende Kikakui
2496
+ "Merc",
2497
+ // Meroitic cursive
2498
+ "Mero",
2499
+ // Meroitic hieroglyphs
2500
+ "Narb",
2501
+ // Old North Arabian
2502
+ "Nbat",
2503
+ // Nabataean
2504
+ "Nkoo",
2505
+ // NKo
2506
+ "Orkh",
2507
+ // Old Turkic
2508
+ "Palm",
2509
+ // Palmyrene
2510
+ "Phli",
2511
+ // Inscriptional Pahlavi
2512
+ "Phlp",
2513
+ // Psalter Pahlavi
2514
+ "Phnx",
2515
+ // Phoenician
2516
+ "Prti",
2517
+ // Inscriptional Parthian
2518
+ "Rohg",
2519
+ // Hanifi Rohingya
2520
+ "Samr",
2521
+ // Samaritan
2522
+ "Sarb",
2523
+ // Old South Arabian
2524
+ "Sogd",
2525
+ // Sogdian
2526
+ "Sogo",
2527
+ // Old Sogdian
2528
+ "Syrc",
2529
+ // Syriac
2530
+ "Thaa",
2531
+ // Thaana
2532
+ "Todr",
2533
+ // Todhri
2534
+ "Yezi"
2535
+ // Yezidi
2536
+ ]);
2537
+ const RTL_LANGUAGES = /* @__PURE__ */ new Set([
2538
+ "ae",
2539
+ // Avestan
2540
+ "ar",
2541
+ // Arabic
2542
+ "arc",
2543
+ // Aramaic
2544
+ "bcc",
2545
+ // Southern Balochi
2546
+ "bqi",
2547
+ // Bakhtiari
2548
+ "ckb",
2549
+ // Central Kurdish
2550
+ "dv",
2551
+ // Divehi
2552
+ "fa",
2553
+ // Persian
2554
+ "glk",
2555
+ // Gilaki
2556
+ "he",
2557
+ // Hebrew
2558
+ "iw",
2559
+ // Hebrew (retired)
2560
+ "ji",
2561
+ // Yiddish (retired)
2562
+ "khw",
2563
+ // Khowar
2564
+ "ks",
2565
+ // Kashmiri
2566
+ "lrc",
2567
+ // Northern Luri
2568
+ "mzn",
2569
+ // Mazanderani
2570
+ "nqo",
2571
+ // NKo
2572
+ "pnb",
2573
+ // Western Punjabi
2574
+ "prs",
2575
+ // Dari
2576
+ "ps",
2577
+ // Pashto
2578
+ "sd",
2579
+ // Sindhi
2580
+ "ug",
2581
+ // Uyghur
2582
+ "ur",
2583
+ // Urdu
2584
+ "yi"
2585
+ // Yiddish
2586
+ ]);
2587
+ function directionOf(tag2) {
2588
+ const trimmed = tag2.trim();
2589
+ if (trimmed === "") {
2590
+ return "ltr";
2591
+ }
2592
+ if (trimmed.toLowerCase() === PSEUDO_RTL_LOCALE.toLowerCase()) {
2593
+ return "rtl";
2594
+ }
2595
+ try {
2596
+ const locale = new Intl.Locale(trimmed);
2597
+ const script = locale.maximize().script ?? locale.script;
2598
+ if (script) {
2599
+ return RTL_SCRIPTS.has(script) ? "rtl" : "ltr";
2600
+ }
2601
+ return RTL_LANGUAGES.has(locale.language ?? "") ? "rtl" : "ltr";
2602
+ } catch {
2603
+ return directionFromRawSubtags(trimmed);
2604
+ }
2605
+ }
2606
+ function directionFromRawSubtags(tag2) {
2607
+ const subtags = tag2.split(/[-_]/);
2608
+ for (const subtag of subtags.slice(1)) {
2609
+ if (/^[A-Za-z]{4}$/.test(subtag)) {
2610
+ const script = subtag[0].toUpperCase() + subtag.slice(1).toLowerCase();
2611
+ return RTL_SCRIPTS.has(script) ? "rtl" : "ltr";
2612
+ }
2613
+ }
2614
+ return RTL_LANGUAGES.has(subtags[0].toLowerCase()) ? "rtl" : "ltr";
2615
+ }
2459
2616
  const BUNDLED_CHROME_CATALOGS = {
2460
2617
  [DEFAULT_LOCALE]: englishResources(CHROME_NAMESPACES)
2461
2618
  };
2462
- let pseudoChromeCatalog;
2463
- function getPseudoChromeCatalog() {
2464
- return pseudoChromeCatalog ??= pseudoLocalize(
2465
- BUNDLED_CHROME_CATALOGS[DEFAULT_LOCALE]
2619
+ const pseudoChromeCatalogs = {};
2620
+ function getPseudoChromeCatalog(locale) {
2621
+ return pseudoChromeCatalogs[locale] ??= pseudoLocalize(
2622
+ BUNDLED_CHROME_CATALOGS[DEFAULT_LOCALE],
2623
+ locale === PSEUDO_RTL_LOCALE ? { brackets: PSEUDO_RTL_BRACKETS } : void 0
2466
2624
  );
2467
2625
  }
2468
2626
  function chromeResources(normalizedUiLocale, hostResources) {
2469
2627
  const resources = { ...BUNDLED_CHROME_CATALOGS };
2470
- if (normalizedUiLocale === PSEUDO_LOCALE) {
2471
- resources[PSEUDO_LOCALE] = getPseudoChromeCatalog();
2628
+ if (normalizedUiLocale === PSEUDO_LOCALE || normalizedUiLocale === PSEUDO_RTL_LOCALE) {
2629
+ resources[normalizedUiLocale] = getPseudoChromeCatalog(normalizedUiLocale);
2472
2630
  }
2473
2631
  return Object.assign(resources, hostResources);
2474
2632
  }
2633
+ function isolatesPlaceables(locale) {
2634
+ const language2 = locale.split(/[-_]/)[0].toLowerCase();
2635
+ return language2 !== DEFAULT_LOCALE;
2636
+ }
2475
2637
  function createChromeTranslator(uiLocale, hostResources) {
2476
2638
  const normalized = normalizeLocaleTag(uiLocale) || DEFAULT_LOCALE;
2477
2639
  const resources = chromeResources(normalized, hostResources);
2478
2640
  const locales = negotiateLocales([normalized], Object.keys(resources));
2479
- return createTranslator(locales, resources);
2641
+ return createTranslator(locales, resources, {
2642
+ useIsolating: isolatesPlaceables(normalized)
2643
+ });
2480
2644
  }
2481
2645
  let enChromeTranslator;
2482
2646
  const EN_CHROME_TRANSLATOR = (key, args, fallback) => (enChromeTranslator ??= createTranslator([], {}))(key, args, fallback);
@@ -29523,7 +29687,7 @@ async function cidFromArrayBuffer(data) {
29523
29687
  await crypto.subtle.digest("SHA-256", new Uint8Array());
29524
29688
  digest = (data2) => crypto.subtle.digest("SHA-256", data2);
29525
29689
  } catch (e2) {
29526
- const sha256 = (await import("./sha256-Bzrm4-tO-BHq68al3.js").then((n2) => n2.s)).default;
29690
+ const sha256 = (await import("./sha256-Bzrm4-tO-D5VzcQ6q.js").then((n2) => n2.s)).default;
29527
29691
  digest = (data2) => sha256(data2, {
29528
29692
  asBytes: true
29529
29693
  });
@@ -44956,6 +45120,26 @@ function useT() {
44956
45120
  function useUiLocale() {
44957
45121
  return useContext(I18nContext).locale;
44958
45122
  }
45123
+ const DocumentDirectionContext = createContext(null);
45124
+ function DocumentDirectionProvider({
45125
+ direction,
45126
+ children
45127
+ }) {
45128
+ return /* @__PURE__ */ jsxRuntimeExports$3.jsx(DocumentDirectionContext.Provider, { value: direction, children });
45129
+ }
45130
+ function useDocumentDirection() {
45131
+ return useContext(DocumentDirectionContext);
45132
+ }
45133
+ function chromeLangDir(uiLocale, documentDirection) {
45134
+ const chromeDirection = directionOf(uiLocale);
45135
+ if (documentDirection === null || documentDirection === chromeDirection) {
45136
+ return {};
45137
+ }
45138
+ return { lang: uiLocale, dir: chromeDirection };
45139
+ }
45140
+ function useChromeLangDir() {
45141
+ return chromeLangDir(useUiLocale(), useDocumentDirection());
45142
+ }
44959
45143
  const ContentI18nContext = createContext(EN_CHROME_TRANSLATOR);
44960
45144
  function ContentI18nProvider({
44961
45145
  translate,
@@ -45329,6 +45513,7 @@ function DocViewer({
45329
45513
  uiLocale,
45330
45514
  effectiveDocumentLocale
45331
45515
  );
45516
+ const documentDirection = directionOf(effectiveDocumentLocale);
45332
45517
  const declaredLocales = useMemo(
45333
45518
  () => declaredLangsInSource(doenetML),
45334
45519
  [doenetML]
@@ -45822,7 +46007,7 @@ function DocViewer({
45822
46007
  for (const rendererClassName of coreInfo.current.rendererTypesInDocument) {
45823
46008
  rendererClassNames.push(rendererClassName);
45824
46009
  rendererLoaders.push(
45825
- () => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./renderers/GraphFrame.tsx": () => import("./GraphFrame-BCe-sXyY.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-CTbAGksr.js").then((n2) => n2.m), "./renderers/_error.tsx": () => import("./_error-8CVqZvs9.js"), "./renderers/alert.tsx": () => import("./alert-CnVNVwp0.js"), "./renderers/angle.tsx": () => import("./angle-DtykfDvk.js"), "./renderers/answer.tsx": () => import("./answer-D8_55NUB.js"), "./renderers/asList.tsx": () => import("./asList-Cvb4HFYc.js"), "./renderers/blockQuote.tsx": () => import("./blockQuote-CD7LAibH.js"), "./renderers/boolean.tsx": () => import("./boolean-i9xt_Fyy.js"), "./renderers/booleanInput.tsx": () => import("./booleanInput-DxN2aj4D.js"), "./renderers/br.tsx": () => import("./br-Ch6INIwC.js"), "./renderers/button.tsx": () => import("./button-B5SnRU2e.js"), "./renderers/c.tsx": () => import("./c-DArDpN4A.js"), "./renderers/cell.tsx": () => import("./cell-BFX6fxf0.js"), "./renderers/choiceInput.tsx": () => import("./choiceInput-DXKjyCqp.js"), "./renderers/circle.tsx": () => import("./circle-AbQzXEA5.js"), "./renderers/cobwebPolyline.tsx": () => import("./cobwebPolyline-CB6cVyKX.js"), "./renderers/codeEditor.tsx": () => import("./codeEditor-D0vhTs3g.js"), "./renderers/containerBlock.tsx": () => import("./containerBlock-Cm-kBh3q.js"), "./renderers/containerInline.tsx": () => import("./containerInline-CcOaOhs8.js"), "./renderers/curve.tsx": () => import("./curve-CdVn_xI2.js"), "./renderers/ellipsis.tsx": () => import("./ellipsis-DVinv6-1.js"), "./renderers/em.tsx": () => import("./em-B8Bn3iQ8.js"), "./renderers/embed.tsx": () => import("./embed-CCP_3Jzm.js"), "./renderers/feedback.tsx": () => import("./feedback-C7b_K-S3.js"), "./renderers/figure.tsx": () => import("./figure-vxfnUy1i.js"), "./renderers/footnote.tsx": () => import("./footnote-DniX_WDV.js"), "./renderers/fractionInput.tsx": () => import("./fractionInput-Byd4TDY-.js"), "./renderers/graph.tsx": () => import("./graph-BpbjUn8w.js"), "./renderers/hint.tsx": () => import("./hint-BSyMGzDu.js"), "./renderers/hr.tsx": () => import("./hr-Dv_52Wxd.js"), "./renderers/image.tsx": () => import("./image-CDzqgIV7.js"), "./renderers/label.tsx": () => import("./label-BpLxA1Ur.js"), "./renderers/legend.tsx": () => import("./legend-ZPzJ1SLv.js"), "./renderers/line.tsx": () => import("./line-B1QiilgT.js"), "./renderers/lineSegment.tsx": () => import("./lineSegment-CT3KASYT.js"), "./renderers/list.tsx": () => import("./list-CseGxUq-.js"), "./renderers/lq.tsx": () => import("./lq-CAAidAOg.js"), "./renderers/lsq.tsx": () => import("./lsq-B28Z8bv3.js"), "./renderers/math.tsx": () => import("./math-BREIxh-E.js"), "./renderers/mathInput.tsx": () => import("./mathInput-BkKkb63g.js"), "./renderers/matrixInput.tsx": () => import("./matrixInput-BNWpketN.js"), "./renderers/mdash.tsx": () => import("./mdash-9jp_u7Un.js"), "./renderers/nbsp.tsx": () => import("./nbsp-C8hCQ6TS.js"), "./renderers/ndash.tsx": () => import("./ndash-CmJAVnNq.js"), "./renderers/number.tsx": () => import("./number-r1umcD9p.js"), "./renderers/orbitalDiagram.tsx": () => import("./orbitalDiagram-CaNwebaQ.js"), "./renderers/orbitalDiagramInput.tsx": () => import("./orbitalDiagramInput-B5JhTAdB.js"), "./renderers/p.tsx": () => import("./p-DP7YNDfx.js"), "./renderers/paginatorControls.tsx": () => import("./paginatorControls-B-qNFkKU.js"), "./renderers/pegboard.tsx": () => import("./pegboard-D7nAJ6RY.js"), "./renderers/point.tsx": () => import("./point-C59ja3n2.js"), "./renderers/polygon.tsx": () => import("./polygon-CT-ARozK.js"), "./renderers/polyline.tsx": () => import("./polyline-DeGq7WP0.js"), "./renderers/pre.tsx": () => import("./pre-BHH6fa9U.js"), "./renderers/prefigure.tsx": () => import("./prefigure-BnSkAPHE.js"), "./renderers/pretzel.tsx": () => import("./pretzel-CC5NgapN.js"), "./renderers/q.tsx": () => import("./q-CcNznZUD.js"), "./renderers/ray.tsx": () => import("./ray-D1b2GIcp.js"), "./renderers/ref.tsx": () => import("./ref-OLToqdQ5.js"), "./renderers/regionBetweenCurveXAxis.tsx": () => import("./regionBetweenCurveXAxis-PPEOPw8t.js"), "./renderers/regionBetweenCurves.tsx": () => import("./regionBetweenCurves-DOtEzJak.js"), "./renderers/row.tsx": () => import("./row-D42z_svT.js"), "./renderers/rq.tsx": () => import("./rq-DdecWWBG.js"), "./renderers/rsq.tsx": () => import("./rsq-D2qKFBXV.js"), "./renderers/section.tsx": () => import("./section-AwW9I9a-.js"), "./renderers/sideBySide.tsx": () => import("./sideBySide-BE1-5d7U.js"), "./renderers/slider.tsx": () => import("./slider-B92oejpK.js"), "./renderers/solution.tsx": () => import("./solution-DuvHYP7q.js"), "./renderers/spreadsheet.tsx": () => import("./spreadsheet-CYi5VTRB.js"), "./renderers/sq.tsx": () => import("./sq-CGmtbJG8.js"), "./renderers/subsetOfRealsInput.tsx": () => import("./subsetOfRealsInput-Dof9pDQJ.js"), "./renderers/summaryStatistics.tsx": () => import("./summaryStatistics-CHLmwy4B.js"), "./renderers/table.tsx": () => import("./table-Ds4FsDXG.js"), "./renderers/tabular.tsx": () => import("./tabular-D93ZooVU.js"), "./renderers/tag.tsx": () => import("./tag-CQG7jGLX.js"), "./renderers/text.tsx": () => import("./text-Cs4GBrRa.js"), "./renderers/textInput.tsx": () => import("./textInput-D08eVSJy.js"), "./renderers/vector.tsx": () => import("./vector-DTjqdT0D.js"), "./renderers/video.tsx": () => import("./video-Bj4ChYgg.js") }), `./renderers/${rendererClassName}.tsx`, 3)
46010
+ () => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./renderers/GraphFrame.tsx": () => import("./GraphFrame-BrgLBP-l.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-3rMxl-PD.js").then((n2) => n2.m), "./renderers/_error.tsx": () => import("./_error-BIkDYkum.js"), "./renderers/alert.tsx": () => import("./alert-40qlFB8j.js"), "./renderers/angle.tsx": () => import("./angle-BOqYrXfU.js"), "./renderers/answer.tsx": () => import("./answer-Dgwe0dei.js"), "./renderers/asList.tsx": () => import("./asList-B1sJDQs3.js"), "./renderers/blockQuote.tsx": () => import("./blockQuote-BsG2geQs.js"), "./renderers/boolean.tsx": () => import("./boolean-N29Fwify.js"), "./renderers/booleanInput.tsx": () => import("./booleanInput-CcgJltzp.js"), "./renderers/br.tsx": () => import("./br-BQAkKbws.js"), "./renderers/button.tsx": () => import("./button-D3QT17Wd.js"), "./renderers/c.tsx": () => import("./c-Daf8CQwR.js"), "./renderers/cell.tsx": () => import("./cell-BNmEKrA0.js"), "./renderers/choiceInput.tsx": () => import("./choiceInput-DWcLPKV7.js"), "./renderers/circle.tsx": () => import("./circle-L-xmtaHy.js"), "./renderers/cobwebPolyline.tsx": () => import("./cobwebPolyline-BVdEUH2r.js"), "./renderers/codeEditor.tsx": () => import("./codeEditor-D0xuKEXG.js"), "./renderers/containerBlock.tsx": () => import("./containerBlock-CdpPaxoi.js"), "./renderers/containerInline.tsx": () => import("./containerInline-DHFXTqAT.js"), "./renderers/curve.tsx": () => import("./curve-5OW8O5t-.js"), "./renderers/ellipsis.tsx": () => import("./ellipsis-BJoPJy0v.js"), "./renderers/em.tsx": () => import("./em-C4h-YkRj.js"), "./renderers/embed.tsx": () => import("./embed-CjlH0jbC.js"), "./renderers/feedback.tsx": () => import("./feedback-EFnq4fTf.js"), "./renderers/figure.tsx": () => import("./figure-BiAWioqb.js"), "./renderers/footnote.tsx": () => import("./footnote-U6eszrz5.js"), "./renderers/fractionInput.tsx": () => import("./fractionInput-Xkm2Vb3z.js"), "./renderers/graph.tsx": () => import("./graph-BShdY7M2.js"), "./renderers/hint.tsx": () => import("./hint-BJlVCHDc.js"), "./renderers/hr.tsx": () => import("./hr-D15XJLML.js"), "./renderers/image.tsx": () => import("./image-unzIQyP1.js"), "./renderers/label.tsx": () => import("./label-D8LiLGZ0.js"), "./renderers/legend.tsx": () => import("./legend-wHw8PHjz.js"), "./renderers/line.tsx": () => import("./line-BcmltQzB.js"), "./renderers/lineSegment.tsx": () => import("./lineSegment-BYs7yPxL.js"), "./renderers/list.tsx": () => import("./list-79YU2kl7.js"), "./renderers/lq.tsx": () => import("./lq-PHOAGpAp.js"), "./renderers/lsq.tsx": () => import("./lsq-DAA0vTFL.js"), "./renderers/math.tsx": () => import("./math-BVfjIEHd.js"), "./renderers/mathInput.tsx": () => import("./mathInput-BtcN3WJR.js"), "./renderers/matrixInput.tsx": () => import("./matrixInput-lugF0Kwk.js"), "./renderers/mdash.tsx": () => import("./mdash-DB7_sXiL.js"), "./renderers/nbsp.tsx": () => import("./nbsp-j9m7y0-y.js"), "./renderers/ndash.tsx": () => import("./ndash-COenOscW.js"), "./renderers/number.tsx": () => import("./number-C5IDajKV.js"), "./renderers/orbitalDiagram.tsx": () => import("./orbitalDiagram-LpaATJ7G.js"), "./renderers/orbitalDiagramInput.tsx": () => import("./orbitalDiagramInput-CYnhgICY.js"), "./renderers/p.tsx": () => import("./p-COajOvYn.js"), "./renderers/paginatorControls.tsx": () => import("./paginatorControls-DzpHO-mO.js"), "./renderers/pegboard.tsx": () => import("./pegboard-BdfertiY.js"), "./renderers/point.tsx": () => import("./point-BLFxaE8O.js"), "./renderers/polygon.tsx": () => import("./polygon-DSoochqM.js"), "./renderers/polyline.tsx": () => import("./polyline-CTIot66d.js"), "./renderers/pre.tsx": () => import("./pre-xCSl5oZL.js"), "./renderers/prefigure.tsx": () => import("./prefigure-FCWzkIVy.js"), "./renderers/pretzel.tsx": () => import("./pretzel-RAJStYo8.js"), "./renderers/q.tsx": () => import("./q-DRh3HpI-.js"), "./renderers/ray.tsx": () => import("./ray-CG-m02gI.js"), "./renderers/ref.tsx": () => import("./ref-C2DexbxV.js"), "./renderers/regionBetweenCurveXAxis.tsx": () => import("./regionBetweenCurveXAxis-C1iatjqu.js"), "./renderers/regionBetweenCurves.tsx": () => import("./regionBetweenCurves-Cv-DJCUB.js"), "./renderers/row.tsx": () => import("./row-DUzsOO4i.js"), "./renderers/rq.tsx": () => import("./rq-DBf5-NZS.js"), "./renderers/rsq.tsx": () => import("./rsq-CRwgd5gN.js"), "./renderers/section.tsx": () => import("./section-CEh-TNeP.js"), "./renderers/sideBySide.tsx": () => import("./sideBySide-C_9_ghNz.js"), "./renderers/slider.tsx": () => import("./slider-DOgzk4EE.js"), "./renderers/solution.tsx": () => import("./solution-CKUSv0BJ.js"), "./renderers/spreadsheet.tsx": () => import("./spreadsheet-P7U0r_qV.js"), "./renderers/sq.tsx": () => import("./sq-CTORexcM.js"), "./renderers/subsetOfRealsInput.tsx": () => import("./subsetOfRealsInput-CsAQMYD4.js"), "./renderers/summaryStatistics.tsx": () => import("./summaryStatistics-BBREeWvh.js"), "./renderers/table.tsx": () => import("./table-Bhb19es1.js"), "./renderers/tabular.tsx": () => import("./tabular-DBI3KqQP.js"), "./renderers/tag.tsx": () => import("./tag-BtGckMpT.js"), "./renderers/text.tsx": () => import("./text-7k2wXfRf.js"), "./renderers/textInput.tsx": () => import("./textInput-lbnI_I3U.js"), "./renderers/vector.tsx": () => import("./vector-lV5ajE68.js"), "./renderers/video.tsx": () => import("./video-C-iSvsQk.js") }), `./renderers/${rendererClassName}.tsx`, 3)
45826
46011
  );
45827
46012
  }
45828
46013
  const documentComponentInstructions = coreInfo.current.documentToRender;
@@ -46397,7 +46582,7 @@ function DocViewer({
46397
46582
  borderStyle: "solid",
46398
46583
  borderColor: "var(--mainRed)",
46399
46584
  fontSize: "1.3em",
46400
- marginLeft: "20px",
46585
+ marginInlineStart: "20px",
46401
46586
  marginTop: "20px",
46402
46587
  padding: "0.5em"
46403
46588
  },
@@ -46424,8 +46609,7 @@ function DocViewer({
46424
46609
  let noCoreWarning = null;
46425
46610
  let viewerStyle = {
46426
46611
  maxWidth: "850px",
46427
- paddingLeft: "20px",
46428
- paddingRight: "20px",
46612
+ paddingInline: "20px",
46429
46613
  backgroundColor: "var(--canvas)",
46430
46614
  containerType: "inline-size"
46431
46615
  };
@@ -46496,11 +46680,26 @@ function DocViewer({
46496
46680
  borderStyle: "solid",
46497
46681
  borderColor: "var(--mainRed)"
46498
46682
  };
46499
- errorOverview = /* @__PURE__ */ jsxRuntimeExports$3.jsx("div", { style: errorStyle, children: /* @__PURE__ */ jsxRuntimeExports$3.jsx("b", { children: translate(
46500
- "document-contains-errors",
46501
- void 0,
46502
- "This document contains errors!"
46503
- ) }) });
46683
+ errorOverview = // This banner is addressed to whoever is looking at the screen, so
46684
+ // it is in `uiLocale` while the box around it is declared to be the
46685
+ // content's language. Re-declared only where the two directions
46686
+ // disagree, so the common case adds no attributes: otherwise an
46687
+ // English "This document contains errors!" inside an Arabic
46688
+ // document would put its exclamation mark on the wrong end. Through
46689
+ // the pure helper rather than `useChromeLangDir` because this is
46690
+ // built above the provider that hook reads.
46691
+ /* @__PURE__ */ jsxRuntimeExports$3.jsx(
46692
+ "div",
46693
+ {
46694
+ style: errorStyle,
46695
+ ...chromeLangDir(effectiveUiLocale, documentDirection),
46696
+ children: /* @__PURE__ */ jsxRuntimeExports$3.jsx("b", { children: translate(
46697
+ "document-contains-errors",
46698
+ void 0,
46699
+ "This document contains errors!"
46700
+ ) })
46701
+ }
46702
+ );
46504
46703
  }
46505
46704
  return /* @__PURE__ */ jsxRuntimeExports$3.jsxs(
46506
46705
  ErrorBoundary,
@@ -46518,6 +46717,7 @@ function DocViewer({
46518
46717
  style: viewerStyle,
46519
46718
  className: "doenet-viewer",
46520
46719
  lang: effectiveDocumentLocale,
46720
+ dir: documentDirection,
46521
46721
  ref: viewerContainerRef,
46522
46722
  children: [
46523
46723
  errorOverview,
@@ -46526,7 +46726,13 @@ function DocViewer({
46526
46726
  {
46527
46727
  translate,
46528
46728
  locale: effectiveUiLocale,
46529
- children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(ContentI18nProvider, { translate: translateContent, children: documentRenderer })
46729
+ children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(
46730
+ DocumentDirectionProvider,
46731
+ {
46732
+ direction: documentDirection,
46733
+ children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(ContentI18nProvider, { translate: translateContent, children: documentRenderer })
46734
+ }
46735
+ )
46530
46736
  }
46531
46737
  ) })
46532
46738
  ]
@@ -82625,7 +82831,8 @@ const KeyboardIcon = () => /* @__PURE__ */ React__default.createElement(
82625
82831
  function KeyboardTray({
82626
82832
  onClick,
82627
82833
  theme: theme2,
82628
- translate
82834
+ translate,
82835
+ direction
82629
82836
  }) {
82630
82837
  const [open, setOpen] = React__default.useState(false);
82631
82838
  const t4 = translate ?? untranslated;
@@ -82637,6 +82844,7 @@ function KeyboardTray({
82637
82844
  {
82638
82845
  id: "virtual-keyboard-tray",
82639
82846
  "data-theme": theme2,
82847
+ dir: direction,
82640
82848
  className: classNames$1({ open }),
82641
82849
  onMouseDown: () => {
82642
82850
  onClick([
@@ -108990,24 +109198,27 @@ function rerenderTray() {
108990
109198
  const registration = getTrayRegistration();
108991
109199
  const theme2 = registration?.theme;
108992
109200
  const translate = registration?.translate;
109201
+ const direction = registration?.direction;
108993
109202
  const trayEl = getTrayElement();
108994
109203
  if (trayEl) {
108995
109204
  const currentTheme = trayEl.getAttribute("data-theme") ?? void 0;
108996
- if (currentTheme === theme2 && virtualKeyboardState.lastRenderedTranslate === translate) {
109205
+ const currentDirection = trayEl.getAttribute("dir") ?? void 0;
109206
+ if (currentTheme === theme2 && currentDirection === direction && virtualKeyboardState.lastRenderedTranslate === translate) {
108997
109207
  return;
108998
109208
  }
108999
109209
  }
109000
109210
  virtualKeyboardState.lastRenderedTranslate = translate;
109001
109211
  virtualKeyboardState.keyboardReactRoot?.render(
109002
- renderTray(theme2, translate)
109212
+ renderTray(theme2, translate, direction)
109003
109213
  );
109004
109214
  }
109005
- function renderTray(theme2, translate) {
109215
+ function renderTray(theme2, translate, direction) {
109006
109216
  return /* @__PURE__ */ React__default.createElement(MathJaxContext, { config: mathjaxConfig, version: 4 }, /* @__PURE__ */ React__default.createElement(
109007
109217
  KeyboardTray,
109008
109218
  {
109009
109219
  theme: theme2,
109010
109220
  translate,
109221
+ direction,
109011
109222
  onClick: (e2) => {
109012
109223
  getActiveRegistration()?.onClick(e2);
109013
109224
  }
@@ -109017,6 +109228,7 @@ function renderTray(theme2, translate) {
109017
109228
  function UniqueKeyboardTray({
109018
109229
  onClick,
109019
109230
  theme: theme2,
109231
+ direction,
109020
109232
  translate,
109021
109233
  ownerRef
109022
109234
  }) {
@@ -109047,6 +109259,7 @@ function UniqueKeyboardTray({
109047
109259
  onClick,
109048
109260
  theme: theme2,
109049
109261
  translate,
109262
+ direction,
109050
109263
  ownerRef
109051
109264
  });
109052
109265
  rerenderTray();
@@ -109091,10 +109304,11 @@ function UniqueKeyboardTray({
109091
109304
  registration.onClick = onClick;
109092
109305
  registration.theme = theme2;
109093
109306
  registration.translate = translate;
109307
+ registration.direction = direction;
109094
109308
  registration.ownerRef = ownerRef;
109095
109309
  rerenderTray();
109096
109310
  }
109097
- }, [onClick, ownerRef, theme2, translate]);
109311
+ }, [onClick, ownerRef, theme2, translate, direction]);
109098
109312
  return null;
109099
109313
  }
109100
109314
  function ExternalAwareVirtualKeyboard({
@@ -109103,6 +109317,7 @@ function ExternalAwareVirtualKeyboard({
109103
109317
  },
109104
109318
  theme: theme2,
109105
109319
  translate,
109320
+ direction,
109106
109321
  ownerRef
109107
109322
  }) {
109108
109323
  React__default.useEffect(() => {
@@ -109125,7 +109340,8 @@ function ExternalAwareVirtualKeyboard({
109125
109340
  onClick,
109126
109341
  ownerRef,
109127
109342
  theme: theme2,
109128
- translate
109343
+ translate,
109344
+ direction
109129
109345
  }
109130
109346
  );
109131
109347
  }
@@ -165380,7 +165596,8 @@ const CodeMirror = React__default.memo(function CodeMirror2({
165380
165596
  {
165381
165597
  className: "mathjax_ignore",
165382
165598
  "data-theme": darkMode,
165383
- style: { height: "100%" }
165599
+ style: { height: "100%" },
165600
+ dir: "ltr"
165384
165601
  },
165385
165602
  /* @__PURE__ */ React__default.createElement(
165386
165603
  ReactCodeMirror,
@@ -185905,12 +186122,12 @@ function EditorFooter({
185905
186122
  className: "doenetml-version",
185906
186123
  title: t4(
185907
186124
  "editor-version-title",
185908
- { version: "0.7.21-dev.415" },
185909
- `DoenetML version ${"0.7.21-dev.415"}`
186125
+ { version: "0.7.21-dev.417" },
186126
+ `DoenetML version ${"0.7.21-dev.417"}`
185910
186127
  ),
185911
186128
  children: [
185912
186129
  "v",
185913
- "0.7.21-dev.415"
186130
+ "0.7.21-dev.417"
185914
186131
  ]
185915
186132
  }
185916
186133
  ),
@@ -194804,6 +195021,7 @@ function DoenetViewer({
194804
195021
  localeResources
194805
195022
  );
194806
195023
  const { translate: translateChrome, locale: hostUiLocale } = useHostChromeTranslator(uiLocale, documentLocale, availableCatalogs);
195024
+ const hostUiDirection = directionOf(hostUiLocale);
194807
195025
  const ref = useRef(null);
194808
195026
  const isOnPage = useIsOnPage(ref);
194809
195027
  const [hidden, setHidden] = useState(true);
@@ -194920,6 +195138,8 @@ function DoenetViewer({
194920
195138
  "div",
194921
195139
  {
194922
195140
  "data-theme": resolvedTheme,
195141
+ lang: hostUiLocale,
195142
+ dir: hostUiDirection,
194923
195143
  ref: (r2) => {
194924
195144
  ref.current = r2;
194925
195145
  if (onInit && r2) {
@@ -194938,6 +195158,7 @@ function DoenetViewer({
194938
195158
  externalVirtualKeyboardProvided,
194939
195159
  theme: resolvedTheme,
194940
195160
  translate: translateChrome,
195161
+ direction: hostUiDirection,
194941
195162
  children: [
194942
195163
  variantSelector,
194943
195164
  viewer
@@ -194998,6 +195219,7 @@ const DoenetEditor = React__default.forwardRef(function DoenetEditor2({
194998
195219
  localeResources
194999
195220
  );
195000
195221
  const { translate: translateChrome, locale: hostUiLocale } = useHostChromeTranslator(uiLocale, documentLocale, availableCatalogs);
195222
+ const hostUiDirection = directionOf(hostUiLocale);
195001
195223
  const normalizedShowDiagnostics = showDiagnostics ?? showErrorsWarnings ?? true;
195002
195224
  if (showDiagnostics === void 0 && showErrorsWarnings !== void 0 && !warnedShowErrorsWarningsDeprecation) {
195003
195225
  warnedShowErrorsWarningsDeprecation = true;
@@ -195064,23 +195286,33 @@ const DoenetEditor = React__default.forwardRef(function DoenetEditor2({
195064
195286
  version: 4,
195065
195287
  src: mathjaxUrl,
195066
195288
  useExistingMathJax: useExistingMathjax,
195067
- children: /* @__PURE__ */ jsxRuntimeExports$3.jsx("div", { "data-theme": resolvedTheme, style: { display: "contents" }, children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(
195068
- I18nProvider,
195289
+ children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(
195290
+ "div",
195069
195291
  {
195070
- translate: translateChrome,
195071
- locale: hostUiLocale,
195292
+ "data-theme": resolvedTheme,
195293
+ lang: hostUiLocale,
195294
+ dir: hostUiDirection,
195295
+ style: { display: "contents" },
195072
195296
  children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(
195073
- WrapWithKeyboard,
195297
+ I18nProvider,
195074
195298
  {
195075
- addVirtualKeyboard,
195076
- externalVirtualKeyboardProvided,
195077
- theme: resolvedTheme,
195078
195299
  translate: translateChrome,
195079
- children: editor2
195300
+ locale: hostUiLocale,
195301
+ children: /* @__PURE__ */ jsxRuntimeExports$3.jsx(
195302
+ WrapWithKeyboard,
195303
+ {
195304
+ addVirtualKeyboard,
195305
+ externalVirtualKeyboardProvided,
195306
+ theme: resolvedTheme,
195307
+ translate: translateChrome,
195308
+ direction: hostUiDirection,
195309
+ children: editor2
195310
+ }
195311
+ )
195080
195312
  }
195081
195313
  )
195082
195314
  }
195083
- ) })
195315
+ )
195084
195316
  }
195085
195317
  ) });
195086
195318
  });
@@ -195089,6 +195321,7 @@ function WrapWithKeyboard({
195089
195321
  externalVirtualKeyboardProvided,
195090
195322
  theme: theme2,
195091
195323
  translate,
195324
+ direction,
195092
195325
  children
195093
195326
  }) {
195094
195327
  const dispatch = useAppDispatch();
@@ -195100,6 +195333,7 @@ function WrapWithKeyboard({
195100
195333
  ownerRef: focusedMathInput,
195101
195334
  theme: theme2,
195102
195335
  translate,
195336
+ direction,
195103
195337
  onClick: (keyCommands) => {
195104
195338
  dispatch(keyboardSlice.actions.setKeyboardInput(keyCommands));
195105
195339
  }
@@ -195112,67 +195346,72 @@ function WrapWithKeyboard({
195112
195346
  ] });
195113
195347
  }
195114
195348
  export {
195115
- useMergeRefs as $,
195116
- createFunctionFromDefinition as A,
195349
+ usePopoverContext as $,
195350
+ cesc as A,
195117
195351
  Button2 as B,
195118
195352
  CodeMirror as C,
195119
195353
  DoenetEditor as D,
195120
- Button as E,
195121
- useAppSelector as F,
195122
- mainSlice as G,
195123
- renderersLoadComponent as H,
195124
- encodeFillPatternColorToken as I,
195125
- deepCompare as J,
195126
- ActionButtonGroup as K,
195127
- ActionButton as L,
195128
- MathJax as M,
195129
- hasNavigationModifier as N,
195130
- ToggleButtonGroup as O,
195131
- EditorViewer as P,
195132
- memo as Q,
195133
- forwardRef as R,
195134
- createElement as S,
195354
+ createFunctionFromDefinition as E,
195355
+ Button as F,
195356
+ useAppSelector as G,
195357
+ mainSlice as H,
195358
+ renderersLoadComponent as I,
195359
+ encodeFillPatternColorToken as J,
195360
+ deepCompare as K,
195361
+ directionOf as L,
195362
+ useDocumentDirection as M,
195363
+ chromeLangDir as N,
195364
+ DocumentDirectionProvider as O,
195365
+ ActionButtonGroup as P,
195366
+ ActionButton as Q,
195367
+ MathJax as R,
195368
+ hasNavigationModifier as S,
195135
195369
  ToggleButton as T,
195136
- createHook as U,
195137
- usePopoverContext as V,
195138
- invariant as W,
195139
- useStoreState as X,
195140
- getBasePlacement as Y,
195141
- useId as Z,
195370
+ ToggleButtonGroup as U,
195371
+ EditorViewer as V,
195372
+ memo as W,
195373
+ forwardRef as X,
195374
+ createElement as Y,
195375
+ createHook as Z,
195142
195376
  __variableDynamicImportRuntimeHelper as _,
195143
195377
  DoenetViewer as a,
195144
- removeUndefinedValues as a0,
195145
- useSafeLayoutEffect as a1,
195146
- getWindow$1 as a2,
195147
- usePopoverStore as a3,
195148
- PopoverDisclosure as a4,
195149
- MdInfoOutline as a5,
195150
- Popover as a6,
195151
- createStoreContext as a7,
195152
- HovercardScopedContextProvider as a8,
195153
- HovercardContextProvider as a9,
195154
- createDialogComponent as aa,
195155
- useWrapElement as ab,
195156
- useHovercard as ac,
195157
- isFalsyBooleanCallback as ad,
195158
- contains as ae,
195159
- sync as af,
195160
- chain as ag,
195161
- useEvent as ah,
195162
- useHovercardAnchor as ai,
195163
- createStore as aj,
195164
- createHovercardStore as ak,
195165
- defaultValue as al,
195166
- useStore as am,
195167
- useStoreProps as an,
195168
- useHovercardStoreProps as ao,
195169
- keyboardSlice as ap,
195170
- FocusedMathInputContext as aq,
195171
- PopoverAnchor as ar,
195172
- getDefaultExportFromCjs$5 as as,
195173
- roundForDisplay as at,
195174
- autoUpdate as au,
195175
- CANVAS_DARK_MODE_COLOR as av,
195378
+ invariant as a0,
195379
+ useStoreState as a1,
195380
+ getBasePlacement as a2,
195381
+ useId as a3,
195382
+ useMergeRefs as a4,
195383
+ removeUndefinedValues as a5,
195384
+ useSafeLayoutEffect as a6,
195385
+ getWindow$1 as a7,
195386
+ usePopoverStore as a8,
195387
+ PopoverDisclosure as a9,
195388
+ CANVAS_DARK_MODE_COLOR as aA,
195389
+ MdInfoOutline as aa,
195390
+ Popover as ab,
195391
+ createStoreContext as ac,
195392
+ HovercardScopedContextProvider as ad,
195393
+ HovercardContextProvider as ae,
195394
+ createDialogComponent as af,
195395
+ useWrapElement as ag,
195396
+ useHovercard as ah,
195397
+ isFalsyBooleanCallback as ai,
195398
+ contains as aj,
195399
+ sync as ak,
195400
+ chain as al,
195401
+ useEvent as am,
195402
+ useHovercardAnchor as an,
195403
+ createStore as ao,
195404
+ createHovercardStore as ap,
195405
+ defaultValue as aq,
195406
+ useStore as ar,
195407
+ useStoreProps as as,
195408
+ useHovercardStoreProps as at,
195409
+ keyboardSlice as au,
195410
+ FocusedMathInputContext as av,
195411
+ PopoverAnchor as aw,
195412
+ getDefaultExportFromCjs$5 as ax,
195413
+ roundForDisplay as ay,
195414
+ autoUpdate as az,
195176
195415
  creativeCommonsVersions as b,
195177
195416
  cidFromText as c,
195178
195417
  defaultCreativeCommonsVersion$1 as d,
@@ -195186,16 +195425,16 @@ export {
195186
195425
  getDefaultExportFromCjs$4 as l,
195187
195426
  mathjaxConfig$1 as m,
195188
195427
  useUiLocale as n,
195189
- useDiagnosticFormatter as o,
195190
- jsxRuntimeExports$3 as p,
195191
- DocContext as q,
195428
+ useChromeLangDir as o,
195429
+ useDiagnosticFormatter as p,
195430
+ jsxRuntimeExports$3 as q,
195192
195431
  retrieveTextFileForCid as r,
195193
195432
  serializedComponentsReplacer as s,
195194
- textRendererStyle as t,
195433
+ DocContext as t,
195195
195434
  useT as u,
195196
- DynamicMath as v,
195197
- useContentT as w,
195198
- useRecordVisibilityChanges as x,
195199
- Context$1 as y,
195200
- cesc as z
195435
+ textRendererStyle as v,
195436
+ DynamicMath as w,
195437
+ useContentT as x,
195438
+ useRecordVisibilityChanges as y,
195439
+ Context$1 as z
195201
195440
  };