hpg-r3f-model-scene
Version:
Pretty Footer react component used in ant.design
83 lines • 3.25 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectDestructuringEmpty from "@babel/runtime/helpers/esm/objectDestructuringEmpty";
import _extends from "@babel/runtime/helpers/esm/extends";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React, { useState } from 'react';
import { Environment as EnvironmentImpl, useTexture } from '@react-three/drei';
import { Color } from 'three';
import { setBackgroundActions } from '../utils/setMaterial';
import { useEventBus } from '../common/events';
import { MaterialFunc } from '../utils/enums';
import { useThree } from '@react-three/fiber';
var Env = function Env(_ref) {
var map = _ref.map;
var _useThree = useThree(),
scene = _useThree.scene;
scene.background = useTexture(map);
return null;
};
export default function Environment(_ref2) {
var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
var _useState = useState(props.color),
_useState2 = _slicedToArray(_useState, 2),
color = _useState2[0],
setColor = _useState2[1];
if (!color) {
return null;
}
var _useEventBus = useEventBus;
setBackgroundActions.forEach(function (d) {
_useEventBus(d, /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
var prefix, dd, d1;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (d === MaterialFunc.SET_BACKGROUND) {
prefix = false;
if (params.indexOf('#') > -1) {
prefix = true;
dd = new Color(params.toString()).toArray();
d1 = [~~(dd[0] * 255), ~~(dd[1] * 255), ~~(dd[2] * 255)];
setColor(d1);
}
if (!prefix) {
setColor(params);
}
}
case 1:
case "end":
return _context.stop();
}
}, _callee);
}));
return function (_x) {
return _ref3.apply(this, arguments);
};
}());
});
if (color instanceof Array) {
return /*#__PURE__*/React.createElement("color", {
// eslint-disable-next-line react/no-unknown-property
attach: "background",
// eslint-disable-next-line react/no-unknown-property
args: [new Color("rgb(".concat(color[0], ",").concat(color[1], ",").concat(color[2], ")"))]
});
}
var fileExtension = color.substring(color.lastIndexOf('.') + 1).toLocaleLowerCase();
if (fileExtension === 'hdr') {
// eslint-disable-next-line react/jsx-props-no-spreading
return /*#__PURE__*/React.createElement(EnvironmentImpl, _objectSpread({
files: color
}, props));
}
if (fileExtension === 'jpg' || fileExtension === 'png') {
// const map = getTexture({ url: color }) || undefined;
return /*#__PURE__*/React.createElement(Env, {
map: color
});
}
return /*#__PURE__*/React.createElement(React.Fragment, null);
}