ASCII Airplane Banner
JavaScript (ES6), 141 138 bytes

String and direction are input via currying syntax.'/\n|-DI&gt;-/---&lt; ' for left, '/\n|-DI&lt;-\\---&gt; ' for right.

t=&gt;p=&gt;(r=`${s='           '}/${_='-'.repeat(t.length*2+1)}${p}${[...t].join` `} ${d=p[12]} 
${s}\\${_}\\`,d&gt;'&lt;'?[...r].reverse().join``:r)




f=

t=&gt;p=&gt;(r=`${s='           '}/${_='-'.repeat(t.length*2+1)}${p}${[...t].join` `} ${d=p[12]} 
${s}\\${_}\\`,d&gt;'&lt;'?[...r].reverse().join``:r)

console.log(f('HAPPY BIRTHDAY!')('/\n|-DI&gt;-/---&lt; '))
console.log(f('HAPPY BIRTHDAY!')('/\n|-DI&lt;-\\---&gt; '))