1
0
Fork 0

Merge branch 'develop' into joost

This commit is contained in:
Joost De Cock 2023-07-28 08:37:06 +02:00
commit 78e8987951
104 changed files with 792 additions and 381 deletions

View file

@ -13,7 +13,7 @@ _types:
design:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
test: &test 'npx mocha tests/*.test.mjs'
testci: &testci 'npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js'
testci: &testci 'NODE_OPTIONS="--conditions=internal" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js'
plugin:
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
test: *test
@ -28,11 +28,11 @@ core:
models:
test: 'npx mocha tests/*.test.mjs'
new-design:
i18n-only: 'SITE="new-design/shared" node ../../sites/shared/prebuild/i18n-only.mjs'
i18n-only: 'SITE="new-design/shared" node --conditions=internal ../../sites/shared/prebuild/i18n-only.mjs'
wbuild: '!'
lint: "npx eslint 'lib/*.mjs'"
mbuild: '!'
prebuild: 'node ./prebuild.mjs'
prebuild: 'node --conditions=internal ./prebuild.mjs'
test: '!'
testci: '!'
vbuild: '!'
@ -69,10 +69,9 @@ dev:
clean: &nextClean 'rimraf prebuild/* && rimraf public/locales/*/* && rimraf public/feeds/* && rimraf ../shared/prebuild/data/*'
dev: &nextDev 'next dev -p 8000'
develop: *nextDev
i18n: "SITE=dev node ../shared/prebuild/i18n-only.mjs"
i18n: "SITE=dev node --conditions=internal ../shared/prebuild/i18n-only.mjs"
lint: &nextLint 'next lint'
prebuild: 'cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs'
predev: 'node --experimental-json-modules ./prebuild.mjs'
prebuild: &nextPrebuild 'node --conditions=internal --experimental-json-modules ./prebuild.mjs'
serve: "pm2 start npm --name 'dev' -- run start"
start: &nextStart 'yarn prebuild && yarn dev'
@ -85,11 +84,10 @@ lab:
cibuild: 'yarn build'
dev: *nextDev
develop: *nextDev
i18n: 'SITE=lab node ../shared/prebuild/i18n-only.mjs'
i18n: 'SITE=lab node --conditions=internal ../shared/prebuild/i18n-only.mjs'
e2e: &e2e 'yarn playwright test'
lint: *nextLint
prebuild: 'cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs'
predev: 'node --experimental-json-modules ./prebuild.mjs'
prebuild: *nextPrebuild
start: *nextStart
org:
@ -98,10 +96,9 @@ org:
clean: *nextClean
dev: *nextDev
develop: *nextDev
i18n: 'SITE=org node ../shared/prebuild/i18n-only.mjs'
i18n: 'SITE=org node --conditions=internal ../shared/prebuild/i18n-only.mjs'
lint: *nextLint
prebuild: 'cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs'
predev: 'node --experimental-json-modules ./prebuild.mjs'
prebuild: *nextPrebuild
start: *nextStart
sanity:

View file

@ -14,7 +14,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"cibuild_step1": "node build.mjs",

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -22,7 +22,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -36,7 +39,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -15,12 +15,6 @@
"wbuild": {
"dependsOn": ["^wbuild", "prewbuild"]
},
"testci": {
"dependsOn": ["^build"]
},
"lint": {
"dependsOn": []
},
"e2e": {
"dependsOn": ["prebuild"]
}

View file

@ -28,7 +28,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",

View file

@ -24,7 +24,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",

View file

@ -2,26 +2,26 @@
"author": "Autor",
"githubRepo": "GitHub-Repository",
"packageManager": "Paket-Manager",
"patternName": "Schnittmuster-Name",
"patternType": "Schnittmuster-Art",
"patternCreated": "Dein Schnittmusterskelett wurde erstellt in",
"designName": "Design name",
"designType": "Design type",
"designCreated": "Your design skeleton has been created at",
"runTheseCommands": "Um loszulegen, führe diesen Befehl aus",
"startRollup": "In einem Terminal startest du den Rollup-Bundler im Beobachtungsmodus",
"startWebpack": "Dadurch wird der 'example'-Ordner betreten und die Entwicklungsumgebung gestartet.",
"devDocsAvailableAt": "Entwicklerdokumentation ist verfügbar auf",
"talkToUs": "Für Fragen, Feedback oder Anregungen trete unserem Discord-Server bei",
"draftYourPattern": "Zeichne dein Schnittmuster",
"testYourPattern": "Teste dein Schnittmuster",
"draftYourDesign": "Draft your design",
"testYourDesign": "Test your design",
"draftThing": "{thing} erstellen",
"testThing": "{thing} testen",
"renderInBrowser": "Klicke unten, um dein Schnittmuster im Browser zu rendern.",
"renderInBrowser": "Click below to render your design in the browser.",
"weWillReRender": "Wenn du Änderungen vornimmst, werden wir es erneut für dich rendern.",
"youCan": "Du kannst",
"enterMeasurements": "Maße von Hand eingeben",
"preloadMeasurements": "Einen bestehenden Satz an Maßen einlesen",
"size": "Größe",
"noRequiredMeasurements": "Dieses Schnittmuster hat keine benötigten Maße",
"howtoAddMeasurements": "Um Maße als Anforderung zu definieren, füge sie der Sektion <b>measurements</b> in der Konfigurationsdatei des Schnittmusters hinzu.",
"noRequiredMeasurements": "This design has no required measurements",
"howtoAddMeasurements": "To require measurements, add them to the <b>measurements</b> section of the design's configuration file.",
"seeDocsAt": "Dokumentation zu diesem Thema ist verfügbar unter",
"clearDesignMode": "Designmodus leeren",
"designMode": "Designmodus",
@ -30,5 +30,5 @@
"thingIsDisabled": "{thing} ist deaktiviert",
"turnOn": "Aktivieren",
"turnOff": "Deaktivieren",
"validNameWarning": "Bitte wähle einen anderen Namen, da dieser Name Probleme verursachen würde.\nWir (wieder-)verwenden den Namen des Schnittmusters als NPM-Paketname.\nPaketnamen müssen in Kleinbuchstaben geschrieben sein und dürfen keine Sonderzeichen enthalten.\nBitte benenne dein Muster also entsprechend, wie in etwa:"
"validNameWarning": "Please pick a different name as this name would cause problems.\nWe (re-)use the design name as the NPM package name.\nPackage names must be lowercase and cannot contain special characters.\nSo please name your design accordingly, like:"
}

