All files / web/src/app/create/worksheets manualModePresets.ts

0% Statements 0/102
0% Branches 0/1
0% Functions 0/1
0% Lines 0/102

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103                                                                                                                                                                                                             
// Manual mode presets for direct display control

export interface ManualModePreset {
  name: string
  label: string
  description: string
  showCarryBoxes: boolean
  showAnswerBoxes: boolean
  showPlaceValueColors: boolean
  showTenFrames: boolean
  showProblemNumbers: boolean
  showCellBorder: boolean
  showTenFramesForAll: boolean
}

/**
 * Pre-defined manual mode presets for common use cases
 * Unlike smart mode presets, these are simple on/off toggles
 */
export const MANUAL_MODE_PRESETS = {
  fullScaffolding: {
    name: 'fullScaffolding',
    label: 'Full Scaffolding',
    description: 'All visual aids enabled for maximum support',
    showCarryBoxes: true,
    showAnswerBoxes: true,
    showPlaceValueColors: true,
    showTenFrames: false, // Off by default, can enable separately
    showProblemNumbers: true,
    showCellBorder: true,
    showTenFramesForAll: false,
  },

  minimalScaffolding: {
    name: 'minimalScaffolding',
    label: 'Minimal Scaffolding',
    description: 'Basic structure only - for students building independence',
    showCarryBoxes: false,
    showAnswerBoxes: false,
    showPlaceValueColors: false,
    showTenFrames: false,
    showProblemNumbers: true,
    showCellBorder: true,
    showTenFramesForAll: false,
  },

  assessmentMode: {
    name: 'assessmentMode',
    label: 'Assessment Mode',
    description: 'Clean layout for testing - minimal visual aids',
    showCarryBoxes: false,
    showAnswerBoxes: false,
    showPlaceValueColors: false,
    showTenFrames: false,
    showProblemNumbers: true,
    showCellBorder: false,
    showTenFramesForAll: false,
  },

  tenFramesFocus: {
    name: 'tenFramesFocus',
    label: 'Ten-Frames Focus',
    description: 'All aids plus ten-frames for concrete visualization',
    showCarryBoxes: true,
    showAnswerBoxes: true,
    showPlaceValueColors: true,
    showTenFrames: true,
    showProblemNumbers: true,
    showCellBorder: true,
    showTenFramesForAll: false,
  },
} as const satisfies Record<string, ManualModePreset>

export type ManualModePresetName = keyof typeof MANUAL_MODE_PRESETS

/**
 * Check if manual display settings match a preset
 */
export function getManualPresetFromConfig(config: {
  showCarryBoxes: boolean
  showAnswerBoxes: boolean
  showPlaceValueColors: boolean
  showTenFrames: boolean
  showProblemNumbers: boolean
  showCellBorder: boolean
  showTenFramesForAll: boolean
}): ManualModePresetName | 'custom' {
  for (const [name, preset] of Object.entries(MANUAL_MODE_PRESETS)) {
    if (
      preset.showCarryBoxes === config.showCarryBoxes &&
      preset.showAnswerBoxes === config.showAnswerBoxes &&
      preset.showPlaceValueColors === config.showPlaceValueColors &&
      preset.showTenFrames === config.showTenFrames &&
      preset.showProblemNumbers === config.showProblemNumbers &&
      preset.showCellBorder === config.showCellBorder &&
      preset.showTenFramesForAll === config.showTenFramesForAll
    ) {
      return name as ManualModePresetName
    }
  }
  return 'custom'
}