@gamelearn/arcade-components 2.28.0 → 2.29.3

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.
@@ -64,13 +64,18 @@ var AnimationComponent = function AnimationComponent(_ref) {
64
64
  loader.load(animation.url, function (gltf) {
65
65
  var mixer = object.userData.mixer;
66
66
  var defaultAnim = object.userData.defaultAnim;
67
+ if (!object.userData.actionList) object.userData.actionList = {};
68
+ var actionList = object.userData.actionList;
69
+ if (!actionList.idle) {
70
+ var action = mixer.existingAction(defaultAnim, object);
71
+ actionList.idle = action;
72
+ }
67
73
  var currentAction = mixer.clipAction(gltf.animations[0], object);
68
- var oldAction = mixer.clipAction(defaultAnim, object);
69
74
  currentAction.setLoop(_three.LoopRepeat, loopTimes);
70
- mixer.stopAllAction();
71
- (0, _helpers.executeCrossFade)(oldAction, currentAction, 0.5);
75
+ (0, _helpers.activateAction)(currentAction, 0);
76
+ (0, _helpers.executeCrossFade)(actionList.idle, currentAction);
72
77
  var finishCallback = function finishCallback() {
73
- (0, _helpers.executeCrossFade)(currentAction, oldAction, 0.5);
78
+ (0, _helpers.executeCrossFade)(currentAction, actionList.idle);
74
79
  if (canInteract) emitEvent({
75
80
  type: 'success'
76
81
  });
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _useEkho = _interopRequireDefault(require("../../../helpers/useEkho"));
10
+ var _LangIsRtl = _interopRequireDefault(require("../../../helpers/LangIsRtl"));
10
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -105,16 +106,16 @@ var CartelComponent = function CartelComponent(_ref) {
105
106
  }, /*#__PURE__*/_react.default.createElement("div", {
106
107
  className: "cartel__text"
107
108
  }, /*#__PURE__*/_react.default.createElement("span", null, text))) : null)), /*#__PURE__*/_react.default.createElement("div", {
108
- className: "position--absolute top right"
109
+ className: "position--absolute center right"
109
110
  }, /*#__PURE__*/_react.default.createElement("button", {
110
111
  type: "button",
111
- className: "gat--btn__round gat--btn__close",
112
+ className: "gat--btn__round",
112
113
  onClick: function onClick() {
113
114
  return close();
114
115
  },
115
116
  "aria-label": translate('storylines.misc.closePiece')
116
117
  }, /*#__PURE__*/_react.default.createElement("span", {
117
- className: "icon-close"
118
+ className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
118
119
  }))));
119
120
  };
120
121
  var _default = CartelComponent;
@@ -174,31 +174,22 @@ var ComicComponent = function ComicComponent(_ref) {
174
174
  "aria-label": (0, _LangIsRtl.default)() ? translate('comic.next') : translate('comic.previous')
175
175
  }, /*#__PURE__*/_react.default.createElement("span", {
176
176
  className: (0, _LangIsRtl.default)() ? 'icon-next' : 'icon-back'
177
- })), slideCount + 1 < slides.length && /*#__PURE__*/_react.default.createElement("button", {
177
+ })), slideCount < slides.length && /*#__PURE__*/_react.default.createElement("button", {
178
178
  type: "button",
179
179
  className: "comic-control comic-control--right gat--btn__round",
180
180
  "data-testid": "btn-nxt",
181
- onClick: handleManualNext,
182
- "aria-label": (0, _LangIsRtl.default)() ? translate('comic.previous') : translate('comic.next')
183
- }, /*#__PURE__*/_react.default.createElement("span", {
184
- className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
185
- })), slideCount + 1 >= slides.length && /*#__PURE__*/_react.default.createElement("div", {
186
- className: "position--absolute top right",
187
- role: "heading",
188
- "aria-level": "1",
189
- "aria-label": "heading"
190
- }, /*#__PURE__*/_react.default.createElement("button", {
191
- type: "button",
192
- className: "gat--btn__round gat--btn__close",
193
- "data-testid": "btn-cls",
194
181
  onClick: function onClick() {
195
- play('click-ui');
196
- close();
182
+ if (slideCount + 1 < slides.length) {
183
+ handleManualNext();
184
+ } else {
185
+ play('click-ui');
186
+ close();
187
+ }
197
188
  },
198
- "aria-label": translate('storylines.misc.closePiece')
189
+ "aria-label": (0, _LangIsRtl.default)() ? translate('comic.previous') : translate('comic.next')
199
190
  }, /*#__PURE__*/_react.default.createElement("span", {
200
- className: "icon-close"
201
- })))));
191
+ className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
192
+ }))));
202
193
  };
203
194
  var _default = ComicComponent;
204
195
  exports.default = _default;
@@ -74,11 +74,14 @@ var DecisionBody = function DecisionBody(_ref) {
74
74
  className: "popup--buttons"
75
75
  }, (required ? !failed : selectedChoice.id !== undefined) ? /*#__PURE__*/_react.default.createElement("button", {
76
76
  type: "button",
77
- className: "gat--btn gat--btn__primary ".concat(selectedChoice.id !== undefined ? '' : 'disabled'),
77
+ className: "gat--btn__navigation ".concat(selectedChoice.id !== undefined ? '' : 'disabled'),
78
78
  onClick: function onClick() {
79
- return onNext(selectedChoice);
80
- }
81
- }, translate('screens.continue')) : null));
79
+ return selectedChoice.id !== undefined && onNext(selectedChoice);
80
+ },
81
+ "aria-label": translate('storylines.misc.closePiece')
82
+ }, /*#__PURE__*/_react.default.createElement("span", {
83
+ className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
84
+ })) : null));
82
85
  };
83
86
  var ComplexDecision = function ComplexDecision() {
84
87
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _LangIsRtl = _interopRequireDefault(require("../../../helpers/LangIsRtl"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
11
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
12
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
13
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -83,16 +85,7 @@ var FeedbackComponent = function FeedbackComponent(_ref) {
83
85
  }, !text || !shortText ? /*#__PURE__*/_react.default.createElement("div", {
84
86
  title: translate("tooltip.".concat(success ? 'correct' : 'incorrect')),
85
87
  className: "".concat(statusIcon())
86
- }) : text), text && functionOnClose && explain && /*#__PURE__*/_react.default.createElement("button", {
87
- type: "button",
88
- className: "feedback-layer__closeX",
89
- onClick: function onClick() {
90
- return functionOnClose();
91
- },
92
- "aria-label": translate('storylines.misc.closePiece')
93
- }, /*#__PURE__*/_react.default.createElement("span", {
94
- className: "icon-close"
95
- })), shortText && /*#__PURE__*/_react.default.createElement("button", {
88
+ }) : text), shortText && /*#__PURE__*/_react.default.createElement("button", {
96
89
  type: "button",
97
90
  className: "feedback-layer__closeX",
98
91
  onClick: function onClick() {
@@ -107,7 +100,21 @@ var FeedbackComponent = function FeedbackComponent(_ref) {
107
100
  className: "feedback-layer__explain"
108
101
  }, /*#__PURE__*/_react.default.createElement("div", {
109
102
  dir: "auto"
110
- }, text)))));
103
+ }, text), text && functionOnClose && explain && /*#__PURE__*/_react.default.createElement("button", {
104
+ type: "button",
105
+ className: "gat--btn__navigation",
106
+ onClick: function onClick() {
107
+ return functionOnClose();
108
+ },
109
+ "aria-label": translate('storylines.misc.closePiece'),
110
+ style: {
111
+ display: 'flex',
112
+ margin: 'auto',
113
+ marginTop: '24px'
114
+ }
115
+ }, /*#__PURE__*/_react.default.createElement("span", {
116
+ className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
117
+ }))))));
111
118
  };
