@johnmorrisdotca/dougu-sports 0.12.0 → 0.13.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 CHANGED
@@ -6,6 +6,29 @@ All notable changes to this project are written here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.13.0] - 2026-10-20
10
+
11
+ Four combat sports get their pictograms, so a page that lists MMA, boxing, wrestling or professional wrestling no longer borrows the judo or karate suit.
12
+
13
+ ### Added
14
+
15
+ - **`sport:mma`, `sport:boxing`, `sport:wrestling` and `sport:prowrestling`** (`SPORT_MMA`, `SPORT_BOXING`, `SPORT_WRESTLING`, `SPORT_PROWRESTLING`), in the metal, colour and line styles like the other pictograms, all drawn for this package with no mark of any promotion, federation or maker and no lettering: MMA is a generic eight-sided cage seen from above inside a fence of diamond mesh, boxing a padded glove with the thumb against its side and a banded cuff, wrestling two wrestlers in the tie-up on the round of the mat, and professional wrestling a ring seen from a corner with a post at each corner, three ropes between them and the apron. Names: "MMA", "Boxing", "Wrestling", "Pro wrestling" (each also has a Japanese name). 325 emblems.
16
+ - **`mma`, `boxing`, `wrestling` and `prowrestling` in `SPORT_NAMES`** (42 sports). `sportEquipment` gives each a trophy (the belt for MMA, boxing and professional wrestling, a cup for wrestling), a gold medal for boxing and wrestling, no ball and no gear yet.
17
+
18
+ ## [0.12.1] - 2026-10-20
19
+
20
+ The npm page and the demo open on a trophy that turns. No change to the package's code beyond its version.
21
+
22
+ ### Changed
23
+
24
+ - **README: the first thing is a turning trophy.** Five famous trophies turning in 3D (the Stanley Cup first), seven balls rolling, and a medal, a banner, a crest, a skate and a glove flipping like coins, each an animated webp in a light and a dark twin (`docs/images/trophies-turn-*.webp`, `balls-turn-*.webp`, `flips-turn-*.webp`, each under 1 MB), then "The best of it": the 47 famous trophies, the 117 balls and implements, the trophies, medals and crests, and the 70 pieces of gear, a picture each. The vintage balls picture moved to `docs/vintage-balls.md`, the turned-emblems strip to `docs/turning.md`, and the engraving examples to a new `docs/engraving.md` (nothing removed); the README is not longer than before.
25
+ - **The pictures are made by a script from the demo:** `pnpm animations` (`scripts/animations.ts`) takes one frame per angle with Playwright and joins them with `img2webp`.
26
+ - **Demo: it opens on the Stanley Cup turning by itself**, with quick picks (cups, balls, a medal, a banner, a skate) and its controls (Stop, speed, the turn slider) under it, the stage pinned in view while the options scroll past, on a phone and on a desk. Changing the emblem, the style or the tint while it turns leaves the turn going from where it was. The address holds `turn=0` once it is paused (an address with an angle opens still); a reader who prefers reduced motion gets it still. The trophy case turns by itself too.
27
+
28
+ ### Fixed
29
+
30
+ - The shared background module in `scripts/` (tooling for the demo and the README pictures; the package ships none of it) is now the family's version 1.0.1: the `id` it is given is made safe (letters, digits, `_` and `-`; `bg-` in front of one that does not start with a letter) before it is written into element ids and `url(#...)`. `test/family-backgrounds.test.ts` draws every preset with hostile ids.
31
+
9
32
  ## [0.12.0] - 2026-10-19
10
33
 
11
34
  ### Changed
package/README.md CHANGED
@@ -11,29 +11,33 @@ The ball and the gear of every sport, trophies, medals, crests and the icon of e
11
11
  <img alt="TypeScript" src="https://img.shields.io/badge/types-TypeScript-3178c6">
12
12
  </p>
13
13
 
14
- <p align="center"><a href="https://johnmorrisdotca.github.io/dougu-sports/"><strong>Open the demo →</strong></a> · <a href="https://johnmorrisdotca.github.io/dougu-sports/gallery.html">Gallery</a> · <a href="./docs/gallery.md">Every id</a> · <a href="./docs/turning.md">Turning</a> · <a href="./docs/layout.md">Layout</a> · <a href="./docs/japanese-sports.md">Japanese sports</a></p>
14
+ <p align="center"><a href="https://johnmorrisdotca.github.io/dougu-sports/"><strong>Open the demo →</strong></a> · <a href="https://johnmorrisdotca.github.io/dougu-sports/gallery.html">Gallery</a> · <a href="./docs/gallery.md">Every id</a> · <a href="./docs/turning.md">Turning</a> · <a href="./docs/engraving.md">Engraving</a> · <a href="./docs/layout.md">Layout</a> · <a href="./docs/japanese-sports.md">Japanese sports</a></p>
15
15
 
16
16
  <p align="center">
17
17
  <picture>
18
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-desk-dark.webp">
19
- <img alt="Thirty-six balls and pucks drawn in 3D under floodlights, in four rows of nine: soccer balls of several constructions and colours, then basketball, the 3x3 ball, baseball, softball, a football, a rugby ball, an Australian football and two volleyballs, then tennis, padel, pickleball with its holes, squash with its two dots, racquetball, golf, red and pink cricket and water polo, and last sepak takraw, a shuttlecock, a puck, a curling stone, lacrosse, handball, table tennis, a sliotar and a roundnet ball." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-desk-light.webp" width="760">
18
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/trophies-turn-dark.webp">
19
+ <img alt="Five famous trophies turning in 3D on royal purple, each a little behind the one before: the Stanley Cup first, then the FIFA World Cup, the Lombardi Trophy, the Larry O'Brien trophy and the Webb Ellis Cup. Each keeps its outline while its light and its handles move." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/trophies-turn-light.webp" width="760">
20
20
  </picture>
