chore: Extended prettier for config files + run
This commit is contained in:
parent
f673e485ad
commit
322100f54c
27 changed files with 454 additions and 375 deletions
|
@ -36,4 +36,3 @@ _social:
|
|||
link: 'https://instagram.com/freesewing_org'
|
||||
img: 'https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15'
|
||||
alt: 'Follow @freesewing_org on Twitter'
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { designs, plugins, packages } from './software/index.mjs'
|
||||
import { designs, plugins, packages } from './software/index.mjs'
|
||||
|
||||
/*
|
||||
* As this monorepo has interlocking dependencies
|
||||
|
@ -6,21 +6,20 @@ import { designs, plugins, packages } from './software/index.mjs'
|
|||
* order. This file takes care of that
|
||||
*/
|
||||
|
||||
const first = [ 'core', 'config-helpers', 'remark-jargon', 'snapseries' ]
|
||||
const blocks = [ 'brian', 'titan', 'bella', 'breanna' ]
|
||||
const extended = [ 'bent', 'simon', 'carlton', 'ursula' ]
|
||||
const first = ['core', 'config-helpers', 'remark-jargon', 'snapseries']
|
||||
const blocks = ['brian', 'titan', 'bella', 'breanna']
|
||||
const extended = ['bent', 'simon', 'carlton', 'ursula']
|
||||
const last = ['i18n']
|
||||
|
||||
export const buildOrder = [
|
||||
|
||||
// First build FreeSewing core library and config-helpers
|
||||
first,
|
||||
|
||||
// Then build all FreeSewing plugins, but not the bundle
|
||||
Object.keys(plugins).filter(id => id !== 'plugin-bundle'),
|
||||
Object.keys(plugins).filter((id) => id !== 'plugin-bundle'),
|
||||
|
||||
// Then build the plugin bundle
|
||||
[ 'plugin-bundle' ],
|
||||
['plugin-bundle'],
|
||||
|
||||
// Then build all FreeSewing designs that are blocks
|
||||
blocks,
|
||||
|
@ -29,11 +28,10 @@ export const buildOrder = [
|
|||
extended,
|
||||
|
||||
// Then build all remaining designs
|
||||
Object.keys(designs).filter(id => [...blocks, ...extended].indexOf(id) === -1),
|
||||
Object.keys(designs).filter((id) => [...blocks, ...extended].indexOf(id) === -1),
|
||||
|
||||
// Finally build the rest of the packages
|
||||
Object.keys(packages).filter(id => first.indexOf(id) === -1 && last.indexOf(id) === -1),
|
||||
Object.keys(packages).filter((id) => first.indexOf(id) === -1 && last.indexOf(id) === -1),
|
||||
|
||||
last
|
||||
last,
|
||||
]
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
Unreleased:
|
||||
|
||||
Breaking:
|
||||
all:
|
||||
- This package is now ESM only.
|
||||
|
@ -84,7 +83,6 @@ Unreleased:
|
|||
plugin-versionfree-svg:
|
||||
- This plugin no longer sets its version as an SVG attribute when rendering patterns
|
||||
|
||||
|
||||
Fixed:
|
||||
albert:
|
||||
- Workaround for not finding a suitable legband radius
|
||||
|
@ -104,7 +102,6 @@ Unreleased:
|
|||
- Added seperate waistband options
|
||||
- Added bow tie placement option
|
||||
|
||||
|
||||
2.22.0:
|
||||
date: 2022-08-23
|
||||
|
||||
|
@ -643,7 +640,6 @@ Unreleased:
|
|||
plugin-title:
|
||||
- Removed rendering of config.cut as it's not used
|
||||
|
||||
|
||||
2.19.9:
|
||||
date: 2022-01-09
|
||||
|
||||
|
@ -799,7 +795,6 @@ Unreleased:
|
|||
- Fixed a regression that caused the `waistHeight` option to be ignored.
|
||||
Closes [#1467](https://github.com/freesewing/freesewing/issues/1467)
|
||||
|
||||
|
||||
2.19.3:
|
||||
date: 2021-11-05
|
||||
|
||||
|
@ -811,7 +806,6 @@ Unreleased:
|
|||
charlie:
|
||||
- Converted the `waistbandWidth` options to snapped pct (was normal pct)
|
||||
|
||||
|
||||
2.19.2:
|
||||
date: 2021-11-02
|
||||
|
||||
|
@ -1221,7 +1215,6 @@ Unreleased:
|
|||
create-freesewing-pattern:
|
||||
- Don't list pattern as dependency in the example package.json
|
||||
|
||||
|
||||
2.16.0:
|
||||
date: 2021-05-24
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
author: "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)"
|
||||
homepage: "https://freesewing.org/"
|
||||
repository: "github:freesewing/freesewing"
|
||||
bugsUrl: "https://github.com/freesewing/freesewing/issues"
|
||||
author: 'Joost De Cock <joost@decock.org> (https://github.com/joostdecock)'
|
||||
homepage: 'https://freesewing.org/'
|
||||
repository: 'github:freesewing/freesewing'
|
||||
bugsUrl: 'https://github.com/freesewing/freesewing/issues'
|
||||
|
|
|
@ -81,5 +81,3 @@ plugin-bundle:
|
|||
- made to measure
|
||||
- diy
|
||||
- fashion
|
||||
|
||||
|
||||
|
|
|
@ -45,5 +45,3 @@ export const degreeMeasurements = ['shoulderSlope']
|
|||
|
||||
/* Helper method to determine whether a measurement uses degrees */
|
||||
export const isDegreeMeasurement = (measie) => degreeMeasurements.indexOf(measie) !== -1
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
module.exports = {
|
||||
models: {
|
||||
},
|
||||
only: {
|
||||
}
|
||||
models: {},
|
||||
only: {},
|
||||
}
|
||||
|
|
|
@ -1,351 +1,351 @@
|
|||
{
|
||||
"accessories": {
|
||||
"albert": {
|
||||
"description": "A FreeSewing pattern for an apron",
|
||||
"description": "A FreeSewing pattern for an apron",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 2,
|
||||
"tags": [ "accessories" ]
|
||||
"tags": ["accessories"]
|
||||
},
|
||||
"benjamin": {
|
||||
"description": "A FreeSewing pattern for a bow tie",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 3,
|
||||
"tags": [ "accessories" ]
|
||||
"tags": ["accessories"]
|
||||
},
|
||||
"bob": {
|
||||
"description": "A FreeSewing pattern for a bib",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "accessories", "infants" ]
|
||||
"tags": ["accessories", "infants"]
|
||||
},
|
||||
"florence": {
|
||||
"description": "A FreeSewing pattern for a face mask",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 1,
|
||||
"tags": [ "accessories" ]
|
||||
"tags": ["accessories"]
|
||||
},
|
||||
"florent": {
|
||||
"description": "A FreeSewing pattern for a flat cap",
|
||||
"code": [ "Quentin Felix", "Joost De Cock" ],
|
||||
"description": "A FreeSewing pattern for a flat cap",
|
||||
"code": ["Quentin Felix", "Joost De Cock"],
|
||||
"design": "Quentin Felix",
|
||||
"difficulty": 3,
|
||||
"tags": [ "accessories", "hats" ]
|
||||
"tags": ["accessories", "hats"]
|
||||
},
|
||||
"hi": {
|
||||
"description": "A FreeSewing pattern for a shark plush toy",
|
||||
"description": "A FreeSewing pattern for a shark plush toy",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 4,
|
||||
"tags": [ "accessories", "toys" ]
|
||||
"tags": ["accessories", "toys"]
|
||||
},
|
||||
"holmes": {
|
||||
"description": "A FreeSewing pattern for a Sherlock Holmes hat",
|
||||
"code": [ "Erica Alcusa Sáez", "bobgeorgethe3rd" ],
|
||||
"description": "A FreeSewing pattern for a Sherlock Holmes hat",
|
||||
"code": ["Erica Alcusa Sáez", "bobgeorgethe3rd"],
|
||||
"design": "Erica Alcusa Sáez",
|
||||
"difficulty": 3,
|
||||
"tags": [ "accessories", "hats" ]
|
||||
"tags": ["accessories", "hats"]
|
||||
},
|
||||
"hortensia": {
|
||||
"description": "A FreeSewing pattern for a handbag",
|
||||
"description": "A FreeSewing pattern for a handbag",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": [ "Stoffsuchti", "Wouter Van Wageningen" ],
|
||||
"design": ["Stoffsuchti", "Wouter Van Wageningen"],
|
||||
"difficulty": 3,
|
||||
"tags": [ "accessories", "bags" ]
|
||||
"tags": ["accessories", "bags"]
|
||||
},
|
||||
"lucy": {
|
||||
"description": "A FreeSewing pattern for a historical tie-on pocket",
|
||||
"description": "A FreeSewing pattern for a historical tie-on pocket",
|
||||
"code": "SeaZeeZee",
|
||||
"design": "SeaZeeZee",
|
||||
"difficulty": 2,
|
||||
"tags": [ "accessories", "historical", "bags" ]
|
||||
"tags": ["accessories", "historical", "bags"]
|
||||
},
|
||||
"octoplushy": {
|
||||
"description": "A FreeSewing pattern for an octopus plushy toy",
|
||||
"description": "A FreeSewing pattern for an octopus plushy toy",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 4,
|
||||
"tags": [ "accessories", "toys" ]
|
||||
"tags": ["accessories", "toys"]
|
||||
},
|
||||
"trayvon": {
|
||||
"description": "A FreeSewing pattern for a tie",
|
||||
"description": "A FreeSewing pattern for a tie",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 2,
|
||||
"tags": [ "accessories" ]
|
||||
"tags": ["accessories"]
|
||||
}
|
||||
},
|
||||
"blocks": {
|
||||
"bella": {
|
||||
"description": "A FreeSewing pattern for a womenswear bodice block",
|
||||
"description": "A FreeSewing pattern for a womenswear bodice block",
|
||||
"code": "Joost De Cock",
|
||||
"design": [ "Bella Incognito", "Joost De Cock" ],
|
||||
"design": ["Bella Incognito", "Joost De Cock"],
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"bent": {
|
||||
"description": "A FreeSewing pattern for a menswear body block with a two-part sleeve",
|
||||
"description": "A FreeSewing pattern for a menswear body block with a two-part sleeve",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"breanna": {
|
||||
"description": "A FreeSewing pattern for a basic body block for womenswear",
|
||||
"description": "A FreeSewing pattern for a basic body block for womenswear",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"brian": {
|
||||
"description": "A FreeSewing pattern for a basic body block for menswear",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"noble": {
|
||||
"description": "A FreeSewing pattern for a princess seam bodice block",
|
||||
"description": "A FreeSewing pattern for a princess seam bodice block",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"titan": {
|
||||
"description": "A FreeSewing pattern for a unisex trouser block",
|
||||
"description": "A FreeSewing pattern for a unisex trouser block",
|
||||
"code": "Joost De Cock",
|
||||
"design": [ "Debra Bean", "Joost De Cock" ],
|
||||
"design": ["Debra Bean", "Joost De Cock"],
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms" ]
|
||||
"tags": ["bottoms"]
|
||||
}
|
||||
},
|
||||
"garments": {
|
||||
"aaron": {
|
||||
"description": "A FreeSewing pattern for a A-shirt or tank top",
|
||||
"description": "A FreeSewing pattern for a A-shirt or tank top",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 2,
|
||||
"tags": [ "tops", "underwear" ]
|
||||
"tags": ["tops", "underwear"]
|
||||
},
|
||||
"bee": {
|
||||
"description": "A FreeSewing pattern for a bikini top",
|
||||
"description": "A FreeSewing pattern for a bikini top",
|
||||
"code": "bobgeorgethe3rd",
|
||||
"design": "PrudenceRabbit",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops", "swimwear" ]
|
||||
"tags": ["tops", "swimwear"]
|
||||
},
|
||||
"bruce": {
|
||||
"description": "A FreeSewing pattern for boxer briefs",
|
||||
"description": "A FreeSewing pattern for boxer briefs",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops", "underwear" ]
|
||||
"tags": ["tops", "underwear"]
|
||||
},
|
||||
"carlita": {
|
||||
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
|
||||
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
|
||||
"code": "Joost De Cock",
|
||||
"design": [ "Anneke Caramin", "Joost De Cock" ],
|
||||
"design": ["Anneke Caramin", "Joost De Cock"],
|
||||
"difficulty": 5,
|
||||
"tags": [ "tops", "coats" ]
|
||||
"tags": ["tops", "coats"]
|
||||
},
|
||||
"carlton": {
|
||||
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
|
||||
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
|
||||
"code": "Joost De Cock",
|
||||
"design": [ "Anneke Caramin", "Joost De Cock" ],
|
||||
"design": ["Anneke Caramin", "Joost De Cock"],
|
||||
"difficulty": 5,
|
||||
"tags": [ "tops", "coats" ]
|
||||
"tags": ["tops", "coats"]
|
||||
},
|
||||
"cathrin": {
|
||||
"description": "A FreeSewing pattern for a underbust corset / waist trainer",
|
||||
"description": "A FreeSewing pattern for a underbust corset / waist trainer",
|
||||
"code": "Joost De Cock",
|
||||
"design": [ "Cathrin Åhlén", "Joost De Cock" ],
|
||||
"design": ["Cathrin Åhlén", "Joost De Cock"],
|
||||
"difficulty": 4,
|
||||
"tags": [ "tops", "underwear" ]
|
||||
"tags": ["tops", "underwear"]
|
||||
},
|
||||
"charlie": {
|
||||
"description": "A FreeSewing pattern for chino trousers",
|
||||
"description": "A FreeSewing pattern for chino trousers",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms", "trousers" ]
|
||||
"tags": ["bottoms", "trousers"]
|
||||
},
|
||||
"cornelius": {
|
||||
"description": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system",
|
||||
"description": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms", "trousers" ]
|
||||
"tags": ["bottoms", "trousers"]
|
||||
},
|
||||
"diana": {
|
||||
"description": "A FreeSewing pattern for a top with a draped neck",
|
||||
"description": "A FreeSewing pattern for a top with a draped neck",
|
||||
"code": "Erica Alcusa Sáez",
|
||||
"design": "Erica Alcusa Sáez",
|
||||
"difficulty": 2,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"huey": {
|
||||
"description": "A FreeSewing pattern for a zip-up hoodie",
|
||||
"description": "A FreeSewing pattern for a zip-up hoodie",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"hugo": {
|
||||
"description": "A FreeSewing pattern for a hooded jumper with raglan sleeves",
|
||||
"description": "A FreeSewing pattern for a hooded jumper with raglan sleeves",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"jaeger": {
|
||||
"description": "A FreeSewing pattern for a sport coat style jacket",
|
||||
"description": "A FreeSewing pattern for a sport coat style jacket",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 5,
|
||||
"tags": [ "tops", "coats" ]
|
||||
"tags": ["tops", "coats"]
|
||||
},
|
||||
"lunetius": {
|
||||
"description": "A FreeSewing pattern for a lacerna, a historical Roman cloak",
|
||||
"description": "A FreeSewing pattern for a lacerna, a historical Roman cloak",
|
||||
"code": "Rika Tamaike",
|
||||
"design": "Rika Tamaike",
|
||||
"difficulty": 1,
|
||||
"tags": [ "tops", "coats", "historical" ]
|
||||
"tags": ["tops", "coats", "historical"]
|
||||
},
|
||||
"paco": {
|
||||
"description": "A FreeSewing pattern for summer pants",
|
||||
"description": "A FreeSewing pattern for summer pants",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms", "trousers" ]
|
||||
"tags": ["bottoms", "trousers"]
|
||||
},
|
||||
"penelope": {
|
||||
"description": "A FreeSewing pattern for a pencil skirt",
|
||||
"description": "A FreeSewing pattern for a pencil skirt",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms", "skirts" ]
|
||||
"tags": ["bottoms", "skirts"]
|
||||
},
|
||||
"sandy": {
|
||||
"description": "A FreeSewing pattern for a circle skirt",
|
||||
"code": [ "Erica Alcusa Sáez", "Joost De Cock" ],
|
||||
"description": "A FreeSewing pattern for a circle skirt",
|
||||
"code": ["Erica Alcusa Sáez", "Joost De Cock"],
|
||||
"design": "Erica Alcusa Sáez",
|
||||
"difficulty": 3,
|
||||
"tags": [ "bottoms", "skirts" ]
|
||||
"tags": ["bottoms", "skirts"]
|
||||
},
|
||||
"shin": {
|
||||
"description": "A FreeSewing pattern for swim trunks",
|
||||
"description": "A FreeSewing pattern for swim trunks",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 2,
|
||||
"tags": [ "bottoms", "swimwear" ]
|
||||
"tags": ["bottoms", "swimwear"]
|
||||
},
|
||||
"simon": {
|
||||
"description": "A FreeSewing pattern for a button down shirt",
|
||||
"description": "A FreeSewing pattern for a button down shirt",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 4,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"simone": {
|
||||
"description": "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)",
|
||||
"description": "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 4,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"sven": {
|
||||
"description": "A FreeSewing pattern for a straightforward sweater",
|
||||
"description": "A FreeSewing pattern for a straightforward sweater",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"tamiko": {
|
||||
"description": "A FreeSewing pattern for a zero-waste top",
|
||||
"description": "A FreeSewing pattern for a zero-waste top",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 1,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"teagan": {
|
||||
"description": "A FreeSewing pattern for a T-shirt",
|
||||
"description": "A FreeSewing pattern for a T-shirt",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 2,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"tiberius": {
|
||||
"description": "A FreeSewing pattern for a tunica, a historical Roman tunic",
|
||||
"description": "A FreeSewing pattern for a tunica, a historical Roman tunic",
|
||||
"code": "Rika Tamaike",
|
||||
"design": "Rika Tamaike",
|
||||
"difficulty": 1,
|
||||
"tags": [ "tops", "historic" ]
|
||||
"tags": ["tops", "historic"]
|
||||
},
|
||||
"unice": {
|
||||
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||
"code": [ "Anna Puk", "Natalia Sayang" ],
|
||||
"design": [ "Anna Puk", "Natalia Sayang" ],
|
||||
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||
"code": ["Anna Puk", "Natalia Sayang"],
|
||||
"design": ["Anna Puk", "Natalia Sayang"],
|
||||
"difficulty": 1,
|
||||
"tags": [ "bottoms", "underwear" ]
|
||||
"tags": ["bottoms", "underwear"]
|
||||
},
|
||||
"ursula": {
|
||||
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||
"code": "Natalia Sayang",
|
||||
"design": "Natalia Sayang",
|
||||
"difficulty": 1,
|
||||
"tags": [ "bottoms", "underwear" ]
|
||||
"tags": ["bottoms", "underwear"]
|
||||
},
|
||||
"wahid": {
|
||||
"description": "A FreeSewing pattern for a classic fitted waistcoat",
|
||||
"description": "A FreeSewing pattern for a classic fitted waistcoat",
|
||||
"code": "Joost De Cock",
|
||||
"design": "Joost De Cock",
|
||||
"difficulty": 4,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
},
|
||||
"walburga": {
|
||||
"description": "A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment",
|
||||
"description": "A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment",
|
||||
"code": "Rika Tamaike",
|
||||
"design": "Rika Tamaike",
|
||||
"difficulty": 1,
|
||||
"tags": [ "bottoms", "historic" ]
|
||||
"tags": ["bottoms", "historic"]
|
||||
},
|
||||
"waralee": {
|
||||
"description": "A FreeSewing pattern for wrap pants",
|
||||
"description": "A FreeSewing pattern for wrap pants",
|
||||
"code": "Wouter Van Wageningen",
|
||||
"design": "Wouter Van Wageningen",
|
||||
"difficulty": 2,
|
||||
"tags": [ "bottoms", "trousers" ]
|
||||
"tags": ["bottoms", "trousers"]
|
||||
},
|
||||
"yuri": {
|
||||
"description": "A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie",
|
||||
"description": "A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie",
|
||||
"code": "Hellgy",
|
||||
"design": "Biou",
|
||||
"difficulty": 3,
|
||||
"tags": [ "tops" ]
|
||||
"tags": ["tops"]
|
||||
}
|
||||
},
|
||||
"utilities": {
|
||||
"examples": {
|
||||
"description": "A FreeSewing pattern holding examples for our documentation",
|
||||
"description": "A FreeSewing pattern holding examples for our documentation",
|
||||
"code": "Joost De Cock"
|
||||
},
|
||||
"legend": {
|
||||
"description": "A FreeSewing pattern to document pattern notation",
|
||||
"description": "A FreeSewing pattern to document pattern notation",
|
||||
"code": "Joost De Cock"
|
||||
},
|
||||
"plugintest": {
|
||||
"description": "A FreeSewing pattern to test (y)our plugins",
|
||||
"description": "A FreeSewing pattern to test (y)our plugins",
|
||||
"code": "Joost De Cock"
|
||||
},
|
||||
"rendertest": {
|
||||
"description": "A FreeSewing pattern to test (y)our render engine our CSS",
|
||||
"description": "A FreeSewing pattern to test (y)our render engine our CSS",
|
||||
"code": "Joost De Cock"
|
||||
},
|
||||
"tutorial": {
|
||||
"description": "A FreeSewing pattern for a baby bib that's used in our tutorial",
|
||||
"description": "A FreeSewing pattern for a baby bib that's used in our tutorial",
|
||||
"code": "Joost De Cock"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,14 +4,22 @@ import plugins from './plugins.json' assert { type: 'json' }
|
|||
import sites from './sites.json' assert { type: 'json' }
|
||||
|
||||
// Helper method to construct summary objects
|
||||
const unpack = (obj, folder) => Object.fromEntries(
|
||||
Object.keys(obj).map(name => [name, { name, folder, type: folder.slice(0, -1), description: obj[name] } ])
|
||||
)
|
||||
const unpack = (obj, folder) =>
|
||||
Object.fromEntries(
|
||||
Object.keys(obj).map((name) => [
|
||||
name,
|
||||
{ name, folder, type: folder.slice(0, -1), description: obj[name] },
|
||||
])
|
||||
)
|
||||
|
||||
// Helper method to construct summary objects for designs
|
||||
const unpackDesigns = (obj, folder) => Object.fromEntries(
|
||||
Object.keys(obj).map(name => [name, { name, folder, type: folder.slice(0, -1), ...obj[name] } ])
|
||||
)
|
||||
const unpackDesigns = (obj, folder) =>
|
||||
Object.fromEntries(
|
||||
Object.keys(obj).map((name) => [
|
||||
name,
|
||||
{ name, folder, type: folder.slice(0, -1), ...obj[name] },
|
||||
])
|
||||
)
|
||||
|
||||
const designs = {
|
||||
...designsByType.accessories,
|
||||
|
@ -38,6 +46,5 @@ export const publishedSoftware = {
|
|||
...unpack(packages, 'packages'),
|
||||
}
|
||||
|
||||
export const publishedTypes = [ 'designs', 'packages', 'plugins' ]
|
||||
export const types = [ ...publishedTypes, 'sites' ]
|
||||
|
||||
export const publishedTypes = ['designs', 'packages', 'plugins']
|
||||
export const types = [...publishedTypes, 'sites']
|
||||
|
|
|
@ -24,4 +24,3 @@
|
|||
"plugin-title": "A FreeSewing plugin to add a title to your pattern parts",
|
||||
"plugin-versionfree-svg": "A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions"
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ const options = {
|
|||
entryPoints: ['src/index.mjs'],
|
||||
format: 'esm',
|
||||
outfile: 'dist/index.mjs',
|
||||
external: ["@freesewing"],
|
||||
external: ['@freesewing'],
|
||||
metafile: process.env.VERBOSE ? true : false,
|
||||
minify: process.env.NO_MINIFY ? false : true,
|
||||
sourcemap: true,
|
||||
|
@ -25,12 +25,11 @@ const options = {
|
|||
|
||||
// Let esbuild generate the build
|
||||
let result
|
||||
(async () => {
|
||||
;(async () => {
|
||||
result = await esbuild.build(options).catch(() => process.exit(1))
|
||||
|
||||
if (process.env.VERBOSE) {
|
||||
const info = await esbuild.analyzeMetafile(result.metafile)
|
||||
console.log(info)
|
||||
}
|
||||
|
||||
})()
|
||||
|
|
|
@ -1,24 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
||||
<head>
|
||||
<html
|
||||
lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:v="urn:schemas-microsoft-com:vml"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office"
|
||||
>
|
||||
<head>
|
||||
<!-- Template from https://tedgoas.github.io/Cerberus/ -->
|
||||
<meta charset="utf-8"> <!-- utf-8 works for most cases -->
|
||||
<meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine -->
|
||||
<meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely -->
|
||||
<meta name="format-detection" content="telephone=no,address=no,email=no,date=no,url=no"> <!-- Tell iOS not to automatically link certain text strings. -->
|
||||
<meta name="color-scheme" content="light">
|
||||
<meta name="supported-color-schemes" content="light">
|
||||
<title>FreeSewing Newsletter</title> <!-- The title tag shows in email notifications, like Android 4.4. -->
|
||||
<meta charset="utf-8" />
|
||||
<!-- utf-8 works for most cases -->
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<!-- Forcing initial-scale shouldn't be necessary -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<!-- Use the latest (edge) version of IE rendering engine -->
|
||||
<meta name="x-apple-disable-message-reformatting" />
|
||||
<!-- Disable auto-scale in iOS 10 Mail entirely -->
|
||||
<meta name="format-detection" content="telephone=no,address=no,email=no,date=no,url=no" />
|
||||
<!-- Tell iOS not to automatically link certain text strings. -->
|
||||
<meta name="color-scheme" content="light" />
|
||||
<meta name="supported-color-schemes" content="light" />
|
||||
<title>FreeSewing Newsletter</title>
|
||||
<!-- The title tag shows in email notifications, like Android 4.4. -->
|
||||
|
||||
<!-- What it does: Makes background images in 72ppi Outlook render at correct size. -->
|
||||
<!--[if gte mso 9]>
|
||||
<xml>
|
||||
<xml>
|
||||
<o:OfficeDocumentSettings>
|
||||
<o:AllowPNG/>
|
||||
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||
<o:AllowPNG />
|
||||
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||
</o:OfficeDocumentSettings>
|
||||
</xml>
|
||||
</xml>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Web Font / @font-face : BEGIN -->
|
||||
|
@ -26,11 +37,11 @@
|
|||
|
||||
<!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. -->
|
||||
<!--[if mso]>
|
||||
<style>
|
||||
* {
|
||||
font-family: sans-serif !important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
* {
|
||||
font-family: sans-serif !important;
|
||||
}
|
||||
</style>
|
||||
<![endif]-->
|
||||
|
||||
<!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ -->
|
||||
|
@ -42,255 +53,329 @@
|
|||
|
||||
<!-- CSS Reset : BEGIN -->
|
||||
<style>
|
||||
/* What it does: Tells the email client that only light styles are provided but the client can transform them to dark. A duplicate of meta color-scheme meta tag above. */
|
||||
:root {
|
||||
color-scheme: light;
|
||||
supported-color-schemes: light;
|
||||
}
|
||||
|
||||
/* What it does: Tells the email client that only light styles are provided but the client can transform them to dark. A duplicate of meta color-scheme meta tag above. */
|
||||
:root {
|
||||
color-scheme: light;
|
||||
supported-color-schemes: light;
|
||||
}
|
||||
/* What it does: Remove spaces around the email design added by some email clients. */
|
||||
/* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */
|
||||
html,
|
||||
body {
|
||||
margin: 0 auto !important;
|
||||
padding: 0 !important;
|
||||
height: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
/* What it does: Remove spaces around the email design added by some email clients. */
|
||||
/* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */
|
||||
html,
|
||||
body {
|
||||
margin: 0 auto !important;
|
||||
padding: 0 !important;
|
||||
height: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
/* What it does: Stops email clients resizing small text. */
|
||||
* {
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* What it does: Stops email clients resizing small text. */
|
||||
* {
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
/* What it does: Centers email on Android 4.4 */
|
||||
div[style*='margin: 16px 0'] {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
/* What it does: Centers email on Android 4.4 */
|
||||
div[style*="margin: 16px 0"] {
|
||||
margin: 0 !important;
|
||||
}
|
||||
/* What it does: forces Samsung Android mail clients to use the entire viewport */
|
||||
#MessageViewBody,
|
||||
#MessageWebViewDiv {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
/* What it does: forces Samsung Android mail clients to use the entire viewport */
|
||||
#MessageViewBody, #MessageWebViewDiv{
|
||||
width: 100% !important;
|
||||
}
|
||||
/* What it does: Stops Outlook from adding extra spacing to tables. */
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt !important;
|
||||
mso-table-rspace: 0pt !important;
|
||||
}
|
||||
|
||||
/* What it does: Stops Outlook from adding extra spacing to tables. */
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt !important;
|
||||
mso-table-rspace: 0pt !important;
|
||||
}
|
||||
/* What it does: Fixes webkit padding issue. */
|
||||
table {
|
||||
border-spacing: 0 !important;
|
||||
border-collapse: collapse !important;
|
||||
table-layout: fixed !important;
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
/* What it does: Fixes webkit padding issue. */
|
||||
table {
|
||||
border-spacing: 0 !important;
|
||||
border-collapse: collapse !important;
|
||||
table-layout: fixed !important;
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
/* What it does: Uses a better rendering method when resizing images in IE. */
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
/* What it does: Uses a better rendering method when resizing images in IE. */
|
||||
img {
|
||||
-ms-interpolation-mode:bicubic;
|
||||
}
|
||||
/* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* What it does: A work-around for email clients meddling in triggered links. */
|
||||
a[x-apple-data-detectors], /* iOS */
|
||||
/* What it does: A work-around for email clients meddling in triggered links. */
|
||||
a[x-apple-data-detectors], /* iOS */
|
||||
.unstyle-auto-detected-links a,
|
||||
.aBn {
|
||||
border-bottom: 0 !important;
|
||||
cursor: default !important;
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
font-size: inherit !important;
|
||||
font-family: inherit !important;
|
||||
font-weight: inherit !important;
|
||||
line-height: inherit !important;
|
||||
}
|
||||
border-bottom: 0 !important;
|
||||
cursor: default !important;
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
font-size: inherit !important;
|
||||
font-family: inherit !important;
|
||||
font-weight: inherit !important;
|
||||
line-height: inherit !important;
|
||||
}
|
||||
|
||||
/* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */
|
||||
.a6S {
|
||||
display: none !important;
|
||||
opacity: 0.01 !important;
|
||||
}
|
||||
/* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */
|
||||
.a6S {
|
||||
display: none !important;
|
||||
opacity: 0.01 !important;
|
||||
}
|
||||
|
||||
/* What it does: Prevents Gmail from changing the text color in conversation threads. */
|
||||
.im {
|
||||
color: inherit !important;
|
||||
}
|
||||
/* What it does: Prevents Gmail from changing the text color in conversation threads. */
|
||||
.im {
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
/* If the above doesn't work, add a .g-img class to any image in question. */
|
||||
img.g-img + div {
|
||||
display: none !important;
|
||||
}
|
||||
/* If the above doesn't work, add a .g-img class to any image in question. */
|
||||
img.g-img + div {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
h1 { line-height: 36px; }
|
||||
h2 { line-height: 28px; }
|
||||
h1 {
|
||||
line-height: 36px;
|
||||
}
|
||||
h2 {
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */
|
||||
/* Create one of these media queries for each additional viewport size you'd like to fix */
|
||||
/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */
|
||||
/* Create one of these media queries for each additional viewport size you'd like to fix */
|
||||
|
||||
/* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
|
||||
@media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 320px !important;
|
||||
}
|
||||
/* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
|
||||
@media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 320px !important;
|
||||
}
|
||||
/* iPhone 6, 6S, 7, 8, and X */
|
||||
@media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 375px !important;
|
||||
}
|
||||
}
|
||||
/* iPhone 6, 6S, 7, 8, and X */
|
||||
@media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 375px !important;
|
||||
}
|
||||
/* iPhone 6+, 7+, and 8+ */
|
||||
@media only screen and (min-device-width: 414px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 414px !important;
|
||||
}
|
||||
}
|
||||
/* iPhone 6+, 7+, and 8+ */
|
||||
@media only screen and (min-device-width: 414px) {
|
||||
u ~ div .email-container {
|
||||
min-width: 414px !important;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
<!-- CSS Reset : END -->
|
||||
|
||||
<!-- Progressive Enhancements : BEGIN -->
|
||||
<style>
|
||||
/* What it does: Hover styles for buttons */
|
||||
.button-td,
|
||||
.button-a {
|
||||
transition: all 100ms ease-in;
|
||||
}
|
||||
.button-td-primary:hover,
|
||||
.button-a-primary:hover {
|
||||
background: #212529 !important;
|
||||
border-color: #212529 !important;
|
||||
}
|
||||
|
||||
/* What it does: Hover styles for buttons */
|
||||
.button-td,
|
||||
.button-a {
|
||||
transition: all 100ms ease-in;
|
||||
}
|
||||
.button-td-primary:hover,
|
||||
.button-a-primary:hover {
|
||||
background: #212529 !important;
|
||||
border-color: #212529 !important;
|
||||
}
|
||||
|
||||
/* Media Queries */
|
||||
@media screen and (max-width: 600px) {
|
||||
|
||||
/* What it does: Adjust typography on small screens to improve readability */
|
||||
.email-container p {
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Media Queries */
|
||||
@media screen and (max-width: 600px) {
|
||||
/* What it does: Adjust typography on small screens to improve readability */
|
||||
.email-container p {
|
||||
font-size: 17px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<!-- Progressive Enhancements : END -->
|
||||
|
||||
</head>
|
||||
<!--
|
||||
</head>
|
||||
<!--
|
||||
The email background color (#ffffff) is defined in three places:
|
||||
1. body tag: for most email clients
|
||||
2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr
|
||||
3. mso conditional: For Windows 10 Mail
|
||||
-->
|
||||
<body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #ffffff;">
|
||||
<center role="article" aria-roledescription="email" lang="en" style="width: 100%; background-color: #ffffff;">
|
||||
<!--[if mso | IE]>
|
||||
<body
|
||||
width="100%"
|
||||
style="
|
||||
margin: 0;
|
||||
padding: 0 !important;
|
||||
mso-line-height-rule: exactly;
|
||||
background-color: #ffffff;
|
||||
"
|
||||
>
|
||||
<center
|
||||
role="article"
|
||||
aria-roledescription="email"
|
||||
lang="en"
|
||||
style="width: 100%; background-color: #ffffff"
|
||||
>
|
||||
<!--[if mso | IE]>
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #ffffff;">
|
||||
<tr>
|
||||
<td>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Visually Hidden Preheader Text : BEGIN -->
|
||||
<div style="max-height:0; overflow:hidden; mso-hide:all;" aria-hidden="true">
|
||||
This season's edition of the FreeSewing Newsletter, a long-read with news and updates from the FreeSewing community
|
||||
</div>
|
||||
<!-- Visually Hidden Preheader Text : END -->
|
||||
<!-- Visually Hidden Preheader Text : BEGIN -->
|
||||
<div style="max-height: 0; overflow: hidden; mso-hide: all" aria-hidden="true">
|
||||
This season's edition of the FreeSewing Newsletter, a long-read with news and updates from
|
||||
the FreeSewing community
|
||||
</div>
|
||||
<!-- Visually Hidden Preheader Text : END -->
|
||||
|
||||
<!-- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary. -->
|
||||
<!-- Preview Text Spacing Hack : BEGIN -->
|
||||
<div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;">
|
||||
‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌
|
||||
</div>
|
||||
<!-- Preview Text Spacing Hack : END -->
|
||||
<!-- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary. -->
|
||||
<!-- Preview Text Spacing Hack : BEGIN -->
|
||||
<div
|
||||
style="
|
||||
display: none;
|
||||
font-size: 1px;
|
||||
line-height: 1px;
|
||||
max-height: 0px;
|
||||
max-width: 0px;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
mso-hide: all;
|
||||
font-family: sans-serif;
|
||||
"
|
||||
>
|
||||
‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌
|
||||
</div>
|
||||
<!-- Preview Text Spacing Hack : END -->
|
||||
|
||||
<!--
|
||||
<!--
|
||||
Set the email width. Defined in two places:
|
||||
1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 600px.
|
||||
2. MSO tags for Desktop Windows Outlook enforce a 600px width.
|
||||
-->
|
||||
<div style="max-width: 600px; margin: 0 auto;" class="email-container">
|
||||
<!--[if mso]>
|
||||
<div style="max-width: 600px; margin: 0 auto" class="email-container">
|
||||
<!--[if mso]>
|
||||
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="600">
|
||||
<tr>
|
||||
<td>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Email Body : BEGIN -->
|
||||
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
||||
|
||||
<!-- 1 Column Text + Button : BEGIN -->
|
||||
<!-- Email Body : BEGIN -->
|
||||
<table
|
||||
align="center"
|
||||
role="presentation"
|
||||
cellspacing="0"
|
||||
cellpadding="0"
|
||||
border="0"
|
||||
width="100%"
|
||||
style="margin: auto"
|
||||
>
|
||||
<!-- 1 Column Text + Button : BEGIN -->
|
||||
<tr>
|
||||
<td style="background-color: #ffffff">
|
||||
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td style="background-color: #ffffff;">
|
||||
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td style="padding: 20px; font-family: sans-serif; font-size: 16px; line-height: 22px; color: #212529;">
|
||||
{{{ content }}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td
|
||||
style="
|
||||
padding: 20px;
|
||||
font-family: sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
color: #212529;
|
||||
"
|
||||
>
|
||||
{{{ content }}}
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 1 Column Text + Button : END -->
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 1 Column Text + Button : END -->
|
||||
|
||||
<!-- Clear Spacer : BEGIN -->
|
||||
<tr>
|
||||
<td aria-hidden="true" height="40" style="font-size: 0px; line-height: 0px;">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Clear Spacer : END -->
|
||||
<!-- Clear Spacer : BEGIN -->
|
||||
<tr>
|
||||
<td aria-hidden="true" height="40" style="font-size: 0px; line-height: 0px"> </td>
|
||||
</tr>
|
||||
<!-- Clear Spacer : END -->
|
||||
</table>
|
||||
<!-- Email Body : END -->
|
||||
|
||||
<!-- Email Footer : BEGIN -->
|
||||
<table
|
||||
align="center"
|
||||
role="presentation"
|
||||
cellspacing="0"
|
||||
cellpadding="0"
|
||||
border="0"
|
||||
width="100%"
|
||||
style="margin: auto"
|
||||
>
|
||||
<tr>
|
||||
<td
|
||||
style="
|
||||
padding: 20px;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
text-align: center;
|
||||
color: #495057;
|
||||
border-top: 1px solid #cccccc;
|
||||
"
|
||||
>
|
||||
<a href="https://freesewing.org/patrons/join"
|
||||
><b>Support FreeSewing: Become a Patron</b></a
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Email Footer : END -->
|
||||
|
||||
</table>
|
||||
<!-- Email Body : END -->
|
||||
<!-- Email Footer : BEGIN -->
|
||||
<table
|
||||
align="center"
|
||||
role="presentation"
|
||||
cellspacing="0"
|
||||
cellpadding="0"
|
||||
border="0"
|
||||
width="100%"
|
||||
style="margin: auto"
|
||||
>
|
||||
<tr>
|
||||
<td
|
||||
style="
|
||||
padding: 10px;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
text-align: center;
|
||||
color: #495057;
|
||||
"
|
||||
>
|
||||
FreeSewing<br /><span class="unstyle-auto-detected-links"
|
||||
>67 Plantin en Moretuslei<br />Antwerp / Belgium<br />info@freesewing.org</span
|
||||
>
|
||||
<br /><br />
|
||||
<unsubscribe style="color: #ffffff; text-decoration: underline">
|
||||
You can <a href="{{{ unsubscribe }}}">unsubscribe</a> at any time. Or just reply and
|
||||
tell us you want out.
|
||||
</unsubscribe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Email Footer : END -->
|
||||
|
||||
<!-- Email Footer : BEGIN -->
|
||||
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
||||
<tr>
|
||||
<td style="padding: 20px; font-family: sans-serif; font-size: 12px; line-height: 15px; text-align: center; color: #495057; border-top: 1px solid #cccccc;">
|
||||
<a href="https://freesewing.org/patrons/join"><b>Support FreeSewing: Become a Patron</b></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Email Footer : END -->
|
||||
|
||||
<!-- Email Footer : BEGIN -->
|
||||
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
||||
<tr>
|
||||
<td style="padding: 10px; font-family: sans-serif; font-size: 12px; line-height: 15px; text-align: center; color: #495057;">
|
||||
FreeSewing<br><span class="unstyle-auto-detected-links">67 Plantin en Moretuslei<br>Antwerp / Belgium<br>info@freesewing.org</span>
|
||||
<br><br>
|
||||
<unsubscribe style="color: #ffffff; text-decoration: underline;">
|
||||
You can <a href="{{{ unsubscribe }}}">unsubscribe</a> at any time. Or just reply and tell us you want out.
|
||||
</unsubscribe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Email Footer : END -->
|
||||
|
||||
<!--[if mso]>
|
||||
<!--[if mso]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--[if mso | IE]>
|
||||
<!--[if mso | IE]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</center>
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"url": "https://github.com/freesewing/freesewing/issues"
|
||||
},
|
||||
"funding": {
|
||||
"type" : "individual",
|
||||
"url" : "https://freesewing.org/patrons/join"
|
||||
"type": "individual",
|
||||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"keywords": ["freesewing"],
|
||||
"type": "module",
|
||||
|
|
|
@ -4,4 +4,3 @@ import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
|
|||
|
||||
// Run shared tests
|
||||
sharedPluginTests(plugin)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
"kickstart:windows": "npx lerna bootstrap && yarn wbuildall && yarn prepare && yarn tips",
|
||||
"cleanall": "lerna run clean",
|
||||
"test": "lerna run test",
|
||||
"prettier": "npx prettier --write 'packages/**/src/*.mjs' 'packages/**/src/*.js' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'",
|
||||
"prettier": "npx prettier --write 'config/*' 'config/**/*' 'packages/**/src/*.mjs' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'",
|
||||
"reconfigure": "all-contributors generate && node --experimental-json-modules --no-warnings scripts/reconfigure.mjs",
|
||||
"prerelease": "lerna version --no-git-tag-version --no-push && yarn reconfigure && yarn buildall",
|
||||
"buildall": "lerna run cibuild_step0 && lerna run cibuild_step1 && lerna run cibuild_step2 && lerna run cibuild_step3 && lerna run cibuild_step4 && lerna run cibuild_step5 && lerna run cibuild_step6 && lerna run cibuild_step7",
|
||||
|
|
|
@ -29,5 +29,5 @@ export const __loadPatternDefaults = () => ({
|
|||
debug: false,
|
||||
options: {},
|
||||
absoluteOptions: {},
|
||||
measurements: {}
|
||||
measurements: {},
|
||||
})
|
||||
|
|
|
@ -48,7 +48,7 @@ describe('Pattern', () => {
|
|||
name: 'test.partB',
|
||||
measurements: ['head', 'knee'],
|
||||
optionalMeasurements: ['knee'],
|
||||
after: [ partA ],
|
||||
after: [partA],
|
||||
plugins: [
|
||||
{
|
||||
name: 'testPlugin',
|
||||
|
|
|
@ -18,9 +18,9 @@ describe('Snapped options', () => {
|
|||
draft: ({ part, absoluteOptions }) => {
|
||||
abs = absoluteOptions
|
||||
return part
|
||||
}
|
||||
},
|
||||
}
|
||||
const design = new Design({ parts: [ part] })
|
||||
const design = new Design({ parts: [part] })
|
||||
new design({ options: { test: 0.13 }, measurements, idPrefix: 'A' }).draft()
|
||||
expect(abs.test).to.equal(60)
|
||||
new design({ options: { test: 0.27 }, measurements, idPrefix: 'B' }).draft()
|
||||
|
|
|
@ -43,5 +43,4 @@ describe('Snippet', () => {
|
|||
pattern.draft()
|
||||
expect(result).to.equal(':)')
|
||||
})
|
||||
|
||||
})
|
||||
|
|
|
@ -59,7 +59,7 @@ describe('Store', () => {
|
|||
}
|
||||
const part = {
|
||||
name: 'example.part',
|
||||
plugins: [ plugin ],
|
||||
plugins: [plugin],
|
||||
draft: ({ store, part }) => {
|
||||
store.test.example.warning('hello warning')
|
||||
store.test.example.info('hello info')
|
||||
|
@ -95,7 +95,7 @@ describe('Store', () => {
|
|||
}
|
||||
const part = {
|
||||
name: 'example_part',
|
||||
plugins: [ plugin ],
|
||||
plugins: [plugin],
|
||||
draft: ({ methodA, methodB, part }) => {
|
||||
methodA('hello A')
|
||||
methodB('hello B')
|
||||
|
@ -129,9 +129,11 @@ describe('Store', () => {
|
|||
|
||||
it('Should log a warning when pushing to a non-array key', () => {
|
||||
const store = new Store()
|
||||
store.push('test',1)
|
||||
store.push('test', 1)
|
||||
expect(store.logs.warning.length).to.equal(1)
|
||||
expect(store.logs.warning[0]).to.equal('Store.push(value) on key `test`, but key does not hold an array')
|
||||
expect(store.logs.warning[0]).to.equal(
|
||||
'Store.push(value) on key `test`, but key does not hold an array'
|
||||
)
|
||||
})
|
||||
|
||||
it('Should log a warning when setting an undefined value with set()', () => {
|
||||
|
@ -145,7 +147,9 @@ describe('Store', () => {
|
|||
const store = new Store()
|
||||
store.setIfUnset('test')
|
||||
expect(store.logs.warning.length).to.equal(1)
|
||||
expect(store.logs.warning[0]).to.equal('Store.setIfUnset(value) on key `test`, but value is undefined')
|
||||
expect(store.logs.warning[0]).to.equal(
|
||||
'Store.setIfUnset(value) on key `test`, but value is undefined'
|
||||
)
|
||||
})
|
||||
|
||||
it('Should unset a value', () => {
|
||||
|
|
|
@ -484,9 +484,9 @@ describe('Utils', () => {
|
|||
points.to = new Point(19, 76)
|
||||
paths.test = new Path().move(points.from).line(points.to)
|
||||
return part
|
||||
}
|
||||
},
|
||||
}
|
||||
const design = new Design({ parts: [ test ]})
|
||||
const design = new Design({ parts: [test] })
|
||||
const pattern = new design()
|
||||
const props = pattern.draft().getRenderProps()
|
||||
const transform = generateStackTransform(30, 60, 90, true, true, props.stacks.test)
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
---
|
||||
thingIsDeprecated: "{thing} ist veraltet"
|
||||
weRecommendThingInstead: "Wir empfehlen stattdessen {thing}"
|
||||
thingIsDeprecated: '{thing} ist veraltet'
|
||||
weRecommendThingInstead: 'Wir empfehlen stattdessen {thing}'
|
||||
|
|
|
@ -26,7 +26,7 @@ profileWarning: Відкликання згоди видалить усі Ваш
|
|||
profileWhatAnswerOptional: 'За наявності: <b>зображення облікового запису</b>, <b>біо</b>і <b>соціальні мережі</b>'
|
||||
profileWhatAnswer: "Ваша <b>електронна адреса</b>, <b>ім'я користувача</b>і <b>пароль</b>."
|
||||
profileWhatQuestion: Що таке дані облікового запису?
|
||||
profileWhyAnswer: 'Щоб <b>автентифікувати</b> Вас, <b>зв''язатися</b> з Вами коли це потрібно та задля покращення нашої <b>спільноти</b>.'
|
||||
profileWhyAnswer: "Щоб <b>автентифікувати</b> Вас, <b>зв'язатися</b> з Вами коли це потрібно та задля покращення нашої <b>спільноти</b>."
|
||||
readMore: Для отримання додаткової інформації, будь ласка, прочитайте наші умови конфіденційності.
|
||||
readRights: Для отримання додаткової інформації, будь ласка, прочитайте про Ваші права.
|
||||
revokeConsent: Відкликати згоду
|
||||
|
|
|
@ -6,7 +6,7 @@ txt-draft: 'Оберіть одну з викрійок, модель та на
|
|||
txt-how: Як це працює
|
||||
txt-join: Приєднайтеся до тисяч інших користувачів та створіть безкоштовний акаунт на freesewing.org.
|
||||
txt-model: Всі наші викрійки адаптуються під задані виміри. Тому перше, що варто зробити – піти взяти сантиметрову стрічку.
|
||||
txt-newHere: "Якщо ви тут вперше – найкраще місце для початку є наше демо:"
|
||||
txt-newHere: 'Якщо ви тут вперше – найкраще місце для початку є наше демо:'
|
||||
txt-opensource: 'Наша платформа, наші викрійки та навіть наш вебсайт. Весь наш код доступний на GitHub. Pull requests вітаються!'
|
||||
txt-patrons: FreeSewing існує завдяки фінансовій підтримці наших Патронів. Прокрутіть вниз, щоб дізнатися про нашу модель підписки.
|
||||
txt-showcase: Завершені проекти від спільноти FreeSewing
|
||||
|
|
|
@ -188,10 +188,13 @@ function createDesign(name, type) {
|
|||
mkdir([...design, 'tests'])
|
||||
|
||||
// Create package.json
|
||||
templateOut([...template, 'package.json'], [...design, 'package.json'], { name, description })
|
||||
templateOut([...template, 'package.json.mustache'], [...design, 'package.json'], {
|
||||
name,
|
||||
description,
|
||||
})
|
||||
|
||||
// Create index.mjs
|
||||
templateOut([...template, 'src', 'index.mjs'], [...design, 'src', 'index.mjs'], {
|
||||
templateOut([...template, 'src', 'index.mjs.mustache'], [...design, 'src', 'index.mjs'], {
|
||||
capitalized_name,
|
||||
})
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue