Merge pull request 'merge upstream into my fork' (#1) from freesewing/freesewing:develop into develop
Reviewed-on: https://codeberg.org/jpmunic/freesewing/pulls/1
18
.gitignore
vendored
|
@ -35,6 +35,17 @@ sites/*/yarn.lock
|
|||
# Docusaurus cache
|
||||
.docusaurus
|
||||
|
||||
# Sites get some files from org via the reconfigure script
|
||||
sites/studio/postcss.config.js
|
||||
sites/studio/babel.config.mjs
|
||||
sites/studio/plugins
|
||||
sites/studio/src/css
|
||||
sites/studio/designs
|
||||
sites/studio/docs
|
||||
sites/studio/src
|
||||
sites/studio/scripts
|
||||
sites/studio/static
|
||||
|
||||
# Sites prebuild artifacts
|
||||
sites/*/public/locales/*/*.json
|
||||
!sites/sde/public/locales/*/*.json
|
||||
|
@ -44,6 +55,9 @@ packages/new-design/shared/public/locales/*/*.json
|
|||
packages/new-design/shared/.gitignore
|
||||
packages/new-design/lib/banner.mjs
|
||||
sites/*/public/img/og/*
|
||||
sites/org/src/lib/i18n.mjs
|
||||
sites/org/authors.json
|
||||
sites/org/src/lib/designinfo.mjs
|
||||
|
||||
# Org prebuild artifacts
|
||||
sites/org/src/lib/designs.mjs
|
||||
|
@ -80,6 +94,10 @@ sites/dev/public/mstile-150x150.png
|
|||
sites/dev/public/safari-pinned-tab.svg
|
||||
sites/dev/public/site.webmanifest
|
||||
|
||||
# react docs
|
||||
packages/react/docs
|
||||
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
|
|
25
CHANGELOG.md
|
@ -31,6 +31,19 @@
|
|||
- Neck ties no longer shown to be cut on fold
|
||||
- Band tie locks in duo colours when `options.crossBackTies` is true (fixes incorrect notch placements)
|
||||
|
||||
### plugin-annotations
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed incorrect anchor point of the logo due to share pathstring (#202)
|
||||
|
||||
### react
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed issues with the pattern export feature in the Editor (#218)
|
||||
- Added Jane to the Linedrawing component (#211)
|
||||
|
||||
|
||||
## 4.0.0 (2024-04-01)
|
||||
|
||||
|
@ -198,18 +211,18 @@
|
|||
|
||||
- The `@freesewing/i18n` package holds translations in English for where they are needed
|
||||
|
||||
### studio
|
||||
|
||||
#### Added
|
||||
|
||||
- Added `@freesewing/studio`, our new development environment
|
||||
|
||||
### react
|
||||
|
||||
#### Added
|
||||
|
||||
- The `@freesewing/react` package holds shared components, hooks, and context for our React-based frontends
|
||||
|
||||
### studio
|
||||
|
||||
#### Added
|
||||
|
||||
- Added `@freesewing/studio`, our new development environment
|
||||
|
||||
### utils
|
||||
|
||||
#### Added
|
||||
|
|
|
@ -50,12 +50,10 @@ We publish a lot of JavaScript packages on NPM. You can find the full list [in t
|
|||
|
||||
This file is mostly geared towards code contributors, but there's plenty of other ways you can contribute.
|
||||
|
||||
As it happens, we keep a list of suggestions at: https://freesewing.dev/howtos/ways-to-contribute
|
||||
|
||||
### Your first contribution
|
||||
|
||||
Unsure where to begin contributing to FreeSewing?
|
||||
You can start by looking through the issues labeled [good first issue](https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%91%8D+good+first+issue%22).
|
||||
You can start by looking through the issues labeled [good first issue](https://codeberg.org/freesewing/freesewing/issues?q=&type=all&sort=&state=open&labels=344963).
|
||||
|
||||
Don't be afraid to take on an issue. If you get stuck, [we'll help you out](https://discord.freesewing.org/).
|
||||
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
##### New release: v2.22.2
|
||||
|
||||
This is a bugfix release addressing come issues in the Titan and Paco design.
|
||||
|
||||
##### We're working on v3
|
||||
|
||||
We are working hard on the next major version of FreeSewing, which will be released in 2023.
|
||||
|
||||
##### Check out where FreeSewing is heading
|
||||
|
||||
If you're curious to see what we're working on, check out [the
|
||||
FreeSewing roadmap](https://github.com/freesewing/freesewing/discussions/1278) which
|
||||
includes all the things on the horizon for FreeSewing.
|
||||
|
||||
[1]: https://github.com/freesewing/freesewing/discussions/2613
|
84
README.md
|
@ -1,39 +1,53 @@
|
|||
<p align='center'><a
|
||||
href="https://www.npmjs.com/package/@freesewing/core"
|
||||
title="@freesewing/core on NPM"
|
||||
><img src="https://img.shields.io/npm/v/@freesewing/core.svg"
|
||||
alt="@freesewing/core on NPM"/>
|
||||
</a><a
|
||||
href="https://opensource.org/licenses/MIT"
|
||||
title="License: MIT"
|
||||
><img src="https://img.shields.io/npm/l/@freesewing/core.svg?label=License"
|
||||
alt="License: MIT"/>
|
||||
</a><a
|
||||
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
|
||||
title="Code quality on DeepScan"
|
||||
><img src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
|
||||
alt="DeepScan grade"
|
||||
></a> <a
|
||||
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen"
|
||||
title="Open issues tagged pkg:aaron"
|
||||
><img src="https://img.shields.io/github/issues/freesewing/freesewing.svg?label=Issues"
|
||||
alt="Open issues"/>
|
||||
</a><a
|
||||
href="#contributors-"
|
||||
title="All Contributors"
|
||||
><img src="https://img.shields.io/badge/all_contributors-131-pink.svg"
|
||||
alt="All Contributors"/>
|
||||
</a></p><p align='center'><a
|
||||
href="https://discord.freesewing.org"
|
||||
title="Chat with us on Discord"
|
||||
><img src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
|
||||
alt="Chat with us on Discord"/>
|
||||
</a><a
|
||||
href="https://freesewing.org/patrons/join"
|
||||
title="Become a FreeSewing Patron"
|
||||
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
|
||||
alt="Become a FreeSewing Patron"/>
|
||||
</a></p>
|
||||
href="https://www.npmjs.com/package/@freesewing/core"
|
||||
title="@freesewing/core on NPM"
|
||||
><img
|
||||
src="https://img.shields.io/npm/v/@freesewing/core.svg"
|
||||
alt="@freesewing/core on NPM"/>
|
||||
</a> <a
|
||||
href="https://opensource.org/licenses/MIT"
|
||||
title="License: MIT"
|
||||
><img
|
||||
src="https://img.shields.io/npm/l/@freesewing/core.svg?label=License"
|
||||
alt="License: MIT"/>
|
||||
</a> <a
|
||||
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
|
||||
title="Code quality on DeepScan"
|
||||
><img
|
||||
src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
|
||||
alt="DeepScan grade"
|
||||
></a> <a
|
||||
href="https://codeberg.org/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen"
|
||||
title="Open issues"
|
||||
><img
|
||||
src="https://img.shields.io/github/issues/freesewing/freesewing.svg?label=Issues"
|
||||
alt="Open issues"/>
|
||||
</a> <a
|
||||
href="#contributors-"
|
||||
title="All Contributors"
|
||||
><img
|
||||
src="https://img.shields.io/badge/all_contributors-131-pink.svg"
|
||||
alt="All Contributors"/>
|
||||
</a></p>
|
||||
<p align='center'><a
|
||||
href="https://forum.freesewing.eu"
|
||||
title="Join the FreeSewing Forum"
|
||||
><img
|
||||
src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fforum.freesewing.eu&label=Forum&color=%2385d996"
|
||||
alt="Join the FreeSewing Forum"
|
||||
/></a> <a
|
||||
href="https://discord.freesewing.org"
|
||||
title="Chat with us on Discord"
|
||||
><img
|
||||
src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
|
||||
alt="Chat with us on Discord"
|
||||
/></a> <a
|
||||
href="https://freesewing.org/patrons/join"
|
||||
title="Become a FreeSewing Patron"
|
||||
><img
|
||||
src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
|
||||
alt="Become a FreeSewing Patron"
|
||||
/></a></p>
|
||||
|
||||
# FreeSewing
|
||||
|
||||
|
|
10
SECURITY.md
|
@ -2,18 +2,16 @@
|
|||
|
||||
## Supported Versions
|
||||
|
||||
Until v3 is GA I will support both v2 and v3.
|
||||
Once v3 is out of beta, I will drop support for v2 shortly after.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 3.x | :white_check_mark: |
|
||||
| 2.x | :white_check_mark: |
|
||||
| 4.x | :white_check_mark: |
|
||||
| 3.x | :x: |
|
||||
| 2.x | :x: |
|
||||
| < 2.0 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
- You can report an issue here: https://next.freesewing.org/support
|
||||
- You can report an issue here: https://freesewing.eu/support
|
||||
- Or you can email joost, the FreeSewing maintainer, at joost@joost.at.
|
||||
|
||||
I do not have money to spend on a bug bounty program, but if you provide your snail mail (physical) address, I will send you some stickers.
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
# Using Ansible to manage FreeSewing infrastructure
|
||||
|
||||
This folder holds [Ansible](https://www.ansible.com/) playbooks and
|
||||
configuration to manage FreeSewing's infrastructure.
|
||||
|
||||
These playbooks do things like installing updates on our servers, handling
|
||||
maintenance tasks, and so on.
|
||||
|
||||
Because of the nature of these tasks, they typically require the kind of access
|
||||
to our infrastructure that is only available to the maintainer.
|
||||
|
||||
As such, you can probably not use these playbooks, but you are welcome to look
|
||||
around if you are curious or would like to learn about using Ansible in some
|
||||
real-world scenario.
|
|
@ -1,16 +0,0 @@
|
|||
[defaults]
|
||||
# The user that will be connecting to remote systems
|
||||
remote_user = ansible-bot
|
||||
|
||||
# Private key file for authentication
|
||||
private_key_file = ~/.ssh/ansible-bot_rsa
|
||||
|
||||
# Set local and remote tmp folder
|
||||
local_tmp = /tmp/ansible
|
||||
remote_tmp = /tmp/ansible
|
||||
|
||||
# The location of the Ansible inventory
|
||||
inventory=./inventory.yaml
|
||||
|
||||
# Use SSH for transport
|
||||
transport=ssh
|
|
@ -1,18 +0,0 @@
|
|||
# This is the Ansible inventory file for FreeSewing infrastructure
|
||||
|
||||
local:
|
||||
hosts:
|
||||
localhost: {}
|
||||
|
||||
all:
|
||||
children:
|
||||
v2:
|
||||
hosts:
|
||||
backend.freesewing.org:
|
||||
db: freesewing
|
||||
v3:
|
||||
hosts:
|
||||
backend3.freesewing.org:
|
||||
monorepo: /fs/monorepo
|
||||
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
# An Ansible playbook to install NodeJS dependencies (npm install)
|
||||
#
|
||||
# The FreeSewing production backend runs from the `production-backend`
|
||||
# branch on our backend server. This playbook runs `yarn install` in
|
||||
# the repository root
|
||||
---
|
||||
- hosts: '!localhost'
|
||||
gather_facts: false
|
||||
# Use binaries (yarn & node) from nvm (lts/hydrogen)
|
||||
environment:
|
||||
PATH: "/home/ansible-bot/.nvm/versions/node/v18.17.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin:/usr/sbin:/usr/local/sbin"
|
||||
tasks:
|
||||
- name: Install monorepo dependencies (yarn install)
|
||||
community.general.yarn:
|
||||
# Don't install dev dependencies
|
||||
production: true
|
||||
path: "{{ monorepo }}"
|
|
@ -1,22 +0,0 @@
|
|||
# An Ansible playbook to update the backend repository.
|
||||
#
|
||||
# The FreeSewing production backend runs from the `production-backend`
|
||||
# branch on our backend server. This playbook updates the repository to
|
||||
# the latest version of the `production-backend` branch.
|
||||
---
|
||||
- hosts: '!localhost'
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Bring monorepo up to date with production-backend branch
|
||||
git:
|
||||
# We don't need history
|
||||
depth: 1
|
||||
# We don't need other branches
|
||||
single_branch: true
|
||||
# Monorepo url
|
||||
repo: git@github.com:freesewing/freesewing.git
|
||||
# Destination folder
|
||||
dest: "{{ monorepo }}"
|
||||
# Check out the production-backend branch
|
||||
version: production-backend
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
date=$(date +%F)
|
||||
backupDir="/fs/backup/mongo/${date}/"
|
||||
[ -z "$1" ] && echo "Missing param" && exit 1
|
||||
database=$1
|
||||
|
||||
mkdir -p $backupDir
|
||||
mongodump --db $database --out $backupDir
|
|
@ -1,85 +0,0 @@
|
|||
/*
|
||||
* This migrates 2.6 data to 2.7
|
||||
*/
|
||||
|
||||
|
||||
// The shoulderSlope measurement is now different, so we need to remove it
|
||||
db.people.updateMany({}, {$unset: { 'measurements.shoulderSlope': '' }})
|
||||
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.shoulderSlope': '' }})
|
||||
|
||||
// The seatDepth measurement is no longer used, so we remove it
|
||||
db.people.updateMany({}, {$unset: { 'measurements.seatDepth': '' }})
|
||||
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.seatDepth': '' }})
|
||||
|
||||
// The hipsToUpperLeg measurement is no longer used, so we remove it
|
||||
db.people.updateMany({}, {$unset: { 'measurements.hipsToUpperLeg': '' }})
|
||||
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.hipsToUpperLeg': '' }})
|
||||
|
||||
/* A bunch of circumference measurements have been renamed */
|
||||
// ankle
|
||||
db.people.updateMany({}, {$rename: {'measurements.ankleCircumference': 'measurements.ankle'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.ankleCircumference': 'data.settings.measurements.ankle'}})
|
||||
|
||||
// biceps
|
||||
db.people.updateMany({}, {$rename: {'measurements.bicepsCircumference': 'measurements.biceps'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.bicepsCircumference': 'data.settings.measurements.biceps'}})
|
||||
|
||||
// chest
|
||||
db.people.updateMany({}, {$rename: {'measurements.chestCircumference': 'measurements.chest'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.chestCircumference': 'data.settings.measurements.chest'}})
|
||||
|
||||
// head
|
||||
db.people.updateMany({}, {$rename: {'measurements.headCircumference': 'measurements.head'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.headCircumference': 'data.settings.measurements.head'}})
|
||||
|
||||
// hips
|
||||
db.people.updateMany({}, {$rename: {'measurements.hipsCircumference': 'measurements.hips'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.hipsCircumference': 'data.settings.measurements.hips'}})
|
||||
|
||||
// knee
|
||||
db.people.updateMany({}, {$rename: {'measurements.kneeCircumference': 'measurements.knee'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.kneeCircumference': 'data.settings.measurements.knee'}})
|
||||
|
||||
// neck
|
||||
db.people.updateMany({}, {$rename: {'measurements.neckCircumference': 'measurements.neck'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.neckCircumference': 'data.settings.measurements.neck'}})
|
||||
|
||||
// seat
|
||||
db.people.updateMany({}, {$rename: {'measurements.seatCircumference': 'measurements.seat'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.seatCircumference': 'data.settings.measurements.seat'}})
|
||||
|
||||
// upperleg
|
||||
db.people.updateMany({}, {$rename: {'measurements.upperLegCircumference': 'measurements.upperLeg'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.upperLegCircumference': 'data.settings.measurements.upperLeg'}})
|
||||
|
||||
// wrist
|
||||
db.people.updateMany({}, {$rename: {'measurements.wristCircumference': 'measurements.wrist'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.wristCircumference': 'data.settings.measurements.wrist'}})
|
||||
|
||||
/* Natural waist is now just waist */
|
||||
// Waist
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaist': 'measurements.waist'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaist': 'data.settings.measurements.waist'}})
|
||||
|
||||
// WaistToFloor
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToFloor': 'measurements.waistToFloor'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToFloor': 'data.settings.measurements.waistToFloor'}})
|
||||
|
||||
// WaistToKnee
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToKnee': 'measurements.waistToKnee'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToKnee': 'data.settings.measurements.waistToKnee'}})
|
||||
|
||||
// WaistToSeat
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToSeat': 'measurements.waistToSeat'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToSeat': 'data.settings.measurements.waistToSeat'}})
|
||||
|
||||
// WaistToUnderbust
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToUnderbust': 'measurements.waistToUnderbust'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToUnderbust': 'data.settings.measurements.waistToUnderbust'}})
|
||||
|
||||
// WaistToHips
|
||||
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToHip': 'measurements.waistToHips'}})
|
||||
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToHip': 'data.settings.measurements.waistToHips'}})
|
||||
|
||||
|
||||
/* seatDepth is no longer uses */
|
|
@ -1,12 +0,0 @@
|
|||
# An Ansible playbook to install the latest updates on a (debian) Linux system
|
||||
---
|
||||
- hosts: '!localhost'
|
||||
gather_facts: false
|
||||
become: true
|
||||
tasks:
|
||||
- name: Update all packages to their latest version
|
||||
apt:
|
||||
name: '*'
|
||||
state: latest
|
||||
update_cache: yes
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
# Hardcoding this to prevent accidentally migrating the production database
|
||||
- hosts: next.backend.freesewing.org
|
||||
gather_facts: false
|
||||
become: true
|
||||
tasks:
|
||||
- name: Create temporary directory
|
||||
file:
|
||||
path: "{{tmp}}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
- name: Copy migration file to remote host
|
||||
copy:
|
||||
src: migrate_data.js
|
||||
dest: "{{tmp}}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
- name: Migrate 2.6 data to 2.7
|
||||
shell: "mongo next_freesewing {{tmp}}/migrate_data.js"
|
||||
|
||||
|
Before Width: | Height: | Size: 774 KiB |
Before Width: | Height: | Size: 776 KiB |
|
@ -1,5 +0,0 @@
|
|||
The drawings in these subfolders are by Dutch artist Rov van der Hel.
|
||||
|
||||
Find out more about Roy and his work
|
||||
on [Instagram](https://www.instagram.com/royvdhel_art/)
|
||||
or [Deviantart](https://www.deviantart.com/royvdhel-art/gallery)
|
Before Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 971 KiB |
Before Width: | Height: | Size: 393 KiB |
Before Width: | Height: | Size: 357 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 396 KiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 541 KiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 592 KiB |
Before Width: | Height: | Size: 660 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 446 KiB |
Before Width: | Height: | Size: 409 KiB |
Before Width: | Height: | Size: 477 KiB |
Before Width: | Height: | Size: 814 KiB |
Before Width: | Height: | Size: 776 KiB |
Before Width: | Height: | Size: 744 KiB |
Before Width: | Height: | Size: 696 KiB |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 3 MiB |
Before Width: | Height: | Size: 3.9 MiB |
Before Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 558 KiB |
Before Width: | Height: | Size: 572 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 741 KiB |
Before Width: | Height: | Size: 716 KiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1,004 KiB |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 726 KiB |
Before Width: | Height: | Size: 846 KiB |
Before Width: | Height: | Size: 703 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1,002 KiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 318 KiB |
Before Width: | Height: | Size: 281 KiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 347 KiB |
Before Width: | Height: | Size: 300 KiB |
Before Width: | Height: | Size: 265 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 373 KiB |
Before Width: | Height: | Size: 330 KiB |