21
21
  </p>
22
22
 
23
23
  <p align="center">
24
24
  <picture>
25
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/vintage-desk-dark.webp">
26
- <img alt="Eighteen more balls on a warm sunburst, in two rows of nine: five vintage leather soccer balls (hand-stitched, laced, 18 strips, 12 panels, 32 panels), a lemon-peel baseball, two baseballs stitched in two colours and an aged baseball, then nine soccer balls in the style of an era, with patterns of pentagons, leaves, a rosette, a star, a pinwheel and kites, a double border and plain white panels." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/vintage-desk-light.webp" width="760">
25
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-turn-dark.webp">
26
+ <img alt="Seven balls rolling under floodlights: a soccer ball, a basketball, a baseball, a rugby ball, a volleyball, a tennis ball and a golf ball, each turned a little differently so that the seams and panels travel across them." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-turn-light.webp" width="760">
27
27
  </picture>
28
28
  </p>
29
29
 
30
30
  <p align="center">
31
31
  <picture>
32
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/hero-desk-dark.webp">
33
- <img alt="Trophies, medals and crests, in four rows of nine: nine famous cups, then a gilded cup, a phoenix-handle cup, a soccer ball trophy, a wreath, a rosette, a belt, a banner, a ring and a plaque, then three medals, three place badges and three crests, and last three cups each in metal, line and colour." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/hero-desk-light.webp" width="760">
32
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/flips-turn-dark.webp">
33
+ <img alt="A gold and a silver medal, a championship banner, a crest, a hockey skate and a baseball glove flipping like coins on royal purple: each shows its face, then its edge, then its plain back." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/flips-turn-light.webp" width="760">
34
34
  </picture>
35
35
  </p>
36
36
 
37
+ ## The best of it
38
+
39
+ - **47 famous trophies**, each a close likeness measured on a photograph and carrying no lettering, logo or mark: the Stanley Cup, the FIFA World Cup, the Lombardi Trophy, the Larry O'Brien trophy, the Grey Cup and the rest ([famous trophies](./docs/famous-trophies.md)).
40
+
37
41
  <p align="center">
38
42
  <picture>
39
43
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/famous-desk-dark.webp">
@@ -41,6 +45,26 @@ The ball and the gear of every sport, trophies, medals, crests and the icon of e
41
45
  </picture>
42
46
  </p>
43
47
 
48
+ - **117 balls and implements in 3D**, from the 32-panel soccer ball to the pucks and the curling stone, that roll as they turn ([gallery](./docs/gallery.md), [vintage and era-style balls](./docs/vintage-balls.md)).
49
+
50
+ <p align="center">
51
+ <picture>
52
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-desk-dark.webp">
53
+ <img alt="Thirty-six balls and pucks drawn in 3D under floodlights, in four rows of nine: soccer balls of several constructions and colours, then basketball, the 3x3 ball, baseball, softball, a football, a rugby ball, an Australian football and two volleyballs, then tennis, padel, pickleball with its holes, squash with its two dots, racquetball, golf, red and pink cricket and water polo, and last sepak takraw, a shuttlecock, a puck, a curling stone, lacrosse, handball, table tennis, a sliotar and a roundnet ball." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/balls-desk-light.webp" width="760">
54
+ </picture>
55
+ </p>
56
+
57
+ - **Trophies, medals, crests and the icon of every sport**, in metal, one line or flat colour, light and dark.
58
+
59
+ <p align="center">
60
+ <picture>
61
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/hero-desk-dark.webp">
62
+ <img alt="Trophies, medals and crests, in four rows of nine: nine famous cups, then a gilded cup, a phoenix-handle cup, a soccer ball trophy, a wreath, a rosette, a belt, a banner, a ring and a plaque, then three medals, three place badges and three crests, and last three cups each in metal, line and colour." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/hero-desk-light.webp" width="760">
63
+ </picture>
64
+ </p>
65
+
66
+ - **70 pieces of gear**, among them the Japanese sports and budo ([Japanese sports](./docs/japanese-sports.md)).
67
+
44
68
  <p align="center">
45
69
  <picture>
46
70
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/gear-desk-dark.webp">
@@ -48,18 +72,15 @@ The ball and the gear of every sport, trophies, medals, crests and the icon of e
48
72
  </picture>
49
73
  </p>
50
74
 
51
- <table align="center">
52
- <tr>
53
- <td align="center" valign="top">
54
- <img alt="A two-handled cup, a medal, a soccer ball and a championship banner each turned through seven angles: the cup keeps its outline and moves its light and handles, the medal and the banner flip like a coin to show their plain backs, and the ball rolls." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/turn-desk.webp" width="470"><br><em>Turned: a ball rolls, a medal flips</em>
55
- </td>
56
- <td align="center" valign="top">
57
- <img alt="Cups, a medal, balls and gear on a phone, three to a row." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/phone-light.webp" width="200"><br><em>On a phone</em>
58
- </td>
59
- </tr>
60
- </table>
75
+ - **On a phone**, and **turned by hand**: drag, arrow keys or the automatic turn ([turning](./docs/turning.md)).
76
+
77
+ <p align="center">
78
+ <picture>
79
+ <img alt="Cups, a medal, balls and gear on a phone, three to a row." src="https://raw.githubusercontent.com/johnmorrisdotca/dougu-sports/main/docs/images/phone-light.webp" width="200">
80
+ </picture>
81
+ </p>
61
82
 
