@gamelearn/arcade-components 1.1.4 → 1.2.1

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.
Files changed (26) hide show
  1. package/dist/components/arcade-render/background/index.js +24 -0
  2. package/dist/components/arcade-render/background/scene-elements/customGeometry/index.js +46 -0
  3. package/dist/components/arcade-render/background/scene-elements/index.js +106 -0
  4. package/dist/components/arcade-render/element/AnimateElement.js +136 -0
  5. package/dist/components/arcade-render/element/BoundingBox.js +65 -0
  6. package/dist/components/arcade-render/element/Projection.js +38 -0
  7. package/dist/components/arcade-render/element/index.js +163 -0
  8. package/dist/components/arcade-render/elements-list/ClickableArea.js +94 -0
  9. package/dist/components/arcade-render/elements-list/Poster.js +92 -0
  10. package/dist/components/arcade-render/elements-list/index.js +165 -0
  11. package/dist/components/arcade-render/light/index.js +35 -0
  12. package/dist/components/arcade-render/light/useLight.js +62 -0
  13. package/dist/components/arcade-render/loading/Loading.js +54 -0
  14. package/dist/components/arcade-render/loading/LoadingLogic.js +56 -0
  15. package/dist/components/arcade-render/loading/index.js +13 -0
  16. package/dist/components/arcade-render/mocks/index.js +32 -0
  17. package/dist/components/arcade-render/scene/ConfigController.js +68 -0
  18. package/dist/components/arcade-render/scene/index.js +129 -0
  19. package/dist/components/arcade-render/scene/useCameraPan.js +115 -0
  20. package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +8 -13
  21. package/dist/components/dialog-component/components/DialogComponent.js +28 -24
  22. package/dist/components/hanged-puzzle-component/components/HangedPuzzleComponent.js +27 -9
  23. package/dist/components/index.js +56 -0
  24. package/dist/components/login-puzzle-component/components/LoginPuzzleComponent.js +1 -3
  25. package/dist/components/video-visor/components/VideoVisor.js +0 -1
  26. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _sceneElements = _interopRequireDefault(require("./scene-elements"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ var Background = function Background(_ref) {
15
+ var _ref$data = _ref.data,
16
+ data = _ref$data === void 0 ? {} : _ref$data;
17
+ if (Object.keys(data).length === 0) return null;
18
+ return /*#__PURE__*/_react.default.createElement(_sceneElements.default, {
19
+ objects: Object.values(data)
20
+ });
21
+ };
22
+
23
+ var _default = Background;
24
+ exports.default = _default;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var CustomGeometry = function CustomGeometry(_ref) {
13
+ var type = _ref.type,
14
+ args = _ref.args;
15
+
16
+ switch (type) {
17
+ case 'BoxBuffer':
18
+ {
19
+ return /*#__PURE__*/_react.default.createElement("boxBufferGeometry", {
20
+ args: args
21
+ });
22
+ }
23
+
24
+ case 'SphereBuffer':
25
+ {
26
+ return /*#__PURE__*/_react.default.createElement("sphereBufferGeometry", {
27
+ args: args
28
+ });
29
+ }
30
+
31
+ case 'PlaneBuffer':
32
+ {
33
+ return /*#__PURE__*/_react.default.createElement("planeBufferGeometry", {
34
+ args: args
35
+ });
36
+ }
37
+
38
+ default:
39
+ {
40
+ return null;
41
+ }
42
+ }
43
+ };
44
+
45
+ var _default = CustomGeometry;
46
+ exports.default = _default;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _drei = require("@react-three/drei");
11
+
12
+ var _fiber = require("@react-three/fiber");
13
+
14
+ var _three = require("three");
15
+
16
+ var _element = _interopRequireDefault(require("../../element"));
17
+
18
+ var _customGeometry = _interopRequireDefault(require("./customGeometry"));
19
+
20
+ var _light = _interopRequireDefault(require("../../light"));
21
+
22
+ var _excluded = ["material"];
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
+
28
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
+
30
+ 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; }
31
+
32
+ var SceneElements = function SceneElements(_ref) {
33
+ var objects = _ref.objects;
34
+ var scene = (0, _fiber.useThree)(function (state) {
35
+ return state.scene;
36
+ });
37
+ var fog = objects.find(function (object) {
38
+ return object.type === 'FOG';
39
+ });
40
+
41
+ if (fog) {
42
+ scene.fog = new _three.FogExp2(fog.color, fog.density);
43
+ }
44
+
45
+ return /*#__PURE__*/_react.default.createElement("group", {
46
+ name: "BACKGROUND"
47
+ }, objects.map(function (_ref2, i) {
48
+ var _object$userData, _object$userData2, _object$userData3;
49
+
50
+ var material = _ref2.material,
51
+ object = _objectWithoutProperties(_ref2, _excluded);
52
+
53
+ if ((_object$userData = object.userData) !== null && _object$userData !== void 0 && _object$userData.isPrimitive) {
54
+ return /*#__PURE__*/_react.default.createElement("mesh", _extends({
55
+ key: object.uid || "".concat(object.name, "_").concat(i)
56
+ }, object, {
57
+ onBeforeRender: function onBeforeRender() {
58
+ _three.DefaultLoadingManager.onStart(1, 0, 1);
59
+ },
60
+ onAfterRender: function onAfterRender() {
61
+ _three.DefaultLoadingManager.onProgress(1, 1, 1);
62
+
63
+ _three.DefaultLoadingManager.onLoad();
64
+ }
65
+ }), /*#__PURE__*/_react.default.createElement(_customGeometry.default, {
66
+ type: object.userData.primitiveType,
67
+ args: object.userData.props
68
+ }), /*#__PURE__*/_react.default.createElement("meshLambertMaterial", material));
69
+ }
70
+
71
+ if (object.url && object.userData.resourceId) {
72
+ return /*#__PURE__*/_react.default.createElement(_element.default, _extends({
73
+ key: object.uid || "".concat(object.userData.resourceId, "_").concat(i),
74
+ url: object.url,
75
+ position: object.position,
76
+ rotation: object.rotation,
77
+ scale: object.scale,
78
+ material: material,
79
+ onPointerMove: undefined
80
+ }, object));
81
+ }
82
+
83
+ if ((object === null || object === void 0 ? void 0 : (_object$userData2 = object.userData) === null || _object$userData2 === void 0 ? void 0 : _object$userData2.data) === 'camera') {
84
+ return /*#__PURE__*/_react.default.createElement(_drei.PerspectiveCamera, _extends({
85
+ makeDefault: object.defaultCamera
86
+ }, object, {
87
+ key: object.name,
88
+ onUpdate: function onUpdate(self) {
89
+ self.layers.enableAll();
90
+ }
91
+ }));
92
+ } // lights
93
+
94
+
95
+ if ((object === null || object === void 0 ? void 0 : (_object$userData3 = object.userData) === null || _object$userData3 === void 0 ? void 0 : _object$userData3.data) === 'light') {
96
+ return /*#__PURE__*/_react.default.createElement(_light.default, _extends({}, object, {
97
+ key: object.name
98
+ }));
99
+ }
100
+
101
+ return null;
102
+ }));
103
+ };
104
+
105
+ var _default = SceneElements;
106
+ exports.default = _default;
@@ -0,0 +1,136 @@
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 _drei = require("@react-three/drei");
13
+
14
+ var _useGLB2 = _interopRequireDefault(require("../../../helpers/useGLB"));
15
+
16
+ var _BoundingBox = _interopRequireDefault(require("./BoundingBox"));
17
+
18
+ var _excluded = ["model", "position", "rotation", "animationUrl", "enableBounding", "layers", "pauseAtStart", "onClick", "onPointerOver", "onPointerOut"];
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
+
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
+
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+
32
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
+
34
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
35
+
36
+ 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; }
37
+
38
+ var AnimateElement = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
39
+ var model = _ref.model,
40
+ position = _ref.position,
41
+ rotation = _ref.rotation,
42
+ animationUrl = _ref.animationUrl,
43
+ enableBounding = _ref.enableBounding,
44
+ layers = _ref.layers,
45
+ pauseAtStart = _ref.pauseAtStart,
46
+ onClick = _ref.onClick,
47
+ onPointerOver = _ref.onPointerOver,
48
+ onPointerOut = _ref.onPointerOut,
49
+ props = _objectWithoutProperties(_ref, _excluded);
50
+
51
+ var _useGLB = (0, _useGLB2.default)(animationUrl),
52
+ animations = _useGLB.animations;
53
+
54
+ var _useAnimations = (0, _drei.useAnimations)(animations),
55
+ animationRef = _useAnimations.ref,
56
+ mixer = _useAnimations.mixer;
57
+
58
+ var mouseEvents = {
59
+ onClick: onClick,
60
+ onPointerOver: onPointerOver,
61
+ onPointerOut: onPointerOut,
62
+ onPointerCancel: props.onPointerCancel,
63
+ onPointerDown: props.onPointerDown,
64
+ onPointerEnter: props.onPointerEnter,
65
+ onPointerLeave: props.onPointerLeave,
66
+ onPointerMove: props.onPointerMove,
67
+ onPointerUp: props.onPointerUp
68
+ };
69
+
70
+ var currentProps = _objectSpread(_objectSpread({}, enableBounding ? {} : mouseEvents), props);
71
+
72
+ var getRef = function getRef(node) {
73
+ if (ref) {
74
+ if (ref instanceof Function) {
75
+ ref(node);
76
+ } else {
77
+ ref.current = node;
78
+ }
79
+ }
80
+
81
+ animationRef.current = node;
82
+ };
83
+
84
+ (0, _react.useEffect)(function () {
85
+ if (animationRef.current) {
86
+ mixer.stopAllAction();
87
+ var clip = animations[0];
88
+ animationRef.current.userData.defaultAnim = clip;
89
+ animationRef.current.userData.mixer = mixer;
90
+
91
+ if (clip) {
92
+ var action = mixer.clipAction(clip, animationRef.current);
93
+ action.play();
94
+
95
+ if (animationRef.current.brother) {
96
+ animationRef.current.brother.updatePosition();
97
+ }
98
+
99
+ if (pauseAtStart) {
100
+ action.paused = true;
101
+ }
102
+ }
103
+ }
104
+ }, [mixer, animations, pauseAtStart, animationRef]);
105
+ (0, _react.useEffect)(function () {
106
+ if (model.brother) {
107
+ model.brother.updatePosition();
108
+ }
109
+ }, [model, position, rotation, currentProps.scale]);
110
+ return /*#__PURE__*/_react.default.createElement("group", {
111
+ visible: props.visible
112
+ }, enableBounding ? /*#__PURE__*/_react.default.createElement(_BoundingBox.default, _extends({
113
+ model: model,
114
+ layers: layers
115
+ }, mouseEvents)) : null, /*#__PURE__*/_react.default.createElement("primitive", _extends({
116
+ ref: getRef,
117
+ object: model,
118
+ position: position,
119
+ rotation: rotation,
120
+ raycast: enableBounding ? function () {} : _drei.meshBounds
121
+ }, currentProps)));
122
+ });
123
+
124
+ AnimateElement.defaultProps = {
125
+ onClick: function onClick() {},
126
+ onPointerOver: function onPointerOver() {},
127
+ onPointerOut: function onPointerOut() {},
128
+ onPointerCancel: function onPointerCancel() {},
129
+ onPointerDown: function onPointerDown() {},
130
+ onPointerEnter: function onPointerEnter() {},
131
+ onPointerLeave: function onPointerLeave() {},
132
+ onPointerMove: function onPointerMove() {},
133
+ onPointerUp: function onPointerUp() {}
134
+ };
135
+ var _default = AnimateElement;
136
+ exports.default = _default;
@@ -0,0 +1,65 @@
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 _three = require("three");
13
+
14
+ var _excluded = ["model", "visible"];
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ 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; }
25
+
26
+ var BoundingBox = function BoundingBox(_ref) {
27
+ var model = _ref.model,
28
+ visible = _ref.visible,
29
+ props = _objectWithoutProperties(_ref, _excluded);
30
+
31
+ var bounding = (0, _react.useRef)();
32
+ (0, _react.useEffect)(function () {
33
+ if (model && bounding.current) {
34
+ var updatePosition = function updatePosition() {
35
+ var box = new _three.Box3().setFromObject(model);
36
+ var size = box.getSize(new _three.Vector3());
37
+ bounding.current.position.copy(model.position);
38
+ bounding.current.rotation.copy(model.rotation);
39
+ bounding.current.scale.copy(size);
40
+ bounding.current.scale.x /= 2;
41
+ bounding.current.position.y += size.y / 2;
42
+ };
43
+
44
+ updatePosition();
45
+ bounding.current.updatePosition = updatePosition;
46
+ model.brother = bounding.current;
47
+ }
48
+ }, [model]);
49
+ return /*#__PURE__*/_react.default.createElement("mesh", _extends({
50
+ ref: bounding
51
+ }, props), /*#__PURE__*/_react.default.createElement("boxGeometry", {
52
+ args: [1, 1, 1]
53
+ }), /*#__PURE__*/_react.default.createElement("meshBasicMaterial", {
54
+ color: "grey",
55
+ visible: false
56
+ }));
57
+ };
58
+
59
+ BoundingBox.defaultProps = {
60
+ rotation: [0, 0, 0],
61
+ position: [0, 0, 0],
62
+ visible: true
63
+ };
64
+ var _default = BoundingBox;
65
+ exports.default = _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _fiber = require("@react-three/fiber");
11
+
12
+ var _helpers = require("../../../helpers");
13
+
14
+ var Projection = function Projection(_ref) {
15
+ var object = _ref.object,
16
+ element = _ref.element;
17
+ var domNode = document.getElementById('elements-projection');
18
+
19
+ var _useThree = (0, _fiber.useThree)(),
20
+ gl = _useThree.gl,
21
+ camera = _useThree.camera;
22
+
23
+ var pos = (0, _helpers.getObjectPosition)(object, camera, gl.domElement);
24
+ (0, _react.useLayoutEffect)(function () {
25
+ var existingEl = document.getElementById(element.uid);
26
+ var div = existingEl || document.createElement('div');
27
+ div.setAttribute('id', element.uid);
28
+ div.setAttribute('x', pos.x);
29
+ div.setAttribute('y', pos.y);
30
+ div.setAttribute('type', element.type);
31
+ div.setAttribute('name', element.name);
32
+ if (!existingEl) domNode.appendChild(div);
33
+ });
34
+ return null;
35
+ };
36
+
37
+ var _default = Projection;
38
+ exports.default = _default;
@@ -0,0 +1,163 @@
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 _fiber = require("@react-three/fiber");
13
+
14
+ var SkeletonUtils = _interopRequireWildcard(require("three/examples/jsm/utils/SkeletonUtils"));
15
+
16
+ var _three = require("three");
17
+
18
+ var _AnimateElement = _interopRequireDefault(require("./AnimateElement"));
19
+
20
+ var _Projection = _interopRequireDefault(require("./Projection"));
21
+
22
+ var _useGLB = _interopRequireDefault(require("../../../helpers/useGLB"));
23
+
24
+ var _excluded = ["url", "animationUrl", "position", "rotation", "scale", "size", "material", "layers", "type", "onLoad", "userData", "enableBounding", "showProjection"];
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
+
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+
36
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
+
38
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
39
+
40
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
41
+
42
+ 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."); }
43
+
44
+ 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); }
45
+
46
+ 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; }
47
+
48
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : 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; }
49
+
50
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
+
52
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
53
+
54
+ 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; }
55
+
56
+ var Element = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
57
+ var url = _ref.url,
58
+ animationUrl = _ref.animationUrl,
59
+ position = _ref.position,
60
+ rotation = _ref.rotation,
61
+ scale = _ref.scale,
62
+ size = _ref.size,
63
+ material = _ref.material,
64
+ layers = _ref.layers,
65
+ type = _ref.type,
66
+ onLoad = _ref.onLoad,
67
+ userData = _ref.userData,
68
+ enableBounding = _ref.enableBounding,
69
+ _ref$showProjection = _ref.showProjection,
70
+ showProjection = _ref$showProjection === void 0 ? true : _ref$showProjection,
71
+ props = _objectWithoutProperties(_ref, _excluded);
72
+
73
+ var model = (0, _useGLB.default)(url);
74
+ var modelClone = (0, _react.useMemo)(function () {
75
+ return SkeletonUtils.clone(model.scene);
76
+ }, [model]);
77
+ var usingScale = size ? Object.values(size) : scale;
78
+ var isCharacter = type === 'character';
79
+
80
+ if (usingScale.length < 3) {
81
+ usingScale.push(1);
82
+ }
83
+
84
+ modelClone.userData.url = url;
85
+
86
+ var _useThree = (0, _fiber.useThree)(function (state) {
87
+ return [state.scene, state.camera];
88
+ }),
89
+ _useThree2 = _slicedToArray(_useThree, 2),
90
+ currentScene = _useThree2[0],
91
+ camera = _useThree2[1];
92
+
93
+ (0, _react.useEffect)(function () {
94
+ if (modelClone) {
95
+ modelClone.traverse(function (node) {
96
+ if (node.isMesh) {
97
+ node.receiveShadow = true;
98
+ node.castShadow = true;
99
+ node.material.roughness = 0.7;
100
+ node.material.metalness = 0.5;
101
+
102
+ if (isCharacter) {
103
+ node.frustumCulled = false;
104
+
105
+ node.material.onBeforeCompile = function (shader) {
106
+ if (shader.vertexAlphas) shader.vertexAlphas = false;
107
+ };
108
+ }
109
+
110
+ if (layers > 0) {
111
+ node.layers.set(layers);
112
+ }
113
+
114
+ if (node.isSkinnedMesh) {
115
+ node.material.skinned = true;
116
+ }
117
+
118
+ if (Object.keys(material).length > 0) {
119
+ (0, _fiber.applyProps)(node.material, material);
120
+ node.material.alphaTest = material.alphaTest || 0.5;
121
+ }
122
+
123
+ if (node.material.map) node.material.map.encoding = _three.sRGBEncoding;
124
+ if (node.material.emissiveMap) node.material.emissiveMap.encoding = _three.sRGBEncoding;
125
+ node.material.needsUpdate = true;
126
+ }
127
+ });
128
+ onLoad(modelClone, currentScene, camera);
129
+ }
130
+ }, [modelClone, material, onLoad, currentScene, camera, layers, isCharacter]);
131
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, animationUrl ? /*#__PURE__*/_react.default.createElement(_AnimateElement.default, _extends({
132
+ ref: ref,
133
+ animationUrl: animationUrl,
134
+ model: modelClone,
135
+ position: position,
136
+ rotation: rotation,
137
+ scale: usingScale,
138
+ enableBounding: enableBounding,
139
+ layers: layers
140
+ }, props)) : /*#__PURE__*/_react.default.createElement("primitive", _extends({
141
+ ref: ref,
142
+ object: modelClone,
143
+ position: position,
144
+ rotation: rotation,
145
+ scale: usingScale
146
+ }, props)), props.uid && showProjection ? /*#__PURE__*/_react.default.createElement(_Projection.default, {
147
+ object: modelClone,
148
+ element: _objectSpread(_objectSpread({}, props), {}, {
149
+ type: type
150
+ })
151
+ }) : null);
152
+ });
153
+
154
+ Element.defaultProps = {
155
+ position: [0, 0, 0],
156
+ scale: [1, 1, 1],
157
+ layers: 0,
158
+ material: {},
159
+ enableBounding: false,
160
+ onLoad: function onLoad() {}
161
+ };
162
+ var _default = Element;
163
+ exports.default = _default;