From b2fcd18bce73b861c2423e7e442c7a104d1b9309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=93=D1=80=D0=B5=D0=BD=D0=B8=D1=88=D0=B8=D0=BD?= Date: Fri, 29 Mar 2019 17:02:16 +0300 Subject: [PATCH] parse resize modifier when restoring effects from cdn url --- src/tools/effects-from-modifiers.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tools/effects-from-modifiers.js b/src/tools/effects-from-modifiers.js index 439cd2f..18a91a9 100644 --- a/src/tools/effects-from-modifiers.js +++ b/src/tools/effects-from-modifiers.js @@ -11,7 +11,7 @@ const effectsDefaults = { const modifierRegExp = { blur: /-\/blur\/(([0-9]+)\/|)/i, - crop: /-\/crop\/([0-9]+)x([0-9]+)(\/(center|([0-9]+),([0-9]+)))?\//i, + crop: /-\/crop\/([0-9]+)x([0-9]+)(\/(center|([0-9]+),([0-9]+)))?\/(-\/resize\/([0-9]+)x([0-9]+)\/)?/i, enhance: /-\/enhance\/(([0-9]+)\/|)/i, flip: /-\/flip\//i, grayscale: /-\/grayscale\//i, @@ -30,7 +30,7 @@ function effectsFromModifiers(cdnUrlModifiers, settingsEffects) { } let effects = {} - let otherModifiers = cdnUrlModifiers.replace(/-\/preview\//g, '').replace(/-\/resize\/\d*x\d*\//g, '') + let otherModifiers = cdnUrlModifiers.replace(/-\/preview\//g, '') settingsEffects.forEach(settingsEffect => { if (modifierRegExp[settingsEffect]) { @@ -40,7 +40,11 @@ function effectsFromModifiers(cdnUrlModifiers, settingsEffects) { let effectValue if (settingsEffect === 'crop') { + const hasResize = foundModifier.length >= 3 && foundModifier[foundModifier.length - 3].includes('resize') + const resizeTo = hasResize ? foundModifier.slice(-2) : null + effectValue = { + resizeTo, coords: { width: parseInt(foundModifier[1]), height: parseInt(foundModifier[2]), @@ -55,9 +59,8 @@ function effectsFromModifiers(cdnUrlModifiers, settingsEffects) { effectValue = true } if (effectsDefaults[settingsEffect][0] === 'number') { - effectValue = (foundModifier[2] === undefined) - ? effectsDefaults[settingsEffect][1] - : parseInt(foundModifier[2]) + effectValue = + foundModifier[2] === undefined ? effectsDefaults[settingsEffect][1] : parseInt(foundModifier[2]) } }