@khanacademy/perseus 55.0.1 → 56.1.0
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/dist/components/math-input.d.ts +4 -4
- package/dist/es/index.css +14 -4
- package/dist/es/index.js +3086 -2919
- package/dist/es/index.js.map +1 -1
- package/dist/es/strings.js +0 -5
- package/dist/es/strings.js.map +1 -1
- package/dist/index.css +14 -4
- package/dist/index.js +3215 -3051
- package/dist/index.js.map +1 -1
- package/dist/strings.d.ts +0 -5
- package/dist/strings.js +76 -84
- package/dist/strings.js.map +1 -1
- package/dist/widgets/expression/expression.d.ts +4 -17
- package/dist/widgets/interactive-graph.d.ts +1 -0
- package/dist/widgets/interactive-graphs/graphs/components/angle-indicators.d.ts +2 -1
- package/dist/widgets/interactive-graphs/graphs/components/movable-line.d.ts +0 -1
- package/dist/widgets/interactive-graphs/graphs/components/vector.d.ts +2 -1
- package/dist/widgets/interactive-graphs/graphs/polygon.d.ts +15 -0
- package/dist/widgets/interactive-graphs/interactive-graph-question-builder.d.ts +2 -1
- package/dist/widgets/interactive-graphs/math/box.d.ts +4 -0
- package/dist/widgets/interactive-graphs/reducer/interactive-graph-reducer.d.ts +5 -0
- package/dist/widgets/interactive-graphs/reducer/use-graph-config.d.ts +1 -0
- package/dist/widgets/interactive-graphs/types.d.ts +2 -1
- package/dist/widgets/radio/base-radio.d.ts +1 -1
- package/dist/widgets/radio/radio-component.d.ts +1 -1
- package/package.json +43 -43
package/dist/strings.d.ts
CHANGED
|
@@ -258,10 +258,6 @@ export type PerseusStrings = {
|
|
|
258
258
|
x: string;
|
|
259
259
|
y: string;
|
|
260
260
|
}) => string;
|
|
261
|
-
srAngleVertex: ({ x, y }: {
|
|
262
|
-
x: string;
|
|
263
|
-
y: string;
|
|
264
|
-
}) => string;
|
|
265
261
|
srAngleVertexWithAngleMeasure: ({ x, y, angleMeasure, }: {
|
|
266
262
|
x: string;
|
|
267
263
|
y: string;
|
|
@@ -637,7 +633,6 @@ export declare const strings: {
|
|
|
637
633
|
srLinearGrabHandle: string;
|
|
638
634
|
srAngleStartingSide: string;
|
|
639
635
|
srAngleEndingSide: string;
|
|
640
|
-
srAngleVertex: string;
|
|
641
636
|
srAngleVertexWithAngleMeasure: string;
|
|
642
637
|
srAngleGraphAriaLabel: string;
|
|
643
638
|
srAngleGraphAriaDescription: string;
|
package/dist/strings.js
CHANGED
|
@@ -183,7 +183,6 @@ const strings = {
|
|
|
183
183
|
srLinearGrabHandle: "Line going through point %(point1X)s comma %(point1Y)s and point %(point2X)s comma %(point2Y)s.",
|
|
184
184
|
srAngleStartingSide: "Point 3, starting side at %(x)s comma %(y)s.",
|
|
185
185
|
srAngleEndingSide: "Point 2, ending side at %(x)s comma %(y)s.",
|
|
186
|
-
srAngleVertex: "Point 1, vertex at %(x)s comma %(y)s.",
|
|
187
186
|
srAngleVertexWithAngleMeasure: "Point 1, vertex at %(x)s comma %(y)s. Angle %(angleMeasure)s degrees.",
|
|
188
187
|
srAngleGraphAriaLabel: "An angle on a coordinate plane.",
|
|
189
188
|
srAngleGraphAriaDescription: "The angle measure is %(angleMeasure)s degrees with a vertex at %(vertexX)s comma %(vertexY)s, a point on the starting side at %(startingSideX)s comma %(startingSideY)s and a point on the ending side at %(endingSideX)s comma %(endingSideY)s",
|
|
@@ -623,23 +622,16 @@ const mockStrings = {
|
|
|
623
622
|
} = _ref40;
|
|
624
623
|
return `Point 2, ending side at ${x} comma ${y}.`;
|
|
625
624
|
},
|
|
626
|
-
|
|
627
|
-
let {
|
|
628
|
-
x,
|
|
629
|
-
y
|
|
630
|
-
} = _ref41;
|
|
631
|
-
return `Point 1, vertex at ${x} comma ${y}.`;
|
|
632
|
-
},
|
|
633
|
-
srAngleVertexWithAngleMeasure: _ref42 => {
|
|
625
|
+
srAngleVertexWithAngleMeasure: _ref41 => {
|
|
634
626
|
let {
|
|
635
627
|
x,
|
|
636
628
|
y,
|
|
637
629
|
angleMeasure
|
|
638
|
-
} =
|
|
630
|
+
} = _ref41;
|
|
639
631
|
return `Point 1, vertex at ${x} comma ${y}. Angle ${angleMeasure} degrees.`;
|
|
640
632
|
},
|
|
641
633
|
srAngleGraphAriaLabel: "An angle on a coordinate plane.",
|
|
642
|
-
srAngleGraphAriaDescription:
|
|
634
|
+
srAngleGraphAriaDescription: _ref42 => {
|
|
643
635
|
let {
|
|
644
636
|
angleMeasure,
|
|
645
637
|
vertexX,
|
|
@@ -648,10 +640,10 @@ const mockStrings = {
|
|
|
648
640
|
startingSideY,
|
|
649
641
|
endingSideX,
|
|
650
642
|
endingSideY
|
|
651
|
-
} =
|
|
643
|
+
} = _ref42;
|
|
652
644
|
return `The angle measure is ${angleMeasure} degrees with a vertex at ${vertexX} comma ${vertexY}, a point on the starting side at ${startingSideX} comma ${startingSideY} and a point on the ending side at ${endingSideX} comma ${endingSideY}.`;
|
|
653
645
|
},
|
|
654
|
-
srAngleInteractiveElements:
|
|
646
|
+
srAngleInteractiveElements: _ref43 => {
|
|
655
647
|
let {
|
|
656
648
|
vertexX,
|
|
657
649
|
vertexY,
|
|
@@ -659,136 +651,136 @@ const mockStrings = {
|
|
|
659
651
|
startingSideY,
|
|
660
652
|
endingSideX,
|
|
661
653
|
endingSideY
|
|
662
|
-
} =
|
|
654
|
+
} = _ref43;
|
|
663
655
|
return `An angle formed by 3 points. The vertex is at ${vertexX} comma ${vertexY}. The starting side point is at ${startingSideX} comma ${startingSideY}. The ending side point is at ${endingSideX} comma ${endingSideY}.`;
|
|
664
656
|
},
|
|
665
657
|
srSingleSegmentGraphAriaLabel: "A line segment on a coordinate plane.",
|
|
666
|
-
srMultipleSegmentGraphAriaLabel:
|
|
658
|
+
srMultipleSegmentGraphAriaLabel: _ref44 => {
|
|
667
659
|
let {
|
|
668
660
|
countOfSegments
|
|
669
|
-
} =
|
|
661
|
+
} = _ref44;
|
|
670
662
|
return `${countOfSegments} segments on a coordinate plane.`;
|
|
671
663
|
},
|
|
672
|
-
srMultipleSegmentIndividualLabel:
|
|
664
|
+
srMultipleSegmentIndividualLabel: _ref45 => {
|
|
673
665
|
let {
|
|
674
666
|
point1X,
|
|
675
667
|
point1Y,
|
|
676
668
|
point2X,
|
|
677
669
|
point2Y,
|
|
678
670
|
indexOfSegment
|
|
679
|
-
} =
|
|
671
|
+
} = _ref45;
|
|
680
672
|
return `Segment ${indexOfSegment}: Endpoint 1 at ${point1X} comma ${point1Y}. Endpoint 2 at ${point2X} comma ${point2Y}.`;
|
|
681
673
|
},
|
|
682
|
-
srSingleSegmentLabel:
|
|
674
|
+
srSingleSegmentLabel: _ref46 => {
|
|
683
675
|
let {
|
|
684
676
|
point1X,
|
|
685
677
|
point1Y,
|
|
686
678
|
point2X,
|
|
687
679
|
point2Y
|
|
688
|
-
} =
|
|
680
|
+
} = _ref46;
|
|
689
681
|
return `Endpoint 1 at ${point1X} comma ${point1Y}. Endpoint 2 at ${point2X} comma ${point2Y}.`;
|
|
690
682
|
},
|
|
691
|
-
srSegmentLength:
|
|
683
|
+
srSegmentLength: _ref47 => {
|
|
692
684
|
let {
|
|
693
685
|
length
|
|
694
|
-
} =
|
|
686
|
+
} = _ref47;
|
|
695
687
|
return `Segment length ${length} units.`;
|
|
696
688
|
},
|
|
697
|
-
srSingleSegmentGraphEndpointAriaLabel:
|
|
689
|
+
srSingleSegmentGraphEndpointAriaLabel: _ref48 => {
|
|
698
690
|
let {
|
|
699
691
|
endpointNumber,
|
|
700
692
|
x,
|
|
701
693
|
y
|
|
702
|
-
} =
|
|
694
|
+
} = _ref48;
|
|
703
695
|
return `Endpoint ${endpointNumber} at ${x} comma ${y}.`;
|
|
704
696
|
},
|
|
705
|
-
srMultipleSegmentGraphEndpointAriaLabel:
|
|
697
|
+
srMultipleSegmentGraphEndpointAriaLabel: _ref49 => {
|
|
706
698
|
let {
|
|
707
699
|
endpointNumber,
|
|
708
700
|
x,
|
|
709
701
|
y,
|
|
710
702
|
indexOfSegment
|
|
711
|
-
} =
|
|
703
|
+
} = _ref49;
|
|
712
704
|
return `Endpoint ${endpointNumber} on segment ${indexOfSegment} at ${x} comma ${y}.`;
|
|
713
705
|
},
|
|
714
|
-
srSegmentGrabHandle:
|
|
706
|
+
srSegmentGrabHandle: _ref50 => {
|
|
715
707
|
let {
|
|
716
708
|
point1X,
|
|
717
709
|
point1Y,
|
|
718
710
|
point2X,
|
|
719
711
|
point2Y
|
|
720
|
-
} =
|
|
712
|
+
} = _ref50;
|
|
721
713
|
return `Segment from ${point1X} comma ${point1Y} to ${point2X} comma ${point2Y}.`;
|
|
722
714
|
},
|
|
723
715
|
srLinearSystemGraph: "Two lines on a coordinate plane.",
|
|
724
|
-
srLinearSystemPoints:
|
|
716
|
+
srLinearSystemPoints: _ref51 => {
|
|
725
717
|
let {
|
|
726
718
|
lineNumber,
|
|
727
719
|
point1X,
|
|
728
720
|
point1Y,
|
|
729
721
|
point2X,
|
|
730
722
|
point2Y
|
|
731
|
-
} =
|
|
723
|
+
} = _ref51;
|
|
732
724
|
return `Line ${lineNumber} has two points, point 1 at ${point1X} comma ${point1Y} and point 2 at ${point2X} comma ${point2Y}.`;
|
|
733
725
|
},
|
|
734
|
-
srLinearSystemPoint:
|
|
726
|
+
srLinearSystemPoint: _ref52 => {
|
|
735
727
|
let {
|
|
736
728
|
lineNumber,
|
|
737
729
|
pointSequence,
|
|
738
730
|
x,
|
|
739
731
|
y
|
|
740
|
-
} =
|
|
732
|
+
} = _ref52;
|
|
741
733
|
return `Point ${pointSequence} on line ${lineNumber} at ${x} comma ${y}.`;
|
|
742
734
|
},
|
|
743
|
-
srLinearSystemGrabHandle:
|
|
735
|
+
srLinearSystemGrabHandle: _ref53 => {
|
|
744
736
|
let {
|
|
745
737
|
lineNumber,
|
|
746
738
|
point1X,
|
|
747
739
|
point1Y,
|
|
748
740
|
point2X,
|
|
749
741
|
point2Y
|
|
750
|
-
} =
|
|
742
|
+
} = _ref53;
|
|
751
743
|
return `Line ${lineNumber} going through point ${point1X} comma ${point1Y} and point ${point2X} comma ${point2Y}.`;
|
|
752
744
|
},
|
|
753
|
-
srLinearSystemIntersection:
|
|
745
|
+
srLinearSystemIntersection: _ref54 => {
|
|
754
746
|
let {
|
|
755
747
|
x,
|
|
756
748
|
y
|
|
757
|
-
} =
|
|
749
|
+
} = _ref54;
|
|
758
750
|
return `Line 1 and line 2 intersect at point ${x} comma ${y}.`;
|
|
759
751
|
},
|
|
760
752
|
srLinearSystemParallel: "Line 1 and line 2 are parallel.",
|
|
761
753
|
srRayGraph: "A ray on a coordinate plane.",
|
|
762
|
-
srRayPoints:
|
|
754
|
+
srRayPoints: _ref55 => {
|
|
763
755
|
let {
|
|
764
756
|
point1X,
|
|
765
757
|
point1Y,
|
|
766
758
|
point2X,
|
|
767
759
|
point2Y
|
|
768
|
-
} =
|
|
760
|
+
} = _ref55;
|
|
769
761
|
return `The endpoint is at ${point1X} comma ${point1Y} and the ray goes through point ${point2X} comma ${point2Y}.`;
|
|
770
762
|
},
|
|
771
|
-
srRayGrabHandle:
|
|
763
|
+
srRayGrabHandle: _ref56 => {
|
|
772
764
|
let {
|
|
773
765
|
point1X,
|
|
774
766
|
point1Y,
|
|
775
767
|
point2X,
|
|
776
768
|
point2Y
|
|
777
|
-
} =
|
|
769
|
+
} = _ref56;
|
|
778
770
|
return `Ray with endpoint ${point1X} comma ${point1Y} going through point ${point2X} comma ${point2Y}.`;
|
|
779
771
|
},
|
|
780
|
-
srRayEndpoint:
|
|
772
|
+
srRayEndpoint: _ref57 => {
|
|
781
773
|
let {
|
|
782
774
|
x,
|
|
783
775
|
y
|
|
784
|
-
} =
|
|
776
|
+
} = _ref57;
|
|
785
777
|
return `Endpoint at ${x} comma ${y}.`;
|
|
786
778
|
},
|
|
787
|
-
srRayTerminalPoint:
|
|
779
|
+
srRayTerminalPoint: _ref58 => {
|
|
788
780
|
let {
|
|
789
781
|
x,
|
|
790
782
|
y
|
|
791
|
-
} =
|
|
783
|
+
} = _ref58;
|
|
792
784
|
return `Through point at ${x} comma ${y}.`;
|
|
793
785
|
},
|
|
794
786
|
srQuadraticGraph: "A parabola on a 4-quadrant coordinate plane.",
|
|
@@ -797,55 +789,55 @@ const mockStrings = {
|
|
|
797
789
|
srQuadraticGraphVertexOrigin: "Vertex is at the origin.",
|
|
798
790
|
srQuadraticGraphVertexXAxis: "Vertex is on the X-axis.",
|
|
799
791
|
srQuadraticGraphVertexYAxis: "Vertex is on the Y-axis.",
|
|
800
|
-
srQuadraticGraphVertexQuadrant:
|
|
792
|
+
srQuadraticGraphVertexQuadrant: _ref59 => {
|
|
801
793
|
let {
|
|
802
794
|
quadrant
|
|
803
|
-
} =
|
|
795
|
+
} = _ref59;
|
|
804
796
|
return `Vertex is in quadrant ${quadrant}.`;
|
|
805
797
|
},
|
|
806
|
-
srQuadraticTwoXIntercepts:
|
|
798
|
+
srQuadraticTwoXIntercepts: _ref60 => {
|
|
807
799
|
let {
|
|
808
800
|
intercept1,
|
|
809
801
|
intercept2
|
|
810
|
-
} =
|
|
802
|
+
} = _ref60;
|
|
811
803
|
return `The X-intercepts are at ${intercept1} comma 0 and ${intercept2} comma 0.`;
|
|
812
804
|
},
|
|
813
|
-
srQuadraticOneXIntercept:
|
|
805
|
+
srQuadraticOneXIntercept: _ref61 => {
|
|
814
806
|
let {
|
|
815
807
|
intercept
|
|
816
|
-
} =
|
|
808
|
+
} = _ref61;
|
|
817
809
|
return `The X-intercept is at ${intercept} comma 0.`;
|
|
818
810
|
},
|
|
819
|
-
srQuadraticYIntercept:
|
|
811
|
+
srQuadraticYIntercept: _ref62 => {
|
|
820
812
|
let {
|
|
821
813
|
intercept
|
|
822
|
-
} =
|
|
814
|
+
} = _ref62;
|
|
823
815
|
return `The Y-intercept is at 0 comma ${intercept}.`;
|
|
824
816
|
},
|
|
825
|
-
srQuadraticPointOrigin:
|
|
817
|
+
srQuadraticPointOrigin: _ref63 => {
|
|
826
818
|
let {
|
|
827
819
|
pointNumber
|
|
828
|
-
} =
|
|
820
|
+
} = _ref63;
|
|
829
821
|
return `Point ${pointNumber} on parabola at the origin.`;
|
|
830
822
|
},
|
|
831
|
-
srQuadraticPointAxis:
|
|
823
|
+
srQuadraticPointAxis: _ref64 => {
|
|
832
824
|
let {
|
|
833
825
|
pointNumber,
|
|
834
826
|
x,
|
|
835
827
|
y
|
|
836
|
-
} =
|
|
828
|
+
} = _ref64;
|
|
837
829
|
return `Point ${pointNumber} on parabola at ${x} comma ${y}.`;
|
|
838
830
|
},
|
|
839
|
-
srQuadraticPointQuadrant:
|
|
831
|
+
srQuadraticPointQuadrant: _ref65 => {
|
|
840
832
|
let {
|
|
841
833
|
pointNumber,
|
|
842
834
|
x,
|
|
843
835
|
y,
|
|
844
836
|
quadrant
|
|
845
|
-
} =
|
|
837
|
+
} = _ref65;
|
|
846
838
|
return `Point ${pointNumber} on parabola in quadrant ${quadrant} at ${x} comma ${y}.`;
|
|
847
839
|
},
|
|
848
|
-
srQuadraticInteractiveElements:
|
|
840
|
+
srQuadraticInteractiveElements: _ref66 => {
|
|
849
841
|
let {
|
|
850
842
|
point1X,
|
|
851
843
|
point1Y,
|
|
@@ -853,97 +845,97 @@ const mockStrings = {
|
|
|
853
845
|
point2Y,
|
|
854
846
|
point3X,
|
|
855
847
|
point3Y
|
|
856
|
-
} =
|
|
848
|
+
} = _ref66;
|
|
857
849
|
return `Parabola with points at ${point1X} comma ${point1Y}, ${point2X} comma ${point2Y}, and ${point3X} comma ${point3Y}.`;
|
|
858
850
|
},
|
|
859
851
|
srPolygonGraph: "A polygon.",
|
|
860
852
|
srPolygonGraphCoordinatePlane: "A polygon on a coordinate plane.",
|
|
861
|
-
srPolygonGraphPointsNum:
|
|
853
|
+
srPolygonGraphPointsNum: _ref67 => {
|
|
862
854
|
let {
|
|
863
855
|
num
|
|
864
|
-
} =
|
|
856
|
+
} = _ref67;
|
|
865
857
|
return `The polygon has ${num} points.`;
|
|
866
858
|
},
|
|
867
859
|
srPolygonGraphPointsOne: "The polygon has 1 point.",
|
|
868
|
-
srPolygonElementsNum:
|
|
860
|
+
srPolygonElementsNum: _ref68 => {
|
|
869
861
|
let {
|
|
870
862
|
num
|
|
871
|
-
} =
|
|
863
|
+
} = _ref68;
|
|
872
864
|
return `A polygon with ${num} points.`;
|
|
873
865
|
},
|
|
874
866
|
srPolygonElementsOne: "A polygon with 1 point.",
|
|
875
|
-
srPolygonPointAngleApprox:
|
|
867
|
+
srPolygonPointAngleApprox: _ref69 => {
|
|
876
868
|
let {
|
|
877
869
|
angle
|
|
878
|
-
} =
|
|
870
|
+
} = _ref69;
|
|
879
871
|
return `Angle approximately equal to ${angle} degrees.`;
|
|
880
872
|
},
|
|
881
|
-
srPolygonPointAngle:
|
|
873
|
+
srPolygonPointAngle: _ref70 => {
|
|
882
874
|
let {
|
|
883
875
|
angle
|
|
884
|
-
} =
|
|
876
|
+
} = _ref70;
|
|
885
877
|
return `Angle equal to ${angle} degrees.`;
|
|
886
878
|
},
|
|
887
|
-
srPolygonSideLength:
|
|
879
|
+
srPolygonSideLength: _ref71 => {
|
|
888
880
|
let {
|
|
889
881
|
pointNum,
|
|
890
882
|
length
|
|
891
|
-
} =
|
|
883
|
+
} = _ref71;
|
|
892
884
|
return `A line segment, length equal to ${length} units, connects to point ${pointNum}.`;
|
|
893
885
|
},
|
|
894
|
-
srPolygonSideLengthApprox:
|
|
886
|
+
srPolygonSideLengthApprox: _ref72 => {
|
|
895
887
|
let {
|
|
896
888
|
pointNum,
|
|
897
889
|
length
|
|
898
|
-
} =
|
|
890
|
+
} = _ref72;
|
|
899
891
|
return `A line segment, length approximately equal to ${length} units, connects to point ${pointNum}.`;
|
|
900
892
|
},
|
|
901
893
|
srUnlimitedPolygonEmpty: "An empty coordinate plane.",
|
|
902
894
|
srSinusoidGraph: "A sinusoid function on a coordinate plane.",
|
|
903
|
-
srSinusoidRootPoint:
|
|
895
|
+
srSinusoidRootPoint: _ref73 => {
|
|
904
896
|
let {
|
|
905
897
|
x,
|
|
906
898
|
y
|
|
907
|
-
} =
|
|
899
|
+
} = _ref73;
|
|
908
900
|
return `Midline intersection at ${x} comma ${y}.`;
|
|
909
901
|
},
|
|
910
|
-
srSinusoidMaxPoint:
|
|
902
|
+
srSinusoidMaxPoint: _ref74 => {
|
|
911
903
|
let {
|
|
912
904
|
x,
|
|
913
905
|
y
|
|
914
|
-
} =
|
|
906
|
+
} = _ref74;
|
|
915
907
|
return `Maximum point at ${x} comma ${y}.`;
|
|
916
908
|
},
|
|
917
|
-
srSinusoidMinPoint:
|
|
909
|
+
srSinusoidMinPoint: _ref75 => {
|
|
918
910
|
let {
|
|
919
911
|
x,
|
|
920
912
|
y
|
|
921
|
-
} =
|
|
913
|
+
} = _ref75;
|
|
922
914
|
return `Minimum point at ${x} comma ${y}.`;
|
|
923
915
|
},
|
|
924
|
-
srSinusoidFlatPoint:
|
|
916
|
+
srSinusoidFlatPoint: _ref76 => {
|
|
925
917
|
let {
|
|
926
918
|
x,
|
|
927
919
|
y
|
|
928
|
-
} =
|
|
920
|
+
} = _ref76;
|
|
929
921
|
return `Line through point at ${x} comma ${y}.`;
|
|
930
922
|
},
|
|
931
|
-
srSinusoidDescription:
|
|
923
|
+
srSinusoidDescription: _ref77 => {
|
|
932
924
|
let {
|
|
933
925
|
minValue,
|
|
934
926
|
maxValue,
|
|
935
927
|
cycleStart,
|
|
936
928
|
cycleEnd
|
|
937
|
-
} =
|
|
929
|
+
} = _ref77;
|
|
938
930
|
return `The graph shows a wave with a minimum value of ${minValue} and a maximum value of ${maxValue}. The wave completes a full cycle from ${cycleStart} to ${cycleEnd}.`;
|
|
939
931
|
},
|
|
940
|
-
srSinusoidInteractiveElements:
|
|
932
|
+
srSinusoidInteractiveElements: _ref78 => {
|
|
941
933
|
let {
|
|
942
934
|
point1X,
|
|
943
935
|
point1Y,
|
|
944
936
|
point2X,
|
|
945
937
|
point2Y
|
|
946
|
-
} =
|
|
938
|
+
} = _ref78;
|
|
947
939
|
return `Sinusoid graph with midline intersection point at ${point1X} comma ${point1Y} and extremum point at ${point2X} comma ${point2Y}.`;
|
|
948
940
|
}
|
|
949
941
|
// The above strings are used for interactive graph SR descriptions.
|