@johnmorrisdotca/kyogijo-stadiums 0.0.0-stage → 0.4.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 +129 -0
- package/LICENSE +21 -0
- package/NOTICE.md +293 -0
- package/README.md +600 -2
- package/dist/annotate.d.ts +47 -0
- package/dist/annotate.js +349 -0
- package/dist/atlas-entry.d.ts +4 -0
- package/dist/atlas-entry.js +3 -0
- package/dist/atlas.d.ts +131 -0
- package/dist/atlas.js +149 -0
- package/dist/background.d.ts +56 -0
- package/dist/background.js +127 -0
- package/dist/ballpark.d.ts +48 -0
- package/dist/ballpark.js +129 -0
- package/dist/canvas-entry.d.ts +2 -0
- package/dist/canvas-entry.js +2 -0
- package/dist/canvas.d.ts +85 -0
- package/dist/canvas.js +279 -0
- package/dist/charts-entry.d.ts +10 -0
- package/dist/charts-entry.js +8 -0
- package/dist/charts.baseball.d.ts +30 -0
- package/dist/charts.baseball.js +152 -0
- package/dist/charts.curling.d.ts +52 -0
- package/dist/charts.curling.js +196 -0
- package/dist/charts.d.ts +172 -0
- package/dist/charts.js +508 -0
- package/dist/charts.network.d.ts +66 -0
- package/dist/charts.network.js +64 -0
- package/dist/charts.soccer.d.ts +43 -0
- package/dist/charts.soccer.js +191 -0
- package/dist/charts.types.d.ts +396 -0
- package/dist/charts.types.js +1 -0
- package/dist/colour.d.ts +29 -0
- package/dist/colour.js +97 -0
- package/dist/common.d.ts +14 -0
- package/dist/common.js +32 -0
- package/dist/court.d.ts +89 -0
- package/dist/court.js +248 -0
- package/dist/courts.style.d.ts +20 -0
- package/dist/courts.style.js +54 -0
- package/dist/cricket.board.d.ts +18 -0
- package/dist/cricket.board.js +67 -0
- package/dist/curling.board.d.ts +24 -0
- package/dist/curling.board.js +147 -0
- package/dist/d3-entry.d.ts +3 -0
- package/dist/d3-entry.js +2 -0
- package/dist/d3.d.ts +45 -0
- package/dist/d3.js +56 -0
- package/dist/draw.d.ts +52 -0
- package/dist/draw.js +705 -0
- package/dist/element-define.d.ts +2 -0
- package/dist/element-define.js +4 -0
- package/dist/element-entry.d.ts +1 -0
- package/dist/element-entry.js +2 -0
- package/dist/element.d.ts +39 -0
- package/dist/element.js +321 -0
- package/dist/eras-entry.d.ts +2 -0
- package/dist/eras-entry.js +2 -0
- package/dist/eras.d.ts +204 -0
- package/dist/eras.js +396 -0
- package/dist/events-entry.d.ts +3 -0
- package/dist/events-entry.js +3 -0
- package/dist/events.d.ts +54 -0
- package/dist/events.data.d.ts +59 -0
- package/dist/events.data.js +297 -0
- package/dist/events.js +127 -0
- package/dist/features.d.ts +31 -0
- package/dist/features.js +284 -0
- package/dist/field.score.d.ts +5 -0
- package/dist/field.score.js +33 -0
- package/dist/fields/afl.d.ts +11 -0
- package/dist/fields/afl.js +103 -0
- package/dist/fields/cricket.d.ts +9 -0
- package/dist/fields/cricket.js +81 -0
- package/dist/fields/fieldhockey.d.ts +6 -0
- package/dist/fields/fieldhockey.js +81 -0
- package/dist/fields/gaelic.d.ts +10 -0
- package/dist/fields/gaelic.js +86 -0
- package/dist/fields/handball.d.ts +6 -0
- package/dist/fields/handball.js +85 -0
- package/dist/fields/lacrosse.d.ts +17 -0
- package/dist/fields/lacrosse.js +169 -0
- package/dist/fields/rugby.d.ts +10 -0
- package/dist/fields/rugby.js +130 -0
- package/dist/fields.d.ts +12 -0
- package/dist/fields.js +44 -0
- package/dist/fields.kit.d.ts +63 -0
- package/dist/fields.kit.js +108 -0
- package/dist/fields.style.d.ts +4 -0
- package/dist/fields.style.js +19 -0
- package/dist/fields.types.d.ts +155 -0
- package/dist/fields.types.js +1 -0
- package/dist/format.d.ts +10 -0
- package/dist/format.js +28 -0
- package/dist/formations.d.ts +18 -0
- package/dist/formations.js +211 -0
- package/dist/frames-entry.d.ts +8 -0
- package/dist/frames-entry.js +7 -0
- package/dist/frames.d.ts +199 -0
- package/dist/frames.js +271 -0
- package/dist/frames.providers.d.ts +16 -0
- package/dist/frames.providers.js +302 -0
- package/dist/geojson-entry.d.ts +2 -0
- package/dist/geojson-entry.js +2 -0
- package/dist/geojson.d.ts +79 -0
- package/dist/geojson.js +147 -0
- package/dist/geometry-entry.d.ts +7 -0
- package/dist/geometry-entry.js +5 -0
- package/dist/geometry.d.ts +295 -0
- package/dist/geometry.js +361 -0
- package/dist/grounds-entry.d.ts +4 -0
- package/dist/grounds-entry.js +3 -0
- package/dist/grounds.d.ts +134 -0
- package/dist/grounds.data.d.ts +2 -0
- package/dist/grounds.data.js +1849 -0
- package/dist/grounds.js +74 -0
- package/dist/heat.colour.d.ts +37 -0
- package/dist/heat.colour.js +54 -0
- package/dist/heat.d.ts +43 -0
- package/dist/heat.js +614 -0
- package/dist/heat.stats.d.ts +123 -0
- package/dist/heat.stats.js +413 -0
- package/dist/heat.types.d.ts +145 -0
- package/dist/heat.types.js +1 -0
- package/dist/heat.zones.d.ts +54 -0
- package/dist/heat.zones.js +424 -0
- package/dist/homeside.d.ts +16 -0
- package/dist/homeside.js +43 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.js +29 -0
- package/dist/layers-entry.d.ts +19 -0
- package/dist/layers-entry.js +11 -0
- package/dist/layers.d.ts +41 -0
- package/dist/layers.env.d.ts +72 -0
- package/dist/layers.env.js +79 -0
- package/dist/layers.js +533 -0
- package/dist/layers.marks.d.ts +45 -0
- package/dist/layers.marks.js +168 -0
- package/dist/layers.types.d.ts +226 -0
- package/dist/layers.types.js +1 -0
- package/dist/layout.d.ts +97 -0
- package/dist/layout.js +381 -0
- package/dist/layout.style.d.ts +6 -0
- package/dist/layout.style.js +17 -0
- package/dist/layouts-entry.d.ts +5 -0
- package/dist/layouts-entry.js +4 -0
- package/dist/leagues/aussie.d.ts +57 -0
- package/dist/leagues/aussie.js +36 -0
- package/dist/leagues/baseball.d.ts +58 -0
- package/dist/leagues/baseball.js +171 -0
- package/dist/leagues/basketball.d.ts +67 -0
- package/dist/leagues/basketball.js +128 -0
- package/dist/leagues/courts.d.ts +212 -0
- package/dist/leagues/courts.js +114 -0
- package/dist/leagues/cricket.d.ts +45 -0
- package/dist/leagues/cricket.js +34 -0
- package/dist/leagues/curling.d.ts +64 -0
- package/dist/leagues/curling.js +53 -0
- package/dist/leagues/fieldhockey.d.ts +48 -0
- package/dist/leagues/fieldhockey.js +29 -0
- package/dist/leagues/fields.d.ts +10 -0
- package/dist/leagues/fields.js +6 -0
- package/dist/leagues/football.d.ts +8 -0
- package/dist/leagues/football.js +82 -0
- package/dist/leagues/gaelic.d.ts +50 -0
- package/dist/leagues/gaelic.js +29 -0
- package/dist/leagues/handball.d.ts +45 -0
- package/dist/leagues/handball.js +32 -0
- package/dist/leagues/hockey.d.ts +63 -0
- package/dist/leagues/hockey.js +166 -0
- package/dist/leagues/lacrosse.d.ts +103 -0
- package/dist/leagues/lacrosse.js +175 -0
- package/dist/leagues/rugby.d.ts +59 -0
- package/dist/leagues/rugby.js +72 -0
- package/dist/leagues/sources.d.ts +18 -0
- package/dist/leagues/sources.js +95 -0
- package/dist/leagues/types.d.ts +43 -0
- package/dist/leagues/types.js +5 -0
- package/dist/leagues-entry.d.ts +23 -0
- package/dist/leagues-entry.js +15 -0
- package/dist/leagues.d.ts +172 -0
- package/dist/leagues.js +462 -0
- package/dist/look.d.ts +50 -0
- package/dist/look.js +186 -0
- package/dist/mark.d.ts +35 -0
- package/dist/mark.js +59 -0
- package/dist/mount-entry.d.ts +2 -0
- package/dist/mount-entry.js +2 -0
- package/dist/mount.d.ts +63 -0
- package/dist/mount.js +167 -0
- package/dist/mow.d.ts +36 -0
- package/dist/mow.js +111 -0
- package/dist/names.d.ts +77 -0
- package/dist/names.js +97 -0
- package/dist/outline.d.ts +25 -0
- package/dist/outline.js +112 -0
- package/dist/parks-entry.d.ts +4 -0
- package/dist/parks-entry.js +3 -0
- package/dist/parks.d.ts +200 -0
- package/dist/parks.data.d.ts +2 -0
- package/dist/parks.data.js +4489 -0
- package/dist/parks.js +92 -0
- package/dist/plot-entry.d.ts +2 -0
- package/dist/plot-entry.js +2 -0
- package/dist/plot.d.ts +74 -0
- package/dist/plot.js +68 -0
- package/dist/png-entry.d.ts +2 -0
- package/dist/png-entry.js +2 -0
- package/dist/png.d.ts +26 -0
- package/dist/png.js +46 -0
- package/dist/ranges.d.ts +33 -0
- package/dist/ranges.js +178 -0
- package/dist/ranges.names.d.ts +31 -0
- package/dist/ranges.names.js +65 -0
- package/dist/react-entry.d.ts +2 -0
- package/dist/react-entry.js +2 -0
- package/dist/react.d.ts +53 -0
- package/dist/react.js +58 -0
- package/dist/replay-entry.d.ts +5 -0
- package/dist/replay-entry.js +4 -0
- package/dist/replay.control.d.ts +47 -0
- package/dist/replay.control.js +184 -0
- package/dist/replay.d.ts +170 -0
- package/dist/replay.dom.d.ts +21 -0
- package/dist/replay.dom.js +388 -0
- package/dist/replay.js +579 -0
- package/dist/replay.types.d.ts +152 -0
- package/dist/replay.types.js +1 -0
- package/dist/restyle.d.ts +21 -0
- package/dist/restyle.js +70 -0
- package/dist/road.d.ts +26 -0
- package/dist/road.draw.d.ts +6 -0
- package/dist/road.draw.js +269 -0
- package/dist/road.js +59 -0
- package/dist/road.model.d.ts +63 -0
- package/dist/road.model.js +215 -0
- package/dist/road.style.d.ts +7 -0
- package/dist/road.style.js +26 -0
- package/dist/road.types.d.ts +122 -0
- package/dist/road.types.js +1 -0
- package/dist/scene-entry.d.ts +7 -0
- package/dist/scene-entry.js +5 -0
- package/dist/scene.css.d.ts +44 -0
- package/dist/scene.css.js +296 -0
- package/dist/scene.d.ts +27 -0
- package/dist/scene.fit.d.ts +12 -0
- package/dist/scene.fit.js +18 -0
- package/dist/scene.flat.d.ts +38 -0
- package/dist/scene.flat.js +167 -0
- package/dist/scene.js +420 -0
- package/dist/scene.path.d.ts +40 -0
- package/dist/scene.path.js +357 -0
- package/dist/scene.types.d.ts +172 -0
- package/dist/scene.types.js +1 -0
- package/dist/scene.xml.d.ts +31 -0
- package/dist/scene.xml.js +81 -0
- package/dist/score.d.ts +70 -0
- package/dist/score.js +212 -0
- package/dist/sets.board.d.ts +22 -0
- package/dist/sets.board.js +89 -0
- package/dist/sheet.d.ts +18 -0
- package/dist/sheet.js +38 -0
- package/dist/special.d.ts +44 -0
- package/dist/special.js +204 -0
- package/dist/special.style.d.ts +8 -0
- package/dist/special.style.js +36 -0
- package/dist/strings.d.ts +581 -0
- package/dist/strings.js +411 -0
- package/dist/style.d.ts +35 -0
- package/dist/style.js +177 -0
- package/dist/surfaces/baseball.d.ts +33 -0
- package/dist/surfaces/baseball.js +208 -0
- package/dist/surfaces/baseball.walls.d.ts +16 -0
- package/dist/surfaces/baseball.walls.js +150 -0
- package/dist/surfaces/basketball.d.ts +8 -0
- package/dist/surfaces/basketball.js +199 -0
- package/dist/surfaces/curling.d.ts +23 -0
- package/dist/surfaces/curling.js +128 -0
- package/dist/surfaces/field.d.ts +12 -0
- package/dist/surfaces/field.js +163 -0
- package/dist/surfaces/football.d.ts +12 -0
- package/dist/surfaces/football.js +208 -0
- package/dist/surfaces/hockey.d.ts +10 -0
- package/dist/surfaces/hockey.js +166 -0
- package/dist/surfaces/net.d.ts +7 -0
- package/dist/surfaces/net.js +151 -0
- package/dist/surfaces/soccer-providers.d.ts +124 -0
- package/dist/surfaces/soccer-providers.js +334 -0
- package/dist/surfaces/soccer-spec.d.ts +138 -0
- package/dist/surfaces/soccer-spec.js +175 -0
- package/dist/surfaces/soccer.d.ts +25 -0
- package/dist/surfaces/soccer.js +270 -0
- package/dist/surfaces/surface.d.ts +180 -0
- package/dist/surfaces/surface.js +49 -0
- package/dist/team.common.d.ts +75 -0
- package/dist/team.common.js +97 -0
- package/dist/team.formation.d.ts +24 -0
- package/dist/team.formation.js +121 -0
- package/dist/team.geometry.d.ts +66 -0
- package/dist/team.geometry.js +304 -0
- package/dist/team.layers.d.ts +16 -0
- package/dist/team.layers.js +32 -0
- package/dist/team.motion.d.ts +9 -0
- package/dist/team.motion.js +325 -0
- package/dist/team.network.d.ts +43 -0
- package/dist/team.network.js +215 -0
- package/dist/team.shape.d.ts +12 -0
- package/dist/team.shape.js +217 -0
- package/dist/team.types.d.ts +189 -0
- package/dist/team.types.js +1 -0
- package/dist/text.d.ts +31 -0
- package/dist/text.js +88 -0
- package/dist/themes.d.ts +14 -0
- package/dist/themes.js +24 -0
- package/dist/types.d.ts +565 -0
- package/dist/types.js +1 -0
- package/dist/units.d.ts +45 -0
- package/dist/units.js +90 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/package.json +234 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are written here. The format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project uses
|
|
5
|
+
[Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- The name a reader sees is Kyogijo Stadiums (競技場 in Japanese): the demo's title, the docs site, the API page, the README and the package description. Code names (`drawKyogijo`, `<kyogijo-field>`) are unchanged.
|
|
13
|
+
- The demo's year switch in the atlas is a finger wide before its words arrive, in WebKit too.
|
|
14
|
+
|
|
15
|
+
## [0.4.0] - 2026-10-14
|
|
16
|
+
|
|
17
|
+
Previously `@johnmorrisdotca/kyogijo`; renamed in 0.4.0 to `@johnmorrisdotca/kyogijo-stadiums`.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **`roadToFinal`: the road to a tournament's final** (`@johnmorrisdotca/kyogijo-stadiums/charts`, [docs/charts.md](./docs/charts.md#the-road-to-the-final)). The two finalists as large round marks with their names; down the middle the rounds, the last at the top, on a dotted road; on each finalist's side its matches, each as the round mark of both teams with the score between them in large type and FT, AET or the shoot-out under it; and the group stage as a row of small marks, three-letter codes and scores at the foot. A finalist is a `Team` with a `path` of `{ round, opponent, score, decidedBy, pens, homeFirst, note }` and an optional `group`; a round is a key with words in English and Japanese (`round-of-32` to `semi-final`) or any key named in `labels`, so a play-off series (`4-2`) draws as well as a knockout. `final` writes the final's score between the large marks and quiets the loser; `winner` makes the side that won each match brighter; `codes`, `endnote`, `groupLabel`, `theme`, `language` and `style: "none"` as in the other drawings. Four sizes: `card` (1080 by 1350), `square` (1080 by 1080), `wide` (1200 by 675, the finalists at the two ends) and `phone` (390 wide, as tall as the rounds need), listed in `ROAD_SIZES`. It gives back a chart's shape without layers: `options`, `title`, `summary`, `totals` (each finalist's record, the rounds, the champion), `draw(extra)` and `table()`, a row for every match. The SVG is `role="img"` with a title and a description, reads in the scene and every renderer, goes in a `drawGrid`, and has ids of its own; a team with no flag or logo is drawn as its initials on its colour. New: `KYOGIJO_ROAD_STYLE`, the types `RoadChart`, `RoadFinalist`, `RoadMatch`, `RoadGroupMatch`, `RoadFinal`, `RoadOptions`, `RoadScore`, `RoadDecided`, `RoadSize`, `RoadSizeInfo`, `RoadRecord` and `RoadTotals`, and the `road` words of `KYOGIJO_STRINGS` (`en` and `ja`; a custom set of words must give them).
|
|
22
|
+
- **A round team mark in a score** ([docs/score.md](./docs/score.md#round-marks)). `mark: "round"` on a team, or `markShape: "round"` on the score, draws its flag or logo clipped to a circle with a thin ring, on each side of the surface (the end zones of a pitch, the halves of a court), in the badge and in the strip of a compact card; where the words are turned (along the ends of a wide pitch, in a tall drawing) the mark is turned back and stays upright. A round mark with no logo is the team's initials on its colour; `markFit: "contain"` shows a crest whole on a plain disc. Off by default, and a drawing without it is the same text as before. New: `Team.mark`, `Team.markFit`, `ScoreOptions.markShape`, the type `TeamMark` and `KYOGIJO_MARK_STYLE` (`--ky-mark-ring`, `--ky-mark-edge`, `--ky-mark-plain`); a drawing writes the rules in only when it has a round mark.
|
|
23
|
+
- The demo has a "Road to the final" section with made-up nations (sixteen that do not exist, each with a simple flag drawn in code in `demo/road-data.js`), a play-off series, and the round mark on a pitch, in English and Japanese; the docs gallery has the same drawings, each made from the code beside it.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **Breaking: the package is now `@johnmorrisdotca/kyogijo-stadiums`** (it was `@johnmorrisdotca/kyogijo`, whose last version is 0.3.0). The code is the same, and so are the names in it: `drawKyogijo`, `mountKyogijo`, `<kyogijo-field>` and the `kyogijo` class are unchanged, and the product is still Kyogijo (競技場). What changes is where it is installed and imported from: `npm install @johnmorrisdotca/kyogijo-stadiums`, `import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums"`, and the same for every entry (`/charts`, `/replay`, `/layouts` and the rest) and for the CDNs (`https://cdn.jsdelivr.net/npm/@johnmorrisdotca/kyogijo-stadiums@0/+esm`). The repository is now `github.com/johnmorrisdotca/kyogijo-stadiums` and the demo `johnmorrisdotca.github.io/kyogijo-stadiums/` (the old repository address redirects; the old demo address does not). The demo keeps its choices of language and theme on the device under `kyogijo-stadiums.page.lang` and `kyogijo-stadiums.theme` (they were `kyogijo.`), so each visitor is asked once more. The family's template (`scripts/family-template.mjs`, version 2026-10-14) names the package `kyogijo-stadiums` in the footer and in every package's list of the family.
|
|
28
|
+
- **The demo's Ballparks section is short, with filters, and there is a Soccer grounds section like it.** All 94 park cards in one grid made a section 2,200 px tall on a desk and 6,000 px on a phone. It now opens on the MLB parks in use today (30), as two rows of eight on a desk and one row that scrolls sideways on a phone (a row keeps the section to one screen, and the next card shows at the edge to say it scrolls), with "Show all 30 parks" under them: 640 px on a desk and 580 px on a phone. Above the cards are the league (All, MLB, NPB), whether a park is in use (All, Today, Past), the era (a decade, for the past parks), a search that reads every name a park has had, in English and in Japanese (`placesBy`: `Camden Yards`, `甲子園`, `ヤンキースタジアム`; the filters are off while it is typed, so it reaches every park), a count line in a polite live region (`30 of 94 parks`) and a reset. The grounds have the same: the grounds of the World Cup finals open (28 of 64), with group (finals, 2026, clubs), country and search, and the section is no taller. The filters are in the address under their own names (`parkleague`, `parkstatus`, `parkera`, `parkq`, `parkall`; `groundgroup`, `groundcountry`, `groundq`, `groundall`), written only when they are not the default. The build draws the default view of both sections into the HTML, so they are whole with scripts off and move nothing when the script takes over; the e2e tests hold that (a layout shift of 0 with the sections in view) and cover the filters, both searches, show all, the address, the phone and the desk. The package is unchanged.
|
|
29
|
+
- **The demo's Every sport and The soccer pitch sections are short too, with chips.** The sport gallery was 4,451 px tall on a desk and 11,941 px on a phone, and the pitches section 3,236 px and 8,455 px, because every card drew tall. They now open on the first cards, wide, in boxes of one shape: two rows of three on a desk and one row that scrolls sideways on a phone with the next card peeking (738 and 458 px for the sports, 755 and 509 px for the pitches), with chips for the family of sport (Football codes, Hockey, Basketball, Baseball, Soccer, Curling, Net sports, Field sports) or the kind of pitch (Presets, Small-sided, Futsal, Famous grounds, Layouts, Mowing and goals; the mowing cards joined the pitches, with 5- and 9-a-side), a count that a screen reader hears, "Show all", and the chips in the address (`galleryfamily`, `galleryall`, `pitchesgroup`, `pitchesall`), English and Japanese. The first view is drawn into the page, and the cards a desk does not show first are boxes that the script draws when the grid comes near the screen, so the page does not carry a drawing of every card and nothing moves when one arrives (the same for the Ballparks and Soccer grounds).
|
|
30
|
+
- **Breaking: soccer, rugby (union and league), Australian football, Gaelic games, field hockey, handball and cricket now put the home team first (left) by default; pass `homeSide: "right"` for the old layout** ([docs/score.md](./docs/score.md#which-side-the-home-team-is-on)). The default was the North American "away at home" for every sport, which reversed a soccer score against "Home 2-1 Away". NFL, CFL, IFAF, NHL, NBA, MLB, curling, the net sports and lacrosse (except the `world-men`, `world-women` and `world-box` leagues, which are home first) keep the home team on the right. An explicit `homeSide` always wins. The badge, the compact strip, the order of the teams in the title and the description (`Calvara 1, Aurelia 2`, in Japanese too) and of a shoot-out in the status (`Final · 2-4 pens`) follow the side. New: `homeSideFor(sport, league?)`, and the `HOME_FIRST` and `HOME_FIRST_LEAGUES` tables behind it. `abbreviate()` now says that its guess is not a country code (Spain gives `SPA`, FIFA's is `ESP`): pass each national team's `abbr`.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **The demo's first paint is whole.** The stage was a thin bar and every panel an empty box until the script ran, then the page jumped (a layout shift of 0.5). The build now draws the playground's first view into the HTML: the default rink, every English word, and the controls in their first state, so the page reads and shows its drawing with scripts off, and the script takes over the nodes that are there. The stage keeps its box from the first byte (its shape, by the drawing's width over its height), and an address that asks for another sport, size or way round has its box, rows and pressed choices set by a small inline script before anything is drawn, so the drawing swaps in place; a page opened in Japanese (the address, a kept choice or the browser) is held back, invisible but laid out, and shown in Japanese rather than English first. The docs, the gallery and the API reference have their header, footer and search words in the HTML too, and set `lang` before paint. The layout shift on load is 0 at every address and width tried (0.003 at most, for a past season whose notes are drawn by the script), and the e2e tests hold it under 0.05. The package is unchanged.
|
|
35
|
+
|
|
36
|
+
## [0.3.0] - 2026-10-14
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- **Names for every park and ground** ([docs/ballparks.md](./docs/ballparks.md#names), [docs/grounds.md](./docs/grounds.md#names), [docs/references.md](./docs/references.md#names)). Each of the 94 ballparks and 64 grounds has `name`, the everyday name in English (the one English sports media use, with the current sponsor's where that is what people say); `nameJa`, the everyday name in Japanese (every place has one: the 74 ballparks of the United States and Canada, which a Japanese drawing used to name in English, now have the title of their Japanese article); `readingJa`, its reading in kana wherever it has kanji; `localName` and `localLanguage`, the everyday name in the language of the place; and `aliases`, `{ name, lang, kind, from?, to?, source?, revision?, reading? }`: 720 names, each with where it was read, of the kinds `wikipedia` (every article that was cited, English and Japanese, with its revision, so that no citation is lost), `official`, `sponsor`, `former` (with the years a source gives) and `nickname`. The evidence is Wikidata's labels, aliases and properties official name, nickname and name (CC0), read politely by `pnpm names:fetch` into `scripts/names.wikidata.json`, and the infobox and first paragraph of the articles each place cites; a name with no source stops the build. A ground's `names` (the names it had in some years) are as before.
|
|
41
|
+
- **Lookups by name**: `parkByName` and `parksByName` (`/parks`), `groundByName` and `groundsByName` (`/grounds`), and `placeByName` and `placesByName` (`/atlas`) find a place by any of its names, in English, in Japanese or in the language of the place, best match first (the everyday names, then the official, cited and sponsors' names, then the former names and the nicknames). The comparison, `plainName`, ignores case, accents, spaces and punctuation, full-width and half-width, hiragana and katakana, the long vowel mark (`ヤンキー・スタジアム` is `ヤンキースタジアム`), the old and new forms of ヂ, ヅ and ヴ, and a leading `The`. The atlas search (`placesBy({ text })`) reads the aliases and the readings too. `officialName`, `parkOfficialName` and `groundOfficialName` give the name a place officially has when it is not the everyday one.
|
|
42
|
+
- A drawing says the official name in its description when it is not the name it uses: `Its official name is Hanshin Koshien Stadium.`, `正式名称は阪神甲子園球場です。` (`said.officially` in `KYOGIJO_STRINGS`), in the year of the drawing where the official name is dated.
|
|
43
|
+
- The demo's Atlas detail panel lists the official name and the other names (`atlasOfficial`, `atlasAlso`), and its search finds them.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- **Breaking: `name` is the everyday name, no longer the title of the article that was cited** (that title is an alias with kind `wikipedia`). Seven English names changed: `hanshin-koshien-stadium` is `Koshien Stadium` (was `Hanshin Koshien Stadium`), `mazda-stadium-hiroshima` `Mazda Stadium` (was `Mazda Zoom-Zoom Stadium Hiroshima`), `rakuten-mobile-park-miyagi` `Rakuten Mobile Saikyo Park Miyagi` (was `Rakuten Mobile Park Miyagi`, the name until 2025), `globe-life-park-in-arlington` `Choctaw Stadium` (as its article is titled now), `olympiastadion-munich` `Munich Olympic Stadium`, `olympiastadion-berlin` `Berlin Olympic Stadium`, and `groupama-stadium` `Groupama Stadium` (was `Parc Olympique Lyonnais`). `nrg-stadium` stays `Reliant Stadium`: its article says it was renamed back from `NRG Stadium` on 1 August 2026, and `NRG Stadium` (2014 to 2026) is a dated name and a `sponsor` alias.
|
|
48
|
+
- **Breaking: `nameJa` is the everyday name in Japanese**, as Japanese media say it where the Japanese article says which. Thirteen changed: `甲子園球場` (was `阪神甲子園球場`), `神宮球場` (was `明治神宮野球場`), `マツダスタジアム`, `エスコンフィールド北海道`, `楽天モバイル 最強パーク宮城`, `日産スタジアム` (was `横浜国際総合競技場`), `マラカナン`, `エスタディオ・モヌメンタル`, `ドイチェ・バンク・パルク`, `グルパマ・スタジアム`, `サン・シーロ`, `エティハド・スタジアム` and `カシマサッカースタジアム`; the old names are aliases (`official` or `wikipedia`). `ParkData.nameJa` and `Place.nameJa` are no longer optional: code that builds a `ParkData` or a `Place` of its own must give one.
|
|
49
|
+
- **Breaking: `Ground.nameLocal` is now `localName`**, and it is the everyday name in the language of the place (`San Siro` for the Meazza, `Maracanã`, `La Bombonera`, `Лужники`, `日産スタジアム`), not the name of the local article (the official ones are aliases). The parks of Japan, Montreal's two, and every ground outside the English-speaking world have `localName` and `localLanguage` too.
|
|
50
|
+
- **Breaking: the SVG written by `drawKyogijo` changes.** The English drawing of 15 grounds and 13 ballparks differs from 0.2.0's (the name, or the sentence that says the official name), and so does the Japanese drawing of every sport wherever it uses a word the native read of the Japanese settled (see below); every drawing's `data-version` reads `0.3.0`, which also changes the ids that are made from it. A stored copy of an old drawing, or a snapshot test of one, needs to be made again.
|
|
51
|
+
- **A native read of every Japanese string**, one terminology for the whole package: `ペナルティー` with the long vowel, as the JFA writes it (`ペナルティーエリア`, `ペナルティーアーク`, `ペナルティーマーク`, `ペナルティースポット`), `ウイング`, `本塁` for home plate (was `ホームベース`), `ゴーリー` for the goaltender, `国際標準` for the FIFA pitch, `BCプレイス`, `ゲーリック・ゲームズ`, `中堅正面` for dead centre, `ゴール裏` for behind the goal line, `フェアゾーン` and `ファウルゾーン`, `ゲームごとのスコア`; ranges are written with `〜` (was the full-width tilde `~`), and a size gives its unit once, `105×68m` (was `105m×68m`). English output is unchanged.
|
|
52
|
+
- The drawings that changed on purpose: the English drawing of 15 grounds and 13 ballparks (the name, or the sentence that says the official name) and the Japanese drawing of 8 grounds and 84 ballparks (the 74 of the United States and Canada, named in katakana now instead of in English, and 10 of Japan); a test holds every other drawing, in English and in Japanese, to the bytes it had.
|
|
53
|
+
- The demo's help text for the sport selector names all 20 sports, in English and in Japanese (it listed 14).
|
|
54
|
+
- The demo's Japanese status choices read as the status the drawing prints (`試合終了(延長)`, `試合終了(SO)`, `試合終了(延長戦)`, `試合終了(PK戦)`), and its Japanese page titles and labels follow the same terminology.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Spoken times in Japanese read as the time of day.** A replay's length and an event's time were said as `0:12` and `1:12`, which a Japanese reader takes for a clock; they are `12秒` and `1分12秒` now (`replaySpoken`, and the new strings `replay.spokenSeconds`, `replay.spokenMinutes` and `replay.spokenHours`, which a custom set of words must give). English still says `0:12`.
|
|
59
|
+
- **A convex hull's area unit was `平方m` in Japanese.** The unit is a word of the language now, `平方メートル`, `平方フィート` and `平方ヤード` (`team.squareUnits`, `team.squareOther`; `team.hullItem` takes the whole unit, `{unit}`, not `square {unit}`). English reads as it did.
|
|
60
|
+
|
|
61
|
+
## [0.2.0] - 2026-10-14
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
|
|
65
|
+
- **Layouts: small multiples** (`@johnmorrisdotca/kyogijo/layouts`, [docs/layouts.md](./docs/layouts.md)). `drawGrid(cells, { columns, gap, title, subtitle, endnote, legend, width, height, preset, background, language, theme })` puts many drawings in one SVG, as mplsoccer's `grid` does for pitches: one per park, per period or per player, under a shared title and subtitle, over a credit line, with a key they share. A cell is the options of `drawKyogijo`, a drawing's SVG, a chart, or `{ drawing, label }`. Every drawing keeps its own title and description and gets ids of its own (the same drawing may appear twice, and each rule scoped to an id follows it); the group has a title and a description made from them; the base stylesheet is written once. `preset` fits a social card (`card`, 1200 by 675), a square post (`square`, 1080 by 1080) or a phone (`phone`, 390 wide, one column, as tall as the drawings need); the columns are the number that makes the drawings largest. The scene and every renderer read a grid like any drawing. English and Japanese words for the group's title and description, and a test of every sport, every preset, ids, bounds and renderers.
|
|
66
|
+
- **Backgrounds** (`background` in the options of a drawing, and of a grid). A pattern drawn in SVG, with no image and no random number (`felt`, `grass`, `wood`, `ice`, `paper`, `grid`, `dots`), in the drawing's own ink at a low opacity so that it follows light and dark, laid on the apron under the surface; a colour under it; and a photograph (`image`, held to the rules of a team's `logo`, `imageOpacity`, `imageFit`) as an `<image>` between the two. Without a background a drawing is byte for byte as before. The canvas renderer cuts a photograph that fills the ground (`slice`) at its edges.
|
|
67
|
+
- **Runnable gallery examples.** Every picture of the gallery has a link to download the drawing as an SVG file and an "Open in a page" link to one HTML file, made when the site is built, that shows the picture, runs the snippet against the package on jsDelivr (`@johnmorrisdotca/kyogijo@<major>/+esm`, with the entries imported as `<major>/charts/+esm` and so on) and keeps the build's picture when the published package has no such feature. No third-party sandbox is used, and the page says that jsDelivr serves only published versions. A test runs every page's script against the source. A gallery page of layouts and backgrounds.
|
|
68
|
+
- **Lacrosse, rugby, Australian football, Gaelic games, cricket, field hockey and handball** (`sport: "lacrosse"`, `"rugby"`, `"afl"`, `"gaelic"`, `"cricket"`, `"fieldhockey"`, `"handball"`, [docs/field-sports.md](./docs/field-sports.md)). Each surface to scale from its own current rulebook, every figure cited, rule by rule, in docs/sources.md: World Lacrosse's men's and women's fields and box floor (2025 to 2028), the NCAA's men's and women's fields, the PLL's field (its 2024 book, the newest found) and the NLL's floor; World Rugby's Law 1 (2026), the NRL's (2023) and the IRL's (2024) playing fields; the AFL's Law 3 (2026), as an oval cut at its ends, with six named grounds at the length and width the AFL's venue pages print; the GAA's Rule 1 for football and hurling (2026); the pitch, creases and wickets of the Laws of Cricket (4th Edition 2026) in a ground with a boundary of your own and the ICC's 30-yard circle (October 2026); the FIH's pitch (March 2026) and the IHF's court (1 July 2025). 7 sports, 7 lacrosse leagues, 3 rugby, 2 Gaelic, 3 cricket (`LEAGUES`), the option `field` (`length`, `width`, `inGoal`, `ground`, `boundary`, `circle`: a size within the range each rulebook allows, an error that says the range when it is outside), `FIELD_SPORTS`, `fieldPlan` and `AFL_GROUNDS`.
|
|
69
|
+
- **The field sports' scores**: Australian football's `goals` and `behinds` written `10.12 (72)` and Gaelic games' `goals` and `points` written `2-14 (20)`, the total worked out; a cricket board of runs for wickets, overs and each innings (`wickets`, `overs`, `innings`, the status `innings-2`), with the sentences for each in the description.
|
|
70
|
+
- Ranges for the field sports (`in-goal`, `twenty-two`, `twenty`, `crease`, `forward-fifty`, `centre-square`, `large-rectangle`, `pitch`, `circle`, `twenty-three`, `goal-area`, with `RangeInfo.leagues` for a range that only some leagues mark), the zone sets `field-thirds` and `cricket-ground`, the frames `lacrosse`, `rugby`, `afl`, `gaelic`, `cricket`, `fieldhockey` and `handball` (the centre of the surface as the origin), landmarks, features (`FEATURES.rugby` and the others), the goal styles for lacrosse, field hockey and handball, `KYOGIJO_FIELDS_STYLE` (the colours of a handball floor and a hockey pitch), a gallery page and English and Japanese words for all of it. The other 13 surfaces' drawings are the same text as before.
|
|
71
|
+
- **Walls and quirks of a ballpark** (`walls`, `quirks`, `parkWallsIn`, `parkQuirksIn`, `Park.walls`, `Park.quirks`, [docs/ballparks.md](./docs/ballparks.md)). `walls: true` draws a band outside each stretch of a park's fence whose width and shade (four, light and dark, `KYOGIJO_WALLS_STYLE`) say how high it stands, from the height its article gives (35 parks, 24 of MLB and 11 of Japan: the Green Monster 37 feet 2 inches, the Little Green Monster, the Crawford Boxes, Oracle Park's 24 foot right field wall, the Baggie, Wrigley Field's ivy walls), for the season `year` names; `walls: { legend: true, labels: true }` adds a key and each wall's name and height, in feet or metres, in English or Japanese, and the description lists them. `quirks: true` draws Tal's Hill (2000 to 2016), the Polo Grounds' and Tiger Stadium's overhangs, Pesky's Pole, the Tiger Stadium flagpole, the Polo Grounds' bullpens, Wrigley Field's ivy and basket, the distance to the backstop (43 parks) and the sides of four parks' dugouts; `quirks: { only, labels }` chooses and names them. The element reads `walls` and `quirks`. The data is `walls`, `quirks`, `labels`, `track_ft`, `backstop_ft` and `dugouts` in `scripts/parks.data.json`, each at the revision the park already cites; the angles each stretch covers are our reading of the article's words (docs/references.md), a park whose article gives no figure keeps its drawing, and without the options every park's drawing is byte for byte what it was (a test holds the hash of 90).
|
|
72
|
+
- **More points of a fence, and a warning track.** Wrigley Field's two wells (9 points, not 5), Sportsman's Park's twelve markers (not 6) and Milwaukee County Stadium's nine (not 7) are read from their articles' text, each with its label in `Park.labels`; PNC Park's warning track is its published 18 feet and not the rule of thumb of 15. These four parks' drawings change; the other 90 do not.
|
|
73
|
+
- **Display ranges and zoom** (`range`, `RANGES`, [docs/ranges.md](./docs/ranges.md)). A drawing cropped to a named part of any of the thirteen surfaces, as sportypy's `display_range` and hockey_rink's partial rinks do, in one option: a rink's `offensive-zone`, `defensive-zone`, `neutral-zone` and `half`; a court's `half-court` and `paint`; a football field's `red-zone`, `between-the-20s`, `end-zone`, `field-of-play`, `own-half` and `opponent-half`; a pitch's `half`, `final-third`, `defensive-third`, `middle-third` and `penalty-area`; a ballpark's `infield` and `outfield`; a net sport's `half-court`; a curling sheet's `sheet`, `half` and `house` (which `sheet.show` and `sheet.end` keep saying); at the end `{ name, end }` asks for, or a box `{ x0, x1, y0, y1 }` in the drawing's frame, in `units` or in any registered frame. The view is cut with a small margin and the orientation is kept; data and heat layers are cut to the range and sized, laid out and binned against it, with the legend inside; `axes`, `landmarks` and `direction` stand against what is shown, on the apron beyond the cut; a score's panel is moved inside the range or, for one too small to hold it, becomes the strip under the drawing, and a team's name is written only where its place is shown. The description says what is shown, in English and Japanese, and the root carries `data-range`. `<kyogijo-field>` reads `range` and `range-end`. Without `range` the drawing is byte for byte what it was, and a test holds every named range of every sport, wide and tall, with data, annotations and a score.
|
|
74
|
+
- **Special games** (`host`, `placement` and `event` in the options, `@johnmorrisdotca/kyogijo/events`, [docs/special-games.md](./docs/special-games.md)). One surface set inside another, to scale: the host (a ballpark of `PARKS`, a soccer ground or pitch, a football field, or a plain deck) drawn as it is alone, and the drawing's own surface set inside it through one transform, so that its lines, its team banners, its score and its data `layers` are the inner surface's, in its own frame. `EVENTS` holds 18 games in the order they were played, each with its day, its venue, its host, where the surface stood and its sources: the NHL's Winter Classics of 2009, 2010, 2017, 2018, 2019, 2022 and 2023, the Stadium Series of 2014 at Dodger Stadium and Yankee Stadium, the Heritage Classics of 2003, 2011, 2014, 2016, 2019 and 2023, the 2011 Carrier Classic on USS Carl Vinson, and MLB's London Series of 2019 and 2023 with their published fences. Where a source gives the rink's place (Wrigley Field 2009, Fenway Park 2023) it is used and cited; where none does the place is a convention (`midfield`, `infield`, `diamond`, `deck`, worked out by `conventionPlacement`) and each game says so. `eventOptions(id)` draws a game, `eventFit(id)` says whether its surface lies inside the host or how much of it lies beyond, and a drawing of a game says so in its description, in English and Japanese. A drawing with no host is the same string as before.
|
|
75
|
+
- **Renderers** ([docs/renderers.md](./docs/renderers.md)). The drawing as plain data and on other targets, from the code that writes the SVG, with no second drawing and no dependency added: `sceneOf` (`@johnmorrisdotca/kyogijo/scene`) lists every shape in paint order with its colours worked out for light or dark, its matrix, clips, gradients and patterns, and `sceneToSvg` writes it as an SVG that needs no stylesheet; `drawToCanvas(ctx, drawing, { width, theme })` (`/canvas`) paints it on a browser's, an `OffscreenCanvas`'s or a Node canvas's context with the context typed by what is called; `appendSurface(selection, drawing, x, y)` and `surfaceDomain` (`/d3`) put it in a d3 selection by the caller's linear scales; `surfaceMark` and `surfaceScales` (`/plot`) make an Observable Plot mark and its scales; `sceneToGeoJSON(drawing, { frame })` (`/geojson`) writes each shape as an RFC 7946 feature in feet or a provider's frame; `toPNG(drawing, { width })` (`/png`) draws a PNG in Node through the optional peer `@resvg/resvg-js`, loaded when called, with an error that says what to install. The SVG tree gives every drawing back byte for byte (`parseSvg`, `writeSvg`), the style was compared with Chromium's `getComputedStyle` and the canvas with the browser's own drawing of the SVG (`e2e/renderers.demo.mjs`), and the sizes of the code are held to budgets.
|
|
76
|
+
- **Tennis, volleyball, badminton, pickleball and table tennis** (`sport: "tennis"`, `"volleyball"`, `"badminton"`, `"pickleball"`, `"tabletennis"`, [docs/courts.md](./docs/courts.md)). Each court to scale from its own rulebook, every figure cited in docs/sources.md: the ITF's Rules of Tennis (2026; the court, the service lines 21 feet from the net, the centre mark, the net posts 3 feet outside the doubles court, the singles sticks on request), the FIVB's Official Volleyball Rules and Official Beach Volleyball Rules (2025-2028; the centre line, the attack line 3 m from its axis, the front zones, the antennae, the free zone, the attack line's extension and the posts 1 m out for the FIVB's competitions; beach volleyball is `league: "fivb-beach"`), the BWF's Laws of Badminton (as amended 26 April 2025, with Diagram A), USA Pickleball's rulebook (2026; the non-volley zones and centerlines) and the ITTF's Laws of Table Tennis (the 2026 statutes; the table and the net). They lie wide; `orientation: "portrait"` lays them tall. `net.look` picks a named look (tennis `hard-blue`, `hard-green`, `clay`, `grass`; volleyball `wood`, `blue`, `sand`; badminton, pickleball and table tennis their own), `net.free` the free zone (`official`, `least`, `none`) and `net.sticks` the tennis singles sticks.
|
|
77
|
+
- **A score for the net sports**: each team's `sets` (tennis: its games; pickleball and table tennis: each game's points), `tiebreaks` and `points` in tennis, `serving`; a board of sets and games over the net and a badge with the server's ball; the statuses `set-3`, `game-2`, `tiebreak`, `match-tiebreak`, `retired` and `walkover`; and the server, each set and the game in the description. The board's heads follow each rulebook's word: sets for tennis and volleyball, games for badminton, pickleball and table tennis.
|
|
78
|
+
- The leagues `itf`, `fivb`, `fivb-beach`, `bwf`, `usap` and `ittf`, the sources for each, the frames `tennis`, `volleyball`, `badminton`, `pickleball` and `tabletennis` (the centre of the net as the origin), the zone set `net-court` (the front court and the back court on each side of the net), `TENNIS`, `VOLLEYBALL`, `BEACH_VOLLEYBALL`, `BADMINTON`, `PICKLEBALL` and `TABLE_TENNIS` in `/geometry`, `netOf` in `/leagues`, English and Japanese words for all of it, and a gallery page.
|
|
79
|
+
- **Styling** ([docs/theming.md](./docs/theming.md)). `look` (the root says `data-palette`, as `data-look` is a net court's) paints a whole drawing in one of seven named palettes (`grass`, `night`, `chalkboard`, `blueprint`, `print`, `broadcast`, `high-contrast`, in `LOOKS`), light and dark, for every sport, as custom properties at no weight; a test holds every painted line of every look, mode and sport to 3:1 against what it is painted on, and the words to 4.5:1 against the apron. `featureColors` colours a part by name (`FEATURES[sport]` lists them: 12 for football, 17 for the rink, 18 for the court, 13 for the ballpark, 14 for the pitch, 15 for the sheet, 8 for each net sport). `lineWidth` (a scale or an absolute width), `lineDash` and `lineOpacity` for the painted lines. `goals` now styles a hockey net, a basketball basket and a football field's posts as it did a soccer goal, and `goalMarkup` takes a function of your own that draws the goals. `stripePattern` mows football fields and ballparks (and adds `circles` for every grass surface, and `rings` and `fan` for a ballpark). Nothing changes in a drawing that uses none of them: a snapshot of 122 drawings proves it. Ideas from sportypy (colours by named feature), ggsoccer (line widths, types and alpha, goal styles and a goal function) and mplsoccer (stripes), credited in docs/references.md; no code is used.
|
|
80
|
+
- **Annotations** ([docs/annotations.md](./docs/annotations.md)). `direction` draws an arrow for the end each team attacks (by the sport's rule for the period, with `changedAfter` for a case no rule settles); `axes` draws ticks and numbers along the edges, in the drawing's own numbers or in any registered frame of the sport; `landmarks` names the parts of every surface, in English and Japanese, with a leader to each. They follow a surface turned a quarter with every word upright, make the margin as wide as they need, and are said in the description. A test holds the arrows, the words and the anchors, for every surface wide and tall and with either end attacked, and the soccer penalty arc outside its box in every provider's numbers. The `look`, `line-width`, `line-dash`, `line-opacity` and `landmarks` attributes of `<kyogijo-field>`.
|
|
81
|
+
- **Curling** (`sport: "curling"`, [docs/curling.md](./docs/curling.md)). A sheet to scale from R1 of World Curling's Rules of Curling (1 September 2026) and Rule 3 of Curling Canada's Rules of Curling for General Play (2022 to 2026): a house at each end, the tee, back, hog and centre lines, the hacks and, in World Curling's, the hack and courtesy lines; tall by default, with the far house at the top. `league` is `wcf` (the default, in metres) or `curling-canada` (feet); `sheet` sets the length and the width within the rules' range, the colours of the rings, the ice's pebble, the shaded free guard zone and a part of the sheet (`half`, `house`).
|
|
82
|
+
- **A curling score**: each team's `ends` and `hammer`, a board on the ice (the ends down a tall sheet, across a wide one) and a badge with the hammer, the statuses `end-6` and `extra-end`, and the ends and the hammer in the description.
|
|
83
|
+
- **`curlingStones` and `curlingScore`** (`@johnmorrisdotca/kyogijo/charts`): the stones of an end on the house, judged by the rules (out of play, in the house, counting, the shot rock, a blank end), with the zone set `curling-house`, the frame `curling` (feet from the button) and the stone's size (`STONE_DIAMETER`, from 36 inches round).
|
|
84
|
+
- The league `curling-canada`, the sources `wcf-rules` and `curling-canada-rules`, English and Japanese words for all of it, and a gallery page.
|
|
85
|
+
- **Team shape** ([docs/team-shape.md](./docs/team-shape.md)). Seven new kinds of data layer for team analysis, each drawn on any surface in its feet or a provider's frame, cut to the surface's outline, in the layer colours of the page (light and dark), with a title, a description, a tooltip for each mark and, with `layerTable(layers, { surface })`, a table of its numbers: `network` (a pass network: a node for each player at the average place of the passes he made and received, sized by touches, a link for each pair sized and shaded by passes, `minPasses`, `directed`, labels), `formation` (a labelled mark for each position of a named formation, with a lineup's numbers and names on them), `voronoi` (space control: each player's cell in his team's colour, each team's share of the surface counted on a grid kept to the surface), `delaunay` (the triangulation of each team's players or of all), `hull` (the convex hull of each team, with its area), `flow` (the mean direction of the movements that start in each cell of a grid, as arrows of the mean length or of one length shaded by steadiness) and `sonar` (direction roses of counts or mean lengths, for all, each player, each cell of a grid or each zone of a zone set). `passNetwork(passes, options)` in the charts entry makes the network with a key, totals and two tables. `FORMATIONS` holds 21 formations in the frames of their sports (soccer 4-4-2, 4-3-3, 4-2-3-1, 4-1-4-1, 3-5-2, 3-4-3, 5-3-2, 5-4-1, 4-3-2-1 and the diamond; hockey five on five and a 1-3-1 power play; basketball five out, four out and one in, and 1-4 high; football's I formation, shotgun, 4-3 and 3-4; baseball's standard defence and an infield shift), with the names of the positions in English and Japanese (conventional: the Laws of the Game name only the goalkeeper) and `los`, `attacking`, `names` and `labels` options; a formation of your own is plain data. The geometry is written for this package with no dependency and exported from the layers entry: `convexHull` (monotone chain), `delaunay` (Bowyer and Watson with ghost triangles for the hull) and `voronoiCells`, held by tests on random points, lattices, points on one circle, collinear, repeated, one, two and no points, and points of huge, tiny and far-off scale. Budgets held by tests: a Voronoi diagram of 22 players under 12 kB, a pass network of 600 passes under 16 kB in under 100 ms, a triangulation of 1,000 points in under 600 ms, a flow field of 5,000 movements under 20 kB in under 150 ms. Ideas from mplsoccer (MIT), credited in docs/references.md; no code of it is used. The gallery has an entry for each, the comparison table a row for them, and docs/sources.md says what its formations rest on.
|
|
86
|
+
- **Replay** (`@johnmorrisdotca/kyogijo/replay`, [docs/replay.md](./docs/replay.md)). Tracking data played on any surface: a timeline of frames (`{ t, objects: [{ id, team, x, y, label?, number? }] }`, in any registered frame) and events at times (pass, shot, goal, whistle). Pure functions: `interpolate` (straight, or a Catmull-Rom curve through the frames with `smooth`), `trails`, `possession` (when the data says), `activeEvents` and `drawFrame(options, timeline, t)`, a deterministic SVG string built on the data layers (the home team as circles, the away team as squares, shirt numbers, the ball with its trail, passes and shots as arrows, a goal as a star), with a description that does not change with the time. `createReplay` is the clock as a state machine with no page in it (play, pause, seek, step, speed 0.25 to 4, loop, the events that went by). `mountKyogijo(...).replay(timeline)` and `<kyogijo-field>.timeline` play it with controls under the drawing (play and pause, step back and on, speed, loop, a position slider and the time), the keyboard (space, the arrow keys, shift and the arrows, Home and End), and only the marks that move moved on `requestAnimationFrame`, never the surface. `prefers-reduced-motion` is followed: nothing plays by itself and play steps instead; a hidden page pauses; a live region says each goal, shot, pass and whistle as it passes; every control is named in English and Japanese. `update()` keeps the replay. A score that changes through `update()` now swells and settles once (a fade only, with reduced motion). The demo has a Replay section with a made-up, seeded play on the rink and on the pitch, the gallery has a frame of each, and 22 players and a ball for 60 seconds at 25 frames a second are held to a time and size budget.
|
|
87
|
+
- **A docs site** at `/docs/` of the demo site, made by `pnpm site` from `docs/*.md`: 31 pages in groups, a search box over every title and heading, the pages before and after, a copy button on every block of code, light and dark, phone width, and the contents in Japanese. The README keeps the pitch, the first minute, one example per area and the family block, and is about 37,000 characters instead of 64,000; its reference sections moved to [docs/](./docs/README.md) (getting started, surfaces, score and layout, soccer, ballparks, units, coordinate frames, accessibility, limits, entry points, architecture).
|
|
88
|
+
- **A gallery** in the docs site: every surface, league variant, season, park and ground sample, layer kind, heat layer and chart, each drawn by the build from the code shown beside it, with a copy button. A test runs every snippet.
|
|
89
|
+
- **How it compares** ([docs/compare.md](./docs/compare.md)): a table against sportypy, sportyR, `@sportsdataverse/sporty`, hockey_rink, mplsoccer, ggsoccer, GeomMLBStadiums, gavinr's spring-training parks and thestadi.com, from each README.
|
|
90
|
+
- **Coordinate frames and surface units as tables made from the code** (`pnpm docs:make`), with the same spot drawn in each of the 16 frames side by side.
|
|
91
|
+
- Every `ts` example of the README and of every docs page is run, and what it prints is held to its comment lines.
|
|
92
|
+
- **Ready-made charts** (`@johnmorrisdotca/kyogijo/charts`, [docs/charts.md](./docs/charts.md)). One call each makes the layers and the drawing options for a chart, so a good chart takes one line and every layer can still be changed: `nbaShotChart` (made and missed shots and the six shot zones coloured by field-goal percentage, diverging from the league's), `nhlShotMap` (goals and shots sized by expected goals, `fold` to put both ends on one, slot zones or hexagons), `mlbSprayChart` (balls in play on the park of their season, past parks included, a mark for each hit type, balls beyond the fence drawn beyond it, spray zones by the side the batter bats from, Retrosheet codes as well as Statcast's `hc_x` and `hc_y`), `nflPassChart` (destinations by outcome and air yards, the line of scrimmage, the pass grid's completion percentages) and `soccerShotMap` with `goalMouth()` / `soccerGoalMouth` (shots sized by expected goals on the pitch or its half, a view of the goal frame with where each shot crossed the goal line, xG totals). Each chart has a key, a legend, a title and description for every layer and a table; the drawings are deterministic, held by fingerprints and size budgets; its words are in English and Japanese; every example on the page is run by a test. The tables of layers and heat layers now name the unit of a frame's own numbers (tenths of a foot for the NBA's) and not the drawing's. The demo has a Charts section.
|
|
93
|
+
- **Heat layers.** Five new kinds of data layer: `heatmap` (a binned statistic on a grid over the surface), `hexbin`, `zones` (named zones with aggregated values and labels), `contour` (a Gaussian kernel density, Scott's rule by default, drawn as filled bands or lines) and `legend`. Statistics are `count`, `sum`, `mean`, `median`, `max`, `min`, `percent`, `rate` (a field-goal percentage from made and missed) or a function, with `normalize`, `minCount`, a `domain`, a diverging `center` and cell or zone labels. Cells, hexagons and bands are cut to the surface's outline. Ten zone sets, each cited in docs/sources.md: soccer positional zones (juego de posición), thirds, channels and the 18 zones; the NBA's shot zones; the NHL's slot and home plate; baseball's spray zones and Retrosheet's sectors; football's pass grid. Five built-in colour ramps (`ember`, `ocean`, `mono`, `balance`, `tide`) with a light and a dark set, checked against every surface's colour; custom stops. Each layer has a title, a description that names its hottest cells or zones and, with `layerTable(layers, { surface })`, a table of its numbers. A 50 by 30 grid is held under 30 kB on every sport and 10,000 marks make a density in under 500 ms. The `/layers` entry exports the numbers (`binGrid`, `hexBins`, `densityGrid`, `contourRings` and more), `ZONE_SETS` and `buildZoneSet`. The demo's Data section shows a rink heat map, an NBA shot-zone chart with field-goal percentages, a soccer positional heat map and a density contour.
|
|
94
|
+
- **Past ballparks.** `PARKS` grows by 44 past parks, and every park carries its Wikidata item (`wikidata`, `parkByWikidata`). A past park has the seasons it was used (`from`, `to`) and, where an article dates earlier fences, `periods`, chosen by the new `year` option (`parkPointsIn`).
|
|
95
|
+
- **Units.** `SURFACE_UNITS` names the unit each rulebook states its figures in; `convertLength`, `lengthsIn`, `dimensionsOf`, `surfaceSize` and `fenceIn` give every dimension in feet, inches, yards, metres, centimetres or millimetres; the `units` option says what the lengths of a drawing's options (`margin`, `fence`) are in.
|
|
96
|
+
- **Coordinate frames** (`@johnmorrisdotca/kyogijo/frames`). `toSurface`, `fromSurface` and `convert` put a provider's points on a surface and move them between providers, with `units`, `anchors`, `limits` and `attacking`; the frames of the NHL API, HockeyTech, NBA stats, NFL tracking data, MLBAM and Retrosheet's hit locations; `registerFrame` and `piecewise` for the frames of other sports.
|
|
97
|
+
- **Soccer.** `sport: "soccer"` draws a pitch from Law 1 of the IFAB Laws of the Game at any size (`pitch`), with presets (international, UEFA, MLS, NCAA, the Laws' least and most, the FA's 9-, 7- and 5-a-side, FIFA's futsal), half pitches, six mowing patterns, four goal styles, corner flags, teams in their penalty areas and a score with extra time and penalties (`Team.penalties`, `final-aet`, `final-pens`). Ten data providers (`SOCCER_PROVIDERS`) as frames, a pitch drawn in a provider's own coordinates (`pitchType`) with an empty `ky-data` group for raw data, and `rescale` between any two, landmark to landmark.
|
|
98
|
+
- **Data layers** (`layers` in the options; `drawLayers`, `layerTable` and the `@johnmorrisdotca/kyogijo/layers` entry). Points (seven shapes and team logos), lines, arrows (curved, wavy, open or filled heads, comet lines that fade along their length) and text over any surface, in the surface's feet, any unit or a provider's frame, cut to the boards, the fence or the court's lines with a clip path for each drawing, upright when the surface lies tall. Size by value, colour by value, team or outcome, filled and hollow outcomes (`OUTCOMES`), new colour properties (`--ky-layer`, `--ky-layer-home`, `--ky-layer-away`, `--ky-layer-edge`, `--ky-layer-hollow`, `--ky-layer-ink`, `--ky-layer-halo`) that follow a score drawing's teams. A title and a description for each layer, a tooltip for each mark and an HTML table of the data. 1,000 points add about 60 kB; 10,000 are drawn in about 20 ms. The demo has a Data section with a shot map, a pass map and a spray chart made from seeded, made-up data.
|
|
99
|
+
- **Surfaces through the years** (`@johnmorrisdotca/kyogijo/eras`). `year` draws a surface as its league's rules marked it in a season, for the NHL, the NBA, the NFL, the CFL and baseball: the NHL's centre red line, goal lines, blue lines and trapezoid, the NBA's lane, three-point line and restricted area, the NFL's hash marks and goal posts, the CFL's end zones, hash marks and goal posts (and the field planned for 2027), the baseball pitcher's box and plate, batter's boxes and home plate. `rulesFor`, `eraChanges`, `eraStates`, `eraRange`, `seasonLabel` and `footballIn`; each change has the season it began in, a sentence in English and Japanese and its sources, and a marking no source covers is listed in `gaps` rather than guessed. The demo has a season slider.
|
|
100
|
+
- **Famous soccer grounds.** `GROUNDS` (`@johnmorrisdotca/kyogijo/grounds`) has 64 grounds: the venue of every men's World Cup final from 1930 to 2022 and the 2026 final, all 16 venues of 2026, the venue of every Women's World Cup final, and well-known club grounds (both Wembleys, the Maracanã, Camp Nou, the Bernabéu, San Siro, Old Trafford, Anfield, Signal Iduna Park, the Allianz Arena, La Bombonera, Hampden Park, Celtic Park, the Estádio da Luz, the Parc des Princes, Saitama Stadium 2002, Nissan Stadium, the Seoul World Cup Stadium and more). Each has its city, country, Wikidata item and coordinates, the names it had with their years, its name in the place's language and in Japanese, its opening and closing years, capacity, the World Cups it staged, the pitch's length and width where its English Wikipedia article publishes them (42 of 64; the others are drawn at 105 by 68 m and marked `pitchSize: "default"`), and the article and revision each was read from. `drawKyogijo({ sport: "soccer", ground: "maracana", year })` draws the pitch at the ground's size under its name for the year; `groundById`, `groundByWikidata`, `groundNameIn`, `groundsHosting`, `groundSourceUrl`. `pnpm grounds` builds the data and docs/grounds.md; `pnpm grounds:check` asks Wikidata again. The demo has a ground picker.
|
|
101
|
+
- **A stadium atlas** (`@johnmorrisdotca/kyogijo/atlas`). `PLACES` joins the 94 ballparks and 64 soccer grounds into one list with where each stands (`lat`, `lon`, Wikidata's P625), its country and city, its sport, leagues, whether it is in use today or of the past, and the years it was in use; `placesBy({ sport, kind, league, country, status, year, text })`, `placeById`, `atlasFacets` and `surfaceOf`. Every park now has its coordinates and the years it opened and closed (`pnpm parks:coordinates` fetches them, `pnpm parks:check` compares them with Wikidata). The demo has an Atlas: a chizu world map with a marker on every place (a circle for today, a diamond for the past), filters, a year slider, a list and the chosen place's surface beside the map; docs/atlas.md has a picture of the map, made by `pnpm site`.
|
|
102
|
+
- **League variants** (`@johnmorrisdotca/kyogijo/leagues`). `league` draws a surface as one league's rulebook marks it, with `sport` naming the family: basketball (the WNBA, FIBA, NCAA men and women, NFHS, the G League), hockey (the IIHF, NCAA men and women, AHL, ECHL, OHL, WHL, QMJHL, USHL, PWHL), football (the NCAA, NFHS 11, 9, 8 and 6 players, Texas six-man, the Indoor Football League) and baseball and softball (MiLB, NCAA, NFHS, Little League and its Intermediate division, three PONY divisions, NCAA and NFHS softball, USA Softball fast and slow pitch, WBSC slow pitch). Each league has its figures in its own unit, its name in English and Japanese, its sources with edition and address (`LEAGUES`, `VARIANTS`, `LEAGUE_SOURCES`, `leagueFigures`), and the changes a source dates (`leagueChanges`, `leagueAt`): the WNBA lane (2004), the NCAA restricted-area arc, the IIHF blue line and goalkeepers' trapezoid, the AHL blue lines (2005-06) and the NCAA men's trapezoid (2026-27). Score mode, themes, orientation, badges, `year` and data layers work on every league. The demo has a league picker; docs/variants.md lists every figure and docs/references.md what could not be cited.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
|
|
106
|
+
- **Breaking: the park status `"historic"` is now `"past"`.** `Park["status"]` is `"current" | "secondary" | "past"`, as for the grounds and the atlas; the six NPB parks that read `"historic"` read `"past"` (the type and the value in `PARKS`). Code that compares `park.status === "historic"` must compare with `"past"`.
|
|
107
|
+
- **Breaking: `Sport` and `SPORTS` grow from 6 to 20 sports.** The type was `"nfl" | "cfl" | "ifaf" | "nhl" | "nba" | "mlb"`; it now also has `"soccer"`, `"curling"`, the net sports (`"tennis"`, `"volleyball"`, `"badminton"`, `"pickleball"`, `"tabletennis"`) and the field sports (`"lacrosse"`, `"rugby"`, `"afl"`, `"gaelic"`, `"cricket"`, `"fieldhockey"`, `"handball"`). A TypeScript `switch` over `Sport` that is checked to be exhaustive must add a case for each, and code that loops over `SPORTS` now meets all twenty.
|
|
108
|
+
- **Breaking: the NHL trapezoid is 22 feet wide at the goal line, not 18.** `NHL.trapezoid.atGoalLine` was 18 feet; Rule 1.8 has 22 feet, the figure since 2014-15, when the trapezoid was widened by 2 feet each side (18 feet from 2005-06 to 2013-14, which `rulesFor("nhl", year)` and a drawing with `year` still give). The rink is drawn with the wider trapezoid by default.
|
|
109
|
+
- **Breaking: the NHL's hash marks are 5 feet 7 inches apart, not 5 feet 11 inches.** The marks beside an end-zone circle were drawn 5 feet 11 inches apart, which added the lines' width to a gap it does not enter; Rule 1.9 says 5 feet 7 inches (`NHL.hashApart`). The AHL, ECHL, OHL, WHL and PWHL, which share the NHL's Rule 1, change with it. docs/sources.md also records where the NHL's Rule 1.8 (a 22-foot trapezoid at the goal line, drawn) and Rule 27.8 (18 feet) disagree.
|
|
110
|
+
- **Breaking: MLB bases are 18 inches square, not 15.** `MLB.baseSize` was 15 inches; Rule 2.03 of the Official Baseball Rules has 18 inches from the 2023 season. The size is now a marking in `rulesFor("mlb", year)` (`baseSize`, 15 inches before 2023, 18 from 2023, with `eraChanges("mlb")` listing it), so the field is drawn with 18-inch bases by default and 15-inch ones for a season before 2023.
|
|
111
|
+
- **Breaking: the SVG written by `drawKyogijo` changes.** Every NHL drawing (the trapezoid and the hash marks) and every MLB drawing (the bases) differs from 0.1.0's, so a stored copy of an old drawing, or a snapshot test of one, needs to be made again. Every drawing's stylesheet is also about 2 kB larger.
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
|
|
115
|
+
- **NHL hash marks were 3 feet apart before 2014-15.** The rulebook of 2012-13 (Rule 1.9) says "three feet (3') apart", and the NHL and NHLPA release of 6 October 2014 moves them to 5 feet 7 inches for 2014-15. `rulesFor("nhl", year).rules.hashApart` is 3 feet through 2013-14 and 5 feet 7 inches after, `eraChanges("nhl")` lists both (`nhl.hashApart.2012`, `nhl.hashApart.2014`) and a rink drawn for an earlier season has the marks 3 feet apart. Seasons before 2012-13 are cited by no rulebook read, so they keep 3 feet and `gaps` names `hashApart`. The AHL, ECHL, OHL, WHL and PWHL are unchanged: no page read dates a change of their marks.
|
|
116
|
+
- **docs/sources.md cited the wrong baseball rule for home plate.** Home plate is Official Baseball Rules 2.02 (Home Base) in the 2024 edition; 2.03 is The Bases. The 90-foot square is 2.01, not 2.01 and 2.02.
|
|
117
|
+
|
|
118
|
+
## [0.1.0] - 2026-10-13
|
|
119
|
+
|
|
120
|
+
### Added
|
|
121
|
+
|
|
122
|
+
- **Six surfaces drawn to scale as SVG**: the NFL, CFL and IFAF football fields, the NHL rink, the NBA court and the baseball field, each from its rulebook or federation diagram, with every figure cited in docs/sources.md.
|
|
123
|
+
- **Score mode.** `drawKyogijo`, `drawScore` and `drawBadge` put 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 in the middle, with the competition, the status, the date and an emphasis on the winner. Sizes `full`, `compact` and `badge`.
|
|
124
|
+
- **Wide, tall or fit the box.** `orientation: "landscape" | "portrait" | "auto"`: portrait turns the surface a quarter with every word upright and the teams top and bottom; `auto` follows `aspect`, and `mountKyogijo` watches the container and draws again when its shape changes.
|
|
125
|
+
- **Every ballpark.** `PARKS` has the 30 MLB parks, the 12 NPB home parks and eight other NPB grounds, each fence drawn from the distances published for it, with the article and revision each was read from. `park` and `fence` options; names in English and Japanese.
|
|
126
|
+
- **Theming.** Every colour is a custom property in a light and a dark set, `colors` sets them from code, and a court has its own look (`court`) with five to start from in `COURT_THEMES`.
|
|
127
|
+
- **Four ways in.** The function, `mountKyogijo` for a container, the `<kyogijo-field>` custom element with parts, and a frame (`embed.html`) for a page that runs no script; `@johnmorrisdotca/kyogijo/react` for React, which does not import it.
|
|
128
|
+
- **Accessible.** Each drawing is an `img` with a title and a description in English or Japanese.
|
|
129
|
+
- **The demo** with every sport and every park, wide and tall, light and dark, badges, compact cards, court looks, a live score, snippets for the four ways in, and the API reference.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 John Morris
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Notice: the data's sources
|
|
2
|
+
|
|
3
|
+
The code of this package is under the MIT licence (see [LICENSE](LICENSE)). The package also carries numbers that
|
|
4
|
+
come from other people's published facts. A dimension or a distance is a fact, not a work, and no text, table,
|
|
5
|
+
picture or code of the sources is copied; each source is named here so that the facts can be checked.
|
|
6
|
+
|
|
7
|
+
| Entry point | Made from | Terms |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| `geometry`: the football fields | The NFL rulebook (Rule 1, The Field), the CFL rulebook ("The Field"), and Appendix D, "Field Diagrams", of the IFAF 2021 rules (http://www.myiafoa.org/rules/ifaf2021/FieldDiagrams.pdf) | Facts; no text or drawing copied |
|
|
10
|
+
| `geometry`: the NHL rink | The NHL rulebook (Rule 1, The Rink), and Wikipedia's article "Ice hockey rink" for the dimensions of the creases, spots and trapezoid | Facts |
|
|
11
|
+
| `geometry`: the NBA court | The NBA rulebook (Rule 1, Court Dimensions and Equipment, official.nba.com), and Wikipedia's "Basketball court" and "Key (basketball)" | Facts |
|
|
12
|
+
| `geometry`: the baseball field | The Official Baseball Rules, rules 2.01 to 2.05 | Facts |
|
|
13
|
+
| `geometry`: the soccer pitch | The IFAB Laws of the Game 2025/26 (Law 1), the FIFA Futsal Laws of the Game 2025/26 (Law 1), the UEFA Stadium Infrastructure Regulations (Article 5), the Premier League Handbook (rule K.18), the MLS Competition Guidelines, the NCAA Men's and Women's Soccer Rules (Rule 1) and The FA Handbook (Section 38) with its Small Sided Football Laws | Facts |
|
|
14
|
+
| `leagues`: the curling sheet | World Curling, The Rules of Curling and Rules of Competition (1 September 2026, R1), and Curling Canada, Rules of Curling for General Play (September 2022 to August 2026, Rule 3) | Facts; no text or drawing copied |
|
|
15
|
+
| `leagues`: the tennis court | Rules of Tennis, International Tennis Federation (ITF), 2026, Rule 1 and Appendix X, read in Tennis Canada's Rules of the Court 2026, which prints the ITF's text | Facts |
|
|
16
|
+
| `leagues`: the volleyball and beach volleyball courts | Official Volleyball Rules 2025-2028 and Official Beach Volleyball Rules 2025-2028, FIVB, in force from 1 January 2025 | Facts |
|
|
17
|
+
| `leagues`: the badminton court | Laws of Badminton, Badminton World Federation (BWF), as amended and adopted on 26 April 2025 (Law 1 and Diagram A) | Facts |
|
|
18
|
+
| `leagues`: the pickleball court | USA Pickleball Official Rulebook, 2026, Section 3 (Court and Equipment) | Facts |
|
|
19
|
+
| `leagues`: the table tennis table | Laws of Table Tennis, International Table Tennis Federation (ITTF), 2026 statutes, as reproduced by Table Tennis England (issue 1, July 2026) | Facts |
|
|
20
|
+
| `leagues`: the basketball variants | WNBA Official Rules 2026 (Rule 1), FIBA Official Basketball Rules 2026 (Rule Two and the Equipment rules), NCAA Men's Basketball Rules 2026-27 (Rules 1-2 to 1-13) and NCAA Women's Basketball Rules (1-8-1), NFHS Basketball Rules (2017-18 text, Rules 1-1 to 1-7), and the NBA G League playing rules | Facts |
|
|
21
|
+
| `leagues`: the hockey variants | IIHF Official Rule Book 2025/26 (Rules 1.2 to 1.9 and Appendix VI), NCAA Men's and Women's Ice Hockey Rules 2026-27 (Rule 1), the 2025-26 rules of the AHL, ECHL, OHL, WHL, QMJHL and PWHL (Rule 1), and USA Hockey Junior Rules 2025-29 (101 to 105) for the USHL | Facts |
|
|
22
|
+
| `leagues`: the football variants | NCAA Football Rules 2026 (Rules 1-2 and 2-12, Appendix D), NFHS Football Rules (2021 text, Rules 1-1 and 1-2) and the NFHS eight-, nine- and six-player diagrams, the UIL exceptions to the NCAA rules 2026 (Texas six-man), and the 2024 IFL Rule Book (Rule 1) | Facts |
|
|
23
|
+
| `leagues`: the baseball and softball variants | NCAA Baseball Rules 2027-28 (Rules 1-2 to 1-5) and NCAA Softball Rules 2026-27 (Rule 2), NFHS Baseball Rules 2026 and the NFHS softball field diagram 2025, Little League Field Specifications (2026), PONY Baseball Rule Book 2026 (Rule 7), USA Softball Official Rules 2026 (Rule 2 and the Official Distance Table), and WBSC Slow Pitch rules 2026-29 (Appendix 1 F) | Facts |
|
|
24
|
+
| `leagues`: the lacrosse fields | World Lacrosse's Men's Field Lacrosse Official Playing Rules 2025-2027 (v1.1), Women's Field Lacrosse Official Playing Rules 2025-2026 (v1.1) and Box Lacrosse Official Playing Rules 2026-2028 (v2.0); NCAA Men's Lacrosse Rules and Interpretations 2027 and 2028 and NCAA Women's Lacrosse Rules 2026 and 2027; the National Lacrosse League's NLL Official Rules 2025-26; the Premier Lacrosse League's 2024 PLL Rulebook | Facts |
|
|
25
|
+
| `leagues`: the rugby fields | World Rugby, Laws of the Game, Rugby Union (2026, Law 1); the NRL's Rugby League Laws of the Game, International Level (2023 edition, Sections 1 and 18); the International Rugby League's International Laws of the Game and Notes on the Laws (2024, Section 1) | Facts |
|
|
26
|
+
| `leagues`: the Australian football ground | Laws of Australian Football, AFL, 2026 (Law 3 and Diagram 1) | Facts |
|
|
27
|
+
| `leagues`: the Gaelic football and hurling fields | Official Guide Part 2, Rules of Specification (Rule 1, The Field of Play), Gaelic Athletic Association (GAA), effective from 27 March 2026 | Facts |
|
|
28
|
+
| `leagues`: the cricket ground | The Laws of Cricket (2017 Code), 4th Edition 2026, MCC (Laws 6 to 8), and the ICC Men's and Women's One-Day International Playing Conditions, effective from October 2026 | Facts |
|
|
29
|
+
| `leagues`: the field hockey pitch | Rules of Hockey including explanations, International Hockey Federation (FIH), effective from 1 March 2026 (Rule 1 and the Field and Equipment Specifications) | Facts |
|
|
30
|
+
| `leagues`: the handball court | IX. Rules of the Game for Indoor Handball, International Handball Federation (IHF), edition of 1 July 2025 (Rule 1, Playing Court) | Facts |
|
|
31
|
+
| `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 |
|
|
32
|
+
| `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 |
|
|
33
|
+
| `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/) |
|
|
34
|
+
| `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") |
|
|
35
|
+
| `grounds`: each soccer ground's pitch, names, years, city and capacity | The infobox and the opening text of the English Wikipedia article of each ground, at the revision cited below (the pitch's length and width where the infobox gives them for football, the names with the years the article dates them, the year it opened and closed, the first capacity); the ground's name in Japanese from its Japanese article | 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 |
|
|
36
|
+
| `grounds`: the World Cups each ground staged matches of, and where each final was played | The venue section of the English Wikipedia article of each men's and Women's World Cup, at the revision cited below; FIFA's own pages are not used | Facts, CC BY-SA 4.0 articles as above |
|
|
37
|
+
| `grounds`: the Wikidata item and the coordinates of each ground (`wikidata`, `lat`, `lon`) | The item that each cited article is linked to, its coordinates (P625) and its country (P17), read with the Wikidata API and checked against the item's labels by `scripts/check-grounds.mjs` | Wikidata's data is CC0 (https://creativecommons.org/publicdomain/zero/1.0/) |
|
|
38
|
+
| `parks`: the walls, quirks, backstop, warning track, dugouts and extra points of a ballpark (`walls`, `quirks`, `backstop_ft`, `track_ft`, `dugouts`, `labels`) | The infobox and the text of the same English article of each park, at the same revision as its fence (the Japanese article for the heights of the walls of the parks of Japan): the height of the wall along a stretch of the fence and the seasons it stood, the hill, overhang, poles, bullpens, ivy and basket the text describes with figures, the infobox's backstop distance, the warning track's width, the sides of the dugouts, and the further distances the text gives (Wrigley Field's wells, Sportsman's Park's and Milwaukee County Stadium's markers). The stretch each figure covers and the angle of each extra point are our reading of the article's words | 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 |
|
|
39
|
+
| `parks`: the coordinates of each ballpark (`lat`, `lon`) and the years it opened and closed (`opened`, `closed`) | The item's coordinate location (P625), its date of official opening or inception (P1619, P571) and of official closure or dissolution (P3999, P576), read with the Wikidata API by `scripts/fetch-park-coordinates.mjs` and checked by `scripts/check-parks.mjs` (ES CON Field's opening, 2023, is read from its article) | Wikidata's data is CC0 (https://creativecommons.org/publicdomain/zero/1.0/) |
|
|
40
|
+
| `events`: the special games, their days, venues, hosts and where a surface stood | The English Wikipedia articles of each game and of its venue, at the revision cited below, and three articles of the press (Sports Video Group, NHL.com, The Boston Globe), named below with their authors and dates; the size of a carrier from the Nimitz class's article | Facts, CC BY-SA 4.0 articles as above; no text copied |
|
|
41
|
+
| The atlas (`@johnmorrisdotca/kyogijo-stadiums/atlas`): the places and their map | The parks and grounds above, joined; the demo's and docs/atlas.md's map is drawn by chizu (MIT) from Natural Earth, which is in the public domain (https://www.naturalearthdata.com/about/terms-of-use/) | Facts and CC0 data; Natural Earth is public domain; chizu is a development dependency and none of it is in the package |
|
|
42
|
+
|
|
43
|
+
## The ballparks' articles
|
|
44
|
+
|
|
45
|
+
Each article was read at the revision named (94 parks: the 30 current MLB parks, 44 past ones, the 12 NPB home parks and 8 other NPB grounds), by its address `https://<en or ja>.wikipedia.org/w/index.php?title=<title>&oldid=<revision>`
|
|
46
|
+
(the function `parkSourceUrl` writes it). The authors of an article are listed in its history. The figures are in
|
|
47
|
+
`scripts/parks.data.json`, which holds each entry's articles and revisions; docs/references.md explains how they were read.
|
|
48
|
+
|
|
49
|
+
| Park | Wikidata item | English article and revision | Japanese article and revision |
|
|
50
|
+
| --- | --- | --- | --- |
|
|
51
|
+
| Oriole Park at Camden Yards | Q1141174 | Oriole Park at Camden Yards, 1377140400 | – |
|
|
52
|
+
| Fenway Park | Q49136 | Fenway Park, 1376280796 | – |
|
|
53
|
+
| Yankee Stadium | Q753529 | Yankee Stadium, 1378222004 | – |
|
|
54
|
+
| Tropicana Field | Q1810119 | Tropicana Field, 1379964475 | – |
|
|
55
|
+
| Rogers Centre | Q76318 | Rogers Centre, 1379619269 | – |
|
|
56
|
+
| Rate Field | Q633613 | Rate Field, 1379317170 | – |
|
|
57
|
+
| Progressive Field | Q1154053 | Progressive Field, 1378504146 | – |
|
|
58
|
+
| Comerica Park | Q868482 | Comerica Park, 1376178715 | – |
|
|
59
|
+
| Kauffman Stadium | Q1737017 | Kauffman Stadium, 1376240550 | – |
|
|
60
|
+
| Target Field | Q1156635 | Target Field, 1379001210 | – |
|
|
61
|
+
| Daikin Park | Q1193671 | Daikin Park, 1377935430 | – |
|
|
62
|
+
| Angel Stadium | Q531897 | Angel Stadium, 1379214381 | – |
|
|
63
|
+
| Sutter Health Park | Q3418115 | Sutter Health Park, 1379745688 | – |
|
|
64
|
+
| T-Mobile Park | Q1193117 | T-Mobile Park, 1379419810 | – |
|
|
65
|
+
| Globe Life Field | Q24284037 | Globe Life Field, 1377936073 | – |
|
|
66
|
+
| Truist Park | Q17003430 | Truist Park, 1372245868 | – |
|
|
67
|
+
| loanDepot Park | Q1368138 | LoanDepot Park, 1376431410 | – |
|
|
68
|
+
| Citi Field | Q1072882 | Citi Field, 1377977619 | – |
|
|
69
|
+
| Citizens Bank Park | Q912770 | Citizens Bank Park, 1378696704 | – |
|
|
70
|
+
| Nationals Park | Q517545 | Nationals Park, 1379437509 | – |
|
|
71
|
+
| Wrigley Field | Q1052807 | Wrigley Field, 1377918987 | – |
|
|
72
|
+
| Great American Ball Park | Q979975 | Great American Ball Park, 1378720434 | – |
|
|
73
|
+
| American Family Field | Q1339293 | American Family Field, 1379813094 | – |
|
|
74
|
+
| PNC Park | Q1151177 | PNC Park, 1379228702 | – |
|
|
75
|
+
| Busch Stadium | Q253546 | Busch Stadium, 1377977448 | – |
|
|
76
|
+
| Chase Field | Q1068011 | Chase Field, 1378357458 | – |
|
|
77
|
+
| Coors Field | Q1129916 | Coors Field, 1375299958 | – |
|
|
78
|
+
| Dodger Stadium | Q247420 | Dodger Stadium, 1375093238 | – |
|
|
79
|
+
| Petco Park | Q1194586 | Petco Park, 1377977726 | – |
|
|
80
|
+
| Oracle Park | Q298585 | Oracle Park, 1372223272 | – |
|
|
81
|
+
| Baker Bowl | Q4849117 | Baker Bowl, 1375146474 | – |
|
|
82
|
+
| Exposition Park | Q5421611 | Exposition Park (Pittsburgh), 1372151354 | – |
|
|
83
|
+
| Polo Grounds | Q1276360 | Polo Grounds, 1379229018 | – |
|
|
84
|
+
| South End Grounds | Q6646308 | South End Grounds, 1372231528 | – |
|
|
85
|
+
| Huntington Avenue Grounds | Q1056422 | Huntington Avenue Grounds, 1372204570 | – |
|
|
86
|
+
| League Park | Q870897 | League Park, 1373475496 | – |
|
|
87
|
+
| Sportsman's Park | Q7579980 | Sportsman's Park, 1372232220 | – |
|
|
88
|
+
| Hilltop Park | Q5764114 | Hilltop Park, 1372186833 | – |
|
|
89
|
+
| Forbes Field | Q1963954 | Forbes Field, 1372176812 | – |
|
|
90
|
+
| Shibe Park | Q7496044 | Shibe Park, 1376110848 | – |
|
|
91
|
+
| Comiskey Park | Q1114772 | Comiskey Park, 1379270087 | – |
|
|
92
|
+
| Griffith Stadium | Q5608924 | Griffith Stadium, 1379220233 | – |
|
|
93
|
+
| Crosley Field | Q3003747 | Crosley Field, 1372078480 | – |
|
|
94
|
+
| Tiger Stadium | Q1750255 | Tiger Stadium (Detroit), 1379484942 | – |
|
|
95
|
+
| Ebbets Field | Q1278537 | Ebbets Field, 1378347217 | – |
|
|
96
|
+
| Braves Field | Q11335096 | Braves Field, 1372863471 | – |
|
|
97
|
+
| Yankee Stadium (1923) | Q675214 | Yankee Stadium (1923), 1377411197 | – |
|
|
98
|
+
| Cleveland Stadium | Q2113078 | Cleveland Stadium, 1372955954 | – |
|
|
99
|
+
| Milwaukee County Stadium | Q3314569 | Milwaukee County Stadium, 1373618962 | – |
|
|
100
|
+
| Memorial Stadium (Baltimore) | Q2748739 | Baltimore Memorial Stadium, 1379214788 | – |
|
|
101
|
+
| Municipal Stadium | Q6936283 | Municipal Stadium (Kansas City, Missouri), 1372217632 | – |
|
|
102
|
+
| Seals Stadium | Q7440659 | Seals Stadium, 1372229078 | – |
|
|
103
|
+
| Candlestick Park | Q1033076 | Candlestick Park, 1379458213 | – |
|
|
104
|
+
| Wrigley Field (Los Angeles) | Q3297716 | Wrigley Field (Los Angeles), 1373630732 | – |
|
|
105
|
+
| Metropolitan Stadium | Q1415967 | Metropolitan Stadium, 1376371728 | – |
|
|
106
|
+
| Colt Stadium | Q5149429 | Colt Stadium, 1372077099 | – |
|
|
107
|
+
| Robert F. Kennedy Memorial Stadium | Q153312 | Robert F. Kennedy Memorial Stadium, 1372225490 | – |
|
|
108
|
+
| Shea Stadium | Q1056326 | Shea Stadium, 1372229796 | – |
|
|
109
|
+
| Astrodome | Q1025406 | Astrodome, 1379214658 | – |
|
|
110
|
+
| Atlanta–Fulton County Stadium | Q641243 | Atlanta–Fulton County Stadium, 1372064804 | – |
|
|
111
|
+
| Busch Memorial Stadium | Q1017286 | Busch Memorial Stadium, 1375705915 | – |
|
|
112
|
+
| Oakland Coliseum | Q1147732 | Oakland Coliseum, 1377933344 | – |
|
|
113
|
+
| Sick's Stadium | Q6127401 | Sick's Stadium, 1377791612 | – |
|
|
114
|
+
| Jarry Park Stadium | Q3495641 | Jarry Park Stadium, 1372207079 | – |
|
|
115
|
+
| Three Rivers Stadium | Q1189339 | Three Rivers Stadium, 1372243664 | – |
|
|
116
|
+
| Riverfront Stadium | Q153824 | Riverfront Stadium, 1380015923 | – |
|
|
117
|
+
| Veterans Stadium | Q1545870 | Veterans Stadium, 1379233321 | – |
|
|
118
|
+
| Arlington Stadium | Q2861657 | Arlington Stadium, 1372064082 | – |
|
|
119
|
+
| Exhibition Stadium | Q1383747 | Exhibition Stadium, 1373389585 | – |
|
|
120
|
+
| Olympic Stadium | Q285467 | Olympic Stadium (Montreal), 1375638350 | – |
|
|
121
|
+
| Hubert H. Humphrey Metrodome | Q1072186 | Hubert H. Humphrey Metrodome, 1378988593 | – |
|
|
122
|
+
| Mile High Stadium | Q1934586 | Mile High Stadium, 1372216043 | – |
|
|
123
|
+
| Choctaw Stadium | Q1634492 | Choctaw Stadium, 1374880883 | – |
|
|
124
|
+
| Turner Field | Q1150936 | Turner Field, 1372246325 | – |
|
|
125
|
+
| Tokyo Dome | Q733748 | Tokyo Dome, 1379232526 | 東京ドーム, 111353030 |
|
|
126
|
+
| Koshien Stadium | Q959811 | Koshien Stadium, 1374217766 | 阪神甲子園球場, 111237979 |
|
|
127
|
+
| Meiji Jingu Stadium | Q944559 | Meiji Jingu Stadium, 1372085507 | 明治神宮野球場, 111058989 |
|
|
128
|
+
| Yokohama Stadium | Q1148681 | Yokohama Stadium, 1379493268 | 横浜スタジアム, 111000229 |
|
|
129
|
+
| Vantelin Dome Nagoya | Q929524 | Vantelin Dome Nagoya, 1377205624 | ナゴヤドーム, 111136533 |
|
|
130
|
+
| Mazda Stadium | Q1038647 | Mazda Stadium, 1358258868 | MAZDA Zoom-Zoom スタジアム広島, 110177362 |
|
|
131
|
+
| ES CON Field Hokkaido | Q96395338 | Es Con Field Hokkaido, 1376475578 | エスコンフィールドHOKKAIDO, 110902270 |
|
|
132
|
+
| Rakuten Mobile Saikyo Park Miyagi | Q489699 | Rakuten Mobile Park Miyagi, 1371540312 | 楽天モバイルパーク宮城, 111313121 |
|
|
133
|
+
| Belluna Dome | Q1194822 | Belluna Dome, 1376434975 | 西武ドーム, 111316508 |
|
|
134
|
+
| ZOZO Marine Stadium | Q486192 | Zozo Marine Stadium, 1374482006 | 千葉マリンスタジアム, 111145226 |
|
|
135
|
+
| Kyocera Dome Osaka | Q128836 | Kyocera Dome Osaka, 1374181588 | 大阪ドーム, 111044952 |
|
|
136
|
+
| Mizuho PayPay Dome Fukuoka | Q1365961 | Mizuho PayPay Dome Fukuoka, 1379848632 | 福岡ドーム, 111298622 |
|
|
137
|
+
| Sapporo Dome | Q494860 | Sapporo Dome, 1374174778 | 札幌ドーム, 111367977 |
|
|
138
|
+
| Hotto Motto Field Kobe | Q849183 | Hotto Motto Field Kobe, 1373207639 | 神戸総合運動公園野球場, 111289486 |
|
|
139
|
+
| Hiroshima Municipal Stadium (original) | Q8012748 | – | 広島市民球場 (初代), 111360293 |
|
|
140
|
+
| Korakuen Stadium | Q473519 | Korakuen Stadium, 1372211321 | 後楽園球場, 111347954 |
|
|
141
|
+
| Osaka Stadium | Q861117 | Osaka Stadium, 1372223620 | 大阪スタヂアム, 111155388 |
|
|
142
|
+
| Heiwadai Stadium | Q5365631 | Heiwadai Stadium, 1372186109 | 平和台野球場, 110987269 |
|
|
143
|
+
| Kawasaki Stadium | Q6379828 | – | 川崎球場, 110987263 |
|
|
144
|
+
| Nagoya Stadium | Q5369853 | Nagoya Stadium, 1377205638 | ナゴヤ球場, 111235188 |
|
|
145
|
+
|
|
146
|
+
## The grounds' articles
|
|
147
|
+
|
|
148
|
+
Each article was read at the revision named (64 soccer grounds), by its address `https://<en or ja>.wikipedia.org/w/index.php?title=<title>&oldid=<revision>` (the function `groundSourceUrl` writes it). The authors of an article are listed in its history. The figures are in `scripts/grounds.data.json`, which holds each entry's articles and revisions; docs/references.md explains how they were read and docs/grounds.md lists every ground.
|
|
149
|
+
|
|
150
|
+
| Ground | Wikidata item | English article and revision | Japanese article and revision |
|
|
151
|
+
| --- | --- | --- | --- |
|
|
152
|
+
| Estadio Centenario | Q498245 | Estadio Centenario, 1372279993 | エスタディオ・センテナリオ, 98831471 |
|
|
153
|
+
| Stadio Nazionale PNF | Q642958 | Stadio Nazionale PNF, 1372234262 | スタディオ・ナツィオナーレPNF, 106032907 |
|
|
154
|
+
| Stade Yves-du-Manoir | Q754502 | Stade Yves-du-Manoir, 1372233519 | スタッド・デパルトモンタル・イヴ=デュ=マノワール, 107801528 |
|
|
155
|
+
| Maracanã Stadium | Q155174 | Maracanã Stadium, 1378863637 | エスタジオ・ド・マラカナン, 110510766 |
|
|
156
|
+
| Wankdorf Stadium | Q676004 | Wankdorf Stadium, 1372250401 | シュタディオン・ヴァンクドルフ (1925年), 107529969 |
|
|
157
|
+
| Råsunda Stadium | Q725623 | Råsunda Stadium, 1372227046 | ロースンダ・スタディオン, 105505519 |
|
|
158
|
+
| Julio Martínez Prádanos National Stadium | Q594994 | Julio Martínez Prádanos National Stadium, 1379138321 | エスタディオ・ナシオナル・デ・チリ, 101004691 |
|
|
159
|
+
| Wembley Stadium (1923) | Q43279 | Wembley Stadium (1923), 1374252171 | ウェンブリー・スタジアム (1923), 110336995 |
|
|
160
|
+
| Wembley Stadium | Q128468 | Wembley Stadium, 1379930582 | ウェンブリー・スタジアム, 110350755 |
|
|
161
|
+
| Estadio Azteca | Q320454 | Estadio Azteca, 1374978481 | エスタディオ・アステカ, 111238345 |
|
|
162
|
+
| Munich Olympic Stadium | Q131610 | Olympiastadion (Munich), 1375090249 | ミュンヘン・オリンピアシュタディオン, 109325015 |
|
|
163
|
+
| Estadio Monumental | Q276354 | Estadio Monumental (Buenos Aires), 1379457880 | エスタディオ・モヌメンタル・アントニオ・ベスプチオ・リベルティ, 106840308 |
|
|
164
|
+
| Santiago Bernabéu Stadium | Q164027 | Bernabéu (stadium), 1376542686 | エスタディオ・サンティアゴ・ベルナベウ, 109745684 |
|
|
165
|
+
| Stadio Olimpico | Q159884 | Stadio Olimpico, 1376210332 | スタディオ・オリンピコ・ディ・ローマ, 109745762 |
|
|
166
|
+
| Rose Bowl | Q582280 | Rose Bowl (stadium), 1379595877 | ローズボウル (競技場), 107943058 |
|
|
167
|
+
| Stade de France | Q13205 | Stade de France, 1379022826 | スタッド・ド・フランス, 109911694 |
|
|
168
|
+
| Nissan Stadium | Q116601 | Nissan Stadium (Yokohama), 1378612722 | 横浜国際総合競技場, 111289546 |
|
|
169
|
+
| Berlin Olympic Stadium | Q151374 | Olympiastadion (Berlin), 1377305597 | ベルリン・オリンピアシュタディオン, 109745416 |
|
|
170
|
+
| FNB Stadium | Q163521 | FNB Stadium, 1376285767 | FNBスタジアム, 107530782 |
|
|
171
|
+
| Luzhniki Stadium | Q202163 | Luzhniki Stadium, 1372284143 | ルジニキ・スタジアム, 110108346 |
|
|
172
|
+
| Lusail Stadium | Q1186333 | Lusail Stadium, 1375493447 | ルサイル・アイコニック・スタジアム, 110108360 |
|
|
173
|
+
| MetLife Stadium | Q10862290 | MetLife Stadium, 1377506007 | メットライフ・スタジアム, 110420479 |
|
|
174
|
+
| AT&T Stadium | Q838284 | AT&T Stadium, 1378723128 | AT&Tスタジアム, 110578711 |
|
|
175
|
+
| Arrowhead Stadium | Q544553 | Arrowhead Stadium, 1379206337 | アローヘッド・スタジアム, 110785489 |
|
|
176
|
+
| Reliant Stadium | Q1058864 | Reliant Stadium, 1379613664 | リライアント・スタジアム, 110479504 |
|
|
177
|
+
| Mercedes-Benz Stadium | Q7007552 | Mercedes-Benz Stadium, 1377254306 | メルセデス・ベンツ・スタジアム, 110364633 |
|
|
178
|
+
| Hard Rock Stadium | Q864339 | Hard Rock Stadium, 1378219951 | ハードロック・スタジアム, 110333956 |
|
|
179
|
+
| SoFi Stadium | Q19520501 | SoFi Stadium, 1377512452 | SoFiスタジアム, 110365161 |
|
|
180
|
+
| Levi's Stadium | Q7419343 | Levi's Stadium, 1375976386 | リーバイス・スタジアム, 110365038 |
|
|
181
|
+
| Lumen Field | Q612736 | Lumen Field, 1373998493 | ルーメン・フィールド, 110364603 |
|
|
182
|
+
| Gillette Stadium | Q373355 | Gillette Stadium, 1378807964 | ジレット・スタジアム, 110364650 |
|
|
183
|
+
| Lincoln Financial Field | Q1052370 | Lincoln Financial Field, 1379946572 | リンカーン・フィナンシャル・フィールド, 110364983 |
|
|
184
|
+
| BMO Field | Q796351 | BMO Field, 1377704191 | BMOフィールド, 110140746 |
|
|
185
|
+
| BC Place | Q612227 | BC Place, 1372065649 | BCプレイス, 110198797 |
|
|
186
|
+
| Estadio BBVA | Q3058827 | Estadio BBVA, 1374765816 | エスタディオBBVA, 110121756 |
|
|
187
|
+
| Estadio Akron | Q666183 | Estadio Akron, 1378431074 | エスタディオ・アクロン, 110069876 |
|
|
188
|
+
| Tianhe Stadium | Q929126 | Tianhe Stadium, 1372244015 | 天河体育中心体育場, 107400316 |
|
|
189
|
+
| Dignity Health Sports Park | Q200684 | Dignity Health Sports Park, 1372080521 | ディグニティ・ヘルス・スポーツ・パーク, 110881566 |
|
|
190
|
+
| Hongkou Football Stadium | Q201773 | Hongkou Football Stadium, 1372203981 | 上海虹口足球場, 109727595 |
|
|
191
|
+
| Deutsche Bank Park | Q157273 | Waldstadion (Frankfurt), 1375755144 | ヴァルトシュタディオン, 101381780 |
|
|
192
|
+
| Groupama Stadium | Q8507 | Parc Olympique Lyonnais, 1374907290 | パルク・オリンピック・リヨン, 110056689 |
|
|
193
|
+
| Stadium Australia | Q295886 | Stadium Australia, 1377697688 | スタジアム・オーストラリア, 109501020 |
|
|
194
|
+
| Camp Nou | Q159848 | Camp Nou, 1380052299 | カンプ・ノウ, 110123137 |
|
|
195
|
+
| San Siro | Q133566 | San Siro, 1375450359 | スタディオ・ジュゼッペ・メアッツァ, 109745448 |
|
|
196
|
+
| Old Trafford | Q83457 | Old Trafford, 1376703746 | オールド・トラッフォード, 111091505 |
|
|
197
|
+
| Anfield | Q45671 | Anfield, 1379230240 | アンフィールド, 109450439 |
|
|
198
|
+
| Signal Iduna Park | Q150928 | Westfalenstadion, 1372251404 | ジグナル・イドゥナ・パルク, 108234696 |
|
|
199
|
+
| Allianz Arena | Q127429 | Allianz Arena, 1379929376 | アリアンツ・アレーナ, 109745086 |
|
|
200
|
+
| La Bombonera | Q499855 | La Bombonera, 1372283373 | ラ・ボンボネーラ, 108892860 |
|
|
201
|
+
| Hampden Park | Q193651 | Hampden Park, 1379015792 | ハムデン・パーク, 109835284 |
|
|
202
|
+
| Celtic Park | Q216037 | Celtic Park, 1377041444 | セルティック・パーク, 109745353 |
|
|
203
|
+
| Estádio da Luz | Q7875112 | Estádio da Luz, 1376285658 | エスタディオ・ダ・ルス, 106143340 |
|
|
204
|
+
| Parc des Princes | Q193431 | Parc des Princes, 1375789690 | パルク・デ・プランス, 108659418 |
|
|
205
|
+
| Saitama Stadium 2002 | Q482446 | Saitama Stadium 2002, 1372227613 | 埼玉スタジアム2002, 110840810 |
|
|
206
|
+
| Seoul World Cup Stadium | Q175477 | Seoul World Cup Stadium, 1372229282 | ソウルワールドカップ競技場, 110969150 |
|
|
207
|
+
| Emirates Stadium | Q163995 | Emirates Stadium, 1379957033 | エミレーツ・スタジアム, 108293184 |
|
|
208
|
+
| Etihad Stadium | Q48159 | Etihad Stadium, 1378004165 | シティ・オブ・マンチェスター・スタジアム, 110549156 |
|
|
209
|
+
| Stamford Bridge | Q171458 | Stamford Bridge (stadium), 1380009353 | スタンフォード・ブリッジ, 110730305 |
|
|
210
|
+
| Tottenham Hotspur Stadium | Q55074091 | Tottenham Hotspur Stadium, 1378659225 | トッテナム・ホットスパー・スタジアム, 109835288 |
|
|
211
|
+
| Ibrox Stadium | Q208709 | Ibrox Stadium, 1372283348 | アイブロックス・スタジアム, 110396167 |
|
|
212
|
+
| Johan Cruyff Arena | Q207109 | Johan Cruyff Arena, 1379542055 | ヨハン・クライフ・アレナ, 108701867 |
|
|
213
|
+
| Allianz Stadium | Q62149 | Juventus Stadium, 1378642162 | ユヴェントス・スタジアム, 110509929 |
|
|
214
|
+
| Japan National Stadium | Q14862239 | Japan National Stadium, 1378899630 | 国立競技場, 110837538 |
|
|
215
|
+
| Kashima Soccer Stadium | Q494769 | Kashima Soccer Stadium, 1372209519 | 茨城県立カシマサッカースタジアム, 108917122 |
|
|
216
|
+
|
|
217
|
+
## The World Cups' articles
|
|
218
|
+
|
|
219
|
+
The grounds each World Cup used, and where its final was played, were read from the venue section of the tournament's English Wikipedia article at the revision named (32 tournaments), by the same address. FIFA's own pages are not used.
|
|
220
|
+
|
|
221
|
+
| Tournament | English article and revision |
|
|
222
|
+
| --- | --- |
|
|
223
|
+
| Men's World Cup 1930 | 1930 FIFA World Cup, 1379114380 |
|
|
224
|
+
| Men's World Cup 1934 | 1934 FIFA World Cup, 1379198313 |
|
|
225
|
+
| Men's World Cup 1938 | 1938 FIFA World Cup, 1379223069 |
|
|
226
|
+
| Men's World Cup 1950 | 1950 FIFA World Cup, 1379218809 |
|
|
227
|
+
| Men's World Cup 1954 | 1954 FIFA World Cup, 1379225691 |
|
|
228
|
+
| Men's World Cup 1958 | 1958 FIFA World Cup, 1378823627 |
|
|
229
|
+
| Men's World Cup 1962 | 1962 FIFA World Cup, 1376456305 |
|
|
230
|
+
| Men's World Cup 1966 | 1966 FIFA World Cup, 1379957173 |
|
|
231
|
+
| Men's World Cup 1970 | 1970 FIFA World Cup, 1377513245 |
|
|
232
|
+
| Men's World Cup 1974 | 1974 FIFA World Cup, 1377511930 |
|
|
233
|
+
| Men's World Cup 1978 | 1978 FIFA World Cup, 1379956579 |
|
|
234
|
+
| Men's World Cup 1982 | 1982 FIFA World Cup, 1377511941 |
|
|
235
|
+
| Men's World Cup 1986 | 1986 FIFA World Cup, 1378182728 |
|
|
236
|
+
| Men's World Cup 1990 | 1990 FIFA World Cup, 1379879339 |
|
|
237
|
+
| Men's World Cup 1994 | 1994 FIFA World Cup, 1377877674 |
|
|
238
|
+
| Men's World Cup 1998 | 1998 FIFA World Cup, 1379416403 |
|
|
239
|
+
| Men's World Cup 2002 | 2002 FIFA World Cup, 1379609715 |
|
|
240
|
+
| Men's World Cup 2006 | 2006 FIFA World Cup, 1378469485 |
|
|
241
|
+
| Men's World Cup 2010 | 2010 FIFA World Cup, 1377514614 |
|
|
242
|
+
| Men's World Cup 2014 | 2014 FIFA World Cup, 1379710385 |
|
|
243
|
+
| Men's World Cup 2018 | 2018 FIFA World Cup, 1379259821 |
|
|
244
|
+
| Men's World Cup 2022 | 2022 FIFA World Cup, 1378205329 |
|
|
245
|
+
| Men's World Cup 2026 | 2026 FIFA World Cup, 1379825924 |
|
|
246
|
+
| Women's World Cup 1991 | 1991 FIFA Women's World Cup, 1373161637 |
|
|
247
|
+
| Women's World Cup 1995 | 1995 FIFA Women's World Cup, 1367432390 |
|
|
248
|
+
| Women's World Cup 1999 | 1999 FIFA Women's World Cup, 1365674673 |
|
|
249
|
+
| Women's World Cup 2003 | 2003 FIFA Women's World Cup, 1379789675 |
|
|
250
|
+
| Women's World Cup 2007 | 2007 FIFA Women's World Cup, 1360703233 |
|
|
251
|
+
| Women's World Cup 2011 | 2011 FIFA Women's World Cup, 1370487040 |
|
|
252
|
+
| Women's World Cup 2015 | 2015 FIFA Women's World Cup, 1372575071 |
|
|
253
|
+
| Women's World Cup 2019 | 2019 FIFA Women's World Cup, 1374714732 |
|
|
254
|
+
| Women's World Cup 2023 | 2023 FIFA Women's World Cup, 1378315194 |
|
|
255
|
+
|
|
256
|
+
## The special games' sources
|
|
257
|
+
|
|
258
|
+
The dates, the venues and the figures of the 18 special games (`events`) were read from 26 English Wikipedia articles at the revision named, by the address `https://en.wikipedia.org/w/index.php?title=<title>&oldid=<revision>`, and from 3 articles of the press, which are named with their authors and dates. They are facts (a day, a venue, a length); no text, table or picture of any of them is used. Each was read on 2026-10-13.
|
|
259
|
+
|
|
260
|
+
| Article | Revision | What it gave |
|
|
261
|
+
| --- | --- | --- |
|
|
262
|
+
| 2009 NHL Winter Classic | 1373320166 | The date (January 1, 2009), Wrigley Field. |
|
|
263
|
+
| 2010 NHL Winter Classic | 1366739177 | The date (January 1, 2010), Fenway Park. |
|
|
264
|
+
| 2017 NHL Winter Classic | 1379900792 | The date (January 2, 2017), Busch Stadium. |
|
|
265
|
+
| 2018 NHL Winter Classic | 1374252992 | The date (January 1, 2018), Citi Field. |
|
|
266
|
+
| 2019 NHL Winter Classic | 1373254484 | The date (January 1, 2019), Notre Dame Stadium. |
|
|
267
|
+
| 2022 NHL Winter Classic | 1379456628 | The date (January 1, 2022), Target Field. |
|
|
268
|
+
| 2023 NHL Winter Classic | 1366207097 | The date (January 2, 2023), Fenway Park. |
|
|
269
|
+
| NHL Winter Classic | 1374788408 | The venue of each Winter Classic and the sport its stadium is for; that Notre Dame Stadium is a college football stadium. |
|
|
270
|
+
| 2014 NHL Stadium Series | 1372152454 | The dates (January 25, 26 and 29, 2014) and the venues, Dodger Stadium and Yankee Stadium. |
|
|
271
|
+
| 2003 NHL Heritage Classic | 1374350751 | The date (November 22, 2003), Commonwealth Stadium. |
|
|
272
|
+
| 2011 NHL Heritage Classic | 1374350772 | The date (February 20, 2011), McMahon Stadium. |
|
|
273
|
+
| 2014 NHL Heritage Classic | 1374350779 | The date (March 2, 2014), BC Place, with its roof closed. |
|
|
274
|
+
| 2016 NHL Heritage Classic | 1377841702 | The date (October 23, 2016), Investors Group Field, home of the CFL's Blue Bombers. |
|
|
275
|
+
| 2019 NHL Heritage Classic | 1374350802 | The date (October 26, 2019), Mosaic Stadium, home field of the CFL's Saskatchewan Roughriders. |
|
|
276
|
+
| 2023 NHL Heritage Classic | 1374350813 | The date (October 29, 2023), Commonwealth Stadium. |
|
|
277
|
+
| NHL Heritage Classic | 1372780976 | That the Heritage Classic is held in football stadiums based in Canada. |
|
|
278
|
+
| Commonwealth Stadium | 1378728638 | Primarily used as the home field of the Edmonton Elks of the Canadian Football League. |
|
|
279
|
+
| McMahon Stadium | 1373806532 | A Canadian football stadium in Calgary. |
|
|
280
|
+
| BC Place | 1372065649 | The home of the BC Lions of the Canadian Football League; a stadium with a retractable roof. |
|
|
281
|
+
| Princess Auto Stadium | 1377634185 | The stadium (formerly IG Field) is home to the Winnipeg Blue Bombers of the CFL. |
|
|
282
|
+
| Notre Dame Stadium | 1378192410 | The home field of the University of Notre Dame's football team. |
|
|
283
|
+
| MLB London Series | 1377779354 | The dates of the games (June 29 and 30, 2019; June 24 and 25, 2023), the field laid over the stadium's running track and pitch, and its fence: 330 feet to the foul poles, 382 to left center and right center, 385 to center field in 2019; 387 in the power alleys and 392 to center field in 2023. |
|
|
284
|
+
| London Stadium | 1377039897 | The stadium's field of play, 105 by 68 metres. |
|
|
285
|
+
| Carrier Classic | 1372668329 | The date (November 11, 2011), the game on the flight deck of USS Carl Vinson between Michigan State and North Carolina. |
|
|
286
|
+
| Nimitz-class aircraft carrier | 1378895753 | The class's overall length, 1,092 feet, and overall beam, 252 feet. |
|
|
287
|
+
| USS Carl Vinson | 1378362261 | That USS Carl Vinson is a Nimitz-class carrier and played host to the first NCAA basketball game on an aircraft carrier. |
|
|
288
|
+
|
|
289
|
+
| Article | Author and publication | Date | What it gave |
|
|
290
|
+
| --- | --- | --- | --- |
|
|
291
|
+
| [2009 NHL Winter Classic Takes the Mound](https://www.sportsvideo.org/2008/12/30/2009-nhl-winter-classic-takes-the-mound/) | Carolyn Braff, Sports Video Group | 30 December 2008 | At Wrigley Field the 200- by 85-foot rink "splits the pitchers' mound from first to third" and "sits 112 feet from home plate and 288 feet from the center-field wall"; the 2008 and 2003 games were played on football fields. |
|
|
292
|
+
| [Winter Classic at Wrigley evokes memories of 1st outdoor game at Cubs' home](https://www.nhl.com/news/topic/winter-classic/2009-wrigley-winter-classic-oral-history) | Tracey Myers, NHL.com | 29 December 2024 | Dan Craig, who built the 2009 rink: the diagram had center ice at second base, and the rink was moved inside the infield, so that center ice was basically at the pitching mound. |
|
|
293
|
+
| [The NHL is about to move into Fenway Park. Here's a look at how it will set up for the Winter Classic.](https://www.bostonglobe.com/2022/12/18/sports/nhl-is-about-move-into-fenway-park-heres-look-how-it-will-set-up-winter-classic) | Michael Silverman, The Boston Globe | 18 December 2022 | At Fenway Park in 2023 the 200-foot rink is roughly centered length-wise across the first and third bases, stretched along a second-to-third-base axis across the Green Monster, shifted from its 2010 layout. |
|