@doenet/doenetml 0.7.25-dev.507 → 0.7.25-dev.508
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{AnswerResponseButton-CtqKA20c.js → AnswerResponseButton-cEdq4RZO.js} +2 -2
- package/{Description-DfuIwBpF.js → Description-9xkiCcAk.js} +1 -1
- package/{DynamicMath-MXYV2Z9s.js → DynamicMath-Bmg5p72t.js} +1 -1
- package/{EditorViewer-CgJ46gDZ.js → EditorViewer-BUzTzRpa.js} +6 -6
- package/{GraphFrame-B_WIM5Fa.js → GraphFrame-BBe_OHun.js} +2 -2
- package/{JSXGraphRenderer-D6iPo1FB.js → JSXGraphRenderer-D-h7eH-Q.js} +1 -1
- package/{NonInlineMediaWrapper-Ddzb1tjn.js → NonInlineMediaWrapper-DqF3Wxsr.js} +1 -1
- package/Viewer/renderers/legend.d.ts.map +1 -1
- package/{_error-DJ8idE9P.js → _error-xoPS4ylR.js} +2 -2
- package/{alert-Dg_JJZaI.js → alert-Bd-rOjK5.js} +3 -3
- package/{angle-BBttztM-.js → angle-ByHQbkot.js} +7 -7
- package/{answer-Dr2sqqfc.js → answer-C7iWerJU.js} +6 -6
- package/{asList-CGpwUZ9I.js → asList-D5Rmgn6J.js} +2 -2
- package/{blockQuote-LOCNH0lp.js → blockQuote-DytO_fho.js} +3 -3
- package/{boolean-D8I4O_iy.js → boolean-CHkxx77b.js} +2 -2
- package/{booleanInput-C5IVX59c.js → booleanInput-C7X8yxsi.js} +6 -6
- package/{br-BVVK8kVv.js → br-BAqzBJXy.js} +2 -2
- package/{button-DF_UHrT2.js → button-Bx5TNS-p.js} +4 -4
- package/{c-RBY7uyc3.js → c-8yJmTtwG.js} +3 -3
- package/{cell-C0bjjzLU.js → cell-CfF5x6ah.js} +3 -3
- package/{choiceInput-CHRv9fJO.js → choiceInput-CP_MrBMk.js} +4 -4
- package/{circle-DXj8GT6s.js → circle-DuJCg1NM.js} +6 -6
- package/{cobwebPolyline-Bbvw_Prm.js → cobwebPolyline-C_8dB69b.js} +4 -4
- package/{codeEditor-Dda818hM.js → codeEditor-BOlD1E56.js} +2 -2
- package/{composites-B7gjrcIm.js → composites-CSSw1VLF.js} +1 -1
- package/{containerBlock-DkAni0TI.js → containerBlock-BcrzJRO5.js} +4 -4
- package/{containerInline-DlAWnUee.js → containerInline-B2CNSZKZ.js} +4 -4
- package/{curve-HYrKNUaq.js → curve-DhoP5Bw3.js} +4 -4
- package/{doenetml-u1YndSm7.js → doenetml-D-MlvjpX.js} +3 -3
- package/doenetml-external-worker.js +2 -2
- package/doenetml-inline-worker.js +4 -4
- package/doenetml-worker/index.esm.js +1 -1
- package/doenetml-worker/index.js +1 -1
- package/doenetml-worker/lib_doenetml_worker_bg.wasm +0 -0
- package/{ellipsis-CGWbjf4O.js → ellipsis-BLIkiXMS.js} +2 -2
- package/{em-0urWJrEp.js → em-DRpem1-2.js} +3 -3
- package/{embed-Dh_KMrqC.js → embed-rqTRzFAq.js} +2 -2
- package/{feedback-lbIB9yRs.js → feedback-Cllga3c8.js} +4 -4
- package/{figure-DURZ6MUy.js → figure-g0KPrh2g.js} +3 -3
- package/{fillPatterns-CiqcTsVU.js → fillPatterns-Bkcc1kgf.js} +1 -1
- package/{footnote-B7xEbVoh.js → footnote-NbaFHPVN.js} +3 -3
- package/{fractionInput-CcM3yQ6H.js → fractionInput-CDrDh9Fv.js} +4 -4
- package/{graph-8Ybpt4il.js → graph-DEJxLN7s.js} +6 -6
- package/{hint-dTCFBf4b.js → hint-DrALFzMS.js} +4 -4
- package/{hovercard-store-BGkBLOUR.js → hovercard-store-C6w9Xi6E.js} +1 -1
- package/{hr-KjzPCylH.js → hr-D60yVJF8.js} +2 -2
- package/{image-BY2kWQDS.js → image-D2AAKAkE.js} +7 -7
- package/{index-DTp6nKt2.js → index-jxUM0uwb.js} +1 -1
- package/{index.es-CVZDHLHO.js → index.es-BZY0c1t3.js} +1 -1
- package/index.js +1 -1
- package/{label-BtGqQYDT.js → label-C9mDUeLa.js} +7 -7
- package/{labelWithLatex-D3pZxBkq.js → labelWithLatex-BVYdTe81.js} +2 -2
- package/legend-C6fv77U1.js +437 -0
- package/{line-B-8MvE7D.js → line-D70Ga1ZR.js} +7 -7
- package/{lineFamilyDragHandlers-Bq8re2Ed.js → lineFamilyDragHandlers-Bcg80hj8.js} +1 -1
- package/{lineSegment-DJD3nVc9.js → lineSegment-CY56NKgL.js} +5 -5
- package/{list-Db6KRvBk.js → list-ByHyqkne.js} +4 -4
- package/{lq-B4KrrgWc.js → lq-BsjmRGG-.js} +2 -2
- package/{lsq-BeihCm4v.js → lsq-Coc4hkoA.js} +2 -2
- package/{markupRenderer-7jFjXtsT.js → markupRenderer-DACpRdKz.js} +1 -1
- package/{math-x6xu20vw.js → math-BuIKoKOy.js} +7 -7
- package/{mathInput-CdpOR3tk.js → mathInput-qYk3ZYyj.js} +7 -7
- package/{matrixInput-WxwT7tYN.js → matrixInput-BN8rvPJ1.js} +4 -4
- package/{mdash-LMwfFv_m.js → mdash-DY8x56Gi.js} +2 -2
- package/{nbsp-B0-mrSk5.js → nbsp-CXbufv9K.js} +2 -2
- package/{ndash-Cfw6anMG.js → ndash-fuyshFxl.js} +2 -2
- package/{number-7lcbkhYE.js → number-Eb5VzM_3.js} +7 -7
- package/{orbitalDiagram-DWKurxgW.js → orbitalDiagram-DH3M6stA.js} +2 -2
- package/{orbitalDiagramInput-B014S41N.js → orbitalDiagramInput-Dp9_SsaS.js} +2 -2
- package/{p-B14UxMHP.js → p-C-ElLn48.js} +4 -4
- package/package.json +1 -1
- package/{paginatorControls-Qrptmean.js → paginatorControls-CsvOFtmD.js} +2 -2
- package/{pegboard-D9dk47VA.js → pegboard-DykTEm7O.js} +4 -4
- package/{point-ByStthGH.js → point-B2E2eTId.js} +7 -7
- package/{polygon-qGW-bKQw.js → polygon-CMbtwfIV.js} +6 -6
- package/{polyline-s5TCnP7t.js → polyline-C3B4nNLP.js} +5 -5
- package/{pre-vKUqNf3r.js → pre-Bz1ObVxi.js} +3 -3
- package/{prefigure-5X9DVBfV.js → prefigure-CjSd_o5R.js} +1 -1
- package/{pretzel-BOxrLmzQ.js → pretzel-CUqywVnZ.js} +4 -4
- package/{q-DeY9kaHW.js → q-CfaZ9Q4M.js} +3 -3
- package/{ray-DbYRpWOe.js → ray-BHE803z-.js} +5 -5
- package/{ref-DrK-Ea1E.js → ref-XzKSEd_P.js} +2 -2
- package/{regionBetweenCurveXAxis-BFuIu9WS.js → regionBetweenCurveXAxis-Cene1PWc.js} +5 -5
- package/{regionBetweenCurves-BDSV5pAv.js → regionBetweenCurves-UUj2tPjD.js} +5 -5
- package/{row-BLHRD33U.js → row-AdEMsZm3.js} +2 -2
- package/{rq-CrBdSxfp.js → rq-DpsoAxFh.js} +2 -2
- package/{rsq-7g2LSCpC.js → rsq-BUIvQK49.js} +2 -2
- package/{section-jYCdH-Aa.js → section-DFB_LR6S.js} +5 -5
- package/{sha256-DT5xJ2Hv-aw2L9wQT.js → sha256-DT5xJ2Hv-CQavxI1o.js} +1 -1
- package/{sideBySide-CnztT9JG.js → sideBySide-BpVt_Czj.js} +2 -2
- package/{slider-BpDumYmt.js → slider-H18xbWk7.js} +3 -3
- package/{slopeField-BIi2Gqgu.js → slopeField-CKdArhAk.js} +2 -2
- package/{solution-B1vv-4wl.js → solution-Du-CeIET.js} +4 -4
- package/{spreadsheet-DVGxaJ12.js → spreadsheet-CMoTjyKf.js} +2 -2
- package/{sq-CjiGjXUE.js → sq-CVP4ayps.js} +3 -3
- package/{subsetOfRealsInput-DlDQbv1v.js → subsetOfRealsInput-cxMNVNKR.js} +2 -2
- package/{summaryStatistics-CnJBRB-2.js → summaryStatistics-C3s88_nN.js} +2 -2
- package/{table-BzSa1HfY.js → table-C_FNmcaC.js} +2 -2
- package/{tabular-BgoXaZGa.js → tabular-Bx24zu-e.js} +2 -2
- package/{tag-01PSjwFf.js → tag-DaUHHQR-.js} +2 -2
- package/{text-BxPZX-K3.js → text-Bwv6foAp.js} +6 -6
- package/{textInput-sJQiLyIq.js → textInput-ngbf4QtZ.js} +6 -6
- package/{tooltip-provider-DGFLtEVi.js → tooltip-provider-srILFzBI.js} +2 -2
- package/{useAnchoredGraphDragHandler-BFxdkMVn.js → useAnchoredGraphDragHandler-DxzKZzL0.js} +1 -1
- package/useDoenetRenderer-UyWCNuKB.js +114 -0
- package/{useFieldCurve-D2aEaoKQ.js → useFieldCurve-BeALHbXl.js} +2 -2
- package/{useSubmitActionWithDelay-DUYvY61i.js → useSubmitActionWithDelay-Dlm36ClP.js} +2 -2
- package/{vector-pTEAgwh0.js → vector-DWL6PO2D.js} +7 -7
- package/{vectorField-Cs8RmjI1.js → vectorField-DgzpZYlm.js} +2 -2
- package/{video-BX46joJU.js → video-OMWIgpoH.js} +4 -4
- package/legend-D_nZziIf.js +0 -347
- package/useDoenetRenderer-CUfcSgne.js +0 -114
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { u as useT, G as useRecordVisibilityChanges, q as jsxRuntimeExports, W as ToggleButtonGroup, U as ToggleButton, R as ActionButtonGroup, S as ActionButton } from "./doenetml-
|
|
1
|
+
import { u as useT, G as useRecordVisibilityChanges, q as jsxRuntimeExports, W as ToggleButtonGroup, U as ToggleButton, R as ActionButtonGroup, S as ActionButton } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useState, useRef } from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
4
4
|
import { l as ltrIslandProps } from "./direction-BwrU7jHk.js";
|
|
5
5
|
const subsetOfRealsInput = React__default.memo(function subsetOfReals(props) {
|
|
6
6
|
let { id, SVs, actions, callAction } = useDoenetRenderer(props, false);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { u as useT, v as useChromeLangDir, G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-
|
|
1
|
+
import { u as useT, v as useChromeLangDir, G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useRef } from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.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);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-
|
|
1
|
+
import { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useRef } from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.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 { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-
|
|
1
|
+
import { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useRef } from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.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 { q as jsxRuntimeExports } from "./doenetml-
|
|
1
|
+
import { q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.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 { A as DocContext, H as Context, q as jsxRuntimeExports, B as textRendererStyle } from "./doenetml-
|
|
1
|
+
import { A as DocContext, H as Context, q as jsxRuntimeExports, B as textRendererStyle } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useRef, useContext } from "react";
|
|
3
|
-
import { j as jxg } from "./JSXGraphRenderer-
|
|
4
|
-
import { BoardContext, TEXT_LAYER_OFFSET } from "./graph-
|
|
5
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { j as jxg } from "./JSXGraphRenderer-D-h7eH-Q.js";
|
|
4
|
+
import { BoardContext, TEXT_LAYER_OFFSET } from "./graph-DEJxLN7s.js";
|
|
5
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
6
6
|
import { g as getPositionFromAnchorByCoordinate } from "./graph-W6vrFcBu.js";
|
|
7
|
-
import { ChoiceInputInlineContext } from "./choiceInput-
|
|
7
|
+
import { ChoiceInputInlineContext } from "./choiceInput-CP_MrBMk.js";
|
|
8
8
|
import { u as usePointerDragState, a as useBoardPointerTracking } from "./useBoardPointerTracking-DV6a8Wvg.js";
|
|
9
9
|
import { u as useDraggableRefs } from "./useDraggableRefs-QaTfkVuD.js";
|
|
10
|
-
import { d as detachAnchoredGraphElement, a as attachAnchoredGraphDragHandlers } from "./useAnchoredGraphDragHandler-
|
|
10
|
+
import { d as detachAnchoredGraphElement, a as attachAnchoredGraphDragHandlers } from "./useAnchoredGraphDragHandler-DxzKZzL0.js";
|
|
11
11
|
import { u as useJSXGraphCleanup } from "./useJSXGraphCleanup-BNk4sn6x.js";
|
|
12
12
|
const text = React__default.memo(function Text(props) {
|
|
13
13
|
let { componentIdx, id, SVs, actions, callAction } = useDoenetRenderer(props);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { F as useContentT, H as Context, q as jsxRuntimeExports, T as MathJax } from "./doenetml-
|
|
1
|
+
import { F as useContentT, H as Context, q as jsxRuntimeExports, T as MathJax } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import { useState, useRef, useContext, useEffect } from "react";
|
|
3
|
-
import { j as jxg } from "./JSXGraphRenderer-
|
|
4
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { j as jxg } from "./JSXGraphRenderer-D-h7eH-Q.js";
|
|
4
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
5
5
|
import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
|
|
6
|
-
import { BoardContext } from "./graph-
|
|
6
|
+
import { BoardContext } from "./graph-DEJxLN7s.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-
|
|
9
|
-
import { D as DescriptionPopover } from "./Description-
|
|
8
|
+
import { c as calculateValidationState, u as useSubmitActionWithDelay, a as createCheckWorkComponent } from "./useSubmitActionWithDelay-Dlm36ClP.js";
|
|
9
|
+
import { D as DescriptionPopover } from "./Description-9xkiCcAk.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);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ae as createStoreContext, af as createDialogComponent, Y as forwardRef, Z as createElement, $ as createHook, a1 as invariant, ag as useWrapElement, q as jsxRuntimeExports, a2 as useStoreState, ah as isFalsyBooleanCallback, ai as contains, aj as sync, ak as chain, al as useEvent, am as createStore, an as defaultValue, ao as useStore, ap as useStoreProps } from "./doenetml-
|
|
2
|
-
import { H as HovercardScopedContextProvider, a as HovercardContextProvider, u as useHovercard, b as useHovercardAnchor, c as createHovercardStore, d as useHovercardStoreProps } from "./hovercard-store-
|
|
1
|
+
import { ae as createStoreContext, af as createDialogComponent, Y as forwardRef, Z as createElement, $ as createHook, a1 as invariant, ag as useWrapElement, q as jsxRuntimeExports, a2 as useStoreState, ah as isFalsyBooleanCallback, ai as contains, aj as sync, ak as chain, al as useEvent, am as createStore, an as defaultValue, ao as useStore, ap as useStoreProps } from "./doenetml-D-MlvjpX.js";
|
|
2
|
+
import { H as HovercardScopedContextProvider, a as HovercardContextProvider, u as useHovercard, b as useHovercardAnchor, c as createHovercardStore, d as useHovercardStoreProps } from "./hovercard-store-C6w9Xi6E.js";
|
|
3
3
|
import { useRef, useEffect } from "react";
|
|
4
4
|
const ctx = createStoreContext([HovercardContextProvider], [HovercardScopedContextProvider]);
|
|
5
5
|
const useTooltipProviderContext = ctx.useProviderContext;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as removeJXGEventHandlers, L as LINE_FAMILY_EVENTS, j as jxg } from "./JSXGraphRenderer-
|
|
1
|
+
import { r as removeJXGEventHandlers, L as LINE_FAMILY_EVENTS, j as jxg } from "./JSXGraphRenderer-D-h7eH-Q.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 { x as useAppSelector, y as mainSlice, z as renderersLoadComponent, _ as __variableDynamicImportRuntimeHelper } from "./doenetml-D-MlvjpX.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-BBe_OHun.js"), "./renderers/JSXGraphRenderer.tsx": () => import("./JSXGraphRenderer-D-h7eH-Q.js").then((n) => n.m), "./renderers/_error.tsx": () => import("./_error-xoPS4ylR.js"), "./renderers/alert.tsx": () => import("./alert-Bd-rOjK5.js"), "./renderers/angle.tsx": () => import("./angle-ByHQbkot.js"), "./renderers/answer.tsx": () => import("./answer-C7iWerJU.js"), "./renderers/asList.tsx": () => import("./asList-D5Rmgn6J.js"), "./renderers/blockQuote.tsx": () => import("./blockQuote-DytO_fho.js"), "./renderers/boolean.tsx": () => import("./boolean-CHkxx77b.js"), "./renderers/booleanInput.tsx": () => import("./booleanInput-C7X8yxsi.js"), "./renderers/br.tsx": () => import("./br-BAqzBJXy.js"), "./renderers/button.tsx": () => import("./button-Bx5TNS-p.js"), "./renderers/c.tsx": () => import("./c-8yJmTtwG.js"), "./renderers/cell.tsx": () => import("./cell-CfF5x6ah.js"), "./renderers/choiceInput.tsx": () => import("./choiceInput-CP_MrBMk.js"), "./renderers/circle.tsx": () => import("./circle-DuJCg1NM.js"), "./renderers/cobwebPolyline.tsx": () => import("./cobwebPolyline-C_8dB69b.js"), "./renderers/codeEditor.tsx": () => import("./codeEditor-BOlD1E56.js"), "./renderers/containerBlock.tsx": () => import("./containerBlock-BcrzJRO5.js"), "./renderers/containerInline.tsx": () => import("./containerInline-B2CNSZKZ.js"), "./renderers/curve.tsx": () => import("./curve-DhoP5Bw3.js"), "./renderers/ellipsis.tsx": () => import("./ellipsis-BLIkiXMS.js"), "./renderers/em.tsx": () => import("./em-DRpem1-2.js"), "./renderers/embed.tsx": () => import("./embed-rqTRzFAq.js"), "./renderers/feedback.tsx": () => import("./feedback-Cllga3c8.js"), "./renderers/figure.tsx": () => import("./figure-g0KPrh2g.js"), "./renderers/footnote.tsx": () => import("./footnote-NbaFHPVN.js"), "./renderers/fractionInput.tsx": () => import("./fractionInput-CDrDh9Fv.js"), "./renderers/graph.tsx": () => import("./graph-DEJxLN7s.js"), "./renderers/hint.tsx": () => import("./hint-DrALFzMS.js"), "./renderers/hr.tsx": () => import("./hr-D60yVJF8.js"), "./renderers/image.tsx": () => import("./image-D2AAKAkE.js"), "./renderers/label.tsx": () => import("./label-C9mDUeLa.js"), "./renderers/legend.tsx": () => import("./legend-C6fv77U1.js"), "./renderers/line.tsx": () => import("./line-D70Ga1ZR.js"), "./renderers/lineSegment.tsx": () => import("./lineSegment-CY56NKgL.js"), "./renderers/list.tsx": () => import("./list-ByHyqkne.js"), "./renderers/lq.tsx": () => import("./lq-BsjmRGG-.js"), "./renderers/lsq.tsx": () => import("./lsq-Coc4hkoA.js"), "./renderers/math.tsx": () => import("./math-BuIKoKOy.js"), "./renderers/mathInput.tsx": () => import("./mathInput-qYk3ZYyj.js"), "./renderers/matrixInput.tsx": () => import("./matrixInput-BN8rvPJ1.js"), "./renderers/mdash.tsx": () => import("./mdash-DY8x56Gi.js"), "./renderers/nbsp.tsx": () => import("./nbsp-CXbufv9K.js"), "./renderers/ndash.tsx": () => import("./ndash-fuyshFxl.js"), "./renderers/number.tsx": () => import("./number-Eb5VzM_3.js"), "./renderers/orbitalDiagram.tsx": () => import("./orbitalDiagram-DH3M6stA.js"), "./renderers/orbitalDiagramInput.tsx": () => import("./orbitalDiagramInput-Dp9_SsaS.js"), "./renderers/p.tsx": () => import("./p-C-ElLn48.js"), "./renderers/paginatorControls.tsx": () => import("./paginatorControls-CsvOFtmD.js"), "./renderers/pegboard.tsx": () => import("./pegboard-DykTEm7O.js"), "./renderers/point.tsx": () => import("./point-B2E2eTId.js"), "./renderers/polygon.tsx": () => import("./polygon-CMbtwfIV.js"), "./renderers/polyline.tsx": () => import("./polyline-C3B4nNLP.js"), "./renderers/pre.tsx": () => import("./pre-Bz1ObVxi.js"), "./renderers/prefigure.tsx": () => import("./prefigure-CjSd_o5R.js"), "./renderers/pretzel.tsx": () => import("./pretzel-CUqywVnZ.js"), "./renderers/q.tsx": () => import("./q-CfaZ9Q4M.js"), "./renderers/ray.tsx": () => import("./ray-BHE803z-.js"), "./renderers/ref.tsx": () => import("./ref-XzKSEd_P.js"), "./renderers/regionBetweenCurveXAxis.tsx": () => import("./regionBetweenCurveXAxis-Cene1PWc.js"), "./renderers/regionBetweenCurves.tsx": () => import("./regionBetweenCurves-UUj2tPjD.js"), "./renderers/row.tsx": () => import("./row-AdEMsZm3.js"), "./renderers/rq.tsx": () => import("./rq-DpsoAxFh.js"), "./renderers/rsq.tsx": () => import("./rsq-BUIvQK49.js"), "./renderers/section.tsx": () => import("./section-DFB_LR6S.js"), "./renderers/sideBySide.tsx": () => import("./sideBySide-BpVt_Czj.js"), "./renderers/slider.tsx": () => import("./slider-H18xbWk7.js"), "./renderers/slopeField.tsx": () => import("./slopeField-CKdArhAk.js"), "./renderers/solution.tsx": () => import("./solution-Du-CeIET.js"), "./renderers/spreadsheet.tsx": () => import("./spreadsheet-CMoTjyKf.js"), "./renderers/sq.tsx": () => import("./sq-CVP4ayps.js"), "./renderers/subsetOfRealsInput.tsx": () => import("./subsetOfRealsInput-cxMNVNKR.js"), "./renderers/summaryStatistics.tsx": () => import("./summaryStatistics-C3s88_nN.js"), "./renderers/table.tsx": () => import("./table-C_FNmcaC.js"), "./renderers/tabular.tsx": () => import("./tabular-Bx24zu-e.js"), "./renderers/tag.tsx": () => import("./tag-DaUHHQR-.js"), "./renderers/text.tsx": () => import("./text-Bwv6foAp.js"), "./renderers/textInput.tsx": () => import("./textInput-ngbf4QtZ.js"), "./renderers/vector.tsx": () => import("./vector-DWL6PO2D.js"), "./renderers/vectorField.tsx": () => import("./vectorField-DgzpZYlm.js"), "./renderers/video.tsx": () => import("./video-OMWIgpoH.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,6 +1,6 @@
|
|
|
1
1
|
import { useMemo, useContext, useRef } from "react";
|
|
2
|
-
import { BoardContext, LINE_LAYER_OFFSET } from "./graph-
|
|
3
|
-
import { K as createFunctionFromDefinition, A as DocContext } from "./doenetml-
|
|
2
|
+
import { BoardContext, LINE_LAYER_OFFSET } from "./graph-DEJxLN7s.js";
|
|
3
|
+
import { K as createFunctionFromDefinition, A as DocContext } from "./doenetml-D-MlvjpX.js";
|
|
4
4
|
import { s as styleToDash } from "./styleToDash-DWb71gbd.js";
|
|
5
5
|
import { u as useJSXGraphCleanup } from "./useJSXGraphCleanup-BNk4sn6x.js";
|
|
6
6
|
function fieldFunctionFromDefinition(fDefinition) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { q as jsxRuntimeExports } from "./doenetml-
|
|
2
|
-
import { F as FontAwesomeIcon } from "./index.es-
|
|
1
|
+
import { q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
|
+
import { F as FontAwesomeIcon } from "./index.es-BZY0c1t3.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) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as DocContext, q as jsxRuntimeExports, B as textRendererStyle } from "./doenetml-
|
|
1
|
+
import { A as DocContext, q as jsxRuntimeExports, B as textRendererStyle } from "./doenetml-D-MlvjpX.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-
|
|
4
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
5
|
-
import { BoardContext, VERTEX_LAYER_OFFSET, LINE_LAYER_OFFSET } from "./graph-
|
|
6
|
-
import { D as DynamicMath } from "./DynamicMath-
|
|
7
|
-
import { u as useSourceNavigation, a as attachLineFamilyDragHandlers } from "./lineFamilyDragHandlers-
|
|
8
|
-
import { ChoiceInputInlineContext } from "./choiceInput-
|
|
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-D-h7eH-Q.js";
|
|
4
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
5
|
+
import { BoardContext, VERTEX_LAYER_OFFSET, LINE_LAYER_OFFSET } from "./graph-DEJxLN7s.js";
|
|
6
|
+
import { D as DynamicMath } from "./DynamicMath-Bmg5p72t.js";
|
|
7
|
+
import { u as useSourceNavigation, a as attachLineFamilyDragHandlers } from "./lineFamilyDragHandlers-Bcg80hj8.js";
|
|
8
|
+
import { ChoiceInputInlineContext } from "./choiceInput-CP_MrBMk.js";
|
|
9
9
|
import { a as buildLineLikeAttributes, c as buildDragHandleAttributes } from "./buildGraphicalAttributes-BTKBJYXD.js";
|
|
10
10
|
import { u as usePointerDragState, a as useBoardPointerTracking } from "./useBoardPointerTracking-DV6a8Wvg.js";
|
|
11
11
|
import { p as pointerEventToUserCoords } from "./dragThreshold-DuSSFrIU.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React__default from "react";
|
|
2
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
-
import { u as useFieldFunction, a as useFieldCurve, c as buildVectorFieldData } from "./useFieldCurve-
|
|
2
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
3
|
+
import { u as useFieldFunction, a as useFieldCurve, c as buildVectorFieldData } from "./useFieldCurve-BeALHbXl.js";
|
|
4
4
|
const vectorField = React__default.memo(function VectorField(props) {
|
|
5
5
|
let { SVs } = useDoenetRenderer(props);
|
|
6
6
|
VectorField.ignoreActionsWithoutCore = () => true;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-
|
|
1
|
+
import { G as useRecordVisibilityChanges, q as jsxRuntimeExports } from "./doenetml-D-MlvjpX.js";
|
|
2
2
|
import React__default, { useState, useEffect, useRef } from "react";
|
|
3
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-
|
|
3
|
+
import { u as useDoenetRenderer } from "./useDoenetRenderer-UyWCNuKB.js";
|
|
4
4
|
import { s as sizeToCSS } from "./css-BJLDLYRJ.js";
|
|
5
|
-
import { D as DescriptionPopover, a as DescriptionAsDetails } from "./Description-
|
|
5
|
+
import { D as DescriptionPopover, a as DescriptionAsDetails } from "./Description-9xkiCcAk.js";
|
|
6
6
|
import { g as getNonInlineMediaLayoutStyles } from "./nonInlineMediaLayout-CkXHaqzo.js";
|
|
7
|
-
import { N as NonInlineMediaWrapper } from "./NonInlineMediaWrapper-
|
|
7
|
+
import { N as NonInlineMediaWrapper } from "./NonInlineMediaWrapper-DqF3Wxsr.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;
|
package/legend-D_nZziIf.js
DELETED
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
import { A as DocContext, M as deepCompare, q as jsxRuntimeExports, C as loadMathJax } from "./doenetml-u1YndSm7.js";
|
|
2
|
-
import React__default, { useContext, useRef, useEffect } from "react";
|
|
3
|
-
import { j as jxg } from "./JSXGraphRenderer-D6iPo1FB.js";
|
|
4
|
-
import { u as useDoenetRenderer } from "./useDoenetRenderer-CUfcSgne.js";
|
|
5
|
-
import { BoardContext, BASE_LAYER_OFFSET, LINE_LAYER_OFFSET, POINT_LAYER_OFFSET, TEXT_LAYER_OFFSET } from "./graph-8Ybpt4il.js";
|
|
6
|
-
import { s as styleToDash } from "./styleToDash-DWb71gbd.js";
|
|
7
|
-
import { e as resolveBackgroundColor, b as resolveCanvasColor, f as resolveTextColor, g as resolvePanelBorderColor } from "./styleColors-CKo0M7P-.js";
|
|
8
|
-
const legend = React__default.memo(function Legend(props) {
|
|
9
|
-
let { id, SVs } = useDoenetRenderer(props);
|
|
10
|
-
const board = useContext(BoardContext);
|
|
11
|
-
const { darkMode } = useContext(DocContext) || {};
|
|
12
|
-
let swatches = useRef([]);
|
|
13
|
-
let labels = useRef([]);
|
|
14
|
-
let box = useRef(null);
|
|
15
|
-
let previousDependencies = useRef(null);
|
|
16
|
-
const layoutGeneration = useRef(0);
|
|
17
|
-
const boxFillColor = resolveBackgroundColor(SVs.selectedStyle, darkMode) || resolveCanvasColor(darkMode);
|
|
18
|
-
const boxBorderColor = resolvePanelBorderColor(darkMode);
|
|
19
|
-
const labelTextColor = resolveTextColor(SVs.selectedStyle, darkMode);
|
|
20
|
-
const boxLayer = 10 * SVs.layer + BASE_LAYER_OFFSET;
|
|
21
|
-
const lineSwatchLayer = 10 * SVs.layer + LINE_LAYER_OFFSET;
|
|
22
|
-
const markerSwatchLayer = 10 * SVs.layer + POINT_LAYER_OFFSET;
|
|
23
|
-
const labelLayer = 10 * SVs.layer + TEXT_LAYER_OFFSET;
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
return () => {
|
|
26
|
-
deleteLegend();
|
|
27
|
-
};
|
|
28
|
-
}, []);
|
|
29
|
-
function createLegend() {
|
|
30
|
-
if (board === null) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const generation = ++layoutGeneration.current;
|
|
34
|
-
let { xMin, xMax, yMin, yMax } = SVs.graphLimits;
|
|
35
|
-
let legendDy = (yMax - yMin) * 0.06;
|
|
36
|
-
let legendLineLength = (xMax - xMin) * 0.05;
|
|
37
|
-
let legendDx = (xMax - xMin) * 0.02;
|
|
38
|
-
const baseLegendX = xMin + (xMax - xMin) * 0.05;
|
|
39
|
-
let legendX = baseLegendX;
|
|
40
|
-
let legendY;
|
|
41
|
-
if (SVs.position.slice(0, 5) === "upper") {
|
|
42
|
-
legendY = yMin + (yMax - yMin) * 0.95;
|
|
43
|
-
} else {
|
|
44
|
-
legendY = yMin + (yMax - yMin) * 0.05 + legendDy * SVs.legendElements.length;
|
|
45
|
-
}
|
|
46
|
-
let atRight = SVs.position.slice(SVs.position.length - 5, SVs.position.length) === "right";
|
|
47
|
-
swatches.current = [];
|
|
48
|
-
labels.current = [];
|
|
49
|
-
let maxTextWidth = 0;
|
|
50
|
-
let usedMathJax = false;
|
|
51
|
-
for (let [ind, element] of SVs.legendElements.entries()) {
|
|
52
|
-
if (element.label) {
|
|
53
|
-
let y = legendY - ind * legendDy;
|
|
54
|
-
let textAttrs = {
|
|
55
|
-
fixed: true,
|
|
56
|
-
highlight: false,
|
|
57
|
-
layer: labelLayer,
|
|
58
|
-
strokeColor: labelTextColor,
|
|
59
|
-
highlightStrokeColor: labelTextColor,
|
|
60
|
-
// A label is an absolutely positioned div inside the
|
|
61
|
-
// board, so left to itself it is only as wide as the room
|
|
62
|
-
// beside it and wraps to fit. The legend gives each entry
|
|
63
|
-
// one row, and the box is drawn around those rows, so a
|
|
64
|
-
// label that wraps is taller than the row it was given: it
|
|
65
|
-
// overlaps the entry below and overflows the box. Kept on
|
|
66
|
-
// one line it runs past the graph's edge instead, which is
|
|
67
|
-
// the lesser of the two (see #1750).
|
|
68
|
-
cssStyle: "white-space: nowrap"
|
|
69
|
-
};
|
|
70
|
-
if (element.label.hasLatex) {
|
|
71
|
-
textAttrs.useMathJax = true;
|
|
72
|
-
textAttrs.parse = false;
|
|
73
|
-
usedMathJax = true;
|
|
74
|
-
}
|
|
75
|
-
let txt = board.create(
|
|
76
|
-
"text",
|
|
77
|
-
[
|
|
78
|
-
legendX + legendLineLength + legendDx,
|
|
79
|
-
y,
|
|
80
|
-
element.label.value
|
|
81
|
-
],
|
|
82
|
-
textAttrs
|
|
83
|
-
);
|
|
84
|
-
labels.current.push(txt);
|
|
85
|
-
maxTextWidth = Math.max(maxTextWidth, txt.rendNode.offsetWidth);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
maxTextWidth /= board.unitX;
|
|
89
|
-
if (atRight) {
|
|
90
|
-
legendX = Math.max(
|
|
91
|
-
baseLegendX,
|
|
92
|
-
xMax - legendLineLength - 3 * legendDx - maxTextWidth
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
function currentBoxCorners() {
|
|
96
|
-
const padX = legendDx / 2;
|
|
97
|
-
const padY = legendDy / 4;
|
|
98
|
-
const left = legendX - padX;
|
|
99
|
-
const right = legendX + legendLineLength + legendDx + maxTextWidth + padX;
|
|
100
|
-
const top = legendY + legendDy / 2 + padY;
|
|
101
|
-
const bottom = legendY - (SVs.legendElements.length - 1) * legendDy - legendDy / 2 - padY;
|
|
102
|
-
return [
|
|
103
|
-
[left, top],
|
|
104
|
-
[right, top],
|
|
105
|
-
[right, bottom],
|
|
106
|
-
[left, bottom]
|
|
107
|
-
];
|
|
108
|
-
}
|
|
109
|
-
if (SVs.boxed && SVs.legendElements.length > 0) {
|
|
110
|
-
box.current = board.create("polygon", currentBoxCorners(), {
|
|
111
|
-
fillColor: boxFillColor,
|
|
112
|
-
fillOpacity: 1,
|
|
113
|
-
fixed: true,
|
|
114
|
-
highlight: false,
|
|
115
|
-
layer: boxLayer,
|
|
116
|
-
vertices: { visible: false },
|
|
117
|
-
borders: {
|
|
118
|
-
strokeColor: boxBorderColor,
|
|
119
|
-
strokeWidth: 1,
|
|
120
|
-
strokeOpacity: 1,
|
|
121
|
-
fixed: true,
|
|
122
|
-
highlight: false,
|
|
123
|
-
layer: boxLayer
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
for (let [ind, element] of SVs.legendElements.entries()) {
|
|
128
|
-
let y = legendY - ind * legendDy;
|
|
129
|
-
if (element.swatchType === "marker") {
|
|
130
|
-
let pointStyle = {
|
|
131
|
-
fillColor: element.markerColor,
|
|
132
|
-
fillOpacity: element.lineOpacity,
|
|
133
|
-
strokeColor: "none",
|
|
134
|
-
size: element.markerSize,
|
|
135
|
-
face: normalizeStyle(element.markerStyle),
|
|
136
|
-
fixed: true,
|
|
137
|
-
highlight: false,
|
|
138
|
-
withLabel: false,
|
|
139
|
-
showInfoBox: false,
|
|
140
|
-
layer: markerSwatchLayer
|
|
141
|
-
};
|
|
142
|
-
let point = board.create(
|
|
143
|
-
"point",
|
|
144
|
-
[legendX + legendLineLength / 2, y],
|
|
145
|
-
pointStyle
|
|
146
|
-
);
|
|
147
|
-
swatches.current.push(point);
|
|
148
|
-
} else if (element.swatchType === "rectangle") {
|
|
149
|
-
let rectangleStyle = {
|
|
150
|
-
fillColor: element.filled ? element.fillColor : "none",
|
|
151
|
-
fillOpacity: element.fillOpacity,
|
|
152
|
-
fixed: true,
|
|
153
|
-
highlight: false,
|
|
154
|
-
layer: lineSwatchLayer,
|
|
155
|
-
vertices: { visible: false },
|
|
156
|
-
borders: {
|
|
157
|
-
strokeColor: element.lineColor,
|
|
158
|
-
strokeWidth: element.lineWidth,
|
|
159
|
-
strokeOpacity: element.lineOpacity,
|
|
160
|
-
dash: styleToDash(element.lineStyle),
|
|
161
|
-
fixed: true,
|
|
162
|
-
highlight: false,
|
|
163
|
-
layer: lineSwatchLayer
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
let seg = board.create(
|
|
167
|
-
"polygon",
|
|
168
|
-
[
|
|
169
|
-
[legendX, y + legendDy / 4],
|
|
170
|
-
[legendX + legendLineLength, y + legendDy / 4],
|
|
171
|
-
[legendX + legendLineLength, y - legendDy / 4],
|
|
172
|
-
[legendX, y - legendDy / 4]
|
|
173
|
-
],
|
|
174
|
-
rectangleStyle
|
|
175
|
-
);
|
|
176
|
-
swatches.current.push(seg);
|
|
177
|
-
} else {
|
|
178
|
-
let lineStyle = {
|
|
179
|
-
strokeColor: element.lineColor,
|
|
180
|
-
strokeWidth: element.lineWidth,
|
|
181
|
-
strokeOpacity: element.lineOpacity,
|
|
182
|
-
dash: styleToDash(element.lineStyle),
|
|
183
|
-
fixed: true,
|
|
184
|
-
highlight: false,
|
|
185
|
-
layer: lineSwatchLayer
|
|
186
|
-
};
|
|
187
|
-
let seg = board.create(
|
|
188
|
-
"segment",
|
|
189
|
-
[
|
|
190
|
-
[legendX, y],
|
|
191
|
-
[legendX + legendLineLength, y]
|
|
192
|
-
],
|
|
193
|
-
lineStyle
|
|
194
|
-
);
|
|
195
|
-
swatches.current.push(seg);
|
|
196
|
-
}
|
|
197
|
-
if (atRight && element.label) {
|
|
198
|
-
labels.current[ind].coords.setCoordinates(jxg.COORDS_BY_USER, [
|
|
199
|
-
legendX + legendLineLength + legendDx,
|
|
200
|
-
y
|
|
201
|
-
]);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (usedMathJax && (atRight || box.current)) {
|
|
205
|
-
layOutAfterTypesetting().then(() => {
|
|
206
|
-
if (layoutGeneration.current !== generation) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
maxTextWidth = 0;
|
|
210
|
-
for (let txt of labels.current) {
|
|
211
|
-
maxTextWidth = Math.max(
|
|
212
|
-
maxTextWidth,
|
|
213
|
-
txt.rendNode.offsetWidth
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
maxTextWidth /= board.unitX;
|
|
217
|
-
if (atRight) {
|
|
218
|
-
legendX = Math.max(
|
|
219
|
-
baseLegendX,
|
|
220
|
-
xMax - legendLineLength - 3 * legendDx - maxTextWidth
|
|
221
|
-
);
|
|
222
|
-
for (let [ind, swatch] of swatches.current.entries()) {
|
|
223
|
-
let y = legendY - ind * legendDy;
|
|
224
|
-
if (swatch.elType === "point") {
|
|
225
|
-
swatch.coords.setCoordinates(
|
|
226
|
-
jxg.COORDS_BY_USER,
|
|
227
|
-
[legendX + legendLineLength / 2, y]
|
|
228
|
-
);
|
|
229
|
-
swatch.needsUpdate = true;
|
|
230
|
-
swatch.update();
|
|
231
|
-
} else if (swatch.elType === "polygon") {
|
|
232
|
-
movePolygon(swatch, [
|
|
233
|
-
[legendX, y + legendDy / 4],
|
|
234
|
-
[
|
|
235
|
-
legendX + legendLineLength,
|
|
236
|
-
y + legendDy / 4
|
|
237
|
-
],
|
|
238
|
-
[
|
|
239
|
-
legendX + legendLineLength,
|
|
240
|
-
y - legendDy / 4
|
|
241
|
-
],
|
|
242
|
-
[legendX, y - legendDy / 4]
|
|
243
|
-
]);
|
|
244
|
-
} else {
|
|
245
|
-
const line = swatch;
|
|
246
|
-
line.point1.coords.setCoordinates(
|
|
247
|
-
jxg.COORDS_BY_USER,
|
|
248
|
-
[legendX, y]
|
|
249
|
-
);
|
|
250
|
-
line.point2.coords.setCoordinates(
|
|
251
|
-
jxg.COORDS_BY_USER,
|
|
252
|
-
[legendX + legendLineLength, y]
|
|
253
|
-
);
|
|
254
|
-
line.needsUpdate = true;
|
|
255
|
-
line.update();
|
|
256
|
-
}
|
|
257
|
-
if (labels.current[ind]) {
|
|
258
|
-
labels.current[ind].coords.setCoordinates(
|
|
259
|
-
jxg.COORDS_BY_USER,
|
|
260
|
-
[legendX + legendLineLength + legendDx, y]
|
|
261
|
-
);
|
|
262
|
-
labels.current[ind].needsUpdate = true;
|
|
263
|
-
labels.current[ind].update();
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (box.current) {
|
|
268
|
-
movePolygon(box.current, currentBoxCorners());
|
|
269
|
-
}
|
|
270
|
-
board.updateRenderer();
|
|
271
|
-
}).catch((e) => {
|
|
272
|
-
console.error(
|
|
273
|
-
"Failed to lay out legend after typesetting",
|
|
274
|
-
e
|
|
275
|
-
);
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
async function layOutAfterTypesetting() {
|
|
280
|
-
const mathJax = await loadMathJax();
|
|
281
|
-
await mathJax.startup?.promise;
|
|
282
|
-
}
|
|
283
|
-
function deleteLegend() {
|
|
284
|
-
layoutGeneration.current++;
|
|
285
|
-
for (let swatch of swatches.current) {
|
|
286
|
-
board?.removeObject(swatch);
|
|
287
|
-
}
|
|
288
|
-
for (let txt of labels.current) {
|
|
289
|
-
board?.removeObject(txt);
|
|
290
|
-
}
|
|
291
|
-
if (box.current) {
|
|
292
|
-
board?.removeObject(box.current);
|
|
293
|
-
box.current = null;
|
|
294
|
-
}
|
|
295
|
-
swatches.current = [];
|
|
296
|
-
labels.current = [];
|
|
297
|
-
}
|
|
298
|
-
if (board) {
|
|
299
|
-
const dependencies = {
|
|
300
|
-
hidden: SVs.hidden,
|
|
301
|
-
legendElements: [...SVs.legendElements],
|
|
302
|
-
graphLimits: { ...SVs.graphLimits },
|
|
303
|
-
position: SVs.position,
|
|
304
|
-
layer: SVs.layer,
|
|
305
|
-
boxed: SVs.boxed,
|
|
306
|
-
boxFillColor,
|
|
307
|
-
boxBorderColor,
|
|
308
|
-
labelTextColor
|
|
309
|
-
};
|
|
310
|
-
if (!deepCompare(previousDependencies.current, dependencies)) {
|
|
311
|
-
deleteLegend();
|
|
312
|
-
if (!SVs.hidden) {
|
|
313
|
-
createLegend();
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
previousDependencies.current = dependencies;
|
|
317
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { id }) });
|
|
318
|
-
}
|
|
319
|
-
if (SVs.hidden) {
|
|
320
|
-
return null;
|
|
321
|
-
}
|
|
322
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { id }) });
|
|
323
|
-
});
|
|
324
|
-
function normalizeStyle(style) {
|
|
325
|
-
if (style === "triangle") {
|
|
326
|
-
return "triangleup";
|
|
327
|
-
} else {
|
|
328
|
-
return style;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
function movePolygon(polygon, corners) {
|
|
332
|
-
for (let i = 0; i < corners.length; i++) {
|
|
333
|
-
polygon.vertices[i].coords.setCoordinates(
|
|
334
|
-
jxg.COORDS_BY_USER,
|
|
335
|
-
corners[i]
|
|
336
|
-
);
|
|
337
|
-
polygon.vertices[i].needsUpdate = true;
|
|
338
|
-
polygon.vertices[i].update();
|
|
339
|
-
polygon.borders[i].needsUpdate = true;
|
|
340
|
-
polygon.borders[i].update();
|
|
341
|
-
}
|
|
342
|
-
polygon.needsUpdate = true;
|
|
343
|
-
polygon.update();
|
|
344
|
-
}
|
|
345
|
-
export {
|
|
346
|
-
legend as default
|
|
347
|
-
};
|