112
119
  FeedbackComponent.defaultProps = {
113
120
  text: '',
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _LangIsRtl = _interopRequireDefault(require("../../../helpers/LangIsRtl"));
8
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
10
  var LectureButtons = function LectureButtons(_ref) {
10
11
  var goToLecture = _ref.goToLecture,
@@ -16,11 +17,14 @@ var LectureButtons = function LectureButtons(_ref) {
16
17
  className: "readings--buttons"
17
18
  }, goToLecture ? /*#__PURE__*/_react.default.createElement("button", {
18
19
  type: "button",
19
- className: "gat--btn gat--btn__primary",
20
+ className: "gat--btn__navigation",
20
21
  onClick: function onClick() {
21
22
  return close();
22
- }
23
- }, /*#__PURE__*/_react.default.createElement("span", null, btnText)) : /*#__PURE__*/_react.default.createElement("button", {
23
+ },
24
+ "aria-label": btnText
25
+ }, /*#__PURE__*/_react.default.createElement("span", {
26
+ className: (0, _LangIsRtl.default)() ? 'icon-back' : 'icon-next'
27
+ })) : /*#__PURE__*/_react.default.createElement("button", {
24
28
  type: "button",
25
29
  className: "gat--btn__count",
26
30
  "data-testid": "countdown"
@@ -30,8 +34,7 @@ LectureButtons.defaultProps = {
30
34
  goToLecture: false,
31
35
  close: function close() {},
32
36
  minutes: 0,
33
- seconds: 0,
34
- btnText: 'continue'
37
+ seconds: 0
35
38
  };
36
39
  var _default = LectureButtons;
37
40
  exports.default = _default;
@@ -159,11 +159,9 @@ function prepareCrossfade(root, startAction, endAction) {
159
159
  }
160
160
  function syncCrossfade(mixer, startAction, endAction) {
161
161
  mixer.addEventListener('loop', onLoopFinished);
162
- function onLoopFinished(event) {
163
- if (event.action === startAction) {
164
- mixer.removeEventListener('loop', onLoopFinished);
165
- executeCrossFade(startAction, endAction);
166
- }
162
+ function onLoopFinished() {
163
+ mixer.removeEventListener('loop', onLoopFinished);
164
+ executeCrossFade(startAction, endAction);
167
165
  }
168
166
  }
169
167
  function resetActions(mixer, active) {
@@ -70,14 +70,17 @@ function useStateMachine(lines) {
70
70
  _step2;
71
71
  try {
72
72
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
73
+ var _slot$character3;
73
74
  var slot = _step2.value;
74
75
  if (!slot.uid) continue;
75
76
  if (!urls[slot.uid]) {
76
- urls[slot.uid] = _defineProperty({}, slot.emotion, slot.character.resource.animations[slot.emotion].url);
77
+ var _slot$character;
78
+ urls[slot.uid] = _defineProperty({}, slot.emotion, (_slot$character = slot.character) === null || _slot$character === void 0 ? void 0 : _slot$character.resource.animations[slot.emotion].url);
77
79
  } else {
78
- urls[slot.uid] = _objectSpread(_objectSpread({}, urls[slot.uid]), {}, _defineProperty({}, slot.emotion, slot.character.resource.animations[slot.emotion].url));
80
+ var _slot$character2;
81
+ urls[slot.uid] = _objectSpread(_objectSpread({}, urls[slot.uid]), {}, _defineProperty({}, slot.emotion, (_slot$character2 = slot.character) === null || _slot$character2 === void 0 ? void 0 : _slot$character2.resource.animations[slot.emotion].url));
79
82
  }
80
- urls[slot.uid].talking = slot.character.resource.animations.talking.url;
83
+ urls[slot.uid].talking = (_slot$character3 = slot.character) === null || _slot$character3 === void 0 ? void 0 : _slot$character3.resource.animations.talking.url;
81
84
  }
82
85
  } catch (err) {
83
86
  _iterator2.e(err);
@@ -95,7 +98,6 @@ function useStateMachine(lines) {
95
98
  var resetActives = function resetActives() {
96
99
  Object.keys(active).forEach(function (uid) {
97
100
  startAnimation(uid, 'idle');
98
- setActive(uid, 'idle');
99
101
  });
100
102
  };
101
103
  (0, _react.useEffect)(function () {
@@ -122,11 +124,12 @@ function useStateMachine(lines) {
122
124
  mixer = _root$userData.mixer,
123
125
  actionList = _root$userData.actionList;
124
126
  var currentActive = active[uid];
127
+ if (emotion === currentActive) return;
125
128
  var startAction = actionList[currentActive];
126
129
  var endAction = actionList[emotion];
130
+ setActive(uid, emotion);
127
131
  (0, _.resetActions)(mixer, startAction);
128
132
  (0, _.executeCrossFade)(startAction, endAction);
129
- setActive(uid, emotion);
130
133
  }
131
134
  }, [scene, loaded, active, setActive]);
132
135
  var processAnimations = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
@@ -154,7 +157,6 @@ function useStateMachine(lines) {
154
157
  if (!actionList.idle) {
155
158
  defaultAction = mixer.existingAction(defaultAnim, root);
156
159
  actionList.idle = defaultAction;
157
- (0, _.activateAction)(defaultAction, 1);
158
160
  setActive(uid, 'idle');
159
161
  }
160
162
  loadEmotion = /*#__PURE__*/function () {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@gamelearn/arcade-components",
3
3
  "author": "Gamelearn",
4
4
  "license": "unlicense",
5
- "version": "2.28.0",
5
+ "version": "2.29.3",
6
6
  "main": "dist/index.js",
7
7
  "files": [
8
8
  "dist",