@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
@@ -1,6 +1,7 @@
1
- import { u as useT, x as useRecordVisibilityChanges, p as jsxRuntimeExports, O as ToggleButtonGroup, T as ToggleButton, K as ActionButtonGroup, L as ActionButton } from "./doenetml-RwjW6x7w.js";
1
+ import { u as useT, y as useRecordVisibilityChanges, q as jsxRuntimeExports, U as ToggleButtonGroup, T as ToggleButton, P as ActionButtonGroup, Q as ActionButton } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useState, useRef } from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
+ import { l as ltrIslandProps } from "./direction-BwrU7jHk.js";
4
5
  const subsetOfRealsInput = React__default.memo(function subsetOfReals(props) {
5
6
  let { id, SVs, actions, callAction } = useDoenetRenderer(props, false);
6
7
  let [mode, setMode] = useState("add remove points");
@@ -305,67 +306,76 @@ const subsetOfRealsInput = React__default.memo(function subsetOfReals(props) {
305
306
  }
306
307
  }
307
308
  }
308
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref, id, children: [
309
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: bounds, style: { display: "flex", gap: "12px" }, children: controlButtons }),
310
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
311
- "svg",
312
- {
313
- width: "808",
314
- height: "80",
315
- style: { backgroundColor: "var(--canvas)" },
316
- onMouseDown: (e) => {
317
- handleInput(e, "down");
318
- },
319
- onMouseUp: (e) => {
320
- handleInput(e, "up");
321
- },
322
- onMouseMove: (e) => {
323
- handleInput(e, "move");
324
- },
325
- onMouseLeave: (e) => {
326
- handleInput(e, "leave");
327
- },
328
- children: [
329
- /* @__PURE__ */ jsxRuntimeExports.jsx(
330
- "polygon",
331
- {
332
- points: "5,40 20,50 20,30",
333
- style: {
334
- fill: "var(--canvasText)",
335
- stroke: "var(--canvasText)",
336
- strokeWidth: "1"
309
+ return (
310
+ // A number line runs from −10 on the left to 10 on the right in every
311
+ // language: it is mathematical notation, not prose. Everything under
312
+ // here assumes that — the hash marks are laid out at fixed pixel
313
+ // offsets, the arrowheads are hard-coded left and right, and the
314
+ // pointer handler maps an x position to a value by subtracting a left
315
+ // edge. Pinned as one attribute on the whole widget so the controls
316
+ // above the axis stay on the same side as the axis itself.
317
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref, id, ...ltrIslandProps(), children: [
318
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: bounds, style: { display: "flex", gap: "12px" }, children: controlButtons }),
319
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
320
+ "svg",
321
+ {
322
+ width: "808",
323
+ height: "80",
324
+ style: { backgroundColor: "var(--canvas)" },
325
+ onMouseDown: (e) => {
326
+ handleInput(e, "down");
327
+ },
328
+ onMouseUp: (e) => {
329
+ handleInput(e, "up");
330
+ },
331
+ onMouseMove: (e) => {
332
+ handleInput(e, "move");
333
+ },
334
+ onMouseLeave: (e) => {
335
+ handleInput(e, "leave");
336
+ },
337
+ children: [
338
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
339
+ "polygon",
340
+ {
341
+ points: "5,40 20,50 20,30",
342
+ style: {
343
+ fill: "var(--canvasText)",
344
+ stroke: "var(--canvasText)",
345
+ strokeWidth: "1"
346
+ }
337
347
  }
338
- }
339
- ),
340
- /* @__PURE__ */ jsxRuntimeExports.jsx(
341
- "polygon",
342
- {
343
- points: "795,40 780,50 780,30",
344
- style: {
345
- fill: "var(--canvasText)",
346
- stroke: "var(--canvasText)",
347
- strokeWidth: "1"
348
+ ),
349
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
350
+ "polygon",
351
+ {
352
+ points: "795,40 780,50 780,30",
353
+ style: {
354
+ fill: "var(--canvasText)",
355
+ stroke: "var(--canvasText)",
356
+ strokeWidth: "1"
357
+ }
348
358
  }
349
- }
350
- ),
351
- storedLines,
352
- hashLines,
353
- /* @__PURE__ */ jsxRuntimeExports.jsx(
354
- "line",
355
- {
356
- x1: "20",
357
- y1: "40",
358
- x2: "780",
359
- y2: "40",
360
- style: { stroke: "var(--canvasText)", strokeWidth: "2" }
361
- }
362
- ),
363
- storedPoints,
364
- labels
365
- ]
366
- }
367
- )
368
- ] });
359
+ ),
360
+ storedLines,
361
+ hashLines,
362
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
363
+ "line",
364
+ {
365
+ x1: "20",
366
+ y1: "40",
367
+ x2: "780",
368
+ y2: "40",
369
+ style: { stroke: "var(--canvasText)", strokeWidth: "2" }
370
+ }
371
+ ),
372
+ storedPoints,
373
+ labels
374
+ ]
375
+ }
376
+ )
377
+ ] })
378
+ );
369
379
  });
