UNPKG

hpg-r3f-model-scene

Version:

Pretty Footer react component used in ant.design

93 lines (92 loc) 4.92 kB
"use strict"; 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); }