@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/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["default"] = void 0;
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
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
31
-
32
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
-
34
- var Main = /*#__PURE__*/function (_React$Component) {
35
- (0, _inherits2["default"])(Main, _React$Component);
36
-
37
- var _super = _createSuper(Main);
38
-
39
- function Main() {
40
- (0, _classCallCheck2["default"])(this, Main);
41
- return _super.apply(this, arguments);
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
- (0, _createClass2["default"])(Main, [{
45
- key: "render",
46
- value: function render() {
47
- var _this$props = this.props,
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 out = (0, _drag.withDragContext)(Main);
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,"sources":["../src/main.jsx"],"names":["Main","props","model","session","onSessionChange","React","Component","PropTypes","object","isRequired","oneOfType","array","func","out"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;IAEMA,I;;;;;;;;;;;;WAOJ,kBAAS;AACP,wBAA4C,KAAKC,KAAjD;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,OAAf,eAAeA,OAAf;AAAA,UAAwBC,eAAxB,eAAwBA,eAAxB;AAEA,0BAAO,gCAAC,6BAAD;AAAmB,QAAA,KAAK,EAAEF,KAA1B;AAAiC,QAAA,OAAO,EAAEC,OAA1C;AAAmD,QAAA,eAAe,EAAEC;AAApE,QAAP;AACD;;;EAXgBC,kBAAMC,S;;iCAAnBN,I,eACe;AACjBE,EAAAA,KAAK,EAAEK,sBAAUC,MAAV,CAAiBC,UADP;AAEjBN,EAAAA,OAAO,EAAEI,sBAAUG,SAAV,CAAoB,CAACH,sBAAUI,KAAV,CAAgBF,UAAjB,EAA6BF,sBAAUC,MAAV,CAAiBC,UAA9C,CAApB,CAFQ;AAGjBL,EAAAA,eAAe,EAAEG,sBAAUK,IAAV,CAAeH;AAHf,C;AAarB,IAAMI,GAAG,GAAG,2BAAgBb,IAAhB,CAAZ;eAEea,G","sourcesContent":["import PlacementOrdering from './placement-ordering';\nimport React from 'react';\nimport { withDragContext } from '@pie-lib/drag';\n\nimport PropTypes from 'prop-types';\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 <PlacementOrdering model={model} session={session} onSessionChange={onSessionChange} />;\n }\n}\n\nconst out = withDragContext(Main);\n\nexport default out;\n"],"file":"main.js"}
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
- var log = (0, _debug["default"])('pie-elements:placement-ordering:ordering');
26
-
27
- var push = function push(arr, fromIndex, toIndex) {
28
- var movedItem = arr.find(function (item, index) {
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("swap requires a non-empty array, fromIndex, toIndex: ".concat(arr, ", ").concat(fromIndex, " ").concat(toIndex));
26
+ throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);
44
27
  }
45
-
46
- var update = (0, _cloneDeep["default"])(arr);
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
- var update = (0, _cloneDeep["default"])(state.response);
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("Tried to remove from index: ".concat(targetTile.index, ", but the id doesn't match: array: ").concat(update, ", target: ").concat(targetTile.id));
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
- var response = state.response,
69
- opts = state.opts;
70
- var update = (0, _cloneDeep["default"])(response);
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
- var fromIndex = state.response.findIndex(function (r) {
87
- return r !== undefined && r === from.id;
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
- var targets = [];
100
-
101
- var _loop = function _loop(i) {
102
- var r = response[i];
103
- var choice = choices.find(function (c) {
104
- return r !== undefined && r !== null && c.id === r;
105
- }); //TODO: index needs to match too!!
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(function (acc, id, index) {
141
- var emptyTile = Object.assign({
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(function (m) {
146
- return m.id === id;
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(function (m) {
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["default"])({
125
+ opts = (0, _assign.default)({
168
126
  includeTargets: true
169
127
  }, opts);
170
128
  outcomes = outcomes || [];
171
- response = !response || (0, _isEmpty["default"])(response) ? opts.includeTargets ? new Array(choices.length) : (0, _map["default"])(choices, function (c) {
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: choices,
176
- response: response,
177
- opts: opts,
178
- outcomes: 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
- var from = action.from,
188
- to = action.to;
189
- var response = updateResponse(state, from, to);
190
- var tiles = buildTiles(state.choices, response, state.outcomes, state.opts);
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: response,
193
- tiles: tiles
149
+ response,
150
+ tiles
194
151
  });
195
152
  }
196
-
197
153
  case 'remove':
198
154
  {
199
- var target = action.target;
200
-
201
- var _response = removeResponse(state, target);
202
-
203
- var _tiles = buildTiles(state.choices, _response, state.outcomes, state.opts);
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: _response,
207
- tiles: _tiles
161
+ response,
162
+ tiles
208
163
  });
209
164
  }
210
165
  }
211
-
212
166
  return state;
213
167
  }
214
168
  //# sourceMappingURL=ordering.js.map
@@ -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":[]}