@khanacademy/perseus-core 23.1.0 → 23.2.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 (37) hide show
  1. package/dist/data-schema.d.ts +1 -0
  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 +5 -5
  5. package/dist/es/index.js.map +1 -1
  6. package/dist/feature-flags.d.ts +1 -1
  7. package/dist/index.d.ts +19 -19
  8. package/dist/index.item-splitting.js +1 -1
  9. package/dist/index.item-splitting.js.map +1 -1
  10. package/dist/index.js +5 -5
  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/perseus-parsers/interactive-graph-widget.d.ts +0 -1
  14. package/dist/parse-perseus-json/perseus-parsers/widget-id-components.d.ts +0 -15
  15. package/dist/widgets/categorizer/categorizer-util.d.ts +1 -2
  16. package/dist/widgets/cs-program/cs-program-util.d.ts +1 -1
  17. package/dist/widgets/dropdown/dropdown-util.d.ts +1 -2
  18. package/dist/widgets/expression/expression-util.d.ts +1 -2
  19. package/dist/widgets/free-response/free-response-util.d.ts +2 -2
  20. package/dist/widgets/grapher/grapher-util.d.ts +1 -1
  21. package/dist/widgets/group/group-util.d.ts +2 -2
  22. package/dist/widgets/iframe/iframe-util.d.ts +1 -1
  23. package/dist/widgets/image/index.d.ts +1 -1
  24. package/dist/widgets/input-number/input-number-util.d.ts +2 -2
  25. package/dist/widgets/interactive-graph/interactive-graph-util.d.ts +1 -1
  26. package/dist/widgets/label-image/label-image-util.d.ts +1 -1
  27. package/dist/widgets/logic-export.types.d.ts +20 -20
  28. package/dist/widgets/matcher/matcher-util.d.ts +1 -2
  29. package/dist/widgets/matrix/matrix-util.d.ts +1 -1
  30. package/dist/widgets/number-line/number-line-util.d.ts +1 -1
  31. package/dist/widgets/numeric-input/numeric-input-util.d.ts +2 -2
  32. package/dist/widgets/orderer/orderer-util.d.ts +1 -2
  33. package/dist/widgets/plotter/plotter-util.d.ts +1 -2
  34. package/dist/widgets/radio/radio-util.d.ts +2 -2
  35. package/dist/widgets/sorter/sorter-util.d.ts +1 -2
  36. package/dist/widgets/table/table-util.d.ts +1 -1
  37. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ const APPROXIMATED_PI_ERROR="APPROXIMATED_PI_ERROR";const CHOOSE_CORRECT_NUM_ERR
36
36
 
37
37
  function getMatrixSize(matrix){const matrixSize=[1,1];matrix.forEach((matrixRow,row)=>{let rowWidth=0;matrixRow.forEach((matrixCol,col)=>{if(matrixCol!=null&&matrixCol.toString().length){rowWidth=col+1;}});matrixSize[1]=Math.max(matrixSize[1],rowWidth);if(rowWidth>0){matrixSize[0]=Math.max(matrixSize[0],row+1);}});return matrixSize}
38
38
 
39
- const getDecimalSeparator=locale=>{switch(locale){case "ka":return ",";default:const numberWithDecimalSeparator=1.1;const match=new Intl.NumberFormat(locale).format(numberWithDecimalSeparator).match(/[^\d\u0661\u06F1\u0967\u09e7]/);return match?.[0]??"."}};
39
+ const getDecimalSeparator=locale=>{switch(locale){case "ka":return ",";default:const parts=new Intl.NumberFormat(locale).formatToParts(1.1);const decimalPart=parts.find(part=>part.type==="decimal");return decimalPart?.value??"."}};
40
40
 
41
41
  const localesThatUseColon=["az","bg","cs","da","de","hu","hy","id","it","ky","lt","lv","nb","nl","pl","pt-pt","ro","sv","uk","vi","ro","ru"];const getDivideSymbol=locale=>{if(localesThatUseColon.includes(locale)){return ":"}return "/"};const getDivideSymbolForTex=locale=>{const divideSymbol=getDivideSymbol(locale);return divideSymbol==="/"?"\\div":divideSymbol};
42
42
 
@@ -153,7 +153,7 @@ const stringToNumber=(rawValue,ctx)=>{if(typeof rawValue==="number"){return ctx.
153
153
 
154
154
  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});
155
155
 
156
- const pairOfNumbers$2=pair(number,number);const parseImageWidget=parseWidget(constant("image"),object({title:optional(string),caption:optional(string),alt:optional(string),longDescription:optional(string),decorative:optional(boolean),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)}));
156
+ const pairOfNumbers$2=pair(number,number);const parseImageWidget=parseWidget(constant("image"),object({title:optional(string),caption:optional(string),alt:optional(string),longDescription:optional(string),decorative:optional(boolean),backgroundImage:parsePerseusImageBackground,scale:optional(number),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)}));
157
157
 
158
158
  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)}));
159
159
 