62
- > **Status: preview.** 321 emblems: 71 trophies, 6 awards, 6 medals, 4 crests, a pictogram for each of the 38 sports, 117 balls and implements drawn in 3D, 8 printed pucks ([docs/pucks.md](./docs/pucks.md)), 70 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.
83
+ > **Status: preview.** 325 emblems: 71 trophies, 6 awards, 6 medals, 4 crests, a pictogram for each of the 42 sports, 117 balls and implements drawn in 3D, 8 printed pucks ([docs/pucks.md](./docs/pucks.md)), 70 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.
63
84
 
64
85
  ## In 30 seconds
65
86
 
@@ -91,7 +112,7 @@ Put the string in a page (`element.innerHTML = svg`), write it to a file, or sen
91
112
  - **Three styles** for every emblem: `metal` (polished metal: a gradient, a highlight and a soft rim of reflected light, edged in a darker tone of its own metal, with no heavy outline), `line` (one clean outline in the page's text colour, made to read at 14 pixels) and `color` (flat fills); see [Theming](#theming).
92
113
  - **Size, tint, accent and theme** as options: a tint recolours the main part (a medal's metal, a crest's colour, a ball's patches), an accent the second colour (a ribbon, a crest's band, the pennants), a theme sets the ink for light, dark or either.
93
114
  - **Turning**: `emblemFrame` and `ballFrame` return the emblem at an angle, in plain SVG: every emblem turns, a ball rolls, a cup keeps its outline and moves its light, and everything flat (gear, a bat, a crown, a sport's icon) flips like a coin; `bindTurn` lets a drag, the arrow keys or an auto-turn do the turning in a page; see [docs/turning.md](./docs/turning.md).
94
- - **Engraving**: text cut into a medal, a plaque, the belt, a ring, a banner, a pennant and the plinth of a cup, from `label`, `year` and `rank` or one `engrave` string, in the ink that reads at 4.5 to 1 on the metal, and it turns with the emblem; see [Engrave an emblem](#engrave-an-emblem).
115
+ - **Engraving**: text cut into a medal, a plaque, the belt, a ring, a banner, a pennant and the plinth of a cup, from `label`, `year` and `rank` or one `engrave` string, in the ink that reads at 4.5 to 1 on the metal, and it turns with the emblem; see [engraving](./docs/engraving.md).
95
116
  - **Custom balls**: a baseball, a softball and the classic soccer balls take `paint` (a solid colour, or two: along the seam or in halves, with stitches that still show), `decal` (your own SVG or image as a logo, wrapped onto the sphere so that it turns with the ball), `stamp` (condensed bold text between small stars, with an optional made-up signature), `script` (an original cursive word) and `mark` (a letter in a circle, or an SVG of your own); see [docs/custom-balls.md](./docs/custom-balls.md). The package carries no logo of anyone's: a logo or a mark is the one you pass.
96
117
  - **Labels in two languages**: the `<title>` is English or Japanese (`locale`), your own words (`title: "…"`), or left out for an emblem that sits beside text that says the same (`title: false`).
97
118
  - **As an image, a sprite, a podium or a case**: `emblemDataUri` for an `<img>`, a CSS background or a canvas, `emblemSprite` to draw one emblem fifty times cheaply, `sportEquipment` for what a sport is played with, and `podium` and `awardCase` for results and trophy shelves; see [docs/compose.md](./docs/compose.md).
@@ -259,28 +280,7 @@ More in [docs/turning.md](./docs/turning.md).
259
280
 
260
281
  ### Engrave an emblem
261
282
 
262
- ```js
263
- import { renderEmblem } from "@johnmorrisdotca/dougu-sports/emblems";
264
-
265
- const medal = renderEmblem("medal:gold", { engrave: "MVP 2026" });
266
- console.log(medal.includes(">MVP<") && medal.includes(">2026<")); // true
267
- const plaque = renderEmblem("trophy:plaque", { label: "Champions", year: 2026 });
268
- console.log(plaque.includes(">Champions<") && plaque.includes(">2026<")); // true
269
- const cup = renderEmblem("trophy:hockey-cup", { engrave: "優勝 2026" });
270
- console.log(cup.includes(">優<")); // true
271
- console.log(renderEmblem("medal:gold").includes("<text")); // false
272
- ```
273
-
274
- A medal, a place badge, the plaque, the belt, a ring (the team up one shoulder and the year down the other), a banner and a pennant take an engraving, and so does the plinth of every cup that stands on one. Give one string (`engrave`, any text, Japanese included, up to three lines of 24 letters), or a `label`, a `year` and a `rank`: the rank is the biggest line, the year the smallest. The text is escaped, fitted to its face (a longer word is set smaller, and a space is a place to break the line when that makes bigger letters) and cut in the ink that reads at 4.5 to 1 on the metal, a tone of the metal, black or white, in the line style the page's ink.
275
-
276
- ```js
277
- import { emblemFrame } from "@johnmorrisdotca/dougu-sports/turn";
278
-
279
- const at = (yaw) => emblemFrame("medal:gold", { engrave: "MVP", engraveBack: "2026", yaw });
280
- console.log(at(0).includes(">MVP<"), at(180).includes(">MVP<"), at(180).includes(">2026<")); // true false true
281
- ```
282
-
283
- Turned, the engraving goes with its face: squeezed with a medal, hidden on its back (which has an engraving of its own when `engraveBack` is given), and on a cup set letter by letter round the plinth, so it foreshortens, slides behind the edge and comes round again. A drawn numeral or star that an engraving replaces is left out.
283
+ `engrave` (one string, any text, Japanese included), or `label`, `year` and `rank`, cuts text into a medal, a place badge, the plaque, the belt, a ring, a banner, a pennant and the plinth of every cup that stands on one, in the ink that reads on the metal, and it turns with the emblem. Every option, the back of a medal (`engraveBack`) and every example: [engraving](./docs/engraving.md).
284
284
 
285
285
  ### Draw a championship pennant
286
286
 
@@ -311,7 +311,7 @@ import { EMBLEM_GROUPS, EMBLEM_IDS, SPORT_NAMES } from "@johnmorrisdotca/dougu-s
311
311
 
312
312
  console.log(Object.keys(EMBLEM_GROUPS).join(" ")); // award trophy medal crest ball puck gear sport pennant
313
313
  console.log(EMBLEM_IDS.includes("ball:soccer")); // true
314
- console.log(SPORT_NAMES.length); // 38
314
+ console.log(SPORT_NAMES.length); // 42
315
315
  ```
316
316
 
317
317
  ### Check a string from outside
@@ -429,10 +429,10 @@ An emblem is a small object: `id`, `en` and `ja` names, a `source` (who drew it)
429
429
  | `ball` | 117 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/` |
430
430
  | `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` |
431
431
  | `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/` |
432
- | `sport` | One pictogram for each of the thirty-eight sports | `src/emblems/sport/` |
432
+ | `sport` | One pictogram for each of the forty-two sports | `src/emblems/sport/` |
433
433
  | `pennant` | A felt championship pennant on a dowel, with a stitched edge, lettered with its words and its year | `src/emblems/pennant/` |
434
434
 
435
- The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT_NAMES` (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball): NFL, CFL, IFAF, NHL, NBA, MLB, soccer, curling, tennis, volleyball, badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet, netball, swimming, water polo, diving, artistic swimming, lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey, handball, athletics and skating. How the trophies are drawn, and what each stands for, is in [docs/emblems.md](./docs/emblems.md); the balls and the gear are described in [src/emblems/README.md](./src/emblems/README.md).
435
+ The forty-two sports the ball, gear and sport emblems are made for are `SPORT_NAMES` (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball; the four combat sports, MMA, boxing, wrestling and professional wrestling, have a pictogram and no ball or gear yet): NFL, CFL, IFAF, NHL, NBA, MLB, soccer, curling, tennis, volleyball, badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet, netball, swimming, water polo, diving, artistic swimming, lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey, handball, athletics and skating. How the trophies are drawn, and what each stands for, is in [docs/emblems.md](./docs/emblems.md); the balls and the gear are described in [src/emblems/README.md](./src/emblems/README.md).
436
436
 
437
437
  ## API
438
438
 
@@ -463,7 +463,7 @@ The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT
463
463
  | `EMBLEM_IDS`, `EMBLEM_GROUPS`, `EMBLEM_FOLDERS`, `EMBLEM_ALIASES` | Every id, the groups, the folder of each group's art, and the short names (`cup` for `trophy:cup`) |
464
464
  | `AWARD_IDS`, `TROPHY_IDS`, `MEDAL_IDS`, `CREST_IDS`, `BALL_IDS`, `PUCK_IDS`, `GEAR_IDS`, `SPORT_IDS`, `PENNANT_IDS` | The ids of each group |
465
465
  | `MEDAL_KINDS`, `CREST_SHAPES` | The kinds of medal, and the shapes of crest |
466
- | `SPORT_NAMES` | The thirty-eight sports |
466
+ | `SPORT_NAMES` | The forty-two sports |
467
467
  | `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)) |
468
468
  | `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 |
469
469
  | `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 |
@@ -484,7 +484,7 @@ The thirty-eight sports the ball, gear and sport emblems are made for are `SPORT
484
484
  | `initials` | Up to three letters (a crest, or the championship banner) | none: the crest has a star, the banner a ring and a star |
485
485
  | `theme` | `"inherit"`, `"auto"`, `"light"`, `"dark"` | `"inherit"` |
486
486
  | `grain` | `true` or `false` (a ball only) | on for a ball of 48 pixels or more that is not turning |
487
- | `engrave` | Any text, up to three lines of 24 letters, Japanese included: cut into the face (see [Engrave an emblem](#engrave-an-emblem)) | none |
487
+ | `engrave` | Any text, up to three lines of 24 letters, Japanese included: cut into the face (see [engraving](./docs/engraving.md)) | none |
488
488
  | `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) |
