From 31131fc56ecc52ba5ce8aa9854755b22620a7139 Mon Sep 17 00:00:00 2001 From: Daniel Karbach <daniel.karbach@localhorst.tv> Date: Fri, 5 Apr 2024 18:07:39 +0200 Subject: [PATCH] remove some useless svg groups --- resources/js/components/common/ZeldaIcon.js | 5 +- resources/js/components/tracker/Canvas.js | 15 +- resources/js/components/tracker/Dungeons.js | 116 +++--- resources/js/components/tracker/Items.js | 337 ++++++++++-------- resources/js/components/tracker/ToggleIcon.js | 4 +- 5 files changed, 263 insertions(+), 214 deletions(-) diff --git a/resources/js/components/common/ZeldaIcon.js b/resources/js/components/common/ZeldaIcon.js index 457e6e9..18b13eb 100644 --- a/resources/js/components/common/ZeldaIcon.js +++ b/resources/js/components/common/ZeldaIcon.js @@ -169,9 +169,8 @@ const ZeldaIcon = ({ name, svg, title }) => { href={isOnItemMap(strippedName) ? ITEM_MAP_URL : src} width={ITEM_MAP_WIDTH} height={ITEM_MAP_HEIGHT} - x="0" - y="0" - transform={`translate(-${clipX + 0.5} -${clipY + 0.5})`} + x={`-${clipX + 0.5}`} + y={`-${clipY + 0.5}`} clipPath={`xywh(${clipX + cropX} ${clipY + cropY} ${cropW} ${cropH})`} > {realTitle ? diff --git a/resources/js/components/tracker/Canvas.js b/resources/js/components/tracker/Canvas.js index fab1942..1258776 100644 --- a/resources/js/components/tracker/Canvas.js +++ b/resources/js/components/tracker/Canvas.js @@ -147,19 +147,16 @@ const Canvas = () => { </g> <g className="pins"> {pins.map(pin => - <g + <ToggleIcon key={pin.id} + className={`map-pin map-pin-${pin.id}`} + controller={ToggleIcon.pinController(pin, removePin)} + icons={[pin.icon]} + svg transform={ `translate(${pin.x * layout.width} ${pin.y * layout.height}) scale(3)` } - > - <ToggleIcon - className={`map-pin map-pin-${pin.id}`} - controller={ToggleIcon.pinController(pin, removePin)} - icons={[pin.icon]} - svg - /> - </g> + /> )} </g> {dragging ? diff --git a/resources/js/components/tracker/Dungeons.js b/resources/js/components/tracker/Dungeons.js index 9c6e122..c6ed5c2 100644 --- a/resources/js/components/tracker/Dungeons.js +++ b/resources/js/components/tracker/Dungeons.js @@ -32,7 +32,7 @@ const Dungeons = ({ columns }) => { } ${row + 0.5})`; const transforms = { - tag: '', + tag: null, map: `translate(${mapX} 0) scale(0.9)`, compass: `translate(${compassX} 0) scale(0.9)`, small: `translate(${smallX} 0) scale(0.9)`, @@ -101,22 +101,20 @@ const Dungeons = ({ columns }) => { <text className="dungeon-tag">{dungeon.id.toUpperCase()}</text> </g> {shouldShowDungeonItem(config, 'Map') ? - <g transform={layout.transforms.map}> - <ToggleIcon - controller={ToggleIcon.dungeonController(dungeon)} - icons={['map']} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.dungeonController(dungeon)} + icons={['map']} + svg + transform={layout.transforms.map} + /> : null} {shouldShowDungeonItem(config, 'Compass') ? - <g transform={layout.transforms.compass}> - <ToggleIcon - controller={ToggleIcon.dungeonController(dungeon)} - icons={['compass']} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.dungeonController(dungeon)} + icons={['compass']} + svg + transform={layout.transforms.compass} + /> : null} {shouldShowDungeonItem(config, 'Small') ? <g transform={layout.transforms.small}> @@ -132,13 +130,12 @@ const Dungeons = ({ columns }) => { </g> : null} {shouldShowDungeonItem(config, 'Big') ? - <g transform={layout.transforms.big}> - <ToggleIcon - controller={ToggleIcon.dungeonController(dungeon)} - icons={['big-key']} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.dungeonController(dungeon)} + icons={['big-key']} + svg + transform={layout.transforms.big} + /> : null} <g transform={layout.transforms.checks}> <ToggleIcon @@ -149,50 +146,45 @@ const Dungeons = ({ columns }) => { <CountDisplay count={getDungeonRemainingItems(state, dungeon)} /> </g> {dungeon.boss ? - <g transform={layout.transforms.boss}> - <ToggleIcon - controller={ToggleIcon.dungeonBossController(dungeon)} - icons={dungeon.bosses} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.dungeonBossController(dungeon)} + icons={dungeon.bosses} + svg + transform={layout.transforms.boss} + /> : null} {dungeon.prize ? - <g transform={layout.transforms.prize}> - <ToggleIcon - controller={ToggleIcon.dungeonPrizeController(dungeon)} - icons={[ - 'crystal', - 'red-crystal', - 'green-pendant', - 'red-pendant', - ]} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.dungeonPrizeController(dungeon)} + icons={[ + 'crystal', + 'red-crystal', + 'green-pendant', + 'red-pendant', + ]} + svg + transform={layout.transforms.prize} + /> : null} {dungeon.id === 'gt' && config.bossShuffle ? <> - <g transform={layout.transforms.gtBoss1}> - <ToggleIcon - controller={ToggleIcon.gtBossController('bot')} - icons={BOSSES} - svg - /> - </g> - <g transform={layout.transforms.gtBoss2}> - <ToggleIcon - controller={ToggleIcon.gtBossController('mid')} - icons={BOSSES} - svg - /> - </g> - <g transform={layout.transforms.gtBoss3}> - <ToggleIcon - controller={ToggleIcon.gtBossController('top')} - icons={BOSSES} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.gtBossController('bot')} + icons={BOSSES} + svg + transform={layout.transforms.gtBoss1} + /> + <ToggleIcon + controller={ToggleIcon.gtBossController('mid')} + icons={BOSSES} + svg + transform={layout.transforms.gtBoss2} + /> + <ToggleIcon + controller={ToggleIcon.gtBossController('top')} + icons={BOSSES} + svg + transform={layout.transforms.gtBoss3} + /> </> : null} </g> )} diff --git a/resources/js/components/tracker/Items.js b/resources/js/components/tracker/Items.js index 2a9c01a..e991d0b 100644 --- a/resources/js/components/tracker/Items.js +++ b/resources/js/components/tracker/Items.js @@ -10,30 +10,54 @@ const Items = () => { const { state } = useTracker(); return <> - <g transform={transform(0.5, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['bow', 'silvers']} svg /> - </g> - <g transform={transform(1.35, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['blue-boomerang']} svg /> - </g> - <g transform={transform(1.85, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['red-boomerang']} svg /> - </g> - <g transform={transform(2.5, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['hookshot']} svg /> - </g> - <g transform={transform(3.5, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['bomb']} svg /> - </g> - <g transform={transform(4.5, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['powder']} svg /> - </g> - <g transform={transform(0.5, 1.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['fire-rod']} svg /> - </g> - <g transform={transform(1.5, 1.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['ice-rod']} svg /> - </g> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['bow', 'silvers']} + svg + transform={transform(0.5, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['blue-boomerang']} + svg + transform={transform(1.35, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['red-boomerang']} + svg + transform={transform(1.85, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['hookshot']} + svg + transform={transform(2.5, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['bomb']} + svg + transform={transform(3.5, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['powder']} + svg + transform={transform(4.5, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['fire-rod']} + svg + transform={transform(0.5, 1.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['ice-rod']} + svg + transform={transform(1.5, 1.5)} + /> <g transform={transform(2.5, 1.5)}> <ToggleIcon controller={ToggleIcon.medallionController} icons={['bombos']} svg /> {state['mm-medallion'] === 'bombos' ? @@ -61,121 +85,156 @@ const Items = () => { <text className="med-display bottom-right">TR</text> : null} </g> - <g transform={transform(0.5, 2.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['lamp']} svg /> - </g> - <g transform={transform(1.5, 2.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['hammer']} svg /> - </g> - <g transform={transform(2.5, 2.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['flute']} svg /> - </g> - <g transform={transform(2.75, 2.75, 0.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['duck']} svg /> - </g> - <g transform={transform(3.5, 2.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['bugnet']} svg /> - </g> - <g transform={transform(4.5, 2.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['book']} svg /> - </g> - <g transform={transform(0.5, 3.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['shovel']} svg /> - </g> - <g transform={transform(1.5, 3.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['somaria']} svg /> - </g> - <g transform={transform(2.5, 3.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['byrna']} svg /> - </g> - <g transform={transform(3.5, 3.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['cape']} svg /> - </g> - <g transform={transform(4.5, 3.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['mirror']} svg /> - </g> - <g transform={transform(0.5, 5)}> - <ToggleIcon - controller={ToggleIcon.bottleController('bottle-1')} - icons={BOTTLE_CONTENTS} - svg - /> - </g> - <g transform={transform(1.5, 5)}> - <ToggleIcon - controller={ToggleIcon.bottleController('bottle-2')} - icons={BOTTLE_CONTENTS} - svg - /> - </g> - <g transform={transform(2.5, 5)}> - <ToggleIcon - controller={ToggleIcon.bottleController('bottle-3')} - icons={BOTTLE_CONTENTS} - svg - /> - </g> - <g transform={transform(3.5, 5)}> - <ToggleIcon - controller={ToggleIcon.bottleController('bottle-4')} - icons={BOTTLE_CONTENTS} - svg - /> - </g> - <g transform={transform(4.5, 5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['mushroom']} svg /> - </g> - <g transform={transform(0.5, 6.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['boots']} svg /> - </g> - <g transform={transform(1.5, 6.5)}> - <ToggleIcon - controller={ToggleIcon.progressiveController('lift', 0, 2)} - icons={['glove', 'mitts']} - svg - /> - </g> - <g transform={transform(2.5, 6.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['flippers']} svg /> - </g> - <g transform={transform(3.5, 6.5)}> - <ToggleIcon controller={ToggleIcon.simpleController} icons={['moonpearl']} svg /> - </g> - <g transform={transform(4.5, 6.5)}> - <ToggleIcon - controller={ToggleIcon.simpleController} - icons={['half-magic', 'quarter-magic']} - svg - /> - </g> - <g transform={transform(0.5, 7.5)}> - <ToggleIcon - controller={ToggleIcon.progressiveController('sword', 0, 4)} - icons={['sword-1', 'sword-2', 'sword-3', 'sword-4']} - svg - /> - </g> - <g transform={transform(1.5, 7.5)}> - <ToggleIcon - controller={ToggleIcon.progressiveController('shield', 0, 3)} - icons={['fighter-shield', 'fire-shield', 'mirror-shield']} - svg - /> - </g> - <g transform={transform(2.5, 7.5)}> - <ToggleIcon - controller={ToggleIcon.progressiveController('mail', 1, 3)} - icons={['green-mail', 'blue-mail', 'red-mail']} - svg - /> - </g> - <g transform={transform(3.5, 7.5)}> - <ToggleIcon - controller={ToggleIcon.modulusController('heart-piece')} - icons={['heart-0', 'heart-1', 'heart-2', 'heart-3']} - svg - /> - </g> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['lamp']} + svg + transform={transform(0.5, 2.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['hammer']} + svg + transform={transform(1.5, 2.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['flute']} + svg + transform={transform(2.5, 2.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['duck']} + svg + transform={transform(2.75, 2.75, 0.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['bugnet']} + svg + transform={transform(3.5, 2.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['book']} + svg + transform={transform(4.5, 2.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['shovel']} + svg + transform={transform(0.5, 3.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['somaria']} + svg + transform={transform(1.5, 3.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['byrna']} + svg + transform={transform(2.5, 3.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['cape']} + svg + transform={transform(3.5, 3.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['mirror']} + svg + transform={transform(4.5, 3.5)} + /> + <ToggleIcon + controller={ToggleIcon.bottleController('bottle-1')} + icons={BOTTLE_CONTENTS} + svg + transform={transform(0.5, 5)} + /> + <ToggleIcon + controller={ToggleIcon.bottleController('bottle-2')} + icons={BOTTLE_CONTENTS} + svg + transform={transform(1.5, 5)} + /> + <ToggleIcon + controller={ToggleIcon.bottleController('bottle-3')} + icons={BOTTLE_CONTENTS} + svg + transform={transform(2.5, 5)} + /> + <ToggleIcon + controller={ToggleIcon.bottleController('bottle-4')} + icons={BOTTLE_CONTENTS} + svg + transform={transform(3.5, 5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['mushroom']} + svg + transform={transform(4.5, 5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['boots']} + svg + transform={transform(0.5, 6.5)} + /> + <ToggleIcon + controller={ToggleIcon.progressiveController('lift', 0, 2)} + icons={['glove', 'mitts']} + svg + transform={transform(1.5, 6.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['flippers']} + svg + transform={transform(2.5, 6.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['moonpearl']} + svg + transform={transform(3.5, 6.5)} + /> + <ToggleIcon + controller={ToggleIcon.simpleController} + icons={['half-magic', 'quarter-magic']} + svg + transform={transform(4.5, 6.5)} + /> + <ToggleIcon + controller={ToggleIcon.progressiveController('sword', 0, 4)} + icons={['sword-1', 'sword-2', 'sword-3', 'sword-4']} + svg + transform={transform(0.5, 7.5)} + /> + <ToggleIcon + controller={ToggleIcon.progressiveController('shield', 0, 3)} + icons={['fighter-shield', 'fire-shield', 'mirror-shield']} + svg + transform={transform(1.5, 7.5)} + /> + <ToggleIcon + controller={ToggleIcon.progressiveController('mail', 1, 3)} + icons={['green-mail', 'blue-mail', 'red-mail']} + svg + transform={transform(2.5, 7.5)} + /> + <ToggleIcon + controller={ToggleIcon.modulusController('heart-piece')} + icons={['heart-0', 'heart-1', 'heart-2', 'heart-3']} + svg + transform={transform(3.5, 7.5)} + /> </>; }; diff --git a/resources/js/components/tracker/ToggleIcon.js b/resources/js/components/tracker/ToggleIcon.js index 0d8afa4..6dee818 100644 --- a/resources/js/components/tracker/ToggleIcon.js +++ b/resources/js/components/tracker/ToggleIcon.js @@ -19,7 +19,7 @@ import { } from '../../helpers/tracker'; import { useTracker } from '../../hooks/tracker'; -const ToggleIcon = ({ controller, className, icons, svg }) => { +const ToggleIcon = ({ controller, className, icons, svg, transform }) => { const { setManualState, state } = useTracker(); const activeController = controller || ToggleIcon.nullController; const active = activeController.getActive(state, icons); @@ -48,6 +48,7 @@ const ToggleIcon = ({ controller, className, icons, svg }) => { e.preventDefault(); e.stopPropagation(); }} + transform={transform} > <ZeldaIcon name={icon} svg /> </g>; @@ -304,6 +305,7 @@ ToggleIcon.propTypes = { }), icons: PropTypes.arrayOf(PropTypes.string), svg: PropTypes.bool, + transform: PropTypes.string, }; export default ToggleIcon; -- 2.39.5