@@ -253,7 +253,7 @@ const parseUserInputMap=(rawValue,ctx)=>{if(!isPlainObject(rawValue)){return ctx
253
253
 
254
254
  function parseAndMigratePerseusItem(data){const object=typeof data==="string"?JSON.parse(data):data;const result=parse(object,parsePerseusItem);if(isFailure(result)){return failure({message:result.detail,invalidObject:object})}return result}function parseAndMigratePerseusArticle(data){const object=typeof data==="string"?JSON.parse(data):data;const result=parse(object,parsePerseusArticle);if(isFailure(result)){return failure({message:result.detail,invalidObject:object})}return result}function parseAndMigrateUserInputMap(data){const object=typeof data==="string"?JSON.parse(data):data;const result=parse(object,parseUserInputMap);if(isFailure(result)){return failure({message:result.detail,invalidObject:object})}return result}
255
255
 
256
- const libName="@khanacademy/perseus-core";const libVersion="23.1.0";perseusUtils.addLibraryVersionToPerseusDebug(libName,libVersion);
256
+ const libName="@khanacademy/perseus-core";const libVersion="23.2.0";perseusUtils.addLibraryVersionToPerseusDebug(libName,libVersion);
257
257
 
258
258
  const Errors=Object.freeze({Unknown:"Unknown",Internal:"Internal",InvalidInput:"InvalidInput",NotAllowed:"NotAllowed",TransientService:"TransientService",Service:"Service"});
259
259
 
@@ -301,7 +301,7 @@ function getIFramePublicWidgetOptions(options){return options}
301
301
 
302
302
  const defaultWidgetOptions$j={url:"",settings:[{name:"",value:""}],width:"400",height:"400",allowFullScreen:false,allowTopNavigation:false};const iframeWidgetLogic={name:"iframe",defaultWidgetOptions: defaultWidgetOptions$j,getPublicWidgetOptions:getIFramePublicWidgetOptions,accessible:false};
303
303
 
304
- const defaultWidgetOptions$i={title:"",range:[[0,10],[0,10]],box:[400,400],backgroundImage:{url:null,width:0,height:0},labels:[],alt:"",caption:""};const imageWidgetLogic={name:"image",defaultWidgetOptions: defaultWidgetOptions$i,supportedAlignments:["block","wrap-left","wrap-right","full-width"],defaultAlignment:"block",accessible:widgetOptions=>{const imageOptions=widgetOptions;const bgImage=imageOptions.backgroundImage;const hasBackgroundImage=bgImage.url!=null;const hasAltText=!!imageOptions.alt;const isDecorative=imageOptions.decorative===true;return hasBackgroundImage&&(hasAltText||isDecorative)}};
304
+ const defaultWidgetOptions$i={title:"",range:[[0,10],[0,10]],box:[400,400],backgroundImage:{url:null,width:0,height:0},scale:1,labels:[],alt:"",caption:""};const imageWidgetLogic={name:"image",defaultWidgetOptions: defaultWidgetOptions$i,supportedAlignments:["block","wrap-left","wrap-right","full-width"],defaultAlignment:"block",accessible:widgetOptions=>{const imageOptions=widgetOptions;const bgImage=imageOptions.backgroundImage;const hasBackgroundImage=bgImage.url!=null;const hasAltText=!!imageOptions.alt;const isDecorative=imageOptions.decorative===true;return hasBackgroundImage&&(hasAltText||isDecorative)}};
305
305
 
306
306
  function getInputNumberPublicWidgetOptions(options){const{value:_,...publicWidgetOptions}=options;return publicWidgetOptions}
307
307
 
@@ -396,7 +396,7 @@ const DEFAULT_COLOR="grayH";function getDefaultFigureForType(type){switch(type){
396
396
 
397
397
  function splitPerseusItem(original){const item=deepClone(original);return {...item,question:splitPerseusRenderer(item.question),hints:original.hints.map(()=>({content:"",widgets:{},images:{},placeholder:true}))}}function splitPerseusItemJSON(data){const parseResult=parseAndMigratePerseusItem(data);if(isFailure(parseResult)){throw new SyntaxError(parseResult.detail.message)}const item=parseResult.value;return JSON.stringify(splitPerseusItem(item))}
398
398
 
399
- const PerseusFeatureFlags=["new-radio-widget","image-widget-upgrade-alignment","image-widget-upgrade-gif-controls"];function isFeatureOn(props,flag){return props.apiOptions?.flags?.[flag]??false}
399
+ const PerseusFeatureFlags=["new-radio-widget","image-widget-upgrade-alignment","image-widget-upgrade-gif-controls","image-widget-upgrade-scale"];function isFeatureOn(props,flag){return props.apiOptions?.flags?.[flag]??false}
400
400
 
401
401
  const noop=function(){};const deepCallbackFor=function(contentCallback,widgetCallback,optionsCallback){const deepCallback=function(widgetInfo,widgetId){const newWidgetInfo=traverseChildWidgets$1(widgetInfo,rendererOptions=>{return traverseRenderer(rendererOptions,contentCallback,deepCallback,optionsCallback)});const userWidgetInfo=widgetCallback(newWidgetInfo,widgetId);if(userWidgetInfo!==undefined){return userWidgetInfo}return newWidgetInfo};return deepCallback};const traverseRenderer=function(rendererOptions,contentCallback,deepWidgetCallback,optionsCallback){let newContent=rendererOptions.content;if(rendererOptions.content!=null){const modifiedContent=contentCallback(rendererOptions.content);if(modifiedContent!==undefined){newContent=modifiedContent;}}const newWidgets=mapObject(rendererOptions.widgets||{},function(widgetInfo,widgetId){if(widgetInfo==null||widgetInfo.type==null){return widgetInfo}return deepWidgetCallback(widgetInfo,widgetId)});const newOptions=___default.default.extend({},rendererOptions,{content:newContent,widgets:newWidgets});const userOptions=optionsCallback(newOptions);if(userOptions!==undefined){return userOptions}return newOptions};const traverse=function(rendererOptions,contentCallback,widgetCallback,optionsCallback){contentCallback=contentCallback||noop;widgetCallback=widgetCallback||noop;optionsCallback=optionsCallback||noop;return traverseRenderer(rendererOptions,contentCallback,deepCallbackFor(contentCallback,widgetCallback,optionsCallback),optionsCallback)};
402
402