@khanacademy/perseus-core 19.0.2 → 19.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.
Files changed (33) hide show
  1. package/dist/data-schema.d.ts +1 -6
  2. package/dist/es/index.item-splitting.js +1 -1
  3. package/dist/es/index.item-splitting.js.map +1 -1
  4. package/dist/es/index.js +4 -4
  5. package/dist/es/index.js.map +1 -1
  6. package/dist/feature-flags.d.ts +13 -3
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.item-splitting.js +1 -1
  9. package/dist/index.item-splitting.js.map +1 -1
  10. package/dist/index.js +4 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +1 -0
  13. package/dist/parse-perseus-json/regression-tests/user-input-data/categorizer.d.ts +6 -0
  14. package/dist/parse-perseus-json/regression-tests/user-input-data/cs-program.d.ts +15 -0
  15. package/dist/parse-perseus-json/regression-tests/user-input-data/dropdown.d.ts +6 -0
  16. package/dist/parse-perseus-json/regression-tests/user-input-data/expression.d.ts +4 -0
  17. package/dist/parse-perseus-json/regression-tests/user-input-data/free-response.d.ts +6 -0
  18. package/dist/parse-perseus-json/regression-tests/user-input-data/grapher.d.ts +33 -0
  19. package/dist/parse-perseus-json/regression-tests/user-input-data/group.d.ts +8 -0
  20. package/dist/parse-perseus-json/regression-tests/user-input-data/iframe.d.ts +14 -0
  21. package/dist/parse-perseus-json/regression-tests/user-input-data/input-number.d.ts +6 -0
  22. package/dist/parse-perseus-json/regression-tests/user-input-data/interactive-graph.d.ts +99 -0
  23. package/dist/parse-perseus-json/regression-tests/user-input-data/label-image.d.ts +12 -0
  24. package/dist/parse-perseus-json/regression-tests/user-input-data/matcher.d.ts +7 -0
  25. package/dist/parse-perseus-json/regression-tests/user-input-data/matrix.d.ts +6 -0
  26. package/dist/parse-perseus-json/regression-tests/user-input-data/number-line.d.ts +8 -0
  27. package/dist/parse-perseus-json/regression-tests/user-input-data/numeric-input.d.ts +6 -0
  28. package/dist/parse-perseus-json/regression-tests/user-input-data/orderer.d.ts +6 -0
  29. package/dist/parse-perseus-json/regression-tests/user-input-data/plotter.d.ts +4 -0
  30. package/dist/parse-perseus-json/regression-tests/user-input-data/radio.d.ts +6 -0
  31. package/dist/parse-perseus-json/regression-tests/user-input-data/sorter.d.ts +7 -0
  32. package/dist/parse-perseus-json/regression-tests/user-input-data/table.d.ts +4 -0
  33. package/package.json +2 -2
@@ -4,9 +4,19 @@
4
4
  * This will be the definition of the active feature flags in Perseus
5
5
  * that will hide features/changes under development. This will be used
6
6
  * by flags of APIOptions type.
7
- * 2. Do cleanup unused feature flags
8
- * 3. When no active feature flag is available value will be:
7
+ * 2. Also add the new flag in front-end repo's perseus-feature-flags.ts file
8
+ * 3. Do cleanup unused feature flags
9
+ * 4. When no active feature flag is available value will be:
9
10
  * export const PerseusFeatureFlags = [];
11
+ * 5. Also update the testing/feature-flags-util.ts for testing purpose
10
12
  */
11
- declare const PerseusFeatureFlags: readonly ["new-radio-widget"];
13
+ declare const PerseusFeatureFlags: readonly ["new-radio-widget", "image-widget-upgrade"];
12
14
  export default PerseusFeatureFlags;
15
+ /**
16
+ * Checks if a feature flag is enabled in the given props.
17
+ */
18
+ export declare function isFeatureOn(props: {
19
+ apiOptions?: {
20
+ flags?: Record<string, boolean>;
21
+ };
22
+ }, flag: string): boolean;
package/dist/index.d.ts CHANGED
@@ -129,7 +129,7 @@ export type { PlotterPublicWidgetOptions } from "./widgets/plotter/plotter-util"
129
129
  export { default as getMatcherPublicWidgetOptions, shuffleMatcher, } from "./widgets/matcher/matcher-util";
130
130
  export type { MatcherPublicWidgetOptions } from "./widgets/matcher/matcher-util";
131
131
  export { shuffle, seededRNG, random } from "./utils/random-util";
132
- export { default as PerseusFeatureFlags } from "./feature-flags";
132
+ export { default as PerseusFeatureFlags, isFeatureOn } from "./feature-flags";
133
133
  export { traverse } from "./traversal";
134
134
  export { isItemAccessible, violatingWidgets } from "./accessibility";
135
135
  export { isLabeledSVG, getRealImageUrl, getBaseUrl, getSvgUrl, getDataUrl, getImageSizeModern, } from "./utils/util.graphie";
@@ -123,7 +123,7 @@ const stringToNumber=(rawValue,ctx)=>{if(typeof rawValue==="number"){return ctx.
123
123
 
124
124
  function emptyToZero(x){return x===""?0:x}const imageDimensionToNumber=pipeParsers(union(number).or(string).parser).then(convert(emptyToZero)).then(stringToNumber).parser;const dimensionOrUndefined=defaulted(optional(imageDimensionToNumber),()=>undefined);const parsePerseusImageBackground=object({url:optional(nullable(string)),width:dimensionOrUndefined,height:dimensionOrUndefined,top:dimensionOrUndefined,left:dimensionOrUndefined,bottom:dimensionOrUndefined,scale:dimensionOrUndefined});
125
125
 
126
- const pairOfNumbers$2=pair(number,number);const parseImageWidget=parseWidget(constant("image"),object({title:optional(string),caption:optional(string),alt:optional(string),backgroundImage:parsePerseusImageBackground,static:optional(boolean),labels:optional(array(object({content:string,alignment:string,coordinates:array(number)}))),range:optional(pair(pairOfNumbers$2,pairOfNumbers$2)),box:optional(pairOfNumbers$2)}));
126
+ const pairOfNumbers$2=pair(number,number);const parseImageWidget=parseWidget(constant("image"),object({title:optional(string),caption:optional(string),alt:optional(string),longDescription:optional(string),backgroundImage:parsePerseusImageBackground,static:optional(boolean),labels:optional(array(object({content:string,alignment:string,coordinates:array(number)}))),range:optional(pair(pairOfNumbers$2,pairOfNumbers$2)),box:optional(pairOfNumbers$2)}));
127
127
 
128
128
  const booleanToString=(rawValue,ctx)=>{if(typeof rawValue==="boolean"){return ctx.success(String(rawValue))}return ctx.failure("boolean",rawValue)};const parseInputNumberWidget=parseWidget(constant("input-number"),object({answerType:optional(enumeration("number","decimal","integer","rational","improper","mixed","percent","pi")),inexact:optional(boolean),maxError:optional(union(number).or(string).parser),rightAlign:optional(boolean),simplify:enumeration("required","optional","enforced"),size:enumeration("normal","small"),value:defaulted(union(number).or(string).or(booleanToString).parser,()=>0),customKeypad:optional(boolean)}));
129
129