UNPKG

@turbox3d/renderer-core

Version:

Large-scale declarative graphic ui core renderer

142 lines 4.79 kB
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/esm/inherits"; import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } import { shallowEqual } from '@turbox3d/shared'; import { getSceneParent } from './utils'; var dummyPreserveProps = { key: void 0, // children: void 0, // onClick: void 0, // onDBClick: void 0, // onRightClick: void 0, // onDragStart: void 0, // onDragMove: void 0, // onDragEnd: void 0, // onPinchStart: void 0, // onPinch: void 0, // onPinchEnd: void 0, // onRotateStart: void 0, // onRotate: void 0, // onRotateEnd: void 0, // onPress: void 0, // onPressUp: void 0, // onHoverIn: void 0, // onHoverOut: void 0, clickable: void 0, hoverable: void 0, draggable: void 0, pinchable: void 0, rotatable: void 0, pressable: void 0, id: void 0, type: void 0 }; /** * graphic render component */ export var Component = /*#__PURE__*/function () { function Component() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, Component); this.props = props; } return _createClass(Component, [{ key: "context", get: function get() { var scene = getSceneParent(this); if (scene) { return scene.sceneContext || {}; } return {}; } }, { key: "forceUpdate", value: function forceUpdate() { this._vNode.update(true); } }, { key: "shouldComponentUpdate", value: function shouldComponentUpdate() { var nextProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return true; } }, { key: "shouldComponentInteractiveUpdate", value: function shouldComponentInteractiveUpdate() { var nextProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return !shallowEqual({ clickable: this.props.clickable, hoverable: this.props.hoverable, draggable: this.props.draggable, pinchable: this.props.pinchable, rotatable: this.props.rotatable, pressable: this.props.pressable }, { clickable: nextProps.clickable, hoverable: nextProps.hoverable, draggable: nextProps.draggable, pinchable: nextProps.pinchable, rotatable: nextProps.rotatable, pressable: nextProps.pressable }); } }, { key: "shouldComponentCustomPropsUpdate", value: function shouldComponentCustomPropsUpdate() { var nextProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var preserveKeys = Object.keys(dummyPreserveProps); return !shallowEqual(this.props, nextProps, preserveKeys); } }, { key: "componentWillMount", value: function componentWillMount() { // } }, { key: "componentWillUpdate", value: function componentWillUpdate() { var nextProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; } // }, { key: "render", value: function render() { return this.props.children || null; } }, { key: "componentDidMount", value: function componentDidMount() { // } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps) { // } }, { key: "componentWillUnmount", value: function componentWillUnmount() { // } }]); }(); export var PureComponent = /*#__PURE__*/function (_Component) { function PureComponent() { _classCallCheck(this, PureComponent); return _callSuper(this, PureComponent, arguments); } _inherits(PureComponent, _Component); return _createClass(PureComponent, [{ key: "shouldComponentUpdate", value: function shouldComponentUpdate(nextProps) { var interactiveKeys = new Set(['clickable', 'hoverable', 'draggable', 'pinchable', 'rotatable', 'pressable']); var preserveKeys = Object.keys(dummyPreserveProps).filter(function (key) { return !interactiveKeys.has(key); }); return !shallowEqual(this.props, nextProps, preserveKeys); } }]); }(Component);