@turbox3d/renderer-core
Version:
Large-scale declarative graphic ui core renderer
142 lines • 4.79 kB
JavaScript
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);