const fs = require ( 'fs' ) ;
const path = require ( 'path' ) ;
const mousetrap = require ( '../dep/mousetrap' ) ;
const lightRefresh = require ( '../fileview/lightrefresh' ) ;
const preModal = require ( '../modal/pre' ) ;
const postModal = require ( '../modal/post' ) ;
const showError = require ( '../modal/common/error' ) ;
const clearModals = require ( '../modal/clearmodals' ) ;
module . exports = ( ) => {
if ( window . kade . modal ) { console . log ( 'hboonk' ) ; return ; }
preModal ( 'new-folder-modal-container' ) ;
let modal = document . createElement ( 'div' ) ;
modal . className = 'modal' ;
modal . id = 'new-folder-modal-container' ;
document . body . appendChild ( modal ) ;
let title = document . createElement ( 'h2' ) ;
title . innerHTML = 'New Folder' ;
modal . appendChild ( title ) ;
let text = document . createElement ( 'p' ) ;
text . innerHTML = "Please name your new folder." ;
modal . appendChild ( text ) ;
let cont = document . createElement ( 'div' ) ;
cont . className = 'button-container' ;
modal . appendChild ( cont ) ;
let input = document . createElement ( 'input' ) ;
input . placeholder = 'New Folder' ;
input . id = 'new-folder-input' ;
let lastIn = '' ;
input . oninput = ( ) => {
if ( ! input . value . match ( /^[a-zA-Z0-9-_() ]*$/gm ) ) { input . value = lastIn ; }
else { lastIn = input . value ; }
} ;
cont . appendChild ( input ) ;
let conf = document . createElement ( 'button' ) ;
conf . innerHTML = 'Create' ;
conf . onclick = ( ) => {
try {
input . value . trim ( ) ;
if ( fs . existsSync ( path . join ( window . kade . cpath , input . value ) ) ) {
if ( ! input . value . match ( /^.+\(\d\)$/gm ) ) { input . value += ' (1)' ; }
else {
let tempstr = input . value . split ( '' ) ;
tempstr [ input . value . length - 2 ] = ` ${ Number ( input . value . charAt ( input . value . length - 2 ) ) + 1 } ` ;
input . value = tempstr . join ( '' ) ;
}
return ;
}
fs . mkdirSync ( path . join ( window . kade . cpath , input . value ) ) ;
lightRefresh ( ) ;
modal . remove ( ) ;
postModal ( modal . id ) ;
} catch {
clearModals ( ) ;
showError ( "Folder Creation" , "There was an unknown error while trying to create that folder. It may be a permissions issue, or the host folder doesn't exist anymore." ) ;
}
} ;
cont . appendChild ( conf ) ;
input . focus ( ) ;
let msm = new mousetrap ( modal ) ;
msm . bind ( 'esc' , ( ) => {
lightRefresh ( ) ;
modal . remove ( ) ;
postModal ( modal . id ) ;
} ) ;
msm . bind ( 'enter' , ( ) => { conf . click ( ) ; } ) ;
}