@pie-lib/mask-markup 3.1.5 → 3.1.6-beta.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +0 -105
  2. package/lib/choices/choice.js +6 -24
  3. package/lib/choices/choice.js.map +1 -1
  4. package/lib/choices/index.js +9 -32
  5. package/lib/choices/index.js.map +1 -1
  6. package/lib/components/blank.js +29 -106
  7. package/lib/components/blank.js.map +1 -1
  8. package/lib/components/dropdown.js +9 -6
  9. package/lib/components/dropdown.js.map +1 -1
  10. package/lib/drag-in-the-blank.js +30 -139
  11. package/lib/drag-in-the-blank.js.map +1 -1
  12. package/lib/keyboard-coordinates.js +1 -1
  13. package/lib/mask.js +15 -20
  14. package/lib/mask.js.map +1 -1
  15. package/package.json +6 -6
  16. package/src/choices/choice.jsx +3 -16
  17. package/src/choices/index.jsx +3 -27
  18. package/src/components/blank.jsx +35 -108
  19. package/src/components/dropdown.jsx +9 -7
  20. package/src/drag-in-the-blank.jsx +22 -132
  21. package/src/mask.jsx +11 -13
  22. package/LICENSE.md +0 -5
  23. package/lib/keyboard-coordinates.js.map +0 -1
  24. package/src/__tests__/drag-in-the-blank.test.js +0 -256
  25. package/src/__tests__/index.test.js +0 -38
  26. package/src/__tests__/keyboard-coordinates.test.js +0 -202
  27. package/src/__tests__/mask.test.js +0 -479
  28. package/src/__tests__/serialization.test.js +0 -54
  29. package/src/__tests__/utils.js +0 -1
  30. package/src/__tests__/with-mask.test.js +0 -76
  31. package/src/choices/__tests__/index.test.js +0 -212
  32. package/src/components/__tests__/blank.test.js +0 -413
  33. package/src/components/__tests__/correct-input.test.js +0 -90
  34. package/src/components/__tests__/dropdown.test.js +0 -129
  35. package/src/components/__tests__/input.test.js +0 -102
  36. package/src/keyboard-coordinates.js +0 -147
