@khanacademy/perseus-core 0.0.0-PR3091-20251204213510 → 0.0.0-PR3091-20251205170903

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/index.d.ts CHANGED
@@ -137,6 +137,7 @@ export { default as PerseusFeatureFlags, isFeatureOn } from "./feature-flags";
137
137
  export { traverse } from "./traversal";
138
138
  export { isItemAccessible, violatingWidgets } from "./accessibility";
139
139
  export { isLabeledSVG, getRealImageUrl, getBaseUrl, getSvgUrl, getDataUrl, getImageSizeModern, } from "./utils/util.graphie";
140
+ export { generateFreeResponseOptions, generateFreeResponseWidget, } from "./utils/generators/free-response-widget-generator";
140
141
  export { generateImageOptions, generateImageWidget, } from "./utils/generators/image-widget-generator";
141
142
  export { generateVideoWidget } from "./utils/generators/video-widget-generator";
142
143
  export { getAnswersFromWidgets, injectWidgets, getPerseusAIData, } from "./utils/extract-perseus-ai-data";
package/dist/index.js CHANGED
@@ -414,6 +414,8 @@ const noop=function(){};const deepCallbackFor=function(contentCallback,widgetCal
414
414
 
415
415
  function violatingWidgets(itemData){const widgetTypes=[];traverse(itemData.question,null,function(info){if(info.type&&!isAccessible(info.type,info.options)){widgetTypes.push(info.type);}});return [...new Set(widgetTypes)]}function isItemAccessible(itemData){const ast=pureMarkdown.parse(itemData.question.content);const widgetIdsInUse=new Set;let hasInaccessibleImage=false;pureMarkdown.traverseContent(ast,node=>{if(node.type==="image"&&(node.alt==null||node.alt==="")){hasInaccessibleImage=true;return}if(node.type==="widget"){widgetIdsInUse.add(node.id);}});if(hasInaccessibleImage){return false}const itemDataWithOnlyActiveWidgets={...itemData,question:{...itemData.question,widgets:Object.fromEntries(Object.entries(itemData.question.widgets).filter(([id])=>widgetIdsInUse.has(id)))}};return violatingWidgets(itemDataWithOnlyActiveWidgets).length===0}
416
416
 
417
+ function generateFreeResponseOptions(options){return {...freeResponseWidgetLogic.defaultWidgetOptions,...options}}function generateFreeResponseWidget(freeResponseWidgetProperties){return {type:"free-response",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generateFreeResponseOptions(),...freeResponseWidgetProperties}}
418
+
417
419
  function generateImageOptions(options){const defaultImageOptions={backgroundImage:{}};return {...defaultImageOptions,...options}}function generateImageWidget(imageWidgetProperties){return {type:"image",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:generateImageOptions({}),...imageWidgetProperties}}
418
420
 
419
421
  function generateVideoWidget(videoWidgetProperties){return {type:"video",graded:true,version:{major:0,minor:0},static:false,alignment:"default",options:{location:""},...videoWidgetProperties}}
@@ -454,6 +456,8 @@ exports.dropdownLogic = dropdownWidgetLogic;
454
456
  exports.explanationLogic = explanationWidgetLogic;
455
457
  exports.expressionLogic = expressionWidgetLogic;
456
458
  exports.freeResponseLogic = freeResponseWidgetLogic;
459
+ exports.generateFreeResponseOptions = generateFreeResponseOptions;
460
+ exports.generateFreeResponseWidget = generateFreeResponseWidget;
457
461
  exports.generateImageOptions = generateImageOptions;
458
462
  exports.generateImageWidget = generateImageWidget;
459
463
  exports.generateTestPerseusItem = generateTestPerseusItem;