1
0
Fork 0

chore: Renaming Fu to Florence. See #382

This commit is contained in:
Joost De Cock 2020-04-26 10:54:55 +02:00
parent b071a04bde
commit 291b30baee
21 changed files with 108 additions and 170 deletions

View file

@ -53,7 +53,7 @@ Unreleased:
2.4.5: 2.4.5:
date: 2020-03-19 date: 2020-03-19
Changes: Changes:
fu: florence:
- Improved shape based on community feedback - Improved shape based on community feedback
utils: utils:
- neckstimate() now returns values rounded to nearest mm - neckstimate() now returns values rounded to nearest mm
@ -108,8 +108,8 @@ Unreleased:
2.4.0: 2.4.0:
date: 2020-02-29 date: 2020-02-29
Added: Added:
fu: florence:
- Fu is a face mask pattern - Florence is a face mask pattern
2.3.0: 2.3.0:
date: 2020-02-23 date: 2020-02-23

View file

@ -14,7 +14,7 @@ css-theme: 'A CSS theme for FreeSewing web UIs'
diana: 'A FreeSewing pattern for a top with a draped neck' diana: 'A FreeSewing pattern for a top with a draped neck'
examples: 'A FreeSewing pattern holding examples for our documentation' examples: 'A FreeSewing pattern holding examples for our documentation'
florent: 'A FreeSewing pattern for a flat cap' florent: 'A FreeSewing pattern for a flat cap'
fu: 'A FreeSewing pattern for a face mask' florence: 'A FreeSewing pattern for a face mask'
gatsby-remark-jargon: 'A gatsby-transformer-remark sub-plugin for jargon terms' gatsby-remark-jargon: 'A gatsby-transformer-remark sub-plugin for jargon terms'
holmes: 'A FreeSewing pattern for a Sherlock Holmes hat' holmes: 'A FreeSewing pattern for a Sherlock Holmes hat'
huey: 'A FreeSewing pattern for a zip-up hoodie' huey: 'A FreeSewing pattern for a zip-up hoodie'

View file

@ -1,133 +1,107 @@
# Change log for: @freesewing/fu # Change log for: @freesewing/fu
## Unreleased ## Unreleased
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.5.0 (2020-04-05) ## 2.5.0 (2020-04-05)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.6 (2020-03-23) ## 2.4.6 (2020-03-23)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.5 (2020-03-19) ## 2.4.5 (2020-03-19)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.4 (2020-03-15) ## 2.4.4 (2020-03-15)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.3 (2020-03-12) ## 2.4.3 (2020-03-12)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.2 (2020-03-08) ## 2.4.2 (2020-03-08)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.1 (2020-03-04) ## 2.4.1 (2020-03-04)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.4.0 (2020-02-29) ## 2.4.0 (2020-02-29)
### Added ### Added
- Fu is a face mask pattern - Fu is a face mask pattern
## 2.3.0 (2020-02-23) ## 2.3.0 (2020-02-23)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.2.0 (2020-02-22) ## 2.2.0 (2020-02-22)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.9 (2020-01-18) ## 2.1.9 (2020-01-18)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.8 (2019-12-16) ## 2.1.8 (2019-12-16)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.7 (2019-12-15) ## 2.1.7 (2019-12-15)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.6 (2019-11-24) ## 2.1.6 (2019-11-24)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.5 (2019-11-19) ## 2.1.5 (2019-11-19)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.4 (2019-11-01) ## 2.1.4 (2019-11-01)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.3 (2019-10-18) ## 2.1.3 (2019-10-18)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.2 (2019-10-14) ## 2.1.2 (2019-10-14)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.1 (2019-10-13) ## 2.1.1 (2019-10-13)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.1.0 (2019-10-06) ## 2.1.0 (2019-10-06)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.0.4 (2019-09-27) ## 2.0.4 (2019-09-27)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.0.3 (2019-09-15) ## 2.0.3 (2019-09-15)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.0.2 (2019-09-06) ## 2.0.2 (2019-09-06)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.0.1 (2019-09-01) ## 2.0.1 (2019-09-01)
**Note:** Version bump only for package fu **Note:** Version bump only for package fu
## 2.0.0 (2019-08-25) ## 2.0.0 (2019-08-25)
This is the **initial release**, and the start of this change log. This is the **initial release**, and the start of this change log.

View file

