@turbox3d/design-engine
Version:
Large-scale design application engine library
121 lines (120 loc) • 5.17 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _reactivity = require("@turbox3d/reactivity");
var _commandManager = require("@turbox3d/command-manager");
var _index2 = _interopRequireDefault(require("../selection-command/index"));
var _entityObject = _interopRequireDefault(require("../entity-object"));
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(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; })(); }
var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2["default"])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var Hint = /*#__PURE__*/function (_Domain) {
function Hint() {
(0, _classCallCheck2["default"])(this, Hint);
return _callSuper(this, Hint, arguments);
}
(0, _inherits2["default"])(Hint, _Domain);
return (0, _createClass2["default"])(Hint, [{
key: "hint",
value: function hint(model) {
this.hintedEntity = model;
}
}, {
key: "unHint",
value: function unHint() {
this.hintedEntity = undefined;
}
}]);
}(_reactivity.Domain);
__decorate([_reactivity.reactor], Hint.prototype, "hintedEntity", void 0);
__decorate([(0, _reactivity.mutation)()], Hint.prototype, "hint", null);
__decorate([(0, _reactivity.mutation)()], Hint.prototype, "unHint", null);
var HintCommand = exports["default"] = /*#__PURE__*/function (_Command) {
function HintCommand() {
var _this;
(0, _classCallCheck2["default"])(this, HintCommand);
_this = _callSuper(this, HintCommand, arguments);
_this.hintDomain = new Hint();
return _this;
}
/**
* @param selectionCommand selection command 实例,hint 与 select 同时启用时需要传入
*/
(0, _inherits2["default"])(HintCommand, _Command);
return (0, _createClass2["default"])(HintCommand, [{
key: "active",
value: function active(selectionCommand) {
this.selection = selectionCommand;
}
/** 获取被 hover 的 entity */
}, {
key: "getHintedEntity",
value: function getHintedEntity() {
return this.hintDomain.hintedEntity;
}
/** hint 指定 entity */
}, {
key: "hint",
value: function hint(model) {
this.hintDomain.hint(model);
}
/** 取消 hint */
}, {
key: "unHint",
value: function unHint() {
this.hintDomain.unHint();
}
}, {
key: "onHoverIn",
value: function onHoverIn(viewEntity) {
var model = _entityObject["default"].getEntityById(viewEntity.id);
if (!model) {
this.hintDomain.unHint();
return;
}
if (!this.selection) {
this.hintDomain.hint(model);
return;
}
var path = model.getParentPathChain();
var selectedEntities = this.selection.getSelectedEntities();
if (selectedEntities.length && selectedEntities.includes(path[0])) {
this.hintDomain.unHint();
return;
}
if (selectedEntities.length && selectedEntities.includes(model)) {
this.hintDomain.unHint();
return;
}
var layerDepth = this.selection.getLayerDepth();
var pathLength = path.length;
if (selectedEntities.length && selectedEntities[0].getRoot() !== path[0]) {
var _index = this.selection.getSelectMode() === _index2["default"].ESelectMode.OVERALL ? 1 : 2;
this.hintDomain.hint(path[_index - 1]);
return;
}
var index = Math.min(pathLength, layerDepth);
this.hintDomain.hint(path[index - 1]);
}
}, {
key: "onHoverOut",
value: function onHoverOut() {
this.hintDomain.unHint();
}
}]);
}(_commandManager.Command);