@pie-element/placement-ordering 12.3.4-next.0 → 13.0.0-beta.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.
- package/configure/lib/choice-editor.js +189 -414
- package/configure/lib/choice-editor.js.map +1 -1
- package/configure/lib/choice-tile.js +172 -263
- package/configure/lib/choice-tile.js.map +1 -1
- package/configure/lib/defaults.js +2 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design.js +389 -455
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/help.js +5 -13
- package/configure/lib/help.js.map +1 -1
- package/configure/lib/index.js +118 -193
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +99 -4
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +12 -10
- package/controller/lib/defaults.js +2 -3
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +133 -218
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/scoring.js +35 -78
- package/controller/lib/scoring.js.map +1 -1
- package/controller/package.json +4 -4
- package/lib/index.js +63 -127
- package/lib/index.js.map +1 -1
- package/lib/main.js +20 -57
- package/lib/main.js.map +1 -1
- package/lib/ordering.js +52 -98
- package/lib/ordering.js.map +1 -1
- package/lib/placement-ordering.js +331 -381
- package/lib/placement-ordering.js.map +1 -1
- package/lib/tile.js +193 -267
- package/lib/tile.js.map +1 -1
- package/lib/tiler.js +126 -204
- package/lib/tiler.js.map +1 -1
- package/lib/utils.js +6 -18
- package/lib/utils.js.map +1 -1
- package/package.json +14 -11
package/lib/main.js
CHANGED
|
@@ -1,69 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
|
|
16
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
|
|
18
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
-
|
|
7
|
+
exports.default = void 0;
|
|
20
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
|
-
var _placementOrdering = _interopRequireDefault(require("./placement-ordering"));
|
|
23
|
-
|
|
24
9
|
var _react = _interopRequireDefault(require("react"));
|
|
25
|
-
|
|
26
|
-
var _drag = require("@pie-lib/drag");
|
|
27
|
-
|
|
28
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
11
|
+
var _placementOrdering = _interopRequireDefault(require("./placement-ordering"));
|
|
12
|
+
class Main extends _react.default.Component {
|
|
13
|
+
render() {
|
|
14
|
+
const {
|
|
15
|
+
model,
|
|
16
|
+
session,
|
|
17
|
+
onSessionChange
|
|
18
|
+
} = this.props;
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_placementOrdering.default, {
|
|
20
|
+
model: model,
|
|
21
|
+
session: session,
|
|
22
|
+
onSessionChange: onSessionChange
|
|
23
|
+
});
|
|
42
24
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
model = _this$props.model,
|
|
49
|
-
session = _this$props.session,
|
|
50
|
-
onSessionChange = _this$props.onSessionChange;
|
|
51
|
-
return /*#__PURE__*/_react["default"].createElement(_placementOrdering["default"], {
|
|
52
|
-
model: model,
|
|
53
|
-
session: session,
|
|
54
|
-
onSessionChange: onSessionChange
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}]);
|
|
58
|
-
return Main;
|
|
59
|
-
}(_react["default"].Component);
|
|
60
|
-
|
|
61
|
-
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
62
|
-
model: _propTypes["default"].object.isRequired,
|
|
63
|
-
session: _propTypes["default"].oneOfType([_propTypes["default"].array.isRequired, _propTypes["default"].object.isRequired]),
|
|
64
|
-
onSessionChange: _propTypes["default"].func.isRequired
|
|
25
|
+
}
|
|
26
|
+
(0, _defineProperty2.default)(Main, "propTypes", {
|
|
27
|
+
model: _propTypes.default.object.isRequired,
|
|
28
|
+
session: _propTypes.default.oneOfType([_propTypes.default.array.isRequired, _propTypes.default.object.isRequired]),
|
|
29
|
+
onSessionChange: _propTypes.default.func.isRequired
|
|
65
30
|
});
|
|
66
|
-
var
|
|
67
|
-
var _default = out;
|
|
68
|
-
exports["default"] = _default;
|
|
31
|
+
var _default = exports.default = Main;
|
|
69
32
|
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_placementOrdering","Main","React","Component","render","model","session","onSessionChange","props","default","createElement","_defineProperty2","PropTypes","object","isRequired","oneOfType","array","func","_default","exports"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PlacementOrdering from './placement-ordering';\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n onSessionChange: PropTypes.func.isRequired,\n };\n\n render() {\n const { model, session, onSessionChange } = this.props;\n\n return (\n <PlacementOrdering model={model} session={session} onSessionChange={onSessionChange} />\n );\n }\n}\n\nexport default Main;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,MAAMG,IAAI,SAASC,cAAK,CAACC,SAAS,CAAC;EAOjCC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,KAAK;MAAEC,OAAO;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtD,oBACEZ,MAAA,CAAAa,OAAA,CAAAC,aAAA,CAACV,kBAAA,CAAAS,OAAiB;MAACJ,KAAK,EAAEA,KAAM;MAACC,OAAO,EAAEA,OAAQ;MAACC,eAAe,EAAEA;IAAgB,CAAE,CAAC;EAE3F;AACF;AAAC,IAAAI,gBAAA,CAAAF,OAAA,EAdKR,IAAI,eACW;EACjBI,KAAK,EAAEO,kBAAS,CAACC,MAAM,CAACC,UAAU;EAClCR,OAAO,EAAEM,kBAAS,CAACG,SAAS,CAAC,CAACH,kBAAS,CAACI,KAAK,CAACF,UAAU,EAAEF,kBAAS,CAACC,MAAM,CAACC,UAAU,CAAC,CAAC;EACvFP,eAAe,EAAEK,kBAAS,CAACK,IAAI,CAACH;AAClC,CAAC;AAAA,IAAAI,QAAA,GAAAC,OAAA,CAAAV,OAAA,GAWYR,IAAI","ignoreList":[]}
|
package/lib/ordering.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -9,66 +8,45 @@ exports.buildState = buildState;
|
|
|
9
8
|
exports.push = void 0;
|
|
10
9
|
exports.reducer = reducer;
|
|
11
10
|
exports.swap = void 0;
|
|
12
|
-
|
|
13
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
14
|
-
|
|
15
11
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
16
|
-
|
|
17
12
|
var _debug = _interopRequireDefault(require("debug"));
|
|
18
|
-
|
|
19
13
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
20
|
-
|
|
21
14
|
var _map = _interopRequireDefault(require("lodash/map"));
|
|
22
|
-
|
|
23
15
|
var _assign = _interopRequireDefault(require("lodash/assign"));
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return index === fromIndex;
|
|
30
|
-
});
|
|
31
|
-
var remainingItems = arr.filter(function (item, index) {
|
|
32
|
-
return index !== fromIndex;
|
|
33
|
-
});
|
|
34
|
-
return [].concat((0, _toConsumableArray2["default"])(remainingItems.slice(0, toIndex)), [movedItem], (0, _toConsumableArray2["default"])(remainingItems.slice(toIndex)));
|
|
16
|
+
const log = (0, _debug.default)('pie-elements:placement-ordering:ordering');
|
|
17
|
+
const push = (arr, fromIndex, toIndex) => {
|
|
18
|
+
const movedItem = arr.find((item, index) => index === fromIndex);
|
|
19
|
+
const remainingItems = arr.filter((item, index) => index !== fromIndex);
|
|
20
|
+
return [...remainingItems.slice(0, toIndex), movedItem, ...remainingItems.slice(toIndex)];
|
|
35
21
|
};
|
|
36
|
-
|
|
37
22
|
exports.push = push;
|
|
38
|
-
|
|
39
|
-
var swap = function swap(arr, fromIndex, toIndex) {
|
|
23
|
+
const swap = (arr, fromIndex, toIndex) => {
|
|
40
24
|
log('[swap]', arr, fromIndex, toIndex);
|
|
41
|
-
|
|
42
25
|
if (!arr || arr.length <= 1 || fromIndex === undefined || toIndex === undefined) {
|
|
43
|
-
throw new Error(
|
|
26
|
+
throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);
|
|
44
27
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var tmp = arr[toIndex];
|
|
28
|
+
const update = (0, _cloneDeep.default)(arr);
|
|
29
|
+
const tmp = arr[toIndex];
|
|
48
30
|
update[toIndex] = update[fromIndex];
|
|
49
31
|
update[fromIndex] = tmp;
|
|
50
32
|
return update;
|
|
51
33
|
};
|
|
52
|
-
|
|
53
34
|
exports.swap = swap;
|
|
54
|
-
|
|
55
35
|
function removeResponse(state, targetTile) {
|
|
56
|
-
|
|
57
|
-
|
|
36
|
+
const update = (0, _cloneDeep.default)(state.response);
|
|
58
37
|
if (update[targetTile.index] === targetTile.id) {
|
|
59
38
|
update[targetTile.index] = undefined;
|
|
60
39
|
} else {
|
|
61
|
-
throw new Error(
|
|
40
|
+
throw new Error(`Tried to remove from index: ${targetTile.index}, but the id doesn't match: array: ${update}, target: ${targetTile.id}`);
|
|
62
41
|
}
|
|
63
|
-
|
|
64
42
|
return update;
|
|
65
43
|
}
|
|
66
|
-
|
|
67
44
|
function updateResponse(state, from, to) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
45
|
+
const {
|
|
46
|
+
response,
|
|
47
|
+
opts
|
|
48
|
+
} = state;
|
|
49
|
+
const update = (0, _cloneDeep.default)(response);
|
|
72
50
|
if (opts.includeTargets) {
|
|
73
51
|
if (from.type === 'choice' && to.type === 'target') {
|
|
74
52
|
update[to.index] = from.id;
|
|
@@ -83,29 +61,21 @@ function updateResponse(state, from, to) {
|
|
|
83
61
|
return response;
|
|
84
62
|
}
|
|
85
63
|
} else {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
89
|
-
var toIndex = state.response.findIndex(function (r) {
|
|
90
|
-
return r !== undefined && r === to.id;
|
|
91
|
-
});
|
|
64
|
+
const fromIndex = state.response.findIndex(r => r !== undefined && r === from.id);
|
|
65
|
+
const toIndex = state.response.findIndex(r => r !== undefined && r === to.id);
|
|
92
66
|
log('fromIndex: ', fromIndex, 'toIndex:', toIndex);
|
|
93
67
|
return push(state.response, fromIndex, toIndex);
|
|
94
68
|
}
|
|
95
69
|
}
|
|
96
|
-
|
|
97
70
|
function buildTiles(choices, response, outcomes, opts) {
|
|
98
71
|
if (opts.includeTargets) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
var outcome = outcomes[i];
|
|
108
|
-
var out = Object.assign({
|
|
72
|
+
const targets = [];
|
|
73
|
+
for (let i = 0; i < response.length; i++) {
|
|
74
|
+
const r = response[i];
|
|
75
|
+
const choice = choices.find(c => r !== undefined && r !== null && c.id === r);
|
|
76
|
+
//TODO: index needs to match too!!
|
|
77
|
+
const outcome = outcomes[i];
|
|
78
|
+
const out = Object.assign({
|
|
109
79
|
type: 'target',
|
|
110
80
|
index: i,
|
|
111
81
|
empty: choice === undefined
|
|
@@ -113,13 +83,8 @@ function buildTiles(choices, response, outcomes, opts) {
|
|
|
113
83
|
draggable: choice !== undefined
|
|
114
84
|
});
|
|
115
85
|
targets.push(out);
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
for (var i = 0; i < response.length; i++) {
|
|
119
|
-
_loop(i);
|
|
120
86
|
}
|
|
121
|
-
|
|
122
|
-
var processedChoices = choices.map(function (m) {
|
|
87
|
+
const processedChoices = choices.map(m => {
|
|
123
88
|
if (response.indexOf(m.id) !== -1 && !opts.allowSameChoiceInTargets) {
|
|
124
89
|
return {
|
|
125
90
|
type: 'choice',
|
|
@@ -137,78 +102,67 @@ function buildTiles(choices, response, outcomes, opts) {
|
|
|
137
102
|
});
|
|
138
103
|
return processedChoices.concat(targets);
|
|
139
104
|
} else {
|
|
140
|
-
return response.reduce(
|
|
141
|
-
|
|
105
|
+
return response.reduce((acc, id, index) => {
|
|
106
|
+
const emptyTile = Object.assign({
|
|
142
107
|
type: 'empty',
|
|
143
108
|
draggable: false,
|
|
144
109
|
droppable: true
|
|
145
|
-
}, choices.find(
|
|
146
|
-
|
|
147
|
-
}), outcomes[index]);
|
|
148
|
-
var choiceTile = Object.assign({
|
|
110
|
+
}, choices.find(m => m.id === id), outcomes[index]);
|
|
111
|
+
const choiceTile = Object.assign({
|
|
149
112
|
type: 'choice',
|
|
150
113
|
draggable: true,
|
|
151
114
|
droppable: true
|
|
152
|
-
}, choices.find(
|
|
153
|
-
return m.id === id;
|
|
154
|
-
}), outcomes[index]);
|
|
155
|
-
|
|
115
|
+
}, choices.find(m => m.id === id), outcomes[index]);
|
|
156
116
|
if (index === 0) {
|
|
157
117
|
acc.push(emptyTile);
|
|
158
118
|
}
|
|
159
|
-
|
|
160
119
|
acc.push(choiceTile, emptyTile);
|
|
161
120
|
return acc;
|
|
162
121
|
}, []);
|
|
163
122
|
}
|
|
164
123
|
}
|
|
165
|
-
|
|
166
124
|
function buildState(choices, response, outcomes, opts) {
|
|
167
|
-
opts = (0, _assign
|
|
125
|
+
opts = (0, _assign.default)({
|
|
168
126
|
includeTargets: true
|
|
169
127
|
}, opts);
|
|
170
128
|
outcomes = outcomes || [];
|
|
171
|
-
response = !response || (0, _isEmpty
|
|
172
|
-
return c.id;
|
|
173
|
-
}) : response;
|
|
129
|
+
response = !response || (0, _isEmpty.default)(response) ? opts.includeTargets ? new Array(choices.length) : (0, _map.default)(choices, c => c.id) : response;
|
|
174
130
|
return {
|
|
175
|
-
choices
|
|
176
|
-
response
|
|
177
|
-
opts
|
|
178
|
-
outcomes
|
|
131
|
+
choices,
|
|
132
|
+
response,
|
|
133
|
+
opts,
|
|
134
|
+
outcomes,
|
|
179
135
|
tiles: buildTiles(choices, response, outcomes, opts)
|
|
180
136
|
};
|
|
181
137
|
}
|
|
182
|
-
|
|
183
138
|
function reducer(action, state) {
|
|
184
139
|
switch (action.type) {
|
|
185
140
|
case 'move':
|
|
186
141
|
{
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
142
|
+
const {
|
|
143
|
+
from,
|
|
144
|
+
to
|
|
145
|
+
} = action;
|
|
146
|
+
const response = updateResponse(state, from, to);
|
|
147
|
+
const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);
|
|
191
148
|
return Object.assign({}, state, {
|
|
192
|
-
response
|
|
193
|
-
tiles
|
|
149
|
+
response,
|
|
150
|
+
tiles
|
|
194
151
|
});
|
|
195
152
|
}
|
|
196
|
-
|
|
197
153
|
case 'remove':
|
|
198
154
|
{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
155
|
+
const {
|
|
156
|
+
target
|
|
157
|
+
} = action;
|
|
158
|
+
const response = removeResponse(state, target);
|
|
159
|
+
const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);
|
|
205
160
|
return Object.assign({}, state, {
|
|
206
|
-
response
|
|
207
|
-
tiles
|
|
161
|
+
response,
|
|
162
|
+
tiles
|
|
208
163
|
});
|
|
209
164
|
}
|
|
210
165
|
}
|
|
211
|
-
|
|
212
166
|
return state;
|
|
213
167
|
}
|
|
214
168
|
//# sourceMappingURL=ordering.js.map
|
package/lib/ordering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ordering.js"],"names":["log","push","arr","fromIndex","toIndex","movedItem","find","item","index","remainingItems","filter","slice","swap","length","undefined","Error","update","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","Array","tiles","reducer","action","target"],"mappings":"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","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"],"file":"ordering.js"}
|
|
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":[]}
|