@gamelearn/arcade-components 0.2.0 → 0.4.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/dist/components/arcade-render/background/scene-elements/index.js +4 -2
- package/dist/components/arcade-render/element/AnimateElement.js +9 -15
- package/dist/components/arcade-render/element/index.js +15 -5
- package/dist/components/arcade-render/elements-list/index.js +4 -2
- package/dist/components/arcade-render/light/useLight.js +1 -0
- package/dist/components/arcade-render/loading/Loading.js +3 -4
- package/dist/components/arcade-render/loading/LoadingLogic.js +4 -31
- package/dist/components/arcade-render/scene/index.js +8 -8
- package/dist/components/conversational-pro-component/components/scene/Panel.js +0 -8
- package/dist/components/hacker-puzzle-component/components/Area/index.js +150 -0
- package/dist/components/hacker-puzzle-component/components/Feedback/index.js +72 -0
- package/dist/components/hacker-puzzle-component/components/KonvaMapper/index.js +230 -0
- package/dist/components/hanged-puzzle-component/components/HangedPuzzleComponent.js +429 -0
- package/dist/components/{pikachu-component → hanged-puzzle-component}/index.js +2 -2
- package/dist/components/hanged-puzzle-component/mocks/mockForStory.js +54 -0
- package/dist/components/hanged-puzzle-component/utils.js +36 -0
- package/dist/components/image-click-puzzle-component/components/ImageClickPuzzleComponent.js +23 -0
- package/dist/components/image-click-puzzle-component/index.js +13 -0
- package/dist/components/image-click-puzzle-component/mocks/mockForStory.js +423 -0
- package/dist/components/image-click-wrapper-component/components/Area/index.js +150 -0
- package/dist/components/image-click-wrapper-component/components/Feedback/index.js +51 -0
- package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js +351 -0
- package/dist/components/image-click-wrapper-component/components/KonvaMapper/index.js +230 -0
- package/dist/components/image-click-wrapper-component/index.js +13 -0
- package/dist/components/image-click-wrapper-component/mocks/mockForStory.js +307 -0
- package/dist/components/index.js +16 -0
- package/dist/helpers/useGLB.js +9 -22
- package/package.json +16 -3
- package/dist/components/pikachu-component/components/PikachuComponent.js +0 -24
- package/dist/components/pikachu-component/mocks/mockForStory.js +0 -15
|
@@ -40,7 +40,9 @@ var SceneElements = function SceneElements(_ref) {
|
|
|
40
40
|
scene.fog = new _three.FogExp2(fog.color, fog.density);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
return
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement("group", {
|
|
44
|
+
name: "BACKGROUND"
|
|
45
|
+
}, objects.map(function (_ref2, i) {
|
|
44
46
|
var _object$userData, _object$userData2, _object$userData3;
|
|
45
47
|
|
|
46
48
|
var material = _ref2.material,
|
|
@@ -83,7 +85,7 @@ var SceneElements = function SceneElements(_ref) {
|
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
return null;
|
|
86
|
-
});
|
|
88
|
+
}));
|
|
87
89
|
};
|
|
88
90
|
|
|
89
91
|
var _default = SceneElements;
|
|
@@ -11,10 +11,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _drei = require("@react-three/drei");
|
|
13
13
|
|
|
14
|
-
var _useGLB2 = _interopRequireDefault(require("../../../helpers/useGLB"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
14
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
19
15
|
|
|
20
16
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
@@ -32,22 +28,20 @@ var AnimateElement = function AnimateElement(_ref) {
|
|
|
32
28
|
animationUrl = _ref.animationUrl,
|
|
33
29
|
props = _objectWithoutProperties(_ref, ["model", "position", "rotation", "animationUrl"]);
|
|
34
30
|
|
|
35
|
-
var
|
|
36
|
-
animations =
|
|
31
|
+
var _useGLTF = (0, _drei.useGLTF)(animationUrl),
|
|
32
|
+
animations = _useGLTF.animations;
|
|
37
33
|
|
|
38
34
|
var _useAnimations = (0, _drei.useAnimations)(animations),
|
|
39
35
|
ref = _useAnimations.ref,
|
|
40
|
-
mixer = _useAnimations.mixer
|
|
41
|
-
|
|
42
|
-
var _useProgress = (0, _drei.useProgress)(),
|
|
43
|
-
progress = _useProgress.progress;
|
|
36
|
+
mixer = _useAnimations.mixer,
|
|
37
|
+
actions = _useAnimations.actions;
|
|
44
38
|
|
|
45
39
|
(0, _react.useEffect)(function () {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}, [
|
|
40
|
+
var _Object$values;
|
|
41
|
+
|
|
42
|
+
mixer.stopAllAction();
|
|
43
|
+
(_Object$values = Object.values(actions)) === null || _Object$values === void 0 ? void 0 : _Object$values[0].play();
|
|
44
|
+
}, [actions, model, mixer]);
|
|
51
45
|
return /*#__PURE__*/_react.default.createElement("primitive", _extends({
|
|
52
46
|
ref: ref,
|
|
53
47
|
object: model,
|
|
@@ -19,7 +19,7 @@ var _three = require("three");
|
|
|
19
19
|
|
|
20
20
|
var _Projection = _interopRequireDefault(require("./Projection"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _drei = require("@react-three/drei");
|
|
23
23
|
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
|
|
@@ -45,6 +45,9 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
45
45
|
|
|
46
46
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
47
47
|
|
|
48
|
+
// const whiteImage = new Image();
|
|
49
|
+
// whiteImage.src =
|
|
50
|
+
// 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=';
|
|
48
51
|
var Element = function Element(_ref) {
|
|
49
52
|
var url = _ref.url,
|
|
50
53
|
animationUrl = _ref.animationUrl,
|
|
@@ -62,8 +65,8 @@ var Element = function Element(_ref) {
|
|
|
62
65
|
onLoad = _ref$onLoad === void 0 ? function () {} : _ref$onLoad,
|
|
63
66
|
props = _objectWithoutProperties(_ref, ["url", "animationUrl", "position", "rotation", "scale", "size", "material", "layers", "onLoad"]);
|
|
64
67
|
|
|
65
|
-
var
|
|
66
|
-
scene =
|
|
68
|
+
var _useGLTF = (0, _drei.useGLTF)(url),
|
|
69
|
+
scene = _useGLTF.scene;
|
|
67
70
|
|
|
68
71
|
var model = (0, _react.useMemo)(function () {
|
|
69
72
|
return _SkeletonUtils.SkeletonUtils.clone(scene);
|
|
@@ -103,11 +106,18 @@ var Element = function Element(_ref) {
|
|
|
103
106
|
|
|
104
107
|
if (layers > 0) {
|
|
105
108
|
node.layers.set(layers);
|
|
106
|
-
}
|
|
109
|
+
} // const keys = Object.keys(node.material);
|
|
110
|
+
// keys.forEach((key) => {
|
|
111
|
+
// const value = node.material[key];
|
|
112
|
+
// if (value && value.isTexture) {
|
|
113
|
+
// node.material[key].image = whiteImage;
|
|
114
|
+
// }
|
|
115
|
+
// });
|
|
116
|
+
|
|
107
117
|
|
|
108
118
|
if (node.material.map) node.material.map.encoding = _three.sRGBEncoding;
|
|
109
119
|
if (node.material.emissiveMap) node.material.emissiveMap.encoding = _three.sRGBEncoding;
|
|
110
|
-
|
|
120
|
+
node.material.needsUpdate = true;
|
|
111
121
|
}
|
|
112
122
|
});
|
|
113
123
|
onLoad(model, currentScene, camera);
|
|
@@ -69,7 +69,9 @@ var ElementsList = function ElementsList(_ref) {
|
|
|
69
69
|
(0, _react.useLayoutEffect)(function () {
|
|
70
70
|
camera.layers.enableAll();
|
|
71
71
|
}, [camera]);
|
|
72
|
-
return
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement("group", {
|
|
73
|
+
name: "CLICKABLE_ELEMENTS"
|
|
74
|
+
}, elements === null || elements === void 0 ? void 0 : elements.map(function (_ref3) {
|
|
73
75
|
var id = _ref3.id,
|
|
74
76
|
element = _objectWithoutProperties(_ref3, ["id"]);
|
|
75
77
|
|
|
@@ -145,7 +147,7 @@ var ElementsList = function ElementsList(_ref) {
|
|
|
145
147
|
return null;
|
|
146
148
|
}
|
|
147
149
|
}
|
|
148
|
-
});
|
|
150
|
+
}));
|
|
149
151
|
};
|
|
150
152
|
|
|
151
153
|
var _default = ElementsList;
|
|
@@ -19,10 +19,9 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
19
19
|
|
|
20
20
|
function Loading(_ref) {
|
|
21
21
|
var text = _ref.text;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
var progress = (0, _drei.useProgress)(function (state) {
|
|
23
|
+
return state.progress;
|
|
24
|
+
});
|
|
26
25
|
var html = (0, _react.useRef)();
|
|
27
26
|
var percentage = Math.floor(progress);
|
|
28
27
|
(0, _react.useEffect)(function () {
|
|
@@ -9,44 +9,17 @@ var _react = require("react");
|
|
|
9
9
|
|
|
10
10
|
var _drei = require("@react-three/drei");
|
|
11
11
|
|
|
12
|
-
var _fiber = require("@react-three/fiber");
|
|
13
|
-
|
|
14
|
-
var _drawLOD = _interopRequireDefault(require("../../../helpers/drawLOD"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
-
|
|
20
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
-
|
|
22
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
-
|
|
24
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
-
|
|
26
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
27
|
-
|
|
28
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
|
-
|
|
30
12
|
function LoadingLogic(_ref) {
|
|
31
13
|
var onFinish = _ref.onFinish;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var _useThree = (0, _fiber.useThree)(function (state) {
|
|
37
|
-
return [state.scene, state.camera];
|
|
38
|
-
}),
|
|
39
|
-
_useThree2 = _slicedToArray(_useThree, 2),
|
|
40
|
-
scene = _useThree2[0],
|
|
41
|
-
camera = _useThree2[1];
|
|
42
|
-
|
|
14
|
+
var progress = (0, _drei.useProgress)(function (state) {
|
|
15
|
+
return state.progress;
|
|
16
|
+
});
|
|
43
17
|
var percentage = Math.floor(progress);
|
|
44
18
|
(0, _react.useEffect)(function () {
|
|
45
19
|
if (percentage === 100) {
|
|
46
20
|
onFinish();
|
|
47
|
-
(0, _drawLOD.default)(scene);
|
|
48
21
|
}
|
|
49
|
-
}, [onFinish, percentage
|
|
22
|
+
}, [onFinish, percentage]);
|
|
50
23
|
return null;
|
|
51
24
|
}
|
|
52
25
|
|
|
@@ -19,8 +19,6 @@ var _background = _interopRequireDefault(require("../background"));
|
|
|
19
19
|
|
|
20
20
|
var _loading = _interopRequireWildcard(require("../loading"));
|
|
21
21
|
|
|
22
|
-
var _LodController = _interopRequireDefault(require("../../../helpers/LodController"));
|
|
23
|
-
|
|
24
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
23
|
|
|
26
24
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
@@ -62,11 +60,6 @@ var ConfigController = function ConfigController(_ref) {
|
|
|
62
60
|
}, 1);
|
|
63
61
|
(0, _react.useEffect)(function () {
|
|
64
62
|
gl.shadowMap.enabled = current.shadows;
|
|
65
|
-
scene.traverse(function (child) {
|
|
66
|
-
if (child.isMesh) {
|
|
67
|
-
child.material.needsUpdate = true;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
63
|
|
|
71
64
|
if (!current.animate) {
|
|
72
65
|
invalidate();
|
|
@@ -100,6 +93,10 @@ var Scene = function Scene(_ref3) {
|
|
|
100
93
|
var gl = _ref4.gl,
|
|
101
94
|
raycaster = _ref4.raycaster;
|
|
102
95
|
raycaster.layers.set(1);
|
|
96
|
+
gl.outputEncoding = 3001;
|
|
97
|
+
gl.gammaFactor = 2.2;
|
|
98
|
+
gl.setClearColor(0xcccccc);
|
|
99
|
+
gl.setPixelRatio(window.devicePixelRatio);
|
|
103
100
|
gl.physicallyCorrectLights = true;
|
|
104
101
|
};
|
|
105
102
|
|
|
@@ -114,7 +111,9 @@ var Scene = function Scene(_ref3) {
|
|
|
114
111
|
setShowLoad(true);
|
|
115
112
|
}, [backgroundData, elements]);
|
|
116
113
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_fiber.Canvas, {
|
|
114
|
+
className: "main-canvas",
|
|
117
115
|
style: {
|
|
116
|
+
width: '100%',
|
|
118
117
|
height: '100vh'
|
|
119
118
|
},
|
|
120
119
|
resize: {
|
|
@@ -124,7 +123,8 @@ var Scene = function Scene(_ref3) {
|
|
|
124
123
|
flat: true,
|
|
125
124
|
shadows: toggleShadows,
|
|
126
125
|
frameloop: "demand",
|
|
127
|
-
onCreated: handleOnCreate
|
|
126
|
+
onCreated: handleOnCreate,
|
|
127
|
+
tabIndex: 0
|
|
128
128
|
}, /*#__PURE__*/_react.default.createElement(ConfigController, {
|
|
129
129
|
current: {
|
|
130
130
|
shadows: toggleShadows,
|
|
@@ -21,8 +21,6 @@ var _helpers = require("../../../../helpers");
|
|
|
21
21
|
|
|
22
22
|
var _LightSet = _interopRequireDefault(require("../../../../helpers/LightSet"));
|
|
23
23
|
|
|
24
|
-
var _drawLOD = _interopRequireDefault(require("../../../../helpers/drawLOD"));
|
|
25
|
-
|
|
26
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
25
|
|
|
28
26
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
@@ -36,7 +34,6 @@ function Panel(_ref) {
|
|
|
36
34
|
active = _ref.active;
|
|
37
35
|
var cameraRef = (0, _react.useRef)(null);
|
|
38
36
|
var sceneRef = (0, _react.useRef)(null);
|
|
39
|
-
var cache = (0, _react.useRef)({});
|
|
40
37
|
var isCharacter = character.type === 'character';
|
|
41
38
|
var emotion = isCharacter ? character.resource.animations[character.emotion || 'neutral'] : {};
|
|
42
39
|
var onLoadElement = (0, _react.useCallback)(function (model) {
|
|
@@ -57,11 +54,6 @@ function Panel(_ref) {
|
|
|
57
54
|
}
|
|
58
55
|
|
|
59
56
|
cameraRef.current.updateProjectionMatrix();
|
|
60
|
-
|
|
61
|
-
if (!cache.current[character.uid]) {
|
|
62
|
-
cache.current[character.uid] = true;
|
|
63
|
-
(0, _drawLOD.default)(sceneRef.current);
|
|
64
|
-
}
|
|
65
57
|
}
|
|
66
58
|
}, [character]);
|
|
67
59
|
(0, _fiber.useFrame)(function (_ref2) {
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactKonva = require("react-konva");
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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
|
+
|
|
22
|
+
var Area = function Area(_ref) {
|
|
23
|
+
var area = _ref.area,
|
|
24
|
+
finished = _ref.finished,
|
|
25
|
+
isClicked = _ref.isClicked,
|
|
26
|
+
isBad = _ref.isBad,
|
|
27
|
+
hasHighlights = _ref.hasHighlights,
|
|
28
|
+
completed = _ref.completed,
|
|
29
|
+
onClick = _ref.onClick,
|
|
30
|
+
onClickOutside = _ref.onClickOutside;
|
|
31
|
+
var areaRef = (0, _react.useRef)();
|
|
32
|
+
var fillColor = isBad ? 'rgba(255, 99, 77, 0.32)' : 'rgba(75, 215, 169, 0.32)';
|
|
33
|
+
var strokeColor = isBad ? '#ff634d' : '#4bd7a9';
|
|
34
|
+
|
|
35
|
+
var mouseEnterArea = function mouseEnterArea() {
|
|
36
|
+
if (hasHighlights && !completed && !isClicked) {
|
|
37
|
+
areaRef.current.setAttr('fill', 'rgba(130, 134, 142, 0.4)');
|
|
38
|
+
areaRef.current.setAttr('stroke', 'rgba(255, 255, 255, 0.3)');
|
|
39
|
+
areaRef.current.to({
|
|
40
|
+
duration: 0.25,
|
|
41
|
+
opacity: 1
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var mouseLeaveArea = function mouseLeaveArea() {
|
|
47
|
+
if (hasHighlights && !completed && !isClicked) {
|
|
48
|
+
areaRef.current.to({
|
|
49
|
+
duration: 0.25,
|
|
50
|
+
opacity: 0
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
(0, _react.useEffect)(function () {
|
|
56
|
+
if (completed && !finished) {
|
|
57
|
+
if (!isBad) {
|
|
58
|
+
areaRef.current.to({
|
|
59
|
+
duration: 0.25,
|
|
60
|
+
opacity: 1
|
|
61
|
+
});
|
|
62
|
+
areaRef.current.globalCompositeOperation('destination-out');
|
|
63
|
+
} else {
|
|
64
|
+
areaRef.current.to({
|
|
65
|
+
duration: 0.25,
|
|
66
|
+
opacity: 0
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, [completed]);
|
|
71
|
+
|
|
72
|
+
var clickArea = function clickArea() {
|
|
73
|
+
if (!completed) {
|
|
74
|
+
if (isBad) {
|
|
75
|
+
onClickOutside();
|
|
76
|
+
} else {
|
|
77
|
+
onClick(area);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
areaRef.current.setAttr('fill', fillColor);
|
|
81
|
+
areaRef.current.setAttr('stroke', strokeColor);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var scaleX = area.scaleX ? area.scaleX : 1;
|
|
86
|
+
var scaleY = area.scaleY ? area.scaleY : 1;
|
|
87
|
+
return /*#__PURE__*/_react.default.createElement(_reactKonva.Line, {
|
|
88
|
+
name: area.id,
|
|
89
|
+
ref: areaRef,
|
|
90
|
+
onFocus: function onFocus() {
|
|
91
|
+
return mouseEnterArea(area);
|
|
92
|
+
},
|
|
93
|
+
onMouseOver: function onMouseOver() {
|
|
94
|
+
return mouseEnterArea(area);
|
|
95
|
+
},
|
|
96
|
+
onMouseLeave: mouseLeaveArea,
|
|
97
|
+
onClick: function onClick() {
|
|
98
|
+
return clickArea();
|
|
99
|
+
},
|
|
100
|
+
onTap: function onTap() {
|
|
101
|
+
return clickArea();
|
|
102
|
+
},
|
|
103
|
+
x: area.x,
|
|
104
|
+
y: area.y,
|
|
105
|
+
scale: {
|
|
106
|
+
x: scaleX,
|
|
107
|
+
y: scaleY
|
|
108
|
+
},
|
|
109
|
+
skew: {
|
|
110
|
+
x: area.skewX,
|
|
111
|
+
y: area.skewY
|
|
112
|
+
},
|
|
113
|
+
rotation: area.rotation,
|
|
114
|
+
shape: "poly",
|
|
115
|
+
points: area.points,
|
|
116
|
+
fill: finished ? '' : fillColor,
|
|
117
|
+
stroke: finished || isClicked ? strokeColor : '',
|
|
118
|
+
strokeWidth: 2,
|
|
119
|
+
opacity: finished || isClicked ? 1 : 0,
|
|
120
|
+
closed: true
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
Area.defaultProps = {
|
|
125
|
+
finished: false,
|
|
126
|
+
isBad: false,
|
|
127
|
+
isClicked: false,
|
|
128
|
+
hasHighlights: false,
|
|
129
|
+
completed: false,
|
|
130
|
+
onClick: function onClick() {},
|
|
131
|
+
onClickOutside: function onClickOutside() {}
|
|
132
|
+
};
|
|
133
|
+
Area.propTypes = {
|
|
134
|
+
area: _propTypes.default.shape({
|
|
135
|
+
index: _propTypes.default.number,
|
|
136
|
+
x: _propTypes.default.number,
|
|
137
|
+
y: _propTypes.default.number,
|
|
138
|
+
points: _propTypes.default.arrayOf(_propTypes.default.number),
|
|
139
|
+
name: _propTypes.default.string
|
|
140
|
+
}).isRequired,
|
|
141
|
+
onClick: _propTypes.default.func,
|
|
142
|
+
onClickOutside: _propTypes.default.func,
|
|
143
|
+
finished: _propTypes.default.bool,
|
|
144
|
+
hasHighlights: _propTypes.default.bool,
|
|
145
|
+
completed: _propTypes.default.bool,
|
|
146
|
+
isBad: _propTypes.default.bool,
|
|
147
|
+
isClicked: _propTypes.default.bool
|
|
148
|
+
};
|
|
149
|
+
var _default = Area;
|
|
150
|
+
exports.default = _default;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var _utilsCore = require("@gamelearn/utils-core");
|
|
15
|
+
|
|
16
|
+
var _uiComponentsCore = require("@gamelearn/ui-components-core");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
23
|
+
|
|
24
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
+
|
|
26
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
27
|
+
|
|
28
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
29
|
+
|
|
30
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
31
|
+
|
|
32
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
33
|
+
|
|
34
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
35
|
+
|
|
36
|
+
var Feedback = function Feedback(_ref) {
|
|
37
|
+
var text = _ref.text,
|
|
38
|
+
success = _ref.success;
|
|
39
|
+
|
|
40
|
+
var _useHowler = (0, _uiComponentsCore.useHowler)(success ? 'correct_01' : 'incorrect_01'),
|
|
41
|
+
_useHowler2 = _slicedToArray(_useHowler, 1),
|
|
42
|
+
howler = _useHowler2[0];
|
|
43
|
+
|
|
44
|
+
(0, _react.useEffect)(function () {
|
|
45
|
+
if (text) {
|
|
46
|
+
howler.play();
|
|
47
|
+
}
|
|
48
|
+
}, [howler, text]);
|
|
49
|
+
|
|
50
|
+
if (!text) {
|
|
51
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
55
|
+
className: "puzzle--image__result ".concat(success ? 'success' : 'failed')
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
57
|
+
className: "title"
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_utilsCore.FormatData, {
|
|
59
|
+
id: text
|
|
60
|
+
})));
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
Feedback.defaultProps = {
|
|
64
|
+
text: '',
|
|
65
|
+
success: false
|
|
66
|
+
};
|
|
67
|
+
Feedback.propTypes = {
|
|
68
|
+
text: _propTypes.default.string,
|
|
69
|
+
success: _propTypes.default.bool
|
|
70
|
+
};
|
|
71
|
+
var _default = Feedback;
|
|
72
|
+
exports.default = _default;
|