370
380
  export {
371
381
  subsetOfRealsInput as default
@@ -1,10 +1,11 @@
1
- import { u as useT, x as useRecordVisibilityChanges, p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
1
+ import { u as useT, o as useChromeLangDir, y as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useRef } from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
4
  import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
5
5
  const summaryStatistics = React__default.memo(function SummaryStatistics(props) {
6
6
  let { id, SVs, actions, callAction } = useDoenetRenderer(props);
7
7
  const t = useT();
8
+ const chromeLangDir = useChromeLangDir();
8
9
  const ref = useRef(null);
9
10
  useRecordVisibilityChanges(ref, callAction, actions);
10
11
  if (SVs.hidden) {
@@ -35,7 +36,7 @@ const summaryStatistics = React__default.memo(function SummaryStatistics(props)
35
36
  let heading = /* @__PURE__ */ jsxRuntimeExports.jsx("tr", { children: columns.map((x, i) => /* @__PURE__ */ jsxRuntimeExports.jsx("th", { children: x }, i)) });
36
37
  let data = /* @__PURE__ */ jsxRuntimeExports.jsx("tr", { children: columns.map((x, i) => /* @__PURE__ */ jsxRuntimeExports.jsx("td", { children: SVs.summaryStatistics[x] }, i)) });
37
38
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { margin: "12px 0" }, ref, children: [
38
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: t(
39
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { ...chromeLangDir, children: t(
39
40
  "summary-statistics-caption",
40
41
  // Fluent renders `{ $column }` literally if handed a
41
42
  // `null`, so an unnamed column becomes an empty string —
@@ -1,6 +1,6 @@
1
- import { x as useRecordVisibilityChanges, p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
1
+ import { y as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useRef } from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
4
  const table = React__default.memo(function Table(props) {
5
5
  let { id, SVs, children, actions, callAction } = useDoenetRenderer(props);
6
6
  const ref = useRef(null);
@@ -1,6 +1,6 @@
1
- import { x as useRecordVisibilityChanges, p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
1
+ import { y as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useRef } from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
4
  import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
5
5
  import { a as getBlockMarginWithOptionalTopSuppression } from "./nonInlineMediaLayout-CkXHaqzo.js";
6
6
  const tabular = React__default.memo(function Tabular(props) {
@@ -1,6 +1,6 @@
1
- import { p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
1
+ import { q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
4
  const tag = React__default.memo(function Tag(props) {
5
5
  let { id, SVs, children } = useDoenetRenderer(props);
6
6
  if (SVs.hidden) {
@@ -1,13 +1,13 @@
1
- import { q as DocContext, y as Context, p as jsxRuntimeExports, t as textRendererStyle } from "./doenetml-RwjW6x7w.js";
1
+ import { t as DocContext, z as Context, q as jsxRuntimeExports, v as textRendererStyle } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useRef, useContext } from "react";
3
- import { j as jxg } from "./JSXGraphRenderer-CTbAGksr.js";
4
- import { BoardContext, TEXT_LAYER_OFFSET } from "./graph-BpbjUn8w.js";
5
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { j as jxg } from "./JSXGraphRenderer-3rMxl-PD.js";
4
+ import { BoardContext, TEXT_LAYER_OFFSET } from "./graph-BShdY7M2.js";
5
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
6
6
  import { g as getPositionFromAnchorByCoordinate } from "./graph-W6vrFcBu.js";
7
- import { ChoiceInputInlineContext } from "./choiceInput-DXKjyCqp.js";
7
+ import { ChoiceInputInlineContext } from "./choiceInput-DWcLPKV7.js";
8
8
  import { u as usePointerDragState, a as useBoardPointerTracking } from "./useBoardPointerTracking-DV6a8Wvg.js";
9
9
  import { u as useDraggableRefs, a as useJSXGraphCleanup } from "./useJSXGraphCleanup-CX91oVW8.js";
10
- import { d as detachAnchoredGraphElement, a as attachAnchoredGraphDragHandlers } from "./useAnchoredGraphDragHandler-CE3goik5.js";
10
+ import { d as detachAnchoredGraphElement, a as attachAnchoredGraphDragHandlers } from "./useAnchoredGraphDragHandler-CRPtaTJZ.js";
11
11
  const text = React__default.memo(function Text(props) {
12
12
  let { componentIdx, id, SVs, actions, callAction } = useDoenetRenderer(props);
13
13
  Text.ignoreActionsWithoutCore = () => true;
@@ -1,12 +1,12 @@
1
- import { w as useContentT, y as Context, p as jsxRuntimeExports, M as MathJax } from "./doenetml-RwjW6x7w.js";
1
+ import { x as useContentT, z as Context, q as jsxRuntimeExports, R as MathJax } from "./doenetml-DynV7ZDD.js";
2
2
  import { useState, useRef, useContext, useEffect } from "react";
3
- import { j as jxg } from "./JSXGraphRenderer-CTbAGksr.js";
4
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { j as jxg } from "./JSXGraphRenderer-3rMxl-PD.js";
4
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
5
5
  import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
6
- import { BoardContext } from "./graph-BpbjUn8w.js";
6
+ import { BoardContext } from "./graph-BShdY7M2.js";
7
7
  import { g as getPositionFromAnchorByCoordinate, P as POINTER_DRAG_THRESHOLD } from "./graph-W6vrFcBu.js";
8
- import { c as calculateValidationState, u as useSubmitActionWithDelay, a as createCheckWorkComponent } from "./useSubmitActionWithDelay-Bl1nM1Rc.js";
9
- import { D as DescriptionPopover } from "./Description-B_KGuyjX.js";
8
+ import { c as calculateValidationState, u as useSubmitActionWithDelay, a as createCheckWorkComponent } from "./useSubmitActionWithDelay-DBCED73A.js";
9
+ import { D as DescriptionPopover } from "./Description-DzHJcqCq.js";
10
10
  import { a as addValidationStateToShortDescription } from "./validationState-DI_lxk1a.js";
11
11
  function TextInput(props) {
12
12
  let { id, SVs, children, actions, ignoreUpdate, callAction } = useDoenetRenderer(props);
@@ -536,8 +536,8 @@ function TextInput(props) {
536
536
  id: labelId,
537
537
  htmlFor: inputKey,
538
538
  style: {
539
- marginRight: SVs.labelPosition === "right" ? void 0 : "2px",
540
- marginLeft: SVs.labelPosition === "right" ? "2px" : void 0
539
+ marginInlineEnd: SVs.labelPosition === "right" ? void 0 : "2px",
540
+ marginInlineStart: SVs.labelPosition === "right" ? "2px" : void 0
541
541
  },
542
542
  children: label
543
543
  }
@@ -1,4 +1,4 @@
1
- import { a7 as createStoreContext, a8 as HovercardScopedContextProvider, a9 as HovercardContextProvider, aa as createDialogComponent, R as forwardRef, S as createElement, U as createHook, W as invariant, ab as useWrapElement, p as jsxRuntimeExports, X as useStoreState, ac as useHovercard, ad as isFalsyBooleanCallback, ae as contains, af as sync, ag as chain, ah as useEvent, ai as useHovercardAnchor, aj as createStore, ak as createHovercardStore, al as defaultValue, am as useStore, an as useStoreProps, ao as useHovercardStoreProps } from "./doenetml-RwjW6x7w.js";
1
+ import { ac as createStoreContext, ad as HovercardScopedContextProvider, ae as HovercardContextProvider, af as createDialogComponent, X as forwardRef, Y as createElement, Z as createHook, a0 as invariant, ag as useWrapElement, q as jsxRuntimeExports, a1 as useStoreState, ah as useHovercard, ai as isFalsyBooleanCallback, aj as contains, ak as sync, al as chain, am as useEvent, an as useHovercardAnchor, ao as createStore, ap as createHovercardStore, aq as defaultValue, ar as useStore, as as useStoreProps, at as useHovercardStoreProps } from "./doenetml-DynV7ZDD.js";
2
2
  import { useRef, useEffect } from "react";
3
3
  const ctx = createStoreContext([HovercardContextProvider], [HovercardScopedContextProvider]);
4
4
  const useTooltipProviderContext = ctx.useProviderContext;
@@ -1,4 +1,4 @@
1
- import { r as removeJXGEventHandlers, L as LINE_FAMILY_EVENTS, j as jxg } from "./JSXGraphRenderer-CTbAGksr.js";
1
+ import { r as removeJXGEventHandlers, L as LINE_FAMILY_EVENTS, j as jxg } from "./JSXGraphRenderer-3rMxl-PD.js";
2
2
  import { e as exceededDragThreshold, p as pointerEventToUserCoords } from "./dragThreshold-DuSSFrIU.js";
3
3
  function attachAnchoredGraphDragHandlers(params) {
4
4
  const {
@@ -0,0 +1,114 @@
1
+ import { G as useAppSelector, H as mainSlice, I as renderersLoadComponent, _ as __variableDynamicImportRuntimeHelper } from "./doenetml-DynV7ZDD.js";
2
+ import React__default, { useState, useEffect } from "react";
3
+ function useDoenetRenderer(props, initializeChildrenOnConstruction = true) {
4
+ const actions = props.componentInstructions.actions;
5
+ const componentIdx = props.componentInstructions.componentIdx;
6
+ const effectiveIdx = props.componentInstructions.effectiveIdx;
7
+ const id = props.componentInstructions.id;
8
+ const rendererName = props.coreId + componentIdx;
9
+ const [renderersToLoad, setRenderersToLoad] = useState({});
10
+ const componentInfo = useAppSelector(
11
+ (state) => mainSlice.selectors.componentInfo(state)[rendererName]
12
+ );
13
+ const {
14
+ stateValues,
15
+ sourceOfUpdate = {},
16
+ ignoreUpdate,
17
+ childrenInstructions,
18
+ prefixForIds
19
+ } = componentInfo || {
20
+ stateValues: {},
21
+ sourceOfUpdate: {},
22
+ ignoreUpdate: false,
23
+ childrenInstructions: [],
24
+ prefixForIds: ""
25
+ };
26
+ let children = [];
27
+ const loadMoreRenderers = Object.keys(renderersToLoad).length === 0;
28
+ for (let childInstructions of childrenInstructions) {
29
+ let child = createChildFromInstructions(
30
+ childInstructions,
31
+ loadMoreRenderers
32
+ );
33
+ children.push(child);
34
+ }
35
+ useEffect(() => {
36
+ const entries = Object.entries(renderersToLoad);
37
+ if (entries.length > 0) {
38
+ const names = entries.map(([name]) => name);
39
+ const loaders = entries.map(([, loader]) => loader);
40
+ renderersLoadComponent(loaders, names).then(
41
+ ({ rendererClasses: newRendererClasses }) => {
42
+ Object.assign(props.rendererClasses, newRendererClasses);
43
+ setRenderersToLoad({});
44
+ }
45
+ );
46
+ }
47
+ }, [renderersToLoad, props.rendererClasses]);
48
+ function createChildFromInstructions(childInstructions, loadMoreRenderers2) {
49
+ if (typeof childInstructions === "string" || childInstructions === null) {
50
+ return childInstructions;
51
+ }
52
+ let propsForChild = {
53
+ key: props.coreId + childInstructions.componentIdx,
54
+ componentInstructions: childInstructions,
55
+ rendererClasses: props.rendererClasses,
56
+ coreId: props.coreId,
57
+ docId: props.docId,
58
+ activityId: props.activityId,
59
+ callAction: props.callAction,
60
+ fetchExternalDoenetML: props.fetchExternalDoenetML,
61
+ requestScrollTo: props.requestScrollTo,
62
+ flags: props.flags
63
+ };
64
+ let rendererClass = props.rendererClasses[childInstructions.rendererType];
65
+ if (!rendererClass) {
66
+ if (loadMoreRenderers2) {
67
+ setRenderersToLoad((old) => {
68
+ let rendererLoaders = { ...old };
69
+ if (!(childInstructions.rendererType in rendererLoaders)) {
70
+ rendererLoaders[childInstructions.rendererType] = () => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./renderers/GraphFrame.tsx": () => import("./GraphFrame-BrgLBP-l.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-3rMxl-PD.js").then((n) => n.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/${childInstructions.rendererType}.tsx`, 3);
71
+ }
72
+ return rendererLoaders;
73
+ });
74
+ }
75
+ return null;
76
+ }
77
+ let child = React__default.createElement(rendererClass, propsForChild);
78
+ return child;
79
+ }
80
+ let rendererType = props.componentInstructions.rendererType;
81
+ const callAction = (argObj) => {
82
+ if (!argObj.componentIdx) {
83
+ argObj = { ...argObj };
84
+ argObj.componentIdx = componentIdx;
85
+ }
86
+ if (!argObj.rendererType) {
87
+ argObj = { ...argObj };
88
+ argObj.rendererType = rendererType;
89
+ }
90
+ return props.callAction(argObj);
91
+ };
92
+ return {
93
+ componentIdx: effectiveIdx,
94
+ id: prefixForIds + id,
95
+ SVs: stateValues,
96
+ docId: props.docId,
97
+ activityId: props.activityId,
98
+ actions,
99
+ children,
100
+ sourceOfUpdate,
101
+ ignoreUpdate,
102
+ rendererName,
103
+ initializeChildren: () => {
104
+ },
105
+ callAction,
106
+ doenetViewerUrl: props.doenetViewerUrl,
107
+ fetchExternalDoenetML: props.fetchExternalDoenetML,
108
+ requestScrollTo: props.requestScrollTo,
109
+ flags: props.flags
110
+ };
111
+ }
112
+ export {
113
+ useDoenetRenderer as u
114
+ };
@@ -1,5 +1,5 @@
1
- import { p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
2
- import { F as FontAwesomeIcon } from "./index.es-BCeR6l3D.js";
1
+ import { q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
+ import { F as FontAwesomeIcon } from "./index.es-B8Vdrw0-.js";
3
3
  import { d as faSpinner, e as faLevelDownAlt, g as faCheck, h as faTimes, i as faCloud } from "./index-BDlitCgu.js";
4
4
  import React__default, { useCallback } from "react";
5
5
  function calculateValidationState(SVs) {
@@ -20,6 +20,13 @@ export declare function useDiagnosticFormatter(translate: Translator, uiLocale:
20
20
  * catalogs yet (#1518) — come back untouched, and so does the array itself
21
21
  * when nothing changed, so a document whose diagnostics are all legacy costs
22
22
  * nothing and doesn't churn a memo downstream.
23
+ *
24
+ * A *coded* record under a non-English chrome locale is re-rendered even where
25
+ * the catalog hasn't translated it, because the chrome isolates its placeables
26
+ * in every language but English and the English fallback picks the marks up
27
+ * too. That is deliberate — isolation follows the surface, not whichever
28
+ * catalog answered — and it means such a record no longer keeps its identity.
29
+ * The cost is a new array for those documents, not a wrong message.
23
30
  */
24
31
  export declare function localizeDiagnostics(diagnostics: DiagnosticRecord[], format: DiagnosticFormatter): DiagnosticRecord[];
25
32
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/utils/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,MAAM,GACjB,mBAAmB,CAKrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,WAAW,EAAE,gBAAgB,EAAE,EAC/B,MAAM,EAAE,mBAAmB,GAC5B,gBAAgB,EAAE,CAWpB"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/utils/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,MAAM,GACjB,mBAAmB,CAKrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAC/B,WAAW,EAAE,gBAAgB,EAAE,EAC/B,MAAM,EAAE,mBAAmB,GAC5B,gBAAgB,EAAE,CAWpB"}
package/utils/i18n.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { Translator } from '../../packages/i18n/dist';
2
+ import { Direction, Translator } from '../../packages/i18n/dist';
3
3
  /**
4
4
  * The catalogs available for a set of locales: whatever the host supplied,
5
5
  * plus whatever this build can code-split in for the tags actually asked for.
@@ -84,6 +84,72 @@ export declare function useT(): Translator;
84
84
  * list arguments with `Intl.ListFormat`.
85
85
  */
86
86
  export declare function useUiLocale(): string;
87
+ /**
88
+ * Declare the direction of the document the chrome below is drawn inside.
89
+ *
90
+ * Mounted twice over: once by `DocViewer` for the outermost document, and again
91
+ * by `section.tsx` around a nested `<document lang>`, which turns its own
92
+ * subtree around and so becomes what the chrome inside *it* has to agree with.
93
+ * Without the second, a hint inside `<document lang="ar">` would compare itself
94
+ * against the activity's direction and stay silent while sitting in a box
95
+ * running the other way.
96
+ */
97
+ export declare function DocumentDirectionProvider({ direction, children, }: {
98
+ direction: Direction;
99
+ children: React.ReactNode;
100
+ }): React.JSX.Element;
101
+ /**
102
+ * The direction of the nearest enclosing document, or `null` outside any.
103
+ *
104
+ * For a renderer that both *declares* a direction and draws chrome of its own
105
+ * inside it — today only `section.tsx`, which has to compare its own heading
106
+ * against the box it is about to open rather than the one around it.
107
+ */
108
+ export declare function useDocumentDirection(): Direction | null;
109
+ /** What {@link useChromeLangDir} spreads onto a piece of chrome. */
110
+ export type ChromeLangDir = {
111
+ lang?: string;
112
+ dir?: Direction;
113
+ };
114
+ /**
115
+ * {@link useChromeLangDir} without the hook, for a caller that renders *above*
116
+ * {@link DocumentDirectionProvider} and so cannot read the context — today only
117
+ * `DocViewer`'s error banner, which is built before the providers it sits
118
+ * inside.
119
+ *
120
+ * @param documentDirection The direction of the surrounding document, or `null`
121
+ * where there is none to disagree with.
122
+ */
123
+ export declare function chromeLangDir(uiLocale: string, documentDirection: Direction | null): ChromeLangDir;
124
+ /**
125
+ * `lang` and `dir` for a piece of chrome, or `{}` when it needs neither.
126
+ *
127
+ * The viewer labels its wrapper with the *document's* language, and mounts the
128
+ * chrome provider inside it — so every string a renderer draws through
129
+ * {@link useT} is the reader's language sitting in a box declared to be the
130
+ * content's. That costs nothing while the two run the same way, and is why
131
+ * this returns an empty object in the overwhelmingly common case: spreading it
132
+ * then adds no attribute to the element it is spread onto. (Several of the
133
+ * call sites wrap their string in a `<span>` to have something to spread onto;
134
+ * that span is inert when the object is empty.)
135
+ *
136
+ * It matters when they disagree, which is the case right-to-left support
137
+ * exists for: a Spanish-speaking reader working an Arabic activity. Without
138
+ * this, their English or Spanish chrome renders inside `dir="rtl"` and its
139
+ * trailing punctuation, parentheses and percent signs land on the wrong end of
140
+ * the sentence.
141
+ *
142
+ * Spread it onto chrome that sits *inside* the document — the error box, the
143
+ * feedback heading, the click-to-toggle text on a hint, a solution or a
144
+ * collapsible section, a pretzel's answer label, the summary-statistics
145
+ * caption, the math-input preview's parse-error message. Do not spread it onto
146
+ * anything reading {@link useContentT}: the check-work widget follows the
147
+ * document's language on purpose, so it should follow the document's direction
148
+ * too. Tooltips need nothing either, for the opposite reason — Ariakit portals
149
+ * them to `document.body`, so they are never inside the document's box at all,
150
+ * and a native `title` attribute is drawn by the browser rather than by CSS.
151
+ */
152
+ export declare function useChromeLangDir(): ChromeLangDir;
87
153
  /**
88
154
  * Publish the document-language translator to every {@link useContentT} below.
89
155
  *
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EASH,KAAK,UAAU,EAClB,MAAM,cAAc,CAAC;AAoBtB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CA8C3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAChD,UAAU,CASZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAChD;IAAE,SAAS,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAO3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,MAAM,EACN,QAAQ,GACX,EAAE;IACC,SAAS,EAAE,UAAU,CAAC;IACtB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,qBAOA;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,IAAI,UAAU,CAEjC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,SAAS,EACT,QAAQ,GACX,EAAE;IACC,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,qBAMA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAExC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAUH,KAAK,SAAS,EACd,KAAK,UAAU,EAClB,MAAM,cAAc,CAAC;AAoBtB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CA8C3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAChD,UAAU,CASZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAChD;IAAE,SAAS,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAO3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,MAAM,EACN,QAAQ,GACX,EAAE;IACC,SAAS,EAAE,UAAU,CAAC;IACtB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,qBAOA;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,IAAI,UAAU,CAEjC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAWD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,EACtC,SAAS,EACT,QAAQ,GACX,EAAE;IACC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,qBAMA;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,SAAS,GAAG,IAAI,CAEvD;AAED,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,SAAS,GAAG,IAAI,GACpC,aAAa,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,SAAS,EACT,QAAQ,GACX,EAAE;IACC,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,qBAMA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAExC"}
@@ -1,11 +1,11 @@
1
- import { q as DocContext, p as jsxRuntimeExports, t as textRendererStyle, v as DynamicMath } from "./doenetml-RwjW6x7w.js";
1
+ import { t as DocContext, q as jsxRuntimeExports, v as textRendererStyle, w as DynamicMath } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useContext, useRef } from "react";
3
- import { j as jxg, s as syncLayer, g as syncVisPropValues, e as syncLineStrokeStyle, a as syncWithLabelToggle, f as syncLabelStrokeColor, b as syncLabelMaskCssStyle, i as applyLineFamilyLabelPlacement, k as buildLineFamilyLabelAttributes, d as attachLabelHoverHighlight, c as computeLabelMaskCssStyle, l as stabilizeInitialLineFamilyLabelPlacement, r as removeJXGEventHandlers } from "./JSXGraphRenderer-CTbAGksr.js";
4
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
5
- import { BoardContext, VERTEX_LAYER_OFFSET, LINE_LAYER_OFFSET } from "./graph-BpbjUn8w.js";
6
- import { u as useSourceNavigation, a as attachLineFamilyDragHandlers } from "./lineFamilyDragHandlers-DVSxZbFk.js";
7
- import { ChoiceInputInlineContext } from "./choiceInput-DXKjyCqp.js";
8
- import { a as buildLineLikeAttributes } from "./buildGraphicalAttributes-C7PtyKL7.js";
3
+ import { j as jxg, s as syncLayer, g as syncVisPropValues, e as syncLineStrokeStyle, a as syncWithLabelToggle, f as syncLabelStrokeColor, b as syncLabelMaskCssStyle, i as applyLineFamilyLabelPlacement, k as buildLineFamilyLabelAttributes, d as attachLabelHoverHighlight, c as computeLabelMaskCssStyle, l as stabilizeInitialLineFamilyLabelPlacement, r as removeJXGEventHandlers } from "./JSXGraphRenderer-3rMxl-PD.js";
4
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
5
+ import { BoardContext, VERTEX_LAYER_OFFSET, LINE_LAYER_OFFSET } from "./graph-BShdY7M2.js";
6
+ import { u as useSourceNavigation, a as attachLineFamilyDragHandlers } from "./lineFamilyDragHandlers-HSo2HwSH.js";
7
+ import { ChoiceInputInlineContext } from "./choiceInput-DWcLPKV7.js";
8
+ import { a as buildLineLikeAttributes, c as buildDragHandleAttributes } from "./buildGraphicalAttributes-0RNcbd2S.js";
9
9
  import { u as usePointerDragState, a as useBoardPointerTracking } from "./useBoardPointerTracking-DV6a8Wvg.js";
10
10
  import { p as pointerEventToUserCoords } from "./dragThreshold-DuSSFrIU.js";
11
11
  import { a as resolveLineColor, d as resolveHandleColor } from "./styleColors-Cknqcr0q.js";
@@ -71,16 +71,10 @@ const vector = React__default.memo(function Vector(props) {
71
71
  [...SVs.numericalEndpoints[0]],
72
72
  [...SVs.numericalEndpoints[1]]
73
73
  ];
74
- let jsxPointAttributes = Object.assign({}, jsxVectorAttributes);
75
- Object.assign(jsxPointAttributes, {
76
- withLabel: false,
77
- fixed: false,
78
- highlight: true,
79
- fillColor: "none",
80
- strokeColor: "none",
81
- highlightStrokeColor: "none",
82
- highlightFillColor: resolveHandleColor(darkMode),
74
+ let jsxPointAttributes = buildDragHandleAttributes({
75
+ elementAttributes: jsxVectorAttributes,
83
76
  layer: pointLayer,
77
+ darkMode,
84
78
  showInfoBox: SVs.showCoordsWhenDragging
85
79
  });
86
80
  let tailPointAttributes = Object.assign({}, jsxPointAttributes);
@@ -1,10 +1,10 @@
1
- import { x as useRecordVisibilityChanges, p as jsxRuntimeExports } from "./doenetml-RwjW6x7w.js";
1
+ import { y as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-DynV7ZDD.js";
2
2
  import React__default, { useState, useEffect, useRef } from "react";
3
- import { u as useDoenetRenderer } from "./useDoenetRenderer-BUPvEAwn.js";
3
+ import { u as useDoenetRenderer } from "./useDoenetRenderer-By1VsaDX.js";
4
4
  import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
5
- import { D as DescriptionPopover, a as DescriptionAsDetails } from "./Description-B_KGuyjX.js";
5
+ import { D as DescriptionPopover, a as DescriptionAsDetails } from "./Description-DzHJcqCq.js";
6
6
  import { g as getNonInlineMediaLayoutStyles } from "./nonInlineMediaLayout-CkXHaqzo.js";
7
- import { N as NonInlineMediaWrapper } from "./NonInlineMediaWrapper-DqUh14n5.js";
7
+ import { N as NonInlineMediaWrapper } from "./NonInlineMediaWrapper-CTSA5ztb.js";
8
8
  const YT_API_SRC = "https://www.youtube.com/iframe_api";
9
9
  const listeners = /* @__PURE__ */ new Set();
10
10
  let installed = false;