@ -1,4 +1,5 @@
![FreeSewing](https://freesewing.org/banner.jpg) ![FreeSewing](https://freesewing.org/banner.jpg)
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/fu" href="https://www.npmjs.com/package/@freesewing/fu"
title="@freesewing/fu on NPM" title="@freesewing/fu on NPM"
@ -43,18 +44,16 @@
## What am I looking at? 🤔 ## What am I looking at? 🤔
This repository is our *monorepo* holding [all our NPM packages](https://www.npmjs.com/search?q=keywords:freesewing). This repository is our _monorepo_ holding [all our NPM packages](https://www.npmjs.com/search?q=keywords:freesewing).
This folder holds **@freesewing/fu** This folder holds **@freesewing/fu**
A FreeSewing pattern for a face mask A FreeSewing pattern for a face mask
## About FreeSewing 💀 ## About FreeSewing 💀
Where the world of makers and developers collide, that's where you'll find FreeSewing. Where the world of makers and developers collide, that's where you'll find FreeSewing.
Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox Our [core library](https://freesewing.dev/reference/api/) is a _batteries-included_ toolbox
for parametric design of sewing patterns. It's a modular system (check our list for parametric design of sewing patterns. It's a modular system (check our list
of [plugins](https://freesewing.dev/reference/plugins/) and getting started is as simple as: of [plugins](https://freesewing.dev/reference/plugins/) and getting started is as simple as:
@ -73,19 +72,19 @@ our sewing patterns adapted to your measurements.
## Support FreeSewing: Become a patron 🥰 ## Support FreeSewing: Become a patron 🥰
FreeSewing is an open source project run by a community, FreeSewing is an open source project run by a community,
and financially supported by our patrons. and financially supported by our patrons.
If you feel what we do is worthwhile, you too If you feel what we do is worthwhile, you too
should [become a patron](https://freesewing.org/patrons/join). should [become a patron](https://freesewing.org/patrons/join).
## Links 👩‍💻 ## Links 👩‍💻
- 💻 Makers website: [freesewing.org](https://freesewing.org) - 💻 Makers website: [freesewing.org](https://freesewing.org)
- 💻 Developers website: [freesewing.dev](https://freesewing.dev) - 💻 Developers website: [freesewing.dev](https://freesewing.dev)
- 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/chat) - 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/chat)
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
## License: MIT 🤓 ## License: MIT 🤓

View file

@ -1,7 +1,7 @@
import { version } from '../package.json' import { version } from '../package.json'
export default { export default {
name: 'fu', name: 'florence',
version: version, version: version,
design: 'Joost De Cock', design: 'Joost De Cock',
code: 'Joost De Cock', code: 'Joost De Cock',
@ -10,13 +10,13 @@ export default {
difficulty: 1, difficulty: 1,
tags: [], tags: [],
optionGroups: { optionGroups: {
fit: ['height', 'length', 'curve' ] fit: ['height', 'length', 'curve']
}, },
measurements: ['headCircumference'], measurements: ['headCircumference'],
parts: ['mask'], parts: ['mask'],
options: { options: {
length: { pct: 40, min: 35, max: 45 }, length: { pct: 40, min: 35, max: 45 },
height: { pct: 26, min: 23, max: 29 }, height: { pct: 26, min: 23, max: 29 },
curve: { pct: 12.5, min: 10, max: 15 }, curve: { pct: 12.5, min: 10, max: 15 }
} }
} }

View file

@ -40,8 +40,8 @@ It is **not** part of the pattern's source code.
To run this example, follow these steps: To run this example, follow these steps:
- In the folder above this one, run: `yarn start` (or `npm start`) - In the folder above this one, run: `yarn start` (or `npm start`)
- Then, in new terminal, run the same command in this folder: `yarn start` (or `npm start`) - Then, in new terminal, run the same command in this folder: `yarn start` (or `npm start`)
This will spin up the development environment, similar to [our online demo](https://fu.freesewing.dev/). This will spin up the development environment, similar to [our online demo](https://fu.freesewing.dev/).
@ -49,7 +49,7 @@ This will spin up the development environment, similar to [our online demo](http
Where the world of makers and developers collide, that's where you'll find FreeSewing. Where the world of makers and developers collide, that's where you'll find FreeSewing.
Our [core library](https://freesewing.dev/en/freesewing) is a *batteries-included* toolbox Our [core library](https://freesewing.dev/en/freesewing) is a _batteries-included_ toolbox
for parametric design of sewing patterns. It's a modular system (check our list for parametric design of sewing patterns. It's a modular system (check our list
of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as: of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as:
@ -76,11 +76,11 @@ should [become a patron](https://freesewing.org/patrons/join).
## Links 👩‍💻 ## Links 👩‍💻
- 💻 Makers website: [freesewing.org](https://freesewing.org) - 💻 Makers website: [freesewing.org](https://freesewing.org)
- 💻 Developers website: [freesewing.dev](https://freesewing.org) - 💻 Developers website: [freesewing.dev](https://freesewing.org)
- 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing) - 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing)
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
## License: MIT 🤓 ## License: MIT 🤓
@ -93,4 +93,3 @@ Our [chatroom on Gitter](https://gitter.im) is the best place to ask questions,
share your feedback, or just hang out. share your feedback, or just hang out.
If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"> <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#000000" />
<!-- <!--
manifest.json provides metadata used when your web app is added to the manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/ homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
--> -->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json"> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!-- <!--
Notice the use of %PUBLIC_URL% in the tags above. Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build. It will be replaced with the URL of the `public` folder during the build.

View file

@ -6,18 +6,11 @@ import '@freesewing/css-theme'
import Pattern from 'pattern' import Pattern from 'pattern'
const App = props => { const App = (props) => {
let instance = new Pattern() let instance = new Pattern()
let config = instance.config let config = instance.config
return ( return <Workbench freesewing={freesewing} Pattern={Pattern} config={config} userLanguage="en" />
<Workbench
freesewing={freesewing}
Pattern={Pattern}
config={config}
userLanguage="en"
/>
)
} }
export default App export default App

View file

@ -53,7 +53,7 @@ export function register(config) {
function registerValidSW(swUrl, config) { function registerValidSW(swUrl, config) {
navigator.serviceWorker navigator.serviceWorker
.register(swUrl) .register(swUrl)
.then(registration => { .then((registration) => {
registration.onupdatefound = () => { registration.onupdatefound = () => {
const installingWorker = registration.installing const installingWorker = registration.installing
installingWorker.onstatechange = () => { installingWorker.onstatechange = () => {
@ -84,7 +84,7 @@ function registerValidSW(swUrl, config) {
} }
} }
}) })
.catch(error => { .catch((error) => {
console.error('Error during service worker registration:', error) console.error('Error during service worker registration:', error)
}) })
} }
@ -92,14 +92,14 @@ function registerValidSW(swUrl, config) {
function checkValidServiceWorker(swUrl, config) { function checkValidServiceWorker(swUrl, config) {
// Check if the service worker can be found. If it can't reload the page. // Check if the service worker can be found. If it can't reload the page.
fetch(swUrl) fetch(swUrl)
.then(response => { .then((response) => {
// Ensure service worker exists, and that we really are getting a JS file. // Ensure service worker exists, and that we really are getting a JS file.
if ( if (
response.status === 404 || response.status === 404 ||
response.headers.get('content-type').indexOf('javascript') === -1 response.headers.get('content-type').indexOf('javascript') === -1
) { ) {
// No service worker found. Probably a different app. Reload the page. // No service worker found. Probably a different app. Reload the page.
navigator.serviceWorker.ready.then(registration => { navigator.serviceWorker.ready.then((registration) => {
registration.unregister().then(() => { registration.unregister().then(() => {
window.location.reload() window.location.reload()
}) })
@ -116,7 +116,7 @@ function checkValidServiceWorker(swUrl, config) {
export function unregister() { export function unregister() {
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then(registration => { navigator.serviceWorker.ready.then((registration) => {
registration.unregister() registration.unregister()
}) })
} }

View file

@ -1,5 +1,5 @@
{ {
"name": "@freesewing/fu", "name": "@freesewing/florence",
"version": "2.5.0", "version": "2.5.0",
"description": "A FreeSewing pattern for a face mask", "description": "A FreeSewing pattern for a face mask",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",

View file

@ -0,0 +1,41 @@
import babel from 'rollup-plugin-babel'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'
import json from 'rollup-plugin-json'
import minify from 'rollup-plugin-babel-minify'
import peerDepsExternal from 'rollup-plugin-peer-deps-external'
import { name, version, description, author, license, main, module } from './package.json'
const output = [
{
file: main,
format: 'cjs',
sourcemap: true
}
]
if (typeof module !== 'undefined')
output.push({
file: module,
format: 'es',
sourcemap: true
})
export default {
input: 'src/index.js',
output,
plugins: [
peerDepsExternal(),
resolve({ modulesOnly: true }),
commonjs(),
json(),
babel({
exclude: 'node_modules/**',
plugins: ['@babel/plugin-proposal-object-rest-spread']
}),
minify({
comments: false,
sourceMap: true,
banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */`
})
]
}

View file

@ -1,4 +1,4 @@
export default part => { export default (part) => {
let { let {
points, points,
Point, Point,
@ -24,16 +24,13 @@ export default part => {
points.topEdge = points.topLeft.shiftFractionTowards(points.bottomLeft, 0.2) points.topEdge = points.topLeft.shiftFractionTowards(points.bottomLeft, 0.2)
points.bottomEdge = points.bottomLeft.shiftFractionTowards(points.topLeft, 0.18) points.bottomEdge = points.bottomLeft.shiftFractionTowards(points.topLeft, 0.18)
points.topTip = points.topRight.shiftFractionTowards(points.topLeft, 0.1) points.topTip = points.topRight.shiftFractionTowards(points.topLeft, 0.1)
points.bottomTip = points.bottomRight.shiftFractionTowards( points.bottomTip = points.bottomRight.shiftFractionTowards(points.bottomLeft, 0.4)
points.bottomLeft,
0.4
)
points.tipCenterCp2 = points.tipCenter.shiftFractionTowards(points.topRight, 0.55) points.tipCenterCp2 = points.tipCenter.shiftFractionTowards(points.topRight, 0.55)
points.tipCenterCp1 = points.tipCenter.shiftFractionTowards(points.bottomRight, 0.5) points.tipCenterCp1 = points.tipCenter.shiftFractionTowards(points.bottomRight, 0.5)
points.topTipCp2 = points.topEdge.shift(0, measurements.headCircumference * options.curve) points.topTipCp2 = points.topEdge.shift(0, measurements.headCircumference * options.curve)
points.topTipCp1 = points.topTip points.topTipCp1 = points.topTip
.shiftTowards(points.topTipCp2, points.topTip.dist(points.tipCenterCp2)/2) .shiftTowards(points.topTipCp2, points.topTip.dist(points.tipCenterCp2) / 2)
.rotate(90, points.topTip) .rotate(90, points.topTip)
points.tipCenterCp1 = points.tipCenterCp1.rotate(-4, points.tipCenter) points.tipCenterCp1 = points.tipCenterCp1.rotate(-4, points.tipCenter)
@ -45,7 +42,9 @@ export default part => {
points.bottomTip.shift(15, 30), points.bottomTip.shift(15, 30),
points.tipCenter, points.tipCenter,
points.tipCenterCp1 points.tipCenterCp1
), 0.75) ),
0.75
)
paths.seam = new Path() paths.seam = new Path()
.move(points.topEdge) .move(points.topEdge)

View file

@ -0,0 +1,21 @@
// This file is auto-generated.
// Changes you make will be overwritten.
const expect = require('chai').expect
const models = require('@freesewing/models')
const patterns = require('@freesewing/pattern-info')
const Florence = require('../dist')
// Shared tests
const testPatternConfig = require('../../../tests/patterns/config')
const testPatternDrafting = require('../../../tests/patterns/drafting')
const testPatternSampling = require('../../../tests/patterns/sampling')
// Test config
testPatternConfig('florence', new Florence(), expect, models, patterns)
// Test drafting
testPatternDrafting('florence', Florence, expect, models, patterns)
// Test sampling
testPatternSampling('florence', Florence, expect, models, patterns)

View file

@ -1,49 +0,0 @@
import babel from "rollup-plugin-babel";
import resolve from "rollup-plugin-node-resolve";
import commonjs from "rollup-plugin-commonjs";
import json from "rollup-plugin-json";
import minify from "rollup-plugin-babel-minify";
import peerDepsExternal from "rollup-plugin-peer-deps-external";
import {
name,
version,
description,
author,
license,
main,
module
} from "./package.json";
const output = [
{
file: main,
format: "cjs",
sourcemap: true
}
];
if (typeof module !== "undefined")
output.push({
file: module,
format: "es",
sourcemap: true
});
export default {
input: "src/index.js",
output,
plugins: [
peerDepsExternal(),
resolve({ modulesOnly: true }),
commonjs(),
json(),
babel({
exclude: "node_modules/**",
plugins: ["@babel/plugin-proposal-object-rest-spread"]
}),
minify({
comments: false,
sourceMap: true,
banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */`
})
]
};

View file

@ -1,39 +0,0 @@
// This file is auto-generated.
// Changes you make will be overwritten.
const expect = require("chai").expect;
const models = require("@freesewing/models")
const patterns = require("@freesewing/pattern-info")
const Fu = require('../dist')
// Shared tests
const testPatternConfig = require('../../../tests/patterns/config')
const testPatternDrafting = require('../../../tests/patterns/drafting')
const testPatternSampling = require('../../../tests/patterns/sampling')
// Test config
testPatternConfig(
'fu',
new Fu(),
expect,
models,
patterns
)
// Test drafting
testPatternDrafting(
'fu',
Fu,
expect,
models,
patterns
)
// Test sampling
testPatternSampling(
'fu',
Fu,
expect,
models,
patterns
)