@khanacademy/perseus-core 9.0.0 → 10.0.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.
Files changed (99) hide show
  1. package/dist/data-schema.d.ts +20 -22
  2. package/dist/es/index.js +66 -52
  3. package/dist/es/index.js.map +1 -1
  4. package/dist/index.d.ts +8 -1
  5. package/dist/index.js +70 -51
  6. package/dist/index.js.map +1 -1
  7. package/dist/parse-perseus-json/general-purpose-parsers/defaulted.d.ts +1 -1
  8. package/dist/parse-perseus-json/general-purpose-parsers/index.d.ts +1 -1
  9. package/dist/parse-perseus-json/general-purpose-parsers/is-plain-object.d.ts +8 -0
  10. package/dist/parse-perseus-json/general-purpose-parsers/test-helpers.d.ts +5 -0
  11. package/dist/parse-perseus-json/perseus-parsers/categorizer-widget.d.ts +13 -3
  12. package/dist/parse-perseus-json/perseus-parsers/categorizer-widget.typetest.d.ts +1 -0
  13. package/dist/parse-perseus-json/perseus-parsers/cs-program-widget.d.ts +12 -3
  14. package/dist/parse-perseus-json/perseus-parsers/cs-program-widget.typetest.d.ts +1 -0
  15. package/dist/parse-perseus-json/perseus-parsers/definition-widget.d.ts +5 -3
  16. package/dist/parse-perseus-json/perseus-parsers/definition-widget.typetest.d.ts +1 -0
  17. package/dist/parse-perseus-json/perseus-parsers/dropdown-widget.d.ts +10 -3
  18. package/dist/parse-perseus-json/perseus-parsers/dropdown-widget.typetest.d.ts +1 -0
  19. package/dist/parse-perseus-json/perseus-parsers/explanation-widget.d.ts +7 -3
  20. package/dist/parse-perseus-json/perseus-parsers/explanation-widget.typetest.d.ts +1 -0
  21. package/dist/parse-perseus-json/perseus-parsers/expression-widget.d.ts +16 -3
  22. package/dist/parse-perseus-json/perseus-parsers/expression-widget.typetest.d.ts +1 -0
  23. package/dist/parse-perseus-json/perseus-parsers/graded-group-set-widget.d.ts +15 -3
  24. package/dist/parse-perseus-json/perseus-parsers/graded-group-set-widget.typetest.d.ts +1 -0
  25. package/dist/parse-perseus-json/perseus-parsers/graded-group-widget.d.ts +14 -4
  26. package/dist/parse-perseus-json/perseus-parsers/graded-group-widget.typetest.d.ts +1 -0
  27. package/dist/parse-perseus-json/perseus-parsers/grapher-widget.d.ts +51 -3
  28. package/dist/parse-perseus-json/perseus-parsers/grapher-widget.typetest.d.ts +1 -0
  29. package/dist/parse-perseus-json/perseus-parsers/group-widget.d.ts +1 -3
  30. package/dist/parse-perseus-json/perseus-parsers/group-widget.typetest.d.ts +1 -0
  31. package/dist/parse-perseus-json/perseus-parsers/hint.d.ts +9 -3
  32. package/dist/parse-perseus-json/perseus-parsers/hint.typetest.d.ts +1 -0
  33. package/dist/parse-perseus-json/perseus-parsers/iframe-widget.d.ts +12 -3
  34. package/dist/parse-perseus-json/perseus-parsers/iframe-widget.typetest.d.ts +1 -0
  35. package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +22 -3
  36. package/dist/parse-perseus-json/perseus-parsers/image-widget.typetest.d.ts +1 -0
  37. package/dist/parse-perseus-json/perseus-parsers/input-number-widget.d.ts +10 -2
  38. package/dist/parse-perseus-json/perseus-parsers/input-number-widget.typetest.d.ts +1 -0
  39. package/dist/parse-perseus-json/perseus-parsers/interaction-widget.d.ts +125 -3
  40. package/dist/parse-perseus-json/perseus-parsers/interaction-widget.typetest.d.ts +1 -0
  41. package/dist/parse-perseus-json/perseus-parsers/interactive-graph-user-input.d.ts +60 -1
  42. package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +326 -5
  43. package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.typetest.d.ts +1 -0
  44. package/dist/parse-perseus-json/perseus-parsers/label-image-widget.d.ts +16 -3
  45. package/dist/parse-perseus-json/perseus-parsers/label-image-widget.typetest.d.ts +1 -0
  46. package/dist/parse-perseus-json/perseus-parsers/legacy-button-sets.d.ts +1 -3
  47. package/dist/parse-perseus-json/perseus-parsers/matcher-widget.d.ts +7 -3
  48. package/dist/parse-perseus-json/perseus-parsers/matcher-widget.typetest.d.ts +1 -0
  49. package/dist/parse-perseus-json/perseus-parsers/matrix-widget.d.ts +8 -3
  50. package/dist/parse-perseus-json/perseus-parsers/matrix-widget.typetest.d.ts +1 -0
  51. package/dist/parse-perseus-json/perseus-parsers/measurer-widget.d.ts +18 -3
  52. package/dist/parse-perseus-json/perseus-parsers/measurer-widget.typetest.d.ts +1 -0
  53. package/dist/parse-perseus-json/perseus-parsers/molecule-renderer-widget.d.ts +5 -3
  54. package/dist/parse-perseus-json/perseus-parsers/molecule-renderer-widget.typetest.d.ts +1 -0
  55. package/dist/parse-perseus-json/perseus-parsers/number-line-widget.d.ts +17 -3
  56. package/dist/parse-perseus-json/perseus-parsers/number-line-widget.typetest.d.ts +1 -0
  57. package/dist/parse-perseus-json/perseus-parsers/numeric-input-widget.d.ts +21 -4
  58. package/dist/parse-perseus-json/perseus-parsers/numeric-input-widget.typetest.d.ts +1 -0
  59. package/dist/parse-perseus-json/perseus-parsers/orderer-widget.d.ts +7 -3
  60. package/dist/parse-perseus-json/perseus-parsers/orderer-widget.typetest.d.ts +1 -0
  61. package/dist/parse-perseus-json/perseus-parsers/passage-ref-widget.d.ts +5 -3
  62. package/dist/parse-perseus-json/perseus-parsers/passage-ref-widget.typetest.d.ts +1 -0
  63. package/dist/parse-perseus-json/perseus-parsers/passage-widget.d.ts +7 -3
  64. package/dist/parse-perseus-json/perseus-parsers/passage-widget.typetest.d.ts +1 -0
  65. package/dist/parse-perseus-json/perseus-parsers/perseus-answer-area.d.ts +11 -2
  66. package/dist/parse-perseus-json/perseus-parsers/perseus-answer-area.typetest.d.ts +1 -0
  67. package/dist/parse-perseus-json/perseus-parsers/perseus-image-background.d.ts +9 -3
  68. package/dist/parse-perseus-json/perseus-parsers/perseus-image-background.typetest.d.ts +1 -0
  69. package/dist/parse-perseus-json/perseus-parsers/perseus-image-detail.d.ts +4 -0
  70. package/dist/parse-perseus-json/perseus-parsers/perseus-image-detail.typetest.d.ts +1 -0
  71. package/dist/parse-perseus-json/perseus-parsers/phet-simulation-widget.d.ts +4 -3
  72. package/dist/parse-perseus-json/perseus-parsers/phet-simulation-widget.typetest.d.ts +1 -0
  73. package/dist/parse-perseus-json/perseus-parsers/plotter-widget.d.ts +15 -3
  74. package/dist/parse-perseus-json/perseus-parsers/plotter-widget.typetest.d.ts +1 -0
  75. package/dist/parse-perseus-json/perseus-parsers/python-program-widget.d.ts +4 -3
  76. package/dist/parse-perseus-json/perseus-parsers/python-program-widget.typetest.d.ts +1 -0
  77. package/dist/parse-perseus-json/perseus-parsers/sorter-widget.d.ts +5 -3
  78. package/dist/parse-perseus-json/perseus-parsers/sorter-widget.typetest.d.ts +1 -0
  79. package/dist/parse-perseus-json/perseus-parsers/table-widget.d.ts +6 -3
  80. package/dist/parse-perseus-json/perseus-parsers/table-widget.typetest.d.ts +1 -0
  81. package/dist/parse-perseus-json/perseus-parsers/video-widget.d.ts +4 -3
  82. package/dist/parse-perseus-json/perseus-parsers/video-widget.typetest.d.ts +1 -0
  83. package/dist/types.d.ts +1 -1
  84. package/dist/utils/deep-clone.d.ts +1 -2
  85. package/dist/utils/item-has-hints.d.ts +5 -0
  86. package/dist/utils/item-has-rationales.d.ts +5 -0
  87. package/dist/utils/split-perseus-item.d.ts +3 -3
  88. package/dist/utils/split-perseus-renderer.d.ts +7 -0
  89. package/dist/utils/test-utils.d.ts +2 -1
  90. package/dist/widgets/core-widget-registry.d.ts +8 -0
  91. package/dist/widgets/group/group-util.d.ts +12 -0
  92. package/dist/widgets/input-number/input-number-util.d.ts +12 -0
  93. package/dist/widgets/logic-export.types.d.ts +3 -1
  94. package/dist/widgets/matrix/matrix-util.d.ts +1 -2
  95. package/dist/widgets/number-line/number-line-util.d.ts +1 -2
  96. package/dist/widgets/orderer/orderer-util.d.ts +2 -6
  97. package/dist/widgets/plotter/plotter-util.d.ts +1 -1
  98. package/package.json +4 -3
  99. package/dist/parse-perseus-json/general-purpose-parsers/is-object.d.ts +0 -1
