@khanacademy/perseus-core 35.0.0 → 36.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.
- package/dist/data-schema.d.ts +6 -2
- package/dist/es/index.item-splitting.js +4 -4
- package/dist/es/index.item-splitting.js.map +1 -1
- package/dist/es/index.js +10 -6
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.item-splitting.js +4 -4
- package/dist/index.item-splitting.js.map +1 -1
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/dist/parse-perseus-json/general-purpose-parsers/object.d.ts +0 -19
- package/dist/parse-perseus-json/perseus-parsers/blank-widget.d.ts +15 -4
- package/dist/parse-perseus-json/perseus-parsers/categorizer-widget.d.ts +18 -7
- package/dist/parse-perseus-json/perseus-parsers/cs-program-widget.d.ts +22 -11
- package/dist/parse-perseus-json/perseus-parsers/definition-widget.d.ts +16 -5
- package/dist/parse-perseus-json/perseus-parsers/dropdown-widget.d.ts +21 -10
- package/dist/parse-perseus-json/perseus-parsers/explanation-widget.d.ts +18 -7
- package/dist/parse-perseus-json/perseus-parsers/expression-widget.d.ts +27 -16
- package/dist/parse-perseus-json/perseus-parsers/graded-group-set-widget.d.ts +26 -15
- package/dist/parse-perseus-json/perseus-parsers/graded-group-widget.d.ts +24 -13
- package/dist/parse-perseus-json/perseus-parsers/grapher-widget.d.ts +60 -49
- package/dist/parse-perseus-json/perseus-parsers/group-widget.d.ts +12 -1
- package/dist/parse-perseus-json/perseus-parsers/iframe-widget.d.ts +23 -12
- package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +34 -23
- package/dist/parse-perseus-json/perseus-parsers/input-number-widget.d.ts +45 -23
- package/dist/parse-perseus-json/perseus-parsers/interaction-widget.d.ts +135 -124
- package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +375 -364
- package/dist/parse-perseus-json/perseus-parsers/label-image-widget.d.ts +27 -16
- package/dist/parse-perseus-json/perseus-parsers/matcher-widget.d.ts +18 -7
- package/dist/parse-perseus-json/perseus-parsers/matrix-widget.d.ts +17 -6
- package/dist/parse-perseus-json/perseus-parsers/measurer-widget.d.ts +28 -17
- package/dist/parse-perseus-json/perseus-parsers/number-line-widget.d.ts +28 -17
- package/dist/parse-perseus-json/perseus-parsers/numeric-input-widget.d.ts +26 -15
- package/dist/parse-perseus-json/perseus-parsers/orderer-widget.d.ts +18 -7
- package/dist/parse-perseus-json/perseus-parsers/phet-simulation-widget.d.ts +15 -4
- package/dist/parse-perseus-json/perseus-parsers/plotter-widget.d.ts +26 -15
- package/dist/parse-perseus-json/perseus-parsers/python-program-widget.d.ts +15 -4
- package/dist/parse-perseus-json/perseus-parsers/radio-widget.d.ts +138 -83
- package/dist/parse-perseus-json/perseus-parsers/sorter-widget.d.ts +16 -5
- package/dist/parse-perseus-json/perseus-parsers/table-widget.d.ts +17 -6
- package/dist/parse-perseus-json/perseus-parsers/video-widget.d.ts +14 -3
- package/dist/parse-perseus-json/perseus-parsers/widget.d.ts +25 -4
- package/dist/types.d.ts +0 -1
- package/dist/utils/generators/number-line-widget-generator.d.ts +3 -0
- package/dist/utils/generators/orderer-widget-generator.d.ts +9 -0
- package/dist/widgets/core-widget-registry.d.ts +1 -2
- package/dist/widgets/logic-export.types.d.ts +1 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -94,7 +94,7 @@ function nullable(parseValue){return (rawValue,ctx)=>{if(rawValue===null){return
|
|
|
94
94
|
|
|
95
95
|
const number=(rawValue,ctx)=>{if(typeof rawValue==="number"&&Number.isFinite(rawValue)){return ctx.success(rawValue)}return ctx.failure("number",rawValue)};
|
|
96
96
|
|
|
97
|
-
function
|
|
97
|
+
function object(schema){return objectParserWithInitializer(()=>({}),schema)}function looseObject(schema){return objectParserWithInitializer(rawValue=>({...rawValue}),schema)}function objectParserWithInitializer(initializeParsedValue,schema){return (rawValue,ctx)=>{if(!isPlainObject(rawValue)){return ctx.failure("object",rawValue)}const parsed=initializeParsedValue(rawValue);const mismatches=[];for(const[prop,propParser]of Object.entries(schema)){const result=propParser(rawValue[prop],ctx.forSubtree(prop));if(isSuccess(result)){if(result.value!==undefined||prop in rawValue){parsed[prop]=result.value;}}else {mismatches.push(...result.detail);}}if(mismatches.length>0){return failure(mismatches)}return ctx.success(parsed)}}
|
|
98
98
|
|
|
99
99
|
function optional(parseValue){return (rawValue,ctx)=>{if(rawValue===undefined){return ctx.success(rawValue)}return parseValue(rawValue,ctx)}}
|
|
100
100
|
|
|
@@ -114,7 +114,9 @@ const parsePerseusImageDetail=object({width:number,height:number});
|
|
|
114
114
|
|
|
115
115
|
const parseImages=defaulted(record(string,parsePerseusImageDetail),()=>({}));
|
|
116
116
|
|
|
117
|
-
function
|
|
117
|
+
function convert(f){return (rawValue,ctx)=>ctx.success(f(rawValue))}
|
|
118
|
+
|
|
119
|
+
const parseAlignment=pipeParsers(enumeration("default","block","inline-block","inline","wrap-left","wrap-right","full-width","",undefined)).then(convert(value=>value===""?"default":value)).parser;function parseWidget(parseType,parseOptions){return object({type:parseType,static:optional(boolean),graded:optional(boolean),alignment:parseAlignment,options:parseOptions,key:optional(nullable(number)),version:optional(object({major:number,minor:number}))})}function parseWidgetWithVersion(parseVersion,parseType,parseOptions){return object({type:parseType,static:optional(boolean),graded:optional(boolean),alignment:parseAlignment,options:parseOptions,key:optional(nullable(number)),version:parseVersion})}
|
|
118
120
|
|
|
119
121
|
const parseBlankWidget=parseWidget(constant("blank"),object({displayType:defaulted(enumeration("normal","superscript","subscript"),()=>"normal"),correctId:string}));
|
|
120
122
|
|
|
@@ -132,8 +134,6 @@ const KeypadKeys=["PLUS","MINUS","NEGATIVE","TIMES","DIVIDE","DECIMAL","PERIOD",
|
|
|
132
134
|
|
|
133
135
|
function deriveExtraKeys(widgetOptions){if(widgetOptions.extraKeys){return widgetOptions.extraKeys}const defaultKeys=["PI"];if(widgetOptions.answerForms==null){return defaultKeys}const uniqueExtraVariables={};const uniqueExtraConstants={};for(const answerForm of widgetOptions.answerForms){const maybeExpr=KAS__namespace.parse(answerForm.value,widgetOptions);if(maybeExpr.parsed){const expr=maybeExpr.expr;const isGreek=symbol=>symbol==="pi"||symbol==="theta";const toKey=symbol=>isGreek(symbol)?symbol.toUpperCase():symbol;const isKey=key=>KeypadKeys.includes(key);for(const variable of expr.getVars()){const maybeKey=toKey(variable);if(isKey(maybeKey)){uniqueExtraVariables[maybeKey]=true;}}for(const constant of expr.getConsts()){const maybeKey=toKey(constant);if(isKey(maybeKey)){uniqueExtraConstants[maybeKey]=true;}}}}const extraVariables=Object.keys(uniqueExtraVariables).sort();const extraConstants=Object.keys(uniqueExtraConstants).sort();const extraKeys=[...extraVariables,...extraConstants];if(!extraKeys.length){return defaultKeys}return extraKeys}
|
|
134
136
|
|
|
135
|
-
function convert(f){return (rawValue,ctx)=>ctx.success(f(rawValue))}
|
|
136
|
-
|
|
137
137
|
const keypadKeys=enumeration("PLUS","MINUS","NEGATIVE","TIMES","DIVIDE","DECIMAL","PERIOD","PERCENT","CDOT","EQUAL","NEQ","GT","LT","GEQ","LEQ","FRAC_INCLUSIVE","FRAC_EXCLUSIVE","FRAC","EXP","EXP_2","EXP_3","SUB","SQRT","CUBE_ROOT","RADICAL","LEFT_PAREN","RIGHT_PAREN","LN","LOG","LOG_N","SIN","COS","TAN","PI","THETA","UP","RIGHT","DOWN","LEFT","BACKSPACE","DISMISS","JUMP_OUT_PARENTHESES","JUMP_OUT_EXPONENT","JUMP_OUT_BASE","JUMP_INTO_NUMERATOR","JUMP_OUT_NUMERATOR","JUMP_OUT_DENOMINATOR","NUM_0","NUM_1","NUM_2","NUM_3","NUM_4","NUM_5","NUM_6","NUM_7","NUM_8","NUM_9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
|
|
138
138
|
|
|
139
139
|
const parseLegacyButtonSet=enumeration("basic","basic+div","trig","prealgebra","logarithms","basic relations","advanced relations","scientific");const parseLegacyButtonSets=defaulted(array(parseLegacyButtonSet),()=>["basic","trig","prealgebra","logarithms"]);
|
|
@@ -256,7 +256,7 @@ const parseUserInputMap=(rawValue,ctx)=>{if(!isPlainObject(rawValue)){return ctx
|
|
|
256
256
|
|
|
257
257
|
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}function parseAndMigratePerseusRenderer(data){const object=typeof data==="string"?JSON.parse(data):data;const result=parse(object,parsePerseusRenderer);if(isFailure(result)){return failure({message:result.detail,invalidObject:object})}return result}
|
|
258
258
|
|
|
259
|
-
const libName="@khanacademy/perseus-core";const libVersion="
|
|
259
|
+
const libName="@khanacademy/perseus-core";const libVersion="36.0.0";perseusUtils.addLibraryVersionToPerseusDebug(libName,libVersion);
|
|
260
260
|
|
|
261
261
|
const Errors=Object.freeze({Unknown:"Unknown",Internal:"Internal",InvalidInput:"InvalidInput",NotAllowed:"NotAllowed",TransientService:"TransientService",Service:"Service"});
|
|
262
262
|
|
|
@@ -449,10 +449,14 @@ function generateInteractiveGraphWidget(interactiveGraphWidgetProperties){return
|
|
|
449
449
|
|
|
450
450
|
function generateMatrixOptions(options){return {...matrixWidgetLogic.defaultWidgetOptions,...options}}function generateMatrixWidget(matrixWidgetProperties){return {type:"matrix",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generateMatrixOptions(),...matrixWidgetProperties}}
|
|
451
451
|
|
|
452
|
+
function generateOrdererOption(content){return {content,widgets:{},images:{}}}function generateOrdererOptions(options){const merged={...ordererWidgetLogic.defaultWidgetOptions,...options};return {...merged,options:options?.options??[...merged.correctOptions,...merged.otherOptions]}}function generateOrdererWidget(ordererWidgetProperties){return {type:"orderer",graded:true,version:{major:0,minor:0},static:false,alignment:"default",...ordererWidgetProperties,options:generateOrdererOptions(ordererWidgetProperties?.options)}}
|
|
453
|
+
|
|
452
454
|
function generatePlotterOptions(options){return {...plotterWidgetLogic.defaultWidgetOptions,...options}}function generatePlotterWidget(plotterWidgetProperties){return {type:"plotter",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generatePlotterOptions(),...plotterWidgetProperties}}
|
|
453
455
|
|
|
454
456
|
function generatePhetSimulationOptions(options){return {...phetSimulationWidgetLogic.defaultWidgetOptions,...options}}function generatePhetSimulationWidget(phetSimulationWidgetProperties){return {type:"phet-simulation",graded:false,version:{major:0,minor:0},static:false,alignment:"default",...phetSimulationWidgetProperties,options:generatePhetSimulationOptions(phetSimulationWidgetProperties?.options)}}
|
|
455
457
|
|
|
458
|
+
function generateNumberLineOptions(options){const defaultNumberLineOptions={range:[-4,4],labelRange:[null,null],labelStyle:"decimal",labelTicks:true,isInequality:false,isTickCtrl:false,divisionRange:[1,10],numDivisions:null,snapDivisions:2,tickStep:1,correctRel:"eq",correctX:null,initialX:null,showTooltips:false,static:false};return {...defaultNumberLineOptions,...options}}function generateNumberLineWidget(numberLineWidgetProperties){return {type:"number-line",graded:true,version:{major:0,minor:0},static:false,alignment:"default",...numberLineWidgetProperties,options:generateNumberLineOptions(numberLineWidgetProperties?.options)}}
|
|
459
|
+
|
|
456
460
|
function generateNumericInputOptions(options){return {...numericInputWidgetLogic.defaultWidgetOptions,static:false,...options}}function generateNumericInputAnswer(answerOptions){return {...numericInputWidgetLogic.defaultWidgetOptions.answers[0],...answerOptions}}function generateNumericInputWidget(numericInputWidgetProperties){return {type:"numeric-input",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generateNumericInputOptions(),...numericInputWidgetProperties}}
|
|
457
461
|
|
|
458
462
|
function generateRadioOptions(options){return {...radioWidgetLogic.defaultWidgetOptions,...options}}function generateRadioWidget(radioWidgetProperties){return {type:"radio",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generateRadioOptions(),...radioWidgetProperties}}function generateRadioChoice(text,options){return {content:text,id:`radio-choice-${Math.random()}`,correct:false,...options}}function generateSimpleRadioQuestion(options){return generateTestPerseusRenderer({content:"[[☃ radio 1]]",widgets:{"radio 1":generateRadioWidget({options:generateRadioOptions(options)})}})}function generateSimpleRadioItem(options){return generateTestPerseusItem({question:generateSimpleRadioQuestion(options)})}
|
|
@@ -558,9 +562,14 @@ exports.generateMatrixOptions = generateMatrixOptions;
|
|
|
558
562
|
exports.generateMatrixWidget = generateMatrixWidget;
|
|
559
563
|
exports.generateMeasurerOptions = generateMeasurerOptions;
|
|
560
564
|
exports.generateMeasurerWidget = generateMeasurerWidget;
|
|
565
|
+
exports.generateNumberLineOptions = generateNumberLineOptions;
|
|
566
|
+
exports.generateNumberLineWidget = generateNumberLineWidget;
|
|
561
567
|
exports.generateNumericInputAnswer = generateNumericInputAnswer;
|
|
562
568
|
exports.generateNumericInputOptions = generateNumericInputOptions;
|
|
563
569
|
exports.generateNumericInputWidget = generateNumericInputWidget;
|
|
570
|
+
exports.generateOrdererOption = generateOrdererOption;
|
|
571
|
+
exports.generateOrdererOptions = generateOrdererOptions;
|
|
572
|
+
exports.generateOrdererWidget = generateOrdererWidget;
|
|
564
573
|
exports.generatePhetSimulationOptions = generatePhetSimulationOptions;
|
|
565
574
|
exports.generatePhetSimulationWidget = generatePhetSimulationWidget;
|
|
566
575
|
exports.generatePlotterOptions = generatePlotterOptions;
|