@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.
- package/dist/data-schema.d.ts +1 -0
- package/dist/es/index.item-splitting.js +1 -1
- package/dist/es/index.item-splitting.js.map +1 -1
- package/dist/es/index.js +5 -5
- package/dist/es/index.js.map +1 -1
- package/dist/feature-flags.d.ts +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.item-splitting.js +1 -1
- package/dist/index.item-splitting.js.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +1 -0
- package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +0 -1
- package/dist/parse-perseus-json/perseus-parsers/widget-id-components.d.ts +0 -15
- package/dist/widgets/categorizer/categorizer-util.d.ts +1 -2
- package/dist/widgets/cs-program/cs-program-util.d.ts +1 -1
- package/dist/widgets/dropdown/dropdown-util.d.ts +1 -2
- package/dist/widgets/expression/expression-util.d.ts +1 -2
- package/dist/widgets/free-response/free-response-util.d.ts +2 -2
- package/dist/widgets/grapher/grapher-util.d.ts +1 -1
- package/dist/widgets/group/group-util.d.ts +2 -2
- package/dist/widgets/iframe/iframe-util.d.ts +1 -1
- package/dist/widgets/image/index.d.ts +1 -1
- package/dist/widgets/input-number/input-number-util.d.ts +2 -2
- package/dist/widgets/interactive-graph/interactive-graph-util.d.ts +1 -1
- package/dist/widgets/label-image/label-image-util.d.ts +1 -1
- package/dist/widgets/logic-export.types.d.ts +20 -20
- package/dist/widgets/matcher/matcher-util.d.ts +1 -2
- package/dist/widgets/matrix/matrix-util.d.ts +1 -1
- package/dist/widgets/number-line/number-line-util.d.ts +1 -1
- package/dist/widgets/numeric-input/numeric-input-util.d.ts +2 -2
- package/dist/widgets/orderer/orderer-util.d.ts +1 -2
- package/dist/widgets/plotter/plotter-util.d.ts +1 -2
- package/dist/widgets/radio/radio-util.d.ts +2 -2
- package/dist/widgets/sorter/sorter-util.d.ts +1 -2
- package/dist/widgets/table/table-util.d.ts +1 -1
- 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
|
|
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.
|
|
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
|
|