hpg-r3f-model-scene
Version:
Pretty Footer react component used in ant.design
93 lines (92 loc) • 4.92 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Environment;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _drei = require("@react-three/drei");
var _three = require("three");
var _setMaterial = require("../utils/setMaterial");
var _events = require("../common/events");
var _enums = require("../utils/enums");
var _fiber = require("@react-three/fiber");
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); }
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; }
var Env = function Env(_ref) {
var map = _ref.map;
var _useThree = (0, _fiber.useThree)(),
scene = _useThree.scene;
scene.background = (0, _drei.useTexture)(map);
return null;
};
function Environment(_ref2) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref2), _ref2));
var _useState = (0, _react.useState)(props.color),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
color = _useState2[0],
setColor = _useState2[1];
if (!color) {
return null;
}
var _useEventBus = _events.useEventBus;
_setMaterial.setBackgroundActions.forEach(function (d) {
_useEventBus(d, /*#__PURE__*/function () {
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params) {
var prefix, dd, d1;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (d === _enums.MaterialFunc.SET_BACKGROUND) {
prefix = false;
if (params.indexOf('#') > -1) {
prefix = true;
dd = new _three.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.default.createElement("color", {
// eslint-disable-next-line react/no-unknown-property
attach: "background",
// eslint-disable-next-line react/no-unknown-property
args: [new _three.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.default.createElement(_drei.Environment, (0, _objectSpread2.default)({
files: color
}, props));
}
if (fileExtension === 'jpg' || fileExtension === 'png') {
// const map = getTexture({ url: color }) || undefined;
return /*#__PURE__*/_react.default.createElement(Env, {
map: color
});
}
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
}