@pie-lib/mask-markup 3.0.12 → 3.0.14-next.12

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/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.0.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.12...@pie-lib/mask-markup@3.0.13) (2026-07-31)
7
+
8
+ ### Bug Fixes
9
+
10
+ - made sure the numbers near the fraction have the same font size as the fraction [PIE-755] ([1c6d035](https://github.com/pie-framework/pie-lib/commit/1c6d03581470303e750cb14e5edcd08ba2eaf617))
11
+ - **mask-markup:** handle measurment of choices with text and images PIE-679 ([48d9d69](https://github.com/pie-framework/pie-lib/commit/48d9d693ca2fceed6a6213106dbc541e4f29d01d))
12
+
6
13
  ## [3.0.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.11...@pie-lib/mask-markup@3.0.12) (2026-07-08)
7
14
 
8
15
  ### Bug Fixes
@@ -64,6 +64,9 @@ var StyledChipLabel = (0, _styles.styled)('span')(function () {
64
64
  },
65
65
  '& mjx-frac': {
66
66
  fontSize: '120% !important'
67
+ },
68
+ '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {
69
+ fontSize: '120% !important'
67
70
  }
68
71
  };
69
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"choice.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_core","_styles","_Chip","_mathRendering","_renderUi","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DRAG_TYPE","exports","StyledChoice","styled","_ref","theme","disabled","border","concat","palette","primary","main","borderRadius","spacing","margin","transform","display","StyledChip","Chip","backgroundColor","color","white","text","alignItems","height","minHeight","fontSize","whiteSpace","maxWidth","pointerEvents","paddingTop","paddingBottom","opacity","StyledChipLabel","padding","Choice","_ref2","_rootRef$current","_rootRef$current2","choice","instanceId","rootRef","useRef","_useDraggable","useDraggable","id","data","fromChoice","type","attributes","listeners","setNodeRef","isDragging","useEffect","renderMath","current","value","createElement","_extends2","ref","style","width","offsetWidth","offsetHeight","clickable","label","dangerouslySetInnerHTML","__html","propTypes","PropTypes","object","isRequired","bool","oneOfType","string","number"],"sources":["../../src/choices/choice.jsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDraggable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\nimport Chip from '@mui/material/Chip';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { color } from '@pie-lib/render-ui';\n\nexport const DRAG_TYPE = 'MaskBlank';\n\nconst StyledChoice = styled('span')(({ theme, disabled }) => ({\n border: `solid 0px ${theme.palette.primary.main}`,\n borderRadius: theme.spacing(2),\n margin: theme.spacing(0.5),\n transform: 'translate(0, 0)',\n display: 'inline-flex',\n ...(disabled && {}),\n}));\n\nconst StyledChip = styled(Chip)(() => ({\n backgroundColor: color.white(),\n border: `1px solid ${color.text()}`,\n color: color.text(),\n alignItems: 'center',\n display: 'inline-flex',\n height: 'initial',\n minHeight: '32px',\n fontSize: 'inherit',\n whiteSpace: 'pre-wrap',\n maxWidth: '374px',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n borderRadius: '3px',\n paddingTop: '12px',\n paddingBottom: '12px',\n\n '&.Mui-disabled': {\n opacity: 1,\n },\n}));\n\nconst StyledChipLabel = styled('span')(() => ({\n whiteSpace: 'normal',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n}));\n\nexport default function Choice({ choice, disabled, instanceId }) {\n const rootRef = useRef(null);\n\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: `choice-${choice.id}`,\n data: { choice, instanceId, fromChoice: true, type: DRAG_TYPE },\n disabled,\n });\n\n useEffect(() => {\n renderMath(rootRef.current);\n }, [choice.value]);\n\n return (\n <StyledChoice\n ref={setNodeRef}\n style={\n isDragging\n ? {\n width: rootRef.current?.offsetWidth || 90, // min-width of chip is 90px, so if we don't have the width, we can use 90px as a fallback\n height: rootRef.current?.offsetHeight || 32, // min-height of chip is 32px, so if we don't have the height, we can use 32px as a fallback\n }\n : {}\n }\n disabled={disabled}\n {...listeners}\n {...attributes}\n >\n <StyledChip\n clickable={false}\n disabled={disabled}\n ref={rootRef}\n label={<StyledChipLabel dangerouslySetInnerHTML={{ __html: choice.value }} />}\n />\n </StyledChoice>\n );\n}\n\nChoice.propTypes = {\n choice: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"choice.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_core","_styles","_Chip","_mathRendering","_renderUi","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DRAG_TYPE","exports","StyledChoice","styled","_ref","theme","disabled","border","concat","palette","primary","main","borderRadius","spacing","margin","transform","display","StyledChip","Chip","backgroundColor","color","white","text","alignItems","height","minHeight","fontSize","whiteSpace","maxWidth","pointerEvents","paddingTop","paddingBottom","opacity","StyledChipLabel","padding","Choice","_ref2","_rootRef$current","_rootRef$current2","choice","instanceId","rootRef","useRef","_useDraggable","useDraggable","id","data","fromChoice","type","attributes","listeners","setNodeRef","isDragging","useEffect","renderMath","current","value","createElement","_extends2","ref","style","width","offsetWidth","offsetHeight","clickable","label","dangerouslySetInnerHTML","__html","propTypes","PropTypes","object","isRequired","bool","oneOfType","string","number"],"sources":["../../src/choices/choice.jsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDraggable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\nimport Chip from '@mui/material/Chip';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { color } from '@pie-lib/render-ui';\n\nexport const DRAG_TYPE = 'MaskBlank';\n\nconst StyledChoice = styled('span')(({ theme, disabled }) => ({\n border: `solid 0px ${theme.palette.primary.main}`,\n borderRadius: theme.spacing(2),\n margin: theme.spacing(0.5),\n transform: 'translate(0, 0)',\n display: 'inline-flex',\n ...(disabled && {}),\n}));\n\nconst StyledChip = styled(Chip)(() => ({\n backgroundColor: color.white(),\n border: `1px solid ${color.text()}`,\n color: color.text(),\n alignItems: 'center',\n display: 'inline-flex',\n height: 'initial',\n minHeight: '32px',\n fontSize: 'inherit',\n whiteSpace: 'pre-wrap',\n maxWidth: '374px',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n borderRadius: '3px',\n paddingTop: '12px',\n paddingBottom: '12px',\n\n '&.Mui-disabled': {\n opacity: 1,\n },\n}));\n\nconst StyledChipLabel = styled('span')(() => ({\n whiteSpace: 'normal',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {\n fontSize: '120% !important',\n },\n}));\n\nexport default function Choice({ choice, disabled, instanceId }) {\n const rootRef = useRef(null);\n\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: `choice-${choice.id}`,\n data: { choice, instanceId, fromChoice: true, type: DRAG_TYPE },\n disabled,\n });\n\n useEffect(() => {\n renderMath(rootRef.current);\n }, [choice.value]);\n\n return (\n <StyledChoice\n ref={setNodeRef}\n style={\n isDragging\n ? {\n width: rootRef.current?.offsetWidth || 90, // min-width of chip is 90px, so if we don't have the width, we can use 90px as a fallback\n height: rootRef.current?.offsetHeight || 32, // min-height of chip is 32px, so if we don't have the height, we can use 32px as a fallback\n }\n : {}\n }\n disabled={disabled}\n {...listeners}\n {...attributes}\n >\n <StyledChip\n clickable={false}\n disabled={disabled}\n ref={rootRef}\n label={<StyledChipLabel dangerouslySetInnerHTML={{ __html: choice.value }} />}\n />\n </StyledChoice>\n );\n}\n\nChoice.propTypes = {\n choice: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n"],"mappings":"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","ignoreList":[]}
@@ -91,6 +91,9 @@ var StyledChipLabel = (0, _styles.styled)('span')(function () {
91
91
  '& mjx-frac': {
92
92
  fontSize: '120% !important'
93
93
  },
94
+ '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {
95
+ fontSize: '120% !important'
96
+ },
94
97
  '&.over': {
95
98
  whiteSpace: 'nowrap',
96
99
  overflow: 'hidden'
@@ -144,11 +147,19 @@ function BlankContent(_ref2) {
144
147
  }
145
148
  };
146
149
  var getMeasureNode = function getMeasureNode() {
147
- if (!spanRef.current) return null;
150
+ if (!spanRef.current) {
151
+ return null;
152
+ }
148
153
  var mjx = spanRef.current.querySelector('mjx-container');
149
- if (mjx && spanRef.current.parentElement) return spanRef.current.parentElement;
154
+ if (mjx && spanRef.current.parentElement) {
155
+ return spanRef.current.parentElement;
156
+ }
150
157
  var img = spanRef.current.querySelector('img');
151
- if (img) return img;
158
+ if (img) {
159
+ // If there's text alongside the image, measure the full span to capture both dimensions
160
+ var hasTextContent = spanRef.current.textContent.trim().length > 0;
161
+ return hasTextContent ? spanRef.current : img;
162
+ }
152
163
  return spanRef.current;
153
164
  };
154
165
  var updateDimensions = function updateDimensions() {
@@ -1 +1 @@
1
- {"version":3,"file":"blank.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_mathRendering","_debug","_core","_utilities","_styles","_Chip","_classnames","_renderUi","_colors","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","StyledContent","styled","_ref","dragged","over","border","concat","color","primary","minWidth","touchAction","overflow","whiteSpace","opacity","StyledChip","Chip","backgroundColor","background","text","fontSize","maxWidth","position","borderRadius","grey","correct","incorrect","StyledChipLabel","pointerEvents","display","padding","marginTop","marginBottom","left","top","transform","BlankContent","_ref2","_dragItem$choice","_frozenRef$current","_frozenRef$current2","disabled","choice","isOver","isDragging","dragItem","emptyResponseAreaWidth","emptyResponseAreaHeight","rootRef","useRef","spanRef","frozenRef","measuringRef","_useState","useState","height","width","_useState2","_slicedToArray2","dimensions","setDimensions","handleImageLoad","updateDimensions","handleElements","_spanRef$current","imageElement","current","querySelector","onload","setTimeout","getMeasureNode","mjx","parentElement","img","style","offsetHeight","measureNode","node","rect","getBoundingClientRect","offsetWidth","Math","max","scrollHeight","PADDING","BORDER_WIDTH","ADDITIONAL_SPACE","widthWithPadding","heightWithPadding","responseAreaWidth","parseFloat","responseAreaHeight","adjustedWidth","adjustedHeight","prevState","nextWidth","nextHeight","getRootDimensions","isNaN","rootStyle","minHeight","useEffect","IntersectionObserver","undefined","io","entries","some","isIntersecting","threshold","observe","disconnect","renderMath","value","draggedLabel","label","createElement","clickable","ref","component","Fragment","draggable","className","classnames","hidden","dangerouslySetInnerHTML","__html","parentOver","variant","defaultProps","propTypes","id","PropTypes","oneOfType","string","number","bool","duplicates","object","onChange","func","instanceId","DragDropBlank","_ref3","_dragItem$data","_useDraggable","useDraggable","data","fromChoice","type","dragAttributes","attributes","dragListeners","listeners","setDragNodeRef","setNodeRef","_useDroppable","useDroppable","accepts","setDropNodeRef","active","CSS","Translate","toString","_extends2","_default","exports"],"sources":["../../src/components/blank.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport { styled } from '@mui/material/styles';\nimport Chip from '@mui/material/Chip';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport { grey } from '@mui/material/colors';\n\nconst log = debug('pie-lib:mask-markup:blank');\n\nconst StyledContent = styled('span')(({ dragged, over }) => ({\n border: `solid 0px ${color.primary()}`,\n minWidth: '200px',\n touchAction: 'none',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n opacity: 1,\n ...(over && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n }),\n ...(dragged && {\n opacity: 0.5,\n }),\n}));\n\nconst StyledChip = styled(Chip)(() => ({\n backgroundColor: color.background(),\n border: `2px dashed ${color.text()}`,\n touchAction: 'none',\n color: color.text(),\n fontSize: 'inherit',\n maxWidth: '374px',\n position: 'relative',\n borderRadius: '3px',\n '&.over': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n '&.parentOver': {\n border: `1px solid ${grey[500]}`,\n backgroundColor: `${grey[300]}`,\n },\n '&.correct': {\n border: `solid 1px ${color.correct()}`,\n },\n '&.incorrect': {\n border: `solid 1px ${color.incorrect()}`,\n },\n '&.Mui-disabled': {\n opacity: 1,\n },\n}));\n\nconst StyledChipLabel = styled('span')(() => ({\n whiteSpace: 'normal',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n // Remove default <p> margins to ensure consistent spacing across all wrapped content (p, span, div, math)\n // Padding for top and bottom will instead be controlled by the container for consistent layout\n // Ensures consistent behavior with pie-api-browser, where marginTop is already removed by a Bootstrap stylesheet\n '& p': {\n marginTop: '0',\n marginBottom: '0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n '&.over': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n '&.hidden': {\n color: 'transparent',\n opacity: 0,\n },\n '&.dragged': {\n position: 'absolute',\n left: 16,\n maxWidth: '60px',\n top: '50%',\n transform: 'translateY(-50%)',\n },\n}));\n\nfunction BlankContent({\n disabled,\n choice,\n isOver,\n isDragging,\n dragItem,\n correct,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n}) {\n const rootRef = useRef(null);\n const spanRef = useRef(null);\n const frozenRef = useRef(null); // to use during dragging to prevent flickering\n const measuringRef = useRef(false); // guard against ResizeObserver feedback loops\n const [dimensions, setDimensions] = useState({ height: 0, width: 0 });\n\n const handleImageLoad = () => {\n updateDimensions();\n };\n\n const handleElements = () => {\n const imageElement = spanRef.current?.querySelector('img');\n if (imageElement) {\n imageElement.onload = handleImageLoad;\n } else {\n setTimeout(() => {\n updateDimensions();\n }, 300);\n }\n };\n\n const getMeasureNode = () => {\n if (!spanRef.current) return null;\n const mjx = spanRef.current.querySelector('mjx-container');\n if (mjx && spanRef.current.parentElement) return spanRef.current.parentElement;\n const img = spanRef.current.querySelector('img');\n if (img) return img;\n return spanRef.current;\n };\n\n const updateDimensions = () => {\n if (spanRef.current && rootRef.current && !measuringRef.current) {\n measuringRef.current = true;\n // Temporarily set rootRef width to 'auto' for natural measurement\n rootRef.current.style.width = 'auto';\n rootRef.current.style.height = 'auto';\n rootRef.current.offsetHeight;\n\n const measureNode = getMeasureNode();\n const node = measureNode || spanRef.current;\n const rect = node.getBoundingClientRect();\n const width = node.offsetWidth || rect.width || 0;\n const height = Math.max(\n node.offsetHeight || 0,\n rect.height || 0,\n node.scrollHeight || 0,\n spanRef.current.scrollHeight || 0,\n );\n\n const PADDING = 12;\n const BORDER_WIDTH = 2;\n const ADDITIONAL_SPACE = 1;\n // padding and border on each side\n const widthWithPadding = width + 2 * PADDING + 2 * BORDER_WIDTH + ADDITIONAL_SPACE;\n // padding and border on top and bottom\n const heightWithPadding = height + 2 * PADDING + 2 * BORDER_WIDTH + ADDITIONAL_SPACE;\n\n const responseAreaWidth = parseFloat(emptyResponseAreaWidth) || 0;\n const responseAreaHeight = parseFloat(emptyResponseAreaHeight) || 0;\n\n const adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;\n const adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;\n\n\n setDimensions((prevState) => ({\n width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,\n height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height,\n }));\n\n const nextWidth = `${adjustedWidth}px`;\n const nextHeight = `${adjustedHeight}px`;\n if (rootRef.current.style.width !== nextWidth) {\n rootRef.current.style.width = nextWidth;\n }\n if (rootRef.current.style.height !== nextHeight) {\n rootRef.current.style.height = nextHeight;\n }\n measuringRef.current = false;\n }\n };\n\n const getRootDimensions = () => {\n // Handle potential non-numeric values\n const responseAreaWidth = !isNaN(parseFloat(emptyResponseAreaWidth)) ? parseFloat(emptyResponseAreaWidth) : 0;\n const responseAreaHeight = !isNaN(parseFloat(emptyResponseAreaHeight)) ? parseFloat(emptyResponseAreaHeight) : 0;\n\n const rootStyle = {\n height: dimensions.height || responseAreaHeight,\n width: dimensions.width || responseAreaWidth,\n };\n\n // add minWidth, minHeight if width and height are not defined\n return {\n ...rootStyle,\n ...(responseAreaWidth ? {} : { minWidth: 90 }),\n ...(responseAreaHeight ? {} : { minHeight: 32 }),\n };\n };\n\n useEffect(() => {\n handleElements();\n }, []);\n\n // Re-measure when the element first becomes visible — covers the tabbed-view case\n // where the initial measurement happened while the tab was hidden (size 0).\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined' || !rootRef.current) return undefined;\n const io = new IntersectionObserver(\n (entries) => {\n if (entries.some((e) => e.isIntersecting)) updateDimensions();\n },\n { threshold: 0 },\n );\n io.observe(rootRef.current);\n return () => io.disconnect();\n }, []);\n\n // Render math for the placeholder/preview when dragging over\n useEffect(() => {\n if (rootRef.current) {\n renderMath(rootRef.current);\n }\n }, [correct, isOver, dragItem?.choice?.value]);\n\n useEffect(() => {\n if (!choice) {\n setDimensions({ height: 0, width: 0 });\n return;\n }\n handleElements();\n }, [choice?.value]);\n\n useEffect(() => {\n if (!isOver && !isDragging) {\n frozenRef.current = {\n width: rootRef.current.offsetWidth,\n height: rootRef.current.offsetHeight,\n };\n }\n }, [choice, isOver, isDragging]);\n\n const draggedLabel = dragItem && isOver && dragItem.choice && dragItem.choice.value;\n const label = choice && choice.value;\n const style =\n isOver || isDragging\n ? {\n width: frozenRef.current?.width,\n height: frozenRef.current?.height,\n }\n : getRootDimensions();\n\n return (\n <StyledChip\n clickable={false}\n disabled={disabled}\n ref={rootRef}\n component=\"span\"\n label={\n <React.Fragment>\n <StyledChipLabel\n ref={spanRef}\n draggable={true}\n className={classnames({\n over: isOver,\n hidden: draggedLabel,\n })}\n dangerouslySetInnerHTML={{ __html: label || '' }}\n />\n {draggedLabel && (\n <StyledChipLabel\n draggable={true}\n className={classnames({\n over: isOver,\n dragged: true,\n })}\n dangerouslySetInnerHTML={{ __html: draggedLabel || '' }}\n />\n )}\n </React.Fragment>\n }\n className={classnames({\n over: isOver,\n parentOver: isOver,\n correct: correct !== undefined && correct,\n incorrect: correct !== undefined && !correct,\n })}\n variant={disabled ? 'outlined' : undefined}\n style={style}\n />\n );\n}\n\nBlankContent.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nBlankContent.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n instanceId: PropTypes.string,\n};\n\n// New functional component using @dnd-kit hooks\nfunction DragDropBlank({\n id,\n disabled,\n duplicates,\n choice,\n correct,\n onChange,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n instanceId,\n}) {\n // Setup draggable functionality\n const {\n attributes: dragAttributes,\n listeners: dragListeners,\n setNodeRef: setDragNodeRef,\n transform,\n isDragging,\n } = useDraggable({\n id: `mask-blank-drag-${id}`,\n disabled: disabled || !choice,\n data: {\n id: id,\n choice: choice,\n instanceId: instanceId,\n fromChoice: false, // This is from a blank, not from choices\n type: 'MaskBlank',\n },\n });\n\n // Setup droppable functionality\n const {\n setNodeRef: setDropNodeRef,\n isOver,\n active: dragItem,\n } = useDroppable({\n id: `mask-blank-drop-${id}`,\n data: {\n id: id,\n accepts: ['MaskBlank'],\n instanceId: instanceId,\n },\n });\n\n // Combine refs for both drag and drop\n const setNodeRef = (node) => {\n setDragNodeRef(node);\n setDropNodeRef(node);\n };\n\n const style = {\n transform: CSS.Translate.toString(transform),\n };\n\n return (\n <StyledContent\n ref={setNodeRef}\n style={style}\n dragged={isDragging}\n over={isOver}\n {...dragAttributes}\n {...dragListeners}\n >\n <BlankContent\n id={id}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n isOver={isOver}\n dragItem={dragItem?.data?.current}\n correct={correct}\n onChange={onChange}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n instanceId={instanceId}\n />\n </StyledContent>\n );\n}\n\nDragDropBlank.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nDragDropBlank.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n instanceId: PropTypes.string,\n};\n\nexport default DragDropBlank;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"blank.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_mathRendering","_debug","_core","_utilities","_styles","_Chip","_classnames","_renderUi","_colors","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","StyledContent","styled","_ref","dragged","over","border","concat","color","primary","minWidth","touchAction","overflow","whiteSpace","opacity","StyledChip","Chip","backgroundColor","background","text","fontSize","maxWidth","position","borderRadius","grey","correct","incorrect","StyledChipLabel","pointerEvents","display","padding","marginTop","marginBottom","left","top","transform","BlankContent","_ref2","_dragItem$choice","_frozenRef$current","_frozenRef$current2","disabled","choice","isOver","isDragging","dragItem","emptyResponseAreaWidth","emptyResponseAreaHeight","rootRef","useRef","spanRef","frozenRef","measuringRef","_useState","useState","height","width","_useState2","_slicedToArray2","dimensions","setDimensions","handleImageLoad","updateDimensions","handleElements","_spanRef$current","imageElement","current","querySelector","onload","setTimeout","getMeasureNode","mjx","parentElement","img","hasTextContent","textContent","trim","style","offsetHeight","measureNode","node","rect","getBoundingClientRect","offsetWidth","Math","max","scrollHeight","PADDING","BORDER_WIDTH","ADDITIONAL_SPACE","widthWithPadding","heightWithPadding","responseAreaWidth","parseFloat","responseAreaHeight","adjustedWidth","adjustedHeight","prevState","nextWidth","nextHeight","getRootDimensions","isNaN","rootStyle","minHeight","useEffect","IntersectionObserver","undefined","io","entries","some","isIntersecting","threshold","observe","disconnect","renderMath","value","draggedLabel","label","createElement","clickable","ref","component","Fragment","draggable","className","classnames","hidden","dangerouslySetInnerHTML","__html","parentOver","variant","defaultProps","propTypes","id","PropTypes","oneOfType","string","number","bool","duplicates","object","onChange","func","instanceId","DragDropBlank","_ref3","_dragItem$data","_useDraggable","useDraggable","data","fromChoice","type","dragAttributes","attributes","dragListeners","listeners","setDragNodeRef","setNodeRef","_useDroppable","useDroppable","accepts","setDropNodeRef","active","CSS","Translate","toString","_extends2","_default","exports"],"sources":["../../src/components/blank.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport { styled } from '@mui/material/styles';\nimport Chip from '@mui/material/Chip';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport { grey } from '@mui/material/colors';\n\nconst log = debug('pie-lib:mask-markup:blank');\n\nconst StyledContent = styled('span')(({ dragged, over }) => ({\n border: `solid 0px ${color.primary()}`,\n minWidth: '200px',\n touchAction: 'none',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n opacity: 1,\n ...(over && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n }),\n ...(dragged && {\n opacity: 0.5,\n }),\n}));\n\nconst StyledChip = styled(Chip)(() => ({\n backgroundColor: color.background(),\n border: `2px dashed ${color.text()}`,\n touchAction: 'none',\n color: color.text(),\n fontSize: 'inherit',\n maxWidth: '374px',\n position: 'relative',\n borderRadius: '3px',\n '&.over': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n '&.parentOver': {\n border: `1px solid ${grey[500]}`,\n backgroundColor: `${grey[300]}`,\n },\n '&.correct': {\n border: `solid 1px ${color.correct()}`,\n },\n '&.incorrect': {\n border: `solid 1px ${color.incorrect()}`,\n },\n '&.Mui-disabled': {\n opacity: 1,\n },\n}));\n\nconst StyledChipLabel = styled('span')(() => ({\n whiteSpace: 'normal',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n '& img': {\n display: 'block',\n padding: '2px 0',\n },\n // Remove default <p> margins to ensure consistent spacing across all wrapped content (p, span, div, math)\n // Padding for top and bottom will instead be controlled by the container for consistent layout\n // Ensures consistent behavior with pie-api-browser, where marginTop is already removed by a Bootstrap stylesheet\n '& p': {\n marginTop: '0',\n marginBottom: '0',\n },\n '& mjx-frac': {\n fontSize: '120% !important',\n },\n '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {\n fontSize: '120% !important',\n },\n '&.over': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n '&.hidden': {\n color: 'transparent',\n opacity: 0,\n },\n '&.dragged': {\n position: 'absolute',\n left: 16,\n maxWidth: '60px',\n top: '50%',\n transform: 'translateY(-50%)',\n },\n}));\n\nfunction BlankContent({\n disabled,\n choice,\n isOver,\n isDragging,\n dragItem,\n correct,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n}) {\n const rootRef = useRef(null);\n const spanRef = useRef(null);\n const frozenRef = useRef(null); // to use during dragging to prevent flickering\n const measuringRef = useRef(false); // guard against ResizeObserver feedback loops\n const [dimensions, setDimensions] = useState({ height: 0, width: 0 });\n\n const handleImageLoad = () => {\n updateDimensions();\n };\n\n const handleElements = () => {\n const imageElement = spanRef.current?.querySelector('img');\n if (imageElement) {\n imageElement.onload = handleImageLoad;\n } else {\n setTimeout(() => {\n updateDimensions();\n }, 300);\n }\n };\n\n const getMeasureNode = () => {\n if (!spanRef.current) {\n return null;\n }\n\n const mjx = spanRef.current.querySelector('mjx-container');\n\n if (mjx && spanRef.current.parentElement) {\n return spanRef.current.parentElement;\n }\n\n const img = spanRef.current.querySelector('img');\n\n if (img) {\n // If there's text alongside the image, measure the full span to capture both dimensions\n const hasTextContent = spanRef.current.textContent.trim().length > 0;\n\n return hasTextContent ? spanRef.current : img;\n }\n\n return spanRef.current;\n };\n\n const updateDimensions = () => {\n if (spanRef.current && rootRef.current && !measuringRef.current) {\n measuringRef.current = true;\n // Temporarily set rootRef width to 'auto' for natural measurement\n rootRef.current.style.width = 'auto';\n rootRef.current.style.height = 'auto';\n rootRef.current.offsetHeight;\n\n const measureNode = getMeasureNode();\n const node = measureNode || spanRef.current;\n const rect = node.getBoundingClientRect();\n const width = node.offsetWidth || rect.width || 0;\n const height = Math.max(\n node.offsetHeight || 0,\n rect.height || 0,\n node.scrollHeight || 0,\n spanRef.current.scrollHeight || 0,\n );\n\n const PADDING = 12;\n const BORDER_WIDTH = 2;\n const ADDITIONAL_SPACE = 1;\n // padding and border on each side\n const widthWithPadding = width + 2 * PADDING + 2 * BORDER_WIDTH + ADDITIONAL_SPACE;\n // padding and border on top and bottom\n const heightWithPadding = height + 2 * PADDING + 2 * BORDER_WIDTH + ADDITIONAL_SPACE;\n\n const responseAreaWidth = parseFloat(emptyResponseAreaWidth) || 0;\n const responseAreaHeight = parseFloat(emptyResponseAreaHeight) || 0;\n\n const adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;\n const adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;\n\n setDimensions((prevState) => ({\n width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,\n height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height,\n }));\n\n const nextWidth = `${adjustedWidth}px`;\n const nextHeight = `${adjustedHeight}px`;\n if (rootRef.current.style.width !== nextWidth) {\n rootRef.current.style.width = nextWidth;\n }\n if (rootRef.current.style.height !== nextHeight) {\n rootRef.current.style.height = nextHeight;\n }\n measuringRef.current = false;\n }\n };\n\n const getRootDimensions = () => {\n // Handle potential non-numeric values\n const responseAreaWidth = !isNaN(parseFloat(emptyResponseAreaWidth)) ? parseFloat(emptyResponseAreaWidth) : 0;\n const responseAreaHeight = !isNaN(parseFloat(emptyResponseAreaHeight)) ? parseFloat(emptyResponseAreaHeight) : 0;\n\n const rootStyle = {\n height: dimensions.height || responseAreaHeight,\n width: dimensions.width || responseAreaWidth,\n };\n\n // add minWidth, minHeight if width and height are not defined\n return {\n ...rootStyle,\n ...(responseAreaWidth ? {} : { minWidth: 90 }),\n ...(responseAreaHeight ? {} : { minHeight: 32 }),\n };\n };\n\n useEffect(() => {\n handleElements();\n }, []);\n\n // Re-measure when the element first becomes visible — covers the tabbed-view case\n // where the initial measurement happened while the tab was hidden (size 0).\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined' || !rootRef.current) return undefined;\n const io = new IntersectionObserver(\n (entries) => {\n if (entries.some((e) => e.isIntersecting)) updateDimensions();\n },\n { threshold: 0 },\n );\n io.observe(rootRef.current);\n return () => io.disconnect();\n }, []);\n\n // Render math for the placeholder/preview when dragging over\n useEffect(() => {\n if (rootRef.current) {\n renderMath(rootRef.current);\n }\n }, [correct, isOver, dragItem?.choice?.value]);\n\n useEffect(() => {\n if (!choice) {\n setDimensions({ height: 0, width: 0 });\n return;\n }\n handleElements();\n }, [choice?.value]);\n\n useEffect(() => {\n if (!isOver && !isDragging) {\n frozenRef.current = {\n width: rootRef.current.offsetWidth,\n height: rootRef.current.offsetHeight,\n };\n }\n }, [choice, isOver, isDragging]);\n\n const draggedLabel = dragItem && isOver && dragItem.choice && dragItem.choice.value;\n const label = choice && choice.value;\n const style =\n isOver || isDragging\n ? {\n width: frozenRef.current?.width,\n height: frozenRef.current?.height,\n }\n : getRootDimensions();\n\n return (\n <StyledChip\n clickable={false}\n disabled={disabled}\n ref={rootRef}\n component=\"span\"\n label={\n <React.Fragment>\n <StyledChipLabel\n ref={spanRef}\n draggable={true}\n className={classnames({\n over: isOver,\n hidden: draggedLabel,\n })}\n dangerouslySetInnerHTML={{ __html: label || '' }}\n />\n {draggedLabel && (\n <StyledChipLabel\n draggable={true}\n className={classnames({\n over: isOver,\n dragged: true,\n })}\n dangerouslySetInnerHTML={{ __html: draggedLabel || '' }}\n />\n )}\n </React.Fragment>\n }\n className={classnames({\n over: isOver,\n parentOver: isOver,\n correct: correct !== undefined && correct,\n incorrect: correct !== undefined && !correct,\n })}\n variant={disabled ? 'outlined' : undefined}\n style={style}\n />\n );\n}\n\nBlankContent.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nBlankContent.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n isOver: PropTypes.bool,\n dragItem: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n instanceId: PropTypes.string,\n};\n\n// New functional component using @dnd-kit hooks\nfunction DragDropBlank({\n id,\n disabled,\n duplicates,\n choice,\n correct,\n onChange,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n instanceId,\n}) {\n // Setup draggable functionality\n const {\n attributes: dragAttributes,\n listeners: dragListeners,\n setNodeRef: setDragNodeRef,\n transform,\n isDragging,\n } = useDraggable({\n id: `mask-blank-drag-${id}`,\n disabled: disabled || !choice,\n data: {\n id: id,\n choice: choice,\n instanceId: instanceId,\n fromChoice: false, // This is from a blank, not from choices\n type: 'MaskBlank',\n },\n });\n\n // Setup droppable functionality\n const {\n setNodeRef: setDropNodeRef,\n isOver,\n active: dragItem,\n } = useDroppable({\n id: `mask-blank-drop-${id}`,\n data: {\n id: id,\n accepts: ['MaskBlank'],\n instanceId: instanceId,\n },\n });\n\n // Combine refs for both drag and drop\n const setNodeRef = (node) => {\n setDragNodeRef(node);\n setDropNodeRef(node);\n };\n\n const style = {\n transform: CSS.Translate.toString(transform),\n };\n\n return (\n <StyledContent\n ref={setNodeRef}\n style={style}\n dragged={isDragging}\n over={isOver}\n {...dragAttributes}\n {...dragListeners}\n >\n <BlankContent\n id={id}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n isOver={isOver}\n dragItem={dragItem?.data?.current}\n correct={correct}\n onChange={onChange}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n instanceId={instanceId}\n />\n </StyledContent>\n );\n}\n\nDragDropBlank.defaultProps = {\n emptyResponseAreaWidth: 0,\n emptyResponseAreaHeight: 0,\n};\n\nDragDropBlank.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choice: PropTypes.object,\n correct: PropTypes.bool,\n onChange: PropTypes.func,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n instanceId: PropTypes.string,\n};\n\nexport default DragDropBlank;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/mask-markup",
3
- "version": "3.0.12",
3
+ "version": "3.0.14-next.12+fb8ae2fcd",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -13,10 +13,10 @@
13
13
  "@emotion/styled": "^11.14.1",
14
14
  "@mui/icons-material": "^7.3.4",
15
15
  "@mui/material": "^7.3.4",
16
- "@pie-lib/drag": "^4.0.6",
17
- "@pie-lib/editable-html-tip-tap": "^2.1.10",
18
- "@pie-lib/math-rendering": "^5.1.0",
19
- "@pie-lib/render-ui": "^6.1.3",
16
+ "@pie-lib/drag": "^4.0.7-next.35+fb8ae2fcd",
17
+ "@pie-lib/editable-html-tip-tap": "^2.1.12-next.12+fb8ae2fcd",
18
+ "@pie-lib/math-rendering": "^5.1.1-next.35+fb8ae2fcd",
19
+ "@pie-lib/render-ui": "^6.1.4-next.35+fb8ae2fcd",
20
20
  "classnames": "^2.2.6",
21
21
  "debug": "^4.1.1",
22
22
  "lodash-es": "^4.17.23",
@@ -28,5 +28,5 @@
28
28
  "keywords": [],
29
29
  "author": "",
30
30
  "license": "ISC",
31
- "gitHead": "71d88b032a54ee9ffca51add8c0341a9e1ef780f"
31
+ "gitHead": "fb8ae2fcdb9b694e4d9db31209e59f280e63fab4"
32
32
  }
@@ -4,6 +4,21 @@ import Choice from '../choice';
4
4
  import { choice } from '../../__tests__/utils';
5
5
  import Choices from '../index';
6
6
 
7
+ // Collect the CSS rules emotion/MUI injected into the document (jsdom uses insertRule).
8
+ const collectEmotionRules = () => {
9
+ const rules = [];
10
+ for (const sheet of Array.from(document.styleSheets)) {
11
+ try {
12
+ for (const rule of Array.from(sheet.cssRules)) {
13
+ rules.push(rule.cssText);
14
+ }
15
+ } catch (e) {
16
+ /* inaccessible stylesheet */
17
+ }
18
+ }
19
+ return rules;
20
+ };
21
+
7
22
  // Mock @dnd-kit hooks to avoid DndContext requirement
8
23
  jest.mock('@dnd-kit/core', () => ({
9
24
  useDraggable: jest.fn(() => ({
@@ -71,5 +86,24 @@ describe('index', () => {
71
86
  expect(container.firstChild).toBeInTheDocument();
72
87
  });
73
88
  });
89
+
90
+ describe('fraction math styling', () => {
91
+ it('enlarges numerator/denominator digits adjacent to a fraction to 120%', () => {
92
+ render(<Choice {...defaultProps} />);
93
+ // The new rule targets mjx-mn digits that sit next to an mjx-mfrac.
94
+ const rule = collectEmotionRules().find((r) => r.includes('mjx-mn') && r.includes('mjx-mfrac'));
95
+ expect(rule).toBeDefined();
96
+ expect(rule).toMatch(/mjx-mn:has\(~\s*mjx-mfrac\)/);
97
+ expect(rule).toMatch(/mjx-mfrac\s*~\s*mjx-mn/);
98
+ expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
99
+ });
100
+
101
+ it('keeps the existing mjx-frac 120% rule', () => {
102
+ render(<Choice {...defaultProps} />);
103
+ const rule = collectEmotionRules().find((r) => /(^|[^-])mjx-frac/.test(r) && !r.includes('mjx-mfrac'));
104
+ expect(rule).toBeDefined();
105
+ expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
106
+ });
107
+ });
74
108
  });
75
109
  });
@@ -50,6 +50,9 @@ const StyledChipLabel = styled('span')(() => ({
50
50
  '& mjx-frac': {
51
51
  fontSize: '120% !important',
52
52
  },
53
+ '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {
54
+ fontSize: '120% !important',
55
+ },
53
56
  }));
54
57
 
55
58
  export default function Choice({ choice, disabled, instanceId }) {
@@ -71,8 +74,8 @@ export default function Choice({ choice, disabled, instanceId }) {
71
74
  style={
72
75
  isDragging
73
76
  ? {
74
- width: rootRef.current?.offsetWidth || 90, // min-width of chip is 90px, so if we don't have the width, we can use 90px as a fallback
75
- height: rootRef.current?.offsetHeight || 32, // min-height of chip is 32px, so if we don't have the height, we can use 32px as a fallback
77
+ width: rootRef.current?.offsetWidth || 90, // min-width of chip is 90px, so if we don't have the width, we can use 90px as a fallback
78
+ height: rootRef.current?.offsetHeight || 32, // min-height of chip is 32px, so if we don't have the height, we can use 32px as a fallback
76
79
  }
77
80
  : {}
78
81
  }
@@ -30,6 +30,21 @@ jest.mock('@pie-lib/math-rendering', () => ({
30
30
  renderMath: jest.fn(),
31
31
  }));
32
32
 
33
+ // Collect the CSS rules emotion/MUI injected into the document (jsdom uses insertRule).
34
+ const collectEmotionRules = () => {
35
+ const rules = [];
36
+ for (const sheet of Array.from(document.styleSheets)) {
37
+ try {
38
+ for (const rule of Array.from(sheet.cssRules)) {
39
+ rules.push(rule.cssText);
40
+ }
41
+ } catch (e) {
42
+ /* inaccessible stylesheet */
43
+ }
44
+ }
45
+ return rules;
46
+ };
47
+
33
48
  describe('Blank', () => {
34
49
  const { renderMath } = require('@pie-lib/math-rendering');
35
50
  const onChange = jest.fn();
@@ -184,6 +199,24 @@ describe('Blank', () => {
184
199
  });
185
200
  });
186
201
 
202
+ describe('fraction math styling', () => {
203
+ it('enlarges numerator/denominator digits adjacent to a fraction to 120%', () => {
204
+ render(<Blank {...defaultProps} />);
205
+ const rule = collectEmotionRules().find((r) => r.includes('mjx-mn') && r.includes('mjx-mfrac'));
206
+ expect(rule).toBeDefined();
207
+ expect(rule).toMatch(/mjx-mn:has\(~\s*mjx-mfrac\)/);
208
+ expect(rule).toMatch(/mjx-mfrac\s*~\s*mjx-mn/);
209
+ expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
210
+ });
211
+
212
+ it('keeps the existing mjx-frac 120% rule', () => {
213
+ render(<Blank {...defaultProps} />);
214
+ const rule = collectEmotionRules().find((r) => /(^|[^-])mjx-frac/.test(r) && !r.includes('mjx-mfrac'));
215
+ expect(rule).toBeDefined();
216
+ expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
217
+ });
218
+ });
219
+
187
220
  describe('drag and drop', () => {
188
221
  it('accepts drag item when not disabled', () => {
189
222
  render(<Blank {...defaultProps} isOver={true} dragItem={{ choice: { value: 'Dog' } }} />);
@@ -76,6 +76,9 @@ const StyledChipLabel = styled('span')(() => ({
76
76
  '& mjx-frac': {
77
77
  fontSize: '120% !important',
78
78
  },
79
+ '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {
80
+ fontSize: '120% !important',
81
+ },
79
82
  '&.over': {
80
83
  whiteSpace: 'nowrap',
81
84
  overflow: 'hidden',
@@ -125,11 +128,25 @@ function BlankContent({
125
128
  };
126
129
 
127
130
  const getMeasureNode = () => {
128
- if (!spanRef.current) return null;
131
+ if (!spanRef.current) {
132
+ return null;
133
+ }
134
+
129
135
  const mjx = spanRef.current.querySelector('mjx-container');
130
- if (mjx && spanRef.current.parentElement) return spanRef.current.parentElement;
136
+
137
+ if (mjx && spanRef.current.parentElement) {
138
+ return spanRef.current.parentElement;
139
+ }
140
+
131
141
  const img = spanRef.current.querySelector('img');
132
- if (img) return img;
142
+
143
+ if (img) {
144
+ // If there's text alongside the image, measure the full span to capture both dimensions
145
+ const hasTextContent = spanRef.current.textContent.trim().length > 0;
146
+
147
+ return hasTextContent ? spanRef.current : img;
148
+ }
149
+
133
150
  return spanRef.current;
134
151
  };
135
152
 
@@ -166,7 +183,6 @@ function BlankContent({
166
183
  const adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;
167
184
  const adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;
168
185
 
169
-
170
186
  setDimensions((prevState) => ({
171
187
  width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,
172
188
  height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height,