@pie-element/placement-ordering 13.1.0-next.0 → 13.1.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1050 -2541
- package/configure/CHANGELOG.md +863 -2223
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +624 -1581
- package/controller/package.json +4 -4
- package/lib/index.js +40 -3
- package/lib/index.js.map +1 -1
- package/lib/placement-ordering.js +1 -1
- package/lib/placement-ordering.js.map +1 -1
- package/lib/tile.js +26 -16
- package/lib/tile.js.map +1 -1
- package/lib/tiler.js +2 -0
- package/lib/tiler.js.map +1 -1
- package/package.json +8 -11
package/controller/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/placement-ordering-controller",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.1-next.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@pie-lib/controller-utils": "1.
|
|
9
|
-
"@pie-lib/feedback": "1.
|
|
10
|
-
"@pie-lib/translator": "3.
|
|
8
|
+
"@pie-lib/controller-utils": "1.2.0-next.3",
|
|
9
|
+
"@pie-lib/feedback": "1.2.0-next.3",
|
|
10
|
+
"@pie-lib/translator": "3.2.0-next.3",
|
|
11
11
|
"debug": "^4.1.1",
|
|
12
12
|
"js-combinatorics": "^0.5.4",
|
|
13
13
|
"lodash-es": "^4.17.23"
|
package/lib/index.js
CHANGED
|
@@ -32,6 +32,25 @@ exports.isValidSession = isValidSession;
|
|
|
32
32
|
class Ordering extends HTMLElement {
|
|
33
33
|
constructor() {
|
|
34
34
|
super();
|
|
35
|
+
(0, _defineProperty2.default)(this, "_scheduleMathRender", () => {
|
|
36
|
+
if (this._mathRenderPending) return;
|
|
37
|
+
this._mathRenderPending = true;
|
|
38
|
+
requestAnimationFrame(() => {
|
|
39
|
+
if (this._mathObserver) {
|
|
40
|
+
this._mathObserver.disconnect();
|
|
41
|
+
}
|
|
42
|
+
(0, _mathRendering.renderMath)(this);
|
|
43
|
+
this._mathRenderPending = false;
|
|
44
|
+
setTimeout(() => {
|
|
45
|
+
if (this._mathObserver) {
|
|
46
|
+
this._mathObserver.observe(this, {
|
|
47
|
+
childList: true,
|
|
48
|
+
subtree: true
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}, 50);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
35
54
|
(0, _defineProperty2.default)(this, "isComplete", value => value && (0, _lodashEs.compact)(value).length === this._model.completeLength);
|
|
36
55
|
(0, _defineProperty2.default)(this, "sessionChange", session => {
|
|
37
56
|
this._session.value = session.value;
|
|
@@ -39,6 +58,22 @@ class Ordering extends HTMLElement {
|
|
|
39
58
|
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this._session && this.isComplete(this._session.value)));
|
|
40
59
|
});
|
|
41
60
|
this._root = null;
|
|
61
|
+
this._mathObserver = null;
|
|
62
|
+
this._mathRenderPending = false;
|
|
63
|
+
}
|
|
64
|
+
_initMathObserver() {
|
|
65
|
+
if (this._mathObserver) return;
|
|
66
|
+
this._mathObserver = new MutationObserver(this._scheduleMathRender);
|
|
67
|
+
this._mathObserver.observe(this, {
|
|
68
|
+
childList: true,
|
|
69
|
+
subtree: true
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
_disconnectMathObserver() {
|
|
73
|
+
if (this._mathObserver) {
|
|
74
|
+
this._mathObserver.disconnect();
|
|
75
|
+
this._mathObserver = null;
|
|
76
|
+
}
|
|
42
77
|
}
|
|
43
78
|
set model(newModel) {
|
|
44
79
|
this._model = newModel;
|
|
@@ -61,6 +96,7 @@ class Ordering extends HTMLElement {
|
|
|
61
96
|
if (this._model && this._session) {
|
|
62
97
|
log('[render] session: ', this._session.value);
|
|
63
98
|
log('[render] model: ', this._model);
|
|
99
|
+
this._initMathObserver();
|
|
64
100
|
const element = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
65
101
|
model: this._model,
|
|
66
102
|
session: this._session,
|
|
@@ -70,12 +106,13 @@ class Ordering extends HTMLElement {
|
|
|
70
106
|
this._root = (0, _client.createRoot)(this);
|
|
71
107
|
}
|
|
72
108
|
this._root.render(element);
|
|
73
|
-
queueMicrotask(() => {
|
|
74
|
-
(0, _mathRendering.renderMath)(this);
|
|
75
|
-
});
|
|
76
109
|
}
|
|
77
110
|
}
|
|
111
|
+
connectedCallback() {
|
|
112
|
+
this._initMathObserver();
|
|
113
|
+
}
|
|
78
114
|
disconnectedCallback() {
|
|
115
|
+
this._disconnectMathObserver();
|
|
79
116
|
if (this._root) {
|
|
80
117
|
this._root.unmount();
|
|
81
118
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_lodashEs","_debug","_mathRendering","_piePlayerEvents","_main","log","debug","isValidSession","model","session","config","compactSessionValues","compact","value","completeSession","length","choices","includeTargets","exports","Ordering","HTMLElement","constructor","_defineProperty2","default","_model","completeLength","_session","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_root","newModel","CustomEvent","bubbles","detail","complete","newSession","element","React","createElement","Main","onSessionChange","sessionChange","createRoot","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_lodashEs","_debug","_mathRendering","_piePlayerEvents","_main","log","debug","isValidSession","model","session","config","compactSessionValues","compact","value","completeSession","length","choices","includeTargets","exports","Ordering","HTMLElement","constructor","_defineProperty2","default","_mathRenderPending","requestAnimationFrame","_mathObserver","disconnect","renderMath","setTimeout","observe","childList","subtree","_model","completeLength","_session","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_root","_initMathObserver","MutationObserver","_scheduleMathRender","_disconnectMathObserver","newModel","CustomEvent","bubbles","detail","complete","newSession","element","React","createElement","Main","onSessionChange","sessionChange","createRoot","connectedCallback","disconnectedCallback","unmount"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { compact } from 'lodash-es';\nimport debug from 'debug';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport Main from './main';\n\nconst log = debug('pie-elements:placement-ordering');\n\nexport const isValidSession = ({ model, session }) => {\n const { config } = model;\n\n const compactSessionValues = (session && compact(session.value)) || [];\n const completeSession = compactSessionValues.length === model.choices.length;\n\n // if it includes targets, it doesn't have to contain all the choices selected (eg: only 2 targets were filled)\n // but if it does not include targets, it's a must to have all choices selected\n return config.includeTargets || completeSession;\n};\n\nexport default class Ordering extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n _scheduleMathRender = () => {\n if (this._mathRenderPending) return;\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n }\n renderMath(this);\n this._mathRenderPending = false;\n setTimeout(() => {\n if (this._mathObserver) {\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n this._mathObserver = new MutationObserver(this._scheduleMathRender);\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n isComplete = (value) => value && compact(value).length === this._model.completeLength;\n\n sessionChange = (session) => {\n this._session.value = session.value;\n this.render();\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), this._session && this.isComplete(this._session.value)),\n );\n };\n\n set model(newModel) {\n this._model = newModel;\n\n this.render();\n this.dispatchEvent(\n new CustomEvent('model-set', {\n bubbles: true,\n detail: {\n complete: false,\n },\n }),\n );\n }\n\n set session(newSession) {\n this._session = newSession;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n render() {\n if (this._model && this._session) {\n log('[render] session: ', this._session.value);\n log('[render] model: ', this._model);\n\n this._initMathObserver();\n\n const element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChange,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n }\n }\n\n connectedCallback() {\n this._initMathObserver();\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -142,7 +142,7 @@ class PlacementOrdering extends _react.default.Component {
|
|
|
142
142
|
onSessionChange,
|
|
143
143
|
session
|
|
144
144
|
} = this.props;
|
|
145
|
-
const from = ordering.tiles.find(t => t.id === source.id && t.type === source.type);
|
|
145
|
+
const from = ordering.tiles.find(t => t.id === source.id && t.type === source.type && t.index === source.index);
|
|
146
146
|
const to = target;
|
|
147
147
|
log('[onDropChoice] ', from, to);
|
|
148
148
|
const update = (0, _ordering.reducer)({
|
|
@@ -1 +1 @@
|
|
|
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":[]}
|
|
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","index","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 && t.index === source.index);\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
|
@@ -53,12 +53,12 @@ const StyledTileContent = (0, _styles.styled)('div')(({
|
|
|
53
53
|
padding: '10px',
|
|
54
54
|
boxSizing: 'border-box',
|
|
55
55
|
overflow: 'hidden',
|
|
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',
|
|
56
|
+
border: type === 'choice' || type === 'target' ? `1px solid ${theme.palette.grey[400]}` : '1px solid transparent',
|
|
57
|
+
backgroundColor: type === 'choice' || type === 'target' ? _renderUi.color.background() : 'transparent',
|
|
58
|
+
transition: type === 'choice' || type === 'target' ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease' : 'none',
|
|
59
59
|
pointerEvents: 'none',
|
|
60
60
|
userSelect: 'none',
|
|
61
|
-
...(type === 'choice' && {
|
|
61
|
+
...((type === 'choice' || type === 'target') && {
|
|
62
62
|
'&:hover': {
|
|
63
63
|
backgroundColor: disabled ? _renderUi.color.background() : _renderUi.color.secondary(),
|
|
64
64
|
borderColor: disabled ? theme.palette.grey[400] : theme.palette.primary.main,
|
|
@@ -66,32 +66,31 @@ const StyledTileContent = (0, _styles.styled)('div')(({
|
|
|
66
66
|
}
|
|
67
67
|
}),
|
|
68
68
|
// Apply conditional styles based on props (only if not empty spacing tile)
|
|
69
|
-
...(type === 'choice' && isOver && !disabled && {
|
|
69
|
+
...((type === 'choice' || type === 'target') && isOver && !disabled && {
|
|
70
70
|
opacity: 0.4,
|
|
71
71
|
backgroundColor: _renderUi.color.primaryLight(),
|
|
72
72
|
borderColor: theme.palette.primary.main,
|
|
73
73
|
borderStyle: 'dashed',
|
|
74
74
|
transform: 'scale(1.05)'
|
|
75
75
|
}),
|
|
76
|
-
...(type === 'choice' && isDragging && !disabled && {
|
|
76
|
+
...((type === 'choice' || type === 'target') && isDragging && !disabled && {
|
|
77
77
|
opacity: 0.6,
|
|
78
78
|
backgroundColor: _renderUi.color.secondaryLight(),
|
|
79
79
|
transform: 'scale(1.05) rotate(2deg)',
|
|
80
80
|
boxShadow: '0 8px 16px rgba(0,0,0,0.2)',
|
|
81
81
|
cursor: 'grabbing'
|
|
82
82
|
}),
|
|
83
|
-
...(type === 'choice' && disabled && {
|
|
84
|
-
opacity: 0.6,
|
|
83
|
+
...((type === 'choice' || type === 'target') && disabled && {
|
|
85
84
|
cursor: 'not-allowed',
|
|
86
85
|
'&:hover': {
|
|
87
86
|
backgroundColor: _renderUi.color.background(),
|
|
88
87
|
transform: 'none'
|
|
89
88
|
}
|
|
90
89
|
}),
|
|
91
|
-
...(type === 'choice' && outcome === 'incorrect' && {
|
|
90
|
+
...((type === 'choice' || type === 'target') && outcome === 'incorrect' && {
|
|
92
91
|
border: `1px solid ${_renderUi.color.incorrect()}`
|
|
93
92
|
}),
|
|
94
|
-
...(type === 'choice' && outcome === 'correct' && {
|
|
93
|
+
...((type === 'choice' || type === 'target') && outcome === 'correct' && {
|
|
95
94
|
border: `1px solid ${_renderUi.color.correct()}`
|
|
96
95
|
}),
|
|
97
96
|
...(!label && {
|
|
@@ -120,7 +119,6 @@ const TileContent = props => {
|
|
|
120
119
|
disabled: disabled
|
|
121
120
|
});
|
|
122
121
|
} else {
|
|
123
|
-
console.log('TileContent render, props: ', props);
|
|
124
122
|
return /*#__PURE__*/_react.default.createElement(StyledTileContent, {
|
|
125
123
|
type: type,
|
|
126
124
|
isDragging: isDragging,
|
|
@@ -145,8 +143,16 @@ const Tile = props => {
|
|
|
145
143
|
index,
|
|
146
144
|
guideIndex,
|
|
147
145
|
instanceId,
|
|
148
|
-
draggable
|
|
146
|
+
draggable,
|
|
147
|
+
tileIndex
|
|
149
148
|
} = props;
|
|
149
|
+
|
|
150
|
+
// Use type + tileIndex in the IDs to guarantee uniqueness in all modes.
|
|
151
|
+
// In includeTargets mode, a choice (id:'c1', type:'choice') and a target (id:'c1', type:'target')
|
|
152
|
+
// can coexist — the type differentiates them.
|
|
153
|
+
// tileIndex (array position from tiler) ensures empty placeholders are also unique.
|
|
154
|
+
const dragId = `tile-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;
|
|
155
|
+
const dropId = `drop-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;
|
|
150
156
|
const {
|
|
151
157
|
attributes,
|
|
152
158
|
listeners,
|
|
@@ -154,7 +160,7 @@ const Tile = props => {
|
|
|
154
160
|
transform,
|
|
155
161
|
isDragging
|
|
156
162
|
} = (0, _core.useDraggable)({
|
|
157
|
-
id:
|
|
163
|
+
id: dragId,
|
|
158
164
|
data: {
|
|
159
165
|
id,
|
|
160
166
|
type,
|
|
@@ -168,14 +174,17 @@ const Tile = props => {
|
|
|
168
174
|
setNodeRef: setDropRef,
|
|
169
175
|
isOver: dropIsOver
|
|
170
176
|
} = (0, _core.useDroppable)({
|
|
171
|
-
id:
|
|
177
|
+
id: dropId,
|
|
172
178
|
data: {
|
|
173
179
|
id,
|
|
174
180
|
type,
|
|
175
181
|
instanceId,
|
|
176
182
|
value: label,
|
|
177
183
|
index
|
|
178
|
-
}
|
|
184
|
+
},
|
|
185
|
+
// Disable droppable on the tile currently being dragged so closestCenter
|
|
186
|
+
// cannot pick it as the drop target (prevents self-collision and wrong matches).
|
|
187
|
+
disabled: isDragging
|
|
179
188
|
});
|
|
180
189
|
const ref = _react.default.useRef(null);
|
|
181
190
|
_react.default.useEffect(() => {
|
|
@@ -243,7 +252,8 @@ Tile.propTypes = {
|
|
|
243
252
|
index: _propTypes.default.number,
|
|
244
253
|
guideIndex: _propTypes.default.number,
|
|
245
254
|
instanceId: _propTypes.default.any,
|
|
246
|
-
draggable: _propTypes.default.bool
|
|
255
|
+
draggable: _propTypes.default.bool,
|
|
256
|
+
tileIndex: _propTypes.default.number
|
|
247
257
|
};
|
|
248
258
|
var _default = exports.default = Tile;
|
|
249
259
|
//# sourceMappingURL=tile.js.map
|
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","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":[]}
|
|
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","dangerouslySetInnerHTML","__html","Tile","id","instanceId","draggable","tileIndex","dragId","dropId","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' || type === 'target') ? `1px solid ${theme.palette.grey[400]}` : '1px solid transparent',\n backgroundColor: (type === 'choice' || type === 'target') ? color.background() : 'transparent',\n transition: (type === 'choice' || type === 'target') ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease' : 'none',\n pointerEvents: 'none',\n userSelect: 'none',\n\n ...((type === 'choice' || type === 'target') && {\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' || type === 'target') && 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' || type === 'target') && 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' || type === 'target') && disabled && {\n cursor: 'not-allowed',\n '&:hover': {\n backgroundColor: color.background(),\n transform: 'none',\n },\n }),\n\n ...((type === 'choice' || type === 'target') && outcome === 'incorrect' && {\n border: `1px solid ${color.incorrect()}`,\n }),\n\n ...((type === 'choice' || type === 'target') && 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 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 tileIndex,\n } = props;\n\n // Use type + tileIndex in the IDs to guarantee uniqueness in all modes.\n // In includeTargets mode, a choice (id:'c1', type:'choice') and a target (id:'c1', type:'target')\n // can coexist — the type differentiates them.\n // tileIndex (array position from tiler) ensures empty placeholders are also unique.\n const dragId = `tile-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n const dropId = `drop-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: dragId,\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: dropId,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n // Disable droppable on the tile currently being dragged so closestCenter\n // cannot pick it as the drop target (prevents self-collision and wrong matches).\n disabled: isDragging,\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 tileIndex: PropTypes.number,\n};\n\nexport default Tile;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/tiler.js
CHANGED
|
@@ -29,6 +29,8 @@ const buildTiles = props => {
|
|
|
29
29
|
tile.instanceId = props.instanceId;
|
|
30
30
|
tile.disabled = props.disabled;
|
|
31
31
|
tile.guideIndex = props.addGuide ? tile.index + 1 : undefined;
|
|
32
|
+
// unique key for dnd-kit IDs
|
|
33
|
+
tile.tileIndex = index;
|
|
32
34
|
if (props.includeTargets) {
|
|
33
35
|
return /*#__PURE__*/_react.default.createElement(_tile.default, (0, _extends2.default)({}, tile, {
|
|
34
36
|
key: index
|
package/lib/tiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiler.js","names":["_propTypes","_interopRequireDefault","require","_react","_styles","_tile","types","choiceLabel","PropTypes","string","targetLabel","disabled","bool","tiles","array","isRequired","tileSize","addGuide","defaults","buildTiles","props","T","tile","index","instanceId","guideIndex","undefined","includeTargets","default","createElement","_extends2","key","type","label","propTypes","StyledHTilerContainer","styled","theme","display","paddingBottom","spacing","gridGap","StyledChoiceLabel","textAlign","StyledTargetLabel","gridRow","StyledVTilerContainer","gridAutoFlow","StyledVChoiceLabel","gridColumn","StyledVTargetLabel","HorizontalTiler","React","Component","render","choiceLabelEnabled","rows","columns","length","style","gridTemplateColumns","Math","floor","gridTemplateRows","labelStyle","dangerouslySetInnerHTML","__html","map","exports","_defineProperty2","VerticalTiler"],"sources":["../src/tiler.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\n\nimport Tile from './tile';\n\nconst types = {\n choiceLabel: PropTypes.string,\n targetLabel: PropTypes.string,\n disabled: PropTypes.bool,\n tiles: PropTypes.array.isRequired,\n tileSize: PropTypes.string,\n addGuide: PropTypes.bool,\n};\n\nconst defaults = {\n tileSize: '1fr',\n disabled: false,\n addGuide: false,\n};\n\nconst buildTiles = (props) => {\n const T = (tile, index) => {\n tile.instanceId = props.instanceId;\n tile.disabled = props.disabled;\n tile.guideIndex = props.addGuide ? tile.index + 1 : undefined;\n\n if (props.includeTargets) {\n return <Tile {...tile} key={index} />;\n } else {\n return tile.type === 'choice' ? <Tile {...tile} key={index} /> : <Tile {...tile} label=\"\" key={index} />;\n }\n };\n\n T.propTypes = { ...types };\n return T;\n};\n\nconst StyledHTilerContainer = styled('div')(({ theme, includeTargets }) => ({\n display: 'grid',\n paddingBottom: theme.spacing(2),\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledChoiceLabel = styled('div')({\n textAlign: 'center',\n});\n\nconst StyledTargetLabel = styled('div')({\n textAlign: 'center',\n gridRow: '3/4',\n});\n\nconst StyledVTilerContainer = styled('div')(({ includeTargets }) => ({\n gridAutoFlow: 'column',\n display: 'grid',\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledVChoiceLabel = styled('div')({\n gridColumn: '1/2',\n textAlign: 'center',\n});\n\nconst StyledVTargetLabel = styled('div')({\n gridColumn: '2/3',\n textAlign: 'center',\n});\n\nexport class HorizontalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const rows = includeTargets ? `auto ${tileSize} auto ${tileSize}` : `auto ${tileSize} auto`;\n const columns = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: includeTargets\n ? `repeat(${columns}, ${tileSize})`\n : `auto repeat(${Math.floor(columns / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n gridTemplateRows: rows,\n };\n\n const labelStyle = {\n gridColumn: `1/${columns + 1}`,\n };\n\n return (\n <StyledHTilerContainer includeTargets={includeTargets} style={style}>\n <StyledChoiceLabel\n style={labelStyle}\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n {includeTargets && (\n <StyledTargetLabel style={labelStyle} dangerouslySetInnerHTML={{ __html: targetLabel }} />\n )}\n {tiles.map(buildTiles(this.props))}\n </StyledHTilerContainer>\n );\n }\n}\n\nexport class VerticalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const columns = includeTargets ? 2 : 1;\n const rows = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: `repeat(${columns}, ${tileSize})`,\n gridTemplateRows: includeTargets\n ? `auto repeat(${rows}, ${tileSize})`\n : `auto auto repeat(${Math.floor(rows / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n };\n\n return (\n <StyledVTilerContainer includeTargets={includeTargets} style={style}>\n <StyledVChoiceLabel\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n\n {includeTargets && <StyledVTargetLabel dangerouslySetInnerHTML={{ __html: targetLabel }} />}\n {tiles.map(buildTiles(this.props))}\n </StyledVTilerContainer>\n );\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,MAAMI,KAAK,GAAG;EACZC,WAAW,EAAEC,kBAAS,CAACC,MAAM;EAC7BC,WAAW,EAAEF,kBAAS,CAACC,MAAM;EAC7BE,QAAQ,EAAEH,kBAAS,CAACI,IAAI;EACxBC,KAAK,EAAEL,kBAAS,CAACM,KAAK,CAACC,UAAU;EACjCC,QAAQ,EAAER,kBAAS,CAACC,MAAM;EAC1BQ,QAAQ,EAAET,kBAAS,CAACI;AACtB,CAAC;AAED,MAAMM,QAAQ,GAAG;EACfF,QAAQ,EAAE,KAAK;EACfL,QAAQ,EAAE,KAAK;EACfM,QAAQ,EAAE;AACZ,CAAC;AAED,MAAME,UAAU,GAAIC,KAAK,IAAK;EAC5B,MAAMC,CAAC,GAAGA,CAACC,IAAI,EAAEC,KAAK,KAAK;IACzBD,IAAI,CAACE,UAAU,GAAGJ,KAAK,CAACI,UAAU;IAClCF,IAAI,CAACX,QAAQ,GAAGS,KAAK,CAACT,QAAQ;IAC9BW,IAAI,CAACG,UAAU,GAAGL,KAAK,CAACH,QAAQ,GAAGK,IAAI,CAACC,KAAK,GAAG,CAAC,GAAGG,SAAS;
|
|
1
|
+
{"version":3,"file":"tiler.js","names":["_propTypes","_interopRequireDefault","require","_react","_styles","_tile","types","choiceLabel","PropTypes","string","targetLabel","disabled","bool","tiles","array","isRequired","tileSize","addGuide","defaults","buildTiles","props","T","tile","index","instanceId","guideIndex","undefined","tileIndex","includeTargets","default","createElement","_extends2","key","type","label","propTypes","StyledHTilerContainer","styled","theme","display","paddingBottom","spacing","gridGap","StyledChoiceLabel","textAlign","StyledTargetLabel","gridRow","StyledVTilerContainer","gridAutoFlow","StyledVChoiceLabel","gridColumn","StyledVTargetLabel","HorizontalTiler","React","Component","render","choiceLabelEnabled","rows","columns","length","style","gridTemplateColumns","Math","floor","gridTemplateRows","labelStyle","dangerouslySetInnerHTML","__html","map","exports","_defineProperty2","VerticalTiler"],"sources":["../src/tiler.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\n\nimport Tile from './tile';\n\nconst types = {\n choiceLabel: PropTypes.string,\n targetLabel: PropTypes.string,\n disabled: PropTypes.bool,\n tiles: PropTypes.array.isRequired,\n tileSize: PropTypes.string,\n addGuide: PropTypes.bool,\n};\n\nconst defaults = {\n tileSize: '1fr',\n disabled: false,\n addGuide: false,\n};\n\nconst buildTiles = (props) => {\n const T = (tile, index) => {\n tile.instanceId = props.instanceId;\n tile.disabled = props.disabled;\n tile.guideIndex = props.addGuide ? tile.index + 1 : undefined;\n // unique key for dnd-kit IDs\n tile.tileIndex = index;\n\n if (props.includeTargets) {\n return <Tile {...tile} key={index} />;\n } else {\n return tile.type === 'choice' ? <Tile {...tile} key={index} /> : <Tile {...tile} label=\"\" key={index} />;\n }\n };\n\n T.propTypes = { ...types };\n return T;\n};\n\nconst StyledHTilerContainer = styled('div')(({ theme, includeTargets }) => ({\n display: 'grid',\n paddingBottom: theme.spacing(2),\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledChoiceLabel = styled('div')({\n textAlign: 'center',\n});\n\nconst StyledTargetLabel = styled('div')({\n textAlign: 'center',\n gridRow: '3/4',\n});\n\nconst StyledVTilerContainer = styled('div')(({ includeTargets }) => ({\n gridAutoFlow: 'column',\n display: 'grid',\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledVChoiceLabel = styled('div')({\n gridColumn: '1/2',\n textAlign: 'center',\n});\n\nconst StyledVTargetLabel = styled('div')({\n gridColumn: '2/3',\n textAlign: 'center',\n});\n\nexport class HorizontalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const rows = includeTargets ? `auto ${tileSize} auto ${tileSize}` : `auto ${tileSize} auto`;\n const columns = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: includeTargets\n ? `repeat(${columns}, ${tileSize})`\n : `auto repeat(${Math.floor(columns / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n gridTemplateRows: rows,\n };\n\n const labelStyle = {\n gridColumn: `1/${columns + 1}`,\n };\n\n return (\n <StyledHTilerContainer includeTargets={includeTargets} style={style}>\n <StyledChoiceLabel\n style={labelStyle}\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n {includeTargets && (\n <StyledTargetLabel style={labelStyle} dangerouslySetInnerHTML={{ __html: targetLabel }} />\n )}\n {tiles.map(buildTiles(this.props))}\n </StyledHTilerContainer>\n );\n }\n}\n\nexport class VerticalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const columns = includeTargets ? 2 : 1;\n const rows = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: `repeat(${columns}, ${tileSize})`,\n gridTemplateRows: includeTargets\n ? `auto repeat(${rows}, ${tileSize})`\n : `auto auto repeat(${Math.floor(rows / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n };\n\n return (\n <StyledVTilerContainer includeTargets={includeTargets} style={style}>\n <StyledVChoiceLabel\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n\n {includeTargets && <StyledVTargetLabel dangerouslySetInnerHTML={{ __html: targetLabel }} />}\n {tiles.map(buildTiles(this.props))}\n </StyledVTilerContainer>\n );\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,KAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,MAAMI,KAAK,GAAG;EACZC,WAAW,EAAEC,kBAAS,CAACC,MAAM;EAC7BC,WAAW,EAAEF,kBAAS,CAACC,MAAM;EAC7BE,QAAQ,EAAEH,kBAAS,CAACI,IAAI;EACxBC,KAAK,EAAEL,kBAAS,CAACM,KAAK,CAACC,UAAU;EACjCC,QAAQ,EAAER,kBAAS,CAACC,MAAM;EAC1BQ,QAAQ,EAAET,kBAAS,CAACI;AACtB,CAAC;AAED,MAAMM,QAAQ,GAAG;EACfF,QAAQ,EAAE,KAAK;EACfL,QAAQ,EAAE,KAAK;EACfM,QAAQ,EAAE;AACZ,CAAC;AAED,MAAME,UAAU,GAAIC,KAAK,IAAK;EAC5B,MAAMC,CAAC,GAAGA,CAACC,IAAI,EAAEC,KAAK,KAAK;IACzBD,IAAI,CAACE,UAAU,GAAGJ,KAAK,CAACI,UAAU;IAClCF,IAAI,CAACX,QAAQ,GAAGS,KAAK,CAACT,QAAQ;IAC9BW,IAAI,CAACG,UAAU,GAAGL,KAAK,CAACH,QAAQ,GAAGK,IAAI,CAACC,KAAK,GAAG,CAAC,GAAGG,SAAS;IAC7D;IACAJ,IAAI,CAACK,SAAS,GAAGJ,KAAK;IAEtB,IAAIH,KAAK,CAACQ,cAAc,EAAE;MACxB,oBAAOzB,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACzB,KAAA,CAAAwB,OAAI,MAAAE,SAAA,CAAAF,OAAA,MAAKP,IAAI;QAAEU,GAAG,EAAET;MAAM,EAAE,CAAC;IACvC,CAAC,MAAM;MACL,OAAOD,IAAI,CAACW,IAAI,KAAK,QAAQ,gBAAG9B,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACzB,KAAA,CAAAwB,OAAI,MAAAE,SAAA,CAAAF,OAAA,MAAKP,IAAI;QAAEU,GAAG,EAAET;MAAM,EAAE,CAAC,gBAAGpB,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACzB,KAAA,CAAAwB,OAAI,MAAAE,SAAA,CAAAF,OAAA,MAAKP,IAAI;QAAEY,KAAK,EAAC,EAAE;QAACF,GAAG,EAAET;MAAM,EAAE,CAAC;IAC1G;EACF,CAAC;EAEDF,CAAC,CAACc,SAAS,GAAG;IAAE,GAAG7B;EAAM,CAAC;EAC1B,OAAOe,CAAC;AACV,CAAC;AAED,MAAMe,qBAAqB,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC,KAAK;EAAEV;AAAe,CAAC,MAAM;EAC1EW,OAAO,EAAE,MAAM;EACfC,aAAa,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC,CAAC;EAC/B,IAAIb,cAAc,IAAI;IACpBc,OAAO,EAAE;EACX,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAMC,iBAAiB,GAAG,IAAAN,cAAM,EAAC,KAAK,CAAC,CAAC;EACtCO,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,MAAMC,iBAAiB,GAAG,IAAAR,cAAM,EAAC,KAAK,CAAC,CAAC;EACtCO,SAAS,EAAE,QAAQ;EACnBE,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,qBAAqB,GAAG,IAAAV,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAET;AAAe,CAAC,MAAM;EACnEoB,YAAY,EAAE,QAAQ;EACtBT,OAAO,EAAE,MAAM;EACf,IAAIX,cAAc,IAAI;IACpBc,OAAO,EAAE;EACX,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAMO,kBAAkB,GAAG,IAAAZ,cAAM,EAAC,KAAK,CAAC,CAAC;EACvCa,UAAU,EAAE,KAAK;EACjBN,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,MAAMO,kBAAkB,GAAG,IAAAd,cAAM,EAAC,KAAK,CAAC,CAAC;EACvCa,UAAU,EAAE,KAAK;EACjBN,SAAS,EAAE;AACb,CAAC,CAAC;AAEK,MAAMQ,eAAe,SAASC,cAAK,CAACC,SAAS,CAAC;EAGnDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAE3B,cAAc;MAAE4B,kBAAkB;MAAEjD,WAAW;MAAEG,WAAW;MAAEG,KAAK;MAAEG;IAAS,CAAC,GAAG,IAAI,CAACI,KAAK;IAEpG,MAAMqC,IAAI,GAAG7B,cAAc,GAAG,QAAQZ,QAAQ,SAASA,QAAQ,EAAE,GAAG,QAAQA,QAAQ,OAAO;IAC3F,MAAM0C,OAAO,GAAG9B,cAAc,GAAGf,KAAK,CAAC8C,MAAM,GAAG,CAAC,GAAG9C,KAAK,CAAC8C,MAAM;IAEhE,MAAMC,KAAK,GAAG;MACZC,mBAAmB,EAAEjC,cAAc,GAC/B,UAAU8B,OAAO,KAAK1C,QAAQ,GAAG,GACjC,eAAe8C,IAAI,CAACC,KAAK,CAACL,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK1C,QAAQ,UAAUA,QAAQ,OAAO;MACpFgD,gBAAgB,EAAEP;IACpB,CAAC;IAED,MAAMQ,UAAU,GAAG;MACjBf,UAAU,EAAE,KAAKQ,OAAO,GAAG,CAAC;IAC9B,CAAC;IAED,oBACEvD,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACM,qBAAqB;MAACR,cAAc,EAAEA,cAAe;MAACgC,KAAK,EAAEA;IAAM,gBAClEzD,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACa,iBAAiB;MAChBiB,KAAK,EAAEK,UAAW;MAClBC,uBAAuB,EAAE;QAAEC,MAAM,EAAEX,kBAAkB,GAAGjD,WAAW,GAAG;MAAG;IAAE,CAC5E,CAAC,EACDqB,cAAc,iBACbzB,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACe,iBAAiB;MAACe,KAAK,EAAEK,UAAW;MAACC,uBAAuB,EAAE;QAAEC,MAAM,EAAEzD;MAAY;IAAE,CAAE,CAC1F,EACAG,KAAK,CAACuD,GAAG,CAACjD,UAAU,CAAC,IAAI,CAACC,KAAK,CAAC,CACZ,CAAC;EAE5B;AACF;AAACiD,OAAA,CAAAjB,eAAA,GAAAA,eAAA;AAAA,IAAAkB,gBAAA,CAAAzC,OAAA,EAjCYuB,eAAe,eACP;EAAE,GAAG9C;AAAM,CAAC;AAAA,IAAAgE,gBAAA,CAAAzC,OAAA,EADpBuB,eAAe,kBAEJ;EAAE,GAAGlC;AAAS,CAAC;AAiChC,MAAMqD,aAAa,SAASlB,cAAK,CAACC,SAAS,CAAC;EAGjDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAE3B,cAAc;MAAE4B,kBAAkB;MAAEjD,WAAW;MAAEG,WAAW;MAAEG,KAAK;MAAEG;IAAS,CAAC,GAAG,IAAI,CAACI,KAAK;IAEpG,MAAMsC,OAAO,GAAG9B,cAAc,GAAG,CAAC,GAAG,CAAC;IACtC,MAAM6B,IAAI,GAAG7B,cAAc,GAAGf,KAAK,CAAC8C,MAAM,GAAG,CAAC,GAAG9C,KAAK,CAAC8C,MAAM;IAE7D,MAAMC,KAAK,GAAG;MACZC,mBAAmB,EAAE,UAAUH,OAAO,KAAK1C,QAAQ,GAAG;MACtDgD,gBAAgB,EAAEpC,cAAc,GAC5B,eAAe6B,IAAI,KAAKzC,QAAQ,GAAG,GACnC,oBAAoB8C,IAAI,CAACC,KAAK,CAACN,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAKzC,QAAQ,UAAUA,QAAQ;IACjF,CAAC;IAED,oBACEb,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACiB,qBAAqB;MAACnB,cAAc,EAAEA,cAAe;MAACgC,KAAK,EAAEA;IAAM,gBAClEzD,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACmB,kBAAkB;MACjBiB,uBAAuB,EAAE;QAAEC,MAAM,EAAEX,kBAAkB,GAAGjD,WAAW,GAAG;MAAG;IAAE,CAC5E,CAAC,EAEDqB,cAAc,iBAAIzB,MAAA,CAAA0B,OAAA,CAAAC,aAAA,CAACqB,kBAAkB;MAACe,uBAAuB,EAAE;QAAEC,MAAM,EAAEzD;MAAY;IAAE,CAAE,CAAC,EAC1FG,KAAK,CAACuD,GAAG,CAACjD,UAAU,CAAC,IAAI,CAACC,KAAK,CAAC,CACZ,CAAC;EAE5B;AACF;AAACiD,OAAA,CAAAE,aAAA,GAAAA,aAAA;AAAA,IAAAD,gBAAA,CAAAzC,OAAA,EA3BY0C,aAAa,eACL;EAAE,GAAGjE;AAAM,CAAC;AAAA,IAAAgE,gBAAA,CAAAzC,OAAA,EADpB0C,aAAa,kBAEF;EAAE,GAAGrD;AAAS,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/placement-ordering",
|
|
3
|
-
"repository":
|
|
4
|
-
|
|
5
|
-
"url": "https://github.com/pie-framework/pie-elements"
|
|
6
|
-
},
|
|
7
|
-
"version": "13.1.0-next.0+20d879b",
|
|
3
|
+
"repository": "pie-framework/pie-elements",
|
|
4
|
+
"version": "13.1.1-next.2",
|
|
8
5
|
"description": "",
|
|
9
6
|
"publishConfig": {
|
|
10
7
|
"access": "public"
|
|
@@ -16,11 +13,11 @@
|
|
|
16
13
|
"@mui/icons-material": "^7.3.4",
|
|
17
14
|
"@mui/material": "^7.3.4",
|
|
18
15
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
19
|
-
"@pie-lib/correct-answer-toggle": "3.
|
|
20
|
-
"@pie-lib/drag": "3.
|
|
21
|
-
"@pie-lib/math-rendering": "4.
|
|
22
|
-
"@pie-lib/render-ui": "5.
|
|
23
|
-
"@pie-lib/translator": "3.
|
|
16
|
+
"@pie-lib/correct-answer-toggle": "3.2.0-next.4",
|
|
17
|
+
"@pie-lib/drag": "3.2.0-next.4",
|
|
18
|
+
"@pie-lib/math-rendering": "4.2.0-next.3",
|
|
19
|
+
"@pie-lib/render-ui": "5.2.0-next.4",
|
|
20
|
+
"@pie-lib/translator": "3.2.0-next.3",
|
|
24
21
|
"debug": "^4.1.1",
|
|
25
22
|
"decimal.js": "^10.0.0",
|
|
26
23
|
"lodash-es": "^4.17.23",
|
|
@@ -31,7 +28,7 @@
|
|
|
31
28
|
},
|
|
32
29
|
"author": "",
|
|
33
30
|
"license": "ISC",
|
|
34
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "a29aff6c2f994c4e4b4847f67a5e9f2928e703af",
|
|
35
32
|
"scripts": {
|
|
36
33
|
"postpublish": "../../scripts/postpublish"
|
|
37
34
|
},
|