@@ -503,7 +503,7 @@ export type PerseusInteractiveGraphWidgetOptions = {
503
503
  range: GraphRange;
504
504
  graph: PerseusGraphType;
505
505
  correct: PerseusGraphType;
506
- lockedFigures?: LockedFigure[];
506
+ lockedFigures: LockedFigure[];
507
507
  fullGraphAriaLabel?: string;
508
508
  fullGraphAriaDescription?: string;
509
509
  };
@@ -518,7 +518,7 @@ export type LockedPointType = {
518
518
  coord: Coord;
519
519
  color: LockedFigureColor;
520
520
  filled: boolean;
521
- labels?: LockedLabelType[];
521
+ labels: LockedLabelType[];
522
522
  ariaLabel?: string;
523
523
  };
524
524
  export type LockedLineType = {
@@ -529,14 +529,14 @@ export type LockedLineType = {
529
529
  lineStyle: LockedLineStyle;
530
530
  showPoint1: boolean;
531
531
  showPoint2: boolean;
532
- labels?: LockedLabelType[];
532
+ labels: LockedLabelType[];
533
533
  ariaLabel?: string;
534
534
  };
535
535
  export type LockedVectorType = {
536
536
  type: "vector";
537
537
  points: [tail: Coord, tip: Coord];
538
538
  color: LockedFigureColor;
539
- labels?: LockedLabelType[];
539
+ labels: LockedLabelType[];
540
540
  ariaLabel?: string;
541
541
  };
542
542
  export type LockedFigureFillType = "none" | "white" | "translucent" | "solid";
@@ -549,7 +549,7 @@ export type LockedEllipseType = {
549
549
  color: LockedFigureColor;
550
550
  fillStyle: LockedFigureFillType;
551
551
  strokeStyle: LockedLineStyle;
552
- labels?: LockedLabelType[];
552
+ labels: LockedLabelType[];
553
553
  ariaLabel?: string;
554
554
  };
555
555
  export type LockedPolygonType = {
@@ -559,7 +559,7 @@ export type LockedPolygonType = {
559
559
  showVertices: boolean;
560
560
  fillStyle: LockedFigureFillType;
561
561
  strokeStyle: LockedLineStyle;
562
- labels?: LockedLabelType[];
562
+ labels: LockedLabelType[];
563
563
  ariaLabel?: string;
564
564
  };
565
565
  export type LockedFunctionType = {
@@ -580,7 +580,7 @@ export type LockedFunctionType = {
580
580
  * allowed. Note that infinite values are serialized as `null` in JSON.
581
581
  */
582
582
  domain: [min: number, max: number];
583
- labels?: LockedLabelType[];
583
+ labels: LockedLabelType[];
584
584
  ariaLabel?: string;
585
585
  };
586
586
  export type LockedLabelType = {
@@ -591,9 +591,6 @@ export type LockedLabelType = {
591
591
  size: "small" | "medium" | "large";
592
592
  };
593
593
  export type PerseusGraphType = PerseusGraphTypeAngle | PerseusGraphTypeCircle | PerseusGraphTypeLinear | PerseusGraphTypeLinearSystem | PerseusGraphTypeNone | PerseusGraphTypePoint | PerseusGraphTypePolygon | PerseusGraphTypeQuadratic | PerseusGraphTypeRay | PerseusGraphTypeSegment | PerseusGraphTypeSinusoid;
594
- type PerseusGraphTypeCommon = {
595
- coord?: Coord;
596
- };
597
594
  export type PerseusGraphTypeAngle = {
598
595
  type: "angle";
599
596
  showAngles?: boolean;
@@ -601,7 +598,7 @@ export type PerseusGraphTypeAngle = {
601
598
  angleOffsetDeg?: number;
602
599
  snapDegrees?: number;
603
600
  match?: "congruent";
604
- coords?: [Coord, Coord, Coord] | null;
601
+ coords?: [Coord, Coord, Coord];
605
602
  startCoords?: [Coord, Coord, Coord];
606
603
  };
607
604
  export type PerseusGraphTypeCircle = {
@@ -612,17 +609,17 @@ export type PerseusGraphTypeCircle = {
612
609
  center: Coord;
613
610
  radius: number;
614
611
  };
615
- } & PerseusGraphTypeCommon;
612
+ };
616
613
  export type PerseusGraphTypeLinear = {
617
614
  type: "linear";
618
615
  coords?: CollinearTuple | null;
619
616
  startCoords?: CollinearTuple;
620
- } & PerseusGraphTypeCommon;
617
+ };
621
618
  export type PerseusGraphTypeLinearSystem = {
622
619
  type: "linear-system";
623
620
  coords?: CollinearTuple[] | null;
624
621
  startCoords?: CollinearTuple[];
625
- } & PerseusGraphTypeCommon;
622
+ };
626
623
  export type PerseusGraphTypeNone = {
627
624
  type: "none";
628
625
  };
@@ -631,7 +628,8 @@ export type PerseusGraphTypePoint = {
631
628
  numPoints?: number | "unlimited";
632
629
  coords?: Coord[] | null;
633
630
  startCoords?: Coord[];
634
- } & PerseusGraphTypeCommon;
631
+ coord?: Coord;
632
+ };
635
633
  export type PerseusGraphTypePolygon = {
636
634
  type: "polygon";
637
635
  numSides?: number | "unlimited";
@@ -641,28 +639,28 @@ export type PerseusGraphTypePolygon = {
641
639
  match?: "similar" | "congruent" | "approx" | "exact";
642
640
  coords?: Coord[] | null;
643
641
  startCoords?: Coord[];
644
- } & PerseusGraphTypeCommon;
642
+ };
645
643
  export type PerseusGraphTypeQuadratic = {
646
644
  type: "quadratic";
647
645
  coords?: [Coord, Coord, Coord] | null;
648
646
  startCoords?: [Coord, Coord, Coord];
649
- } & PerseusGraphTypeCommon;
647
+ };
650
648
  export type PerseusGraphTypeSegment = {
651
649
  type: "segment";
652
650
  numSegments?: number;
653
651
  coords?: CollinearTuple[] | null;
654
652
  startCoords?: CollinearTuple[];
655
- } & PerseusGraphTypeCommon;
653
+ };
656
654
  export type PerseusGraphTypeSinusoid = {
657
655
  type: "sinusoid";
658
656
  coords?: Coord[] | null;
659
657
  startCoords?: Coord[];
660
- } & PerseusGraphTypeCommon;
658
+ };
661
659
  export type PerseusGraphTypeRay = {
662
660
  type: "ray";
663
661
  coords?: CollinearTuple | null;
664
662
  startCoords?: CollinearTuple;
665
- } & PerseusGraphTypeCommon;
663
+ };
666
664
  type AngleGraphCorrect = {
667
665
  type: "angle";
668
666
  allowReflexAngles: boolean;
@@ -753,7 +751,6 @@ export type PerseusMeasurerWidgetOptions = {
753
751
  rulerPixels: number;
754
752
  rulerLength: number;
755
753
  box: [number, number];
756
- static: boolean;
757
754
  };
758
755
  export type MathFormat = "integer" | "mixed" | "improper" | "proper" | "decimal" | "percent" | "pi";
759
756
  export type PerseusNumericInputAnswerForm = {
@@ -792,11 +789,12 @@ export type PerseusNumberLineWidgetOptions = {
792
789
  labelStyle: string;
793
790
  labelTicks: boolean;
794
791
  isTickCtrl?: boolean | null;
792
+ isInequality: boolean;
795
793
  divisionRange: number[];
796
794
  numDivisions?: number | null;
797
795
  snapDivisions: number;
798
796
  tickStep?: number | null;
799
- correctRel?: string | null;
797
+ correctRel?: "eq" | "lt" | "gt" | "le" | "ge";
800
798
  correctX: number | null;
801
799
  initialX?: number | null;
802
800
  showTooltips?: boolean;