489
489
  | `engraveBack` | The text of a medal's, ring's or banner's back, shown when it is turned over | a plain back |
490
490
  | `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 |
@@ -645,7 +645,7 @@ Bug reports and ideas go in the [issues](https://github.com/johnmorrisdotca/doug
645
645
 
646
646
  ## Changes
647
647
 
648
- See [CHANGELOG.md](./CHANGELOG.md). 0.12.0 adds forty-seven named trophies, each a close likeness measured on a photograph (321 emblems); 0.11.0 gives the era soccer balls neutral ids (the old ones stay as aliases), new looks and a second 1980s ball (274 emblems); 0.10.0 adds a standalone ribbon and the nets and posts of sepak takraw, netball and teqball from their rulebooks' sizes (273 emblems); 0.9.0 lets the baseball, the softball and the classic soccer balls be painted and printed: solid and two-tone colours, a logo of your own wrapped onto the ball, stamped text, an original cursive word and a small mark, all turning with the ball ([docs/custom-balls.md](./docs/custom-balls.md)); 0.8.0 makes `bindTurn` light: it takes an emblem object and then needs no registry, so a turnable cup is about 9.4 kB gzipped instead of about 81 kB, and an id loads the registry on demand; 0.7.3 turns the build, docs and picture scripts, the browser tests and the demo's source from JavaScript into TypeScript, with no change to the package; 0.7.2 makes every docs page single-language (a page in Japanese beside each page that had Japanese words in it, and a test that holds them apart), with no change to the pictures; 0.7.1 puts real countries (Canada, Japan) in the crest and puck examples in place of made-up teams, with no change to the code; 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.
648
+ See [CHANGELOG.md](./CHANGELOG.md). 0.13.0 adds a pictogram for each of four combat sports, MMA (a cage), boxing (a glove), wrestling (two wrestlers on the mat) and professional wrestling (a ring with ropes), in the three styles (325 emblems); 0.12.0 adds forty-seven named trophies, each a close likeness measured on a photograph (321 emblems); 0.11.0 gives the era soccer balls neutral ids (the old ones stay as aliases), new looks and a second 1980s ball (274 emblems); 0.10.0 adds a standalone ribbon and the nets and posts of sepak takraw, netball and teqball from their rulebooks' sizes (273 emblems); 0.9.0 lets the baseball, the softball and the classic soccer balls be painted and printed: solid and two-tone colours, a logo of your own wrapped onto the ball, stamped text, an original cursive word and a small mark, all turning with the ball ([docs/custom-balls.md](./docs/custom-balls.md)); 0.8.0 makes `bindTurn` light: it takes an emblem object and then needs no registry, so a turnable cup is about 9.4 kB gzipped instead of about 81 kB, and an id loads the registry on demand; 0.7.3 turns the build, docs and picture scripts, the browser tests and the demo's source from JavaScript into TypeScript, with no change to the package; 0.7.2 makes every docs page single-language (a page in Japanese beside each page that had Japanese words in it, and a test that holds them apart), with no change to the pictures; 0.7.1 puts real countries (Canada, Japan) in the crest and puck examples in place of made-up teams, with no change to the code; 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.
649
649
 
650
650
  ## Credits
651
651
 
@@ -124,6 +124,10 @@ export const EMBLEM_DESCRIPTIONS = {
124
124
  "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: "柔道衣。手首まで届く袖と、右前に合わせた襟の上衣、本結びで二本の端を垂らした帯、ズボン" },
125
125
  "sport:kyudo": { en: "A long bow, its string and an arrow", ja: "弦を張った長弓と矢" },
126
126
  "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字に合わせた短めの上衣、本結びの帯、まっすぐなズボン" },
127
+ "sport:mma": { en: "A mixed martial arts cage seen from above: an eight-sided floor inside a fence of diamond mesh", ja: "上から見た総合格闘技のケージ。ひし形の金網に囲まれた八角形の床" },
128
+ "sport:boxing": { en: "A boxing glove: the padded fist with the thumb against its side, the fold of the fingers and the cuff with its band", ja: "ボクシンググローブ。親指を添えた丸いこぶしと、指の折り目、バンドの付いた袖口" },
129
+ "sport:wrestling": { en: "Two wrestlers in the tie-up, heads up and hands on each other's shoulders, knees bent, on the round of the mat", ja: "マットの円の上で組み合う二人のレスラー。互いの肩に手をかけ、膝を曲げて構える" },
130
+ "sport:prowrestling": { en: "A professional wrestling ring seen from a corner: the canvas, a post at each corner with three ropes between them, and the apron", ja: "角から見たプロレスのリング。キャンバス、四隅のコーナーポストとその間に張った三本のロープ、エプロン" },
127
131
  "gear:gunbai": { en: "The sumo referee's war fan, with its tassel", ja: "行司が持つ軍配と、その房" },
128
132
  "gear:mawashi": { en: "The wrestler's belt, with the stiff cords that hang from its front", ja: "力士の廻しと、前に垂らした下がり" },
129
133
  "gear:shinai": { en: "The kendo practice sword: four bamboo staves with a leather tip, a tie and a hilt", ja: "剣道の竹刀。四つ割りの竹に先革、中結、柄が付く" },
@@ -2,9 +2,9 @@ import type { BallId, GearId, MedalId, SportName, TrophyId } from "./emblem.ids.
2
2
  /** The equipment of one sport. */
3
3
  export interface SportEquipment {
4
4
  sport: SportName;
5
- /** The ball, or the implement that stands for one (the puck, the shuttlecock, the shot). Swimming, diving, artistic swimming, skating and the Japanese sports (sumo, kendo, judo, kyudo, karate) have none. */
5
+ /** The ball, or the implement that stands for one (the puck, the shuttlecock, the shot). Swimming, diving, artistic swimming, skating, the Japanese sports (sumo, kendo, judo, kyudo, karate) and the combat sports (MMA, boxing, wrestling, professional wrestling) have none. */
6
6
  ball?: BallId;
7
- /** The gear the sport has an emblem for, most telling first. Empty where the package has none yet. */
7
+ /** The gear the sport has an emblem for, most telling first. Empty where the package has none yet (the combat sports). */
8
8
  gear: GearId[];
9
9
  /** The trophy that stands for the sport's cup: its own where the package draws one, otherwise a plain cup, bowl or globe. */
10
10
  trophy: TrophyId;
@@ -38,6 +38,10 @@ const TABLE = {
38
38
  judo: [undefined, ["gear:judogi", "gear:obi"], "trophy:cup", GOLD],
39
39
  kyudo: [undefined, ["gear:yumi", "gear:ya"], "trophy:cup"],
40
40
  karate: [undefined, ["gear:karate-gi"], "trophy:cup", GOLD],
41
+ mma: [undefined, [], "trophy:belt"],
42
+ boxing: [undefined, [], "trophy:belt", GOLD],
43
+ wrestling: [undefined, [], "trophy:cup", GOLD],
44
+ prowrestling: [undefined, [], "trophy:belt"],
41
45
  };
42
46
  /**
43
47
  * What a sport is played and won with, as ids of the registry: `sportEquipment("nhl")` is the puck, a stick, a skate, a goalie's mask and a net, and the hockey cup. The arrays are new each call. An unknown sport is an error.
@@ -1,5 +1,5 @@
1
- /** The thirty-eight sports the emblems are made for (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball): the names that `ball:<sport>`, `gear:<sport>` and `sport:<sport>` use. */
2
- export declare const SPORT_NAMES: readonly ["nfl", "cfl", "ifaf", "nhl", "nba", "mlb", "soccer", "curling", "tennis", "volleyball", "badminton", "pickleball", "tabletennis", "padel", "squash", "racquetball", "sepaktakraw", "teqball", "roundnet", "netball", "swimming", "waterpolo", "diving", "artisticswimming", "lacrosse", "rugby", "afl", "gaelic", "cricket", "fieldhockey", "handball", "athletics", "skating", "sumo", "kendo", "judo", "kyudo", "karate"];
1
+ /** The forty-two sports the emblems are made for (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball; the four combat sports, MMA, boxing, wrestling and professional wrestling, have a pictogram and no ball or gear yet): the names that `ball:<sport>`, `gear:<sport>` and `sport:<sport>` use. */
2
+ export declare const SPORT_NAMES: readonly ["nfl", "cfl", "ifaf", "nhl", "nba", "mlb", "soccer", "curling", "tennis", "volleyball", "badminton", "pickleball", "tabletennis", "padel", "squash", "racquetball", "sepaktakraw", "teqball", "roundnet", "netball", "swimming", "waterpolo", "diving", "artisticswimming", "lacrosse", "rugby", "afl", "gaelic", "cricket", "fieldhockey", "handball", "athletics", "skating", "sumo", "kendo", "judo", "kyudo", "karate", "mma", "boxing", "wrestling", "prowrestling"];
3
3
  export type SportName = (typeof SPORT_NAMES)[number];
4
4
  /** The awards: a medal on a ribbon, a badge, a crown, a star and a shield. */
5
5
  export declare const AWARD_IDS: readonly ["award:medal", "award:badge", "award:crown", "award:star", "award:shield", "award:ribbon"];
@@ -32,7 +32,7 @@ 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"];
34
34
  export type PennantId = (typeof PENNANT_IDS)[number];
35
- /** The sports' own emblems: one pictogram for each of the thirty-eight. */
35
+ /** The sports' own emblems: one pictogram for each of the forty-two. */
36
36
  export type SportEmblemId = `sport:${SportName}`;
37
37
  export declare const SPORT_IDS: readonly SportEmblemId[];
38
38
  /** Every emblem id. */
@@ -46,7 +46,7 @@ export declare const EMBLEM_GROUPS: {
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-retro-pentagons", "ball:soccer-retro-leaves", "ball:soccer-retro-rosette", "ball:soccer-retro-star", "ball:soccer-retro-pinwheel", "ball:soccer-retro-kites", "ball:soccer-14-panel-double-border", "ball:soccer-8-panel-plain", "ball:soccer-6-panel-bands", "ball:soccer-6-panel-diamonds", "ball:soccer-20-panel-dots", "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
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:takraw-net", "gear:netball-post", "gear:teqball-table", "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
- 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")[];
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" | "sport:mma" | "sport:boxing" | "sport:wrestling" | "sport:prowrestling")[];
50
50
  readonly pennant: readonly ["pennant:championship"];
51
51
  };
52
52
  export type EmblemGroup = keyof typeof EMBLEM_GROUPS;
@@ -1,10 +1,11 @@
1
1
  // The ids of the emblems, in their groups, and the types they make. Nothing is imported: this file is only names, so it costs nothing to read. An id is `<group>:<name>`.
2
2
  // Each list below holds the emblems that exist. The art for the rest arrives group by group (docs/layout.md), and each arrival adds its names here and its entry to emblem.registry.ts.
3
- /** The thirty-eight sports the emblems are made for (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball): the names that `ball:<sport>`, `gear:<sport>` and `sport:<sport>` use. */
3
+ /** The forty-two sports the emblems are made for (the five Japanese ones, sumo, kendo, judo, kyudo and karate, have a pictogram and their gear, and no ball; the four combat sports, MMA, boxing, wrestling and professional wrestling, have a pictogram and no ball or gear yet): the names that `ball:<sport>`, `gear:<sport>` and `sport:<sport>` use. */
4
4
  export const SPORT_NAMES = [
5
5
  "nfl", "cfl", "ifaf", "nhl", "nba", "mlb", "soccer", "curling", "tennis", "volleyball", "badminton", "pickleball", "tabletennis", "padel", "squash", "racquetball", "sepaktakraw", "teqball", "roundnet", "netball",
6
6
  "swimming", "waterpolo", "diving", "artisticswimming", "lacrosse", "rugby", "afl", "gaelic", "cricket", "fieldhockey", "handball", "athletics", "skating",
7
7
  "sumo", "kendo", "judo", "kyudo", "karate",
8
+ "mma", "boxing", "wrestling", "prowrestling",
8
9
  ];
9
10
  /** The awards: a medal on a ribbon, a badge, a crown, a star and a shield. */
10
11
  export const AWARD_IDS = ["award:medal", "award:badge", "award:crown", "award:star", "award:shield", "award:ribbon"];
@@ -126,6 +126,10 @@ import { SPORT_KENDO } from "./sport/kendo.js";
126
126
  import { SPORT_JUDO } from "./sport/judo.js";
127
127
  import { SPORT_KYUDO } from "./sport/kyudo.js";
128
128
  import { SPORT_KARATE } from "./sport/karate.js";
129
+ import { SPORT_MMA } from "./sport/mma.js";
130
+ import { SPORT_BOXING } from "./sport/boxing.js";
131
+ import { SPORT_WRESTLING } from "./sport/wrestling.js";
132
+ import { SPORT_PROWRESTLING } from "./sport/prowrestling.js";
129
133
  /** The balls and the gear are drawn by families, each family in a module of its own, and listed in order by their own indexes. */
130
134
  const PIECES = Object.fromEntries([...BALLS, ...PUCKS, ...GEARS].map((piece) => [piece.id, piece]));
131
135
  /** The emblems drawn one to a module: every id but the balls and the gear. A missing or extra entry is a type error. */
@@ -256,6 +260,10 @@ const OWN = {
256
260
  "sport:judo": SPORT_JUDO,
257
261
  "sport:kyudo": SPORT_KYUDO,
258
262
  "sport:karate": SPORT_KARATE,
263
+ "sport:mma": SPORT_MMA,
264
+ "sport:boxing": SPORT_BOXING,
265
+ "sport:wrestling": SPORT_WRESTLING,
266
+ "sport:prowrestling": SPORT_PROWRESTLING,
259
267
  };
260
268
  /** Every emblem, by id. */
261
269
  export const EMBLEM_TABLE = { ...OWN, ...PIECES };
@@ -0,0 +1,2 @@
1
+ /** Boxing. */
2
+ export declare const SPORT_BOXING: import("../emblem.core.ts").Emblem<import("../emblem.shapes.ts").FlatModel>;
@@ -0,0 +1,16 @@
1
+ // Boxing: a pictogram of a boxing glove, drawn for this package in a 64 by 64 box: the padded fist with the thumb lying against its side, the curve where the fingers fold over, and the cuff with its band. It
2
+ // carries no maker's mark. The metal style paints its main shapes with a grey sheet, the line style draws one outline.
3
+ import { defineIcon } from "../emblem.shapes.js";
4
+ /** Boxing. */
5
+ export const SPORT_BOXING = /* @__PURE__ */ defineIcon("sport:boxing", "Boxing", "ボクシング", "ours", {
6
+ metal: "flat",
7
+ ink: true,
8
+ front: [
9
+ ["m", "M22 25C22 12.5 29.5 5 40 5C51 5 57 12.5 57 24L57 36C57 41.5 54 45.5 49 46.6L49 50L24 50L24 46C22.4 43.4 22 40 22 36Z"],
10
+ ["m", "M13.5 28C9.8 28.4 8.4 33.6 11 38.4C13 42 17.6 45 24 45L24 33Z"],
11
+ ["n", "M24 33C24 37 24 41 24 45"],
12
+ ["t", "M30 33C37 26.4 47 26.4 56 31"],
13
+ ["k", "M23 50H50V59H23Z"],
14
+ ["t", "M23 54.5H50"],
15
+ ],
16
+ });
@@ -0,0 +1,2 @@
1
+ /** Mixed martial arts. */
2
+ export declare const SPORT_MMA: import("../emblem.core.ts").Emblem<import("../emblem.shapes.ts").FlatModel>;
@@ -0,0 +1,13 @@
1
+ // MMA: a pictogram of a cage seen from above, drawn for this package in a 64 by 64 box: an eight-sided floor inside a fence of diamond mesh. It is a generic cage: no promotion's mark and
2
+ // no name on it. The metal style paints its main shapes with a grey sheet, the line style draws one outline.
3
+ import { defineIcon, polygon } from "../emblem.shapes.js";
4
+ /** Mixed martial arts. */
5
+ export const SPORT_MMA = /* @__PURE__ */ defineIcon("sport:mma", "MMA", "総合格闘技", "ours", {
6
+ metal: "flat",
7
+ ink: true,
8
+ front: [
9
+ ["m", polygon(32, 32, 29, 8, 22.5)],
10
+ ["t", "M5.2 22.8L22.8 5.2M5.2 41.2L22.8 58.8M5.2 31.8L31.8 5.2M5.2 32.2L31.8 58.8M5.2 40.8L40.8 5.2M5.2 23.2L40.8 58.8M8.6 46.4L46.4 8.6M8.6 17.6L46.4 55.4M13.1 50.9L50.9 13.1M13.1 13.1L50.9 50.9M17.6 55.4L55.4 17.6M17.6 8.6L55.4 46.4M23.2 58.8L58.8 23.2M23.2 5.2L58.8 40.8M32.2 58.8L58.8 32.2M32.2 5.2L58.8 31.8M41.2 58.8L58.8 41.2M41.2 5.2L58.8 22.8"],
11
+ ["n", polygon(32, 32, 29, 8, 22.5)],
12
+ ],
13
+ });
@@ -0,0 +1,2 @@
1
+ /** Professional wrestling. */
2
+ export declare const SPORT_PROWRESTLING: import("../emblem.core.ts").Emblem<import("../emblem.shapes.ts").FlatModel>;
@@ -0,0 +1,16 @@
1
+ // Professional wrestling: a pictogram of the ring, drawn for this package in a 64 by 64 box: the square canvas seen from a corner, a post at each corner with three ropes strung between them and the apron
2
+ // along the front edge. The metal style paints the canvas with a grey sheet, the line style draws one outline.
3
+ import { defineIcon } from "../emblem.shapes.js";
4
+ /** Professional wrestling. */
5
+ export const SPORT_PROWRESTLING = /* @__PURE__ */ defineIcon("sport:prowrestling", "Pro wrestling", "プロレス", "ours", {
6
+ metal: "flat",
7
+ ink: true,
8
+ front: [
9
+ ["m", "M6 50L58 50L47 38L17 38Z"],
10
+ ["t", "M17 38L17 17M47 38L47 17M17 22.5L47 22.5M17 28L47 28M17 33.5L47 33.5"],
11
+ ["k", "M6 50H58V58H6Z"],
12
+ ["b", "M6 50L6 20M58 50L58 20"],
13
+ ["t", "M6 26L17 22.5M6 33L17 28M6 40L17 33.5M58 26L47 22.5M58 33L47 28M58 40L47 33.5M6 26L58 26M6 33L58 33M6 40L58 40"],
14
+ ["k", "M3.2 36H8.8V41H3.2ZM55.2 36H60.8V41H55.2Z"],
15
+ ],
16
+ });
@@ -0,0 +1,2 @@
1
+ /** Wrestling. */
2
+ export declare const SPORT_WRESTLING: import("../emblem.core.ts").Emblem<import("../emblem.shapes.ts").FlatModel>;
@@ -0,0 +1,16 @@
1
+ // Wrestling: a pictogram of two wrestlers in the tie-up, drawn for this package in a 64 by 64 box: heads up, a hand on each other's shoulder, backs leaning in, knees bent and feet planted, on the round of the mat.
2
+ // The metal style paints the heads and the mat with a grey sheet, the line style draws one outline.
3
+ import { circlePath as circ, defineIcon, ellipsePath } from "../emblem.shapes.js";
4
+ /** Wrestling. */
5
+ export const SPORT_WRESTLING = /* @__PURE__ */ defineIcon("sport:wrestling", "Wrestling", "レスリング", "ours", {
6
+ metal: "flat",
7
+ ink: true,
8
+ front: [
9
+ ["m", ellipsePath(32, 57, 30, 5.5)],
10
+ ["m", circ(19, 11.5, 6)],
11
+ ["m", circ(45, 11.5, 6)],
12
+ ["b", "M21 21L15 37L8 46L7 56M15 37L23 47L21 56"],
13
+ ["b", "M43 21L49 37L56 46L57 56M49 37L41 47L43 56"],
14
+ ["b", "M21 25L34 24M43 29L30 28"],
15
+ ],
16
+ });
package/dist/index.d.ts CHANGED
@@ -129,6 +129,10 @@ export { SPORT_KENDO } from "./emblems/sport/kendo.ts";
129
129
  export { SPORT_JUDO } from "./emblems/sport/judo.ts";
130
130
  export { SPORT_KYUDO } from "./emblems/sport/kyudo.ts";
131
131
  export { SPORT_KARATE } from "./emblems/sport/karate.ts";
132
+ export { SPORT_MMA } from "./emblems/sport/mma.ts";
133
+ export { SPORT_BOXING } from "./emblems/sport/boxing.ts";
134
+ export { SPORT_WRESTLING } from "./emblems/sport/wrestling.ts";
135
+ export { SPORT_PROWRESTLING } from "./emblems/sport/prowrestling.ts";
132
136
  export { BALL_AFL } from "./emblems/ball/ball.afl.ts";
133
137
  export { BALL_BASEBALL, BALL_SOFTBALL, BALL_SOCCER, BALL_SOCCER_COLOUR, BALL_SOCCER_ORANGE, BALL_SOCCER_YELLOW } from "./emblems/ball/ball.printable.ts";
134
138
  export { printed } from "./emblems/ball/ball.print.ts";
package/dist/index.js CHANGED
@@ -130,6 +130,10 @@ export { SPORT_KENDO } from "./emblems/sport/kendo.js";
130
130
  export { SPORT_JUDO } from "./emblems/sport/judo.js";
131
131
  export { SPORT_KYUDO } from "./emblems/sport/kyudo.js";
132
132
  export { SPORT_KARATE } from "./emblems/sport/karate.js";
133
+ export { SPORT_MMA } from "./emblems/sport/mma.js";
134
+ export { SPORT_BOXING } from "./emblems/sport/boxing.js";
135
+ export { SPORT_WRESTLING } from "./emblems/sport/wrestling.js";
136
+ export { SPORT_PROWRESTLING } from "./emblems/sport/prowrestling.js";
133
137
  export { BALL_AFL } from "./emblems/ball/ball.afl.js";
134
138
  export { BALL_BASEBALL, BALL_SOFTBALL, BALL_SOCCER, BALL_SOCCER_COLOUR, BALL_SOCCER_ORANGE, BALL_SOCCER_YELLOW } from "./emblems/ball/ball.printable.js";
135
139
  export { printed } from "./emblems/ball/ball.print.js";
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.12.0";
1
+ export declare const VERSION = "0.13.0";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.12.0";
1
+ export const VERSION = "0.13.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@johnmorrisdotca/dougu-sports",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Dougu Sports 道具, sports emblems as SVG strings: trophies, medals, crests, sport icons, and the ball and gear of every sport, in metal, line or flat colour, with optional 3D turning. Light and dark, accessible, tree-shakeable. Zero dependencies.",
5
5
  "keywords": [
6
6
  "sports",
@@ -130,7 +130,8 @@
130
130
  "flags": "node scripts/make-flags.mjs",
131
131
  "site": "pnpm build && node scripts/site.ts",
132
132
  "test:demo": "pnpm site && playwright test",
133
- "screenshots": "pnpm site && node scripts/screenshots.ts"
133
+ "screenshots": "pnpm site && node scripts/screenshots.ts",
134
+ "animations": "pnpm build && node scripts/animations.ts"
134
135
  },
135
136
  "devDependencies": {
136
137
  "@eslint/js": "^9.0.0",