View file

@ -2,26 +2,26 @@
"author": "Autor",
"githubRepo": "Repositorio GitHub",
"packageManager": "Gestor de paquetes",
"patternName": "Nombre del patrón",
"patternType": "Tipo de patrón",
"patternCreated": "Tu esqueleto de patrón ha sido creado en",
"designName": "Design name",
"designType": "Design type",
"designCreated": "Your design skeleton has been created at",
"runTheseCommands": "Para empezar, ejecuta este comando",
"startRollup": "En una terminal, inicia el paquete de rollup en modo reloj",
"startWebpack": "Entrará en la carpeta \"ejemplo\" e iniciará el entorno de desarrollo.",
"devDocsAvailableAt": "Documentación para desarrolladores está disponible en",
"talkToUs": "Para preguntas, comentarios o sugerencias, únete a nuestro servidor de Discord",
"draftYourPattern": "Traza tu patrón",
"testYourPattern": "Prueba tu patrón",
"draftYourDesign": "Draft your design",
"testYourDesign": "Test your design",
"draftThing": "Trazar {thing} ",
"testThing": "Prueba {thing}",
"renderInBrowser": "Haz clic abajo para mostrar el patrón en el navegador.",
"renderInBrowser": "Click below to render your design in the browser.",
"weWillReRender": "Cuando realices cambios, lo volveremos a trazar para ti.",
"youCan": "Puedes",
"enterMeasurements": "Introducir medidas a mano",
"preloadMeasurements": "Precarga un conjunto de medidas",
"size": "Tamaño",
"noRequiredMeasurements": "Este patrón no requiere tiene medidas",
"howtoAddMeasurements": "Para requerir mediciones, agrégalas a la sección de <b>mediciones</b> del archivo de configuración del patrón.",
"noRequiredMeasurements": "This design has no required measurements",
"howtoAddMeasurements": "To require measurements, add them to the <b>measurements</b> section of the design's configuration file.",
"seeDocsAt": "La documentación sobre este tema está disponible en",
"clearDesignMode": "Borrar modo de diseño",
"designMode": "Modo de diseño",
@ -30,5 +30,5 @@
"thingIsDisabled": "{thing} está deshabilitado",
"turnOn": "Encender",
"turnOff": "Apagar",
"validNameWarning": "Por favor, elija un nombre diferente ya que este nombre podría causar problemas.\nNosotros (re)usamos el nombre del patrón como el nombre del paquete NPM.\nLos nombres de los paquetes deben ser minúsculas y no pueden contener caracteres especiales.\nAsí que por favor nombre su patrón en consecuencia, como:"
"validNameWarning": "Please pick a different name as this name would cause problems.\nWe (re-)use the design name as the NPM package name.\nPackage names must be lowercase and cannot contain special characters.\nSo please name your design accordingly, like:"
}

View file

@ -2,26 +2,26 @@
"author": "Auteur",
"githubRepo": "Répertoire GitHub",
"packageManager": "Gestionnaire de package",
"patternName": "Nom de patron",
"patternType": "Type de patron",
"patternCreated": "Le squelette de votre patron a été créé sur",
"designName": "Design name",
"designType": "Design type",
"designCreated": "Your design skeleton has been created at",
"runTheseCommands": "Pour commencer, exécutez cette commande",
"startRollup": "Dans un terminal, démarrez le bundler rollup en mode watch",
"startWebpack": "Il entrera dans le dossier 'exemple' et démarrera l'environnement de développement.",
"devDocsAvailableAt": "La documentation pour développeur est disponible sur",
"talkToUs": "Pour des questions, commentaires ou suggestions, rejoignez notre serveur Discord",
"draftYourPattern": "Dessiner votre patron",
"testYourPattern": "Tester votre patron",
"draftYourDesign": "Draft your design",
"testYourDesign": "Test your design",
"draftThing": "Ébauche de {thing}",
"testThing": "Tester {thing}",
"renderInBrowser": "Cliquer ci-dessous pour afficher votre patron dans votre navigateur.",
"renderInBrowser": "Click below to render your design in the browser.",
"weWillReRender": "Lorsque vous effectuez des modifications, nous mettons à jour le rendu pour vous.",
"youCan": "Vous pouvez",
"enterMeasurements": "Entrer des mesures manuellement",
"preloadMeasurements": "Pré-charger un set de mesures",
"size": "Taille",
"noRequiredMeasurements": "Ce patron n'a pas de mesure requise",
"howtoAddMeasurements": "Pour rendre des mesures nécessaires, ajoutez-les à la section <b>measurements</b> du fichier de configuration du patron.",
"noRequiredMeasurements": "This design has no required measurements",
"howtoAddMeasurements": "To require measurements, add them to the <b>measurements</b> section of the design's configuration file.",
"seeDocsAt": "La documentation à ce sujet est disponible sur",
"clearDesignMode": "Vider le mode design",
"designMode": "Mode design",
@ -30,5 +30,5 @@
"thingIsDisabled": "{thing} est désactivé",
"turnOn": "Activer",
"turnOff": "Désactiver",
"validNameWarning": "Veuillez choisir un nom différent car ce nom causerait des problèmes.\nNous (ré-)utilisons le nom du modèle comme nom de paquet NPM.\nLes noms de paquets doivent être en minuscule et ne peuvent pas contenir de caractères spéciaux.\nVeuillez donc nommer votre patron en conséquence, comme :"
"validNameWarning": "Please pick a different name as this name would cause problems.\nWe (re-)use the design name as the NPM package name.\nPackage names must be lowercase and cannot contain special characters.\nSo please name your design accordingly, like:"
}

