Files
JiboSDK/lib/animation-editor/views/properties/texture-input.js
2026-03-22 03:21:45 +02:00

1 line
2.7 KiB
JavaScript

"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=e(require("react")),n=e(require("../../../atom-react/mixins/modal-mixin")),o=e(require("path")),a=e(require("fs")),i=e(require("../modals/choose-texture-modal")),r=e(require("normalize-path")),s=t.createClass({displayName:"TextureInput",mixins:[n],getInitialState:function(){var e=this.getDisplayValue(this.props.content);return{content:this.props.content,displayValue:e}},componentWillReceiveProps:function(e){var t=e.content,n=this.getDisplayValue(t);this.setState({content:t,displayValue:n}),this.refs.editor.getDOMNode().getModel().setText(n)},render:function(){var e={};try{a.statSync(this.getUri())}catch(n){e={disabled:!0}}var o=e.disabled?t.createElement("div",{className:"error-messages"},"No texture file by that name"):null;return t.createElement("div",{style:{width:"100%"}},t.createElement("div",{className:"block"},t.createElement("div",{className:"fileBlock"},t.createElement("button",{style:{"float":"right"},className:"btn",onClick:this.onChoose},"..."),t.createElement("atom-text-editor",{onBlur:this.onBlur,ref:"editor",mini:!0},this.state.displayValue)),o,t.createElement("br",null)))},getUri:function(){return o.resolve(this.props.projectRoot,this.state.content)},getDisplayValue:function(e){var t=e.split("/");if("node_modules"===t[0]){var n=t[1],a=o.join("node_modules",n,"animations","textures");return a=r(o.relative(a,e)),n+"://"+a}var a=o.join("animations","textures");return a=o.relative(a,e),r(a)},getDataValue:function(e){var t=e.split("://");if(1===t.length){var n=o.join("animations","textures",e);return r(n)}if(2===t.length){var n=o.join("node_modules",t[0],"animations","textures",t[1]);return r(n)}return""},onChoose:function(){var e=this;this.createModal(t.createElement(i,{root:this.props.projectRoot,uri:this.getUri(),onChoose:function(t){var n=r(t),o=e.getDisplayValue(n);e.setState({content:n,displayValue:o}),e.props.onChange(n),document.querySelector("atom-pane.pane.active .animation-editor").childNodes[0].focus()},onClose:function(){e.destroyModal()}}))},onBlur:function(){this.props.onChange(this.state.content),document.querySelector("atom-pane.pane.active .animation-editor").childNodes[0].focus()},componentWillUnmount:function(){this.disposable.dispose()},componentDidMount:function(){var e=this,n=t.findDOMNode(this.refs.editor),o=n.getModel();o.onDidChange(function(){e.setState({content:e.getDataValue(o.getText()),displayValue:o.getText()})}),this.disposable=atom.commands.add(n,"core:confirm",function(){e.props.onChange(e.state.content),document.querySelector("atom-pane.pane.active .animation-editor").childNodes[0].focus()})}});module.exports=function(e,n,o,a){return t.createElement(s,{key:100,content:n,onChange:e,projectRoot:o,animationPath:a})};