@pie-element/placement-ordering 13.0.0-beta.0 → 13.0.0-next.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ordering.js","names":["_cloneDeep","_interopRequireDefault","require","_debug","_isEmpty","_map","_assign","log","debug","push","arr","fromIndex","toIndex","movedItem","find","item","index","remainingItems","filter","slice","exports","swap","length","undefined","Error","update","cloneDeep","tmp","removeResponse","state","targetTile","response","id","updateResponse","from","to","opts","includeTargets","type","findIndex","r","buildTiles","choices","outcomes","targets","i","choice","c","outcome","out","Object","assign","empty","draggable","processedChoices","map","m","indexOf","allowSameChoiceInTargets","droppable","concat","reduce","acc","emptyTile","choiceTile","buildState","isEmpty","Array","tiles","reducer","action","target"],"sources":["../src/ordering.js"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport map from 'lodash/map';\nimport assign from 'lodash/assign';\n\nconst log = debug('pie-elements:placement-ordering:ordering');\n\nexport const push = (arr, fromIndex, toIndex) => {\n const movedItem = arr.find((item, index) => index === fromIndex);\n const remainingItems = arr.filter((item, index) => index !== fromIndex);\n\n return [...remainingItems.slice(0, toIndex), movedItem, ...remainingItems.slice(toIndex)];\n};\n\nexport const swap = (arr, fromIndex, toIndex) => {\n log('[swap]', arr, fromIndex, toIndex);\n if (!arr || arr.length <= 1 || fromIndex === undefined || toIndex === undefined) {\n throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);\n }\n const update = cloneDeep(arr);\n const tmp = arr[toIndex];\n update[toIndex] = update[fromIndex];\n update[fromIndex] = tmp;\n return update;\n};\n\nfunction removeResponse(state, targetTile) {\n const update = cloneDeep(state.response);\n\n if (update[targetTile.index] === targetTile.id) {\n update[targetTile.index] = undefined;\n } else {\n throw new Error(\n `Tried to remove from index: ${targetTile.index}, but the id doesn't match: array: ${update}, target: ${targetTile.id}`,\n );\n }\n return update;\n}\n\nfunction updateResponse(state, from, to) {\n const { response, opts } = state;\n const update = cloneDeep(response);\n if (opts.includeTargets) {\n if (from.type === 'choice' && to.type === 'target') {\n update[to.index] = from.id;\n return update;\n } else if (from.type === 'target' && to.type === 'choice') {\n update[from.index] = undefined;\n return update;\n } else if (from.type === 'target' && to.type === 'target') {\n return swap(response, from.index, to.index);\n } else {\n log('do nothing to the response');\n return response;\n }\n } else {\n const fromIndex = state.response.findIndex((r) => r !== undefined && r === from.id);\n const toIndex = state.response.findIndex((r) => r !== undefined && r === to.id);\n log('fromIndex: ', fromIndex, 'toIndex:', toIndex);\n return push(state.response, fromIndex, toIndex);\n }\n}\n\nfunction buildTiles(choices, response, outcomes, opts) {\n if (opts.includeTargets) {\n const targets = [];\n for (let i = 0; i < response.length; i++) {\n const r = response[i];\n\n const choice = choices.find((c) => r !== undefined && r !== null && c.id === r);\n //TODO: index needs to match too!!\n const outcome = outcomes[i];\n\n const out = Object.assign({ type: 'target', index: i, empty: choice === undefined }, choice, outcome, {\n draggable: choice !== undefined,\n });\n\n targets.push(out);\n }\n\n const processedChoices = choices.map((m) => {\n if (response.indexOf(m.id) !== -1 && !opts.allowSameChoiceInTargets) {\n return {\n type: 'choice',\n empty: true,\n droppable: true,\n draggable: false,\n };\n } else {\n return Object.assign({}, m, {\n type: 'choice',\n droppable: false,\n draggable: true,\n });\n }\n });\n\n return processedChoices.concat(targets);\n } else {\n return response.reduce((acc, id, index) => {\n const emptyTile = Object.assign(\n { type: 'empty', draggable: false, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n const choiceTile = Object.assign(\n { type: 'choice', draggable: true, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n\n if (index === 0) {\n acc.push(emptyTile);\n }\n\n acc.push(choiceTile, emptyTile);\n\n return acc;\n }, []);\n }\n}\n\nexport function buildState(choices, response, outcomes, opts) {\n opts = assign({ includeTargets: true }, opts);\n\n outcomes = outcomes || [];\n response =\n !response || isEmpty(response)\n ? opts.includeTargets\n ? new Array(choices.length)\n : map(choices, (c) => c.id)\n : response;\n return {\n choices,\n response,\n opts,\n outcomes,\n tiles: buildTiles(choices, response, outcomes, opts),\n };\n}\n\nexport function reducer(action, state) {\n switch (action.type) {\n case 'move': {\n const { from, to } = action;\n const response = updateResponse(state, from, to);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n case 'remove': {\n const { target } = action;\n const response = removeResponse(state, target);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n }\n return state;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ordering.js","names":["_lodashEs","require","_debug","_interopRequireDefault","log","debug","push","arr","fromIndex","toIndex","movedItem","find","item","index","remainingItems","filter","slice","exports","swap","length","undefined","Error","update","cloneDeep","tmp","removeResponse","state","targetTile","response","id","updateResponse","from","to","opts","includeTargets","type","findIndex","r","buildTiles","choices","outcomes","targets","i","choice","c","outcome","out","Object","assign","empty","draggable","processedChoices","map","m","indexOf","allowSameChoiceInTargets","droppable","concat","reduce","acc","emptyTile","choiceTile","buildState","isEmpty","Array","tiles","reducer","action","target"],"sources":["../src/ordering.js"],"sourcesContent":["import { assign, cloneDeep, isEmpty, map } from 'lodash-es';\nimport debug from 'debug';\n\nconst log = debug('pie-elements:placement-ordering:ordering');\n\nexport const push = (arr, fromIndex, toIndex) => {\n const movedItem = arr.find((item, index) => index === fromIndex);\n const remainingItems = arr.filter((item, index) => index !== fromIndex);\n\n return [...remainingItems.slice(0, toIndex), movedItem, ...remainingItems.slice(toIndex)];\n};\n\nexport const swap = (arr, fromIndex, toIndex) => {\n log('[swap]', arr, fromIndex, toIndex);\n if (!arr || arr.length <= 1 || fromIndex === undefined || toIndex === undefined) {\n throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);\n }\n const update = cloneDeep(arr);\n const tmp = arr[toIndex];\n update[toIndex] = update[fromIndex];\n update[fromIndex] = tmp;\n return update;\n};\n\nfunction removeResponse(state, targetTile) {\n const update = cloneDeep(state.response);\n\n if (update[targetTile.index] === targetTile.id) {\n update[targetTile.index] = undefined;\n } else {\n throw new Error(\n `Tried to remove from index: ${targetTile.index}, but the id doesn't match: array: ${update}, target: ${targetTile.id}`,\n );\n }\n return update;\n}\n\nfunction updateResponse(state, from, to) {\n const { response, opts } = state;\n const update = cloneDeep(response);\n if (opts.includeTargets) {\n if (from.type === 'choice' && to.type === 'target') {\n update[to.index] = from.id;\n return update;\n } else if (from.type === 'target' && to.type === 'choice') {\n update[from.index] = undefined;\n return update;\n } else if (from.type === 'target' && to.type === 'target') {\n return swap(response, from.index, to.index);\n } else {\n log('do nothing to the response');\n return response;\n }\n } else {\n const fromIndex = state.response.findIndex((r) => r !== undefined && r === from.id);\n const toIndex = state.response.findIndex((r) => r !== undefined && r === to.id);\n log('fromIndex: ', fromIndex, 'toIndex:', toIndex);\n return push(state.response, fromIndex, toIndex);\n }\n}\n\nfunction buildTiles(choices, response, outcomes, opts) {\n if (opts.includeTargets) {\n const targets = [];\n for (let i = 0; i < response.length; i++) {\n const r = response[i];\n\n const choice = choices.find((c) => r !== undefined && r !== null && c.id === r);\n //TODO: index needs to match too!!\n const outcome = outcomes[i];\n\n const out = Object.assign({ type: 'target', index: i, empty: choice === undefined }, choice, outcome, {\n draggable: choice !== undefined,\n });\n\n targets.push(out);\n }\n\n const processedChoices = choices.map((m) => {\n if (response.indexOf(m.id) !== -1 && !opts.allowSameChoiceInTargets) {\n return {\n type: 'choice',\n empty: true,\n droppable: true,\n draggable: false,\n };\n } else {\n return Object.assign({}, m, {\n type: 'choice',\n droppable: false,\n draggable: true,\n });\n }\n });\n\n return processedChoices.concat(targets);\n } else {\n return response.reduce((acc, id, index) => {\n const emptyTile = Object.assign(\n { type: 'empty', draggable: false, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n const choiceTile = Object.assign(\n { type: 'choice', draggable: true, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n\n if (index === 0) {\n acc.push(emptyTile);\n }\n\n acc.push(choiceTile, emptyTile);\n\n return acc;\n }, []);\n }\n}\n\nexport function buildState(choices, response, outcomes, opts) {\n opts = assign({ includeTargets: true }, opts);\n\n outcomes = outcomes || [];\n response =\n !response || isEmpty(response)\n ? opts.includeTargets\n ? new Array(choices.length)\n : map(choices, (c) => c.id)\n : response;\n return {\n choices,\n response,\n opts,\n outcomes,\n tiles: buildTiles(choices, response, outcomes, opts),\n };\n}\n\nexport function reducer(action, state) {\n switch (action.type) {\n case 'move': {\n const { from, to } = action;\n const response = updateResponse(state, from, to);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n case 'remove': {\n const { target } = action;\n const response = removeResponse(state, target);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n }\n return state;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -11,10 +11,9 @@ var _react = _interopRequireDefault(require("react"));
11
11
  var _reactDom = _interopRequireDefault(require("react-dom"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _debug = _interopRequireDefault(require("debug"));
14
- var _uniqueId = _interopRequireDefault(require("lodash/uniqueId"));
15
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
16
- var _difference = _interopRequireDefault(require("lodash/difference"));
14
+ var _lodashEs = require("lodash-es");
17
15
  var _styles = require("@mui/material/styles");
16
+ var _core = require("@dnd-kit/core");
18
17
  var _renderUi = require("@pie-lib/render-ui");
19
18
  var _mathRendering = require("@pie-lib/math-rendering");
20
19
  var _translator = _interopRequireDefault(require("@pie-lib/translator"));
@@ -106,14 +105,14 @@ class PlacementOrdering extends _react.default.Component {
106
105
  value = choicesIds;
107
106
  } else {
108
107
  // in No Targets Mode, all choice ids need to be used
109
- const missingChoiceIds = (0, _difference.default)(choicesIds, value);
108
+ const missingChoiceIds = (0, _lodashEs.difference)(choicesIds, value);
110
109
  // this is the case that handles extra choice ids in session
111
- const extraChoiceIds = (0, _difference.default)(value, choicesIds);
110
+ const extraChoiceIds = (0, _lodashEs.difference)(value, choicesIds);
112
111
  if (missingChoiceIds.length || extraChoiceIds.length) {
113
112
  value = choicesIds;
114
113
  }
115
114
  }
116
- needsReset = !(0, _isEqual.default)(session.value, value);
115
+ needsReset = !(0, _lodashEs.isEqual)(session.value, value);
117
116
  } else {
118
117
  // in Targets Area selected, it's important to check the length of session
119
118
  const sessionIsMismatched = value && value.length !== choicesIds.length;
@@ -220,7 +219,7 @@ class PlacementOrdering extends _react.default.Component {
220
219
  }
221
220
  }
222
221
  });
