Files
JiboSDK/lib/animation-editor/models/keyframe-selection.js

1 line
9.6 KiB
JavaScript
Raw Permalink Normal View History

2026-03-22 03:21:45 +02:00
"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=function(){function e(e,t){for(var a in t){var n=t[a];n.configurable=!0,n.value&&(n.writable=!0)}Object.defineProperties(e,t)}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),a=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=e(require("lodash")),i=e(require("../../common/clipboard")),r={NORMAL:"NORMAL",TOGGLE:"TOGGLE"},o=function(){function e(t){a(this,e),this.animationModel=t,this.reset()}return t(e,{reset:{value:function(){this.animationModel.state.selection.keyframes={selected:{}},this.anchor={layerIndex:null,keyframeIndex:null}}},validateSelection:{value:function(){var e=this;for(var t in this.getState().selected){if(null===this.animationModel.getLayer(t))return void delete this.getState().selected[t];this.getState().selected[t]=n.filter(this.getState().selected[t],function(t){return t.time<e.animationModel.getDuration()})}}},canDeleteKeyframes:{value:function(){var e=this,t=!1;return this.forEachSelected(!0,!0,function(a,n){e.animationModel.keyframeExists(a,n)===!0&&(t=!0)}),t}},canPasteKeyframes:{value:function(e){var t=this;if("undefined"==typeof i.animationData)return!1;var a=JSON.parse(i.animationData);if("keyframes"!==a.type)return!1;var n=this.animationModel.getLayerIndex(e),r=a.value,o=!1;return r.forEach(function(e){var a=e.layerIndex+n;0>a||a>=t.animationModel.getLayerCount()-1||e.layerType!==t.animationModel.getLayerByIndex(a).type&&(o=!0)}),o===!1}},forEachLayerSelected:{value:function(e,t){var a=this,i=[];for(var r in this.getState().selected)i.push(r);i=n.sortBy(i,function(t){return e?a.animationModel.getLayerIndex(t):-a.animationModel.getLayerIndex(t)}),i.forEach(function(e){t(e)})}},forEachSelected:{value:function(e,t,a){var i=this;this.forEachLayerSelected(e,function(e){t?n.forEach(i.getState().selected[e],function(t,n){a(e,t,n)}):n.forEachRight(i.getState().selected[e],function(t,n){a(e,t,n)})})}},getState:{value:function(){return this.animationModel.state.selection.keyframes}},includesKeyframes:{value:function(){var e=this;for(var t in this.getState().selected){var a=function(t){for(var a=e.animationModel.getLayer(t),i=e.getState().selected[t],r=0;r<i.length;r++){var o=function(e){return-1!==n.findIndex(a.keyframes,function(t){return t.time===i[e]})?{v:{v:!0}}:void 0}(r);if("object"==typeof o)return o.v}}(t);if("object"==typeof a)return a.v}return!1}},getSelectionLayerType:{value:function(){if(this.isMultiSelect())throw new Error("Don't call KeyframeSelection.getSelectionLayerType() when KeyframeSelection.isMultiSelect() is true");var e=this.getCurrentKeyframe().layerId;return e?this.animationModel.getLayer(e).type:void 0}},getCurrentKeyframe:{value:function(){if(!this.isMultiSelect()){for(var e in this.getState().selected)if(this.getState().selected[e].length)return{keyframeIndex:this.getState().selected[e][0],layerId:e};var t=this.animationModel.getSelectedLayer();return{keyframeIndex:this.animationModel.uiState.currentTime,layerId:t?t.id:void 0}}throw new Error("KeyframeSelection.getCurrentKeyframe() should only be called when there aren't multiple keyframes selected")}},isSingleSelect:{value:function(){return!this.isMultiSelect()}},isMultiSelect:{value:function(){var e=0;for(var t in this.getState().selected)if(e+=this.getState().selected[t].length,e>=2)return!0;return!1}},isAnchor:{value:function(e,t){return this.animationModel.getLayerIndex(e)===this.getState().anchor.layerIndex&&t===this.getState().anchor.keyframeIndex}},isSelected:{value:function(e,t){return"undefined"==typeof this.getState().selected[e]?!1:-1!==n.findIndex(this.getState().selected[e],function(e){return e===t})}},onClick:{value:function(e,t,a){this.onMouseDown(e,t,a)}},onMouseDown:{value:function(e,t,a,n){1!==e.nativeEvent.which&&(e.preventDefault(),e.stopPropagation());var i=r.NORMAL;if("win32"===process.platform?e.nativeEvent.ctrlKey&&(i=r.TOGGLE):e.nativeEvent.metaKey&&(i=r.TOGGLE),"click"!==e.type||!this.isSingleSelect()&&i!==r.TOGGLE){var o=this.isSelected(t,a);if("click"===e.type||i!