@johnmorrisdotca/dougu-sports 0.5.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +7 -5
- package/dist/emblems/ball/ball.core.d.ts +14 -0
- package/dist/emblems/ball/ball.family.panelled.d.ts +8 -2
- package/dist/emblems/ball/ball.family.panelled.js +34 -8
- package/dist/emblems/ball/ball.soccer.era.d.ts +1 -1
- package/dist/emblems/ball/ball.soccer.era.js +14 -9
- package/dist/emblems/ball/ball.volleyball.flag.d.ts +25 -0
- package/dist/emblems/ball/ball.volleyball.flag.js +41 -15
- package/dist/emblems/emblem.core.d.ts +3 -0
- package/dist/emblems/emblem.descriptions.js +22 -14
- package/dist/emblems/emblem.ids.d.ts +3 -3
- package/dist/emblems/emblem.ids.js +4 -4
- package/dist/emblems/gear/gear.budo.d.ts +63 -0
- package/dist/emblems/gear/gear.budo.js +175 -34
- package/dist/emblems/gear/gear.budo.steps.d.ts +35 -0
- package/dist/emblems/gear/gear.budo.steps.js +146 -0
- package/dist/emblems/gear/gear.core.js +19 -8
- package/dist/emblems/gear/gear.index.js +3 -2
- package/dist/emblems/sport/judo.js +3 -3
- package/dist/emblems/sport/karate.js +2 -2
- package/dist/emblems-entry.d.ts +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,43 @@ All notable changes to this project are written here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.7.0] - 2026-10-14
|
|
10
|
+
|
|
11
|
+
Ten national volleyballs that can be told apart, a 2010-style grooved ball that reads, and six pictures of how a judo belt is tied. 269 emblems.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **The national volleyballs have a layout of their own, not only their colours.** Japan, Poland, Canada, the USA, the Netherlands and Serbia were all a red with white and read alike at 16 pixels. Now each country lays its colours out differently (`VOLLEYBALL_PLANS` in `ball.volleyball.flag.ts`: 18 letters, one for each panel): Japan is white with one broad crimson band round one side, across the front and over the top; Canada is red with a white stripe down the front and the back, like the flag's pale; the USA has a navy field on two opposite sides and red and white stripes on the rest; Italy is green on one side, red on the other and striped across the front; Poland stands on a corner of the layout with white round the top and red round the bottom, as the flag is cut; France has three big fields, blue, white and red; Serbia has the flag's bands from the top down; the Netherlands has thin stripes of the three colours on every face; Germany has six big fields. Brazil and `ball:volleyball-colours` are as they were. Only colours: nothing is drawn on a ball. `colors`, `tint` and `accent` still replace the first, second and third colour wherever they sit.
|
|
16
|
+
- **`ball:soccer-2010-grooved` is stronger.** White and teal panels (`#0f9b8e`) instead of pale grey and mint, deep dark grooves for the seams with a lit lip, and two rings of contour lines in each panel, dark teal on the white panels and white on the teal ones. It reads on a light page, on a dark one, at 32 pixels and turned. `accent` still replaces the teal.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **`gear:obi-step-1` to `gear:obi-step-6`, and `obiStep(step, options)`**: how a judo belt is tied, in six close-ups of the jacket of `gear:judogi` (lapels crossed left over right, 右前) with the belt at each stage: 1 the middle of the belt against the belly, 2 wrapped twice round the waist, 3 the ends crossed in front, 4 one end tucked up under both wraps, 5 the flat square knot (本結び), 6 both ends hanging even. A red number and a few red marks say what to look at. `tint` is the jacket and `accent` the belt. Six ids rather than a `step` option, because this package makes a drawing that differs by more than a colour an id (the suits, the back views, the belts) and keeps options for colours and fill-ins. Names and captions in English and Japanese, the pages [docs/obi-steps.md](docs/obi-steps.md) and [in Japanese](docs/obi-steps.ja.md), and `JAPANESE_IDS` has 41 entries.
|
|
21
|
+
- Tests: every pair of national volleyballs differs by a mean CIE L\*a\*b\* distance of 35 or more with at least 7 panels clearly different, and no two share a layout; the grooved ball's contrast against a light and a dark page; the belt steps' order, their agreement with the judogi, their names and captions, and that they turn without clipping.
|
|
22
|
+
|
|
23
|
+
### Internal
|
|
24
|
+
|
|
25
|
+
- `paintEach18`, `panels18` and `ON_A_CORNER` in the panelled family (a colour for each of the 18 panels, and the layout stood on a corner of its cube); `judogiFlat(torso)` and `belt`'s `tail2` for the belt steps; and a piece's parts that share one transform are now drawn in one group, which makes a close-up smaller.
|
|
26
|
+
|
|
27
|
+
## [0.6.0] - 2026-10-14
|
|
28
|
+
|
|
29
|
+
A judogi has no short sleeves, and every judoka at an IJF event wears an official back number: the judo and karate drawings get their sleeves, and the judogi is drawn from behind with the back number sewn on. 263 emblems.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- **`sport:judo` drew elbow-length sleeves, and the flat `gear:judogi` sleeves stopped short of the hip.** The IJF's rule (C1.10) is that the sleeves cover the wrist bone completely, with room for the forearm all the way. The pictogram and the suit now hang their sleeves out and down to the hip, where the wrist is with the arms down, with a loose cuff and a stitched cuff hem, at every size (`sport:judo` still reads at 16 pixels). `test/judo.test.ts` measures it from the drawn paths: the cuff is at the hem or below, the outer edge as long as the jacket, the cuff at least a fifth as wide as the jacket is long.
|
|
34
|
+
- **`sport:karate` and `gear:karate-gi` drew elbow-length sleeves.** The WKF's rule (2.2.1 j) is half the forearm at least and the bend of the wrist at most, so they are now three-quarter length (longer than the elbow, a little shorter than a judogi's), with a wide cuff.
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **`gear:judogi-back` and `gear:judogi-blue-back`**: the white and the blue judogi laid flat and seen from behind, with the back number sewn on (large size, 38 by 39 cm, its top 3 cm under the collar): a white patch with the family name in white capitals on a band across the top, the three-letter country code under it, the rest blank for the sponsor, and a stitched edge. The belt is crossed behind the waist. They turn like the other suits.
|
|
39
|
+
- **The `backnumber` option**, `{ name, code, band }`, taken by `renderEmblem` and `emblemFrame` for the two back views (the type is `Backnumber`): the family name (capitals, 16 characters, accents are the plain letter), the country code (three letters) and the band (`blue`, `gold` for an Olympic champion, `red` for a world champion).
|
|
40
|
+
- The page [docs/judogi-back.md](docs/judogi-back.md) (and [in Japanese](docs/judogi-back.ja.md)), and the sources and what could not be confirmed in [docs/references.md](docs/references.md#the-ijf-back-number). No flag is drawn (the IJF's patch has none), and no logo of the IJF, of its supplier or of a sponsor.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- The pictures of the gear and of the judo suits are redrawn, with a new picture of the suits from the front and the back (`judogi-light.webp`, `judogi-dark.webp`).
|
|
45
|
+
|
|
9
46
|
## [0.5.2] - 2026-10-14
|
|
10
47
|
|
|
11
48
|
The README's pictures are redone, because npm shows only the README that was published: every picture now stands on one of the family's shared backgrounds, and the demo can put one behind an emblem.
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ The ball and the gear of every sport, trophies, medals, crests and the icon of e
|
|
|
52
52
|
</tr>
|
|
53
53
|
</table>
|
|
54
54
|
|
|
55
|
-
> **Status: preview.**
|
|
55
|
+
> **Status: preview.** 269 emblems: 24 trophies, 5 awards, 6 medals, 4 crests, a pictogram for each of the 38 sports, 116 balls and implements drawn in 3D, 8 printed pucks ([docs/pucks.md](./docs/pucks.md)), 67 pieces of gear (among them the Japanese sports and budo, [docs/japanese-sports.md](./docs/japanese-sports.md)) and a championship pennant; [docs/layout.md](./docs/layout.md) says where each goes. All of it is drawn for this package: no art is copied from another project.
|
|
56
56
|
|
|
57
57
|
## In 30 seconds
|
|
58
58
|
|
|
@@ -90,7 +90,7 @@ Put the string in a page (`element.innerHTML = svg`), write it to a file, or sen
|
|
|
90
90
|
- **One module per item**, so a bundler takes only what is imported; see [Use it in your project](#use-it-in-your-project).
|
|
91
91
|
- **Short names and helpers**: `"cup"` is `"trophy:cup"`, `"trophy:cup/line"` is the line style, and `crest`, `medal`, `sportIcon` and `pennant` draw a team's crest, a medal, a sport's icon and a championship pennant.
|
|
92
92
|
- **Typed ids**: `EmblemId` is a union of `award:*`, `trophy:*`, `medal:*`, `crest:*`, `ball:*`, `gear:*`, `sport:*` and `pennant:*` ids.
|
|
93
|
-
- **Japanese sports and budō** (道具 is the name): a sumo cup, a championship banner, and the war fan, belt, bamboo sword, kendo helmet, judo and karate suits, the white and blue judo suit flat and
|
|
93
|
+
- **Japanese sports and budō** (道具 is the name): a sumo cup, a championship banner, and the war fan, belt, bamboo sword, kendo helmet, judo and karate suits, the white and blue judo suit flat, folded and seen from behind with its back number ([docs/judogi-back.md](./docs/judogi-back.md)), the belts of every grade and six pictures of how the belt is tied ([docs/obi-steps.md](./docs/obi-steps.md)), long bow and arrow, with Japanese names that are the governing bodies' words; see [docs/japanese-sports.md](./docs/japanese-sports.md).
|
|
94
94
|
- **Generic by design**: no emblem carries a league's, a team's or a federation's name or mark.
|
|
95
95
|
- **Accessible**: every drawing is `role="img"` with a `<title>`; see [Accessibility](#accessibility).
|
|
96
96
|
- **Deterministic**: the same id and options give the same string; a gradient's id comes from its colour.
|
|
@@ -416,7 +416,7 @@ An emblem is a small object: `id`, `en` and `ja` names, a `source` (who drew it)
|
|
|
416
416
|
| `crest` | Four generic crests, tinted by a team's colours, with its letters | `src/emblems/crest/` |
|
|
417
417
|
| `ball` | 116 balls and implements, in 3D, each with its official size: soccer (in 32, 26, 18, 14, 12 and 6 panels, in three colourways, with futsal and beach soccer; [docs/soccer-balls.md](./docs/soccer-balls.md); and vintage leather, era-style and patterned balls, [docs/vintage-balls.md](./docs/vintage-balls.md)), basketball, baseball, tennis, rugby, the footballs, golf, the puck, the curling stone and the rest | `src/emblems/ball/` |
|
|
418
418
|
| `puck` | 8 printed pucks: the same puck with a print on its top face that turns with it (a flag and CANADA, a red leaf, stars and stripes, a player's name and number, a made-up signature, a souvenir), and a `face` option for any picture, emblem or flag code; [docs/pucks.md](./docs/pucks.md) | `src/emblems/ball/ball.puck.print.ts` |
|
|
419
|
-
| `gear` |
|
|
419
|
+
| `gear` | 67 pieces of equipment: sticks, rackets, skates, a glove, a helmet, nets and posts, a javelin, starting blocks, and for the Japanese sports a war fan, a sumo belt, a bamboo sword, a kendo helmet, the judo suit (white and blue, laid flat and folded, and from behind with its back number), the belts of every grade (white to red, the red-and-white belt, the women's black belt and the two-colour belts) and the six steps of tying one, a long bow, an arrow and a karate suit | `src/emblems/gear/` |
|
|
420
420
|
| `sport` | One pictogram for each of the thirty-eight sports | `src/emblems/sport/` |
|
|
421
421
|
| `pennant` | A felt championship pennant on a dowel, with a stitched edge, lettered with its words and its year | `src/emblems/pennant/` |
|
|
422
422
|
|
|
@@ -454,6 +454,7 @@ The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT
|
|
|
454
454
|
| `SPORT_NAMES` | The thirty-eight sports |
|
|
455
455
|
| `JAPANESE_IDS` | The ids of the Japanese sports and budo, together: sumo, kendo, judo, kyudo and karate, with their trophies and gear ([docs/japanese-sports.md](./docs/japanese-sports.md)) |
|
|
456
456
|
| `OBI_RANKS`, `obi(rank, options?)` | The colours of a belt from `white` to `red` (the kyu, black, the red-and-white belt, red), and the belt of a rank, or of a pair of ranks (a two-colour belt), drawn; `women: true` is the white stripe of the women's black belt |
|
|
457
|
+
| `obiStep(step, options?)`, `GEAR_OBI_STEP_1` to `GEAR_OBI_STEP_6`, `ObiStep` | One of the six steps of tying the judo belt, 1 to 6: the jacket in close-up with the belt at that stage and a red step number ([docs/obi-steps.md](./docs/obi-steps.md), [日本語](./docs/obi-steps.ja.md)); `tint` is the jacket and `accent` the belt |
|
|
457
458
|
| `JUDOGI_WHITE`, `JUDOGI_BLUE` | The two colours the IJF allows a judogi to be ([docs/japanese-sports.md](./docs/japanese-sports.md)) |
|
|
458
459
|
| `EMBLEM_DESCRIPTIONS` | The longer description of an emblem, in English and Japanese; `emblemInfo(id).description` is the one of an id |
|
|
459
460
|
| `EMBLEM_STYLES`, `EMBLEM_INK`, `EMBLEM_PAGE`, `METALS` | The styles, the ink and page colours the themes use, and the metals |
|
|
@@ -474,6 +475,7 @@ The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT
|
|
|
474
475
|
| `engrave` | Any text, up to three lines of 24 letters, Japanese included: cut into the face (see [Engrave an emblem](#engrave-an-emblem)) | none |
|
|
475
476
|
| `label`, `year`, `rank` | The words, the year (smaller, under them) and the number (the biggest line) to engrave when `engrave` is not given | none (a place badge's rank is its place) |
|
|
476
477
|
| `engraveBack` | The text of a medal's, ring's or banner's back, shown when it is turned over | a plain back |
|
|
478
|
+
| `backnumber` | `{ name, code, band }` for `gear:judogi-back` and `gear:judogi-blue-back`: the family name in capitals, the three letters of the National Olympic Committee, and `"blue"`, `"gold"` or `"red"` for the band ([docs/judogi-back.md](./docs/judogi-back.md)) | `TANAKA`, `JPN`, blue |
|
|
477
479
|
| `numberColor` | The colour of a pennant's lettering | the stitching's colour |
|
|
478
480
|
| `view` | `"front"` or `"back"`: which side of a pennant is drawn at rest | `"front"` |
|
|
479
481
|
| `locale` | `"en"`, `"ja"`: the language of the `<title>` | `"en"` |
|
|
@@ -482,7 +484,7 @@ The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT
|
|
|
482
484
|
|
|
483
485
|
`podium` and `awardCase` take their own options too (`width`, `style`, `theme`, `locale`, `title`, `desc`, and for the case `perRow`, `size` and `layout`), and `emblemDataUri`, `emblemSprite` and `bindTurn` theirs: see [docs/compose.md](./docs/compose.md) and [docs/turning.md](./docs/turning.md).
|
|
484
486
|
|
|
485
|
-
The types are `EmblemId`, `EmblemRef`, `EmblemOptions`, `EmblemLocale`, `FrameOptions`, `DataUriOptions`, `Sprite`, `SpriteOptions`, `UseOptions`, `SportEquipment`, `PodiumPlace`, `PodiumOptions`, `AwardItem`, `AwardCaseOptions`, `DisplayOptions`, `TurnControlOptions`, `TurnController`, `TurnAngles`, `TurnContainer`, `TurnEvent`, `EmblemStyle`, `EmblemTheme`, `Emblem`, `EmblemInfo`, `EmblemKind`, `EmblemSource`, `EmblemGroup`, `CrestOptions`, `CrestShape`, `PennantOptions`, `PennantId`, `MedalKind`, `LineupOptions`, `PieceSize`, `EmblemDescription`, `ObiRank`, `SportName`, the id types of each group (and `JapaneseId`), and the types of the models the emblems are drawn from (`LatheModel`, `FlatModel` and their parts).
|
|
487
|
+
The types are `EmblemId`, `EmblemRef`, `EmblemOptions`, `EmblemLocale`, `FrameOptions`, `DataUriOptions`, `Sprite`, `SpriteOptions`, `UseOptions`, `SportEquipment`, `PodiumPlace`, `PodiumOptions`, `AwardItem`, `AwardCaseOptions`, `DisplayOptions`, `TurnControlOptions`, `TurnController`, `TurnAngles`, `TurnContainer`, `TurnEvent`, `EmblemStyle`, `EmblemTheme`, `Emblem`, `EmblemInfo`, `EmblemKind`, `EmblemSource`, `EmblemGroup`, `CrestOptions`, `CrestShape`, `PennantOptions`, `PennantId`, `MedalKind`, `LineupOptions`, `PieceSize`, `Backnumber`, `EmblemDescription`, `ObiRank`, `SportName`, the id types of each group (and `JapaneseId`), and the types of the models the emblems are drawn from (`LatheModel`, `FlatModel` and their parts).
|
|
486
488
|
|
|
487
489
|
## Theming
|
|
488
490
|
|
|
@@ -602,7 +604,7 @@ Bug reports and ideas go in the [issues](https://github.com/johnmorrisdotca/doug
|
|
|
602
604
|
|
|
603
605
|
## Changes
|
|
604
606
|
|
|
605
|
-
See [CHANGELOG.md](./CHANGELOG.md). 0.5.1 redraws the judo suit, the belt and the football pictograms and adds the blue and folded suits and the belts of every grade (261 emblems: [docs/japanese-sports.md](./docs/japanese-sports.md)); 0.5.0 adds fifty balls: vintage leather soccer balls, era-style and shop-wall soccer balls, baseballs of other threads and volleyballs in national colours, with a `colors` option (244 emblems: [docs/vintage-balls.md](./docs/vintage-balls.md)); 0.4.0 adds eight printed pucks and a `face` option (194 emblems: [docs/pucks.md](./docs/pucks.md)); 0.3.0 adds nineteen soccer balls (26, 18, 14, 12 and 6 panels, winter orange and high-visibility yellow, futsal and beach soccer: 186 emblems); 0.2.1 draws every ball and implement to the rulebook's proportions; 0.2.0 is 167 emblems, every one drawn here, with the Japanese sports, engraving, a turn for every emblem and the compose helpers; 0.1.0 brought the first full set of 148; 0.0.1 was the first preview.
|
|
607
|
+
See [CHANGELOG.md](./CHANGELOG.md). 0.7.0 gives the national volleyballs layouts that tell them apart (Japan a crimson band, Poland white above and red below, the USA a navy field), strengthens the 2010-style grooved soccer ball, and adds six pictures of how the judo belt is tied, `gear:obi-step-1` to `gear:obi-step-6` (269 emblems: [docs/obi-steps.md](./docs/obi-steps.md)); 0.6.0 gives the judo suit and the karate suit their sleeves (a judogi has no short ones: they reach the wrist) and adds the judogi seen from behind with the IJF-style back number, a family name and a country code on a patch, with a `backnumber` option (269 emblems: [docs/judogi-back.md](./docs/judogi-back.md)); 0.5.1 redraws the judo suit, the belt and the football pictograms and adds the blue and folded suits and the belts of every grade (261 emblems: [docs/japanese-sports.md](./docs/japanese-sports.md)); 0.5.0 adds fifty balls: vintage leather soccer balls, era-style and shop-wall soccer balls, baseballs of other threads and volleyballs in national colours, with a `colors` option (244 emblems: [docs/vintage-balls.md](./docs/vintage-balls.md)); 0.4.0 adds eight printed pucks and a `face` option (194 emblems: [docs/pucks.md](./docs/pucks.md)); 0.3.0 adds nineteen soccer balls (26, 18, 14, 12 and 6 panels, winter orange and high-visibility yellow, futsal and beach soccer: 186 emblems); 0.2.1 draws every ball and implement to the rulebook's proportions; 0.2.0 is 167 emblems, every one drawn here, with the Japanese sports, engraving, a turn for every emblem and the compose helpers; 0.1.0 brought the first full set of 148; 0.0.1 was the first preview.
|
|
606
608
|
|
|
607
609
|
## Credits
|
|
608
610
|
|
|
@@ -25,6 +25,20 @@ export interface PieceOptions {
|
|
|
25
25
|
face?: PuckFace;
|
|
26
26
|
/** A puck: a renderer for the flag codes this package does not draw (`face.flag`), `(code, { shape, size, theme }) => svg`, the one taisen-brackets takes. Synchronous. */
|
|
27
27
|
flags?: FlagRenderer;
|
|
28
|
+
/** A judogi seen from behind: the back number on it (see `Backnumber`). The back views of the judogi (`gear:judogi-back`, `gear:judogi-blue-back`) take it; anything else ignores it. */
|
|
29
|
+
backnumber?: Backnumber;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The back number sewn on the back of a judogi (IJF Sport and Organisation Rules, C1.8): the competitor's family name and the three letters of the National Olympic Committee, on a white patch under a coloured band.
|
|
33
|
+
* Only `gear:judogi-back` and `gear:judogi-blue-back` take it; anything else ignores it.
|
|
34
|
+
*/
|
|
35
|
+
export interface Backnumber {
|
|
36
|
+
/** The family name, in capitals: letters, digits, spaces, hyphens and apostrophes, 16 characters at most (accents are drawn as the plain letter). Without it the patch reads `TANAKA`. */
|
|
37
|
+
name?: string;
|
|
38
|
+
/** The three letters of the National Olympic Committee (`CAN`, `JPN`, `USA`): letters only, capitals, 3 at most. Without it the patch reads `JPN`. */
|
|
39
|
+
code?: string;
|
|
40
|
+
/** The band the name is on: `blue` (the default), `gold` (an Olympic champion's) or `red` (a world champion's). */
|
|
41
|
+
band?: "blue" | "gold" | "red";
|
|
28
42
|
}
|
|
29
43
|
/** A turn: `yaw` degrees about the vertical axis (0 is the default view), `pitch` the tilt toward you, `roll` the turn about the line of sight. */
|
|
30
44
|
export interface BallFrameOptions extends PieceOptions {
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { type V3 } from "./ball.math.ts";
|
|
1
|
+
import { type M3, type V3 } from "./ball.math.ts";
|
|
2
2
|
import type { Surface } from "./ball.engine.ts";
|
|
3
|
+
/** The turn that stands the layout on a corner of its cube: the diagonal (1, 1, 1) becomes the ball's vertical axis, so the three faces round one corner are the top and the three round the opposite corner the bottom, and the ball turns about that diagonal. */
|
|
4
|
+
export declare const ON_A_CORNER: M3;
|
|
5
|
+
/** The 18 panels of a ball, painted and not outlined. `colourOf(face, strip)` is the colour of strip 0, 1 or 2 of face 0 to 5; the faces are the cube's +z, -z, +x, -x, +y and -y. */
|
|
6
|
+
export declare function paintEach18(s: Surface, colourOf: (face: number, strip: number) => string, rot?: M3): string;
|
|
3
7
|
/** The 18 panels of a ball, painted and not outlined. `colours[i]` is the three strips of face i, or one colour for the middle strip and one for the outer two. */
|
|
4
8
|
export declare function paint18(s: Surface, colours: ReadonlyArray<readonly [string, string]>): string;
|
|
5
9
|
/** The seams of the 18-panel layout, each once: the lines between strips and the twelve edges of the cube. */
|
|
6
|
-
export declare function seams18(): V3[][];
|
|
10
|
+
export declare function seams18(rot?: M3): V3[][];
|
|
7
11
|
/** The 18 panels of a ball. `colours[i]` is the three strips of face i, or one colour for the middle strip and one for the outer two. */
|
|
8
12
|
export declare function strips18(s: Surface, colours: ReadonlyArray<readonly [string, string]>, seam: string, width?: number): string;
|
|
13
|
+
/** The 18 panels of a ball, each with a colour of its own: `colours[face * 3 + strip]`, in the order of `paintEach18`. */
|
|
14
|
+
export declare function panels18(s: Surface, colours: readonly string[], seam: string, rot?: M3, width?: number): string;
|
|
9
15
|
/** The 8 panels of an octahedral ball: the octants, coloured by `pick(sx, sy, sz)`. */
|
|
10
16
|
export declare function octants8(s: Surface, pick: (sx: number, sy: number, sz: number) => string, seam: string, width?: number): string;
|
|
11
17
|
/** A darker seam colour for a main colour. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Balls made of curved panels: the 18-panel layout of a volleyball (six groups of three strips; the strips of a face run square to those of its neighbours), and the 8 panels of an octahedral ball.
|
|
2
2
|
// The strips are the faces of a cube mapped onto the sphere (a straight line on a face becomes an arc of a great circle), so every seam is a true great-circle arc.
|
|
3
|
-
import { arc, greatCircle, norm } from "./ball.math.js";
|
|
3
|
+
import { apply, arc, cross, dot, greatCircle, norm } from "./ball.math.js";
|
|
4
4
|
import { mix } from "./ball.core.js";
|
|
5
5
|
/** The six faces of the cube as: the axis the face looks along, its sign, the axis its strips run along, and the axis across them. Neighbouring faces run square to each other. */
|
|
6
6
|
const FACES = [
|
|
@@ -19,21 +19,42 @@ const onFace = (f, p, q) => {
|
|
|
19
19
|
v[f.q] = q;
|
|
20
20
|
return norm(v);
|
|
21
21
|
};
|
|
22
|
-
/** The
|
|
23
|
-
export
|
|
22
|
+
/** The turn that stands the layout on a corner of its cube: the diagonal (1, 1, 1) becomes the ball's vertical axis, so the three faces round one corner are the top and the three round the opposite corner the bottom, and the ball turns about that diagonal. */
|
|
23
|
+
export const ON_A_CORNER = (() => {
|
|
24
|
+
const from = norm([1, 1, 1]);
|
|
25
|
+
const axis = norm(cross(from, [0, 1, 0]));
|
|
26
|
+
const c = dot(from, [0, 1, 0]);
|
|
27
|
+
const s = Math.sqrt(1 - c * c);
|
|
28
|
+
const [x, y, z] = axis;
|
|
29
|
+
const k = 1 - c;
|
|
30
|
+
return [
|
|
31
|
+
[c + x * x * k, x * y * k - z * s, x * z * k + y * s],
|
|
32
|
+
[y * x * k + z * s, c + y * y * k, y * z * k - x * s],
|
|
33
|
+
[z * x * k - y * s, z * y * k + x * s, c + z * z * k],
|
|
34
|
+
];
|
|
35
|
+
})();
|
|
36
|
+
const turned = (rot, v) => (rot === undefined ? v : apply(rot, v));
|
|
37
|
+
/** The 18 panels of a ball, painted and not outlined. `colourOf(face, strip)` is the colour of strip 0, 1 or 2 of face 0 to 5; the faces are the cube's +z, -z, +x, -x, +y and -y. */
|
|
38
|
+
export function paintEach18(s, colourOf, rot) {
|
|
24
39
|
let out = "";
|
|
25
40
|
FACES.forEach((f, fi) => {
|
|
26
|
-
const [outer, middle] = colours[fi % colours.length];
|
|
27
41
|
const bounds = [-1, -SPLIT, SPLIT, 1];
|
|
28
42
|
for (let i = 0; i < 3; i++) {
|
|
29
|
-
const ring = [onFace(f, -1, bounds[i]), onFace(f, 1, bounds[i]), onFace(f, 1, bounds[i + 1]), onFace(f, -1, bounds[i + 1])];
|
|
30
|
-
out += s.panel(ring, i
|
|
43
|
+
const ring = [onFace(f, -1, bounds[i]), onFace(f, 1, bounds[i]), onFace(f, 1, bounds[i + 1]), onFace(f, -1, bounds[i + 1])].map((v) => turned(rot, v));
|
|
44
|
+
out += s.panel(ring, colourOf(fi, i), { n: 6, ink: false });
|
|
31
45
|
}
|
|
32
46
|
});
|
|
33
47
|
return out;
|
|
34
48
|
}
|
|
49
|
+
/** The 18 panels of a ball, painted and not outlined. `colours[i]` is the three strips of face i, or one colour for the middle strip and one for the outer two. */
|
|
50
|
+
export function paint18(s, colours) {
|
|
51
|
+
return paintEach18(s, (fi, i) => {
|
|
52
|
+
const [outer, middle] = colours[fi % colours.length];
|
|
53
|
+
return i === 1 ? middle : outer;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
35
56
|
/** The seams of the 18-panel layout, each once: the lines between strips and the twelve edges of the cube. */
|
|
36
|
-
export function seams18() {
|
|
57
|
+
export function seams18(rot) {
|
|
37
58
|
const curves = [];
|
|
38
59
|
for (const f of FACES)
|
|
39
60
|
for (const q of [-SPLIT, SPLIT])
|
|
@@ -44,13 +65,18 @@ export function seams18() {
|
|
|
44
65
|
curves.push(arc(norm([a, -1, b]), norm([a, 1, b]), 12));
|
|
45
66
|
curves.push(arc(norm([-1, a, b]), norm([1, a, b]), 12));
|
|
46
67
|
}
|
|
47
|
-
return curves;
|
|
68
|
+
return rot === undefined ? curves : curves.map((c) => c.map((v) => turned(rot, v)));
|
|
48
69
|
}
|
|
49
70
|
/** The 18 panels of a ball. `colours[i]` is the three strips of face i, or one colour for the middle strip and one for the outer two. */
|
|
50
71
|
export function strips18(s, colours, seam, width = 1.1) {
|
|
51
72
|
const curves = seams18();
|
|
52
73
|
return paint18(s, colours) + s.strokes(curves, seam, width) + s.strokes(curves, "#fff", width * 0.35, { deco: true, opacity: 0.4, dx: 0.25, dy: 0.3 });
|
|
53
74
|
}
|
|
75
|
+
/** The 18 panels of a ball, each with a colour of its own: `colours[face * 3 + strip]`, in the order of `paintEach18`. */
|
|
76
|
+
export function panels18(s, colours, seam, rot, width = 1.1) {
|
|
77
|
+
const curves = seams18(rot);
|
|
78
|
+
return paintEach18(s, (fi, i) => colours[fi * 3 + i], rot) + s.strokes(curves, seam, width) + s.strokes(curves, "#fff", width * 0.35, { deco: true, opacity: 0.4, dx: 0.25, dy: 0.3 });
|
|
79
|
+
}
|
|
54
80
|
/** The 8 panels of an octahedral ball: the octants, coloured by `pick(sx, sy, sz)`. */
|
|
55
81
|
export function octants8(s, pick, seam, width = 1.1) {
|
|
56
82
|
let out = "";
|
|
@@ -11,7 +11,7 @@ export declare const BALL_SOCCER_1998_COLOURED_TRIAD: import("./ball.core.ts").P
|
|
|
11
11
|
export declare const BALL_SOCCER_2002_TRIANGLE_SWEEP: import("./ball.core.ts").Piece<BallSpec>;
|
|
12
12
|
/** The mid 2000s: the 14-panel propeller layout (six propellers and eight triangles), with a fine line following each curved seam inside the panel, and a small ring on each triangle. */
|
|
13
13
|
export declare const BALL_SOCCER_2006_PROPELLER: import("./ball.core.ts").Piece<BallSpec>;
|
|
14
|
-
/** The early 2010s: the 8-panel layout, an octahedron whose edges are bent into S curves, with grooves for seams and
|
|
14
|
+
/** The early 2010s: the 8-panel layout, an octahedron whose edges are bent into S curves, with deep grooves for seams and contour lines across each panel: white panels with teal lines and teal panels with white ones. */
|
|
15
15
|
export declare const BALL_SOCCER_2010_GROOVED: import("./ball.core.ts").Piece<BallSpec>;
|
|
16
16
|
/** The mid 2010s: six twisted panels in white, crossed by wide ribbons that swirl round the ball in teal, orange and violet. */
|
|
17
17
|
export declare const BALL_SOCCER_2014_RIBBON: import("./ball.core.ts").Piece<BallSpec>;
|
|
@@ -156,26 +156,31 @@ export const BALL_SOCCER_2006_PROPELLER = /* @__PURE__ */ ball("ball:soccer-2006
|
|
|
156
156
|
return out + lit(s, g.seams);
|
|
157
157
|
},
|
|
158
158
|
});
|
|
159
|
-
/** The early 2010s: the 8-panel layout, an octahedron whose edges are bent into S curves, with grooves for seams and
|
|
159
|
+
/** The early 2010s: the 8-panel layout, an octahedron whose edges are bent into S curves, with deep grooves for seams and contour lines across each panel: white panels with teal lines and teal panels with white ones. */
|
|
160
160
|
export const BALL_SOCCER_2010_GROOVED = /* @__PURE__ */ ball("ball:soccer-2010-grooved", "Soccer, 8-panel grooved", "8枚貼り・溝つき", {
|
|
161
161
|
view: { yaw: 32, pitch: 26, roll: 0 },
|
|
162
|
-
base: "#
|
|
163
|
-
ground: "#
|
|
164
|
-
mat: { gloss: 0.7, shade: "#
|
|
162
|
+
base: "#f6f8f8",
|
|
163
|
+
ground: "#f6f8f8",
|
|
164
|
+
mat: { gloss: 0.7, shade: "#1f3340", grain: { f: 1.6, a: 0.2 } },
|
|
165
165
|
draw(s, base, accent) {
|
|
166
166
|
const g = octahedron8();
|
|
167
|
-
const tone = [base, accent ?? "#
|
|
167
|
+
const tone = [base, accent ?? "#0f9b8e"];
|
|
168
168
|
let out = "";
|
|
169
169
|
g.panels.forEach((p, i) => {
|
|
170
170
|
if (g.parity[i] === 1)
|
|
171
171
|
out += s.panel(p, tone[1], { n: 1 });
|
|
172
172
|
});
|
|
173
|
-
|
|
173
|
+
// Contour lines: two rings in each panel, in the other panel colour's dark or light so that they show on both.
|
|
174
|
+
const groove = "#16262f";
|
|
174
175
|
g.panels.forEach((p, i) => {
|
|
175
|
-
|
|
176
|
+
const onAccent = g.parity[i] === 1;
|
|
177
|
+
const ink = onAccent ? "#ffffff" : mix(tone[1], -0.35);
|
|
178
|
+
for (const [k, w] of [[0.62, 0.9], [0.3, 0.8]])
|
|
179
|
+
out += s.strokes([shrink(p, g.centres[i], k).filter((_, j) => j % 2 === 0)], ink, w, { closed: true, deco: true, opacity: 0.95 });
|
|
176
180
|
});
|
|
177
|
-
|
|
178
|
-
out += s.strokes(g.seams,
|
|
181
|
+
// The grooves: a wide dark channel with a lit lip beside it.
|
|
182
|
+
out += s.strokes(g.seams, groove, 3.2);
|
|
183
|
+
out += s.strokes(g.seams, "#fff", 0.8, { deco: true, opacity: 0.7, dx: 0.8, dy: 0.85 });
|
|
179
184
|
return out;
|
|
180
185
|
},
|
|
181
186
|
});
|
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { type BallSpec } from "./ball.engine.ts";
|
|
2
|
+
type Trio = readonly [string, string, string];
|
|
3
|
+
/**
|
|
4
|
+
* How one country's ball is laid out. `panels` is 18 letters, `a`, `b` or `c` for the first, second or third colour, three to each of the cube's six faces in the order of `paintEach18` (+z, -z, +x, -x, +y, -y), the strips of a face
|
|
5
|
+
* from one edge to the other. `corner` stands the ball on a corner of its cube, so three faces make the top and three the bottom and it turns about that corner.
|
|
6
|
+
* The layouts differ in where the colours sit, not only in which they are, so that two balls with alike colours (white and red, or red, white and blue) still look different at 16 pixels.
|
|
7
|
+
*/
|
|
8
|
+
export interface VolleyballPlan {
|
|
9
|
+
readonly colours: Trio;
|
|
10
|
+
readonly panels: string;
|
|
11
|
+
readonly corner?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** The national balls: colours and layout of each, by the id's last word. */
|
|
14
|
+
export declare const VOLLEYBALL_PLANS: {
|
|
15
|
+
readonly brazil: VolleyballPlan;
|
|
16
|
+
readonly japan: VolleyballPlan;
|
|
17
|
+
readonly canada: VolleyballPlan;
|
|
18
|
+
readonly usa: VolleyballPlan;
|
|
19
|
+
readonly italy: VolleyballPlan;
|
|
20
|
+
readonly poland: VolleyballPlan;
|
|
21
|
+
readonly france: VolleyballPlan;
|
|
22
|
+
readonly serbia: VolleyballPlan;
|
|
23
|
+
readonly netherlands: VolleyballPlan;
|
|
24
|
+
readonly germany: VolleyballPlan;
|
|
25
|
+
};
|
|
2
26
|
export declare const BALL_VOLLEYBALL_COLOURS: import("./ball.core.ts").Piece<BallSpec>;
|
|
3
27
|
export declare const BALL_VOLLEYBALL_BRAZIL: import("./ball.core.ts").Piece<BallSpec>;
|
|
4
28
|
export declare const BALL_VOLLEYBALL_JAPAN: import("./ball.core.ts").Piece<BallSpec>;
|
|
@@ -10,3 +34,4 @@ export declare const BALL_VOLLEYBALL_FRANCE: import("./ball.core.ts").Piece<Ball
|
|
|
10
34
|
export declare const BALL_VOLLEYBALL_SERBIA: import("./ball.core.ts").Piece<BallSpec>;
|
|
11
35
|
export declare const BALL_VOLLEYBALL_NETHERLANDS: import("./ball.core.ts").Piece<BallSpec>;
|
|
12
36
|
export declare const BALL_VOLLEYBALL_GERMANY: import("./ball.core.ts").Piece<BallSpec>;
|
|
37
|
+
export {};
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
// Volleyballs in national colours: the 18-panel indoor ball (six groups of three strips) with its panels in the colours of a country's flag, three colours to a ball. They are only colours: no flag is drawn,
|
|
2
2
|
// no crest or federation's mark, and the ball is the indoor ball of the FIVB's rule. `colors` takes any three colours for any of them, and `ball:volleyball-colours` is the same ball with colours of your own.
|
|
3
3
|
import { defineBall } from "./ball.engine.js";
|
|
4
|
-
import {
|
|
4
|
+
import { ON_A_CORNER, panels18 } from "./ball.family.panelled.js";
|
|
5
5
|
import { BALL_VOLLEYBALL } from "./ball.volleyball.js";
|
|
6
6
|
const WHITE = "#f6f4ee";
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const plan = (colours, faces, corner = false) => ({ colours, panels: faces.replace(/ /g, ""), corner });
|
|
8
|
+
/** The national balls: colours and layout of each, by the id's last word. */
|
|
9
|
+
export const VOLLEYBALL_PLANS = {
|
|
10
|
+
// Three colours in turn, as before: the middle strips of two faces and the outer strips of the others.
|
|
11
|
+
brazil: plan(["#009c3b", "#ffdf00", "#002776"], "aba bcb cac aca bab cbc"),
|
|
12
|
+
// White with one band of crimson: the three strips of the front face run from the top round the side as one broad sash; the dark red is a thin shadow strip on each side of it.
|
|
13
|
+
japan: plan([WHITE, "#bc002d", "#7d0020"], "baa aab aba aba bab aca"),
|
|
14
|
+
// Red with a white pale down the middle, like the flag: the white middle strips of the front and the back, red everywhere else, the dark red on the two ends.
|
|
15
|
+
canada: plan(["#d52b1e", WHITE, "#9b1c14"], "aba aba aaa aaa ccc ccc"),
|
|
16
|
+
// A navy field of two faces (the canton), the other four faces in red and white stripes.
|
|
17
|
+
usa: plan(["#b22234", WHITE, "#3c3b6e"], "aba bab ccc ccc aba bab"),
|
|
18
|
+
// The flag's green, white and red in three bands round the ball: green on one side, white across the front and red on the other.
|
|
19
|
+
italy: plan(["#009246", WHITE, "#ce2b37"], "abc cba ccc aaa bbb bbb"),
|
|
20
|
+
// White above and red below, as the flag is cut: the three faces round the top corner white, the three round the bottom red.
|
|
21
|
+
poland: plan([WHITE, "#dc143c", "#9b1030"], "aaa bcb aaa bcb aaa bcb", true),
|
|
22
|
+
// Blue, white and red as three big fields turning round one corner, each on two opposite faces.
|
|
23
|
+
france: plan(["#0055a4", WHITE, "#ef4135"], "aaa aaa bbb bbb ccc ccc", true),
|
|
24
|
+
// The flag's red, blue and white from the top down: a red cap, a blue belt and a white foot.
|
|
25
|
+
serbia: plan(["#c6363c", "#0c4076", WHITE], "bbb bbb cba cba aaa ccc"),
|
|
26
|
+
// Thin stripes of red, white and blue on every face of a ball standing on its corner.
|
|
27
|
+
netherlands: plan(["#ae1c28", WHITE, "#21468b"], "abc abc abc abc abc abc", true),
|
|
28
|
+
germany: plan(["#1b1b1b", "#dd0000", "#ffce00"], "aaa ccc bbb aaa ccc bbb", true),
|
|
29
|
+
};
|
|
30
|
+
const SEAM = "#3a4560";
|
|
31
|
+
/** The ball with the colours of one flag: `tint` replaces the first colour, `accent` the second and `colors` all three. */
|
|
32
|
+
function nation(id, en, ja, laid, view = laid.corner === true ? { yaw: 20, pitch: 24, roll: 0 } : { yaw: 28, pitch: 22, roll: 0 }) {
|
|
33
|
+
const colours = laid.colours;
|
|
9
34
|
return defineBall({
|
|
10
35
|
id,
|
|
11
36
|
en,
|
|
@@ -18,19 +43,20 @@ function nation(id, en, ja, colours, view = { yaw: 28, pitch: 22, roll: 0 }) {
|
|
|
18
43
|
mat: { gloss: 0.75, shade: "#1a2a50", grain: { f: 1.2, a: 0.12 } },
|
|
19
44
|
draw: (s, base, accent, picked) => {
|
|
20
45
|
const [a, b, c] = picked ?? [base, accent ?? colours[1], colours[2]];
|
|
21
|
-
|
|
46
|
+
const by = { a, b, c };
|
|
47
|
+
return panels18(s, [...laid.panels].map((ch) => by[ch]), SEAM, laid.corner === true ? ON_A_CORNER : undefined);
|
|
22
48
|
},
|
|
23
49
|
},
|
|
24
50
|
});
|
|
25
51
|
}
|
|
26
|
-
export const BALL_VOLLEYBALL_COLOURS = /* @__PURE__ */ nation("ball:volleyball-colours", "Volleyball, three colours", "三色のバレーボール", ["#f3c81c", "#1f5fbf", WHITE]);
|
|
27
|
-
export const BALL_VOLLEYBALL_BRAZIL = /* @__PURE__ */ nation("ball:volleyball-brazil", "Volleyball, Brazil", "バレー(ブラジル)",
|
|
28
|
-
export const BALL_VOLLEYBALL_JAPAN = /* @__PURE__ */ nation("ball:volleyball-japan", "Volleyball, Japan", "バレー(日本)",
|
|
29
|
-
export const BALL_VOLLEYBALL_CANADA = /* @__PURE__ */ nation("ball:volleyball-canada", "Volleyball, Canada", "バレー(カナダ)",
|
|
30
|
-
export const BALL_VOLLEYBALL_USA = /* @__PURE__ */ nation("ball:volleyball-usa", "Volleyball, USA", "バレー(アメリカ)",
|
|
31
|
-
export const BALL_VOLLEYBALL_ITALY = /* @__PURE__ */ nation("ball:volleyball-italy", "Volleyball, Italy", "バレー(イタリア)",
|
|
32
|
-
export const BALL_VOLLEYBALL_POLAND = /* @__PURE__ */ nation("ball:volleyball-poland", "Volleyball, Poland", "バレー(ポーランド)",
|
|
33
|
-
export const BALL_VOLLEYBALL_FRANCE = /* @__PURE__ */ nation("ball:volleyball-france", "Volleyball, France", "バレー(フランス)",
|
|
34
|
-
export const BALL_VOLLEYBALL_SERBIA = /* @__PURE__ */ nation("ball:volleyball-serbia", "Volleyball, Serbia", "バレー(セルビア)",
|
|
35
|
-
export const BALL_VOLLEYBALL_NETHERLANDS = /* @__PURE__ */ nation("ball:volleyball-netherlands", "Volleyball, Netherlands", "バレー(オランダ)",
|
|
36
|
-
export const BALL_VOLLEYBALL_GERMANY = /* @__PURE__ */ nation("ball:volleyball-germany", "Volleyball, Germany", "バレー(ドイツ)",
|
|
52
|
+
export const BALL_VOLLEYBALL_COLOURS = /* @__PURE__ */ nation("ball:volleyball-colours", "Volleyball, three colours", "三色のバレーボール", plan(["#f3c81c", "#1f5fbf", WHITE], "aba bcb cac aca bab cbc"));
|
|
53
|
+
export const BALL_VOLLEYBALL_BRAZIL = /* @__PURE__ */ nation("ball:volleyball-brazil", "Volleyball, Brazil", "バレー(ブラジル)", VOLLEYBALL_PLANS.brazil);
|
|
54
|
+
export const BALL_VOLLEYBALL_JAPAN = /* @__PURE__ */ nation("ball:volleyball-japan", "Volleyball, Japan", "バレー(日本)", VOLLEYBALL_PLANS.japan);
|
|
55
|
+
export const BALL_VOLLEYBALL_CANADA = /* @__PURE__ */ nation("ball:volleyball-canada", "Volleyball, Canada", "バレー(カナダ)", VOLLEYBALL_PLANS.canada);
|
|
56
|
+
export const BALL_VOLLEYBALL_USA = /* @__PURE__ */ nation("ball:volleyball-usa", "Volleyball, USA", "バレー(アメリカ)", VOLLEYBALL_PLANS.usa);
|
|
57
|
+
export const BALL_VOLLEYBALL_ITALY = /* @__PURE__ */ nation("ball:volleyball-italy", "Volleyball, Italy", "バレー(イタリア)", VOLLEYBALL_PLANS.italy);
|
|
58
|
+
export const BALL_VOLLEYBALL_POLAND = /* @__PURE__ */ nation("ball:volleyball-poland", "Volleyball, Poland", "バレー(ポーランド)", VOLLEYBALL_PLANS.poland);
|
|
59
|
+
export const BALL_VOLLEYBALL_FRANCE = /* @__PURE__ */ nation("ball:volleyball-france", "Volleyball, France", "バレー(フランス)", VOLLEYBALL_PLANS.france);
|
|
60
|
+
export const BALL_VOLLEYBALL_SERBIA = /* @__PURE__ */ nation("ball:volleyball-serbia", "Volleyball, Serbia", "バレー(セルビア)", VOLLEYBALL_PLANS.serbia);
|
|
61
|
+
export const BALL_VOLLEYBALL_NETHERLANDS = /* @__PURE__ */ nation("ball:volleyball-netherlands", "Volleyball, Netherlands", "バレー(オランダ)", VOLLEYBALL_PLANS.netherlands);
|
|
62
|
+
export const BALL_VOLLEYBALL_GERMANY = /* @__PURE__ */ nation("ball:volleyball-germany", "Volleyball, Germany", "バレー(ドイツ)", VOLLEYBALL_PLANS.germany);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FlagRenderer, PuckFace } from "./ball/ball.face.ts";
|
|
2
|
+
import type { Backnumber } from "./ball/ball.core.ts";
|
|
2
3
|
/** `metal`: full colour with a gradient. `line`: one outline in `currentColor`. `color`: flat fills of the main colour, with no gradient. */
|
|
3
4
|
export type EmblemStyle = "metal" | "line" | "color";
|
|
4
5
|
export declare const EMBLEM_STYLES: readonly ["metal", "line", "color"];
|
|
@@ -60,6 +61,8 @@ export interface EmblemOptions {
|
|
|
60
61
|
colors?: readonly string[];
|
|
61
62
|
/** A puck: a renderer for the flag codes this package does not draw (`face.flag`): `(code, { shape: "round" | "square" | "rect", size, theme }) => svg`, synchronous, the same as taisen-brackets takes (hata's `flag()` is asynchronous, so load the flags first). */
|
|
62
63
|
flags?: FlagRenderer;
|
|
64
|
+
/** A judogi seen from behind: the back number sewn on it, `{ name, code, band }` (see `Backnumber`). `gear:judogi-back` and `gear:judogi-blue-back` take it; anything else ignores it. */
|
|
65
|
+
backnumber?: Backnumber;
|
|
63
66
|
}
|
|
64
67
|
/** A turn, in degrees from the resting view (0 and 0 is the still drawing): `yaw` about the vertical axis, `pitch` the tilt toward the eye. */
|
|
65
68
|
export interface FrameOptions extends EmblemOptions {
|
|
@@ -74,18 +74,20 @@ export const EMBLEM_DESCRIPTIONS = {
|
|
|
74
74
|
"sport:sumo": { en: "Two wrestlers in the crouch they face each other in at the start of a bout, with their belts", ja: "仕切りの姿勢で向かい合う、廻しを締めた二人の力士" },
|
|
75
75
|
"sport:handball": { en: "A hand throwing the ball, with lines of speed", ja: "ボールを投げる手と、速さを表す線" },
|
|
76
76
|
"sport:kendo": { en: "The kendo helmet", ja: "剣道の面" },
|
|
77
|
-
"sport:judo": { en: "A judo suit: jacket with crossed lapels, a belt in a flat knot with two ends hanging, and trousers", ja: "
|
|
77
|
+
"sport:judo": { en: "A judo suit: a jacket with sleeves down to the wrist and crossed lapels, a belt in a flat knot with two ends hanging, and trousers", ja: "柔道衣。手首まで届く袖と、右前に合わせた襟の上衣、本結びで二本の端を垂らした帯、ズボン" },
|
|
78
78
|
"sport:kyudo": { en: "A long bow, its string and an arrow", ja: "弦を張った長弓と矢" },
|
|
79
|
-
"sport:karate": { en: "A karate suit: a short jacket with a wide V of lapels, a belt in a flat knot, and straight trousers", ja: "
|
|
79
|
+
"sport:karate": { en: "A karate suit: a short jacket with three-quarter sleeves and a wide V of lapels, a belt in a flat knot, and straight trousers", ja: "空手衣。七分袖で襟を広いV字に合わせた短めの上衣、本結びの帯、まっすぐなズボン" },
|
|
80
80
|
"gear:gunbai": { en: "The sumo referee's war fan, with its tassel", ja: "行司が持つ軍配と、その房" },
|
|
81
81
|
"gear:mawashi": { en: "The wrestler's belt, with the stiff cords that hang from its front", ja: "力士の廻しと、前に垂らした下がり" },
|
|
82
82
|
"gear:shinai": { en: "The kendo practice sword: four bamboo staves with a leather tip, a tie and a hilt", ja: "剣道の竹刀。四つ割りの竹に先革、中結、柄が付く" },
|
|
83
83
|
"gear:kendo-men": { en: "The kendo helmet: a steel grille, cloth flaps and a throat guard", ja: "剣道の面。面金、面布団、突き垂れが付く" },
|
|
84
|
-
"gear:judogi": { en: "The white judo suit laid flat: a jacket with long sleeves, thick stitched lapels crossed left over right and a quilted upper body, trousers with reinforced knees, and the belt tied in a flat knot", ja: "
|
|
84
|
+
"gear:judogi": { en: "The white judo suit laid flat: a jacket with long sleeves down to the wrist, thick stitched lapels crossed left over right and a quilted upper body, trousers with reinforced knees, and the belt tied in a flat knot", ja: "白い柔道衣を広げた姿。手首まで届く長い袖、右前に合わせた刺し子で厚い襟、刺し子の身頃、膝を補強したズボン、本結びにした帯" },
|
|
85
85
|
"gear:obi": { en: "A belt in the flat square knot: two layers round the waist and two equal ends hanging, black", ja: "本結びにした黒帯。腰に二周巻き、同じ長さの端を二本垂らした形" },
|
|
86
86
|
"gear:judogi-blue": { en: "The blue judo suit laid flat, in the blue the competition rules allow beside white", ja: "試合で白と並んで認められている青の柔道衣を広げた姿" },
|
|
87
87
|
"gear:judogi-folded": { en: "The white judo suit folded into a neat rectangle, collar and lapel stitching on top, the belt tied round it", ja: "白い柔道衣をきちんと四角く畳んだ姿。上に襟の刺し子が見え、帯を巻いて結んである" },
|
|
88
88
|
"gear:judogi-blue-folded": { en: "The blue judo suit folded into a neat rectangle, collar and lapel stitching on top, the belt tied round it", ja: "青い柔道衣をきちんと四角く畳んだ姿。上に襟の刺し子が見え、帯を巻いて結んである" },
|
|
89
|
+
"gear:judogi-back": { en: "The white judo suit laid flat and seen from behind: long sleeves down to the wrist, the collar, the belt crossed behind the waist, and the back number of international competitions sewn on 3 cm under the collar, a white patch with the family name in white capitals on a band, the country code under it and a blank space for the sponsor", ja: "白い柔道衣を背中側から広げた姿。手首まで届く長い袖、襟、腰の後ろで交差した帯、襟の3cm下に縫い付けた国際大会用のゼッケン。白い布の上部の帯に白い大文字の姓、その下に国名コード、下部は協賛用の余白" },
|
|
90
|
+
"gear:judogi-blue-back": { en: "The blue judo suit laid flat and seen from behind, with the back number of international competitions sewn on 3 cm under the collar: the family name on a band, the country code under it and a blank space for the sponsor", ja: "青い柔道衣を背中側から広げた姿。襟の3cm下に縫い付けた国際大会用のゼッケン。帯に姓、その下に国名コード、下は協賛用の余白" },
|
|
89
91
|
"gear:obi-white": { en: "A white belt in the flat square knot, the first kyu belt", ja: "本結びにした白帯。初級の帯" },
|
|
90
92
|
"gear:obi-yellow": { en: "A yellow belt in the flat square knot", ja: "本結びにした黄帯" },
|
|
91
93
|
"gear:obi-orange": { en: "An orange belt in the flat square knot", ja: "本結びにした橙帯" },
|
|
@@ -100,9 +102,15 @@ export const EMBLEM_DESCRIPTIONS = {
|
|
|
100
102
|
"gear:obi-orange-green": { en: "A two-colour belt, orange above and green below, between the orange and green grades", ja: "上半分が橙、下半分が緑の二色帯。橙帯と緑帯の間の級の帯" },
|
|
101
103
|
"gear:obi-green-blue": { en: "A two-colour belt, green above and blue below, between the green and blue grades", ja: "上半分が緑、下半分が青の二色帯。緑帯と青帯の間の級の帯" },
|
|
102
104
|
"gear:obi-blue-brown": { en: "A two-colour belt, blue above and brown below, between the blue and brown grades", ja: "上半分が青、下半分が茶の二色帯。青帯と茶帯の間の級の帯" },
|
|
105
|
+
"gear:obi-step-1": { en: "Step 1 of tying the judo belt: the middle of the belt is set against the middle of the belly, over the jacket of the judogi", ja: "柔道の帯の結び方、手順1。柔道衣の上から、帯の真ん中をおなかの中心に当てる" },
|
|
106
|
+
"gear:obi-step-2": { en: "Step 2 of tying the judo belt: the belt is wrapped twice round the waist, and both ends come back to the front", ja: "柔道の帯の結び方、手順2。帯を腰に二重に巻き、両端を前に戻す" },
|
|
107
|
+
"gear:obi-step-3": { en: "Step 3 of tying the judo belt: the two ends are crossed in front of the belly, the wearer's left end over the right one", ja: "柔道の帯の結び方、手順3。おなかの前で両端を交差させる。着る人の左の端が、右の端の上になるように重ねる" },
|
|
108
|
+
"gear:obi-step-4": { en: "Step 4 of tying the judo belt: one end is brought up from below, under both layers of the belt round the waist", ja: "柔道の帯の結び方、手順4。片方の端を、腰に巻いた二重の帯の下から上へ通す" },
|
|
109
|
+
"gear:obi-step-5": { en: "Step 5 of tying the judo belt: the flat square knot (hon-musubi, 本結び), left over right and then right over left", ja: "柔道の帯の結び方、手順5。本結びで結ぶ。左を右の上に重ね、次に右を左の上に重ねる" },
|
|
110
|
+
"gear:obi-step-6": { en: "Step 6 of tying the judo belt: the knot is pulled tight and both ends hang down even, with a mark under their tips", ja: "柔道の帯の結び方、手順6。結び目を締め、両端の長さをそろえて垂らす。先端の下に、長さがそろっていることを示す印がある" },
|
|
103
111
|
"gear:yumi": { en: "The long asymmetric bow, held a third of the way up, with its string and wrapped grip", ja: "上が長い非対称の長弓。弦を張り、握り革と籐巻きが付く" },
|
|
104
112
|
"gear:ya": { en: "A kyudo arrow with feather fletching, a nock and a steel point", ja: "弓道の矢。矢羽根、筈、矢尻が付く" },
|
|
105
|
-
"gear:karate-gi": { en: "The white karate suit laid flat: a lighter jacket with
|
|
113
|
+
"gear:karate-gi": { en: "The white karate suit laid flat: a lighter jacket with three-quarter sleeves, a wide V of plain lapels and tie strings, straight trousers, and a red belt in a flat knot", ja: "白い空手衣を広げた姿。七分袖の軽い上衣、広いV字の襟と結び紐、まっすぐなズボン、本結びにした赤い帯" },
|
|
106
114
|
"ball:soccer-26": { en: "26 panels: 8 triangles and 18 squares, the faces of a rhombicuboctahedron", ja: "三角形8枚と正方形18枚の26枚貼り。斜方立方八面体の26面と同じ構成" },
|
|
107
115
|
"ball:soccer-18": { en: "18 panels: three strips on each of the six faces of a cube, the strips of neighbouring faces square to each other", ja: "立方体の6面に3枚ずつ帯状のパネルを貼った18枚貼り。隣り合う面の帯は互いに直角" },
|
|
108
116
|
"ball:soccer-14": { en: "14 panels: 6 propellers and 8 triangles, on a truncated cube whose 12 long edges are bent into S curves", ja: "プロペラ形6枚と三角形8枚の14枚貼り。切頂立方体の長い辺12本をS字に曲げた形" },
|
|
@@ -121,7 +129,7 @@ export const EMBLEM_DESCRIPTIONS = {
|
|
|
121
129
|
"ball:soccer-1998-coloured-triad": { en: "In the style of the 1990s match balls: the triads in blue, red and gold on white hexagons, with deep navy pentagons", ja: "1990年代の試合球風。白い六角形に青、赤、金の三つ巴を配し、五角形は深い紺色にしたもの" },
|
|
122
130
|
"ball:soccer-2002-triangle-sweep": { en: "In the style of the early-2000s match balls: long thin triangles that sweep across each hexagon in graphite, with gold sparks, over charcoal pentagons", ja: "2000年代前半の試合球風。六角形ごとに細長い三角形が黒鉛色で流れるように並び、金色の小さな三角形が添えられ、五角形は炭色" },
|
|
123
131
|
"ball:soccer-2006-propeller": { en: "In the style of the mid-2000s match balls: 14 panels (6 propellers and 8 triangles), a fine gold line inside each propeller and a gold mark on each dark triangle", ja: "2000年代半ばの試合球風。14枚貼り(プロペラ形6枚、三角形8枚)で、各プロペラの内側に細い金の線、暗い色の三角形に金の印が入る" },
|
|
124
|
-
"ball:soccer-2010-grooved": { en: "In the style of the early-2010s match balls: 8 panels (an octahedron whose edges are bent into S curves) with grooves for seams and
|
|
132
|
+
"ball:soccer-2010-grooved": { en: "In the style of the early-2010s match balls: 8 panels (an octahedron whose edges are bent into S curves) in white and teal, with deep dark grooves for seams and contour lines across each panel, dark teal on the white panels and white on the teal ones", ja: "2010年代前半の試合球風。8枚貼り(辺をS字に曲げた正八面体)で、白とティールのパネル。継ぎ目は深く暗い溝で、各パネルに等高線のような線が入り、白いパネルには濃いティール、ティールのパネルには白の線が走る" },
|
|
125
133
|
"ball:soccer-2014-ribbon": { en: "In the style of the mid-2010s match balls: 6 twisted panels in white, crossed by wide ribbons in teal, orange and violet", ja: "2010年代半ばの試合球風。ねじれた6枚貼りの白いボールに、ティール、オレンジ、紫の幅広いリボンが交差する" },
|
|
126
134
|
"ball:soccer-2018-pixel": { en: "In the style of the late-2010s match balls: 6 panels covered with square pixel blocks in graphite, grey, red and gold, thick on one side and thinning out", ja: "2010年代後半の試合球風。6枚貼りで、黒鉛色、灰色、赤、金の四角いピクセルが一方に密集し、反対側へまばらになっていく" },
|
|
127
135
|
"ball:soccer-2022-speed-shell": { en: "In the style of the early-2020s match balls: 20 triangular panels (an icosahedron) in burgundy, cream and gold, each carrying nested outlines like a shell", ja: "2020年代前半の試合球風。20枚貼り(正二十面体)で、えんじ、クリーム、金の三角形のパネルそれぞれに、貝殻のように重なる輪郭線が入る" },
|
|
@@ -151,14 +159,14 @@ export const EMBLEM_DESCRIPTIONS = {
|
|
|
151
159
|
"ball:softball-11-optic": { en: "The 11 in softball in optic yellow with red stitching: 27.9 cm round, 166.5 to 173.6 g (WBSC Slow Pitch rules)", ja: "11インチの蛍光イエローのソフトボール。赤い縫い目、円周27.9cm、重さ166.5〜173.6g(WBSCスローピッチ規則)" },
|
|
152
160
|
"ball:volleyball-colours": { en: "The 18-panel indoor volleyball with panels in three colours of your own (the `colors` option); yellow, blue and white by default", ja: "3色を自由に指定できる(colors オプション)18枚貼りの室内用バレーボール。初期設定は黄、青、白" },
|
|
153
161
|
"ball:volleyball-brazil": { en: "The 18-panel indoor volleyball in colours taken from the flag: green, yellow and blue. Colours only, no flag or mark is drawn", ja: "国旗の色を取り入れた18枚貼りの室内用バレーボール:緑、黄、青。色だけで、旗や紋章は描かない" },
|
|
154
|
-
"ball:volleyball-japan": { en: "The 18-panel indoor volleyball in colours taken from the flag
|
|
155
|
-
"ball:volleyball-canada": { en: "The 18-panel indoor volleyball in colours taken from the flag: red, white and a darker red. Colours only, no flag or mark is drawn", ja: "
|
|
156
|
-
"ball:volleyball-usa": { en: "The 18-panel indoor volleyball in colours taken from the flag
|
|
157
|
-
"ball:volleyball-italy": { en: "The 18-panel indoor volleyball in colours taken from the flag: green, white and red. Colours only, no flag or mark is drawn", ja: "
|
|
158
|
-
"ball:volleyball-poland": { en: "The 18-panel indoor volleyball in colours taken from the flag
|
|
159
|
-
"ball:volleyball-france": { en: "The 18-panel indoor volleyball in colours taken from the flag: blue, white and red. Colours only, no flag or mark is drawn", ja: "
|
|
160
|
-
"ball:volleyball-serbia": { en: "The 18-panel indoor volleyball in colours taken from the flag: red, blue and white. Colours only, no flag or mark is drawn", ja: "
|
|
161
|
-
"ball:volleyball-netherlands": { en: "The 18-panel indoor volleyball in colours taken from the flag: red, white and blue. Colours only, no flag or mark is drawn", ja: "
|
|
162
|
-
"ball:volleyball-germany": { en: "The 18-panel indoor volleyball in colours taken from the flag: black, red and gold. Colours only, no flag or mark is drawn", ja: "
|
|
162
|
+
"ball:volleyball-japan": { en: "The 18-panel indoor volleyball in colours taken from the flag (white, red and a darker red), laid out so that it does not look like another country's: white, with one broad crimson band that runs round one side, across the front and over the top, and a darker red strip underneath. Colours only, no flag or mark is drawn", ja: "国旗の色(白、赤、濃い赤)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、白地に、側面から正面、上面へ回る幅広い深紅の帯が1本入り、底面には濃い赤の帯が入る。色だけで、旗や紋章は描かない" },
|
|
163
|
+
"ball:volleyball-canada": { en: "The 18-panel indoor volleyball in colours taken from the flag (red, white and a darker red), laid out so that it does not look like another country's: red, with a white stripe down the middle of the front and of the back, as the flag has its white pale, and a darker red on the top and the bottom. Colours only, no flag or mark is drawn", ja: "国旗の色(赤、白、濃い赤)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、赤地の正面と背面の中央に白い縦帯が入り(国旗の白い部分に倣う)、上面と底面は濃い赤。色だけで、旗や紋章は描かない" },
|
|
164
|
+
"ball:volleyball-usa": { en: "The 18-panel indoor volleyball in colours taken from the flag (red, white and blue), laid out so that it does not look like another country's: a navy field on two opposite sides, as the flag has its blue canton, and red and white stripes on the other four faces. Colours only, no flag or mark is drawn", ja: "国旗の色(赤、白、青)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、向かい合う2面が紺色(国旗の青い部分に倣う)、残る4面は赤と白の縞。色だけで、旗や紋章は描かない" },
|
|
165
|
+
"ball:volleyball-italy": { en: "The 18-panel indoor volleyball in colours taken from the flag (green, white and red), laid out so that it does not look like another country's: green on one side, red on the opposite side, white on the top and the bottom, and green, white and red stripes across the front and the back. Colours only, no flag or mark is drawn", ja: "国旗の色(緑、白、赤)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、緑の面と赤の面が向かい合い、上面と底面は白、正面と背面は緑、白、赤の縞。色だけで、旗や紋章は描かない" },
|
|
166
|
+
"ball:volleyball-poland": { en: "The 18-panel indoor volleyball in colours taken from the flag (white, red and a darker red), laid out so that it does not look like another country's: white above and red below, as the flag is cut: the ball stands on a corner, the three faces round the top are white and the three round the bottom red, each with a darker red strip in the middle. Colours only, no flag or mark is drawn", ja: "国旗の色(白、赤、濃い赤)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、国旗の上下の分け方に倣い、上半分が白、下半分が赤。頂点を真上に向けて置き、上を囲む3面が白、下を囲む3面が赤、下の各面の中央には濃い赤の帯が入る。色だけで、旗や紋章は描かない" },
|
|
167
|
+
"ball:volleyball-france": { en: "The 18-panel indoor volleyball in colours taken from the flag (blue, white and red), laid out so that it does not look like another country's: three big fields in blue, white and red turning round a corner of the ball, each colour on two opposite faces. Colours only, no flag or mark is drawn", ja: "国旗の色(青、白、赤)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、頂点を真上に向け、青、白、赤の大きな3つの領域が頂点のまわりを巡る。各色は向かい合う2面を占める。色だけで、旗や紋章は描かない" },
|
|
168
|
+
"ball:volleyball-serbia": { en: "The 18-panel indoor volleyball in colours taken from the flag (red, blue and white), laid out so that it does not look like another country's: red above, blue in the middle and white below, as the flag's bands run: a red top, a white bottom, and blue across the front and the back. Colours only, no flag or mark is drawn", ja: "国旗の色(赤、青、白)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、国旗の帯の順に上から赤、青、白と並ぶ。上面は赤、底面は白、正面と背面は青。色だけで、旗や紋章は描かない" },
|
|
169
|
+
"ball:volleyball-netherlands": { en: "The 18-panel indoor volleyball in colours taken from the flag (red, white and blue), laid out so that it does not look like another country's: thin stripes of red, white and blue on every face of a ball standing on a corner. Colours only, no flag or mark is drawn", ja: "国旗の色(赤、白、青)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、頂点を真上に向けたボールの全面に、赤、白、青の細い縞が入る。色だけで、旗や紋章は描かない" },
|
|
170
|
+
"ball:volleyball-germany": { en: "The 18-panel indoor volleyball in colours taken from the flag (black, red and gold), laid out so that it does not look like another country's: black, red and gold as six big fields on a ball standing on a corner, each colour on two faces. Colours only, no flag or mark is drawn", ja: "国旗の色(黒、赤、金)を取り入れた18枚貼りの室内用バレーボール。他の国のボールと見分けがつく配置で、頂点を真上に向けたボールが、黒、赤、金の大きな6つの面に分かれ、各色が2面ずつを占める。色だけで、旗や紋章は描かない" },
|
|
163
171
|
...soccerColourways(),
|
|
164
172
|
};
|
|
@@ -24,10 +24,10 @@ export type BallId = (typeof BALL_IDS)[number];
|
|
|
24
24
|
export declare const PUCK_IDS: readonly ["puck:canada", "puck:canada-red", "puck:canada-white", "puck:usa", "puck:usa-navy", "puck:player", "puck:signed", "puck:souvenir"];
|
|
25
25
|
export type PuckId = (typeof PUCK_IDS)[number];
|
|
26
26
|
/** The pieces of gear: a piece of equipment for each sport, flat, drawn for this package, turning like a coin. */
|
|
27
|
-
export declare const GEAR_IDS: readonly ["gear:hockey-stick", "gear:goalie-stick", "gear:hockey-skate", "gear:goalie-mask", "gear:goal-net", "gear:field-hockey-stick", "gear:lacrosse-stick", "gear:cricket-bat", "gear:wicket", "gear:table-tennis-paddle", "gear:badminton-racket", "gear:tennis-racket", "gear:squash-racket", "gear:racquetball-racket", "gear:padel-racket", "gear:pickleball-paddle", "gear:roundnet-set", "gear:volleyball-net", "gear:basketball-hoop", "gear:baseball-bat", "gear:baseball-glove", "gear:football-helmet", "gear:goalposts", "gear:hurley", "gear:curling-broom", "gear:figure-skate", "gear:speed-skate", "gear:diving-board", "gear:swim-goggles", "gear:starting-blocks", "gear:relay-baton", "gear:javelin", "gear:hurdles", "gear:gunbai", "gear:mawashi", "gear:shinai", "gear:kendo-men", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "gear:yumi", "gear:ya", "gear:karate-gi"];
|
|
27
|
+
export declare const GEAR_IDS: readonly ["gear:hockey-stick", "gear:goalie-stick", "gear:hockey-skate", "gear:goalie-mask", "gear:goal-net", "gear:field-hockey-stick", "gear:lacrosse-stick", "gear:cricket-bat", "gear:wicket", "gear:table-tennis-paddle", "gear:badminton-racket", "gear:tennis-racket", "gear:squash-racket", "gear:racquetball-racket", "gear:padel-racket", "gear:pickleball-paddle", "gear:roundnet-set", "gear:volleyball-net", "gear:basketball-hoop", "gear:baseball-bat", "gear:baseball-glove", "gear:football-helmet", "gear:goalposts", "gear:hurley", "gear:curling-broom", "gear:figure-skate", "gear:speed-skate", "gear:diving-board", "gear:swim-goggles", "gear:starting-blocks", "gear:relay-baton", "gear:javelin", "gear:hurdles", "gear:gunbai", "gear:mawashi", "gear:shinai", "gear:kendo-men", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:judogi-back", "gear:judogi-blue-back", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "gear:obi-step-1", "gear:obi-step-2", "gear:obi-step-3", "gear:obi-step-4", "gear:obi-step-5", "gear:obi-step-6", "gear:yumi", "gear:ya", "gear:karate-gi"];
|
|
28
28
|
export type GearId = (typeof GEAR_IDS)[number];
|
|
29
29
|
/** The Japanese sports and budo: sumo, kendo, judo, kyudo and karate, with the trophies and the gear that belong to them. Every one is also in its own group; this list is for showing them together. */
|
|
30
|
-
export declare const JAPANESE_IDS: readonly ["sport:sumo", "trophy:sumo-cup", "gear:gunbai", "gear:mawashi", "trophy:championship-banner", "sport:kendo", "gear:shinai", "gear:kendo-men", "sport:judo", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "sport:kyudo", "gear:yumi", "gear:ya", "sport:karate", "gear:karate-gi"];
|
|
30
|
+
export declare const JAPANESE_IDS: readonly ["sport:sumo", "trophy:sumo-cup", "gear:gunbai", "gear:mawashi", "trophy:championship-banner", "sport:kendo", "gear:shinai", "gear:kendo-men", "sport:judo", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:judogi-back", "gear:judogi-blue-back", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "gear:obi-step-1", "gear:obi-step-2", "gear:obi-step-3", "gear:obi-step-4", "gear:obi-step-5", "gear:obi-step-6", "sport:kyudo", "gear:yumi", "gear:ya", "sport:karate", "gear:karate-gi"];
|
|
31
31
|
export type JapaneseId = (typeof JAPANESE_IDS)[number];
|
|
32
32
|
/** The pennants: a felt championship pennant with a stitched edge. */
|
|
33
33
|
export declare const PENNANT_IDS: readonly ["pennant:championship"];
|
|
@@ -45,7 +45,7 @@ export declare const EMBLEM_GROUPS: {
|
|
|
45
45
|
readonly crest: readonly ["crest:shield", "crest:roundel", "crest:diamond", "crest:pennant"];
|
|
46
46
|
readonly ball: readonly ["ball:soccer", "ball:soccer-colour", "ball:soccer-26", "ball:soccer-18", "ball:soccer-14", "ball:soccer-12", "ball:soccer-6", "ball:soccer-orange", "ball:soccer-26-orange", "ball:soccer-18-orange", "ball:soccer-14-orange", "ball:soccer-12-orange", "ball:soccer-6-orange", "ball:soccer-yellow", "ball:soccer-26-yellow", "ball:soccer-18-yellow", "ball:soccer-14-yellow", "ball:soccer-12-yellow", "ball:soccer-6-yellow", "ball:futsal", "ball:beach-soccer", "ball:soccer-1870-hand-stitched", "ball:soccer-1900-laced", "ball:soccer-1930-18-panel", "ball:soccer-1950-12-panel", "ball:soccer-1960-32-panel-leather", "ball:soccer-1970-black-white", "ball:soccer-1978-triad", "ball:soccer-1986-decorated-triad", "ball:soccer-1998-coloured-triad", "ball:soccer-2002-triangle-sweep", "ball:soccer-2006-propeller", "ball:soccer-2010-grooved", "ball:soccer-2014-ribbon", "ball:soccer-2018-pixel", "ball:soccer-2022-speed-shell", "ball:soccer-training-high-vis", "ball:soccer-stars-blue", "ball:soccer-stars-red", "ball:soccer-stars-night", "ball:soccer-hexagons-cyan", "ball:soccer-hexagons-magenta", "ball:soccer-hexagons-lime", "ball:soccer-flames-fire", "ball:soccer-flames-ice", "ball:soccer-flames-toxic", "ball:soccer-chevrons-red", "ball:soccer-chevrons-green", "ball:soccer-chevrons-blue", "ball:soccer-swirl-blue", "ball:soccer-swirl-red", "ball:soccer-swirl-teal", "ball:soccer-metallic-gold", "ball:soccer-metallic-silver", "ball:soccer-metallic-cobalt", "ball:teqball", "ball:basketball", "ball:basketball-6", "ball:basketball-3x3", "ball:baseball", "ball:softball", "ball:baseball-lemon-peel", "ball:baseball-red-blue", "ball:baseball-black-red", "ball:baseball-vintage-leather", "ball:softball-11-optic", "ball:tennis", "ball:padel", "ball:sliotar", "ball:volleyball", "ball:volleyball-8", "ball:beach-volleyball", "ball:volleyball-colours", "ball:volleyball-brazil", "ball:volleyball-japan", "ball:volleyball-canada", "ball:volleyball-usa", "ball:volleyball-italy", "ball:volleyball-poland", "ball:volleyball-france", "ball:volleyball-serbia", "ball:volleyball-netherlands", "ball:volleyball-germany", "ball:cricket-red", "ball:cricket-white", "ball:cricket-pink", "ball:football", "ball:football-cfl", "ball:football-ifaf", "ball:rugby", "ball:afl", "ball:gaelic-football", "ball:netball", "ball:pickleball-outdoor", "ball:pickleball-indoor", "ball:squash", "ball:squash-yellow", "ball:squash-green", "ball:squash-red", "ball:squash-blue", "ball:racquetball", "ball:lacrosse", "ball:field-hockey", "ball:table-tennis", "ball:handball", "ball:water-polo", "ball:golf", "ball:puck", "ball:curling-stone", "ball:shot", "ball:discus", "ball:hammer", "ball:sepak-takraw", "ball:roundnet", "ball:shuttlecock-feather", "ball:shuttlecock-nylon"];
|
|
47
47
|
readonly puck: readonly ["puck:canada", "puck:canada-red", "puck:canada-white", "puck:usa", "puck:usa-navy", "puck:player", "puck:signed", "puck:souvenir"];
|
|
48
|
-
readonly gear: readonly ["gear:hockey-stick", "gear:goalie-stick", "gear:hockey-skate", "gear:goalie-mask", "gear:goal-net", "gear:field-hockey-stick", "gear:lacrosse-stick", "gear:cricket-bat", "gear:wicket", "gear:table-tennis-paddle", "gear:badminton-racket", "gear:tennis-racket", "gear:squash-racket", "gear:racquetball-racket", "gear:padel-racket", "gear:pickleball-paddle", "gear:roundnet-set", "gear:volleyball-net", "gear:basketball-hoop", "gear:baseball-bat", "gear:baseball-glove", "gear:football-helmet", "gear:goalposts", "gear:hurley", "gear:curling-broom", "gear:figure-skate", "gear:speed-skate", "gear:diving-board", "gear:swim-goggles", "gear:starting-blocks", "gear:relay-baton", "gear:javelin", "gear:hurdles", "gear:gunbai", "gear:mawashi", "gear:shinai", "gear:kendo-men", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "gear:yumi", "gear:ya", "gear:karate-gi"];
|
|
48
|
+
readonly gear: readonly ["gear:hockey-stick", "gear:goalie-stick", "gear:hockey-skate", "gear:goalie-mask", "gear:goal-net", "gear:field-hockey-stick", "gear:lacrosse-stick", "gear:cricket-bat", "gear:wicket", "gear:table-tennis-paddle", "gear:badminton-racket", "gear:tennis-racket", "gear:squash-racket", "gear:racquetball-racket", "gear:padel-racket", "gear:pickleball-paddle", "gear:roundnet-set", "gear:volleyball-net", "gear:basketball-hoop", "gear:baseball-bat", "gear:baseball-glove", "gear:football-helmet", "gear:goalposts", "gear:hurley", "gear:curling-broom", "gear:figure-skate", "gear:speed-skate", "gear:diving-board", "gear:swim-goggles", "gear:starting-blocks", "gear:relay-baton", "gear:javelin", "gear:hurdles", "gear:gunbai", "gear:mawashi", "gear:shinai", "gear:kendo-men", "gear:judogi", "gear:judogi-blue", "gear:judogi-folded", "gear:judogi-blue-folded", "gear:judogi-back", "gear:judogi-blue-back", "gear:obi", "gear:obi-white", "gear:obi-yellow", "gear:obi-orange", "gear:obi-green", "gear:obi-blue", "gear:obi-brown", "gear:obi-kohaku", "gear:obi-red", "gear:obi-women", "gear:obi-white-yellow", "gear:obi-yellow-orange", "gear:obi-orange-green", "gear:obi-green-blue", "gear:obi-blue-brown", "gear:obi-step-1", "gear:obi-step-2", "gear:obi-step-3", "gear:obi-step-4", "gear:obi-step-5", "gear:obi-step-6", "gear:yumi", "gear:ya", "gear:karate-gi"];
|
|
49
49
|
readonly sport: readonly ("sport:sumo" | "sport:kendo" | "sport:judo" | "sport:kyudo" | "sport:karate" | "sport:nfl" | "sport:cfl" | "sport:ifaf" | "sport:nhl" | "sport:nba" | "sport:mlb" | "sport:soccer" | "sport:curling" | "sport:tennis" | "sport:volleyball" | "sport:badminton" | "sport:pickleball" | "sport:tabletennis" | "sport:padel" | "sport:squash" | "sport:racquetball" | "sport:sepaktakraw" | "sport:teqball" | "sport:roundnet" | "sport:netball" | "sport:swimming" | "sport:waterpolo" | "sport:diving" | "sport:artisticswimming" | "sport:lacrosse" | "sport:rugby" | "sport:afl" | "sport:gaelic" | "sport:cricket" | "sport:fieldhockey" | "sport:handball" | "sport:athletics" | "sport:skating")[];
|
|
50
50
|
readonly pennant: readonly ["pennant:championship"];
|
|
51
51
|
};
|