223
- this.instanceId = (0, _uniqueId.default)();
222
+ this.instanceId = (0, _lodashEs.uniqueId)();
224
223
  const {
225
224
  value: _value,
226
225
  needsReset: _needsReset
@@ -361,7 +360,8 @@ class PlacementOrdering extends _react.default.Component {
361
360
  };
362
361
  return /*#__PURE__*/_react.default.createElement(_drag.DragProvider, {
363
362
  onDragStart: () => {},
364
- onDragEnd: this.onDragEnd
363
+ onDragEnd: this.onDragEnd,
364
+ collisionDetection: _core.closestCenter
365
365
  }, /*#__PURE__*/_react.default.createElement(PlacementOrderingContainer, null, /*#__PURE__*/_react.default.createElement(_renderUi.UiLayout, {
366
366
  extraCSSRules: extraCSSRules,
367
367
  style: containerStyle
@@ -376,7 +376,6 @@ class PlacementOrdering extends _react.default.Component {
376
376
  })), /*#__PURE__*/_react.default.createElement(StyledPrompt, null, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
377
377
  prompt: prompt
378
378
  })), /*#__PURE__*/_react.default.createElement(StyledToggle, {
379
- className: "toggle",
380
379
  show: showToggle,
381
380
  toggled: showingCorrect,
382
381
  onToggle: this.toggleCorrect,
@@ -1 +1 @@
1
- {"version":3,"file":"placement-ordering.js","names":["_react","_interopRequireDefault","require","_reactDom","_propTypes","_debug","_uniqueId","_isEqual","_difference","_styles","_renderUi","_mathRendering","_translator","_correctAnswerToggle","_drag","_tiler","_ordering","_utils","translator","Translator","log","debug","PlacementOrderingContainer","styled","color","text","backgroundColor","background","display","flexDirection","alignItems","boxSizing","StyledPrompt","theme","paddingBottom","spacing","StyledNote","StyledToggle","CorrectAnswerToggle","StyledCollapsible","Collapsible","marginBottom","alignSelf","OrderingTiler","props","tiler","Comp","ordering","onDropChoice","onRemoveChoice","compProps","default","createElement","_extends2","tiles","t","s","propTypes","PropTypes","func","any","PlacementOrdering","React","Component","constructor","_defineProperty2","showingCorrect","setState","model","session","areChoicesShuffled","config","choices","includeTargets","choicesIds","map","c","id","value","needsReset","sessionMissing","length","missingChoiceIds","difference","extraChoiceIds","isEqual","sessionIsMismatched","concat","Array","filter","cId","includes","console","warn","target","source","onSessionChange","from","find","type","to","update","reducer","sessionUpdate","Object","assign","response","state","orientation","buildState","correctResponse","outcome","allowSameChoiceInTargets","outcomes","event","over","active","createOrdering","draggedItem","data","current","droppedOnItem","instanceId","uniqueId","validateSession","env","mode","componentDidUpdate","domNode","ReactDOM","findDOMNode","renderMath","UNSAFE_componentWillReceiveProps","nextProps","nextModel","currentModel","nextChoices","newState","isLanguageChanged","language","isDefaultNote","note","lng","haveSameValuesButDifferentOrder","validatedSession","newSession","includeTargetsChanged","render","correctness","extraCSSRules","prompt","rationale","feedback","configs","showNote","disabled","teacherInstructions","showToggle","vertical","role","Tiler","VerticalTiler","HorizontalTiler","displayNote","showRationale","hasText","hasMedia","showTeacherInstructions","containerStyle","DragProvider","onDragStart","onDragEnd","UiLayout","style","labels","hidden","visible","className","PreviewPrompt","show","toggled","onToggle","toggleCorrect","choiceLabel","targetLabel","addGuide","showOrdering","tileSize","choiceLabelEnabled","dangerouslySetInnerHTML","__html","Feedback","exports","isRequired","object","oneOfType","array","_default"],"sources":["../src/placement-ordering.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport uniqueId from 'lodash/uniqueId';\nimport isEqual from 'lodash/isEqual';\nimport difference from 'lodash/difference';\nimport { styled } from '@mui/material/styles';\n\nimport { Collapsible, color, Feedback, hasMedia, hasText, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Translator from '@pie-lib/translator';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragProvider } from '@pie-lib/drag';\n\nimport { HorizontalTiler, VerticalTiler } from './tiler';\nimport { buildState, reducer } from './ordering';\nimport { haveSameValuesButDifferentOrder } from './utils';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-elements:placement-ordering');\n\nconst PlacementOrderingContainer = styled('div')({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n});\n\nconst StyledPrompt = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledNote = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n alignSelf: 'flex-start',\n}));\n\nconst OrderingTiler = (props) => {\n const { tiler: Comp, ordering, onDropChoice, onRemoveChoice, ...compProps } = props;\n\n return (\n <Comp\n {...compProps}\n tiles={ordering.tiles}\n onDropChoice={(t, s) => onDropChoice(t, s, ordering)}\n onRemoveChoice={(t) => onRemoveChoice(t, ordering)}\n />\n );\n};\n\nOrderingTiler.propTypes = {\n tiler: PropTypes.func,\n ordering: PropTypes.any,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n};\n\nexport class PlacementOrdering extends React.Component {\n static propTypes = {\n onSessionChange: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n };\n\n constructor(props) {\n super(props);\n\n this.instanceId = uniqueId();\n\n const { value, needsReset } = this.validateSession(props);\n\n this.state = {\n showingCorrect: false,\n };\n\n const { model } = props || {};\n const { env } = model || {};\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange({\n ...props.session,\n value,\n });\n }\n }\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n validateSession = ({ model, session }, areChoicesShuffled = false) => {\n const { config, choices } = model || {};\n const { includeTargets } = config || {};\n const choicesIds = choices.map((c) => c.id);\n\n let { value } = session || {};\n let needsReset;\n\n if (!includeTargets) {\n // Use all choice IDs if choices were shuffled or session is missing/invalid\n const sessionMissing = !value || !value.length;\n if (sessionMissing || areChoicesShuffled) {\n // if there's no value on session in No Targets Mode, we need to set an initial session\n value = choicesIds;\n } else {\n // in No Targets Mode, all choice ids need to be used\n const missingChoiceIds = difference(choicesIds, value);\n // this is the case that handles extra choice ids in session\n const extraChoiceIds = difference(value, choicesIds);\n\n if (missingChoiceIds.length || extraChoiceIds.length) {\n value = choicesIds;\n }\n }\n\n needsReset = !isEqual(session.value, value);\n } else {\n // in Targets Area selected, it's important to check the length of session\n const sessionIsMismatched = value && value.length !== choicesIds.length;\n if (sessionIsMismatched) {\n needsReset = true;\n\n // if choices were added, add value in session\n if (value.length < choicesIds.length) {\n value = value.concat(new Array(choicesIds.length - value.length));\n } else {\n // if choices were removed, make sure to remove from session as well\n value = value.filter((cId) => choicesIds.includes(cId));\n }\n }\n }\n\n if (needsReset) {\n // eslint-disable-next-line no-console\n console.warn('This session is not valid anymore. It will be reset.');\n }\n\n return { value, needsReset };\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model: nextModel = {} } = nextProps || {};\n const { model: currentModel = {} } = this.props || {};\n const { correctResponse, config, choices: nextChoices = [], env } = nextModel;\n const { includeTargets } = config || {};\n\n const newState = {};\n\n const isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;\n const isDefaultNote =\n currentModel.note &&\n currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: currentModel.language });\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (isLanguageChanged && isDefaultNote) {\n currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n if (!correctResponse) {\n newState.showingCorrect = false;\n }\n\n //PD-4924\n // show student choices same order as in model when teacher changes student choices order\n // for cases when student view and instructor view are on same page\n const areChoicesShuffled = haveSameValuesButDifferentOrder(nextChoices, currentModel.choices);\n\n const validatedSession = this.validateSession(nextProps, areChoicesShuffled);\n let { value, needsReset } = validatedSession;\n\n const newSession = {\n ...nextProps.session,\n value,\n };\n const includeTargetsChanged = currentModel.config?.includeTargets !== includeTargets;\n\n if (includeTargets && includeTargetsChanged) {\n needsReset = true;\n\n delete newSession.value;\n }\n\n this.setState(newState, () => {\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange(newSession);\n }\n });\n }\n\n onDropChoice = (target, source, ordering) => {\n const { onSessionChange, session } = this.props;\n const from = ordering.tiles.find((t) => t.id === source.id && t.type === source.type);\n const to = target;\n log('[onDropChoice] ', from, to);\n const update = reducer({ type: 'move', from, to }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n\n onSessionChange(sessionUpdate);\n };\n\n onRemoveChoice = (target, ordering) => {\n const { onSessionChange, session } = this.props;\n log('[onRemoveChoice]', target);\n const update = reducer({ type: 'remove', target }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n onSessionChange(sessionUpdate);\n };\n\n createOrdering = () => {\n const { model, session } = this.props;\n const { showingCorrect } = this.state;\n const config = model.config || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { includeTargets } = config;\n\n return showingCorrect\n ? buildState(\n model.choices,\n model.correctResponse,\n model.correctResponse.map((id) => ({ id, outcome: 'correct' })),\n {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n },\n )\n : buildState(model.choices, session.value, model.outcomes, {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n });\n };\n\n onDragEnd = (event) => {\n const { over, active } = event;\n const ordering = this.createOrdering();\n\n if (over && active) {\n const draggedItem = active.data.current;\n const droppedOnItem = over.data.current;\n\n if (draggedItem && droppedOnItem && droppedOnItem.type === 'target') {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n return;\n }\n\n if (draggedItem && droppedOnItem) {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n }\n } else if (!over && active) {\n const draggedItem = active.data.current;\n if (draggedItem && draggedItem.type === 'target') {\n this.onRemoveChoice(draggedItem, ordering);\n }\n }\n }\n\n render() {\n const { model } = this.props;\n const {\n correctResponse,\n correctness,\n extraCSSRules,\n prompt,\n rationale,\n feedback,\n config: configs,\n note,\n showNote,\n env,\n disabled,\n teacherInstructions,\n language,\n } = model;\n const showToggle = correctResponse && correctResponse.length > 0;\n const { showingCorrect } = this.state;\n const config = configs || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { orientation, includeTargets } = config;\n const vertical = orientation === 'vertical';\n const ordering = this.createOrdering();\n const { mode, role } = env || {};\n\n const Tiler = vertical ? VerticalTiler : HorizontalTiler;\n const displayNote = (showingCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const containerStyle = {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n };\n\n return (\n <DragProvider onDragStart={() => { }} onDragEnd={this.onDragEnd}>\n <PlacementOrderingContainer>\n <UiLayout extraCSSRules={extraCSSRules} style={containerStyle}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n <StyledPrompt>\n <PreviewPrompt prompt={prompt} />\n </StyledPrompt>\n\n <StyledToggle\n className=\"toggle\"\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n <OrderingTiler\n instanceId={this.instanceId}\n choiceLabel={config.choiceLabel}\n targetLabel={config.targetLabel}\n ordering={ordering}\n tiler={Tiler}\n disabled={disabled}\n addGuide={config.showOrdering}\n tileSize={config.tileSize}\n includeTargets={includeTargets}\n choiceLabelEnabled={model.config && model.config.choiceLabelEnabled}\n />\n\n {displayNote && <StyledNote dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <StyledCollapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }} className=\"collapsible\">\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {!showingCorrect && <Feedback correctness={correctness} feedback={feedback} />}\n </UiLayout>\n </PlacementOrderingContainer>\n </DragProvider>\n );\n }\n}\n\nexport default PlacementOrdering;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"placement-ordering.js","names":["_react","_interopRequireDefault","require","_reactDom","_propTypes","_debug","_lodashEs","_styles","_core","_renderUi","_mathRendering","_translator","_correctAnswerToggle","_drag","_tiler","_ordering","_utils","translator","Translator","log","debug","PlacementOrderingContainer","styled","color","text","backgroundColor","background","display","flexDirection","alignItems","boxSizing","StyledPrompt","theme","paddingBottom","spacing","StyledNote","StyledToggle","CorrectAnswerToggle","StyledCollapsible","Collapsible","marginBottom","alignSelf","OrderingTiler","props","tiler","Comp","ordering","onDropChoice","onRemoveChoice","compProps","default","createElement","_extends2","tiles","t","s","propTypes","PropTypes","func","any","PlacementOrdering","React","Component","constructor","_defineProperty2","showingCorrect","setState","model","session","areChoicesShuffled","config","choices","includeTargets","choicesIds","map","c","id","value","needsReset","sessionMissing","length","missingChoiceIds","difference","extraChoiceIds","isEqual","sessionIsMismatched","concat","Array","filter","cId","includes","console","warn","target","source","onSessionChange","from","find","type","to","update","reducer","sessionUpdate","Object","assign","response","state","orientation","buildState","correctResponse","outcome","allowSameChoiceInTargets","outcomes","event","over","active","createOrdering","draggedItem","data","current","droppedOnItem","instanceId","uniqueId","validateSession","env","mode","componentDidUpdate","domNode","ReactDOM","findDOMNode","renderMath","UNSAFE_componentWillReceiveProps","nextProps","nextModel","currentModel","nextChoices","newState","isLanguageChanged","language","isDefaultNote","note","lng","haveSameValuesButDifferentOrder","validatedSession","newSession","includeTargetsChanged","render","correctness","extraCSSRules","prompt","rationale","feedback","configs","showNote","disabled","teacherInstructions","showToggle","vertical","role","Tiler","VerticalTiler","HorizontalTiler","displayNote","showRationale","hasText","hasMedia","showTeacherInstructions","containerStyle","DragProvider","onDragStart","onDragEnd","collisionDetection","closestCenter","UiLayout","style","labels","hidden","visible","className","PreviewPrompt","show","toggled","onToggle","toggleCorrect","choiceLabel","targetLabel","addGuide","showOrdering","tileSize","choiceLabelEnabled","dangerouslySetInnerHTML","__html","Feedback","exports","isRequired","object","oneOfType","array","_default"],"sources":["../src/placement-ordering.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { difference, isEqual, uniqueId } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport { closestCenter } from '@dnd-kit/core';\n\nimport { Collapsible, color, Feedback, hasMedia, hasText, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Translator from '@pie-lib/translator';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragProvider } from '@pie-lib/drag';\n\nimport { HorizontalTiler, VerticalTiler } from './tiler';\nimport { buildState, reducer } from './ordering';\nimport { haveSameValuesButDifferentOrder } from './utils';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-elements:placement-ordering');\n\nconst PlacementOrderingContainer = styled('div')({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n});\n\nconst StyledPrompt = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledNote = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n alignSelf: 'flex-start',\n}));\n\nconst OrderingTiler = (props) => {\n const { tiler: Comp, ordering, onDropChoice, onRemoveChoice, ...compProps } = props;\n\n return (\n <Comp\n {...compProps}\n tiles={ordering.tiles}\n onDropChoice={(t, s) => onDropChoice(t, s, ordering)}\n onRemoveChoice={(t) => onRemoveChoice(t, ordering)}\n />\n );\n};\n\nOrderingTiler.propTypes = {\n tiler: PropTypes.func,\n ordering: PropTypes.any,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n};\n\nexport class PlacementOrdering extends React.Component {\n static propTypes = {\n onSessionChange: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n };\n\n constructor(props) {\n super(props);\n\n this.instanceId = uniqueId();\n\n const { value, needsReset } = this.validateSession(props);\n\n this.state = {\n showingCorrect: false,\n };\n\n const { model } = props || {};\n const { env } = model || {};\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange({\n ...props.session,\n value,\n });\n }\n }\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n validateSession = ({ model, session }, areChoicesShuffled = false) => {\n const { config, choices } = model || {};\n const { includeTargets } = config || {};\n const choicesIds = choices.map((c) => c.id);\n\n let { value } = session || {};\n let needsReset;\n\n if (!includeTargets) {\n // Use all choice IDs if choices were shuffled or session is missing/invalid\n const sessionMissing = !value || !value.length;\n if (sessionMissing || areChoicesShuffled) {\n // if there's no value on session in No Targets Mode, we need to set an initial session\n value = choicesIds;\n } else {\n // in No Targets Mode, all choice ids need to be used\n const missingChoiceIds = difference(choicesIds, value);\n // this is the case that handles extra choice ids in session\n const extraChoiceIds = difference(value, choicesIds);\n\n if (missingChoiceIds.length || extraChoiceIds.length) {\n value = choicesIds;\n }\n }\n\n needsReset = !isEqual(session.value, value);\n } else {\n // in Targets Area selected, it's important to check the length of session\n const sessionIsMismatched = value && value.length !== choicesIds.length;\n if (sessionIsMismatched) {\n needsReset = true;\n\n // if choices were added, add value in session\n if (value.length < choicesIds.length) {\n value = value.concat(new Array(choicesIds.length - value.length));\n } else {\n // if choices were removed, make sure to remove from session as well\n value = value.filter((cId) => choicesIds.includes(cId));\n }\n }\n }\n\n if (needsReset) {\n // eslint-disable-next-line no-console\n console.warn('This session is not valid anymore. It will be reset.');\n }\n\n return { value, needsReset };\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model: nextModel = {} } = nextProps || {};\n const { model: currentModel = {} } = this.props || {};\n const { correctResponse, config, choices: nextChoices = [], env } = nextModel;\n const { includeTargets } = config || {};\n\n const newState = {};\n\n const isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;\n const isDefaultNote =\n currentModel.note &&\n currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: currentModel.language });\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (isLanguageChanged && isDefaultNote) {\n currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n if (!correctResponse) {\n newState.showingCorrect = false;\n }\n\n //PD-4924\n // show student choices same order as in model when teacher changes student choices order\n // for cases when student view and instructor view are on same page\n const areChoicesShuffled = haveSameValuesButDifferentOrder(nextChoices, currentModel.choices);\n\n const validatedSession = this.validateSession(nextProps, areChoicesShuffled);\n let { value, needsReset } = validatedSession;\n\n const newSession = {\n ...nextProps.session,\n value,\n };\n const includeTargetsChanged = currentModel.config?.includeTargets !== includeTargets;\n\n if (includeTargets && includeTargetsChanged) {\n needsReset = true;\n\n delete newSession.value;\n }\n\n this.setState(newState, () => {\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange(newSession);\n }\n });\n }\n\n onDropChoice = (target, source, ordering) => {\n const { onSessionChange, session } = this.props;\n const from = ordering.tiles.find((t) => t.id === source.id && t.type === source.type);\n const to = target;\n log('[onDropChoice] ', from, to);\n const update = reducer({ type: 'move', from, to }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n\n onSessionChange(sessionUpdate);\n };\n\n onRemoveChoice = (target, ordering) => {\n const { onSessionChange, session } = this.props;\n log('[onRemoveChoice]', target);\n const update = reducer({ type: 'remove', target }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n onSessionChange(sessionUpdate);\n };\n\n createOrdering = () => {\n const { model, session } = this.props;\n const { showingCorrect } = this.state;\n const config = model.config || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { includeTargets } = config;\n\n return showingCorrect\n ? buildState(\n model.choices,\n model.correctResponse,\n model.correctResponse.map((id) => ({ id, outcome: 'correct' })),\n {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n },\n )\n : buildState(model.choices, session.value, model.outcomes, {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n });\n };\n\n onDragEnd = (event) => {\n const { over, active } = event;\n const ordering = this.createOrdering();\n\n if (over && active) {\n const draggedItem = active.data.current;\n const droppedOnItem = over.data.current;\n\n if (draggedItem && droppedOnItem && droppedOnItem.type === 'target') {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n return;\n }\n\n if (draggedItem && droppedOnItem) {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n }\n } else if (!over && active) {\n const draggedItem = active.data.current;\n if (draggedItem && draggedItem.type === 'target') {\n this.onRemoveChoice(draggedItem, ordering);\n }\n }\n };\n\n render() {\n const { model } = this.props;\n const {\n correctResponse,\n correctness,\n extraCSSRules,\n prompt,\n rationale,\n feedback,\n config: configs,\n note,\n showNote,\n env,\n disabled,\n teacherInstructions,\n language,\n } = model;\n const showToggle = correctResponse && correctResponse.length > 0;\n const { showingCorrect } = this.state;\n const config = configs || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { orientation, includeTargets } = config;\n const vertical = orientation === 'vertical';\n const ordering = this.createOrdering();\n const { mode, role } = env || {};\n\n const Tiler = vertical ? VerticalTiler : HorizontalTiler;\n const displayNote = (showingCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const containerStyle = {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n };\n\n return (\n <DragProvider onDragStart={() => { }} onDragEnd={this.onDragEnd} collisionDetection={closestCenter}>\n <PlacementOrderingContainer>\n <UiLayout extraCSSRules={extraCSSRules} style={containerStyle}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n <StyledPrompt>\n <PreviewPrompt prompt={prompt} />\n </StyledPrompt>\n\n <StyledToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n <OrderingTiler\n instanceId={this.instanceId}\n choiceLabel={config.choiceLabel}\n targetLabel={config.targetLabel}\n ordering={ordering}\n tiler={Tiler}\n disabled={disabled}\n addGuide={config.showOrdering}\n tileSize={config.tileSize}\n includeTargets={includeTargets}\n choiceLabelEnabled={model.config && model.config.choiceLabelEnabled}\n />\n\n {displayNote && <StyledNote dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <StyledCollapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {!showingCorrect && <Feedback correctness={correctness} feedback={feedback} />}\n </UiLayout>\n </PlacementOrderingContainer>\n </DragProvider>\n );\n }\n}\n\nexport default PlacementOrdering;\n"],"mappings":"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","ignoreList":[]}
package/lib/tile.js CHANGED
@@ -44,39 +44,54 @@ const StyledTileContent = (0, _styles.styled)('div')(({
44
44
  isOver,
45
45
  disabled,
46
46
  outcome,
47
- label
47
+ label,
48
+ type
48
49
  }) => ({
49
- cursor: 'pointer',
50
+ cursor: disabled ? 'not-allowed' : 'grab',
50
51
  width: '100%',
51
52
  height: '100%',
52
53
  padding: '10px',
53
54
  boxSizing: 'border-box',
54
55
  overflow: 'hidden',
55
- border: `1px solid ${theme.palette.grey[400]}`,
56
- backgroundColor: _renderUi.color.background(),
57
- transition: 'opacity 200ms linear',
56
+ border: type === 'choice' ? `1px solid ${theme.palette.grey[400]}` : '1px solid transparent',
57
+ backgroundColor: type === 'choice' ? _renderUi.color.background() : 'transparent',
58
+ transition: type === 'choice' ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease' : 'none',
58
59
  pointerEvents: 'none',
59
- '&:hover': {
60
- backgroundColor: _renderUi.color.secondary()
61
- },
62
- // Apply conditional styles based on props
63
- ...(isOver && !disabled && {
64
- opacity: 0.2
60
+ userSelect: 'none',
61
+ ...(type === 'choice' && {
62
+ '&:hover': {
63
+ backgroundColor: disabled ? _renderUi.color.background() : _renderUi.color.secondary(),
64
+ borderColor: disabled ? theme.palette.grey[400] : theme.palette.primary.main,
65
+ transform: disabled ? 'none' : 'scale(1.02)'
66
+ }
65
67
  }),
66
- ...(isDragging && !disabled && {
67
- opacity: 0.5,
68
- backgroundColor: _renderUi.color.secondaryLight()
68
+ // Apply conditional styles based on props (only if not empty spacing tile)
69
+ ...(type === 'choice' && isOver && !disabled && {
70
+ opacity: 0.4,
71
+ backgroundColor: _renderUi.color.primaryLight(),
72
+ borderColor: theme.palette.primary.main,
73
+ borderStyle: 'dashed',
74
+ transform: 'scale(1.05)'
69
75
  }),
70
- ...(disabled && {
76
+ ...(type === 'choice' && isDragging && !disabled && {
77
+ opacity: 0.6,
78
+ backgroundColor: _renderUi.color.secondaryLight(),
79
+ transform: 'scale(1.05) rotate(2deg)',
80
+ boxShadow: '0 8px 16px rgba(0,0,0,0.2)',
81
+ cursor: 'grabbing'
82
+ }),
83
+ ...(type === 'choice' && disabled && {
84
+ opacity: 0.6,
71
85
  cursor: 'not-allowed',
72
86
  '&:hover': {
73
- backgroundColor: _renderUi.color.background()
87
+ backgroundColor: _renderUi.color.background(),
88
+ transform: 'none'
74
89
  }
75
90
  }),
76
- ...(outcome === 'incorrect' && {
91
+ ...(type === 'choice' && outcome === 'incorrect' && {
77
92
  border: `1px solid ${_renderUi.color.incorrect()}`
78
93
  }),
79
- ...(outcome === 'correct' && {
94
+ ...(type === 'choice' && outcome === 'correct' && {
80
95
  border: `1px solid ${_renderUi.color.correct()}`
81
96
  }),
82
97
  ...(!label && {
@@ -105,7 +120,9 @@ const TileContent = props => {
105
120
  disabled: disabled
106
121
  });
107
122
  } else {
123
+ console.log('TileContent render, props: ', props);
108
124
  return /*#__PURE__*/_react.default.createElement(StyledTileContent, {
125
+ type: type,
109
126
  isDragging: isDragging,
110
127
  isOver: isOver,
111
128
  disabled: disabled,
@@ -186,10 +203,14 @@ const Tile = props => {
186
203
  const style = {
187
204
  transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,
188
205
  boxSizing: 'border-box',
189
- overflow: 'hidden',
206
+ overflow: 'visible',
190
207
  padding: 0,
191
208
  margin: 0,
192
- textAlign: 'center'
209
+ textAlign: 'center',
210
+ pointerEvents: 'auto',
211
+ cursor: disabled ? 'not-allowed' : isDragging ? 'grabbing' : 'grab',
212
+ zIndex: isDragging ? 1000 : 'auto',
213
+ willChange: isDragging ? 'transform' : 'auto'
193
214
  };
194
215
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
195
216
  ref: setRefs,
package/lib/tile.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tile.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_core","_styles","_drag","_renderUi","log","debug","StyledNumberContainer","styled","theme","width","fontSize","typography","textAlign","color","palette","common","black","Holder","type","index","isOver","disabled","default","createElement","PlaceHolder","undefined","propTypes","PropTypes","string","number","bool","StyledTileContent","isDragging","outcome","label","cursor","height","padding","boxSizing","overflow","border","grey","backgroundColor","background","transition","pointerEvents","secondary","opacity","secondaryLight","incorrect","correct","TileContent","props","empty","guideIndex","dangerouslySetInnerHTML","__html","Tile","id","instanceId","draggable","attributes","listeners","setNodeRef","setDragRef","transform","useDraggable","data","value","setDropRef","dropIsOver","useDroppable","ref","React","useRef","useEffect","currentRef","current","handleTouchStart","e","preventDefault","addEventListener","passive","removeEventListener","setRefs","element","style","x","y","margin","_extends2","exports","any","_default"],"sources":["../src/tile.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\n\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:placement-ordering:tile');\n\nconst StyledNumberContainer = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: theme.typography.fontSize + 4,\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ type, index, isOver, disabled }) => (\n <PlaceHolder type={type} isOver={isOver} disabled={disabled}>\n {type === 'target' && index !== undefined && <StyledNumberContainer>{index}</StyledNumberContainer>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n type: PropTypes.string,\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst StyledTileContent = styled('div')(({ theme, isDragging, isOver, disabled, outcome, label }) => ({\n cursor: 'pointer',\n width: '100%',\n height: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n border: `1px solid ${theme.palette.grey[400]}`,\n backgroundColor: color.background(),\n transition: 'opacity 200ms linear',\n pointerEvents: 'none',\n '&:hover': {\n backgroundColor: color.secondary(),\n },\n\n // Apply conditional styles based on props\n ...(isOver && !disabled && {\n opacity: 0.2,\n }),\n\n ...(isDragging && !disabled && {\n opacity: 0.5,\n backgroundColor: color.secondaryLight(),\n }),\n\n ...(disabled && {\n cursor: 'not-allowed',\n '&:hover': {\n backgroundColor: color.background(),\n },\n }),\n\n ...(outcome === 'incorrect' && {\n border: `1px solid ${color.incorrect()}`,\n }),\n\n ...(outcome === 'correct' && {\n border: `1px solid ${color.correct()}`,\n }),\n\n ...(!label && {\n border: 'none',\n '&:hover': {\n backgroundColor: 'unset',\n },\n }),\n}));\n\nconst TileContent = (props) => {\n const { type, isDragging, empty, isOver, label, disabled, outcome, guideIndex } = props;\n\n if (empty) {\n return <Holder type={type} index={guideIndex} isOver={isOver} disabled={disabled} />;\n } else {\n return (\n <StyledTileContent\n isDragging={isDragging}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n label={label}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n );\n }\n};\n\nexport const Tile = (props) => {\n const {\n label,\n type,\n id,\n empty,\n disabled,\n outcome,\n index,\n guideIndex,\n instanceId,\n draggable,\n } = props;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: `tile-${id}-${instanceId}`,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n disabled: !draggable || disabled,\n });\n\n const {\n setNodeRef: setDropRef,\n isOver: dropIsOver,\n } = useDroppable({\n id: `drop-tile-${id ? id : index}-${instanceId}`,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n });\n\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n const currentRef = ref.current;\n\n const handleTouchStart = (e) => {\n e.preventDefault(); // Prevent the default touch event behavior\n };\n\n if (currentRef) {\n currentRef.addEventListener('touchstart', handleTouchStart, { passive: false });\n }\n\n return () => {\n if (currentRef) {\n currentRef.removeEventListener('touchstart', handleTouchStart);\n }\n };\n }, []);\n\n const setRefs = (element) => {\n ref.current = element;\n setDragRef(element);\n setDropRef(element);\n };\n\n log('[render], props: ', props);\n\n const style = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n boxSizing: 'border-box',\n overflow: 'hidden',\n padding: 0,\n margin: 0,\n textAlign: 'center',\n };\n\n return (\n <div\n ref={setRefs}\n style={style}\n {...(draggable && !disabled ? { ...listeners, ...attributes } : {})}\n >\n <TileContent\n label={label}\n id={id}\n empty={empty}\n index={index}\n guideIndex={guideIndex}\n isOver={dropIsOver}\n isDragging={isDragging}\n disabled={disabled}\n outcome={outcome}\n type={type}\n />\n </div>\n );\n};\n\nTile.propTypes = {\n id: PropTypes.any,\n label: PropTypes.string,\n isOver: PropTypes.bool,\n type: PropTypes.string,\n empty: PropTypes.bool,\n disabled: PropTypes.bool,\n outcome: PropTypes.string,\n index: PropTypes.number,\n guideIndex: PropTypes.number,\n instanceId: PropTypes.any,\n draggable: PropTypes.bool,\n};\n\nexport default Tile;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"tile.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_core","_styles","_drag","_renderUi","log","debug","StyledNumberContainer","styled","theme","width","fontSize","typography","textAlign","color","palette","common","black","Holder","type","index","isOver","disabled","default","createElement","PlaceHolder","undefined","propTypes","PropTypes","string","number","bool","StyledTileContent","isDragging","outcome","label","cursor","height","padding","boxSizing","overflow","border","grey","backgroundColor","background","transition","pointerEvents","userSelect","secondary","borderColor","primary","main","transform","opacity","primaryLight","borderStyle","secondaryLight","boxShadow","incorrect","correct","TileContent","props","empty","guideIndex","console","dangerouslySetInnerHTML","__html","Tile","id","instanceId","draggable","attributes","listeners","setNodeRef","setDragRef","useDraggable","data","value","setDropRef","dropIsOver","useDroppable","ref","React","useRef","useEffect","currentRef","current","handleTouchStart","e","preventDefault","addEventListener","passive","removeEventListener","setRefs","element","style","x","y","margin","zIndex","willChange","_extends2","exports","any","_default"],"sources":["../src/tile.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\n\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:placement-ordering:tile');\n\nconst StyledNumberContainer = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: theme.typography.fontSize + 4,\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ type, index, isOver, disabled }) => (\n <PlaceHolder type={type} isOver={isOver} disabled={disabled}>\n {type === 'target' && index !== undefined && <StyledNumberContainer>{index}</StyledNumberContainer>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n type: PropTypes.string,\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst StyledTileContent = styled('div')(({ theme, isDragging, isOver, disabled, outcome, label, type }) => ({\n cursor: disabled ? 'not-allowed' : 'grab',\n width: '100%',\n height: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n border: (type === 'choice') ? `1px solid ${theme.palette.grey[400]}` : '1px solid transparent',\n backgroundColor: (type === 'choice') ? color.background() : 'transparent',\n transition: (type === 'choice') ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease' : 'none',\n pointerEvents: 'none',\n userSelect: 'none',\n\n ...((type === 'choice') && {\n '&:hover': {\n backgroundColor: disabled ? color.background() : color.secondary(),\n borderColor: disabled ? theme.palette.grey[400] : theme.palette.primary.main,\n transform: disabled ? 'none' : 'scale(1.02)',\n },\n }),\n\n // Apply conditional styles based on props (only if not empty spacing tile)\n ...((type === 'choice') && isOver && !disabled && {\n opacity: 0.4,\n backgroundColor: color.primaryLight(),\n borderColor: theme.palette.primary.main,\n borderStyle: 'dashed',\n transform: 'scale(1.05)',\n }),\n\n ...((type === 'choice') && isDragging && !disabled && {\n opacity: 0.6,\n backgroundColor: color.secondaryLight(),\n transform: 'scale(1.05) rotate(2deg)',\n boxShadow: '0 8px 16px rgba(0,0,0,0.2)',\n cursor: 'grabbing',\n }),\n\n ...((type === 'choice') && disabled && {\n opacity: 0.6,\n cursor: 'not-allowed',\n '&:hover': {\n backgroundColor: color.background(),\n transform: 'none',\n },\n }),\n\n ...((type === 'choice') && outcome === 'incorrect' && {\n border: `1px solid ${color.incorrect()}`,\n }),\n\n ...((type === 'choice') && outcome === 'correct' && {\n border: `1px solid ${color.correct()}`,\n }),\n\n ...(!label && {\n border: 'none',\n '&:hover': {\n backgroundColor: 'unset',\n },\n }),\n}));\n\nconst TileContent = (props) => {\n const { type, isDragging, empty, isOver, label, disabled, outcome, guideIndex } = props;\n\n if (empty) {\n return <Holder type={type} index={guideIndex} isOver={isOver} disabled={disabled} />;\n } else {\n console.log('TileContent render, props: ', props);\n return (\n <StyledTileContent\n type={type}\n isDragging={isDragging}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n label={label}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n );\n }\n};\n\nexport const Tile = (props) => {\n const {\n label,\n type,\n id,\n empty,\n disabled,\n outcome,\n index,\n guideIndex,\n instanceId,\n draggable,\n } = props;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: `tile-${id}-${instanceId}`,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n disabled: !draggable || disabled,\n });\n\n const {\n setNodeRef: setDropRef,\n isOver: dropIsOver,\n } = useDroppable({\n id: `drop-tile-${id ? id : index}-${instanceId}`,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n });\n\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n const currentRef = ref.current;\n\n const handleTouchStart = (e) => {\n e.preventDefault(); // Prevent the default touch event behavior\n };\n\n if (currentRef) {\n currentRef.addEventListener('touchstart', handleTouchStart, { passive: false });\n }\n\n return () => {\n if (currentRef) {\n currentRef.removeEventListener('touchstart', handleTouchStart);\n }\n };\n }, []);\n\n const setRefs = (element) => {\n ref.current = element;\n setDragRef(element);\n setDropRef(element);\n };\n\n log('[render], props: ', props);\n\n const style = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n boxSizing: 'border-box',\n overflow: 'visible',\n padding: 0,\n margin: 0,\n textAlign: 'center',\n pointerEvents: 'auto',\n cursor: disabled ? 'not-allowed' : (isDragging ? 'grabbing' : 'grab'),\n zIndex: isDragging ? 1000 : 'auto',\n willChange: isDragging ? 'transform' : 'auto',\n };\n\n return (\n <div\n ref={setRefs}\n style={style}\n {...(draggable && !disabled ? { ...listeners, ...attributes } : {})}\n >\n <TileContent\n label={label}\n id={id}\n empty={empty}\n index={index}\n guideIndex={guideIndex}\n isOver={dropIsOver}\n isDragging={isDragging}\n disabled={disabled}\n outcome={outcome}\n type={type}\n />\n </div>\n );\n};\n\nTile.propTypes = {\n id: PropTypes.any,\n label: PropTypes.string,\n isOver: PropTypes.bool,\n type: PropTypes.string,\n empty: PropTypes.bool,\n disabled: PropTypes.bool,\n outcome: PropTypes.string,\n index: PropTypes.number,\n guideIndex: PropTypes.number,\n instanceId: PropTypes.any,\n draggable: PropTypes.bool,\n};\n\nexport default Tile;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,35 +1,34 @@
1
1
  {
2
2
  "name": "@pie-element/placement-ordering",
3
- "version": "13.0.0-beta.0",
3
+ "version": "13.0.0-next.0+67da381",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "dependencies": {
10
- "@dnd-kit/core": "^6.1.0",
10
+ "@dnd-kit/core": "^6.3.1",
11
11
  "@emotion/react": "^11.14.0",
12
12
  "@emotion/style": "^0.8.0",
13
13
  "@mui/icons-material": "^7.3.4",
14
14
  "@mui/material": "^7.3.4",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/correct-answer-toggle": "2.25.4-next.0",
17
- "@pie-lib/drag": "2.22.4-next.0",
18
- "@pie-lib/math-rendering": "3.22.3-next.0",
19
- "@pie-lib/render-ui": "4.35.4-next.0",
20
- "@pie-lib/translator": "2.23.3-next.0",
16
+ "@pie-lib/correct-answer-toggle": "3.1.1-next.1",
17
+ "@pie-lib/drag": "3.1.1-next.1",
18
+ "@pie-lib/math-rendering": "4.1.1-next.1",
19
+ "@pie-lib/render-ui": "5.1.1-next.1",
20
+ "@pie-lib/translator": "3.1.1-next.1",
21
21
  "debug": "^4.1.1",
22
22
  "decimal.js": "^10.0.0",
23
- "lodash": "^4.17.10",
24
- "prop-types": "^15.6.1",
25
- "react": "18.2.0",
26
- "react-dom": "18.2.0",
27
- "react-jss": "^8.4.0",
28
- "react-transition-group": "^2.3.1"
23
+ "lodash-es": "^4.17.23",
24
+ "prop-types": "^15.8.1",
25
+ "react": "18.3.1",
26
+ "react-dom": "18.3.1",
27
+ "react-transition-group": "^4.4.5"
29
28
  },
30
29
  "author": "",
31
30
  "license": "ISC",
32
- "gitHead": "c47957cb243457f62111caf9d07deaad04b39545",
31
+ "gitHead": "67da3818d2af966110c6e85f6e8e238b79515eb2",
33
32
  "scripts": {
34
33
  "postpublish": "../../scripts/postpublish"
35
34
  },