From 22be93347b26bc3101707fbdaf7ce96338e1c89c Mon Sep 17 00:00:00 2001 From: SleepWalker Date: Sun, 2 Oct 2016 13:18:26 +0300 Subject: [PATCH] Allow images for BitmapText in nested directories --- src/components/text/BitmapText.jsx | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/components/text/BitmapText.jsx b/src/components/text/BitmapText.jsx index b6abc3b..04bbb21 100644 --- a/src/components/text/BitmapText.jsx +++ b/src/components/text/BitmapText.jsx @@ -9,29 +9,28 @@ export function BitmapText(props) { throw new Error('Only src/emails and src/components subdirectories supported for now'); } - if (parts.length !== 3) { - throw new Error('The message.id must contain 3 parts separated by dots'); - } + const fileName = parts.pop(); + const componentPath = parts.slice(1).join('/'); let src; let size; try { try { - src = require(`emails/${parts[1]}/images/${props.intl.locale}/${parts[2]}.png`); + src = require(`emails/${componentPath}/images/${props.intl.locale}/${fileName}.png`); // TODO: we can improve this loader in future by adding an option to disable file emitting // because this thing is handled by url-loader - size = require(`image-size!emails/${parts[1]}/images/${props.intl.locale}/${parts[2]}.png`); + size = require(`image-size!emails/${componentPath}/images/${props.intl.locale}/${fileName}.png`); } catch (err) { // fallback to default locale - src = require(`emails/${parts[1]}/images/${props.intl.defaultLocale}/${parts[2]}.png`); - size = require(`image-size!emails/${parts[1]}/images/${props.intl.defaultLocale}/${parts[2]}.png`); + src = require(`emails/${componentPath}/images/${props.intl.defaultLocale}/${fileName}.png`); + size = require(`image-size!emails/${componentPath}/images/${props.intl.defaultLocale}/${fileName}.png`); } } catch (err) { // try components try { - src = require(`components/${parts[1]}/images/${props.intl.locale}/${parts[2]}.png`); - size = require(`image-size!components/${parts[1]}/images/${props.intl.locale}/${parts[2]}.png`); + src = require(`components/${componentPath}/images/${props.intl.locale}/${fileName}.png`); + size = require(`image-size!components/${componentPath}/images/${props.intl.locale}/${fileName}.png`); } catch (err) { // fallback to default locale - src = require(`components/${parts[1]}/images/${props.intl.defaultLocale}/${parts[2]}.png`); - size = require(`image-size!components/${parts[1]}/images/${props.intl.defaultLocale}/${parts[2]}.png`); + src = require(`components/${componentPath}/images/${props.intl.defaultLocale}/${fileName}.png`); + size = require(`image-size!components/${componentPath}/images/${props.intl.defaultLocale}/${fileName}.png`); } }