Files
JiboSDK/lib/common/directory-tree-view.js

1 line
2.2 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=e(require("path")),s=e(require("fs")),i=e(require("react"));module.exports=i.createClass({displayName:"directory-tree-view",propTypes:{uri:i.PropTypes.string.isRequired,extension:i.PropTypes.string.isRequired},getInitialState:function(){return{selectedAnim:void 0,collapsedDirectoried:{}}},createFile:function(e){var s=t.parse(e).base;if(this.props.filter&&!s.toLowerCase().includes(this.props.filter.toLowerCase()))return null;var r=this.state.selectedAnim===e?"list-item selected-item":"list-item";return i.createElement("ul",{className:"list-tree"},i.createElement("li",{onClick:this.onSelected.bind(this,e),onDoubleClick:this.onChosen.bind(this,e),className:r},i.createElement("span",{className:"icon icon-file-text"},s)))},onSelected:function(e){this.props.onSelected(e),this.state.selectedAnim=e,this.setState(this.state)},onChosen:function(e){this.state.selectedAnim=e,this.setState(this.state),this.props.onChosen(e)},onCollapsed:function(e){this.state.collapsedDirectoried[e]?delete this.state.collapsedDirectoried[e]:this.state.collapsedDirectoried[e]=!0,this.setState(this.state)},createDirectory:function(e){var r=this,a=void 0===arguments[1]?!1:arguments[1],n=t.parse(e).base;if(".git"===n||"node_modules"==n)return null;var l=s.readdirSync(e),o=[];l.forEach(function(i){var a=t.resolve(e,i),n=s.lstatSync(a);if(n.isDirectory())o.push(r.createDirectory(a));else if(r.props.extension instanceof Array)for(var l=0;l<r.props.extension.length;l++){var c=r.props.extension[l];t.extname(i)===c.toLowerCase()&&o.push(r.createFile(a))}else r.props.extension&&t.extname(i)===r.props.extension.toLowerCase()&&o.push(r.createFile(a))});var c=this.state.collapsedDirectoried[e]?"list-nested-item collapsed":"list-nested-item";return a?i.createElement("ul",{className:"list-group"},o):i.createElement("ul",{className:"list-tree has-collapsable-children"},i.createElement("li",{className:c},i.createElement("div",{onClick:this.onCollapsed.bind(this,e),className:"list-item"},i.createElement("span",{className:"icon icon-file-directory"},n)),o))},render:function(){return i.createElement("div",{className:"jibo-list-tree"},this.createDirectory(this.props.uri,!0))}});