View file

@ -2,16 +2,16 @@
"author": "Auteur",
"githubRepo": "GitHub repository",
"packageManager": "Pakketbeheerder",
"patternName": "Patroon naam",
"patternType": "Patroon type",
"patternCreated": "Het skelet van je patroon is aangemaakt in",
"designName": "Design name",
"designType": "Design type",
"designCreated": "Your design skeleton has been created at",
"runTheseCommands": "Voer dit commando uit om aan de slag te gaan",
"startRollup": "In één terminal, start de rollup bundler in de volgmodus",
"startWebpack": "Het zal de map 'voorbeeld' invoeren en de ontwikkelingsomgeving starten.",
"devDocsAvailableAt": "Documentatie voor ontwikkelaars is beschikbaar op",
"talkToUs": "Voor vragen, feedback of suggesties, neem deel aan onze Discord server",
"draftYourPattern": "Teken je patroon",
"testYourPattern": "Test je patroon",
"draftYourDesign": "Draft your design",
"testYourDesign": "Test your design",
"draftThing": "Teken {thing}",
"testThing": "Test {thing}",
"renderInBrowser": "Klik hieronder om je patroon in de browser te tonen.",

View file

@ -2,26 +2,26 @@
"author": "Автор",
"githubRepo": "Репозиторій GitHub",
"packageManager": "Менеджер пакунків",
"patternName": "Назва викрійки",
"patternType": "Тип викрійки",
"patternCreated": "Ваш каркас викрійки створено у",
"designName": "Design name",
"designType": "Design type",
"designCreated": "Your design skeleton has been created at",
"runTheseCommands": "Щоб розпочати, запустіть цю команду",
"startRollup": "У одному терміналі запустіть ролап у режимі перегляду",
"startWebpack": "Це відкриє папку \"приклад\" та запустить девелопмент.",
"devDocsAvailableAt": "Документація для розробників доступна за адресою",
"talkToUs": "Для запитань, відгуків чи пропозицій, приєднуйтесь до нашого серверу в Discord",
"draftYourPattern": "Створіть Вашу викрійку",
"testYourPattern": "Протестувати Вашу викрійку",
"draftYourDesign": "Draft your design",
"testYourDesign": "Test your design",
"draftThing": "Створити {thing}",
"testThing": "Протестувати {thing}",
"renderInBrowser": "Натисніть нижче, щоб відобразити Вашу викрійку у браузері.",
"renderInBrowser": "Click below to render your design in the browser.",
"weWillReRender": "Коли Ви виконаєте зміни, ми перезавантажимо зображення для Вас.",
"youCan": "Ви можете",
"enterMeasurements": "Ввести вимірювання вручну",
"preloadMeasurements": "Завантажити набір мірок",
"size": "Розмір",
"noRequiredMeasurements": "Ця викрійка не потребує замірів",
"howtoAddMeasurements": "Щоб додати бажані мірки, додайте їх у секцію <b>заміри</b> у файлі конфігурації викрійки.",
"noRequiredMeasurements": "This design has no required measurements",
"howtoAddMeasurements": "To require measurements, add them to the <b>measurements</b> section of the design's configuration file.",
"seeDocsAt": "Документація по цій темі доступна за адресою",
"clearDesignMode": "Очистити режим дизайну",
"designMode": "Режим дизайну",
@ -30,5 +30,5 @@
"thingIsDisabled": "{thing} вимкнено",
"turnOn": "Увімкнути",
"turnOff": "Вимкнути",
"validNameWarning": "Будь ласка, оберіть іншу назву, бо дана назва може призвести до проблем.\nМи (повторно) використовуємо назву викрійки як NPM назву пакету.\nІмена пакунків повинні бути в нижньому регістрі та не можуть містити спеціальних символів.\nБудь ласка, назвіть викрійку згідно правил, наприклад:"
"validNameWarning": "Please pick a different name as this name would cause problems.\nWe (re-)use the design name as the NPM package name.\nPackage names must be lowercase and cannot contain special characters.\nSo please name your design accordingly, like:"
}

View file

@ -26,10 +26,10 @@
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'lib/*.mjs'",
"i18n-only": "SITE=\"new-design/shared\" node ../../sites/shared/prebuild/i18n-only.mjs",
"prebuild": "node ./prebuild.mjs",
"i18n-only": "SITE=\"new-design/shared\" node --conditions=internal ../../sites/shared/prebuild/i18n-only.mjs",
"prebuild": "node --conditions=internal ./prebuild.mjs",
"wbuild": "node build.mjs",
"prewbuild": "node ./prebuild.mjs",
"prewbuild": "node --conditions=internal ./prebuild.mjs",
"wbuild:all": "yarn wbuild",
"prebuild:all": "yarn prebuild",
"prewbuild:all": "yarn prewbuild"

View file

@ -20,7 +20,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",

View file

@ -20,7 +20,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"clean": "rimraf dist",

View file

@ -20,7 +20,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",

View file

@ -20,7 +20,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -28,7 +28,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -42,7 +45,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -27,7 +27,10 @@
"type": "module",
"module": "dist/index.mjs",
"exports": {
".": "./dist/index.mjs"
".": {
"internal": "./src/index.mjs",
"default": "./dist/index.mjs"
}
},
"scripts": {
"build": "node build.mjs",
@ -41,7 +44,7 @@
"tips": "node ../../scripts/help.mjs",
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
"testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
"wbuild": "node build.mjs",
"wbuild:all": "yarn wbuild"
},

