Uiua, 38 3737 36 bytes
⊏:⊂@ :⍥⊏⊙⊂⍥(⍉⊂⇌↘1.)2⊞(×↥⊙⊃=↥=1↧,,).+1⇡⧻.,@ ⇌
-12 thanks to chunes.
Try it online! Explanation:
⊏⊙⊂⍥(⍉⊂⇌↘1.)2⊞(×↥⊙⊃=↥=1↧,,).+1⇡⧻,@ ⇌
⇌ # reverse the input string
@ # put a space on the stack
, # over: copy the string back to the top of the stack
⇡⧻ # range 1..length
+1 # add 1 so it's 1-indexed
. # duplicate
⊞( ) # for each combination (of the duplicates), this gives us a matrix row:column
,, # copy the 2 top values on the stack
=1↧ # is the minimum 1?
⊙ # store this result, temporarily remove it from the stack to...
⊃ # ...fork: do both operations to the same elements on the stack
↥ # maximum
= # equal
↥ # maximum of this fork
× # times the stored result
# We now have the first quadrant
⍥( )2 # do twice
. # copy the quadrant
↘1 # drop the first element (because the middle would be duplicated otherwise)
⇌ # reverse it (needs to be mirror)
⊂ # append the quadrant with the mirror
⍉ # transpose it so the pattern works on both sides
⊙ # store this result, temporarily remove it from the stack to...
⊂ # join the string with the space
⊏ # index into the strings with our matrix, zero being the empty space we just appended