package/CHANGELOG.md CHANGED
@@ -3,111 +3,6 @@
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.1.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.1.4...@pie-lib/mask-markup@3.1.5) (2026-09-22)
7
-
8
- **Note:** Version bump only for package @pie-lib/mask-markup
9
-
10
- ## [3.1.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.1.3...@pie-lib/mask-markup@3.1.4) (2026-09-16)
11
-
12
- **Note:** Version bump only for package @pie-lib/mask-markup
13
-
14
- ## [3.1.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.1.2...@pie-lib/mask-markup@3.1.3) (2026-09-09)
15
-
16
- ### Bug Fixes
17
-
18
- - **mask-markup:** prevent transparent dropdown background PIE-1008 ([225b527](https://github.com/pie-framework/pie-lib/commit/225b5277ebb391b8ca6ccd469d7f06bcc59c2d76))
19
-
20
- ## [3.1.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.1.1...@pie-lib/mask-markup@3.1.2) (2026-09-03)
21
-
22
- **Note:** Version bump only for package @pie-lib/mask-markup
23
-
24
- ## [3.1.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.1.0...@pie-lib/mask-markup@3.1.1) (2026-09-02)
25
-
26
- **Note:** Version bump only for package @pie-lib/mask-markup
27
-
28
- # [3.1.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.17...@pie-lib/mask-markup@3.1.0) (2026-08-26)
29
-
30
- ### Bug Fixes
31
-
32
- - **mask-markup:** scope dropdown menu to Paper slot PIE-853 ([c714042](https://github.com/pie-framework/pie-lib/commit/c714042b9c41dc72103fcc9b2a54cf8fe0365555))
33
-
34
- ### Features
35
-
36
- - **mask-markup:** add additional keyboard navigation (Tab/Shift+Tab placement) PIE-803 and click-to-select/click-to-place functionality PIE-796 for drag-in-the-blank ([e30b166](https://github.com/pie-framework/pie-lib/commit/e30b1667f0cee547ecbd0dcd1d02a969d98afeb4))
37
-
38
- ## [3.0.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.16...@pie-lib/mask-markup@3.0.17) (2026-08-22)
39
-
40
- ### Bug Fixes
41
-
42
- - made sure template field renders all marks [PIE-518] ([ad97d4f](https://github.com/pie-framework/pie-lib/commit/ad97d4ff98821544ca944741643601eeaefbffc5))
43
-
44
- ## [3.0.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.15...@pie-lib/mask-markup@3.0.16) (2026-08-21)
45
-
46
- **Note:** Version bump only for package @pie-lib/mask-markup
47
-
48
- ## [3.0.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.14...@pie-lib/mask-markup@3.0.15) (2026-08-18)
49
-
50
- **Note:** Version bump only for package @pie-lib/mask-markup
51
-
52
- ## [3.0.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.13...@pie-lib/mask-markup@3.0.14) (2026-08-13)
53
-
54
- **Note:** Version bump only for package @pie-lib/mask-markup
55
-
56
- ## [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)
57
-
58
- ### Bug Fixes
59
-
60
- - 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))
61
- - **mask-markup:** handle measurment of choices with text and images PIE-679 ([48d9d69](https://github.com/pie-framework/pie-lib/commit/48d9d693ca2fceed6a6213106dbc541e4f29d01d))
62
-
63
- ## [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)
64
-
65
- ### Bug Fixes
66
-
67
- - **mask-markup:** update width and height calculations to include padding and border adjustments PIE-679 ([7142a76](https://github.com/pie-framework/pie-lib/commit/7142a7629da6db7fea621809a38d2cb280bc063f))
68
-
69
- ## [3.0.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.10...@pie-lib/mask-markup@3.0.11) (2026-07-01)
70
-
71
- **Note:** Version bump only for package @pie-lib/mask-markup
72
-
73
- ## [3.0.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.9...@pie-lib/mask-markup@3.0.10) (2026-06-25)
74
-
75
- ### Bug Fixes
76
-
77
- - **blank:** prevent ResizeObserver feedback loops and re-measure dimensions on visibility ([009cf1d](https://github.com/pie-framework/pie-lib/commit/009cf1d56af3f5f436d2f09b33e4d6d0bfad8609))
78
-
79
- ## [3.0.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.8...@pie-lib/mask-markup@3.0.9) (2026-06-19)
80
-
81
- ### Bug Fixes
82
-
83
- - **mask-markup/choice:** add fallback dimensions for dragging state in Choice component PIE-693 ([87b7782](https://github.com/pie-framework/pie-lib/commit/87b77824785bf7485b1b3e986749fc877224d154))
84
-
85
- ## [3.0.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.7...@pie-lib/mask-markup@3.0.8) (2026-06-17)
86
-
87
- **Note:** Version bump only for package @pie-lib/mask-markup
88
-
89
- ## [3.0.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.6...@pie-lib/mask-markup@3.0.7) (2026-06-12)
90
-
91
- ### Bug Fixes
92
-
93
- - correct @emotion/style typo to @emotion/styled in package deps PIE-678 ([d529ac7](https://github.com/pie-framework/pie-lib/commit/d529ac7bc3dfa94d8037688452d4c70c66f2590b))
94
-
95
- ## [3.0.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.5...@pie-lib/mask-markup@3.0.6) (2026-06-03)
96
-
97
- ### Bug Fixes
98
-
99
- - render math when the correct value changes [PIE-600] ([38a0024](https://github.com/pie-framework/pie-lib/commit/38a002426ae495e98c2fd1355f7cb83069a7dcdc))
100
-
101
- ## [3.0.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.4...@pie-lib/mask-markup@3.0.5) (2026-06-01)
102
-
103
- ### Bug Fixes
104
-
105
- - made sure selected item in dropdown is focused first when the menu is opened [PIE-438] ([a1cdc68](https://github.com/pie-framework/pie-lib/commit/a1cdc686deec2991e543393b17b98181b074d324))
106
-
107
- ## [3.0.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.3...@pie-lib/mask-markup@3.0.4) (2026-05-21)
108
-
109
- **Note:** Version bump only for package @pie-lib/mask-markup
110
-
111
6
  ## [3.0.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/mask-markup@3.0.2...@pie-lib/mask-markup@3.0.3) (2026-05-15)
112
7
 
113
8
  ### Bug Fixes
@@ -22,14 +22,13 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
22
22
  var DRAG_TYPE = exports.DRAG_TYPE = 'MaskBlank';
23
23
  var StyledChoice = (0, _styles.styled)('span')(function (_ref) {
24
24
  var theme = _ref.theme,
25
- disabled = _ref.disabled,
26
- selected = _ref.selected;
25
+ disabled = _ref.disabled;
27
26
  return _objectSpread({
28
27
  border: "solid 0px ".concat(theme.palette.primary.main),
28
+ borderRadius: theme.spacing(2),
29
29
  margin: theme.spacing(0.5),
30
30
  transform: 'translate(0, 0)',
31
- display: 'inline-flex',
32
- opacity: selected ? 0.7 : 1
31
+ display: 'inline-flex'
33
32
  }, disabled && {});
34
33
  });
35
34
  var StyledChip = (0, _styles.styled)(_Chip["default"])(function () {
@@ -75,9 +74,7 @@ function Choice(_ref2) {
75
74
  var _rootRef$current, _rootRef$current2;
76
75
  var choice = _ref2.choice,
77
76
  disabled = _ref2.disabled,
78
- instanceId = _ref2.instanceId,
79
- selectedItem = _ref2.selectedItem,
80
- onSelectClick = _ref2.onSelectClick;
77
+ instanceId = _ref2.instanceId;
81
78
  var rootRef = (0, _react.useRef)(null);
82
79
  var _useDraggable = (0, _core.useDraggable)({
83
80
  id: "choice-".concat(choice.id),
@@ -96,17 +93,6 @@ function Choice(_ref2) {
96
93
  (0, _react.useEffect)(function () {
97
94
  (0, _mathRendering.renderMath)(rootRef.current);
98
95
  }, [choice.value]);
99
- var isSelected = !!selectedItem && selectedItem.fromChoice === true && selectedItem.choice.id === choice.id;
100
- var handleClick = function handleClick(e) {
101
- if (disabled) return;
102
- e.stopPropagation();
103
- onSelectClick === null || onSelectClick === void 0 || onSelectClick({
104
- choice: choice,
105
- instanceId: instanceId,
106
- fromChoice: true,
107
- type: DRAG_TYPE
108
- });
109
- };
110
96
  return /*#__PURE__*/_react["default"].createElement(StyledChoice, (0, _extends2["default"])({
111
97
  ref: setNodeRef,
112
98
  style: isDragging ? {
@@ -114,9 +100,7 @@ function Choice(_ref2) {
114
100
  // min-width of chip is 90px, so if we don't have the width, we can use 90px as a fallback
115
101
  height: ((_rootRef$current2 = rootRef.current) === null || _rootRef$current2 === void 0 ? void 0 : _rootRef$current2.offsetHeight) || 32 // min-height of chip is 32px, so if we don't have the height, we can use 32px as a fallback
116
102
  } : {},
117
- disabled: disabled,
118
- selected: isSelected,
119
- onClick: handleClick
103
+ disabled: disabled
120
104
  }, listeners, attributes), /*#__PURE__*/_react["default"].createElement(StyledChip, {
121
105
  clickable: false,
122
106
  disabled: disabled,
@@ -131,8 +115,6 @@ function Choice(_ref2) {
131
115
  Choice.propTypes = {
132
116
  choice: _propTypes["default"].object.isRequired,
133
117
  disabled: _propTypes["default"].bool,
134
- instanceId: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
135
- selectedItem: _propTypes["default"].object,
136
- onSelectClick: _propTypes["default"].func
118
+ instanceId: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
137
119
  };
138
120
  //# sourceMappingURL=choice.js.map
@@ -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","selected","border","concat","palette","primary","main","margin","spacing","transform","display","opacity","StyledChip","Chip","backgroundColor","color","white","text","alignItems","height","minHeight","fontSize","whiteSpace","maxWidth","pointerEvents","borderRadius","paddingTop","paddingBottom","StyledChipLabel","padding","Choice","_ref2","_rootRef$current","_rootRef$current2","choice","instanceId","selectedItem","onSelectClick","rootRef","useRef","_useDraggable","useDraggable","id","data","fromChoice","type","attributes","listeners","setNodeRef","isDragging","useEffect","renderMath","current","value","isSelected","handleClick","stopPropagation","createElement","_extends2","ref","style","width","offsetWidth","offsetHeight","onClick","clickable","label","dangerouslySetInnerHTML","__html","propTypes","PropTypes","object","isRequired","bool","oneOfType","string","number","func"],"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, selected }) => ({\n border: `solid 0px ${theme.palette.primary.main}`,\n margin: theme.spacing(0.5),\n transform: 'translate(0, 0)',\n display: 'inline-flex',\n opacity: selected ? 0.7 : 1,\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, selectedItem, onSelectClick }) {\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 const isSelected = !!selectedItem && selectedItem.fromChoice === true && selectedItem.choice.id === choice.id;\n\n const handleClick = (e) => {\n if (disabled) return;\n\n e.stopPropagation();\n onSelectClick?.({ choice, instanceId, fromChoice: true, type: DRAG_TYPE });\n };\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 selected={isSelected}\n onClick={handleClick}\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 selectedItem: PropTypes.object,\n onSelectClick: PropTypes.func,\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":[]}
@@ -49,34 +49,18 @@ var Choices = exports["default"] = /*#__PURE__*/function (_React$Component) {
49
49
  };
50
50
  }
51
51
  });
52
- (0, _defineProperty2["default"])(_this, "handlePoolClick", function () {
53
- var _this$props = _this.props,
54
- disabled = _this$props.disabled,
55
- selectedItem = _this$props.selectedItem,
56
- onPlacementClick = _this$props.onPlacementClick;
57
- if (disabled) return;
58
- if (selectedItem) {
59
- // `undefined` targetId means "the choice board" — drag-in-the-blank.jsx's
60
- // commitPlacement routes it to removing the item from wherever it currently is.
61
- onPlacementClick === null || onPlacementClick === void 0 || onPlacementClick(undefined);
62
- }
63
-
64
- // Pool background clicked with nothing selected: nothing to place.
65
- });
66
52
  return _this;
67
53
  }
68
54
  (0, _inherits2["default"])(Choices, _React$Component);
69
55
  return (0, _createClass2["default"])(Choices, [{
70
56
  key: "render",
71
57
  value: function render() {
72
- var _this$props2 = this.props,
73
- disabled = _this$props2.disabled,
74
- duplicates = _this$props2.duplicates,
75
- choices = _this$props2.choices,
76
- value = _this$props2.value,
77
- instanceId = _this$props2.instanceId,
78
- selectedItem = _this$props2.selectedItem,
79
- onSelectClick = _this$props2.onSelectClick;
58
+ var _this$props = this.props,
59
+ disabled = _this$props.disabled,
60
+ duplicates = _this$props.duplicates,
61
+ choices = _this$props.choices,
62
+ value = _this$props.value,
63
+ instanceId = _this$props.instanceId;
80
64
  var filteredChoices = choices.filter(function (c) {
81
65
  if (duplicates === true) {
82
66
  return true;
@@ -90,8 +74,7 @@ var Choices = exports["default"] = /*#__PURE__*/function (_React$Component) {
90
74
  minWidth: '100px'
91
75
  });
92
76
  return /*#__PURE__*/_react["default"].createElement("div", {
93
- style: elementStyle,
94
- onClick: this.handlePoolClick
77
+ style: elementStyle
95
78
  }, /*#__PURE__*/_react["default"].createElement(_drag.DragDroppablePlaceholder, {
96
79
  disabled: disabled,
97
80
  instanceId: instanceId
@@ -100,9 +83,7 @@ var Choices = exports["default"] = /*#__PURE__*/function (_React$Component) {
100
83
  key: "".concat(c.value, "-").concat(index),
101
84
  disabled: disabled,
102
85
  choice: c,
103
- instanceId: instanceId,
104
- selectedItem: selectedItem,
105
- onSelectClick: onSelectClick
86
+ instanceId: instanceId
106
87
  });
107
88
  })));
108
89
  }
@@ -117,10 +98,6 @@ var Choices = exports["default"] = /*#__PURE__*/function (_React$Component) {
117
98
  })),
118
99
  value: _propTypes["default"].object,
119
100
  choicePosition: _propTypes["default"].string.isRequired,
120
- instanceId: _propTypes["default"].string,
121
- // Added for drag isolation
122
- selectedItem: _propTypes["default"].object,
123
- onSelectClick: _propTypes["default"].func,
124
- onPlacementClick: _propTypes["default"].func
101
+ instanceId: _propTypes["default"].string // Added for drag isolation
125
102
  });
126
103
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_choice","_drag","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Choices","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","choicePosition","props","margin","_this$props","disabled","selectedItem","onPlacementClick","undefined","_inherits2","_createClass2","key","value","render","_this$props2","duplicates","choices","instanceId","onSelectClick","filteredChoices","c","foundChoice","findKey","v","id","elementStyle","getStyleForWrapper","minWidth","createElement","style","onClick","handlePoolClick","DragDroppablePlaceholder","map","index","choice","React","Component","PropTypes","bool","arrayOf","shape","label","string","object","isRequired","func"],"sources":["../../src/choices/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { findKey } from 'lodash-es';\nimport Choice from './choice';\nimport { DragDroppablePlaceholder } from '@pie-lib/drag';\n\nexport default class Choices extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n choicePosition: PropTypes.string.isRequired,\n instanceId: PropTypes.string, // Added for drag isolation\n selectedItem: PropTypes.object,\n onSelectClick: PropTypes.func,\n onPlacementClick: PropTypes.func,\n };\n\n getStyleForWrapper = () => {\n const { choicePosition } = this.props;\n\n switch (choicePosition) {\n case 'above':\n return {\n margin: '0 0 40px 0',\n };\n\n case 'below':\n return {\n margin: '40px 0 0 0',\n };\n\n case 'right':\n return {\n margin: '0 0 0 40px',\n };\n\n default:\n return {\n margin: '0 40px 0 0',\n };\n }\n };\n\n handlePoolClick = () => {\n const { disabled, selectedItem, onPlacementClick } = this.props;\n\n if (disabled) return;\n\n if (selectedItem) {\n // `undefined` targetId means \"the choice board\" — drag-in-the-blank.jsx's\n // commitPlacement routes it to removing the item from wherever it currently is.\n onPlacementClick?.(undefined);\n }\n\n // Pool background clicked with nothing selected: nothing to place.\n };\n\n render() {\n const { disabled, duplicates, choices, value, instanceId, selectedItem, onSelectClick } = this.props;\n const filteredChoices = choices.filter((c) => {\n if (duplicates === true) {\n return true;\n }\n const foundChoice = findKey(value, (v) => v === c.id);\n return foundChoice === undefined;\n });\n const elementStyle = { ...this.getStyleForWrapper(), minWidth: '100px' };\n\n return (\n <div style={elementStyle} onClick={this.handlePoolClick}>\n <DragDroppablePlaceholder disabled={disabled} instanceId={instanceId}>\n {filteredChoices.map((c, index) => (\n <Choice\n key={`${c.value}-${index}`}\n disabled={disabled}\n choice={c}\n instanceId={instanceId}\n selectedItem={selectedItem}\n onSelectClick={onSelectClick}\n />\n ))}\n </DragDroppablePlaceholder>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_choice","_drag","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Choices","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","choicePosition","props","margin","_inherits2","_createClass2","key","value","render","_this$props","disabled","duplicates","choices","instanceId","filteredChoices","c","foundChoice","findKey","v","id","undefined","elementStyle","getStyleForWrapper","minWidth","createElement","style","DragDroppablePlaceholder","map","index","choice","React","Component","PropTypes","bool","arrayOf","shape","label","string","object","isRequired"],"sources":["../../src/choices/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { findKey } from 'lodash-es';\nimport Choice from './choice';\nimport { DragDroppablePlaceholder } from '@pie-lib/drag';\n\nexport default class Choices extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n duplicates: PropTypes.bool,\n choices: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n value: PropTypes.object,\n choicePosition: PropTypes.string.isRequired,\n instanceId: PropTypes.string, // Added for drag isolation\n };\n\n getStyleForWrapper = () => {\n const { choicePosition } = this.props;\n\n switch (choicePosition) {\n case 'above':\n return {\n margin: '0 0 40px 0',\n };\n\n case 'below':\n return {\n margin: '40px 0 0 0',\n };\n\n case 'right':\n return {\n margin: '0 0 0 40px',\n };\n\n default:\n return {\n margin: '0 40px 0 0',\n };\n }\n };\n\n render() {\n const { disabled, duplicates, choices, value, instanceId } = this.props;\n const filteredChoices = choices.filter((c) => {\n if (duplicates === true) {\n return true;\n }\n const foundChoice = findKey(value, (v) => v === c.id);\n return foundChoice === undefined;\n });\n const elementStyle = { ...this.getStyleForWrapper(), minWidth: '100px' };\n\n return (\n <div style={elementStyle}>\n <DragDroppablePlaceholder disabled={disabled} instanceId={instanceId}>\n {filteredChoices.map((c, index) => (\n <Choice key={`${c.value}-${index}`} disabled={disabled} choice={c} instanceId={instanceId} />\n ))}\n </DragDroppablePlaceholder>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
14
14
  var _mathRendering = require("@pie-lib/math-rendering");
15
15
  var _debug = _interopRequireDefault(require("debug"));
16
16
  var _core = require("@dnd-kit/core");
17
+ var _utilities = require("@dnd-kit/utilities");
17
18
  var _styles = require("@mui/material/styles");
18
19
  var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
19
20
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -25,31 +26,21 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
25
26
  var log = (0, _debug["default"])('pie-lib:mask-markup:blank');
26
27
  var StyledContent = (0, _styles.styled)('span')(function (_ref) {
27
28
  var dragged = _ref.dragged,
28
- over = _ref.over,
29
- selected = _ref.selected,
30
- showsPointerCursor = _ref.showsPointerCursor;
31
- return _objectSpread(_objectSpread(_objectSpread({
29
+ over = _ref.over;
30
+ return _objectSpread(_objectSpread({
32
31
  border: "solid 0px ".concat(_renderUi.color.primary()),
33
32
  minWidth: '200px',
33
+ touchAction: 'none',
34
34
  overflow: 'hidden',
35
35
  whiteSpace: 'nowrap',
36
- opacity: 1,
37
- cursor: 'default'
36
+ opacity: 1
38
37
  }, over && {
39
38
  whiteSpace: 'nowrap',
40
39
  overflow: 'hidden'
41
- }), (dragged || selected) && {
40
+ }), dragged && {
42
41
  opacity: 0.5
43
- }), showsPointerCursor && {
44
- '&:hover': {
45
- cursor: 'pointer'
46
- }
47
42
  });
48
43
  });
49
- var StyledDragHandle = (0, _styles.styled)('span')({
50
- display: 'inline-flex',
51
- touchAction: 'none'
52
- });
53
44
  var StyledChip = (0, _styles.styled)(_Chip["default"])(function () {
54
45
  return {
55
46
  backgroundColor: _renderUi.color.background(),
@@ -342,43 +333,24 @@ function DragDropBlank(_ref3) {
342
333
  onChange = _ref3.onChange,
343
334
  emptyResponseAreaWidth = _ref3.emptyResponseAreaWidth,
344
335
  emptyResponseAreaHeight = _ref3.emptyResponseAreaHeight,
345
- instanceId = _ref3.instanceId,
346
- selectedItem = _ref3.selectedItem,
347
- onSelectClick = _ref3.onSelectClick,
348
- onPlacementClick = _ref3.onPlacementClick;
349
- var _useState3 = (0, _react.useState)(false),
350
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
351
- isHovered = _useState4[0],
352
- setIsHovered = _useState4[1];
353
- var dragData = {
354
- id: id,
355
- choice: choice,
356
- instanceId: instanceId,
357
- fromChoice: false,
358
- // This is from a blank, not from choices
359
- type: 'MaskBlank'
360
- };
361
-
336
+ instanceId = _ref3.instanceId;
362
337
  // Setup draggable functionality
363
338
  var _useDraggable = (0, _core.useDraggable)({
364
339
  id: "mask-blank-drag-".concat(id),
365
340
  disabled: disabled || !choice,
366
- data: dragData,
367
- // dnd-kit's own `attributes` default tabIndex to 0 unconditionally, even when
368
- // `disabled` — so a non-draggable (empty) blank stays a native Tab stop of its own.
369
- // For a drop-zone (droppable blank), that duplicates the outer wrapper's own tab stop
370
- // (see isNativeTabStop below) at the exact same position, so Tab/Shift+Tab has to
371
- // pass through both to move anywhere visibly, making every other press look like a
372
- // no-op. Drop it out of the tab order here whenever it isn't independently
373
- // reachable/interactive, leaving the outer wrapper (for an empty blank) or
374
- // nothing (for a disabled blank) as the sole stop.
375
- attributes: {
376
- tabIndex: choice && !disabled ? 0 : -1
341
+ data: {
342
+ id: id,
343
+ choice: choice,
344
+ instanceId: instanceId,
345
+ fromChoice: false,
346
+ // This is from a blank, not from choices
347
+ type: 'MaskBlank'
377
348
  }
378
349
  }),
379
350
  dragAttributes = _useDraggable.attributes,
380
351
  dragListeners = _useDraggable.listeners,
381
352
  setDragNodeRef = _useDraggable.setNodeRef,
353
+ transform = _useDraggable.transform,
382
354
  isDragging = _useDraggable.isDragging;
383
355
 
384
356
  // Setup droppable functionality
@@ -393,79 +365,33 @@ function DragDropBlank(_ref3) {
393
365
  setDropNodeRef = _useDroppable.setNodeRef,
394
366
  isOver = _useDroppable.isOver,
395
367
  dragItem = _useDroppable.active;
396
- var isSelected = !!selectedItem && selectedItem.fromChoice === false && selectedItem.id === id;
397
- var handleClick = function handleClick() {
398
- if (disabled) return;
399
- if (isSelected) {
400
- // Clicking this blank's already-selected content again deselects it.
401
- onSelectClick === null || onSelectClick === void 0 || onSelectClick(dragData);
402
- } else if (selectedItem) {
403
- // Something else is selected — place it here, whether this blank is currently
404
- // empty or already filled (the same commitPlacement logic drag-and-drop uses).
405
- onPlacementClick === null || onPlacementClick === void 0 || onPlacementClick(id);
406
- } else if (choice) {
407
- // Nothing selected yet, and this blank holds an answer — select it for moving
408
- // elsewhere, the same way Tab+Space/Enter does.
409
- onSelectClick === null || onSelectClick === void 0 || onSelectClick(dragData);
410
- }
411
368
 
412
- // Empty blank clicked with nothing selected: nothing to place or select.
369
+ // Combine refs for both drag and drop
370
+ var setNodeRef = function setNodeRef(node) {
371
+ setDragNodeRef(node);
372
+ setDropNodeRef(node);
413
373
  };
414
-
415
- // An empty blank isn't draggable, so dnd-kit's own attributes (only applied to the
416
- // inner node, and only when draggable) never make it tabbable — this outer wrapper
417
- // needs its own focus/activation handling so "select a choice, then Tab to a blank
418
- // and press Space/Enter" works even when the blank is empty. This is independent of,
419
- // and doesn't change, the existing in-drag Tab-cycling (that's driven by an active
420
- // dnd-kit drag, not native focus).
421
- //
422
- // Only made a native Tab stop when NOT draggable (i.e. empty): when the blank is
423
- // filled, the inner node is already independently tabbable via dnd-kit's own
424
- // attributes for the existing pick-up-to-move gesture, and adding a second, outer Tab
425
- // stop for the same visual chip would add an extra stop to the existing Tab order —
426
- // the same double-tab-stop bug already found and fixed once in match-list/image-
427
- // cloze-association's equivalent code.
428
- var isNativeTabStop = !choice && !disabled;
429
- var isInnerDraggable = !!choice && !disabled;
430
- var handleKeyDown = function handleKeyDown(e) {
431
- if (e.code === 'Space' || e.code === 'Enter') {
432
- e.preventDefault();
433
- handleClick();
434
- }
374
+ var style = {
375
+ transform: _utilities.CSS.Translate.toString(transform)
435
376
  };
436
- var hasSelection = !!selectedItem;
437
- var showsHoverEffect = isOver || hasSelection && isHovered && !disabled;
438
- return /*#__PURE__*/_react["default"].createElement(StyledContent, {
439
- ref: setDropNodeRef,
440
- role: isNativeTabStop ? 'button' : undefined,
441
- tabIndex: isNativeTabStop ? 0 : -1,
442
- onClick: handleClick,
443
- onKeyDown: isNativeTabStop ? handleKeyDown : undefined,
444
- onMouseEnter: function onMouseEnter() {
445
- return setIsHovered(true);
446
- },
447
- onMouseLeave: function onMouseLeave() {
448
- return setIsHovered(false);
449
- },
377
+ return /*#__PURE__*/_react["default"].createElement(StyledContent, (0, _extends2["default"])({
378
+ ref: setNodeRef,
379
+ style: style,
450
380
  dragged: isDragging,
451
- over: showsHoverEffect,
452
- selected: isSelected,
453
- showsPointerCursor: hasSelection && !disabled
454
- }, /*#__PURE__*/_react["default"].createElement(StyledDragHandle, (0, _extends2["default"])({
455
- ref: setDragNodeRef
456
- }, isInnerDraggable ? dragAttributes : {}, dragListeners), /*#__PURE__*/_react["default"].createElement(BlankContent, {
381
+ over: isOver
382
+ }, dragAttributes, dragListeners), /*#__PURE__*/_react["default"].createElement(BlankContent, {
457
383
  id: id,
458
384
  disabled: disabled,
459
385
  duplicates: duplicates,
460
386
  choice: choice,
461
- isOver: showsHoverEffect,
387
+ isOver: isOver,
462
388
  dragItem: dragItem === null || dragItem === void 0 || (_dragItem$data = dragItem.data) === null || _dragItem$data === void 0 ? void 0 : _dragItem$data.current,
463
389
  correct: correct,
464
390
  onChange: onChange,
465
391
  emptyResponseAreaWidth: emptyResponseAreaWidth,
466
392
  emptyResponseAreaHeight: emptyResponseAreaHeight,
467
393
  instanceId: instanceId
468
- })));
394
+ }));
469
395
  }
470
396
  DragDropBlank.defaultProps = {
471
397
  emptyResponseAreaWidth: 0,
@@ -480,10 +406,7 @@ DragDropBlank.propTypes = {
480
406
  onChange: _propTypes["default"].func,
481
407
  emptyResponseAreaWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
482
408
  emptyResponseAreaHeight: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
483
- instanceId: _propTypes["default"].string,
484
- selectedItem: _propTypes["default"].object,
485
- onSelectClick: _propTypes["default"].func,
486
- onPlacementClick: _propTypes["default"].func
409
+ instanceId: _propTypes["default"].string
487
410
  };
488
411
  var _default = exports["default"] = DragDropBlank;
489
412
  //# sourceMappingURL=blank.js.map