file-prompt
Version:
An interactive prompt for selecting files from a directory.
1 lines • 4.66 kB
JavaScript
;function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}();Object.defineProperty(exports,"__esModule",{value:!0});var _chalk=require("chalk"),_chalk2=_interopRequireDefault(_chalk),_fs=require("fs"),_fs2=_interopRequireDefault(_fs),_dispatcher=require("../streams/dispatcher"),_dispatcher2=_interopRequireDefault(_dispatcher),_dispatch_transform=require("../streams/dispatch_transform"),_dispatch_transform2=_interopRequireDefault(_dispatch_transform),_generic_transform=require("../streams/generic_transform"),_generic_transform2=_interopRequireDefault(_generic_transform),_menu_transform=require("../streams/menu_transform"),_menu_transform2=_interopRequireDefault(_menu_transform),_minimatchAll=require("minimatch-all"),_minimatchAll2=_interopRequireDefault(_minimatchAll),_page=require("../page"),_page2=_interopRequireDefault(_page),_path=require("path"),_path2=_interopRequireDefault(_path),_prompt=require("../prompt"),_prompt2=_interopRequireDefault(_prompt),_queries_transform=require("../streams/queries_transform"),_queries_transform2=_interopRequireDefault(_queries_transform),_vertical_menu=require("../vertical_menu"),_vertical_menu2=_interopRequireDefault(_vertical_menu),DirectoriesPage=function(e){function t(e){_classCallCheck(this,t);var r=_possibleConstructorReturn(this,Object.getPrototypeOf(t).call(this,e));return r.question="Add files or enter directory",r.menu=new _vertical_menu2["default"]({canUnselect:!0,acceptsMany:!0,stdin:r.props.stdin,stdout:r.props.stdout,app:r.props.app}),r.prompt=new _prompt2["default"]({stdin:r.props.stdin,stdout:r.props.stdout}),r.pipeline=r.createPipeline(),r}return _inherits(t,e),_createClass(t,[{key:"getInitialState",value:function(){return{selected:[],targetDir:null}}},{key:"getFiles",value:function(e,t){var r=this.select("config.base"),i=t===r,a=this.select("files"),n=[],s=[];return Array.isArray(e)||(e=[e]),n=_fs2["default"].readdirSync(t),n=n.map(function(e){return _path2["default"].join(t,e)}).filter(function(t){var r=_fs2["default"].statSync(t);return r.isDirectory()?(s.push(t),!0):(0,_minimatchAll2["default"])(t,e)}).map(function(e,r){var n=_path2["default"].relative(t,e),u=s.indexOf(e)>-1;return u&&(n+="/"),{id:i?r+1:r+2,name:n,value:e,isSelected:a.indexOf(e)>-1,label:u?_chalk2["default"].bold(n):n}}),t!==r&&n.unshift({id:1,name:"..",value:_path2["default"].resolve(t,".."),label:_chalk2["default"].bold("..")}),n}},{key:"processFile",value:function(e,t){var r=null,i=t.data,a=t.params,n=i.value,s=void 0;if("file"!==t.type)return void e.push(t);if(s=_fs2["default"].statSync(n),s.isDirectory()&&"single"===t.data.type)r=n,t.type="directory";else if(s.isDirectory())return;r&&1===a.queryCount&&!this.state.targetDir&&"single"===i.type&&(this.state.targetDir=r),e.push(t)}},{key:"route",value:function(e,t){switch(t.type){case"navigate":switch(t.data){case"blank":e.end(),this.navigate("index");break;case"all":this.navigate("index");break;default:e.end(),this.navigate("directories",{base:this.state.targetDir})}break;case"done":this.reprompt();break;case"error":this.displayError(t.data)}}},{key:"showPrompt",value:function(){return this.prompt.beckon(this.question).pipe(this.pipeline).pipe(new _dispatcher2["default"](this.route))}},{key:"workflow",value:function(){return{query:new _queries_transform2["default"],menu:new _menu_transform2["default"]({menu:this.menu}),process:new _generic_transform2["default"](this.processFile.bind(this)),dispatch:new _dispatch_transform2["default"]({store:this.props.store})}}},{key:"renderMenu",value:function(){return this.menu.setOptions(this.getFiles(this.getGlob(),this.getBasedir())),this.menu.render()}},{key:"renderPrompt",value:function(){return this.showPrompt}}]),t}(_page2["default"]);exports["default"]=DirectoriesPage;