@khanacademy/perseus-core 0.0.0-PR3108-20251209222515 → 0.0.0-PR3108-20251210232635
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/es/index.js +7 -3
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/generators/radio-widget-generator.d.ts +3 -0
- package/dist/utils/get-default-figure-for-type.d.ts +9 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -95,6 +95,7 @@ export { default as videoLogic } from "./widgets/video";
|
|
|
95
95
|
export type { VideoDefaultWidgetOptions } from "./widgets/video";
|
|
96
96
|
export { applyDefaultsToWidgets, applyDefaultsToWidget, } from "./widgets/apply-defaults";
|
|
97
97
|
export { default as getDefaultAnswerArea } from "./utils/get-default-answer-area";
|
|
98
|
+
export { getDefaultFigureForType } from "./utils/get-default-figure-for-type";
|
|
98
99
|
export { default as splitPerseusItem, splitPerseusItemJSON, } from "./utils/split-perseus-item";
|
|
99
100
|
export { default as Registry } from "./utils/registry";
|
|
100
101
|
export type * from "./widgets/logic-export.types";
|
|
@@ -144,5 +145,6 @@ export { generateExpressionOptions, generateExpressionAnswerForm, generateExpres
|
|
|
144
145
|
export { generateFreeResponseOptions, generateFreeResponseWidget, } from "./utils/generators/free-response-widget-generator";
|
|
145
146
|
export { generateImageOptions, generateImageWidget, } from "./utils/generators/image-widget-generator";
|
|
146
147
|
export { generateNumericInputOptions, generateNumericInputAnswer, generateNumericInputWidget, } from "./utils/generators/numeric-input-widget-generator";
|
|
148
|
+
export { generateRadioOptions, generateRadioWidget, } from "./utils/generators/radio-widget-generator";
|
|
147
149
|
export { generateVideoWidget } from "./utils/generators/video-widget-generator";
|
|
148
150
|
export { getAnswersFromWidgets, injectWidgets, getPerseusAIData, } from "./utils/extract-perseus-ai-data";
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,8 @@ var _ = require('underscore');
|
|
|
6
6
|
require('tiny-invariant');
|
|
7
7
|
var KAS = require('@khanacademy/kas');
|
|
8
8
|
var perseusUtils = require('@khanacademy/perseus-utils');
|
|
9
|
-
var pureMarkdown = require('@khanacademy/pure-markdown');
|
|
10
9
|
var wonderStuffCore = require('@khanacademy/wonder-stuff-core');
|
|
10
|
+
var pureMarkdown = require('@khanacademy/pure-markdown');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
13
13
|
|
|
@@ -259,7 +259,7 @@ const parseUserInputMap=(rawValue,ctx)=>{if(!isPlainObject(rawValue)){return ctx
|
|
|
259
259
|
|
|
260
260
|
function parsePerseusItem(json){if(isRealJSONParse(JSON.parse)){return JSON.parse(json)}throw new Error("Something went wrong.")}function parseAndMigratePerseusItem(data){throwErrorIfCheatingDetected();const object=typeof data==="string"?JSON.parse(data):data;const result=parse(object,parsePerseusItem$1);if(isFailure(result)){return failure({message:result.detail,invalidObject:object})}return result}function parseAndMigratePerseusArticle(data){throwErrorIfCheatingDetected();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 throwErrorIfCheatingDetected(){if(!isRealJSONParse(JSON.parse)){throw new Error("Something went wrong.")}}
|
|
261
261
|
|
|
262
|
-
const libName="@khanacademy/perseus-core";const libVersion="20.4.
|
|
262
|
+
const libName="@khanacademy/perseus-core";const libVersion="20.4.1";perseusUtils.addLibraryVersionToPerseusDebug(libName,libVersion);
|
|
263
263
|
|
|
264
264
|
const Errors=Object.freeze({Unknown:"Unknown",Internal:"Internal",InvalidInput:"InvalidInput",NotAllowed:"NotAllowed",TransientService:"TransientService",Service:"Service"});
|
|
265
265
|
|
|
@@ -406,6 +406,8 @@ const defaultWidgetOptions={content:"",widgets:{},images:{}};const traverseChild
|
|
|
406
406
|
|
|
407
407
|
function getDefaultAnswerArea(){return ItemExtras.reduce((acc,curr)=>({...acc,[curr]:false}),{})}
|
|
408
408
|
|
|
409
|
+
const DEFAULT_COLOR="grayH";function getDefaultFigureForType(type){switch(type){case "point":return {type:"point",coord:[0,0],color:DEFAULT_COLOR,filled:true,labels:[]};case "line":return {type:"line",kind:"line",points:[getDefaultFigureForType("point"),{...getDefaultFigureForType("point"),coord:[2,2]}],color:DEFAULT_COLOR,lineStyle:"solid",showPoint1:false,showPoint2:false,weight:"medium",labels:[]};case "vector":return {type:"vector",points:[[0,0],[2,2]],color:DEFAULT_COLOR,weight:"medium",labels:[]};case "ellipse":return {type:"ellipse",center:[0,0],radius:[1,1],angle:0,color:DEFAULT_COLOR,fillStyle:"none",strokeStyle:"solid",weight:"medium",labels:[]};case "polygon":return {type:"polygon",points:[[0,2],[-1,0],[1,0]],color:DEFAULT_COLOR,showVertices:false,fillStyle:"none",strokeStyle:"solid",weight:"medium",labels:[]};case "function":return {type:"function",color:DEFAULT_COLOR,strokeStyle:"solid",weight:"medium",equation:"x^2",domain:[-Infinity,Infinity],directionalAxis:"x",labels:[]};case "label":return {type:"label",coord:[0,0],text:"label",color:DEFAULT_COLOR,size:"medium"};default:throw new wonderStuffCore.UnreachableCaseError(type)}}
|
|
410
|
+
|
|
409
411
|
function splitPerseusItem(original){const item=deepClone(original);return {...item,question:splitPerseusRenderer(item.question),hints:[]}}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))}
|
|
410
412
|
|
|
411
413
|
const PerseusFeatureFlags=["new-radio-widget","image-widget-upgrade"];function isFeatureOn(props,flag){return props.apiOptions?.flags?.[flag]??false}
|
|
@@ -428,6 +430,8 @@ function generateImageOptions(options){const defaultImageOptions={backgroundImag
|
|
|
428
430
|
|
|
429
431
|
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}}
|
|
430
432
|
|
|
433
|
+
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}}
|
|
434
|
+
|
|
431
435
|
function generateVideoWidget(videoWidgetProperties){return {type:"video",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:{location:""},...videoWidgetProperties}}
|
|
432
436
|
|
|
433
437
|
const joinOptionContents=options=>options.map(({content})=>content).join("\n");const toOptionLetter=index=>String.fromCharCode("A".charCodeAt(0)+index);function getAnswersFromWidgets(widgets){const answers=[];wonderStuffCore.keys(widgets).forEach(widgetID=>{const widget=widgets[widgetID];if(!widget.options){return}switch(widget.type){case "radio":const radio=widget;const options=radio.options;if(options?.choices?.length){for(const choice of options.choices){if(choice?.correct){answers.push(choice.content);}}}break;case "categorizer":const categorizer=widget;if(categorizer.options?.categories&&categorizer.options?.items&&categorizer.options?.values){const categories=categorizer.options?.categories;const items=categorizer.options?.items;const values=categorizer.options?.values;answers.push(...values.map((value,index)=>`${items[index]}: ${categories[value]}`));}break;case "dropdown":const dropdown=widget;if(dropdown.options?.choices){for(const choice of dropdown.options.choices){if(choice.correct){answers.push(choice.content);}}}break;case "numeric-input":const numericInput=widget;if(numericInput.options?.answers){for(const ans of numericInput.options.answers){if(ans.status==="correct"&&ans.value!=null){answers.push(ans.value.toString());}}}break;case "input-number":const inputNumber=widget;if(inputNumber.options?.value){answers.push(inputNumber.options.value.toString());}break;case "expression":const expression=widget;if(expression.options?.answerForms){answers.push(...expression.options.answerForms.map(answer=>answer.value));}break;case "group":case "graded-group":const gradedGroup=widget;if(gradedGroup.options?.widgets){answers.push(...getAnswersFromWidgets(gradedGroup.options.widgets));}break;case "plotter":const plotter=widget;if(plotter.options?.categories&&plotter.options?.correct&&plotter.options.categories.length===plotter.options.correct.length){const{categories,correct}=plotter.options;answers.push(`{${categories.map((category,index)=>`${category}: ${correct[index]}`).join(", ")}}`);}break;case "interactive-graph":case "grapher":const grapher=widget;if(grapher.options?.correct?.coords){answers.push(`There should be point(s) on [${grapher.options.correct?.coords.join("], [")}]`);}break;case "orderer":const orderer=widget;if(orderer.options?.correctOptions){answers.push(joinOptionContents(orderer.options.correctOptions));}break;case "sorter":const sorter=widget;if(sorter.options?.correct){answers.push(sorter.options.correct.join(", "));}break;case "label-image":const labelImage=widget;if(labelImage.options?.markers){answers.push(...labelImage.options.markers.map(m=>`{label: "${m.label}", position: {${m.x},${m.y}}, answer: "${m.answers.join(", ")}"}`));}break;case "number-line":const numberLine=widget;if(numberLine.options?.correctX!=null){answers.push(numberLine.options.correctX.toString());}break;case "matrix":const matrix=widget;if(matrix.options?.answers){answers.push(`[${matrix.options.answers.join("], [")}]`);}break;case "matcher":const matcher=widget;if(matcher.options?.left&&matcher.options?.right){const{left,right}=matcher.options;const[leftHeader,rightHeader]=matcher.options.labels;const tableHeader=`| ${leftHeader} | ${rightHeader} |
|
|
@@ -482,6 +486,8 @@ exports.generateImageWidget = generateImageWidget;
|
|
|
482
486
|
exports.generateNumericInputAnswer = generateNumericInputAnswer;
|
|
483
487
|
exports.generateNumericInputOptions = generateNumericInputOptions;
|
|
484
488
|
exports.generateNumericInputWidget = generateNumericInputWidget;
|
|
489
|
+
exports.generateRadioOptions = generateRadioOptions;
|
|
490
|
+
exports.generateRadioWidget = generateRadioWidget;
|
|
485
491
|
exports.generateTestPerseusItem = generateTestPerseusItem;
|
|
486
492
|
exports.generateTestPerseusRenderer = generateTestPerseusRenderer;
|
|
487
493
|
exports.generateVideoWidget = generateVideoWidget;
|
|
@@ -492,6 +498,7 @@ exports.getCategorizerPublicWidgetOptions = getCategorizerPublicWidgetOptions;
|
|
|
492
498
|
exports.getDataUrl = getDataUrl;
|
|
493
499
|
exports.getDecimalSeparator = getDecimalSeparator;
|
|
494
500
|
exports.getDefaultAnswerArea = getDefaultAnswerArea;
|
|
501
|
+
exports.getDefaultFigureForType = getDefaultFigureForType;
|
|
495
502
|
exports.getDivideSymbol = getDivideSymbol;
|
|
496
503
|
exports.getDivideSymbolForTex = getDivideSymbolForTex;
|
|
497
504
|
exports.getDropdownPublicWidgetOptions = getDropdownPublicWidgetOptions;
|