View file

@ -274,14 +274,7 @@ function packageJson(pkg) {
}
pkgConf.keywords = pkgConf.keywords.concat(keywords(pkg))
pkgConf.scripts = scripts(pkg)
/*
* If we building a site simply override the module entry so that we don't have
* to build any dependencies, but instead can just load them from source
*/
if (SITEBUILD) {
pkgConf.module = 'src/index.mjs'
pkgConf.exports = { '.': './src/index.mjs' }
}
if (repo.exceptions.skipTests.indexOf(pkg.name) !== -1) {
pkgConf.scripts.test = `echo "skipping tests for ${pkg.name}"`
pkgConf.scripts.testci = `echo "skipping tests for ${pkg.name}"`

View file

@ -19,14 +19,13 @@
"clean": "rimraf prebuild/* && rimraf public/locales/*/* && rimraf public/feeds/* && rimraf ../shared/prebuild/data/*",
"dev": "next dev -p 8000",
"develop": "next dev -p 8000",
"i18n": "SITE=dev node ../shared/prebuild/i18n-only.mjs",
"i18n": "SITE=dev node --conditions=internal ../shared/prebuild/i18n-only.mjs",
"lint": "next lint",
"prebuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs",
"predev": "node --experimental-json-modules ./prebuild.mjs",
"prebuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs",
"serve": "pm2 start npm --name 'dev' -- run start",
"start": "yarn prebuild && yarn dev",
"wbuild": "next build",
"prewbuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs"
"prewbuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs"
},
"peerDependencies": {},
"dependencies": {

View file

@ -18,14 +18,13 @@
"cibuild": "yarn build",
"dev": "next dev -p 8000",
"develop": "next dev -p 8000",
"i18n": "SITE=lab node ../shared/prebuild/i18n-only.mjs",
"i18n": "SITE=lab node --conditions=internal ../shared/prebuild/i18n-only.mjs",
"e2e": "yarn playwright test",
"lint": "next lint",
"prebuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs",
"predev": "node --experimental-json-modules ./prebuild.mjs",
"prebuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs",
"start": "yarn prebuild && yarn dev",
"wbuild": "next build",
"prewbuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs"
"prewbuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs"
},
"peerDependencies": {},
"dependencies": {

View file

@ -19,13 +19,12 @@
"clean": "rimraf prebuild/* && rimraf public/locales/*/* && rimraf public/feeds/* && rimraf ../shared/prebuild/data/*",
"dev": "next dev -p 8000",
"develop": "next dev -p 8000",
"i18n": "SITE=org node ../shared/prebuild/i18n-only.mjs",
"i18n": "SITE=org node --conditions=internal ../shared/prebuild/i18n-only.mjs",
"lint": "next lint",
"prebuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs",
"predev": "node --experimental-json-modules ./prebuild.mjs",
"prebuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs",
"start": "yarn prebuild && yarn dev",
"wbuild": "next build",
"prewbuild": "cd ../../ && yarn sitebuildconfigure && cd - && node --experimental-json-modules ./prebuild.mjs"
"prewbuild": "node --conditions=internal --experimental-json-modules ./prebuild.mjs"
},
"peerDependencies": {},
"dependencies": {

View file

@ -1,8 +1,9 @@
import { isDegreeMeasurement } from 'config/measurements.mjs'
import { measurementAsMm, formatMm } from 'shared/utils.mjs'
import { measurementAsMm, formatMm, measurementAsUnits } from 'shared/utils.mjs'
import { Collapse } from 'shared/components/collapse.mjs'
import { PlusIcon, EditIcon } from 'shared/components/icons.mjs'
import { useState } from 'react'
import { NumberInput } from 'shared/components/workbench/menus/shared/inputs.mjs'
import { useState, useCallback } from 'react'
export const ns = ['account']
const Mval = ({ m, val = false, imperial = false, className = '' }) =>
@ -100,35 +101,35 @@ export const MeasieInput = ({
stopLoading = () => null,
}) => {
const isDegree = isDegreeMeasurement(m)
const factor = isDegree ? 1 : mset.imperial ? 25.4 : 10
const units = mset.imperial ? 'imperial' : 'metric'
const [val, setVal] = useState(() => {
const measie = mset.measies?.[m]
if (!measie) return ''
if (isDegree) return measie
return measurementAsUnits(measie, units)
})
const isValValid = (val) =>
typeof val === 'undefined' || val === '' ? null : val != false && !isNaN(val)
const isValid = (newVal) => (typeof newVal === 'undefined' ? isValValid(val) : isValValid(newVal))
const [val, setVal] = useState(mset.measies?.[m] / factor || '')
const [valid, setValid] = useState(isValid(mset.measies?.[m] / factor || ''))
const [valid, setValid] = useState(null)
// Update onChange
const update = (evt) => {
setVal(evt.target.value)
const update = useCallback(
(validVal, rawVal) => {
setValid(validVal)
setVal(validVal || rawVal)
const useVal = isDegree
? evt.target.value
: measurementAsMm(evt.target.value, mset.imperial ? 'imperial' : 'metric')
const validUpdate = isValid(useVal)
setValid(validUpdate)
if (validUpdate && typeof onUpdate === 'function') {
onUpdate(m, useVal)
}
}
if (validVal && typeof onUpdate === 'function') {
const useVal = isDegree ? validVal : measurementAsMm(validVal, units)
onUpdate(m, useVal)
}
},
[isDegree, setValid, setVal, onUpdate, units, m]
)
const save = async () => {
// FIXME
startLoading()
const measies = {}
measies[m] = val * factor
measies[m] = isDegree ? val : measurementAsMm(val, units)
const result = await backend.updateSet(mset.id, { measies })
if (result.success) {
refresh()
@ -137,7 +138,7 @@ export const MeasieInput = ({
stopLoading()
}
const fraction = (i, base) => update({ target: { value: Math.floor(val) + i / base } })
const fraction = (i, base) => update(Math.floor(('' + val).split(/[\s.]/)[0]) + i / base)
if (!m) return null
@ -147,48 +148,41 @@ export const MeasieInput = ({
<label className="shrink-0 grow max-w-full">
{children}
<span className="input-group">
<input
type="number"
step={mset.imperial && !isDegree ? 0.03125 : 0.1}
className={`
input input-bordered text-base-content border-r-0 w-full
${valid === false && 'input-error'}
${valid === true && 'input-success'}
`}
<NumberInput
className={`border-r-0 w-full`}
value={val}
onChange={update}
onUpdate={update}
onMount={setValid}
/>
{mset.imperial ? (
<span
className={`bg-transparent border-y w-20
${valid === false && 'border-error text-neutral-content'}
${valid === true && 'border-success text-neutral-content'}
${valid === null && 'border-base-200 text-base-content'}
`}
>
<Mval
imperial={true}
val={val * 25.4}
m={m}
className="text-base-content bg-transparent text-success text-xs font-bold p-0"
/>
</span>
) : null}
<span
className={`bg-transparent border-y w-20
${valid === false && 'border-error text-neutral-content'}
${valid && 'border-success text-neutral-content'}
${valid === null && 'border-base-200 text-base-content'}
`}
>
<Mval
imperial={mset.imperial}
val={isDegree ? val : measurementAsMm(val, units)}
m={m}
className="text-base-content bg-transparent text-success text-xs font-bold p-0"
/>
</span>
<span
role="img"
className={`bg-transparent border-y
${valid === false && 'border-error text-neutral-content'}
${valid === true && 'border-success text-neutral-content'}
${valid && 'border-success text-neutral-content'}
${valid === null && 'border-base-200 text-base-content'}
`}
>
{valid === true && '👍'}
{valid && '👍'}
{valid === false && '🤔'}
</span>
<span
className={`w-14 text-center
${valid === false && 'bg-error text-neutral-content'}
${valid === true && 'bg-success text-neutral-content'}
${valid && 'bg-success text-neutral-content'}
${valid === null && 'bg-base-200 text-base-content'}
`}
>

View file

@ -35,10 +35,14 @@ saveYourPattern: Speichere dein Muster
giveItAName: Gib ihm einen Namen
changeMeasies: Muster ändern Messungen
editCurrentMeasies: Aktuelle Messwerte bearbeiten
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Wähle ein neues Maßnahmeset
weLackSomeMeasies: Uns fehlen { nr } Messungen, um dieses Muster zu erstellen
youCanPickOrEnter: Du kannst entweder einen Satz Messungen auswählen oder sie von Hand eingeben, aber ohne diese Messungen können wir nicht weitermachen.
measiesOk: Wir haben alle erforderlichen Maße, um dieses Muster zu erstellen.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Für den Druck exportieren
exportForEditing: Für die Bearbeitung exportieren
exportAsData: Als Daten exportieren

View file

@ -35,10 +35,14 @@ saveYourPattern: Save your pattern
giveItAName: Give it a name
changeMeasies: Change Pattern Measurements
editCurrentMeasies: Edit Current Measurements
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Choose a New Measurements Set
weLackSomeMeasies: We lack { nr } measurements to create this pattern
youCanPickOrEnter: You can either pick a measurements set, or enter them by hand, but we cannot proceed without these measurements.
measiesOk: We have all required measurements to create this pattern.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Export for printing
exportForEditing: Export for editing
exportAsData: Export as data

View file

@ -35,10 +35,14 @@ saveYourPattern: Guarda tu patrón
giveItAName: Dale un nombre
changeMeasies: Mediciones del patrón de cambio
editCurrentMeasies: Editar medidas actuales
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Elegir un nuevo conjunto de medidas
weLackSomeMeasies: Nos faltan las medidas de { nr } para crear este patrón
youCanPickOrEnter: Puedes elegir un conjunto de medidas o introducirlas a mano, pero no podemos proceder sin estas medidas.
measiesOk: Tenemos todas las medidas necesarias para crear este patrón.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Exportar para impresión
exportForEditing: Exportar para editar
exportAsData: Exportar como datos

View file

@ -35,10 +35,14 @@ saveYourPattern: Sauvegarde ton modèle
giveItAName: Donne-lui un nom
changeMeasies: Mesures du schéma de changement
editCurrentMeasies: Modifier les mesures actuelles
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Choisis un nouvel ensemble de mesures
weLackSomeMeasies: Il nous manque { nr } pour créer ce modèle
youCanPickOrEnter: Tu peux soit choisir un ensemble de mesures, soit les saisir à la main, mais nous ne pouvons pas procéder sans ces mesures.
measiesOk: Nous avons toutes les mesures requises pour créer ce modèle.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Exporter pour l'impression
exportForEditing: Exporter pour édition
exportAsData: Exporter en tant que données

View file

@ -1,3 +1,4 @@
import { useCallback, useMemo } from 'react'
// Components
import { OptionsIcon } from 'shared/components/icons.mjs'
import { optionsMenuStructure, optionType } from 'shared/utils.mjs'
@ -71,9 +72,17 @@ export const DesignOptions = ({
DynamicDocs = false,
}) => {
const menuNs = [`o_${design}`, ...ns]
const optionsMenu = optionsMenuStructure(patternConfig.options)
const getDocsPath = (option) =>
`designs/${design}/options${option ? '/' + option.toLowerCase() : ''}`
const optionsMenu = useMemo(() => optionsMenuStructure(patternConfig.options), [patternConfig])
const updateFunc = useCallback(
(name, value) => update.settings(['options', ...name], value),
[update]
)
// FIXME How do we find inherited docs?
const getDocsPath = useCallback(
(option) => `designs/${design}/options${option ? '/' + option.toLowerCase() : ''}`,
[design]
)
return (
<WorkbenchMenu
@ -91,7 +100,7 @@ export const DesignOptions = ({
language,
ns: menuNs,
passProps: { settings, patternConfig },
updateFunc: (name, value) => update.settings(['options', ...name], value),
updateFunc,
}}
/>
)

View file

@ -1,5 +1,11 @@
import { useCallback, useMemo, useState, useEffect } from 'react'
import { round, measurementAsMm, measurementAsUnits, formatFraction128 } from 'shared/utils.mjs'
import { useCallback, useMemo, useState, useEffect, useRef } from 'react'
import {
round,
measurementAsMm,
measurementAsUnits,
formatFraction128,
fractionToDecimal,
} from 'shared/utils.mjs'
import { ChoiceButton } from 'shared/components/choice-button.mjs'
import debounce from 'lodash.debounce'
@ -12,27 +18,142 @@ import debounce from 'lodash.debounce'
* Inputs that deal with more specific use cases should wrap one of the above base inputs
*******************************************************************************************/
/** Regex to validate that an input is a number */
const numberInputMatchers = {
0: /^-?[0-9]*[.,eE]?[0-9]+$/, // match a single decimal separator
1: /^-?[0-9]*(\s?[0-9]+\/|[.,eE])?[0-9]+$/, // match a single decimal separator or fraction
}
/**
* Validate and parse a value that should be a number
* @param {any} val the value to validate
* @param {Boolean} allowFractions should fractions be considered valid input?
* @param {Number} min the minimum allowable value
* @param {Number} max the maximum allowable value
* @return {null|false|Number} null if the value is empty,
* false if the value is invalid,
* or the value parsed to a number if it is valid
*/
const validateVal = (val, allowFractions = true, min = -Infinity, max = Infinity) => {
// if it's empty, we're neutral
if (typeof val === 'undefined' || val === '') return null
// make sure it's a string
val = ('' + val).trim()
// get the appropriate match pattern and check for a match
const matchPattern = numberInputMatchers[Number(allowFractions)]
if (!val.match(matchPattern)) return false
// replace comma with period
const parsedVal = val.replace(',', '.')
// if fractions are allowed, parse for fractions, otherwise use the number as a value
const useVal = allowFractions ? fractionToDecimal(parsedVal) : parsedVal
// check that it's a number and it's in the range
if (isNaN(useVal) || useVal > max || useVal < min) return false
// all checks passed. return the parsed value
return useVal
}
/**
* A number input that accepts comma or period decimal separators.
* Because our use case is almost never going to include thousands, we're using a very simple way of accepting commas:
* The validator checks for the presence of a single comma or period followed by numbers
* The parser replaces a single comma with a period
*
* optionally accepts fractions
* @param {Number} options.val the value of the input
* @param {Function} options.onUpdate a function to handle when the value is updated to a valid value
* @param {Boolean} options.fractions should the input allow fractional input
*/
export const NumberInput = ({
value,
onUpdate,
onMount,
className,
fractions = true,
min = -Infinity,
max = Infinity,
}) => {
const valid = useRef(validateVal(value, fractions, min, max))
// this is the change handler that will be debounced by the debounce handler
// we check validity inside this debounced function because
// we need to call the debounce handler on change regardless of validity
// if we don't, the displayed value won't update
const handleChange = useCallback(
(newVal) => {
// only actually update if the value is valid
if (typeof onUpdate === 'function') {
onUpdate(valid.current, newVal)
}
},
[onUpdate, valid]
)
// get a debounce handler
const { debouncedHandleChange, displayVal } = useDebouncedHandlers({ handleChange, val: value })
// onChange
const onChange = useCallback(
(evt) => {
const newVal = evt.target.value
// set validity so it will display
valid.current = validateVal(newVal, fractions, min, max)
// handle the change
debouncedHandleChange(newVal)
},
[debouncedHandleChange, fractions, min, max, valid]
)
useEffect(() => {
if (typeof onMount === 'function') {
console.log('mount', valid.current)
onMount(valid)
}
}, [onMount])
return (
<input
type="text"
inputMode="number"
className={`input ${className || 'input-sm input-bordered grow text-base-content'}
${valid.current === false && 'input-error'}
${valid.current && 'input-success'}
`}
value={displayVal}
onChange={onChange}
/>
)
}
/** A component that shows a number input to edit a value */
const EditCount = (props) => (
<div className="form-control mb-2 w-full">
<label className="label">
<span className="label-text text-base-content">{props.min}</span>
<span className="label-text font-bold text-base-content">{props.current}</span>
<span className="label-text text-base-content">{props.max}</span>
</label>
<label className="input-group input-group-sm">
<input
type="number"
className={`
input input-sm input-bordered grow text-base-content
`}
value={props.current}
onChange={props.handleChange}
/>
<span className="text-base-content font-bold">#</span>
</label>
</div>
)
const EditCount = (props) => {
const { handleChange } = props
const onUpdate = useCallback(
(validVal) => {
if (validVal !== null && validVal !== false) handleChange(validVal)
},
[handleChange]
)
return (
<div className="form-control mb-2 w-full">
<label className="label">
<span className="label-text text-base-content">{props.min}</span>
<span className="label-text font-bold text-base-content">{props.current}</span>
<span className="label-text text-base-content">{props.max}</span>
</label>
<label className="input-group input-group-sm">
<NumberInput value={props.current} onUpdate={onUpdate} min={props.min} max={props.max} />
<span className="text-base-content font-bold">#</span>
</label>
</div>
)
}
/**
* A hook to get the change handler for an input.
@ -138,12 +259,12 @@ export const BoolInput = (props) => {
return <ListInput {...props} config={boolConfig} />
}
export const useDebouncedHandlers = ({ handleChange, changed, current, config }) => {
export const useDebouncedHandlers = ({ handleChange = () => {}, val }) => {
// hold onto what we're showing as the value so that the input doesn't look unresponsive
const [displayVal, setDisplayVal] = useState(changed ? current : config.dflt)
const [displayVal, setDisplayVal] = useState(val)
// the debounce function needs to be it's own memoized value so we can flush it on unmount
const debouncer = useMemo(() => debounce(handleChange, 200), [handleChange])
const debouncer = useMemo(() => debounce(handleChange, 300), [handleChange])
// this is the change handler
const debouncedHandleChange = useCallback(
@ -161,8 +282,8 @@ export const useDebouncedHandlers = ({ handleChange, changed, current, config })
// set the display val to the current value when it gets changed
useEffect(() => {
setDisplayVal(changed ? current : config.dflt)
}, [changed, current, config])
setDisplayVal(val)
}, [val])
return { debouncedHandleChange, displayVal }
}
@ -203,9 +324,7 @@ export const SliderInput = ({
const { debouncedHandleChange, displayVal } = useDebouncedHandlers({
handleChange,
current,
changed,
config,
val: changed ? current : config.dflt,
})
return (
@ -216,7 +335,7 @@ export const SliderInput = ({
<EditCount
{...{
current: displayVal,
handleChange: (evt) => debouncedHandleChange(evt.target.value),
handleChange,
min,
max,
t,
@ -254,20 +373,44 @@ export const SliderInput = ({
)
}
/**
* round a value to the correct number of decimal places to display all supplied digits after multiplication
* this is a workaround for floating point errors
* examples:
* roundPct(0.72, 100) === 72
* roundPct(7.5, 0.01) === 0.075
* roundPct(7.50, 0.01) === 0.0750
* @param {Number} num the number to be operated on
* @param {Number} factor the number to multiply by
* @return {Number} the given num multiplied by the factor, rounded appropriately
*/
const roundPct = (num, factor) => {
// stringify
const str = '' + num
// get the index of the decimal point in the number
const decimalIndex = str.indexOf('.')
// get the number of places the factor moves the decimal point
const factorPlaces = factor > 0 ? Math.ceil(Math.log10(factor)) : Math.floor(Math.log10(factor))
// the number of places needed is the number of digits that exist after the decimal minus the number of places the decimal point is being moved
const numPlaces = Math.max(0, str.length - (decimalIndex + factorPlaces))
return round(num * factor, numPlaces)
}
/** A {@see SliderInput} to handle percentage values */
export const PctInput = ({ current, changed, updateFunc, config, ...rest }) => {
const factor = 100
let pctCurrent = changed ? current * factor : current
let pctCurrent = changed ? roundPct(current, factor) : current
const pctUpdateFunc = useCallback(
(path, newVal) => updateFunc(path, newVal === undefined ? undefined : newVal / factor),
[updateFunc, factor]
(path, newVal) =>
updateFunc(path, newVal === undefined ? undefined : roundPct(newVal, 1 / factor)),
[updateFunc]
)
return (
<SliderInput
{...{
...rest,
config: { ...config, dflt: config.dflt * factor },
config: { ...config, dflt: roundPct(config.dflt, factor) },
current: pctCurrent,
updateFunc: pctUpdateFunc,
suffix: '%',
@ -279,7 +422,16 @@ export const PctInput = ({ current, changed, updateFunc, config, ...rest }) => {
}
/** A {@see SliderInput} to handle degree values */
export const DegInput = (props) => <SliderInput {...props} suffix="°" valFormatter={round} />
export const DegInput = (props) => {
const { updateFunc } = props
const degUpdateFunc = useCallback(
(path, newVal) => {
updateFunc(path, newVal === undefined ? undefined : Number(newVal))
},
[updateFunc]
)
return <SliderInput {...props} suffix="°" valFormatter={round} updateFunc={degUpdateFunc} />
}
export const MmInput = (props) => {
const { units, updateFunc, current, config } = props

View file

@ -1,5 +1,5 @@
// Hooks
import { useEffect, useState, useCallback } from 'react'
import { useEffect, useState, useCallback, useMemo } from 'react'
import { useTranslation } from 'next-i18next'
import { useView } from 'shared/hooks/use-view.mjs'
import { usePatternSettings } from 'shared/hooks/use-pattern-settings.mjs'
@ -103,32 +103,34 @@ export const Workbench = ({ design, Design, DynamicDocs }) => {
}, [Design, settings.measurements, mounted, view, setView])
// Helper methods for settings/ui updates
const update = {
settings: (path, val) => setSettings(objUpdate({ ...settings }, path, val)),
ui: (path, val) => setUi(objUpdate({ ...ui }, path, val)),
toggleSa: () => {
const sa = settings.samm || (account.imperial ? 15.3125 : 10)
if (settings.sabool)
setSettings(
objUpdate({ ...settings }, [
[['sabool'], 0],
[['sa'], 0],
[['samm'], sa],
])
)
else {
const sa = settings.samm || (account.imperial ? 15.3125 : 10)
setSettings(
objUpdate({ ...settings }, [
[['sabool'], 1],
[['sa'], sa],
[['samm'], sa],
])
)
}
},
setControl: controlState.update,
}
const update = useMemo(
() => ({
settings: (path, val) =>
setSettings((curSettings) => objUpdate({ ...curSettings }, path, val)),
ui: (path, val) => setUi((curUi) => objUpdate({ ...curUi }, path, val)),
toggleSa: () => {
setSettings((curSettings) => {
const sa = curSettings.samm || (account.imperial ? 15.3125 : 10)
if (curSettings.sabool)
return objUpdate({ ...curSettings }, [
[['sabool'], 0],
[['sa'], 0],
[['samm'], sa],
])
else {
return objUpdate({ ...curSettings }, [
[['sabool'], 1],
[['sa'], sa],
[['samm'], sa],
])
}
})
},
setControl: controlState.update,
}),
[setSettings, setUi, account, controlState]
)
// wait for mount. this helps prevent hydration issues
if (!mounted) return <ModalSpinner />

View file

@ -35,10 +35,14 @@ saveYourPattern: Je patroon opslaan
giveItAName: Geef het een naam
changeMeasies: Verander patroon metingen
editCurrentMeasies: Huidige metingen bewerken
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Kies een nieuwe meetset
weLackSomeMeasies: We missen { nr } metingen om dit patroon te maken
youCanPickOrEnter: Je kunt een meetset kiezen of ze met de hand invoeren, maar zonder deze metingen kunnen we niet verder.
measiesOk: We hebben alle benodigde afmetingen om dit patroon te maken.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Exporteren om te printen
exportForEditing: Exporteren om te bewerken
exportAsData: Exporteer als data

View file

@ -35,10 +35,14 @@ saveYourPattern: Збережіть свій шаблон
giveItAName: Дайте йому ім'я.
changeMeasies: Вимірювання зміни шаблону
editCurrentMeasies: Редагувати поточні вимірювання
editCurrentMeasiesHeader: Edit Pattern Measurements
editCurrentMeasiesDesc: Changes you make here will not be saved to your measurements sets, and will only affect this pattern.
chooseNewSet: Виберіть новий набір вимірювань
weLackSomeMeasies: Нам не вистачає { nr } вимірів для створення цього шаблону
youCanPickOrEnter: Ви можете вибрати набір вимірів або ввести їх вручну, але без цих вимірів ми не зможемо продовжити роботу.
measiesOk: У нас є всі необхідні виміри для створення цієї моделі.
seeMissingMeasies: See missing measurements
appliedMeasies: We applied a new measurements set to this pattern.
exportForPrinting: Експортувати для друку
exportForEditing: Експортувати для коригування
exportAsData: Експорт даних

View file

@ -1,8 +1,12 @@
import { useTranslation } from 'next-i18next'
import { analyzeDraftLogLine } from './errors.mjs'
import Markdown from 'react-markdown'
import {
ClearAllButton,
ns as coreMenuNs,
} from 'shared/components/workbench/menus/core-settings/index.mjs'
export const ns = ['logs']
export const ns = ['logs', ...coreMenuNs]
const colors = {
error: 'error',
@ -68,7 +72,7 @@ const extractLogs = (pattern) => {
return logs
}
export const LogView = ({ pattern, settings }) => {
export const LogView = ({ pattern, settings, setSettings }) => {
const { t } = useTranslation(ns)
try {
@ -80,7 +84,10 @@ export const LogView = ({ pattern, settings }) => {
return (
<div className="max-w-4xl mx-auto px-4 pb-8">
<h1>{t('logs')}</h1>
<div className="flex">
<h1 className="grow">{t('logs')}</h1>
<ClearAllButton setSettings={setSettings} />
</div>
{Object.entries(logs).map(([type, lines], key) => (
<DraftLogs key={key} {...{ type, lines, t }} />
))}

View file

@ -1,7 +1,7 @@
import { MeasieInput, ns as inputNs } from 'shared/components/sets/measie-input.mjs'
import { useTranslation } from 'next-i18next'
export const ns = ['wbmeasies', ...inputNs]
export const ns = ['workbench', ...inputNs]
export const MeasiesEditor = ({ Design, settings, update }) => {
const { t } = useTranslation(ns)
@ -13,6 +13,8 @@ export const MeasiesEditor = ({ Design, settings, update }) => {
return (
<div>
<h2>{t('editCurrentMeasiesHeader')}</h2>
<p>{t('editCurrentMeasiesDesc')}</p>
{Design.patternConfig.measurements.map((m) => (
<MeasieInput {...{ t, m, mset, onUpdate }} key={m}>
<span className="label">{t(m)}</span>

View file

@ -8,11 +8,11 @@ import { designMeasurements } from 'shared/utils.mjs'
import { useTranslation } from 'next-i18next'
import { useToast } from 'shared/hooks/use-toast.mjs'
export const ns = ['wbmeasies', ...authNs, setsNs]
export const ns = [...authNs, setsNs]
const tabNames = ['chooseNew', 'editCurrent']
const tabNames = ['chooseNewSet', 'editCurrentMeasies']
export const MeasiesView = ({ design, Design, settings, update, missingMeasurements, setView }) => {
const { t } = useTranslation(['wbmeasies'])
const { t } = useTranslation(['workbench'])
const toast = useToast()
const tabs = tabNames.map((n) => t(n)).join(',')
@ -23,7 +23,7 @@ export const MeasiesView = ({ design, Design, settings, update, missingMeasureme
[['units'], set.imperial ? 'imperial' : 'metric'],
])
setView('draft')
toast.success(t('updatedMeasurements'))
toast.success(t('appliedMeasies'))
}
return (

View file

@ -1,5 +1,5 @@
authRequired: Authentifizierung erforderlich
membersOnly: Dieser Inhalt ist nur für FreeSewing-Mitglieder zugänglich.
membersOnly: This functionality requires a FreeSewing account.
signUp: Anmelden
signIn: Eintragen
statusUnknown: Warnung zum Kontostatus

View file

@ -1,5 +1,5 @@
authRequired: Autenticación necesaria
membersOnly: Este contenido sólo es accesible para los miembros de FreeSewing.
membersOnly: This functionality requires a FreeSewing account.
signUp: Inscríbete
signIn: Regístrate
statusUnknown: Advertencia sobre el estado de la cuenta

Some files were not shown because too many files have changed in this diff Show more