@gamelearn/arcade-components 2.2.13 → 2.3.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.
|
@@ -19,41 +19,30 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
19
19
|
|
|
20
20
|
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; }
|
|
21
21
|
|
|
22
|
-
var cleanStyle = {
|
|
23
|
-
width: '100vw',
|
|
24
|
-
height: '100vh',
|
|
25
|
-
position: 'static'
|
|
26
|
-
};
|
|
27
|
-
|
|
28
22
|
var BubbleWrapper = function BubbleWrapper(_ref) {
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
currentMessage = _ref.currentMessage;
|
|
23
|
+
var currentMessage = _ref.currentMessage,
|
|
24
|
+
translate = _ref.translate;
|
|
32
25
|
var group = (0, _react.useRef)();
|
|
33
26
|
var bubble = (0, _react.useRef)();
|
|
34
|
-
|
|
35
|
-
var onBubbleBuild = function onBubbleBuild() {
|
|
36
|
-
onLoad(group, bubble);
|
|
37
|
-
};
|
|
38
|
-
|
|
39
27
|
var container = document.querySelector('.screens--container');
|
|
40
28
|
return /*#__PURE__*/_react.default.createElement("group", {
|
|
41
|
-
ref: group
|
|
42
|
-
position: position
|
|
29
|
+
ref: group
|
|
43
30
|
}, /*#__PURE__*/_react.default.createElement(_arcadeThreeCore.HtmlPro, {
|
|
44
31
|
zIndexRange: [5, 5],
|
|
45
|
-
calculatePosition: currentMessage.inScene ? undefined : function () {
|
|
46
|
-
return [0, 0];
|
|
47
|
-
},
|
|
48
32
|
portal: container ? {
|
|
49
33
|
current: container
|
|
50
34
|
} : undefined,
|
|
51
|
-
style:
|
|
35
|
+
style: {
|
|
36
|
+
width: '100vw',
|
|
37
|
+
height: '100vh',
|
|
52
38
|
position: 'static'
|
|
53
|
-
}
|
|
39
|
+
},
|
|
40
|
+
calculatePosition: function calculatePosition() {
|
|
41
|
+
return [0, 0];
|
|
42
|
+
}
|
|
54
43
|
}, /*#__PURE__*/_react.default.createElement(_SpeechBubbleComponent.default, {
|
|
44
|
+
translate: translate,
|
|
55
45
|
ref: bubble,
|
|
56
|
-
onLoad: onBubbleBuild,
|
|
57
46
|
message: currentMessage
|
|
58
47
|
})));
|
|
59
48
|
};
|
|
@@ -23,8 +23,6 @@ var _decisionComponent = _interopRequireDefault(require("../../decision-componen
|
|
|
23
23
|
|
|
24
24
|
var _helpers = require("../../../helpers");
|
|
25
25
|
|
|
26
|
-
var _deviceDetection = require("../../../helpers/deviceDetection");
|
|
27
|
-
|
|
28
26
|
var _useTimeout2 = _interopRequireDefault(require("../../../helpers/useTimeout"));
|
|
29
27
|
|
|
30
28
|
var _useEkho = _interopRequireDefault(require("../../../helpers/useEkho"));
|
|
@@ -67,8 +65,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
67
65
|
|
|
68
66
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
69
67
|
|
|
68
|
+
// import { DeviceDetection } from '../../../helpers/deviceDetection';
|
|
70
69
|
// Global
|
|
71
|
-
|
|
70
|
+
// const isMobile = DeviceDetection();
|
|
72
71
|
var crossFadeDuration = 0.2;
|
|
73
72
|
var characterMs = 75;
|
|
74
73
|
var minMs = 1400;
|
|
@@ -128,8 +127,6 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
128
127
|
start = _useTimeout.start,
|
|
129
128
|
stop = _useTimeout.stop;
|
|
130
129
|
|
|
131
|
-
var bubbleRef = (0, _react.useRef)();
|
|
132
|
-
var groupRef = (0, _react.useRef)();
|
|
133
130
|
var loader = (0, _react.useMemo)(function () {
|
|
134
131
|
return new _GLTFLoader.GLTFLoader();
|
|
135
132
|
}, []);
|
|
@@ -168,8 +165,6 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
168
165
|
var _useState13 = (0, _react.useState)({
|
|
169
166
|
text: '',
|
|
170
167
|
name: '',
|
|
171
|
-
left: false,
|
|
172
|
-
top: false,
|
|
173
168
|
inScene: false,
|
|
174
169
|
thinkful: false,
|
|
175
170
|
voiceOver: false,
|
|
@@ -244,13 +239,13 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
244
239
|
var _slot$character, _slot$character$resou;
|
|
245
240
|
|
|
246
241
|
var object = actors.find(function (element) {
|
|
247
|
-
if (element.uid === slot.uid) {
|
|
242
|
+
if ((element === null || element === void 0 ? void 0 : element.uid) === (slot === null || slot === void 0 ? void 0 : slot.uid)) {
|
|
248
243
|
return element;
|
|
249
244
|
}
|
|
250
245
|
|
|
251
246
|
return '';
|
|
252
247
|
});
|
|
253
|
-
return ((_slot$character = slot.character) === null || _slot$character === void 0 ? void 0 : (_slot$character$resou = _slot$character.resource) === null || _slot$character$resou === void 0 ? void 0 : _slot$character$resou.url) || (object === null || object === void 0 ? void 0 : object.completeUrl) || '';
|
|
248
|
+
return (slot === null || slot === void 0 ? void 0 : (_slot$character = slot.character) === null || _slot$character === void 0 ? void 0 : (_slot$character$resou = _slot$character.resource) === null || _slot$character$resou === void 0 ? void 0 : _slot$character$resou.url) || (object === null || object === void 0 ? void 0 : object.completeUrl) || '';
|
|
254
249
|
}, [actors]); // Move to three core?
|
|
255
250
|
|
|
256
251
|
var loadEmotion = (0, _react.useCallback)(function (slot, element) {
|
|
@@ -527,12 +522,11 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
527
522
|
setCurrentMessage({
|
|
528
523
|
text: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.text,
|
|
529
524
|
name: (currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.alias) || (currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.name) || "[ ".concat(translate('storylines.misc.voiceOver'), " ]"),
|
|
530
|
-
left: false,
|
|
531
525
|
inScene: false,
|
|
532
526
|
voiceOver: true,
|
|
533
527
|
thinkful: false,
|
|
534
528
|
top: false,
|
|
535
|
-
avatar:
|
|
529
|
+
avatar: getAvatarURL(talkingCharacter),
|
|
536
530
|
show: true
|
|
537
531
|
});
|
|
538
532
|
} else if (!lastSet.current) {
|
|
@@ -591,17 +585,12 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
591
585
|
setTimeout(function () {
|
|
592
586
|
var _talkingCharacter$cha5;
|
|
593
587
|
|
|
594
|
-
var _moveBubble = moveBubble(element, showArrowTop),
|
|
595
|
-
distance = _moveBubble.distance;
|
|
596
|
-
|
|
597
588
|
setCurrentMessage({
|
|
598
589
|
text: talkingCharacter.text,
|
|
599
590
|
name: talkingCharacter.alias || ((_talkingCharacter$cha5 = talkingCharacter.character) === null || _talkingCharacter$cha5 === void 0 ? void 0 : _talkingCharacter$cha5.name),
|
|
600
|
-
left: true,
|
|
601
|
-
top: showArrowTop || distance > 70,
|
|
602
591
|
inScene: true,
|
|
603
592
|
thinkful: talkingCharacter.emotion === 'thinkful',
|
|
604
|
-
avatar:
|
|
593
|
+
avatar: getAvatarURL(talkingCharacter),
|
|
605
594
|
show: true
|
|
606
595
|
});
|
|
607
596
|
}, zoomInActor ? 1200 : 0);
|
|
@@ -691,53 +680,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
691
680
|
return function () {
|
|
692
681
|
stop();
|
|
693
682
|
};
|
|
694
|
-
}, [currentMessage, nextLine, start, stop, currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType, autoPlayCond, audio, voice, audioFailed]);
|
|
695
|
-
|
|
696
|
-
var checkBubbleBounds = (0, _react.useCallback)(function (group, bubble) {
|
|
697
|
-
groupRef.current = group === null || group === void 0 ? void 0 : group.current;
|
|
698
|
-
bubbleRef.current = bubble === null || bubble === void 0 ? void 0 : bubble.current;
|
|
699
|
-
|
|
700
|
-
if (currentLineData !== null && currentLineData !== void 0 && currentLineData.slots && currentMessage.show && bubble !== null && bubble !== void 0 && bubble.current) {
|
|
701
|
-
var bubbleRect = bubble.current.getBoundingClientRect();
|
|
702
|
-
var x = bubbleRect.x + bubbleRect.width;
|
|
703
|
-
var y = bubbleRect.y - bubbleRect.height;
|
|
704
|
-
|
|
705
|
-
if (!messagePosition.current.isLeft && zoomInActor || (x < 0 || x > window.innerWidth) && currentMessage.inScene) {
|
|
706
|
-
var child = messagePosition.current.child;
|
|
707
|
-
|
|
708
|
-
if (child) {
|
|
709
|
-
var target = new _three.Object3D();
|
|
710
|
-
child.getWorldPosition(target.position);
|
|
711
|
-
group.current.position.copy(target.position);
|
|
712
|
-
group.current.updateMatrixWorld();
|
|
713
|
-
var dividerWidth = bubbleRect.width > 250 ? 4 : 2.75;
|
|
714
|
-
var divider = isMobile ? 10 : dividerWidth;
|
|
715
|
-
var distanceX = bubbleRect.width + bubbleRect.width / divider;
|
|
716
|
-
bubble.current.parentNode.style.transform = "translate3d(-".concat(distanceX, "px, -").concat(bubbleRect.height, "px, 0px)");
|
|
717
|
-
bubbleRect = bubble.current.getBoundingClientRect();
|
|
718
|
-
var completeOutside = x > window.innerWidth + bubbleRect.width || y < -bubbleRect.height || y > window.innerHeight || x < -bubbleRect.width || bubbleRect.x < 10;
|
|
719
|
-
|
|
720
|
-
if (completeOutside) {
|
|
721
|
-
bubble.current.parentNode.style.transform = '';
|
|
722
|
-
messagePosition.current.child = null;
|
|
723
|
-
messagePosition.current.parent = null;
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
setCurrentMessage(function (old) {
|
|
727
|
-
return _objectSpread(_objectSpread({}, old), {}, {
|
|
728
|
-
left: false,
|
|
729
|
-
top: false,
|
|
730
|
-
inScene: !completeOutside,
|
|
731
|
-
avatar: getAvatarURL(talkingCharacter),
|
|
732
|
-
show: true
|
|
733
|
-
});
|
|
734
|
-
});
|
|
735
|
-
}
|
|
736
|
-
} else {
|
|
737
|
-
bubble.current.parentNode.style.transform = '';
|
|
738
|
-
}
|
|
739
|
-
}
|
|
740
|
-
}, [camera.quaternion, currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.slots, currentMessage.inScene, getAvatarURL]);
|
|
683
|
+
}, [currentMessage, nextLine, start, stop, currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType, autoPlayCond, audio, voice, audioFailed]);
|
|
741
684
|
(0, _react.useEffect)(function () {
|
|
742
685
|
if (animationRunning) {
|
|
743
686
|
var cam = camera;
|
|
@@ -750,9 +693,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
750
693
|
}
|
|
751
694
|
|
|
752
695
|
var mult = messagePosition.current.isLeft ? -1 : 1;
|
|
753
|
-
var headSpace = headSize * mult;
|
|
754
|
-
|
|
755
|
-
messagePosition.current.pos[0] -= headSpace;
|
|
696
|
+
var headSpace = headSize * mult;
|
|
756
697
|
animationTarget.current.translateX(-10 * mult + headSpace);
|
|
757
698
|
animationTarget.current.translateY(-2);
|
|
758
699
|
animationTarget.current.translateZ(30);
|
|
@@ -796,10 +737,6 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
796
737
|
object.material.visible = true;
|
|
797
738
|
});
|
|
798
739
|
}
|
|
799
|
-
|
|
800
|
-
if (bubbleRef.current && groupRef.current) {
|
|
801
|
-
checkBubbleBounds(groupRef, bubbleRef);
|
|
802
|
-
}
|
|
803
740
|
}
|
|
804
741
|
});
|
|
805
742
|
var container = document.querySelector('.screens--container');
|
|
@@ -843,9 +780,8 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
843
780
|
}
|
|
844
781
|
|
|
845
782
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, currentMessage.text ? /*#__PURE__*/_react.default.createElement(_BubbleWrapper.default, {
|
|
846
|
-
|
|
847
|
-
currentMessage: currentMessage
|
|
848
|
-
onLoad: checkBubbleBounds
|
|
783
|
+
translate: translate,
|
|
784
|
+
currentMessage: currentMessage
|
|
849
785
|
}) : null, /*#__PURE__*/_react.default.createElement(_arcadeThreeCore.HtmlPro, {
|
|
850
786
|
style: {
|
|
851
787
|
width: '100vw',
|
|
@@ -27,7 +27,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
27
27
|
|
|
28
28
|
var SpeechBubbleComponent = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
29
29
|
var message = _ref.message,
|
|
30
|
-
|
|
30
|
+
translate = _ref.translate;
|
|
31
31
|
|
|
32
32
|
var _useState = (0, _react.useState)(false),
|
|
33
33
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -51,32 +51,33 @@ var SpeechBubbleComponent = /*#__PURE__*/_react.default.forwardRef(function (_re
|
|
|
51
51
|
|
|
52
52
|
(0, _react.useLayoutEffect)(function () {
|
|
53
53
|
if (!mounted) {
|
|
54
|
-
onLoad();
|
|
55
54
|
setMounted(true);
|
|
56
55
|
}
|
|
57
|
-
}, [
|
|
56
|
+
}, [mounted]);
|
|
58
57
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
59
58
|
dir: "auto",
|
|
60
59
|
ref: ref,
|
|
61
|
-
className: "\n speech-bubble\n ".concat(message.
|
|
60
|
+
className: "\n speech-bubble\n ".concat(!message.inScene || message.voiceOver ? 'speech-bubble--outOfScene' : '', "\n ").concat(message.thinkful ? 'speech-bubble--italic' : '', "\n ")
|
|
62
61
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
63
|
-
className: "speech-
|
|
64
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
65
|
-
className: "speech-bubble__header"
|
|
62
|
+
className: "speech-bubble__header ".concat(message.thinkful ? 'speech-bubble__header--thinking' : '')
|
|
66
63
|
}, message.thinkful ? /*#__PURE__*/_react.default.createElement("div", {
|
|
64
|
+
className: "thinking-icon-wrap"
|
|
65
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
67
66
|
className: "icon-bubble-thinkful-black"
|
|
68
|
-
}) : null, message.
|
|
69
|
-
className: "icon-narrator"
|
|
70
|
-
}) : null, !message.inScene && message.avatar ? /*#__PURE__*/_react.default.createElement("div", {
|
|
67
|
+
})) : null, message.avatar ? /*#__PURE__*/_react.default.createElement("div", {
|
|
71
68
|
className: "speech-bubble__avatar"
|
|
72
69
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
73
70
|
src: getAvatar(),
|
|
74
71
|
alt: message.name
|
|
72
|
+
})) : null, message.voiceOver ? /*#__PURE__*/_react.default.createElement("div", {
|
|
73
|
+
className: "speech-bubble__avatar"
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
75
|
+
className: "icon-narrator"
|
|
75
76
|
})) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
76
|
-
className: "speech-
|
|
77
|
-
}, message.name)), message.text ? /*#__PURE__*/_react.default.createElement("div", {
|
|
77
|
+
className: "speech-bubble__name"
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, message.name), message.thinkful ? /*#__PURE__*/_react.default.createElement("span", null, "[ ", translate('emotion.thinking'), " ]") : null)), message.text ? /*#__PURE__*/_react.default.createElement("div", {
|
|
78
79
|
className: "speech-bubble__text"
|
|
79
|
-
}, message.text) : null)
|
|
80
|
+
}, message.text) : null);
|
|
80
81
|
});
|
|
81
82
|
|
|
82
83
|
var _default = SpeechBubbleComponent;
|
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.
|
|
5
|
+
"version": "2.3.0",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/runtime": "^7.18.6",
|
|
17
|
-
"@gamelearn/arcade-styles": "2.
|
|
17
|
+
"@gamelearn/arcade-styles": "2.4.0",
|
|
18
18
|
"@gamelearn/arcade-three-core": "1.17.1",
|
|
19
19
|
"@react-three/drei": "9.4.3",
|
|
20
20
|
"@react-three/fiber": "8.0.17",
|