@johnmorrisdotca/kyogijo-stadiums 0.21.0 → 0.22.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 +8 -0
- package/NOTICE.md +1 -1
- package/README.md +26 -18
- package/dist/budo/describe.js +15 -0
- package/dist/budo/looks.js +6 -0
- package/dist/budo/mat.d.ts +34 -0
- package/dist/budo/mat.js +71 -0
- package/dist/budo/plan.d.ts +2 -0
- package/dist/budo/plan.js +11 -3
- package/dist/budo/types.d.ts +6 -4
- package/dist/budo.style.js +5 -2
- package/dist/crowd.js +2 -0
- package/dist/draw.js +4 -3
- package/dist/features.js +11 -0
- package/dist/fields.types.d.ts +1 -1
- package/dist/heat.zones.js +1 -1
- package/dist/homeside.js +2 -0
- package/dist/leagues/combat.d.ts +43 -2
- package/dist/leagues/combat.js +40 -1
- package/dist/leagues/sources.js +3 -0
- package/dist/leagues/types.d.ts +1 -1
- package/dist/leagues.d.ts +1 -1
- package/dist/leagues.js +24 -3
- package/dist/outline.js +1 -0
- package/dist/ranges.names.js +1 -0
- package/dist/score.js +3 -0
- package/dist/strings.d.ts +7 -0
- package/dist/strings.js +22 -8
- package/dist/types.d.ts +2 -2
- package/dist/units.js +2 -0
- package/dist/uprights.budo.js +7 -2
- package/dist/uprights.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ All notable changes to this project are written here. The format follows
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.22.0] - 2026-10-20
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **The wrestling mats** (`sport: "wrestling"`, [the combat sports page](./docs/combat.md)): the UWW's mat (freestyle, Greco-Roman and women's wrestling are wrestled on the same one: a circle of 9 m with a protection area of 1.5 m, an orange passivity band of 1 m inside the circle, a central circle of 1 m, a platform of 0.80 to 1.10 m), the NCAA's folkstyle mat (a competition circle of 32 to 42 feet with a 2 inch line, a matted area of at least 5 feet, two starting lines closed by a green and a red line) and the high schools' (a circle of at least 28 feet, a safety mat of about 5 feet, the circle of 10 feet, optional from 2024-25, the same starting lines), to scale. The leagues are `uww`, `ncaa-wrestling` and `nfhs-wrestling`; `budo.size` (the circle), `budo.height` (the platform), `budo.circle` and `budo.start` stay within each league and refuse a number outside it; the looks are `blue-red`, `green-beige` and `yellow-blue`; `RANGES.wrestling` has `start`, `passivity` (the UWW's) and `half`. In 3D the UWW's platform is a solid block with the mat as its top, and a folkstyle mat lies on the floor. A figure that is the rule's, one that is typical and one that is ours are told apart in [Sources](./docs/sources.md#the-combat-sports). It is the forty-second sport.
|
|
15
|
+
- **The demo** has the mats in its sport picker, with their league and looks, the score of a bout and the 3D view.
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
## [0.21.0] - 2026-10-20
|
|
11
19
|
|
|
12
20
|
### Added
|
package/NOTICE.md
CHANGED
|
@@ -35,7 +35,7 @@ picture or code of the sources is copied; each source is named here so that the
|
|
|
35
35
|
| `leagues`: the skating rinks | The International Skating Union's Sports Rules - Speed Skating (Special Regulations and Technical Rules, Rules 203 to 206, 226 to 228 and 253 to 257, and "H. Track", effective 12 June 2026), Special Regulations and Technical Rules Short Track Speed Skating (Rule 280 and the diagram of the tracks, 2024) and Sports Rules - Figure Skating (Rule 342, effective 12 June 2026) | Facts; no text or drawing copied |
|
|
36
36
|
| `leagues` and `halls`: the budō surfaces | The International Judo Federation's Sport and Organisation Rules (version of 21 January 2026, 8.7, Article 9, B1.8; and the June 2020 version, 18.1) and its Kata Commission's Tournament Handbook (2024) and Criteria for the Evaluation (January 2025); the All Japan Judo Federation's 大会運営ガイドブック2023; the World Karate Federation's Kumite and Kata Competition Rules (2026); the International Kendo Federation's Regulations of Kendo Shiai and Shinpan (Article 2 and Figure 1); the Japan Sumo Association's 相撲規則 土俵規定 第一条 and 大相撲クイズ, as the Sasakawa Sports Foundation and ozumo.jp quote them; the All Nippon Kyudo Federation's 弓道競技運営要領 (2016) and the National Sports Festival 2015's rules for kinteki and enteki; the tatami sizes of English and Japanese Wikipedia; the Kodokan's 施設のご案内, the Nippon Budokan's 日本武道館建物等概要 (October 2021), and English and Japanese Wikipedia and Wikidata on the five halls and the kimarite | Facts |
|
|
37
37
|
| `frames`: the soccer providers' coordinates | StatsBomb's Open Data Events specification (Appendix 2), the Wyscout and Impect glossaries, the Metrica Sports and SkillCorner open-data READMEs; for Opta, Tracab and Second Spectrum, whose specifications are not public, the figures of mplsoccer, ggsoccer, kloppy and floodlight (docs/sources.md) | Facts; no text, table or code copied |
|
|
38
|
-
| `leagues`: the MMA cage
|
|
38
|
+
| `leagues`: the MMA cage, the boxing ring and the wrestling mats | The Nevada Rules of Unarmed Combat (NRUC 5.010, the file of 20 November 2024), Oregon Administrative Rule 230-070-0025, the IMMAF's Unified Rules for amateur, junior and senior competition (January 2021), Wisconsin's SPS 192.38, the UWW's Wrestling Rules (January 2026), the NCAA's Wrestling Rules (2025-26 and 2026-27), the NFHS's mat rules as the KHSAA, Resilite and the NJSIAA quote them, the WBC Amateur competition rules (2026), Ontario's Amateur combative sport rules: Boxing (Part II), and the English Wikipedia articles "Mixed martial arts cage" (revision 1377260922), "Mixed martial arts" (revision 1381048799) and "Boxing ring" (revision 1370389178), for the sizes that are typical | Facts, CC BY-SA 4.0 for the Wikipedia text read |
|
|
39
39
|
| `parks`: the fence of each ballpark, current and past, and the seasons of a past park | The distances (and, for a park whose fence moved, the years an article dates them) published in the English and Japanese Wikipedia article of each park, at the revision cited below; the seasons a club played there from the same article's list of tenants | Facts. The articles are CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/); none of their text, tables or images is used, and the angles between the distances are our own reading |
|
|
40
40
|
| `parks`: the Wikidata item of each ballpark (`wikidata`) | The item (`Q49136`) that each cited article is linked to, read with the MediaWiki API (`pageprops`, `wikibase_item`) and checked against the item's label | Wikidata's data is CC0 (https://creativecommons.org/publicdomain/zero/1.0/) |
|
|
41
41
|
| `parks` and `grounds`: the names (`name`, `nameJa`, `readingJa`, `localName`, `aliases`) | The names are facts. Each alias says where it was read (`source`): the title of the English or Japanese Wikipedia article a place cites (with its revision), a name the infobox or the opening text of the same revision gives (a former or sponsor's name with the years it dates, a nickname, the name in Japanese and its reading), or Wikidata's labels, aliases and properties "official name" (P1448), "nickname" (P1449), "name" (P2561), "short name" (P1813), read with the Wikidata API by `scripts/fetch-names.mjs` into `scripts/names.wikidata.json` | Facts; Wikidata's data is CC0 (https://creativecommons.org/publicdomain/zero/1.0/), and the articles are CC BY-SA 4.0 as above, none of their text copied. Which name is the everyday one is our reading, in docs/references.md ("Names") |
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<h1 align="center">Kyogijo Stadiums <sub>競技場</sub></h1>
|
|
2
2
|
|
|
3
3
|
<p align="center"><strong>Sports surfaces as SVG, drawn to scale, with the score on them.</strong><br>
|
|
4
|
-
The surfaces of forty-
|
|
4
|
+
The surfaces of forty-two sports, from football and curling to the budō and the combat sports, each drawn from its rulebook or its published distances, with each team's name and logo on its side and the score in the middle, a lineup, stands and a crowd, a pageant of flags and a 3D view. Wide or tall, light or dark, a badge for a list, a helper for React, a custom element and a frame for a page that runs no script. One function, no dependencies.</p>
|
|
5
5
|
|
|
6
6
|
<p align="center">
|
|
7
7
|
<a href="https://github.com/johnmorrisdotca/kyogijo-stadiums/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/johnmorrisdotca/kyogijo-stadiums/actions/workflows/ci.yml/badge.svg"></a>
|
|
@@ -72,29 +72,29 @@ console.log(svg.startsWith("<svg"), svg.includes("USA 3, Canada 2"));
|
|
|
72
72
|
|
|
73
73
|
## Features
|
|
74
74
|
|
|
75
|
-
- **Forty-
|
|
75
|
+
- **Forty-two surfaces, to scale.** The NFL, CFL and IFAF fields, the NHL rink, the NBA court, the soccer pitch and futsal court, the baseball field, the curling sheet, twelve net and racket sports, the pools, the athletics stadium, the skating rinks, seven field sports, the budō, the MMA cage, the boxing ring and the wrestling mats. Every figure is cited in [sources](./docs/sources.md). [The surfaces](./docs/surfaces.md).
|
|
76
76
|
- **Each league's rulebook.** `league: "fiba"` draws a court as FIBA marks it: 48 variants, from the WNBA, the NCAA and the IIHF to Little League, PONY, softball, Curling Canada, FIVB's beach volleyball, rugby league and the NLL's box lacrosse, each cited. [League variants](./docs/variants.md).
|
|
77
77
|
- **A realistic basketball floor.** `court: { hardwood: true }` draws maple boards that run the length of the court with staggered ends, grain, stained keys, the baskets and stanchions with soft shadows, a coaching box and benches, and a satin sheen, in every league and renderer. The clean floor stays the default. [Hardwood](./docs/hardwood.md).
|
|
78
78
|
- **The stands and the crowd.** `crowd: true` draws the seating round any surface that has spectators: a bowl, two sides, a horseshoe, courtside rows or a ballpark's grandstands, with the people as seeded heads and shoulders in the home colours and the empty seats showing (`density`, or `attendance` over `capacity`). [The crowd](./docs/crowd.md).
|
|
79
|
-
- **Curling, from the rule books.** A sheet from World Curling's and Curling Canada's rules, tall by default, with the board and the hammer in a score, `curlingStones` for the stones of an end,
|
|
80
|
-
- **Net, racket and court sports, from their rulebooks.** The ITF's, FIVB's (indoor, beach, sitting), BWF's, USA Pickleball's and ITTF's courts and table, the padel, squash, racquetball, sepak takraw, teqball, roundnet and netball courts, each in its look
|
|
81
|
-
- **Swimming, water polo, diving and artistic swimming, from World Aquatics' regulations.** The 50 or 25 m pool with its lanes, ropes, blocks and touch panels; the water polo field; the diving well; the artistic swimming area
|
|
82
|
-
- **Lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey and handball, from their rulebooks.** The fields and floors of World Lacrosse, World Rugby, the NRL, the AFL, the GAA, the FIH and the IHF, and a cricket ground with a boundary of your own. A score is goals and behinds, goals and points or
|
|
83
|
-
- **The athletics stadium, from World Athletics' rules.** The 400 m track with its lanes and staggers worked out from the running lines, curved and relay starts, hurdles, the steeplechase, every field event, a close-up of each start, the covered 200 m track,
|
|
84
|
-
- **The skating rinks, from the ISU's rules.** The 400 m speed skating track with its lanes, blocks and the lines of every race worked out lane by lane; the short track's oval; the figure skating rink
|
|
79
|
+
- **Curling, from the rule books.** A sheet from World Curling's and Curling Canada's rules, tall by default, with the board and the hammer in a score, `curlingStones` for the stones of an end, `show: "folded"` for the whole sheet with both houses enlarged beside it. [Curling](./docs/curling.md).
|
|
80
|
+
- **Net, racket and court sports, from their rulebooks.** The ITF's, FIVB's (indoor, beach, sitting), BWF's, USA Pickleball's and ITTF's courts and table, the padel, squash, racquetball, sepak takraw, teqball, roundnet and netball courts, each in its look, with a board of sets and games. [Net, racket and court sports](./docs/courts.md).
|
|
81
|
+
- **Swimming, water polo, diving and artistic swimming, from World Aquatics' regulations.** The 50 or 25 m pool with its lanes, ropes, blocks and touch panels; the water polo field; the diving well; the artistic swimming area. A race's lanes carry names, flags, places and times, with a replay. [Pools](./docs/pools.md).
|
|
82
|
+
- **Lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey and handball, from their rulebooks.** The fields and floors of World Lacrosse, World Rugby, the NRL, the AFL, the GAA, the FIH and the IHF, and a cricket ground with a boundary of your own. A score is goals and behinds, goals and points, or runs, wickets and overs. [Field sports](./docs/field-sports.md).
|
|
83
|
+
- **The athletics stadium, from World Athletics' rules.** The 400 m track with its lanes and staggers worked out from the running lines, curved and relay starts, hurdles, the steeplechase, every field event, a close-up of each start, the covered 200 m track, with lane draws, results and a race replay. [The athletics stadium](./docs/athletics.md).
|
|
84
|
+
- **The skating rinks, from the ISU's rules.** The 400 m speed skating track with its lanes, blocks and the lines of every race worked out lane by lane; the short track's oval; the figure skating rink with its judges' seats; and results, a race replay and the elements of a programme. [The skating rinks](./docs/skating.md).
|
|
85
85
|
- **The budō, from the federations' rules.** The IJF's and the All Japan Judo Federation's judo areas, the WKF's karate areas, the kendo shiai-jo, the sumo dohyō, the kyūdōjō, and **a dojo builder**: a floor of tatami laid as real units, in jō or metres, with its walls, doors, windows and shrine. Scores are judo's ippon, waza-ari and shido, karate's and kendo's points and sumo's kimarite. [The budō](./docs/budo.md).
|
|
86
86
|
- **Soccer, to the Laws.** A pitch from Law 1 of the IFAB Laws of the Game of any size, with presets (international, UEFA, MLS, NCAA, the FA's 9-, 7- and 5-a-side, FIFA's futsal), half pitches, five mowing patterns, four goal styles, penalties and extra time in a score. [Soccer](./docs/soccer.md).
|
|
87
87
|
- **Every ballpark.** The 30 current MLB parks and 44 that MLB clubs have left, and the 12 home parks of Nippon Professional Baseball with eight other NPB grounds, each with its fence drawn from the distances published for it, as it stood in a season. [Ballparks](./docs/ballparks.md).
|
|
88
88
|
- **Soccer grounds, arenas and an atlas.** 64 soccer grounds at their published sizes, 167 NHL, NBA, WNBA and PWHL arenas (`drawKyogijo({ sport: "nhl", arena: "boston-garden" })`), and every park, ground, arena and budō hall (330 places) on a map, found by any of its names. [The grounds](./docs/grounds.md), [the arenas](./docs/arenas.md), [the atlas](./docs/atlas.md), [names](./docs/ballparks.md#names).
|
|
89
|
-
- **Walls and quirks.** How high the fence stands, stretch by stretch and season by season (the Green Monster at 37 feet 2 inches)
|
|
90
|
-
- **Special games.** A surface set inside another, to scale: an NHL rink on a ballpark's infield or a football stadium's field
|
|
89
|
+
- **Walls and quirks.** How high the fence stands, stretch by stretch and season by season (the Green Monster at 37 feet 2 inches) (`walls`); and Tal's Hill, Wrigley Field's ivy and basket, poles, bullpens and dugouts (`quirks`), each from the park's article, none guessed: [ballparks](./docs/ballparks.md).
|
|
90
|
+
- **Special games.** A surface set inside another, to scale: an NHL rink on a ballpark's infield or a football stadium's field or a baseball field laid over a London stadium's pitch. 18 games, each cited. [Special games](./docs/special-games.md).
|
|
91
91
|
- **Surfaces through the years.** `year: 1975` draws a surface as its league's rules marked it that season, each change cited. [Surfaces through the years](./docs/eras.md).
|
|
92
92
|
- **Score mode.** Each team's name and logo on its side (the end zones, the ends of the ice, the halves of the court, the dugouts) and the score large in the middle, with the competition, the status and the date, and the winner emphasised; a flag or a crest can be round, in a circle with a ring (`markShape: "round"`). [Score and layout](./docs/score.md#round-marks).
|
|
93
93
|
- **The situation of a game.** `situation` draws what is happening: hockey's power play or empty net and a shootout; baseball's runners lit on the diamond with a scorebug; football's line of scrimmage, first-down line, red zone and down-and-distance tag, with a drive chart; in the badge and the compact card too. [The situation](./docs/situation.md).
|
|
94
|
-
- **Lineups.** A `lineup` layer places a team's players by position code (`GK`, `CB`, `HK`, `C`) with no coordinates: it reads where each stands from a formation (36 of them, in 13 sports), draws a disc or a jersey with the shirt number and the name under it, a captain's C and a flag
|
|
95
|
-
- **A pageant.** Each team's flag or crest laid large over its half of the surface: `pageant: "carpet"` (a flag at its own ratio with a border) or `"stage"` (a crest on a round disc with a gold ring), an emblem or a trophy in the centre circle, the score in the middle or in the strip
|
|
96
|
-
- **Trophies, medals, balls and crests, by id.** `useEmblems(renderEmblem)` plugs in the sister package [Dougu Sports](https://johnmorrisdotca.github.io/dougu-sports/) in one line, and an id goes wherever a logo, a flag or a mark is taken: `logo: "crest:shield"`, `pageant: { emblem: "trophy:hockey-cup" }`, `"ball:puck"`.
|
|
97
|
-
- **Country flags, by code.** `useFlags(render)` plugs in the sister package [Hata](https://github.com/johnmorrisdotca/hata) through a small adapter, and a team's `flag: "CA"` is its flag: round in a round mark, at its own proportions on a banner, a badge or a carpet.
|
|
94
|
+
- **Lineups.** A `lineup` layer places a team's players by position code (`GK`, `CB`, `HK`, `C`) with no coordinates: it reads where each stands from a formation (36 of them, in 13 sports), draws a disc or a jersey with the shirt number and the name under it, a captain's C and a flag. [Lineups](./docs/team-shape.md#lineups).
|
|
95
|
+
- **A pageant.** Each team's flag or crest laid large over its half of the surface: `pageant: "carpet"` (a flag at its own ratio with a border) or `"stage"` (a crest on a round disc with a gold ring), an emblem or a trophy in the centre circle, the score in the middle or in the strip; an entrance in CSS for readers who have not asked for less motion. [The pageant](./docs/pageant.md).
|
|
96
|
+
- **Trophies, medals, balls and crests, by id.** `useEmblems(renderEmblem)` plugs in the sister package [Dougu Sports](https://johnmorrisdotca.github.io/dougu-sports/) in one line, and an id goes wherever a logo, a flag or a mark is taken: `logo: "crest:shield"`, `pageant: { emblem: "trophy:hockey-cup" }`, `"ball:puck"`. [Emblems](./docs/emblems.md).
|
|
97
|
+
- **Country flags, by code.** `useFlags(render)` plugs in the sister package [Hata](https://github.com/johnmorrisdotca/hata) through a small adapter, and a team's `flag: "CA"` is its flag: round in a round mark, at its own proportions on a banner, a badge or a carpet. [Flags](./docs/flags.md).
|
|
98
98
|
- **Zoom to a part of a surface.** `range: "offensive-zone"` crops a drawing to a rink's zone, a half court, the paint, the red zone, a soccer half, third or penalty area, the infield, a curling house, or a box of your own in any frame, with its data, heat, labels and score following. [Display ranges](./docs/ranges.md).
|
|
99
99
|
- **Wide, tall or fit the box.** Every surface lies wide or tall: tall turns it a quarter, keeps every word upright and puts the teams top and bottom. With `orientation: "auto"` the browser helpers follow the box.
|
|
100
100
|
- **Where a point lies, by the rules, and a click as a place.** `zoneAt("nhl", [69, 22], { frame: "nhl-api" })` names the zone and the area in it from the surface's own figures, with `isThreePointer`, `inSlot`, `isFair`, `isHomeRun` and the like; `clientPointToField(svg, x, y, { provider })` is a pointer's place in any of the frames, with the zone. [Zones](./docs/zones.md), [pointing](./docs/pointer.md).
|
|
@@ -119,7 +119,7 @@ console.log(svg.startsWith("<svg"), svg.includes("USA 3, Canada 2"));
|
|
|
119
119
|
| Part | What it is |
|
|
120
120
|
| --- | --- |
|
|
121
121
|
| `drawKyogijo`, `drawSurface`, `drawScore`, `drawBadge` | The drawing, as a string of SVG. |
|
|
122
|
-
| `SPORTS`, `PARKS`, `PARK_IDS`, `COURT_THEMES` | The forty-
|
|
122
|
+
| `SPORTS`, `PARKS`, `PARK_IDS`, `COURT_THEMES` | The forty-two sports, the 94 ballparks, the court looks. |
|
|
123
123
|
| `SOCCER_PITCHES`, `SOCCER_PROVIDERS`, `rescale`, `soccerSpec` | The soccer pitches, the data providers' coordinate systems and the map between them. |
|
|
124
124
|
| `GROUNDS`, `groundById` | The 64 soccer grounds, each pitch at its own size. |
|
|
125
125
|
| `EVENTS`, `eventOptions` | The 18 special games: a rink in a ballpark, a court on a carrier's deck, with `host` and `placement` in the options. |
|
|
@@ -233,7 +233,7 @@ console.log(box(wide), box(tall));
|
|
|
233
233
|
<br><em>The same game tall: the teams top and bottom, every word upright.</em>
|
|
234
234
|
</p>
|
|
235
235
|
|
|
236
|
-
[The surfaces](./docs/surfaces.md) lists the forty-
|
|
236
|
+
[The surfaces](./docs/surfaces.md) lists the forty-two, with their sizes and what is drawn; [score and layout](./docs/score.md) has the options of a score, a strip and a compact card.
|
|
237
237
|
|
|
238
238
|
### A league's rulebook
|
|
239
239
|
|
|
@@ -615,7 +615,7 @@ A table in the ITTF's playing area, 14 m by 7 m, with surrounds and chairs ([cou
|
|
|
615
615
|
|
|
616
616
|
### The combat sports
|
|
617
617
|
|
|
618
|
-
An MMA cage
|
|
618
|
+
An MMA cage, a boxing ring and wrestling mats ([the combat sports page](./docs/combat.md)).
|
|
619
619
|
|
|
620
620
|
<p align="center">
|
|
621
621
|
<picture>
|
|
@@ -641,6 +641,14 @@ An MMA cage and a boxing ring ([the combat sports page](./docs/combat.md)).
|
|
|
641
641
|
<br><em>The ring in 3D.</em>
|
|
642
642
|
</p>
|
|
643
643
|
|
|
644
|
+
<p align="center">
|
|
645
|
+
<picture>
|
|
646
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/kyogijo-stadiums/main/docs/images/wrestling-mat-3d-desk-dark.webp">
|
|
647
|
+
<img src="https://raw.githubusercontent.com/johnmorrisdotca/kyogijo-stadiums/main/docs/images/wrestling-mat-3d-desk-light.webp" alt="The UWW's wrestling mat in 3D on its platform" width="660">
|
|
648
|
+
</picture>
|
|
649
|
+
<br><em>The UWW's mat in 3D.</em>
|
|
650
|
+
</p>
|
|
651
|
+
|
|
644
652
|
### The element in a page
|
|
645
653
|
|
|
646
654
|
```html
|
|
@@ -714,7 +722,7 @@ Nothing is branded. The drawing is coloured by custom properties on its `svg`, w
|
|
|
714
722
|
|
|
715
723
|
## Limits
|
|
716
724
|
|
|
717
|
-
Each is held by a test: forty-
|
|
725
|
+
Each is held by a test: forty-two sports, ten soccer pitches and ten providers, 94 ballparks, 64 grounds, six units, forty-eight frames, a drawing of under 22 kB. The table, made from the code, is [limits](./docs/limits.md).
|
|
718
726
|
|
|
719
727
|
## Accessibility
|
|
720
728
|
|
package/dist/budo/describe.js
CHANGED
|
@@ -45,6 +45,14 @@ export function budoAbout(o, language, plan = budoPlan(o)) {
|
|
|
45
45
|
const platform = L.height > 0.0005 ? fill(words.boxingPlatform, { height: cm(L.height) }) : words.boxingFloor;
|
|
46
46
|
return fill(words.boxing, { size: trim(L.size), feet: trim(L.size / 0.3048), apron: cm(L.apron), platform });
|
|
47
47
|
}
|
|
48
|
+
if (plan.wrestling !== undefined) {
|
|
49
|
+
const L = plan.wrestling;
|
|
50
|
+
const fig = plan.figures;
|
|
51
|
+
const platform = L.height > 0.0005 ? fill(words.wrestlingPlatform, { height: trim(L.height) }) : words.wrestlingFloor;
|
|
52
|
+
if (fig.passivity > 0)
|
|
53
|
+
return fill(words.wrestlingUww, { circle: trim(L.circle), border: trim(L.border), band: trim(fig.passivity), platform });
|
|
54
|
+
return fill(words.wrestlingFolk, { feet: trim(L.circle / 0.3048), circle: trim(L.circle), border: trim(L.border / 0.3048), platform });
|
|
55
|
+
}
|
|
48
56
|
if (plan.kyudo !== undefined) {
|
|
49
57
|
const L = plan.kyudo;
|
|
50
58
|
const fig = plan.figures;
|
|
@@ -83,6 +91,13 @@ export function budoSentences(o, language, plan = budoPlan(o)) {
|
|
|
83
91
|
if (plan.mma.steps.length > 0)
|
|
84
92
|
out.push(words.mmaSteps);
|
|
85
93
|
}
|
|
94
|
+
if (plan.wrestling !== undefined) {
|
|
95
|
+
const fig = plan.figures;
|
|
96
|
+
if (fig.centre !== null && o.budo?.circle !== false)
|
|
97
|
+
out.push(fill(words.wrestlingCentre, { d: trim(fig.centre.diameter) }));
|
|
98
|
+
if (fig.lines !== null && plan.wrestling.start !== undefined)
|
|
99
|
+
out.push(words.wrestlingLines);
|
|
100
|
+
}
|
|
86
101
|
if (plan.boxing !== undefined) {
|
|
87
102
|
if (o.budo?.corners !== false)
|
|
88
103
|
out.push(words.boxingCorners);
|
package/dist/budo/looks.js
CHANGED
|
@@ -58,6 +58,12 @@ export const BUDO_LOOKS = Object.freeze({
|
|
|
58
58
|
blue: lifted(pair({ ...COMMON, surface: "#3a68ad", alt: "#2b528d", red: "#b32a2f", floor: "#1f3358", rope: "#f4f1e8" }), "#324a78"),
|
|
59
59
|
black: lifted(pair({ ...COMMON, surface: "#2b2e33", alt: "#1f2226", red: "#b32a2f", floor: "#17191c", rope: "#f4f1e8" }), "#3b3f45"),
|
|
60
60
|
},
|
|
61
|
+
// The wrestling mat's colours: the circle over the border (a UWW mat's protection area is a different colour from the mat, as its rules say), with the passivity band orange in every look. Ours.
|
|
62
|
+
wrestling: {
|
|
63
|
+
"blue-red": lifted(pair({ ...COMMON, surface: "#2f6db0", alt: "#c0392b", red: "#f07a1a", floor: "#2e3138" }), "#3b3f48"),
|
|
64
|
+
"green-beige": lifted(pair({ ...COMMON, surface: "#4f9560", alt: "#d6c595", red: "#f07a1a", floor: "#2e3138" }), "#3b3f48"),
|
|
65
|
+
"yellow-blue": lifted(pair({ ...COMMON, surface: "#e6c02e", alt: "#2f5fa6", red: "#f07a1a", floor: "#2e3138" }), "#3b3f48"),
|
|
66
|
+
},
|
|
61
67
|
kyudo: { wood: pair({ ...COMMON, surface: "#9db57d", alt: "#d8cfb0", red: "#b32a2f", floor: "#b98c58", dirt: "#c9ad7a" }) },
|
|
62
68
|
});
|
|
63
69
|
/** The names of a sport's looks, the default first. */
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WrestlingFigures } from "../leagues/combat.ts";
|
|
2
|
+
import { type MBox, type MMark, type Parts } from "./parts.ts";
|
|
3
|
+
/** What a wrestling plan is. */
|
|
4
|
+
export interface MatLayout {
|
|
5
|
+
parts: Parts;
|
|
6
|
+
/** The mat's square: the circle and the matted area round it. The surface's own box. */
|
|
7
|
+
mat: MBox;
|
|
8
|
+
/** The platform under the mat (a square a metre wider each side), when there is one. */
|
|
9
|
+
platform: MBox | undefined;
|
|
10
|
+
extent: MBox;
|
|
11
|
+
centre: [number, number];
|
|
12
|
+
/** The wrestling area's diameter, and the middle part of it inside the passivity band (the UWW's). */
|
|
13
|
+
circle: number;
|
|
14
|
+
inner: number;
|
|
15
|
+
/** The matted area's width round the circle. */
|
|
16
|
+
border: number;
|
|
17
|
+
/** The platform's height over the floor of the building, in metres. */
|
|
18
|
+
height: number;
|
|
19
|
+
/** The starting lines: the rectangle they enclose, when drawn. */
|
|
20
|
+
start: MBox | undefined;
|
|
21
|
+
marks: MMark[];
|
|
22
|
+
ranges: Record<string, MBox>;
|
|
23
|
+
}
|
|
24
|
+
/** The circle's diameter the options ask for, held to what the league allows. */
|
|
25
|
+
export declare const matCircle: (asked: number | undefined, fig: WrestlingFigures, rule: string) => number;
|
|
26
|
+
/** The platform's height the options ask for, held to what the league allows. */
|
|
27
|
+
export declare function matHeight(asked: number | undefined, fig: WrestlingFigures, rule: string): number;
|
|
28
|
+
/** The plan of the mat the options ask for. */
|
|
29
|
+
export declare function matParts(fig: WrestlingFigures, o: {
|
|
30
|
+
circle: number;
|
|
31
|
+
height: number;
|
|
32
|
+
centre: boolean;
|
|
33
|
+
lines: boolean;
|
|
34
|
+
}): MatLayout;
|
package/dist/budo/mat.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// A wrestling mat: the wrestling area's circle with the matted area round it, and on the UWW's mat the orange passivity band, the central circle and the platform it stands on; on a folkstyle mat the line that outlines the
|
|
2
|
+
// circle, the circle of 10 feet and the two starting lines closed by a green and a red line. From the UWW's Wrestling Rules (Article 4, January 2026), the NCAA's Wrestling Rules (Rule 1) and the NFHS's (Rule 2-1). In metres,
|
|
3
|
+
// the origin at the top left of the mat's square, north at the top. Nothing here draws SVG.
|
|
4
|
+
import { ring } from "../fields.kit.js";
|
|
5
|
+
import { annulusD, discArea, rectArea, tapeBar, within } from "./kit.js";
|
|
6
|
+
import { emptyParts, grow } from "./parts.js";
|
|
7
|
+
/** The circle's diameter the options ask for, held to what the league allows. */
|
|
8
|
+
export const matCircle = (asked, fig, rule) => (asked === undefined ? fig.circle.drawn : within(asked, fig.circle.min, fig.circle.max, "The wrestling area", rule));
|
|
9
|
+
/** The platform's height the options ask for, held to what the league allows. */
|
|
10
|
+
export function matHeight(asked, fig, rule) {
|
|
11
|
+
if (asked === undefined)
|
|
12
|
+
return fig.platform.height.drawn;
|
|
13
|
+
const h = within(asked, fig.platform.height.min, fig.platform.height.max, "The platform", rule);
|
|
14
|
+
// A platform, when there is one, is at least the league's least (the UWW's 0.80 m); none at all is allowed.
|
|
15
|
+
if (h > 0 && h < fig.platform.least - 1e-9)
|
|
16
|
+
throw new RangeError(`The platform of ${h} m is outside what ${rule} allows: none, or ${fig.platform.least} m to ${fig.platform.height.max} m`);
|
|
17
|
+
return h;
|
|
18
|
+
}
|
|
19
|
+
/** The plan of the mat the options ask for. */
|
|
20
|
+
export function matParts(fig, o) {
|
|
21
|
+
const b = fig.border.drawn;
|
|
22
|
+
const side = o.circle + 2 * b;
|
|
23
|
+
const mat = { x0: 0, y0: 0, x1: side, y1: side };
|
|
24
|
+
const c = side / 2;
|
|
25
|
+
const r = o.circle / 2;
|
|
26
|
+
const parts = emptyParts();
|
|
27
|
+
const platform = o.height > 0 ? grow(mat, fig.platform.around) : undefined;
|
|
28
|
+
if (platform !== undefined)
|
|
29
|
+
parts.areas.push(rectArea("platform", "platform", "ky-bud-platform", platform));
|
|
30
|
+
parts.areas.push(rectArea("border", "border", "ky-bud-t2", mat));
|
|
31
|
+
parts.areas.push(discArea("circle", "circle", "ky-bud-t1", c, c, r));
|
|
32
|
+
const inner = fig.passivity > 0 ? o.circle - 2 * fig.passivity : o.circle;
|
|
33
|
+
if (fig.passivity > 0)
|
|
34
|
+
parts.areas.push({ id: "passivity", feature: "passivity", cls: "ky-bud-t3", d: annulusD(c, c, inner / 2, r), evenodd: true });
|
|
35
|
+
// The line that outlines the circle (folkstyle): part of the wrestling area, in bounds.
|
|
36
|
+
if (fig.rim > 0)
|
|
37
|
+
parts.shapes.push(ring("rim", "rim", c, c, r - fig.rim / 2, r - fig.rim / 2, { w: fig.rim, cls: "ky-bud-line" }));
|
|
38
|
+
// The circle in the middle: a band round a circle of the stated inside diameter.
|
|
39
|
+
if (fig.centre !== null && o.centre)
|
|
40
|
+
parts.shapes.push(ring("centre-circle", "centre-circle", c, c, fig.centre.diameter / 2 + fig.centre.band / 2, fig.centre.diameter / 2 + fig.centre.band / 2, { w: fig.centre.band, cls: "ky-bud-line" }));
|
|
41
|
+
// The starting lines: two parallel lines, closed at their ends by a green line (home, left) and a red line (visitors, right).
|
|
42
|
+
let start;
|
|
43
|
+
if (fig.lines !== null && o.lines) {
|
|
44
|
+
const L = fig.lines;
|
|
45
|
+
const half = L.apart / 2 + L.width;
|
|
46
|
+
start = { x0: c - L.length / 2, y0: c - half, x1: c + L.length / 2, y1: c + half };
|
|
47
|
+
parts.shapes.push(tapeBar("start-line-1", "starting-lines", "ky-bud-white-fill", { x0: start.x0, y0: c - L.apart / 2 - L.width, x1: start.x1, y1: c - L.apart / 2 }));
|
|
48
|
+
parts.shapes.push(tapeBar("start-line-2", "starting-lines", "ky-bud-white-fill", { x0: start.x0, y0: c + L.apart / 2, x1: start.x1, y1: c + L.apart / 2 + L.width }));
|
|
49
|
+
parts.shapes.push(tapeBar("start-green", "starting-lines", "ky-bud-green-fill", { x0: start.x0, y0: start.y0, x1: start.x0 + L.width, y1: start.y1 }));
|
|
50
|
+
parts.shapes.push(tapeBar("start-red", "starting-lines", "ky-bud-red-fill", { x0: start.x1 - L.width, y0: start.y0, x1: start.x1, y1: start.y1 }));
|
|
51
|
+
}
|
|
52
|
+
const extent = grow(platform ?? mat, 0.6);
|
|
53
|
+
const ranges = { start: { x0: c - 1.5, y0: c - 1.5, x1: c + 1.5, y1: c + 1.5 } };
|
|
54
|
+
if (fig.passivity > 0)
|
|
55
|
+
ranges.passivity = { x0: c - r - 0.3, y0: c - r - 0.3, x1: c + r + 0.3, y1: c + r + 0.3 };
|
|
56
|
+
const marks = [
|
|
57
|
+
{ id: "mat-circle", x: c - r * 0.72, y: c - r * 0.72, side: "top" },
|
|
58
|
+
{ id: "mat-border", x: b / 2, y: c + r * 0.55, side: "bottom" },
|
|
59
|
+
];
|
|
60
|
+
if (fig.passivity > 0)
|
|
61
|
+
marks.push({ id: "mat-central", x: c - inner / 2 * Math.SQRT1_2, y: c + inner / 2 * Math.SQRT1_2, side: "bottom" });
|
|
62
|
+
if (fig.passivity > 0)
|
|
63
|
+
marks.push({ id: "mat-passivity", x: c + (inner / 2 + fig.passivity / 2) * Math.SQRT1_2, y: c - (inner / 2 + fig.passivity / 2) * Math.SQRT1_2, side: "top" });
|
|
64
|
+
if (fig.centre !== null && o.centre)
|
|
65
|
+
marks.push({ id: "mat-centre-circle", x: c + fig.centre.diameter / 2, y: c + fig.centre.diameter / 2, side: "bottom" });
|
|
66
|
+
if (start !== undefined)
|
|
67
|
+
marks.push({ id: "mat-starting-lines", x: start.x1, y: c, side: "bottom" });
|
|
68
|
+
if (platform !== undefined)
|
|
69
|
+
marks.push({ id: "mat-platform", x: platform.x1 - 0.3, y: platform.y0 + 0.3, side: "top" });
|
|
70
|
+
return { parts, mat, platform, extent, centre: [c, c], circle: o.circle, inner, border: b, height: o.height, start, marks, ranges };
|
|
71
|
+
}
|
package/dist/budo/plan.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { type KyudoLayout } from "./kyudo.ts";
|
|
|
9
9
|
import { boxD } from "./kit.ts";
|
|
10
10
|
import { type CageLayout } from "./cage.ts";
|
|
11
11
|
import { type RingLayout } from "./ring.ts";
|
|
12
|
+
import { type MatLayout } from "./mat.ts";
|
|
12
13
|
import { type MBox, type MMark, type MRange } from "./parts.ts";
|
|
13
14
|
import { type SumoLayout } from "./sumo.ts";
|
|
14
15
|
import type { BudoKind, CombatKind } from "./types.ts";
|
|
@@ -52,6 +53,7 @@ export interface BudoPlan {
|
|
|
52
53
|
dojo?: DojoLayout;
|
|
53
54
|
mma?: CageLayout;
|
|
54
55
|
boxing?: RingLayout;
|
|
56
|
+
wrestling?: MatLayout;
|
|
55
57
|
}
|
|
56
58
|
/** The sports of the budō family. */
|
|
57
59
|
export declare const BUDO_SPORTS: readonly BudoKind[];
|
package/dist/budo/plan.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { chooseLeague } from "../leagues.js";
|
|
2
2
|
import { BUDO_LEAGUES, DOJO_LEAGUES, JUDO_LEAGUES, KARATE_LEAGUES, KENDO_LEAGUES, KYUDO_LEAGUES, SUMO_LEAGUES } from "../leagues/budo.js";
|
|
3
|
-
import { BOXING_LEAGUES, MMA_LEAGUES } from "../leagues/combat.js";
|
|
3
|
+
import { BOXING_LEAGUES, MMA_LEAGUES, WRESTLING_LEAGUES } from "../leagues/combat.js";
|
|
4
4
|
import { dojoLayout, dojoLeague, dojoSpecOf } from "./dojo.js";
|
|
5
5
|
import { contestOf, gridOf, judoParts, matOf, safetyOf, snapTo } from "./judo.js";
|
|
6
6
|
import { karateParts } from "./karate.js";
|
|
@@ -9,6 +9,7 @@ import { kyudoParts, shootersOf } from "./kyudo.js";
|
|
|
9
9
|
import { boxD } from "./kit.js";
|
|
10
10
|
import { cageHeight, cageParts, cageWidth, fenceHeight } from "./cage.js";
|
|
11
11
|
import { ringHeight, ringParts, ringSize } from "./ring.js";
|
|
12
|
+
import { matCircle, matHeight, matParts } from "./mat.js";
|
|
12
13
|
import { emptyParts, grow, union } from "./parts.js";
|
|
13
14
|
import { dohyoHeight, sumoParts } from "./sumo.js";
|
|
14
15
|
import { lookOf } from "./looks.js";
|
|
@@ -20,12 +21,12 @@ export const BUDO_SPORTS = Object.freeze(["judo", "karate", "kendo", "sumo", "ky
|
|
|
20
21
|
/** True for a sport of the budō family. */
|
|
21
22
|
export const isBudoSport = (sport) => BUDO_SPORTS.includes(sport);
|
|
22
23
|
/** The combat sports the engine of the budō also draws: the MMA cage and the boxing ring. */
|
|
23
|
-
export const COMBAT_SPORTS = Object.freeze(["mma", "boxing"]);
|
|
24
|
+
export const COMBAT_SPORTS = Object.freeze(["mma", "boxing", "wrestling"]);
|
|
24
25
|
/** True for a combat sport (the MMA cage). */
|
|
25
26
|
export const isCombatSport = (sport) => COMBAT_SPORTS.includes(sport);
|
|
26
27
|
/** True for a sport this engine draws: a sport of the budō or a combat sport. */
|
|
27
28
|
export const isMatSport = (sport) => isBudoSport(sport) || isCombatSport(sport);
|
|
28
|
-
const OWN = { judo: JUDO_LEAGUES, karate: KARATE_LEAGUES, kendo: KENDO_LEAGUES, sumo: SUMO_LEAGUES, kyudo: KYUDO_LEAGUES, dojo: DOJO_LEAGUES, mma: MMA_LEAGUES, boxing: BOXING_LEAGUES };
|
|
29
|
+
const OWN = { judo: JUDO_LEAGUES, karate: KARATE_LEAGUES, kendo: KENDO_LEAGUES, sumo: SUMO_LEAGUES, kyudo: KYUDO_LEAGUES, dojo: DOJO_LEAGUES, mma: MMA_LEAGUES, boxing: BOXING_LEAGUES, wrestling: WRESTLING_LEAGUES };
|
|
29
30
|
/** What `budo.style` asks of a judo area: true for a kata area, false for a contest area, undefined for neither said. @throws TypeError for a value that is not `shiai` or `kata`. */
|
|
30
31
|
function kataOf(style) {
|
|
31
32
|
if (style === undefined)
|
|
@@ -140,6 +141,13 @@ export function budoPlan(o) {
|
|
|
140
141
|
const ranges = { ...L.ranges, half: halves(L.platform) };
|
|
141
142
|
return finish({ box: L.platform, extent: L.extent, areas: L.parts.areas, shapes: L.parts.shapes, lineWidth: f.ropes.diameter.drawn, ranges, marks: L.marks, centre: { x: L.centre[0], y: L.centre[1], r: L.size * 0.2 }, boxing: L });
|
|
142
143
|
}
|
|
144
|
+
case "wrestling": {
|
|
145
|
+
const f = fig;
|
|
146
|
+
const rule = `the rules of ${league.id === "uww" ? "the UWW" : league.id === "ncaa-wrestling" ? "the NCAA" : "the NFHS"}`;
|
|
147
|
+
const L = matParts(f, { circle: matCircle(style.size, f, rule), height: matHeight(style.height, f, rule), centre: flag(style.circle, true, "budo.circle"), lines: flag(style.start, true, "budo.start") });
|
|
148
|
+
const ranges = { ...L.ranges, half: halves(L.mat) };
|
|
149
|
+
return finish({ box: L.mat, extent: L.extent, areas: L.parts.areas, shapes: L.parts.shapes, lineWidth: 0.05, ranges, marks: L.marks, centre: { x: L.centre[0], y: L.centre[1], r: L.circle * 0.2 }, wrestling: L });
|
|
150
|
+
}
|
|
143
151
|
default: {
|
|
144
152
|
const L = dojoLayout(o.dojo ?? {}, dojoLeague(league.id));
|
|
145
153
|
const f = L.floor;
|
package/dist/budo/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** The sports of the budō family. */
|
|
2
2
|
export type BudoKind = "judo" | "karate" | "kendo" | "sumo" | "kyudo" | "dojo" | CombatKind;
|
|
3
3
|
/** The combat sports the engine of the budō also draws: the MMA cage. */
|
|
4
|
-
export type CombatKind = "mma" | "boxing";
|
|
4
|
+
export type CombatKind = "mma" | "boxing" | "wrestling";
|
|
5
5
|
/** The sides of a hall, as a plan has them: north is the top of the drawing. `top`, `bottom`, `left` and `right` say the same. */
|
|
6
6
|
export type Compass = "north" | "south" | "east" | "west";
|
|
7
7
|
export type Side4 = Compass | "top" | "bottom" | "left" | "right";
|
|
@@ -21,13 +21,13 @@ export interface BudoStyle {
|
|
|
21
21
|
hall?: "budokan";
|
|
22
22
|
/** Judo: `shiai` (the contest area, the default) or `kata` (the IJF's kata area, `league: "ijf-kata"`: a centre tape, two white tapes 3 m from it either side, a safety area of 2 m; with `officials`, the five judges' seats on the shomen side and the coach's chair opposite). */
|
|
23
23
|
style?: "shiai" | "kata";
|
|
24
|
-
/** Judo: the contest area's side, 8 m to 10 m. Kendo: the shiai-jo's side, 9 m to 11 m. MMA cage: the width across the flats, 6.096 m to 9.754 m (20 to 32 feet), 9.144 m (30 feet) by default; 7.62 m is the smaller cage of 25 feet. Boxing ring: the side inside the ropes, within what the league allows (20 feet for the Nevada rule, 16 to 20 feet for Wisconsin, 4.5 to 6.1 m for the WBC Amateur rules). In metres. */
|
|
24
|
+
/** Judo: the contest area's side, 8 m to 10 m. Kendo: the shiai-jo's side, 9 m to 11 m. MMA cage: the width across the flats, 6.096 m to 9.754 m (20 to 32 feet), 9.144 m (30 feet) by default; 7.62 m is the smaller cage of 25 feet. Boxing ring: the side inside the ropes, within what the league allows (20 feet for the Nevada rule, 16 to 20 feet for Wisconsin, 4.5 to 6.1 m for the WBC Amateur rules). Wrestling: the diameter of the wrestling area (9 m for the UWW, 32 to 42 feet for the NCAA, at least 28 feet for the NFHS). In metres. */
|
|
25
25
|
size?: number;
|
|
26
26
|
/** Judo: the width of the safety area, 3 m or more (4 m by default). In metres. */
|
|
27
27
|
safety?: number;
|
|
28
28
|
/** Judo: the tatami's size. `2x1` (the IJF's, 2 m by 1 m, the default of an IJF area), `1x1` (the half tatami) or `182x91` (the AJJF's own, the default of an AJJF area). */
|
|
29
29
|
tatami?: "2x1" | "1x1" | "182x91";
|
|
30
|
-
/** Judo: the tape that marks where the contestants start. On by default for the AJJF's area and the kata area, and for the IJF's (the 2020 rules' blue and white tape). */
|
|
30
|
+
/** Wrestling: the starting lines of a folkstyle mat (the UWW's mat has none). On by default. Judo: the tape that marks where the contestants start. On by default for the AJJF's area and the kata area, and for the IJF's (the 2020 rules' blue and white tape). */
|
|
31
31
|
start?: boolean;
|
|
32
32
|
/** Judo: a solid platform under the tatami, one metre wider and longer than it. Off by default. */
|
|
33
33
|
platform?: boolean;
|
|
@@ -39,7 +39,7 @@ export interface BudoStyle {
|
|
|
39
39
|
texture?: "weave" | "none";
|
|
40
40
|
/** Karate: the referee's and the judges' places. On by default. */
|
|
41
41
|
judges?: boolean;
|
|
42
|
-
/** Sumo: the height of the clay square in metres, 0.34 to 0.60. 0.55 by default. MMA cage: the platform's height over the floor of the building, 0 to 1.219 m (4 feet), 1.219 m by default. Boxing ring: the same, 0 to what the league allows (5 feet in Nevada, 4 feet in Wisconsin, 1.2 m for the amateurs). Seen in 3D. */
|
|
42
|
+
/** Sumo: the height of the clay square in metres, 0.34 to 0.60. 0.55 by default. MMA cage: the platform's height over the floor of the building, 0 to 1.219 m (4 feet), 1.219 m by default. Boxing ring: the same, 0 to what the league allows (5 feet in Nevada, 4 feet in Wisconsin, 1.2 m for the amateurs). Wrestling: the platform the mat stands on, none or 0.80 to 1.10 m for the UWW's mat (1 m drawn) and 0 to 1.10 m for the others (none drawn). Seen in 3D. */
|
|
43
43
|
height?: number;
|
|
44
44
|
/** Sumo: the four tassels of the roof, in the colours of the four quarters (green east, red south, white west, black north). Off by default. */
|
|
45
45
|
tassels?: boolean;
|
|
@@ -51,6 +51,8 @@ export interface BudoStyle {
|
|
|
51
51
|
gates?: boolean;
|
|
52
52
|
/** MMA cage: the steps up to the platform at each gate, three treads. Boxing ring: the three sets of steps, one in each boxer's corner and one in a neutral corner. On by default. */
|
|
53
53
|
steps?: boolean;
|
|
54
|
+
/** Wrestling: the circle in the middle of the mat (the UWW's central circle, the NFHS's circle of 10 feet; the NCAA has none). On by default. */
|
|
55
|
+
circle?: boolean;
|
|
54
56
|
/** Boxing ring: the posts and their pads in the corner colours (the red and the blue corner of the boxers, two neutral ones in white). On by default. */
|
|
55
57
|
corners?: boolean;
|
|
56
58
|
/** Kyūdō: the number of shooters in a line, 1 to 12 (5 by default). */
|
package/dist/budo.style.js
CHANGED
|
@@ -49,6 +49,9 @@ const RING_CLASSES = `
|
|
|
49
49
|
.kyogijo .ky-bud-corner-white{fill:#f4f1e8;stroke:var(--ky-ink);stroke-opacity:.45;stroke-width:.03}`.trim();
|
|
50
50
|
const COMBAT = ["mma", "boxing"];
|
|
51
51
|
const RING = ["boxing"];
|
|
52
|
+
/** The rules of a wrestling mat's own class: the green neutral line of a folkstyle mat's starting lines. */
|
|
53
|
+
const WRESTLING_CLASSES = `.kyogijo .ky-bud-green-fill{fill:#2f9e63}`;
|
|
54
|
+
const WRESTLING = ["wrestling"];
|
|
52
55
|
/** The custom properties of a look. */
|
|
53
56
|
const vars = (l) => `--ky-surface:${l.surface};--ky-surface-alt:${l.alt};--ky-red:${l.red};--ky-apron:${l.apron};--ky-free:${l.free};--ky-bud-floor:${l.floor};--ky-boards:${l.boards}${l.dirt === undefined ? "" : `;--ky-dirt:${l.dirt}`}${l.sand === undefined ? "" : `;--ky-sand:${l.sand}`}${l.straw === undefined ? "" : `;--ky-bud-straw:${l.straw}`}${l.rope === undefined ? "" : `;--ky-bud-rope:${l.rope}`}`;
|
|
54
57
|
/** The three rules of one look: light, dark by the device's setting, and dark by the page's `data-theme`. */
|
|
@@ -76,7 +79,7 @@ export function budoStyle(sport, look) {
|
|
|
76
79
|
const kind = sport;
|
|
77
80
|
if (BUDO_LOOKS[kind] === undefined)
|
|
78
81
|
return "";
|
|
79
|
-
return `${CLASSES}${COMBAT.includes(sport) ? `\n${COMBAT_CLASSES}` : ""}${RING.includes(sport) ? `\n${RING_CLASSES}` : ""}\n${look === undefined ? lookRules(kind, Object.keys(BUDO_LOOKS[kind])[0]) : lookRules(kind, look)}`;
|
|
82
|
+
return `${CLASSES}${COMBAT.includes(sport) ? `\n${COMBAT_CLASSES}` : ""}${RING.includes(sport) ? `\n${RING_CLASSES}` : ""}${WRESTLING.includes(sport) ? `\n${WRESTLING_CLASSES}` : ""}\n${look === undefined ? lookRules(kind, Object.keys(BUDO_LOOKS[kind])[0]) : lookRules(kind, look)}`;
|
|
80
83
|
}
|
|
81
84
|
/** Every budō sport's rules and every look, for a page that draws with `style: "none"` and supplies the stylesheet itself. */
|
|
82
|
-
export const KYOGIJO_BUDO_STYLE = `${CLASSES}\n${COMBAT_CLASSES}\n${RING_CLASSES}${KYOGIJO_BUDO_GALLERY_STYLE}\n${Object.keys(BUDO_LOOKS).flatMap((sport) => Object.keys(BUDO_LOOKS[sport]).map((name) => lookRules(sport, name))).join("\n")}`;
|
|
85
|
+
export const KYOGIJO_BUDO_STYLE = `${CLASSES}\n${COMBAT_CLASSES}\n${RING_CLASSES}\n${WRESTLING_CLASSES}${KYOGIJO_BUDO_GALLERY_STYLE}\n${Object.keys(BUDO_LOOKS).flatMap((sport) => Object.keys(BUDO_LOOKS[sport]).map((name) => lookRules(sport, name))).join("\n")}`;
|
package/dist/crowd.js
CHANGED
|
@@ -104,6 +104,8 @@ const PROFILES = {
|
|
|
104
104
|
mma: { shape: "bowl", side: 40, end: 40, bench: 0, corner: 56, tiers: [lower(60, 3, 24), upper(67, 120, 32, 60)], away: "corner" },
|
|
105
105
|
// A boxing ring stands in the middle of an arena in the same way.
|
|
106
106
|
boxing: { shape: "bowl", side: 40, end: 40, bench: 0, corner: 56, tiers: [lower(60, 3, 24), upper(67, 120, 32, 60)], away: "corner" },
|
|
107
|
+
// A wrestling mat stands in the middle of a hall in the same way.
|
|
108
|
+
wrestling: { shape: "bowl", side: 36, end: 36, bench: 6, corner: 50, tiers: [lower(60, 3, 24), upper(67, 120, 32, 60)], away: "corner" },
|
|
107
109
|
};
|
|
108
110
|
/** The grounds of the package that are the home of an NFL or a CFL club, where a soccer pitch stands inside a gridiron's stands. From each ground's article. */
|
|
109
111
|
export const GRIDIRON_GROUNDS = Object.freeze({
|
package/dist/draw.js
CHANGED
|
@@ -91,7 +91,7 @@ import { abbreviate, capitals } from "./text.js";
|
|
|
91
91
|
import { VERSION } from "./version.js";
|
|
92
92
|
export { isPortrait };
|
|
93
93
|
/** The sports that can be drawn, in the order a menu lists them. */
|
|
94
|
-
export const SPORTS = ["nfl", "cfl", "ifaf", "nhl", "nba", "mlb", "soccer", "curling", "tennis", "volleyball", "badminton", "pickleball", "tabletennis", "padel", "squash", "racquetball", "sepaktakraw", "teqball", "roundnet", "netball", "swimming", "waterpolo", "diving", "artisticswimming", "athletics", "skating", "judo", "karate", "kendo", "sumo", "kyudo", "dojo", "mma", "boxing", "lacrosse", "rugby", "afl", "gaelic", "cricket", "fieldhockey", "handball"];
|
|
94
|
+
export const SPORTS = ["nfl", "cfl", "ifaf", "nhl", "nba", "mlb", "soccer", "curling", "tennis", "volleyball", "badminton", "pickleball", "tabletennis", "padel", "squash", "racquetball", "sepaktakraw", "teqball", "roundnet", "netball", "swimming", "waterpolo", "diving", "artisticswimming", "athletics", "skating", "judo", "karate", "kendo", "sumo", "kyudo", "dojo", "mma", "boxing", "wrestling", "lacrosse", "rugby", "afl", "gaelic", "cricket", "fieldhockey", "handball"];
|
|
95
95
|
/** The CSS custom property each colour of `Colors` sets. */
|
|
96
96
|
export const COLOR_PROPERTIES = {
|
|
97
97
|
apron: "--ky-apron",
|
|
@@ -265,7 +265,7 @@ function buildSkating(o, common) {
|
|
|
265
265
|
/** The budō surface: its plan, drawn as it lies. A hall, a kyūdōjō and a range of mats have little ground round them. */
|
|
266
266
|
function buildBudo(o, common) {
|
|
267
267
|
const plan = budoPlan({ ...o, detail: common.detail });
|
|
268
|
-
return budoSurface(common, plan, common.margin ?? (o.range === undefined ? (plan.mma === undefined && plan.boxing === undefined ? 12 : 5) : 4));
|
|
268
|
+
return budoSurface(common, plan, common.margin ?? (o.range === undefined ? (plan.mma === undefined && plan.boxing === undefined && plan.wrestling === undefined ? 12 : 5) : 4));
|
|
269
269
|
}
|
|
270
270
|
/** One text for both ends or sides, or a pair of them. */
|
|
271
271
|
const pair = (text) => (text === undefined ? undefined : typeof text === "string" ? [text, text] : text);
|
|
@@ -375,6 +375,7 @@ function buildWhole(o, portrait, id, score, scored, extra) {
|
|
|
375
375
|
case "dojo":
|
|
376
376
|
case "mma":
|
|
377
377
|
case "boxing":
|
|
378
|
+
case "wrestling":
|
|
378
379
|
return buildBudo({ ...o, sport }, common);
|
|
379
380
|
default:
|
|
380
381
|
throw new Error(`Unknown sport "${String(o.sport)}": use one of ${SPORTS.join(", ")}`);
|
|
@@ -610,7 +611,7 @@ function leagueAbout(league, year, language, sheet) {
|
|
|
610
611
|
const words = KYOGIJO_STRINGS[language].league;
|
|
611
612
|
if (league.family === "skating")
|
|
612
613
|
return skatingAbout({ sport: "skating", league: league.id }, language);
|
|
613
|
-
if (league.family === "judo" || league.family === "karate" || league.family === "kendo" || league.family === "sumo" || league.family === "kyudo" || league.family === "dojo" || league.family === "mma" || league.family === "boxing")
|
|
614
|
+
if (league.family === "judo" || league.family === "karate" || league.family === "kendo" || league.family === "sumo" || league.family === "kyudo" || league.family === "dojo" || league.family === "mma" || league.family === "boxing" || league.family === "wrestling")
|
|
614
615
|
return budoAbout({ sport: league.family, league: league.id }, language);
|
|
615
616
|
if (league.family === "athletics")
|
|
616
617
|
return athleticsAbout({ sport: "athletics", league: league.id, athletics: sheet === undefined ? undefined : undefined }, language);
|
package/dist/features.js
CHANGED
|
@@ -144,6 +144,16 @@ const BOXING = [
|
|
|
144
144
|
f("steps", "--ky-bud-floor", "The steps up to the platform."),
|
|
145
145
|
f("corners", "--ky-ink", "The four corner posts with their pads."),
|
|
146
146
|
];
|
|
147
|
+
const WRESTLING = [
|
|
148
|
+
f("apron", "--ky-apron", "The floor of the hall round the mat."),
|
|
149
|
+
f("platform", "--ky-bud-floor", "The platform the mat stands on."),
|
|
150
|
+
f("border", "--ky-surface-alt", "The matted area round the circle (the UWW's protection area)."),
|
|
151
|
+
f("circle", "--ky-surface", "The wrestling area, inside the circle."),
|
|
152
|
+
f("passivity", "--ky-red", "The orange passivity band of the UWW's mat."),
|
|
153
|
+
f("rim", "--ky-line", "The line that outlines a folkstyle circle."),
|
|
154
|
+
f("centre-circle", "--ky-line", "The circle in the middle of the mat."),
|
|
155
|
+
f("starting-lines", "--ky-line", "The two starting lines of a folkstyle mat with their green and red ends."),
|
|
156
|
+
];
|
|
147
157
|
const KYUDO = [
|
|
148
158
|
f("apron", "--ky-apron", "The ground round the range."),
|
|
149
159
|
f("shajo", "--ky-bud-floor", "The floor of the shajō."),
|
|
@@ -453,6 +463,7 @@ export const FEATURE_INFO = Object.freeze({
|
|
|
453
463
|
dojo: DOJO,
|
|
454
464
|
mma: MMA,
|
|
455
465
|
boxing: BOXING,
|
|
466
|
+
wrestling: WRESTLING,
|
|
456
467
|
});
|
|
457
468
|
/**
|
|
458
469
|
* The names of the features of each sport: the keys `featureColors` takes. Football's three fields have the same, and so have the five net sports.
|
package/dist/fields.types.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export type AthleticsMark = "ky-ath-y" | "ky-ath-b" | "ky-ath-g" | "ky-ath-k" |
|
|
|
24
24
|
export type SkatingMark = "ky-ska-b" | "ky-ska-r" | "ky-ska-k" | "ky-ska-blocks";
|
|
25
25
|
/** The coloured marks of a budō surface: the white line, the blue, white and red tape, the seam between mats. */
|
|
26
26
|
/** The fills of a budō surface's tape: blue, white, red and ink. */
|
|
27
|
-
export type BudoFill = "ky-bud-blue-fill" | "ky-bud-white-fill" | "ky-bud-red-fill" | "ky-bud-ink-fill";
|
|
27
|
+
export type BudoFill = "ky-bud-blue-fill" | "ky-bud-white-fill" | "ky-bud-red-fill" | "ky-bud-ink-fill" | "ky-bud-green-fill";
|
|
28
28
|
export type BudoMark = "ky-bud-line" | "ky-bud-blue" | "ky-bud-white" | "ky-bud-red" | "ky-bud-seam" | "ky-bud-ink" | "ky-bud-rope";
|
|
29
29
|
/** A line from one point to another. */
|
|
30
30
|
export interface LineShape extends Stroked {
|
package/dist/heat.zones.js
CHANGED
|
@@ -37,7 +37,7 @@ export const ZONE_SETS = Object.freeze({
|
|
|
37
37
|
"pool-lanes": { sports: ["swimming"], title: "Lanes: each lane of the pool, the whole length of it", source: "docs/sources.md#zone-sets" },
|
|
38
38
|
"water-polo-areas": { sports: ["waterpolo"], title: "The goal area, the ground from 2 to 6 m, and the rest of the field, at each end", source: "docs/sources.md#zone-sets" },
|
|
39
39
|
"pool-thirds": { sports: ["diving", "artisticswimming"], title: "Thirds along the pool, from the wall the boards or the judges stand at", source: "docs/sources.md#zone-sets" },
|
|
40
|
-
"budo-areas": { sports: ["judo", "karate", "kendo", "sumo", "kyudo", "dojo", "mma", "boxing"], title: "The surface in its areas: the contest and the safety areas, the boundary band, the clay and the ring of a dohyō, the shajō, the yamichi and the azuchi, a dojo's floor", source: "docs/sources.md#zone-sets" },
|
|
40
|
+
"budo-areas": { sports: ["judo", "karate", "kendo", "sumo", "kyudo", "dojo", "mma", "boxing", "wrestling"], title: "The surface in its areas: the contest and the safety areas, the boundary band, the clay and the ring of a dohyō, the shajō, the yamichi and the azuchi, a dojo's floor", source: "docs/sources.md#zone-sets" },
|
|
41
41
|
"field-thirds": { sports: ["lacrosse", "rugby", "afl", "gaelic", "fieldhockey", "handball", "netball"], title: "Thirds: defensive, middle and attacking", source: "docs/sources.md#zone-sets" },
|
|
42
42
|
"skating-track": { sports: ["skating"], title: "The rink in parts: the finish straight, the first curve, the crossing straight, the second curve and the infield (a figure skating rink in thirds)", source: "docs/sources.md#zone-sets" },
|
|
43
43
|
"athletics-track": { sports: ["athletics"], title: "The track in parts: the finish straight, the first bend, the back straight, the second bend, and the infield", source: "docs/sources.md#zone-sets" },
|
package/dist/homeside.js
CHANGED
|
@@ -53,6 +53,8 @@ export const HOME_FIRST = Object.freeze({
|
|
|
53
53
|
mma: false,
|
|
54
54
|
// A bout is between a red corner and a blue corner: no home side.
|
|
55
55
|
boxing: false,
|
|
56
|
+
// A bout is between a red wrestler and a blue one (the UWW) or a green and a red one (folkstyle): no home side.
|
|
57
|
+
wrestling: false,
|
|
56
58
|
});
|
|
57
59
|
/** The leagues whose convention is not their sport's: the international federation's lacrosse lists the home team first. */
|
|
58
60
|
export const HOME_FIRST_LEAGUES = Object.freeze({
|
package/dist/leagues/combat.d.ts
CHANGED
|
@@ -94,9 +94,50 @@ export declare const WISCONSIN_RING: BoxingFigures;
|
|
|
94
94
|
export declare const WBC_AMATEUR_RING: BoxingFigures;
|
|
95
95
|
/** The boxing leagues: the Nevada commission's first. */
|
|
96
96
|
export declare const BOXING_LEAGUES: readonly BoxingLeague[];
|
|
97
|
+
/**
|
|
98
|
+
* The figures of a wrestling mat, in metres. The UWW's mat (freestyle and Greco-Roman, which are wrestled on the same one) is a circle of 9 m with a central circle, an orange passivity band 1 m wide inside the circle and a
|
|
99
|
+
* protection area 1.5 m wide round it, on a platform at the great events; the folkstyle mats of the NCAA and the high schools (NFHS) are a competition circle with a matted area round it and two parallel starting lines at the middle.
|
|
100
|
+
*/
|
|
101
|
+
export interface WrestlingFigures {
|
|
102
|
+
kind: "wrestling";
|
|
103
|
+
/** The wrestling area: the circle's diameter (the UWW's is fixed at 9 m; the NCAA's is 32 to 42 feet; the NFHS's is at least 28 feet). */
|
|
104
|
+
circle: Span;
|
|
105
|
+
/** The matted area round the circle (the UWW's protection area 1.5 m; the NCAA's at least 5 feet; the NFHS's about 5 feet). */
|
|
106
|
+
border: Span;
|
|
107
|
+
/** The orange passivity band inside the circle, 1 m wide (the UWW's only), and the line that outlines the circle (the NCAA's 2 inch line, which is in bounds). */
|
|
108
|
+
passivity: number;
|
|
109
|
+
rim: number;
|
|
110
|
+
/** The circle in the middle: the UWW's central circle of 1 m inside with a band of 10 cm; the NFHS's optional circle of 10 feet; none for the NCAA. */
|
|
111
|
+
centre: {
|
|
112
|
+
diameter: number;
|
|
113
|
+
band: number;
|
|
114
|
+
} | null;
|
|
115
|
+
/** The starting lines: two parallel lines of `width` and `length`, `apart` between them, closed at the ends by a green and a red line (folkstyle); null for the UWW. */
|
|
116
|
+
lines: {
|
|
117
|
+
length: number;
|
|
118
|
+
width: number;
|
|
119
|
+
apart: number;
|
|
120
|
+
} | null;
|
|
121
|
+
/** The platform the mat is installed on at the great events (the UWW: 0.80 m to 1.10 m, and at least 1 m round each side of the mat; a mat on the floor is also allowed, at the other events); the folkstyle rules give none (ours: 0 drawn, up to the UWW's greatest). `least` is the lowest a platform may be when there is one. */
|
|
122
|
+
platform: {
|
|
123
|
+
height: Span;
|
|
124
|
+
around: number;
|
|
125
|
+
least: number;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** A wrestling league: a rule's mat. */
|
|
129
|
+
export type WrestlingLeague = LeagueBase<"wrestling", WrestlingFigures>;
|
|
130
|
+
/** The UWW's mat (Wrestling Rules, Article 4, January 2026), for freestyle, Greco-Roman and women's wrestling alike: 9 m, a 1.50 m border, an orange band of 1 m, a central circle of 1 m with a band of 10 cm, a platform of 0.80 to 1.10 m. */
|
|
131
|
+
export declare const UWW_MAT: WrestlingFigures;
|
|
132
|
+
/** The NCAA's mat (Wrestling Rules 2025-26 and 2026-27, Rule 1, Section 1): a competition circle of 32 to 42 feet, a matted area of at least 5 feet round it, the circle's edge a 2 inch line in bounds, two down-position starting lines of 1 inch, 3 feet long and 10 inches apart, closed by a green and a red neutral line. */
|
|
133
|
+
export declare const NCAA_MAT: WrestlingFigures;
|
|
134
|
+
/** The high schools' mat (NFHS Rule 2-1): a wrestling area of at least 28 feet, a safety mat of about 5 feet round it, a 10 foot circle (optional from 2024-25) and the two starting lines of 1 inch, 3 feet long and 12 inches outside to outside, closed by a green and a red line. */
|
|
135
|
+
export declare const NFHS_MAT: WrestlingFigures;
|
|
136
|
+
/** The wrestling leagues: the UWW's first. */
|
|
137
|
+
export declare const WRESTLING_LEAGUES: readonly WrestlingLeague[];
|
|
97
138
|
/** The figures of a combat league. */
|
|
98
|
-
export type CombatFigures = MmaFigures | BoxingFigures;
|
|
139
|
+
export type CombatFigures = MmaFigures | BoxingFigures | WrestlingFigures;
|
|
99
140
|
/** A league with a combat surface of its own. */
|
|
100
|
-
export type CombatLeague = MmaLeague | BoxingLeague;
|
|
141
|
+
export type CombatLeague = MmaLeague | BoxingLeague | WrestlingLeague;
|
|
101
142
|
/** Every combat league, once each. */
|
|
102
143
|
export declare const COMBAT_LEAGUES: readonly CombatLeague[];
|
package/dist/leagues/combat.js
CHANGED
|
@@ -60,5 +60,44 @@ export const BOXING_LEAGUES = [
|
|
|
60
60
|
{ id: "wisconsin", family: "boxing", name: { en: "Boxing ring, Wisconsin", ja: "ボクシングのリング(ウィスコンシン州の規則)" }, unit: "ft", figuresUnit: "m", dimensions: WISCONSIN_RING, sources: ["wi-sps-192", "wp-boxing-ring"] },
|
|
61
61
|
{ id: "wbc-amateur", family: "boxing", name: { en: "Boxing ring, WBC Amateur rules", ja: "ボクシングのリング(WBCアマチュア規則)" }, unit: "m", dimensions: WBC_AMATEUR_RING, sources: ["wbc-amateur", "ontario-amateur-boxing"] },
|
|
62
62
|
];
|
|
63
|
+
/** The UWW's mat (Wrestling Rules, Article 4, January 2026), for freestyle, Greco-Roman and women's wrestling alike: 9 m, a 1.50 m border, an orange band of 1 m, a central circle of 1 m with a band of 10 cm, a platform of 0.80 to 1.10 m. */
|
|
64
|
+
export const UWW_MAT = {
|
|
65
|
+
kind: "wrestling",
|
|
66
|
+
circle: span(9, 9, 9),
|
|
67
|
+
border: span(1.5, 1.5, 1.5),
|
|
68
|
+
passivity: 1,
|
|
69
|
+
rim: 0,
|
|
70
|
+
centre: { diameter: 1, band: 0.1 },
|
|
71
|
+
lines: null,
|
|
72
|
+
platform: { height: span(0, 1.1, 1), around: 1, least: 0.8 },
|
|
73
|
+
};
|
|
74
|
+
/** The NCAA's mat (Wrestling Rules 2025-26 and 2026-27, Rule 1, Section 1): a competition circle of 32 to 42 feet, a matted area of at least 5 feet round it, the circle's edge a 2 inch line in bounds, two down-position starting lines of 1 inch, 3 feet long and 10 inches apart, closed by a green and a red neutral line. */
|
|
75
|
+
export const NCAA_MAT = {
|
|
76
|
+
kind: "wrestling",
|
|
77
|
+
circle: span(32 * FT, 42 * FT, 32 * FT),
|
|
78
|
+
border: span(5 * FT, 10 * FT, 5 * FT),
|
|
79
|
+
passivity: 0,
|
|
80
|
+
rim: 2 * IN,
|
|
81
|
+
centre: null,
|
|
82
|
+
lines: { length: 3 * FT, width: 1 * IN, apart: 10 * IN },
|
|
83
|
+
platform: { height: span(0, 1.1, 0), around: 1, least: 0 },
|
|
84
|
+
};
|
|
85
|
+
/** The high schools' mat (NFHS Rule 2-1): a wrestling area of at least 28 feet, a safety mat of about 5 feet round it, a 10 foot circle (optional from 2024-25) and the two starting lines of 1 inch, 3 feet long and 12 inches outside to outside, closed by a green and a red line. */
|
|
86
|
+
export const NFHS_MAT = {
|
|
87
|
+
kind: "wrestling",
|
|
88
|
+
circle: span(28 * FT, 42 * FT, 28 * FT),
|
|
89
|
+
border: span(5 * FT, 10 * FT, 5 * FT),
|
|
90
|
+
passivity: 0,
|
|
91
|
+
rim: 2 * IN,
|
|
92
|
+
centre: { diameter: 10 * FT, band: 2 * IN },
|
|
93
|
+
lines: { length: 3 * FT, width: 1 * IN, apart: 10 * IN },
|
|
94
|
+
platform: { height: span(0, 1.1, 0), around: 1, least: 0 },
|
|
95
|
+
};
|
|
96
|
+
/** The wrestling leagues: the UWW's first. */
|
|
97
|
+
export const WRESTLING_LEAGUES = [
|
|
98
|
+
{ id: "uww", family: "wrestling", name: { en: "Wrestling mat, UWW (freestyle and Greco-Roman)", ja: "レスリングのマット(UWW:フリースタイルとグレコローマン)" }, unit: "m", dimensions: UWW_MAT, sources: ["uww-wrestling-rules"], builtIn: true },
|
|
99
|
+
{ id: "ncaa-wrestling", family: "wrestling", name: { en: "Wrestling mat, NCAA folkstyle", ja: "レスリングのマット(NCAA:フォークスタイル)" }, unit: "ft", figuresUnit: "m", dimensions: NCAA_MAT, sources: ["ncaa-wrestling"] },
|
|
100
|
+
{ id: "nfhs-wrestling", family: "wrestling", name: { en: "Wrestling mat, high school folkstyle (NFHS)", ja: "レスリングのマット(NFHS:アメリカの高校のフォークスタイル)" }, unit: "ft", figuresUnit: "m", dimensions: NFHS_MAT, sources: ["nfhs-wrestling-mat", "ncaa-wrestling"] },
|
|
101
|
+
];
|
|
63
102
|
/** Every combat league, once each. */
|
|
64
|
-
export const COMBAT_LEAGUES = Object.freeze([...MMA_LEAGUES, ...BOXING_LEAGUES]);
|
|
103
|
+
export const COMBAT_LEAGUES = Object.freeze([...MMA_LEAGUES, ...BOXING_LEAGUES, ...WRESTLING_LEAGUES]);
|
package/dist/leagues/sources.js
CHANGED
|
@@ -134,6 +134,9 @@ export const LEAGUE_SOURCES = Object.freeze(Object.fromEntries([
|
|
|
134
134
|
source({ id: "wbc-amateur", title: "WBC Amateur competition rules, Rule 1, The Ring (4.50 to 6.10 m inside the ropes, a platform of 0.90 to 1.20 m, an apron of at least 0.50 m, ropes of 3 to 5 cm at 41, 71, 102 and 132 cm, three sets of steps, corner colours)", by: "World Boxing Council Amateur", edition: "updated 2026 (the file of October 2025)", url: "https://wbcboxing.com/amateur/esp/wp-content/uploads/2025/10/WBC-AMATEUR-RULES-UPDATED-2026.pdf", read: COMBAT_READ, note: "the amateur ring's figures; the corner colours (red and blue for the boxers, white neutral) are its alternative colours" }),
|
|
135
135
|
source({ id: "ontario-amateur-boxing", title: "Amateur combative sport rules: Boxing, Part II: Competitive field of play, 1.1 to 1.1.6 (4.9 to 6.1 m inside the ropes, a platform of at most 1.2 m, an apron of at least 45 cm, ropes of 2 to 5 cm at 40, 70, 100 and 130 cm, padding of 2.5 to 3.75 cm under a canvas, the red corner on the left nearest the jury table)", by: "Ontario Ministry of Sport", edition: "published 17 December 2024, updated 22 May 2025", url: "https://www.ontario.ca/document/amateur-combative-sport-rules-boxing/part-ii-competitive-field-play", read: COMBAT_READ, note: "a second amateur rule beside the WBC's; the red corner at the left" }),
|
|
136
136
|
source({ id: "wp-boxing-ring", title: "Boxing ring (English Wikipedia): a square raised platform with a post at each corner, four ropes, a red corner and a blue corner; a standard ring 16 to 24 feet a side between the ropes with 2 feet outside, a platform 3 to 4 feet from the ground, ropes at 18, 30, 42 and 54 inches", by: "Wikipedia contributors (CC BY-SA 4.0), read for facts only", edition: "revision 1370389178", url: "https://en.wikipedia.org/w/index.php?title=Boxing_ring&oldid=1370389178", read: COMBAT_READ, note: "what is typical and not a rule: the 2 foot apron, the 4 foot platform, the heights of the ropes, the red and blue corners" }),
|
|
137
|
+
source({ id: "uww-wrestling-rules", title: "Wrestling Rules, Article 4 The Mat (a 9 m mat with a 1.50 m border of the same thickness; an orange band of 1 m inside the 9 m circle; the central circle of 1 m with a band of 10 cm; the central surface of 7 m; the platform of 0.80 to 1.10 m with at least 1 m round the mat) and Article 45 Passivity Zone", by: "United World Wrestling", edition: "January 2026", url: "https://cdn.uww.org/2026-01/wrestling_rules.pdf", read: COMBAT_READ, note: "the one mat of freestyle, Greco-Roman and women's wrestling; the wrestlers' places (red left, blue right) are not drawn" }),
|
|
138
|
+
source({ id: "ncaa-wrestling", title: "NCAA Wrestling Rules 2025-26 and 2026-27, Rule 1, Section 1 Mats (Art. 1 mat specifications: a competition circle of 32 to 42 feet, a matted area of at least 5 feet round it, the circle's edge a 2 inch line in bounds; Art. 3 mat markings: two 1 inch down-position starting lines 3 feet long and 10 inches apart, closed by a green and a red neutral line) and Diagram 1", by: "NCAA, Men's Wrestling Rules Committee", edition: "August 2025", url: "https://ncaaorg.s3.amazonaws.com/championships/sports/wrestling/rules/PRMWR_RulesBook.pdf", read: COMBAT_READ, note: "the college mat; the NFHS's starting lines are the same size" }),
|
|
139
|
+
source({ id: "nfhs-wrestling-mat", title: "Required Wrestling Mat Area (quoting NFHS Wrestling Rule 2-1-2: a wrestling area of a minimum of 28 feet in diameter with a safety mat area of approximately 5 feet wide round it)", by: "Kentucky High School Athletic Association, notice of 21 November 2014", edition: "2014 notice of the NFHS rule", url: "https://khsaa.org/?p=14520", read: COMBAT_READ, note: "the high school mat's size; the starting lines (1 inch, 3 feet long, 12 inches outside to outside, closed by a red and a green line, front line on the diameter of the 10 foot circle) are quoted from NFHS Rule 2-1-4 on https://info.resilite.com/knowledge/why-are-my-referee-/-starting-lines-not-centered, and the circle of 10 feet became optional in 2024-25 (NFHS 2-1-3 and 2-1-4: NJSIAA, Wrestling Rule Changes 2024-2025, https://njsiaa.org/sites/default/files/documents/2024-10/wrestling-rule-changes-2024-2025.pdf)" }),
|
|
137
140
|
// Baseball and softball.
|
|
138
141
|
source({ id: "obr-2026", title: "Official Baseball Rules, 2.01, 2.03 and 2.04 (the rules Minor League Baseball plays under)", by: "Major League Baseball", edition: "2026", url: "https://mktg.mlbstatic.com/mlb/official-information/2026-official-baseball-rules.pdf", read: READ, note: "bases 18 inches (2.03), the fence at least 325 and 400 feet (2.01 note); Minor League Baseball's own facility standards are not public" }),
|
|
139
142
|
source({ id: "ncaa-baseball", title: "NCAA Baseball Rules, Rule 1, and the field diagram", by: "NCAA", edition: "2027 and 2028 rules book (printed October 2026)", url: "https://ncaaorg.s3.amazonaws.com/championships/sports/baseball/rules/PRMBA_RulesBook.pdf", read: READ, note: "90-foot square (1-2-a), recommended fence 330, 375 and 400 feet (1-2-b), boxes 4 by 6 feet (1-3-a), backstop 45 feet (1-5-b); diagram: PRMBA_Re-imagedFieldDiagrams.pdf" }),
|
package/dist/leagues/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface Named {
|
|
|
5
5
|
ja: string;
|
|
6
6
|
}
|
|
7
7
|
/** The families of surface a league is a variant of. */
|
|
8
|
-
export type Family = "basketball" | "hockey" | "football" | "baseball" | "curling" | "tennis" | "volleyball" | "badminton" | "pickleball" | "tabletennis" | "padel" | "squash" | "racquetball" | "sepaktakraw" | "teqball" | "roundnet" | "netball" | "lacrosse" | "rugby" | "afl" | "gaelic" | "cricket" | "fieldhockey" | "handball" | "athletics" | "skating" | "judo" | "karate" | "kendo" | "sumo" | "kyudo" | "dojo" | "mma" | "boxing";
|
|
8
|
+
export type Family = "basketball" | "hockey" | "football" | "baseball" | "curling" | "tennis" | "volleyball" | "badminton" | "pickleball" | "tabletennis" | "padel" | "squash" | "racquetball" | "sepaktakraw" | "teqball" | "roundnet" | "netball" | "lacrosse" | "rugby" | "afl" | "gaelic" | "cricket" | "fieldhockey" | "handball" | "athletics" | "skating" | "judo" | "karate" | "kendo" | "sumo" | "kyudo" | "dojo" | "mma" | "boxing" | "wrestling";
|
|
9
9
|
/** The state of one marking from a season on, in a league's own history: the season it began, what it was, and its sources. */
|
|
10
10
|
export interface LeagueSpan<T> {
|
|
11
11
|
/** The first season it was in force, or `null` for the state before the first change that is cited. */
|
package/dist/leagues.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export { WA_STANDARD_TRACK, WA_SHORT_TRACK, WA_STAGGER_TABLE, WA_SHORT_STAGGER_T
|
|
|
36
36
|
export type { SkatingFigures, SkatingLeague, LongTrackFigures, ShortTrackFigures, FigureRinkFigures } from "./leagues/skating.ts";
|
|
37
37
|
export { ISU_LONG_TRACK, ISU_SHORT_TRACK, ISU_FIGURE_RINK, ISU_LONG_TRACK_TABLE } from "./leagues/skating.ts";
|
|
38
38
|
export type { BudoFigures, BudoLeague, DojoFigures, DojoLeague, JudoFigures, JudoLeague, KarateFigures, KarateLeague, KendoFigures, KendoLeague, KyudoFigures, KyudoLeague, Mat, SumoFigures, SumoLeague } from "./leagues/budo.ts";
|
|
39
|
-
export { BOXING_LEAGUES, IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE, NRUC_RING, WBC_AMATEUR_RING, WISCONSIN_RING } from "./leagues/combat.ts";
|
|
39
|
+
export { BOXING_LEAGUES, IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE, NCAA_MAT, NFHS_MAT, NRUC_RING, UWW_MAT, WBC_AMATEUR_RING, WISCONSIN_RING, WRESTLING_LEAGUES } from "./leagues/combat.ts";
|
|
40
40
|
export { AJJF_CONTEST, BUDO_LEAGUES, ENTEKI, FIK_SHIAI_JO, IJF_CONTEST, IJF_KATA, JSA_DOHYO, KINTEKI, WKF_KATA, WKF_KUMITE } from "./leagues/budo.ts";
|
|
41
41
|
export type { BadmintonFigures, BadmintonLeague, FreeZone, FreeZones, NetFigures, NetLeague, NetSport, NetballFigures, NetballLeague, PadelFigures, PadelLeague, PickleballFigures, PickleballLeague, RacquetballFigures, RacquetballLeague, RoundnetFigures, RoundnetLeague, SepakTakrawFigures, SepakTakrawLeague, SquashFigures, SquashLeague, TableTennisFigures, TableTennisLeague, TennisFigures, TennisLeague, TeqballFigures, TeqballLeague, VolleyballFigures, VolleyballLeague } from "./leagues/courts.ts";
|
|
42
42
|
export type { CourtFigures, CourtMarks } from "./leagues/basketball.ts";
|
package/dist/leagues.js
CHANGED
|
@@ -15,7 +15,7 @@ import { FIELD_HOCKEY_LEAGUES, fieldHockeyInFeet } from "./leagues/fieldhockey.j
|
|
|
15
15
|
import { ATHLETICS_LEAGUES, athleticsInFeet } from "./leagues/athletics.js";
|
|
16
16
|
import { longOval, outerEdge } from "./skating/track.js";
|
|
17
17
|
import { SKATING_LEAGUES, skatingInFeet } from "./leagues/skating.js";
|
|
18
|
-
import { BOXING_LEAGUES, MMA_LEAGUES } from "./leagues/combat.js";
|
|
18
|
+
import { BOXING_LEAGUES, MMA_LEAGUES, WRESTLING_LEAGUES } from "./leagues/combat.js";
|
|
19
19
|
import { BUDO_LEAGUES, DOJO_LEAGUES, JUDO_LEAGUES, KARATE_LEAGUES, KENDO_LEAGUES, KYUDO_LEAGUES, SUMO_LEAGUES } from "./leagues/budo.js";
|
|
20
20
|
import { GAELIC_LEAGUES, gaelicInFeet } from "./leagues/gaelic.js";
|
|
21
21
|
import { HANDBALL_LEAGUES, handballInFeet } from "./leagues/handball.js";
|
|
@@ -28,10 +28,10 @@ export { LEAGUE_SOURCES };
|
|
|
28
28
|
export { AFL_GROUNDS } from "./leagues/aussie.js";
|
|
29
29
|
export { WA_STANDARD_TRACK, WA_SHORT_TRACK, WA_STAGGER_TABLE, WA_SHORT_STAGGER_TABLE } from "./leagues/athletics.js";
|
|
30
30
|
export { ISU_LONG_TRACK, ISU_SHORT_TRACK, ISU_FIGURE_RINK, ISU_LONG_TRACK_TABLE } from "./leagues/skating.js";
|
|
31
|
-
export { BOXING_LEAGUES, IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE, NRUC_RING, WBC_AMATEUR_RING, WISCONSIN_RING } from "./leagues/combat.js";
|
|
31
|
+
export { BOXING_LEAGUES, IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE, NCAA_MAT, NFHS_MAT, NRUC_RING, UWW_MAT, WBC_AMATEUR_RING, WISCONSIN_RING, WRESTLING_LEAGUES } from "./leagues/combat.js";
|
|
32
32
|
export { AJJF_CONTEST, BUDO_LEAGUES, ENTEKI, FIK_SHIAI_JO, IJF_CONTEST, IJF_KATA, JSA_DOHYO, KINTEKI, WKF_KATA, WKF_KUMITE } from "./leagues/budo.js";
|
|
33
33
|
/** The family of surface each sport draws; soccer's variants are its pitches (`pitch`), not leagues. */
|
|
34
|
-
export const FAMILY_OF = Object.freeze({ nfl: "football", cfl: "football", ifaf: "football", nhl: "hockey", nba: "basketball", mlb: "baseball", soccer: undefined, curling: "curling", tennis: "tennis", volleyball: "volleyball", badminton: "badminton", pickleball: "pickleball", tabletennis: "tabletennis", padel: "padel", squash: "squash", racquetball: "racquetball", sepaktakraw: "sepaktakraw", teqball: "teqball", roundnet: "roundnet", netball: "netball", lacrosse: "lacrosse", rugby: "rugby", afl: "afl", gaelic: "gaelic", cricket: "cricket", fieldhockey: "fieldhockey", handball: "handball", swimming: undefined, waterpolo: undefined, diving: undefined, artisticswimming: undefined, athletics: "athletics", skating: "skating", judo: "judo", karate: "karate", kendo: "kendo", sumo: "sumo", kyudo: "kyudo", dojo: "dojo", mma: "mma", boxing: "boxing" });
|
|
34
|
+
export const FAMILY_OF = Object.freeze({ nfl: "football", cfl: "football", ifaf: "football", nhl: "hockey", nba: "basketball", mlb: "baseball", soccer: undefined, curling: "curling", tennis: "tennis", volleyball: "volleyball", badminton: "badminton", pickleball: "pickleball", tabletennis: "tabletennis", padel: "padel", squash: "squash", racquetball: "racquetball", sepaktakraw: "sepaktakraw", teqball: "teqball", roundnet: "roundnet", netball: "netball", lacrosse: "lacrosse", rugby: "rugby", afl: "afl", gaelic: "gaelic", cricket: "cricket", fieldhockey: "fieldhockey", handball: "handball", swimming: undefined, waterpolo: undefined, diving: undefined, artisticswimming: undefined, athletics: "athletics", skating: "skating", judo: "judo", karate: "karate", kendo: "kendo", sumo: "sumo", kyudo: "kyudo", dojo: "dojo", mma: "mma", boxing: "boxing", wrestling: "wrestling" });
|
|
35
35
|
/**
|
|
36
36
|
* The leagues each sport can draw, in the order a menu lists them, the sport's own first (the three football sports share their
|
|
37
37
|
* list, the football leagues). Soccer and the pools have none.
|
|
@@ -79,6 +79,7 @@ export const LEAGUES = Object.freeze({
|
|
|
79
79
|
dojo: DOJO_LEAGUES,
|
|
80
80
|
mma: MMA_LEAGUES,
|
|
81
81
|
boxing: BOXING_LEAGUES,
|
|
82
|
+
wrestling: WRESTLING_LEAGUES,
|
|
82
83
|
});
|
|
83
84
|
/** Every league of every family, once each. */
|
|
84
85
|
export const VARIANTS = Object.freeze([...BASKETBALL_LEAGUES, ...HOCKEY_LEAGUES, ...FOOTBALL_LEAGUES, ...BASEBALL_LEAGUES, ...CURLING_LEAGUES, ...TENNIS_LEAGUES, ...VOLLEYBALL_LEAGUES, ...BADMINTON_LEAGUES, ...PICKLEBALL_LEAGUES, ...TABLE_TENNIS_LEAGUES, ...PADEL_LEAGUES, ...SQUASH_LEAGUES, ...RACQUETBALL_LEAGUES, ...SEPAK_TAKRAW_LEAGUES, ...TEQBALL_LEAGUES, ...ROUNDNET_LEAGUES, ...NETBALL_LEAGUES, ...LACROSSE_LEAGUES, ...RUGBY_LEAGUES, ...AFL_LEAGUES, ...GAELIC_LEAGUES, ...CRICKET_LEAGUES, ...FIELD_HOCKEY_LEAGUES, ...HANDBALL_LEAGUES, ...ATHLETICS_LEAGUES, ...BUDO_LEAGUES]);
|
|
@@ -334,6 +335,13 @@ export function leagueSize(sport, id, unit) {
|
|
|
334
335
|
feet = { length: convertLength(length, "m", "ft"), width: convertLength(frontage, "m", "ft") };
|
|
335
336
|
break;
|
|
336
337
|
}
|
|
338
|
+
case "wrestling": {
|
|
339
|
+
// The mat's square: the circle with the matted area round it.
|
|
340
|
+
const d = league.dimensions;
|
|
341
|
+
const m = d.circle.drawn + 2 * d.border.drawn;
|
|
342
|
+
feet = { length: convertLength(m, "m", "ft"), width: convertLength(m, "m", "ft") };
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
337
345
|
case "boxing": {
|
|
338
346
|
// The platform: the ring at the size drawn, with its apron.
|
|
339
347
|
const d = league.dimensions;
|
|
@@ -702,6 +710,19 @@ export function leagueFigures(league) {
|
|
|
702
710
|
["shajō", `${f.hall.depth} m deep, ${f.hall.side} m from the end shooters to the walls, ceiling ${f.ceiling} m`],
|
|
703
711
|
];
|
|
704
712
|
}
|
|
713
|
+
case "wrestling": {
|
|
714
|
+
const f = league.dimensions;
|
|
715
|
+
const ft = (m) => `${Math.round((m / 0.3048) * 100) / 100} ft`;
|
|
716
|
+
const m = (v) => `${Math.round(v * 100) / 100} m`;
|
|
717
|
+
const sized = f.circle.min === f.circle.max ? m(f.circle.min) : `${ft(f.circle.min)} to ${ft(f.circle.max)}`;
|
|
718
|
+
return [
|
|
719
|
+
["wrestling area", `a circle of ${sized}`],
|
|
720
|
+
["matted area", `${f.border.min === f.border.max ? m(f.border.min) : `at least ${ft(f.border.min)}`} round the circle`],
|
|
721
|
+
...(f.passivity > 0 ? [["passivity band", `${m(f.passivity)} wide inside the circle`]] : []),
|
|
722
|
+
...(f.centre === null ? [] : [["centre circle", `${f.centre.diameter >= 3 ? ft(f.centre.diameter) : m(f.centre.diameter)} across`]]),
|
|
723
|
+
...(f.lines === null ? [] : [["starting lines", `two of ${Math.round(f.lines.width / 0.0254)} inch, ${ft(f.lines.length)} long, ${Math.round(f.lines.apart / 0.0254)} inches apart`]]),
|
|
724
|
+
];
|
|
725
|
+
}
|
|
705
726
|
case "boxing": {
|
|
706
727
|
const f = league.dimensions;
|
|
707
728
|
const ft = (m) => `${Math.round((m / 0.3048) * 100) / 100} ft`;
|
package/dist/outline.js
CHANGED
package/dist/ranges.names.js
CHANGED
|
@@ -80,6 +80,7 @@ export const RANGES = Object.freeze({
|
|
|
80
80
|
dojo: Object.freeze([range("kamiza"), range("half", "left")]),
|
|
81
81
|
mma: Object.freeze([range("cage"), range("gate"), range("half", "left")]),
|
|
82
82
|
boxing: Object.freeze([range("ropes"), range("corner"), range("half", "left")]),
|
|
83
|
+
wrestling: Object.freeze([range("start"), range("passivity", undefined, ["uww"]), range("half", "left")]),
|
|
83
84
|
});
|
|
84
85
|
const isNumber = (value) => typeof value === "number" && Number.isFinite(value);
|
|
85
86
|
/**
|
package/dist/score.js
CHANGED
|
@@ -218,6 +218,9 @@ export function glyph(sport) {
|
|
|
218
218
|
case "dojo":
|
|
219
219
|
// A dojo: a floor of mats laid so that no four corners meet.
|
|
220
220
|
return "M-14 -10H14V10H-14ZM-14 0H14M-5 -10V0M5 0V10";
|
|
221
|
+
case "wrestling":
|
|
222
|
+
// A mat: the square, the circle, the passivity band and the circle in the middle.
|
|
223
|
+
return "M-10 -10H10V10H-10ZM-8 0A8 8 0 1 0 8 0A8 8 0 1 0 -8 0M-5.5 0A5.5 5.5 0 1 0 5.5 0A5.5 5.5 0 1 0 -5.5 0M-1 0A1 1 0 1 0 1 0A1 1 0 1 0 -1 0";
|
|
221
224
|
case "boxing":
|
|
222
225
|
// A ring: the platform's square, the ropes and the four posts.
|
|
223
226
|
return "M-10 -10H10V10H-10ZM-6 -6H6V6H-6ZM-8 -8L-6 -6M8 -8L6 -6M-8 8L-6 6M8 8L6 6";
|
package/dist/strings.d.ts
CHANGED
|
@@ -452,6 +452,13 @@ export interface KyogijoWords {
|
|
|
452
452
|
boxingFloor: string;
|
|
453
453
|
boxingCorners: string;
|
|
454
454
|
boxingSteps: string;
|
|
455
|
+
/** A wrestling mat: the UWW's ({circle}, {border}, {band}, {platform}) and a folkstyle mat's ({feet}, {circle}, {border}, {platform}), the platform it stands on ({height}) or the floor, and the sentences about its middle circle ({d}) and its starting lines. */
|
|
456
|
+
wrestlingUww: string;
|
|
457
|
+
wrestlingFolk: string;
|
|
458
|
+
wrestlingPlatform: string;
|
|
459
|
+
wrestlingFloor: string;
|
|
460
|
+
wrestlingCentre: string;
|
|
461
|
+
wrestlingLines: string;
|
|
455
462
|
/** The scoreboards: the heads and the sentences that say what each side scored. */
|
|
456
463
|
board: {
|
|
457
464
|
ippon: string;
|
package/dist/strings.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** The words of the package, by language. */
|
|
2
2
|
export const KYOGIJO_STRINGS = {
|
|
3
3
|
en: {
|
|
4
|
-
surface: { skating: "Skating rink", nfl: "NFL football field", cfl: "CFL football field", ifaf: "IFAF football field", nhl: "NHL hockey rink", nba: "NBA basketball court", mlb: "Baseball field", soccer: "Soccer pitch", curling: "Curling sheet", tennis: "Tennis court", volleyball: "Volleyball court", badminton: "Badminton court", pickleball: "Pickleball court", tabletennis: "Table tennis table", padel: "Padel court", squash: "Squash court", racquetball: "Racquetball court", sepaktakraw: "Sepak takraw court", teqball: "Teqball court", roundnet: "Roundnet court", netball: "Netball court", lacrosse: "Lacrosse field", rugby: "Rugby union field", afl: "Australian football ground", gaelic: "Gaelic football field", cricket: "Cricket ground", fieldhockey: "Field hockey pitch", handball: "Handball court", swimming: "Swimming pool", waterpolo: "Water polo field", diving: "Diving well", artisticswimming: "Artistic swimming pool", athletics: "Athletics track", judo: "Judo contest area", karate: "Karate competition area", kendo: "Kendo shiai-jo", sumo: "Sumo dohyō", kyudo: "Kyūdō range", dojo: "Dojo", mma: "MMA cage", boxing: "Boxing ring" },
|
|
4
|
+
surface: { skating: "Skating rink", nfl: "NFL football field", cfl: "CFL football field", ifaf: "IFAF football field", nhl: "NHL hockey rink", nba: "NBA basketball court", mlb: "Baseball field", soccer: "Soccer pitch", curling: "Curling sheet", tennis: "Tennis court", volleyball: "Volleyball court", badminton: "Badminton court", pickleball: "Pickleball court", tabletennis: "Table tennis table", padel: "Padel court", squash: "Squash court", racquetball: "Racquetball court", sepaktakraw: "Sepak takraw court", teqball: "Teqball court", roundnet: "Roundnet court", netball: "Netball court", lacrosse: "Lacrosse field", rugby: "Rugby union field", afl: "Australian football ground", gaelic: "Gaelic football field", cricket: "Cricket ground", fieldhockey: "Field hockey pitch", handball: "Handball court", swimming: "Swimming pool", waterpolo: "Water polo field", diving: "Diving well", artisticswimming: "Artistic swimming pool", athletics: "Athletics track", judo: "Judo contest area", karate: "Karate competition area", kendo: "Kendo shiai-jo", sumo: "Sumo dohyō", kyudo: "Kyūdō range", dojo: "Dojo", mma: "MMA cage", boxing: "Boxing ring", wrestling: "Wrestling mat" },
|
|
5
5
|
about: {
|
|
6
6
|
nfl: "an American football field, 120 by 53 and a third yards with its end zones, with a yard line every 5 yards, hash marks, numbers and goal posts",
|
|
7
7
|
cfl: "a Canadian football field, 150 by 65 yards with its 20-yard end zones, with a yard line every 5 yards, hash marks, numbers and goal posts on the goal lines",
|
|
@@ -44,6 +44,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
44
44
|
dojo: "a dojo of 20 jō of tatami",
|
|
45
45
|
mma: "an MMA cage: an eight-sided fenced area 9.14 metres (30 feet) across, on a platform 122 centimetres high",
|
|
46
46
|
boxing: "a boxing ring: a square of 6.1 metres (20 feet) inside the ropes, on a platform 122 centimetres high",
|
|
47
|
+
wrestling: "a wrestling mat of the UWW: a circle 9 metres across in a protection area 1.5 metres wide, with an orange passivity band inside the circle, on a platform 1 metre high",
|
|
47
48
|
},
|
|
48
49
|
status: { final: "Final", "final-ot": "Final/OT", "final-so": "Final/SO", "final-aet": "Final/AET", "final-pens": "Final/Pens", live: "Live", half: "Halftime", "extra-time": "Extra time", "extra-end": "Extra end", penalties: "Penalties", postponed: "Postponed", tiebreak: "Tiebreak", "match-tiebreak": "Match tiebreak", retired: "Retired", walkover: "Walkover" },
|
|
49
50
|
endStatus: "End {n}",
|
|
@@ -238,6 +239,12 @@ export const KYOGIJO_STRINGS = {
|
|
|
238
239
|
boxingFloor: "at floor level",
|
|
239
240
|
boxingCorners: "The corners are red and blue for the two boxers and white for the neutral ones.",
|
|
240
241
|
boxingSteps: "Three sets of steps lead up to the platform: one in each boxer's corner and one in a neutral corner.",
|
|
242
|
+
wrestlingUww: "a wrestling mat of the UWW, for freestyle and Greco-Roman wrestling: a circle {circle} metres across in a protection area {border} metres wide, with an orange passivity band {band} metre wide inside the circle, {platform}",
|
|
243
|
+
wrestlingFolk: "a folkstyle wrestling mat: a circle {feet} feet ({circle} metres) across in a matted area {border} feet wide, {platform}",
|
|
244
|
+
wrestlingPlatform: "on a platform {height} metres high",
|
|
245
|
+
wrestlingFloor: "on the floor of the hall",
|
|
246
|
+
wrestlingCentre: "A circle {d} metres across marks the middle.",
|
|
247
|
+
wrestlingLines: "Two parallel starting lines at the middle are closed at their ends by a green line and a red line.",
|
|
241
248
|
board: {
|
|
242
249
|
ippon: "Ippon", wazaari: "Waza-ari", yuko: "Yuko", shido: "Shido", senshu: "Senshu", chui: "Chui", points: "Points", kimarite: "Kimarite",
|
|
243
250
|
techniques: { men: "Men", kote: "Kote", do: "Dō", tsuki: "Tsuki", hansoku: "Hansoku" },
|
|
@@ -299,7 +306,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
299
306
|
results: { touchdown: "touchdown", "field-goal": "field goal", "missed-field-goal": "missed field goal", punt: "punt", turnover: "turnover", interception: "interception", fumble: "fumble", downs: "turnover on downs", safety: "safety", "end-of-half": "end of the half" },
|
|
300
307
|
},
|
|
301
308
|
special: {
|
|
302
|
-
guest: { skating: "rink", nfl: "football field", cfl: "football field", ifaf: "football field", nhl: "rink", nba: "court", mlb: "baseball field", soccer: "pitch", curling: "sheet", tennis: "court", volleyball: "court", badminton: "court", pickleball: "court", tabletennis: "table", padel: "court", squash: "court", racquetball: "court", sepaktakraw: "court", teqball: "court", roundnet: "court", netball: "court", lacrosse: "field", rugby: "field", afl: "ground", gaelic: "field", cricket: "ground", fieldhockey: "pitch", handball: "court", swimming: "pool", waterpolo: "pool", diving: "well", artisticswimming: "pool", athletics: "track", judo: "contest area", karate: "competition area", kendo: "shiai-jo", sumo: "dohyō", kyudo: "range", dojo: "dojo", mma: "cage", boxing: "ring" },
|
|
309
|
+
guest: { skating: "rink", nfl: "football field", cfl: "football field", ifaf: "football field", nhl: "rink", nba: "court", mlb: "baseball field", soccer: "pitch", curling: "sheet", tennis: "court", volleyball: "court", badminton: "court", pickleball: "court", tabletennis: "table", padel: "court", squash: "court", racquetball: "court", sepaktakraw: "court", teqball: "court", roundnet: "court", netball: "court", lacrosse: "field", rugby: "field", afl: "ground", gaelic: "field", cricket: "ground", fieldhockey: "pitch", handball: "court", swimming: "pool", waterpolo: "pool", diving: "well", artisticswimming: "pool", athletics: "track", judo: "contest area", karate: "competition area", kendo: "shiai-jo", sumo: "dohyō", kyudo: "range", dojo: "dojo", mma: "cage", boxing: "ring", wrestling: "mat" },
|
|
303
310
|
title: "{guest} in {host}",
|
|
304
311
|
game: "{event}, {date}.",
|
|
305
312
|
inside: "The {guest} lies wholly inside the outline of {host}.",
|
|
@@ -394,7 +401,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
394
401
|
boundary: "Boundary", pitch: "Pitch", "bowling-crease": "Bowling crease", "popping-crease": "Popping crease", "return-crease": "Return crease", wicket: "Wicket", "thirty-yard-circle": "30-yard circle",
|
|
395
402
|
"twenty-three-line": "23-metre line", "shooting-circle": "Shooting circle", "penalty-spot": "Penalty spot", "broken-circle-line": "Broken line round the circle", "goal-area-line": "Goal-area line",
|
|
396
403
|
"finish-line": "Finish line", kerb: "Kerb", "lane-lines": "Lane lines", bend: "Bend", straight: "Straight", "infield-pitch": "Soccer pitch", "start-line": "Start line", breakline: "Breakline", "water-jump": "Water jump", "exchange-zone": "Takeover zone",
|
|
397
|
-
"referee-position": "Referee's place", "shiai-jo": "Shiai-jo", floorboard: "Floorboard", heri: "Heri, the mat's edge", "contest-area": "Contest area", "safety-area": "Safety area", "danger-zone": "Danger zone", "start-mark": "Start mark", "common-safe-zone": "Common safe zone", "free-zone": "Free zone", platform: "Platform", "technical-table": "Technical table", "centre-tape": "Centre tape", "kata-judges": "Judges, shomen side", "coach-chair": "Coach's chair", "kata-entry": "Entry and exit, opposite shomen", arena: "Arena floor", "competition-area": "Competition area", "boundary-band": "Boundary band", "start-mat": "Start mat", judge: "Judge", "between-areas": "Between the areas", "centre-cross": "Centre cross", "kaishi-sen": "Kaishi-sen", "outer-boundary": "Outer boundary", dohyo: "Dohyō", ring: "Ring", tawara: "Tawara", tokudawara: "Tokudawara", "shikiri-sen": "Shikiri-sen", "jano-me": "Jano-me", shajo: "Shajō", "shooting-position": "Shooting position", honza: "Honza", yamichi: "Yamichi", "yatori-michi": "Path for the arrows", azuchi: "Azuchi", mato: "Target", kamiza: "Kamiza", "cage-canvas": "Canvas", "cage-fence": "Fence", "cage-post": "Padded post", "cage-gate": "Gate", "cage-steps": "Steps", "cage-platform": "Platform", "ring-canvas": "Canvas", "ring-ropes": "Ropes", "ring-post": "Corner post", "ring-red-corner": "Red corner", "ring-blue-corner": "Blue corner", "ring-apron": "Apron", "ring-steps": "Steps", shimoza: "Shimoza", shinzen: "Shinzen", dais: "Dais, the seat of honour", banner: "Banner", entrance: "Entrance", window: "Window", tatami: "Tatami", wall: "Wall", "inner-lane": "Inner lane", "outer-lane": "Outer lane", "crossing-straight": "Crossing straight", "warm-up-lane": "Warm-up lane", padding: "Padding", infield: "Infield", "coaches-area": "Coaches' area", blocks: "Blocks", "track-line": "Line of the track", "start-lines": "Starting lines", ice: "Ice", "technical-panel": "Technical panel", referee: "Referee", "kiss-and-cry": "Kiss and cry", judges: "Judges", runway: "Runway", "take-off-board": "Take-off board", "landing-area": "Landing area", "throwing-circle": "Throwing circle", sector: "Landing sector", "stop-board": "Stop board", cage: "Cage", "throwing-arc": "Throwing arc", crossbar: "Crossbar", "landing-mat": "Landing mat", "run-up": "Run-up", "zero-line": "Zero line", box: "Box",
|
|
404
|
+
"referee-position": "Referee's place", "shiai-jo": "Shiai-jo", floorboard: "Floorboard", heri: "Heri, the mat's edge", "contest-area": "Contest area", "safety-area": "Safety area", "danger-zone": "Danger zone", "start-mark": "Start mark", "common-safe-zone": "Common safe zone", "free-zone": "Free zone", platform: "Platform", "technical-table": "Technical table", "centre-tape": "Centre tape", "kata-judges": "Judges, shomen side", "coach-chair": "Coach's chair", "kata-entry": "Entry and exit, opposite shomen", arena: "Arena floor", "competition-area": "Competition area", "boundary-band": "Boundary band", "start-mat": "Start mat", judge: "Judge", "between-areas": "Between the areas", "centre-cross": "Centre cross", "kaishi-sen": "Kaishi-sen", "outer-boundary": "Outer boundary", dohyo: "Dohyō", ring: "Ring", tawara: "Tawara", tokudawara: "Tokudawara", "shikiri-sen": "Shikiri-sen", "jano-me": "Jano-me", shajo: "Shajō", "shooting-position": "Shooting position", honza: "Honza", yamichi: "Yamichi", "yatori-michi": "Path for the arrows", azuchi: "Azuchi", mato: "Target", kamiza: "Kamiza", "cage-canvas": "Canvas", "cage-fence": "Fence", "cage-post": "Padded post", "cage-gate": "Gate", "cage-steps": "Steps", "cage-platform": "Platform", "ring-canvas": "Canvas", "ring-ropes": "Ropes", "ring-post": "Corner post", "ring-red-corner": "Red corner", "ring-blue-corner": "Blue corner", "ring-apron": "Apron", "ring-steps": "Steps", "mat-circle": "Wrestling area", "mat-central": "Central surface", "mat-border": "Border of the mat", "mat-passivity": "Passivity zone", "mat-centre-circle": "Centre circle", "mat-starting-lines": "Starting lines", "mat-platform": "Platform", shimoza: "Shimoza", shinzen: "Shinzen", dais: "Dais, the seat of honour", banner: "Banner", entrance: "Entrance", window: "Window", tatami: "Tatami", wall: "Wall", "inner-lane": "Inner lane", "outer-lane": "Outer lane", "crossing-straight": "Crossing straight", "warm-up-lane": "Warm-up lane", padding: "Padding", infield: "Infield", "coaches-area": "Coaches' area", blocks: "Blocks", "track-line": "Line of the track", "start-lines": "Starting lines", ice: "Ice", "technical-panel": "Technical panel", referee: "Referee", "kiss-and-cry": "Kiss and cry", judges: "Judges", runway: "Runway", "take-off-board": "Take-off board", "landing-area": "Landing area", "throwing-circle": "Throwing circle", sector: "Landing sector", "stop-board": "Stop board", cage: "Cage", "throwing-arc": "Throwing arc", crossbar: "Crossbar", "landing-mat": "Landing mat", "run-up": "Run-up", "zero-line": "Zero line", box: "Box",
|
|
398
405
|
"seven-metre-line": "7-metre line", "four-metre-line": "4-metre line", "throw-off-area": "Throw-off area", "restraining-line": "Restraining line", "wing-line": "Wing line", "marking-area": "Marking area", "two-point-arc": "Two-point arc",
|
|
399
406
|
"lane-rope": "Lane rope", "lane-line": "Lane marking on the floor", "lane-end-cross": "Cross line at the end of the lane marking", "fifteen-metre-mark": "15 m mark", "touch-pad": "Touch panel", "starting-block": "Starting block", "backstroke-flags": "Backstroke flags", "false-start-rope": "False start rope", gutter: "Gutter",
|
|
400
407
|
"two-metre-line": "2 m line", "five-metre-mark": "5 m mark", "six-metre-line": "6 m line", "half-distance-line": "Half distance line", "re-entry-area": "Re-entry area", "referee-platform": "Referee platform", "official-table": "Official table", "substitution-area": "Substitution area",
|
|
@@ -414,7 +421,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
414
421
|
"in-goal": "in-goal area", "twenty-two": "area between the try line and the 22-metre line", twenty: "area between the goal line and the 20-metre line", crease: "crease", "forward-fifty": "area inside the fifty metre arc", "centre-square": "centre square",
|
|
415
422
|
"large-rectangle": "large rectangle", pitch: "pitch", circle: "circle", "twenty-three": "23-metre area", "goal-area": "goal area",
|
|
416
423
|
"pool-end": "end of the pool, up to the 15 m mark", springboards: "springboards", platforms: "platforms", "centre-stage": "centre of the pool, the middle third",
|
|
417
|
-
"contest-area": "contest area", ring: "ring", shajo: "shajō", yamichi: "yamichi", azuchi: "azuchi", kamiza: "kamiza", cage: "cage", gate: "gate", ropes: "ring inside the ropes", corner: "corner", "crossing-straight": "crossing straight", "first-bend": "first bend", "second-bend": "second bend", judges: "judges", "kiss-and-cry": "kiss and cry", bend: "bend", "home-straight": "finish straight", "back-straight": "back straight", finish: "finish line", start: "start", "high-jump": "high jump", "pole-vault": "pole vault", "long-jump": "long jump", "triple-jump": "triple jump", "shot-put": "shot put", "discus-throw": "discus throw", "hammer-throw": "hammer throw", "javelin-throw": "javelin throw", "water-jump": "water jump",
|
|
424
|
+
"contest-area": "contest area", ring: "ring", shajo: "shajō", yamichi: "yamichi", azuchi: "azuchi", kamiza: "kamiza", cage: "cage", gate: "gate", ropes: "ring inside the ropes", corner: "corner", passivity: "passivity zone", "crossing-straight": "crossing straight", "first-bend": "first bend", "second-bend": "second bend", judges: "judges", "kiss-and-cry": "kiss and cry", bend: "bend", "home-straight": "finish straight", "back-straight": "back straight", finish: "finish line", start: "start", "high-jump": "high jump", "pole-vault": "pole vault", "long-jump": "long jump", "triple-jump": "triple jump", "shot-put": "shot put", "discus-throw": "discus throw", "hammer-throw": "hammer throw", "javelin-throw": "javelin throw", "water-jump": "water jump",
|
|
418
425
|
},
|
|
419
426
|
folded: {
|
|
420
427
|
top: "Top house", bottom: "Bottom house", left: "Left house", right: "Right house",
|
|
@@ -539,7 +546,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
539
546
|
// (ISU Rule 281.1a; the JOC's usage). Television's インコース, アウトコース, バックストレート and ホームストレート are aliases in docs/skating.md. No rule book words were found for the figure skating
|
|
540
547
|
// furniture (ジャッジ席, テクニカルパネル, レフェリー, キス・アンド・クライ): they are the usual words.
|
|
541
548
|
ja: {
|
|
542
|
-
surface: { skating: "スケートリンク", nfl: "NFLのフィールド", cfl: "CFLのフィールド", ifaf: "IFAFのフィールド", nhl: "NHLのアイスホッケーリンク", nba: "NBAのバスケットボールコート", mlb: "野球場", soccer: "サッカーのピッチ", curling: "カーリングのシート", tennis: "テニスコート", volleyball: "バレーボールコート", badminton: "バドミントンコート", pickleball: "ピックルボールコート", tabletennis: "卓球台", padel: "パデルコート", squash: "スカッシュコート", racquetball: "ラケットボールコート", sepaktakraw: "セパタクローコート", teqball: "テックボールコート", roundnet: "ラウンドネットコート", netball: "ネットボールコート", lacrosse: "ラクロスのフィールド", rugby: "ラグビーユニオンのグラウンド", afl: "オーストラリアンフットボールのグラウンド", gaelic: "ゲーリック・フットボールのフィールド", cricket: "クリケットのグラウンド", fieldhockey: "フィールドホッケーのピッチ", handball: "ハンドボールのコート", swimming: "競泳プール", waterpolo: "水球のフィールド", diving: "飛込プール", artisticswimming: "アーティスティックスイミングのプール", athletics: "陸上競技のトラック", judo: "柔道の試合場", karate: "空手道の試合場", kendo: "剣道の試合場", sumo: "相撲の土俵", kyudo: "弓道場", dojo: "道場", mma: "総合格闘技のケージ", boxing: "ボクシングのリング" },
|
|
549
|
+
surface: { skating: "スケートリンク", nfl: "NFLのフィールド", cfl: "CFLのフィールド", ifaf: "IFAFのフィールド", nhl: "NHLのアイスホッケーリンク", nba: "NBAのバスケットボールコート", mlb: "野球場", soccer: "サッカーのピッチ", curling: "カーリングのシート", tennis: "テニスコート", volleyball: "バレーボールコート", badminton: "バドミントンコート", pickleball: "ピックルボールコート", tabletennis: "卓球台", padel: "パデルコート", squash: "スカッシュコート", racquetball: "ラケットボールコート", sepaktakraw: "セパタクローコート", teqball: "テックボールコート", roundnet: "ラウンドネットコート", netball: "ネットボールコート", lacrosse: "ラクロスのフィールド", rugby: "ラグビーユニオンのグラウンド", afl: "オーストラリアンフットボールのグラウンド", gaelic: "ゲーリック・フットボールのフィールド", cricket: "クリケットのグラウンド", fieldhockey: "フィールドホッケーのピッチ", handball: "ハンドボールのコート", swimming: "競泳プール", waterpolo: "水球のフィールド", diving: "飛込プール", artisticswimming: "アーティスティックスイミングのプール", athletics: "陸上競技のトラック", judo: "柔道の試合場", karate: "空手道の試合場", kendo: "剣道の試合場", sumo: "相撲の土俵", kyudo: "弓道場", dojo: "道場", mma: "総合格闘技のケージ", boxing: "ボクシングのリング", wrestling: "レスリングのマット" },
|
|
543
550
|
about: {
|
|
544
551
|
nfl: "アメリカンフットボールのフィールド。エンドゾーンを含めて120×53⅓ヤードで、5ヤードごとのヤードライン、ハッシュマーク、ヤードナンバー、ゴールポストがあります",
|
|
545
552
|
cfl: "カナディアンフットボールのフィールド。20ヤードのエンドゾーンを含めて150×65ヤードで、5ヤードごとのヤードライン、ハッシュマーク、ヤードナンバー、ゴールライン上のゴールポストがあります",
|
|
@@ -582,6 +589,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
582
589
|
dojo: "20畳の道場",
|
|
583
590
|
mma: "総合格闘技のケージ。金網で囲まれた、対辺間の距離が30フィート(約9.1m)の八角形で、高さ122cmの台の上にあります",
|
|
584
591
|
boxing: "ボクシングのリング。ロープの内側は一辺20フィート(約6.1m)の正方形で、リングは高さ122cmの台の上にあります",
|
|
592
|
+
wrestling: "UWWのレスリングマット。直径9mの円の外側に幅1.5mのプロテクションエリアがあり、円の内側にオレンジ色のパッシビティゾーンがあります。マットは高さ1mの台の上にあります",
|
|
585
593
|
},
|
|
586
594
|
status: { final: "試合終了", "final-ot": "試合終了(延長)", "final-so": "試合終了(SO)", "final-aet": "試合終了(延長戦)", "final-pens": "試合終了(PK戦)", live: "試合中", half: "ハーフタイム", "extra-time": "延長戦", "extra-end": "エキストラエンド", penalties: "PK戦", postponed: "延期", tiebreak: "タイブレーク", "match-tiebreak": "マッチタイブレーク", retired: "途中棄権", walkover: "不戦勝" },
|
|
587
595
|
endStatus: "第{n}エンド",
|
|
@@ -786,6 +794,12 @@ export const KYOGIJO_STRINGS = {
|
|
|
786
794
|
boxingFloor: "リングは床と同じ高さにあります",
|
|
787
795
|
boxingCorners: "コーナーの色は、ボクサー用が赤と青、中立コーナーが白です。",
|
|
788
796
|
boxingSteps: "台へ上がる階段は3か所で、各ボクサーのコーナーに1か所ずつと、中立コーナーに1か所あります。",
|
|
797
|
+
wrestlingUww: "UWWのレスリングマット(フリースタイルとグレコローマン)。直径{circle}mの円の外側に幅{border}mのプロテクションエリアがあり、円の内側には幅{band}mのオレンジ色のパッシビティゾーンがあります。{platform}",
|
|
798
|
+
wrestlingFolk: "フォークスタイルのレスリングマット。直径{feet}フィート(約{circle}m)の円の外側に、幅{border}フィートのマットが敷かれています。{platform}",
|
|
799
|
+
wrestlingPlatform: "マットは高さ{height}mの台の上にあります",
|
|
800
|
+
wrestlingFloor: "マットは会場の床に敷かれています",
|
|
801
|
+
wrestlingCentre: "中央には直径{d}mの円があります。",
|
|
802
|
+
wrestlingLines: "中央の平行な2本のスタートラインは、一方の端が緑の線、もう一方の端が赤の線で閉じられています。",
|
|
789
803
|
board: {
|
|
790
804
|
ippon: "一本", wazaari: "技あり", yuko: "有効", shido: "指導", senshu: "先取", chui: "注意", points: "ポイント", kimarite: "決まり手",
|
|
791
805
|
techniques: { men: "面", kote: "小手", do: "胴", tsuki: "突き", hansoku: "反則" },
|
|
@@ -847,7 +861,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
847
861
|
results: { touchdown: "タッチダウン", "field-goal": "フィールドゴール", "missed-field-goal": "フィールドゴール失敗", punt: "パント", turnover: "ターンオーバー", interception: "インターセプト", fumble: "ファンブル", downs: "ダウン更新失敗によるターンオーバー", safety: "セーフティ", "end-of-half": "ハーフ終了" },
|
|
848
862
|
},
|
|
849
863
|
special: {
|
|
850
|
-
guest: { skating: "リンク", nfl: "アメリカンフットボールのフィールド", cfl: "カナディアンフットボールのフィールド", ifaf: "アメリカンフットボールのフィールド", nhl: "リンク", nba: "コート", mlb: "野球のグラウンド", soccer: "ピッチ", curling: "シート", tennis: "コート", volleyball: "コート", badminton: "コート", pickleball: "コート", tabletennis: "卓球台", padel: "コート", squash: "コート", racquetball: "コート", sepaktakraw: "コート", teqball: "コート", roundnet: "コート", netball: "コート", lacrosse: "フィールド", rugby: "グラウンド", afl: "グラウンド", gaelic: "フィールド", cricket: "グラウンド", fieldhockey: "ピッチ", handball: "コート", swimming: "プール", waterpolo: "プール", diving: "プール", artisticswimming: "プール", athletics: "トラック", judo: "試合場", karate: "試合場", kendo: "試合場", sumo: "土俵", kyudo: "弓道場", dojo: "道場", mma: "ケージ", boxing: "リング" },
|
|
864
|
+
guest: { skating: "リンク", nfl: "アメリカンフットボールのフィールド", cfl: "カナディアンフットボールのフィールド", ifaf: "アメリカンフットボールのフィールド", nhl: "リンク", nba: "コート", mlb: "野球のグラウンド", soccer: "ピッチ", curling: "シート", tennis: "コート", volleyball: "コート", badminton: "コート", pickleball: "コート", tabletennis: "卓球台", padel: "コート", squash: "コート", racquetball: "コート", sepaktakraw: "コート", teqball: "コート", roundnet: "コート", netball: "コート", lacrosse: "フィールド", rugby: "グラウンド", afl: "グラウンド", gaelic: "フィールド", cricket: "グラウンド", fieldhockey: "ピッチ", handball: "コート", swimming: "プール", waterpolo: "プール", diving: "プール", artisticswimming: "プール", athletics: "トラック", judo: "試合場", karate: "試合場", kendo: "試合場", sumo: "土俵", kyudo: "弓道場", dojo: "道場", mma: "ケージ", boxing: "リング", wrestling: "マット" },
|
|
851
865
|
title: "{host}の中の{guest}",
|
|
852
866
|
game: "{event}、{date}。",
|
|
853
867
|
inside: "{guest}全体が{host}の輪郭の内側に収まっています。",
|
|
@@ -941,7 +955,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
941
955
|
"distance-line": "距離を示すライン", "large-rectangle": "大きい長方形", "small-rectangle": "小さい長方形", "thirteen-metre-arc": "13メートルアーク", "forty-metre-arc": "40メートルアーク", "penalty-point": "ペナルティーマーク",
|
|
942
956
|
boundary: "バウンダリー", pitch: "ピッチ", "bowling-crease": "ボウリングクリース", "popping-crease": "ポッピングクリース", "return-crease": "リターンクリース", wicket: "ウィケット", "thirty-yard-circle": "30ヤードサークル",
|
|
943
957
|
"twenty-three-line": "23メートルライン", "shooting-circle": "シューティングサークル", "penalty-spot": "ペナルティースポット", "broken-circle-line": "サークルを囲む破線", "goal-area-line": "ゴールエリアライン",
|
|
944
|
-
"referee-position": "主審の位置", "shiai-jo": "試合場", floorboard: "床板", heri: "畳縁", "contest-area": "試合場内", "safety-area": "安全地帯", "danger-zone": "危険地帯", "start-mark": "開始線", "common-safe-zone": "共通の安全地帯", "free-zone": "フリーゾーン", platform: "畳の台", "technical-table": "係員席", "centre-tape": "中央のテープ", "kata-judges": "審判員席(正面側)", "coach-chair": "コーチ席", "kata-entry": "入退場口(正面の反対側)", arena: "アリーナの床", "competition-area": "試合場", "boundary-band": "境界の帯", "start-mat": "開始位置のマット", judge: "副審", "between-areas": "試合場の間", "centre-cross": "中央の×印", "kaishi-sen": "開始線", "outer-boundary": "場外の余地", dohyo: "土俵", ring: "土俵の円", tawara: "俵", tokudawara: "徳俵", "shikiri-sen": "仕切り線", "jano-me": "蛇の目", shajo: "射場", "shooting-position": "射位", honza: "本座", yamichi: "矢道", "yatori-michi": "矢取道", azuchi: "安土", mato: "的", kamiza: "上座", "cage-canvas": "キャンバス", "cage-fence": "金網", "cage-post": "パッド付き支柱", "cage-gate": "出入口", "cage-steps": "階段", "cage-platform": "台", "ring-canvas": "キャンバス", "ring-ropes": "ロープ", "ring-post": "コーナーポスト", "ring-red-corner": "赤コーナー", "ring-blue-corner": "青コーナー", "ring-apron": "エプロン", "ring-steps": "階段", shimoza: "下座", shinzen: "神棚", dais: "上座の台", banner: "垂れ幕", entrance: "入口", window: "窓", tatami: "畳", wall: "壁", "inner-lane": "インレーン", "outer-lane": "アウトレーン", "crossing-straight": "交差ストレート", "warm-up-lane": "ウォームアップレーン", padding: "防護マット", infield: "インフィールド", "coaches-area": "コーチエリア", blocks: "ブロック", "track-line": "トラックのライン", "start-lines": "スタートライン", ice: "氷面", "technical-panel": "テクニカルパネル", referee: "レフェリー", "kiss-and-cry": "キス・アンド・クライ", judges: "ジャッジ席", runway: "助走路", "take-off-board": "踏切板", "landing-area": "砂場", "throwing-circle": "投てきサークル", sector: "着地場所", "stop-board": "足留材", cage: "囲い", "throwing-arc": "スターティング・ライン", crossbar: "バー", "landing-mat": "着地マット", "run-up": "助走路", "zero-line": "ゼロライン", box: "ボックス",
|
|
958
|
+
"referee-position": "主審の位置", "shiai-jo": "試合場", floorboard: "床板", heri: "畳縁", "contest-area": "試合場内", "safety-area": "安全地帯", "danger-zone": "危険地帯", "start-mark": "開始線", "common-safe-zone": "共通の安全地帯", "free-zone": "フリーゾーン", platform: "畳の台", "technical-table": "係員席", "centre-tape": "中央のテープ", "kata-judges": "審判員席(正面側)", "coach-chair": "コーチ席", "kata-entry": "入退場口(正面の反対側)", arena: "アリーナの床", "competition-area": "試合場", "boundary-band": "境界の帯", "start-mat": "開始位置のマット", judge: "副審", "between-areas": "試合場の間", "centre-cross": "中央の×印", "kaishi-sen": "開始線", "outer-boundary": "場外の余地", dohyo: "土俵", ring: "土俵の円", tawara: "俵", tokudawara: "徳俵", "shikiri-sen": "仕切り線", "jano-me": "蛇の目", shajo: "射場", "shooting-position": "射位", honza: "本座", yamichi: "矢道", "yatori-michi": "矢取道", azuchi: "安土", mato: "的", kamiza: "上座", "cage-canvas": "キャンバス", "cage-fence": "金網", "cage-post": "パッド付き支柱", "cage-gate": "出入口", "cage-steps": "階段", "cage-platform": "台", "ring-canvas": "キャンバス", "ring-ropes": "ロープ", "ring-post": "コーナーポスト", "ring-red-corner": "赤コーナー", "ring-blue-corner": "青コーナー", "ring-apron": "エプロン", "ring-steps": "階段", "mat-circle": "レスリングエリア", "mat-central": "中央の競技面", "mat-border": "マットの外周部", "mat-passivity": "パッシビティゾーン", "mat-centre-circle": "センターサークル", "mat-starting-lines": "スタートライン", "mat-platform": "台", shimoza: "下座", shinzen: "神棚", dais: "上座の台", banner: "垂れ幕", entrance: "入口", window: "窓", tatami: "畳", wall: "壁", "inner-lane": "インレーン", "outer-lane": "アウトレーン", "crossing-straight": "交差ストレート", "warm-up-lane": "ウォームアップレーン", padding: "防護マット", infield: "インフィールド", "coaches-area": "コーチエリア", blocks: "ブロック", "track-line": "トラックのライン", "start-lines": "スタートライン", ice: "氷面", "technical-panel": "テクニカルパネル", referee: "レフェリー", "kiss-and-cry": "キス・アンド・クライ", judges: "ジャッジ席", runway: "助走路", "take-off-board": "踏切板", "landing-area": "砂場", "throwing-circle": "投てきサークル", sector: "着地場所", "stop-board": "足留材", cage: "囲い", "throwing-arc": "スターティング・ライン", crossbar: "バー", "landing-mat": "着地マット", "run-up": "助走路", "zero-line": "ゼロライン", box: "ボックス",
|
|
945
959
|
"finish-line": "フィニッシュライン", kerb: "縁石", "lane-lines": "レーンライン", bend: "曲走路", straight: "直走路", "infield-pitch": "サッカーのピッチ", "start-line": "スタートライン", breakline: "ブレイクライン", "water-jump": "水濠", "exchange-zone": "テークオーバーゾーン",
|
|
946
960
|
"seven-metre-line": "7mスローライン", "four-metre-line": "4mライン", "throw-off-area": "スローオフエリア", "restraining-line": "リストレイニングライン", "wing-line": "ウイングライン", "marking-area": "マーキングエリア", "two-point-arc": "2ポイントアーク",
|
|
947
961
|
"lane-rope": "レーンロープ", "lane-line": "床面のレーンライン", "lane-end-cross": "クロスライン", "fifteen-metre-mark": "15mマーク", "touch-pad": "タッチ板", "starting-block": "スタート台", "backstroke-flags": "背泳ぎ用フラッグ", "false-start-rope": "フォルススタートロープ", gutter: "ガター",
|
|
@@ -962,7 +976,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
962
976
|
"in-goal": "インゴール", "twenty-two": "トライラインから22メートルラインまでのエリア", twenty: "ゴールラインから20メートルラインまでのエリア", crease: "クリース", "forward-fifty": "50メートルアークの内側", "centre-square": "センタースクエア",
|
|
963
977
|
"large-rectangle": "大きい長方形", pitch: "ピッチ", circle: "サークル", "twenty-three": "23メートルエリア", "goal-area": "ゴールエリア",
|
|
964
978
|
"pool-end": "プールの端(15mの目印まで)", springboards: "飛板", platforms: "固定台", "centre-stage": "プールの中央(真ん中の3分の1)",
|
|
965
|
-
"contest-area": "試合場内", ring: "土俵の円", shajo: "射場", yamichi: "矢道", azuchi: "安土", kamiza: "上座", cage: "ケージ", gate: "出入口", ropes: "ロープの内側", corner: "コーナー", "crossing-straight": "交差ストレート", "first-bend": "第1カーブ", "second-bend": "第2カーブ", judges: "ジャッジ席", "kiss-and-cry": "キス・アンド・クライ", bend: "曲走路", "home-straight": "メイン側直走路", "back-straight": "バック・ストレート", finish: "フィニッシュライン", start: "スタート", "high-jump": "走高跳", "pole-vault": "棒高跳", "long-jump": "走幅跳", "triple-jump": "三段跳", "shot-put": "砲丸投", "discus-throw": "円盤投", "hammer-throw": "ハンマー投", "javelin-throw": "やり投", "water-jump": "水濠",
|
|
979
|
+
"contest-area": "試合場内", ring: "土俵の円", shajo: "射場", yamichi: "矢道", azuchi: "安土", kamiza: "上座", cage: "ケージ", gate: "出入口", ropes: "ロープの内側", corner: "コーナー", passivity: "パッシビティゾーン", "crossing-straight": "交差ストレート", "first-bend": "第1カーブ", "second-bend": "第2カーブ", judges: "ジャッジ席", "kiss-and-cry": "キス・アンド・クライ", bend: "曲走路", "home-straight": "メイン側直走路", "back-straight": "バック・ストレート", finish: "フィニッシュライン", start: "スタート", "high-jump": "走高跳", "pole-vault": "棒高跳", "long-jump": "走幅跳", "triple-jump": "三段跳", "shot-put": "砲丸投", "discus-throw": "円盤投", "hammer-throw": "ハンマー投", "javelin-throw": "やり投", "water-jump": "水濠",
|
|
966
980
|
},
|
|
967
981
|
folded: {
|
|
968
982
|
top: "上のハウス", bottom: "下のハウス", left: "左のハウス", right: "右のハウス",
|
package/dist/types.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export type { PoolSport, PoolStyle };
|
|
|
17
17
|
/** The budō: the contest areas of judo and karate, the kendo shiai-jo, the sumo dohyō, the kyūdōjō, and a dojo of tatami. */
|
|
18
18
|
export type BudoSport = "judo" | "karate" | "kendo" | "sumo" | "kyudo" | "dojo";
|
|
19
19
|
/** The combat sports' rings, cages and mats, drawn by the same engine as the budō: the MMA cage (eight-sided, as a generic cage), and as they are added the boxing ring, the wrestling mats and the professional wrestling ring. */
|
|
20
|
-
export type CombatSport = "mma" | "boxing";
|
|
20
|
+
export type CombatSport = "mma" | "boxing" | "wrestling";
|
|
21
21
|
export type { BudoStyle, DojoSpec, BudoScore };
|
|
22
22
|
/** The surfaces: three football fields, a rink, a court, a ballpark, a soccer pitch, a curling sheet, twelve net, racket and court sports (tennis, volleyball, badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet and netball), four pools (swimming, water polo, diving and artistic swimming), seven field sports (lacrosse, rugby, Australian football, Gaelic football and hurling, cricket, field hockey and handball) and the athletics stadium (the 400 m track with its infield, and the covered 200 m track). */
|
|
23
23
|
export type Sport = "nfl" | "cfl" | "ifaf" | "nhl" | "nba" | "mlb" | "soccer" | "curling" | "tennis" | "volleyball" | "badminton" | "pickleball" | "tabletennis" | "padel" | "squash" | "racquetball" | "sepaktakraw" | "teqball" | "roundnet" | "netball" | PoolSport | FieldSport | "athletics" | "skating" | BudoSport | CombatSport;
|
|
@@ -321,7 +321,7 @@ export interface CrowdOptions {
|
|
|
321
321
|
* `penalty-area`. Baseball: `infield`, `outfield`. The net sports: `half-court`. Curling: `sheet`, `half`, `house`, `folded`. Rugby: `half`, `twenty-two` (union) or `twenty` (league), `in-goal`. Lacrosse: `half`, `crease`. Australian football: `half`, `forward-fifty`, `centre-square`.
|
|
322
322
|
* Gaelic games: `half`, `large-rectangle`. Cricket: `pitch`, `circle`. Field hockey: `half`, `circle`, `twenty-three`. Handball: `half`, `goal-area`. Swimming: `half`, `pool-end`. Water polo: `half`, `goal-area`. Diving: `springboards`, `platforms`. Artistic swimming: `half`, `centre-stage`. Judo and karate: `contest-area`, `start`. Sumo: `ring`. Kyudo: `shajo`, `yamichi`, `azuchi`. Dojo: `kamiza`, `half`. Athletics: `bend`, `home-straight`, `back-straight`, `finish`, `start`, `infield`, a field event (`high-jump`, `pole-vault`, `long-jump`, `triple-jump`, `shot-put`, `discus-throw`, `hammer-throw`, `javelin-throw`) and `water-jump`. `RANGES` lists them for each sport.
|
|
323
323
|
*/
|
|
324
|
-
export type RangeName = "red-zone" | "between-the-20s" | "end-zone" | "field-of-play" | "own-half" | "opponent-half" | "offensive-zone" | "defensive-zone" | "neutral-zone" | "half" | "half-court" | "paint" | "final-third" | "defensive-third" | "middle-third" | "penalty-area" | "infield" | "outfield" | "sheet" | "house" | "folded" | "in-goal" | "twenty-two" | "twenty" | "crease" | "forward-fifty" | "centre-square" | "large-rectangle" | "pitch" | "circle" | "twenty-three" | "goal-area" | "pool-end" | "springboards" | "platforms" | "centre-stage" | "bend" | "home-straight" | "back-straight" | "finish" | "start" | "infield" | "high-jump" | "pole-vault" | "long-jump" | "triple-jump" | "shot-put" | "discus-throw" | "hammer-throw" | "javelin-throw" | "water-jump" | "crossing-straight" | "first-bend" | "second-bend" | "judges" | "kiss-and-cry" | "contest-area" | "ring" | "shajo" | "yamichi" | "azuchi" | "kamiza" | "cage" | "gate" | "ropes" | "corner";
|
|
324
|
+
export type RangeName = "red-zone" | "between-the-20s" | "end-zone" | "field-of-play" | "own-half" | "opponent-half" | "offensive-zone" | "defensive-zone" | "neutral-zone" | "half" | "half-court" | "paint" | "final-third" | "defensive-third" | "middle-third" | "penalty-area" | "infield" | "outfield" | "sheet" | "house" | "folded" | "in-goal" | "twenty-two" | "twenty" | "crease" | "forward-fifty" | "centre-square" | "large-rectangle" | "pitch" | "circle" | "twenty-three" | "goal-area" | "pool-end" | "springboards" | "platforms" | "centre-stage" | "bend" | "home-straight" | "back-straight" | "finish" | "start" | "infield" | "high-jump" | "pole-vault" | "long-jump" | "triple-jump" | "shot-put" | "discus-throw" | "hammer-throw" | "javelin-throw" | "water-jump" | "crossing-straight" | "first-bend" | "second-bend" | "judges" | "kiss-and-cry" | "contest-area" | "ring" | "shajo" | "yamichi" | "azuchi" | "kamiza" | "cage" | "gate" | "ropes" | "corner" | "passivity";
|
|
325
325
|
/** A named range at the end of your choice: `{ name: "offensive-zone", end: "left" }` is the offensive zone of a team that attacks the left. */
|
|
326
326
|
export interface RangeNamed {
|
|
327
327
|
name: RangeName;
|
package/dist/units.js
CHANGED
|
@@ -60,6 +60,8 @@ export const SURFACE_UNITS = Object.freeze({
|
|
|
60
60
|
mma: "ft",
|
|
61
61
|
// The ring: the commissions' rules are written in feet and inches (the amateurs' in metres, in their own league).
|
|
62
62
|
boxing: "ft",
|
|
63
|
+
// The mat: the UWW's rules are in metres (the folkstyle leagues' in feet, in their own league).
|
|
64
|
+
wrestling: "m",
|
|
63
65
|
});
|
|
64
66
|
/** True when `unit` is one of the six. */
|
|
65
67
|
export const isUnit = (unit) => typeof unit === "string" && Object.prototype.hasOwnProperty.call(FEET_PER, unit);
|
package/dist/uprights.budo.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { budoPlan } from "./budo/plan.js";
|
|
6
6
|
import { flat, n, plane, shy, wall } from "./turn.kit.js";
|
|
7
7
|
import { cageUprights } from "./uprights.cage.js";
|
|
8
|
-
import { ringUprights } from "./uprights.ring.js";
|
|
8
|
+
import { platformPlanes, ringUprights } from "./uprights.ring.js";
|
|
9
9
|
const K = 1 / 0.3048;
|
|
10
10
|
/** The walls of a dojo, 3 m high (ours). */
|
|
11
11
|
export const DOJO_WALL = 3;
|
|
@@ -72,6 +72,11 @@ export function budoUprights(o, thin) {
|
|
|
72
72
|
items.push(...cageUprights(plan, at, thin));
|
|
73
73
|
if (plan.boxing !== undefined)
|
|
74
74
|
items.push(...ringUprights(plan, plan.boxing, at));
|
|
75
|
+
// A wrestling mat that stands on a platform (the UWW's at the great events) is a solid block with the mat as its top; on the floor nothing stands.
|
|
76
|
+
if (plan.wrestling?.platform !== undefined) {
|
|
77
|
+
const h = plan.wrestling.height * K;
|
|
78
|
+
items.push({ id: "deck", kind: "deck", at: at(plan.wrestling.centre[0], plan.wrestling.centre[1]), height: h, planes: platformPlanes(plan.wrestling.platform, at, h) });
|
|
79
|
+
}
|
|
75
80
|
if (plan.kyudo !== undefined) {
|
|
76
81
|
const built = azuchiPlanes(plan, at);
|
|
77
82
|
items.push({ id: "azuchi", kind: "azuchi", at: at(plan.kyudo.target, plan.kyudo.lanes[0]), height: built.height, planes: built.mound });
|
|
@@ -95,5 +100,5 @@ export function budoUprights(o, thin) {
|
|
|
95
100
|
});
|
|
96
101
|
items.push({ id: "walls", kind: "walls", at: centre, height: h, planes });
|
|
97
102
|
}
|
|
98
|
-
return { items, lift, area, whole: plan.sumo !== undefined || plan.mma !== undefined || plan.boxing !== undefined };
|
|
103
|
+
return { items, lift, area, whole: plan.sumo !== undefined || plan.mma !== undefined || plan.boxing !== undefined || plan.wrestling?.platform !== undefined };
|
|
99
104
|
}
|
package/dist/uprights.js
CHANGED
|
@@ -32,7 +32,7 @@ import { NO_VENUE, standsVenue } from "./venue.js";
|
|
|
32
32
|
/** All the planes of all the things. */
|
|
33
33
|
export const planesOf = (u) => u.items.flatMap((item) => item.planes);
|
|
34
34
|
/** The unit each sport's rulebook gives its heights in, when the options name none. */
|
|
35
|
-
const RULEBOOK_UNIT = { volleyball: "m", badminton: "m", tabletennis: "m", padel: "m", squash: "m", athletics: "m", skating: "m", judo: "m", karate: "m", kendo: "m", sumo: "m", kyudo: "m", dojo: "m", mma: "ft", swimming: "m", waterpolo: "m", diving: "m", artisticswimming: "m", sepaktakraw: "m", teqball: "m", roundnet: "m", netball: "m", soccer: "m", handball: "m", fieldhockey: "m", rugby: "m", afl: "m", gaelic: "m" };
|
|
35
|
+
const RULEBOOK_UNIT = { volleyball: "m", badminton: "m", tabletennis: "m", padel: "m", squash: "m", athletics: "m", skating: "m", judo: "m", karate: "m", kendo: "m", sumo: "m", kyudo: "m", dojo: "m", mma: "ft", boxing: "ft", wrestling: "m", swimming: "m", waterpolo: "m", diving: "m", artisticswimming: "m", sepaktakraw: "m", teqball: "m", roundnet: "m", netball: "m", soccer: "m", handball: "m", fieldhockey: "m", rugby: "m", afl: "m", gaelic: "m" };
|
|
36
36
|
/** What stands on the surface the options draw: nothing on a curling sheet, which is flat. */
|
|
37
37
|
export function uprightsFor(o, settings = {}) {
|
|
38
38
|
const { sport, league } = chooseLeague(o);
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.22.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export const VERSION = "0.
|
|
2
|
+
export const VERSION = "0.22.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@johnmorrisdotca/kyogijo-stadiums",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Kyogijo Stadiums 競技場, 40 sports' surfaces as SVG, drawn to scale from the rulebooks: NFL, CFL and IFAF football fields, an NHL rink, an NBA court, MLB ballparks, soccer pitches, curling sheets, athletics stadiums, speed skating, short track and figure skating rinks, swimming pools, water polo fields, diving wells, artistic swimming areas, and the courts and fields of tennis, volleyball (indoor, beach and sitting), badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet, netball, lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey and handball, and the budo of judo, karate, kendo, sumo and kyudo with a dojo of tatami laid as real units, the MMA cage, with each team's name and logo on its side and the score in the middle, stands and a crowd, a pageant of flags, and a 3D view. Light and dark, accessible, a compact badge for lists, a helper for React and a custom element. Zero dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sports",
|