Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(removeHiddenElems): remove hidden definitions usage #1852

Merged
merged 5 commits into from
Nov 26, 2023

Conversation

SethFalco
Copy link
Member

The Remove Hidden Elements can remove useless definitions from the defs element, however it did not remove other elements that referenced those definitions.

For example:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
  <defs>
    <path d="M15.852 62.452" id="a"/>
  </defs>
  <use href="#a"/>
  <use opacity=".35" href="#a"/>
</svg>

The node at svg defs path is "hidden", so it's removed. However, the two svg use nodes would remain with a bad reference.

This stores the IDs of defs that are removed, so we can remove references after.

Chores

Also does some chores on the side in seperate commits:

  • minor refactor of removeAttrs
  • fix a typo in our documentation

Related

@SethFalco SethFalco merged commit e22d533 into svg:main Nov 26, 2023
6 checks passed
@SethFalco SethFalco deleted the fix/1851 branch November 26, 2023 20:55
nono referenced this pull request in cozy/cozy-stack Dec 4, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [svgo](https://svgo.dev) ([source](https://togithub.com/svg/svgo)) |
[`3.0.4` -> `3.0.5`](https://renovatebot.com/diffs/npm/svgo/3.0.4/3.0.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.0.4/3.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.0.4/3.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>svg/svgo (svgo)</summary>

### [`v3.0.5`](https://togithub.com/svg/svgo/releases/tag/v3.0.5)

[Compare Source](https://togithub.com/svg/svgo/compare/v3.0.4...v3.0.5)

#### What's Changed

##### Bug Fixes

- **[Cleanup IDs](https://svgo.dev/docs/plugins/cleanup-ids/)**,
correctly handle references to other nodes in animations. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1862](https://togithub.com/svg/svgo/pull/1862)
- **[Convert Path
Commands](https://svgo.dev/docs/plugins/convert-path-data/)**, fix issue
when removing redundant `Z` between mergable `M`/`m` commands. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1856](https://togithub.com/svg/svgo/pull/1856)
- **[Convert Path
Commands](https://svgo.dev/docs/plugins/convert-path-data/)**, adhere to
error/precision in `z` conversions. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1842](https://togithub.com/svg/svgo/pull/1842)
- **[Remove Empty
Containers](https://svgo.dev/docs/plugins/remove-empty-containers/)**,
skip if parent node is `<switch>`, as empty containers can be used for
attributes like `requiredFeatures`. By
[@&#8203;vincentbernat](https://togithub.com/vincentbernat) in
[https://github.com/svg/svgo/pull/1747](https://togithub.com/svg/svgo/pull/1747)
- **[Remove Hidden
Elements](https://svgo.dev/docs/plugins/remove-hidden-elems/)**, when
removing a hidden definition, also remove nodes that reference it. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1852](https://togithub.com/svg/svgo/pull/1852)
- Output the optimization stats (profit) in red if the file size
increased. By [@&#8203;gimler](https://togithub.com/gimler) in
[https://github.com/svg/svgo/pull/1162](https://togithub.com/svg/svgo/pull/1162)
- Type definition files now correctly use the `.d.ts` file extension
instead of `.ts`. By [@&#8203;Exotelis](https://togithub.com/Exotelis)
in
[https://github.com/svg/svgo/pull/1780](https://togithub.com/svg/svgo/pull/1780)

##### Chores

- Improved exported types for the `#loadConfig` method. By
[@&#8203;nuintun](https://togithub.com/nuintun) in
[https://github.com/svg/svgo/pull/1844](https://togithub.com/svg/svgo/pull/1844)

#### Metrics

Before and after using vectors from various sources, with the default
preset of each respective version:

| SVG | Original | v3.0.4 | v3.0.5 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.735 KiB
| 4.608 KiB | ⬇️ 0.127 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.949 KiB | |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.593 KiB | 550.153 KiB | ⬇️ 0.44 KiB |
| [tldr-pages
Banner](https://togithub.com/tldr-pages/tldr/blob/main/images/banner.svg)
| 2.071 KiB | 1.07 KiB | 1.07 KiB | |
| [Wikipedia
Logo](https://en.wikipedia.org/wiki/File:Wikipedia-logo-v2.svg) |
161.551 KiB | 117.152 KiB | 117.146 KiB | ⬇️ 0.006 KiB |

Before and after of the browser bundle of each respective version:

| | v3.0.4 | v3.0.5 | Delta |
|---|---|---|---|
| svgo.browser.js | 656.9 kB | 657.5 kB | ⬆️ 0.6 kB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone
Europe/Paris, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/cozy/cozy-stack).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuODEuMyIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Regression in 3.0.4: incorrectly removes reusable elements, but leaves references to it
1 participant