The pages are in English; this contents, the search and the buttons are in Japanese.
Gallery: swimming, water polo, diving and artistic swimming
The four pools from World Aquatics' Competition Regulations: the swimming pool in 50 and 25 m, the water polo field, the diving well and the artistic swimming area, with the looks of the water and the deck, a side section, the lanes of a made-up race with their flags, results, splits and pace, a frame of a race replay, the split pace chart and a natatorium. The pictures share one stylesheet, which is left out of each one's SVG here; drawKyogijo puts it in every drawing unless style: "none" says not to.
Each pool#
sport is swimming, waterpolo, diving or artisticswimming; pool has the course, the lanes, the boards and the area.
Swimming: the 50 m pool of eight lanes
Ropes green, blue and yellow with red floats within 5 m of the walls, the lane markings and their cross lines, the blocks, the touch panels, the backstroke flags at 5 m and the false start rope at 15 m.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming" });Swimming: ten lanes, numbered 0 to 9
Lanes 0 and 9 are 2.4 m wide with spaces of 0.1 m outside them in a permanent pool; `temporary: true` is the 26 m pool.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { lanes: 10 } });Swimming: the 25 m short course
Eight lanes of 2.5 m with spaces of 0.5 m make a pool 21 m wide.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { course: "short" } });Swimming: a warm-up pool
The same lanes and ropes, without blocks, panels, flags or the false start rope.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { course: "short", kind: "warm-up" } });Water polo: the field of play
25 by 20 m between the goal lines: the ropes red to 2 m, yellow to 6 m and green to the half distance line, the 2, 5 and 6 m lines, the goals, the re-entry areas, the referees' platforms, the table and the substitution areas.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "waterpolo" });Diving: the 1 and 3 m springboards and the 5, 7.5 and 10 m platforms
Each board at the distances of Appendix 2, seen from above, with its plummet; the three lines across the well.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "diving" });Diving: every platform
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "diving", pool: { platforms: [1, 3, 5, 7.5, 10] } });Artistic swimming: the Olympic area
30 by 20 m, the lines along the floor, the judges' platform and the starting platform at centre stage.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "artisticswimming" });Artistic swimming: the least area
25 by 15 m with a deep part of 12 by 12 m.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "artisticswimming", pool: { area: "minimum" } });The look of the water and the deck#
pool.look is flat (the default), water (a faint, seeded net of light) or tiled; pool.deck is plain or tiled; pool.section adds a side section with the depth.
The water look, from a seed
The same seed draws the same light; the light is one small pattern, defined once.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { look: "water", seed: 3 } });Tiles on the floor and the deck
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { look: "tiled", deck: "tiled" } });A side section
The depth, the blocks and panels, the flags 5 m from each end, the false start rope at 15 m and the least depth the rules ask of the water near a wall with blocks. The height is exaggerated.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { look: "water", section: true } });Swimming, dark
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", theme: "dark", pool: { look: "water" } });Water polo, the night look
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "waterpolo", look: "night", pool: { look: "water" } });Swimming, tall
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", orientation: "portrait", pool: { look: "water" } });Water polo, tall
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "waterpolo", orientation: "portrait" });Diving, chalkboard, with its parts named
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "diving", look: "chalkboard", landmarks: true });The lanes of a race#
pool.race gives each swimmer a lane, a name, a flag you pass as SVG or an address, and, once the race is swum, the time, the reaction time and the splits. Places come from the times; the first three get a medal.
A start list: the lane, the flag, the name and the entry time
With no results, the entry times are shown.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const svg = drawKyogijo({ sport: "swimming", pool: { race: { event: "Men's 200 m freestyle, final (made up)", distance: 200, swimmers: swimmers.map(({ splits, reaction, ...s }) => ({ ...s, seed: splits[3] + 0.4 })) } } });The results: places, times, reaction times and splits
Swimmers sit in the order of their lanes; the splits are written under each time.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const svg = drawKyogijo({ sport: "swimming", pool: { look: "water", race: { event: "Men's 200 m freestyle, final (made up)", distance: 200, swimmers: swimmers } } });Split pace bars
Each lane is the whole race laid out flat: each split a bar as long as its share of the race, in a colour from the field's slowest pace to its fastest.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const svg = drawKyogijo({ sport: "swimming", pool: { look: "water", race: { event: "Men's 200 m freestyle, final (made up)", distance: 200, pace: true, swimmers: swimmers } } });A 100 m race in a short course pool
A split every 25 m.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const swimmers = [[4, "Ivo Lindqvist", [11.5, 23.74, 35.8, 47.9]], [5, "Mateo Varga", [11.62, 23.9, 36.1, 48.21]], [3, "Oskar Dahl", [11.3, 23.65, 36.0, 48.4]], [6, "Ren Takahashi", [11.75, 24.1, 36.45, 48.66]]].map(([lane, name, splits]) => ({ lane, name, splits }));
const svg = drawKyogijo({ sport: "swimming", pool: { course: "short", lanes: 6, look: "water", race: { event: "Men's 100 m freestyle, short course (made up)", swimmers } } });A race, tall
The names and times lie along the lanes; the numbers in the discs stay upright.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const svg = drawKyogijo({ sport: "swimming", orientation: "portrait", pool: { race: { event: "Men's 200 m freestyle, final (made up)", distance: 200, swimmers: swimmers } } });A disqualification, a swimmer who did not start
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const swimmers = [{ lane: 4, name: "A. Swimmer", time: 49.12, reaction: 0.62 }, { lane: 5, name: "B. Swimmer", time: 49.4, reaction: 0.66 }, { lane: 3, name: "C. Swimmer", status: "dq", time: 48.98 }, { lane: 6, name: "D. Swimmer", status: "dns" }];
const svg = drawKyogijo({ sport: "swimming", pool: { race: { event: "Men's 50 m freestyle, final (made up)", swimmers } } });Charts and a replay#
splitsChart from /charts is the pace bars with a title, a summary and a table; raceTimeline from /replay plays the splits as swimmers going down their lanes and back.
The split pace chart
The chart also gives `chart.totals` (the fastest split of the field) and `chart.table()`.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { splitsChart } from "@johnmorrisdotca/kyogijo-stadiums/charts";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const chart = splitsChart({ event: "Men's 200 m freestyle, final (made up)", distance: 200, swimmers }, { pool: { look: "water" } });
const svg = chart.draw();A frame of the race replay, 75 seconds after the signal
The marks are the swimmers, numbered by lane, moving from the splits; the clock and the controls are the replay's own.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawFrame, raceTimeline } from "@johnmorrisdotca/kyogijo-stadiums/replay";
const flag = (a, b) => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20"><rect width="30" height="20" fill="' + a + '"/><rect y="7" width="30" height="6" fill="' + b + '"/></svg>';
const swimmers = [
[4, "Ivo Lindqvist", "AUR", "#0f7a7a", "#f4f0e4", 0.64, [25.31, 52.28, 79.6, 106.12]],
[5, "Mateo Varga", "CAL", "#6b2d5c", "#f2c230", 0.67, [25.55, 52.6, 79.95, 106.48]],
[3, "Oskar Dahl", "BOR", "#8a2d4b", "#e8e2cf", 0.61, [25.12, 52.3, 79.98, 106.92]],
[6, "Ren Takahashi", "DOR", "#c2410c", "#14233f", 0.7, [25.8, 53.02, 80.4, 107.15]],
[2, "Callum Rhodes", "EST", "#3a2d6b", "#e8e2cf", 0.66, [25.7, 52.95, 80.66, 107.8]],
[7, "Pavel Novak", "FEN", "#1f6b3c", "#f2c230", 0.69, [26.01, 53.4, 81.02, 108.21]],
[8, "Jonas Berg", "HEL", "#7a2a8c", "#f2c230", 0.72, [26.1, 53.55, 81.38, 108.77]],
[1, "Daniel Okoro", "GAR", "#14233f", "#f2a900", 0.74, [26.2, 53.71, 81.45, 108.9]],
].map(([lane, name, abbr, a, b, reaction, splits]) => ({ lane, name, abbr, flag: flag(a, b), reaction, splits }));
const pool = { look: "water", race: { event: "Men's 200 m freestyle, final (made up)", distance: 200, swimmers, show: { results: false } } };
const timeline = raceTimeline({ pool });
const svg = drawFrame({ sport: "swimming", pool }, timeline, 75, { trail: 3, trailOf: ["home"] });Heat by lane
The zone set `pool-lanes` counts marks into the lanes.
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const data = Array.from({ length: 240 }, (_, i) => ({ x: 20 + ((i * 37) % 120), y: 4 + ((i * 17) % 76) }));
const svg = drawKyogijo({ sport: "swimming", layers: [{ kind: "zones", zones: "pool-lanes", data, labels: { show: ["name", "value"] }, legend: true }] });A natatorium#
pool.venue sets several pools in one hall, to scale, at least 8 m apart (10 m by default), with the deck round them drawn once.
The competition pool, the diving well and a warm-up pool
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { venue: "natatorium" } });The same hall in water and tiles
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", pool: { venue: "natatorium", look: "water", deck: "tiled" } });A hall of your own: a water polo pool and an artistic swimming area
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({
sport: "swimming",
pool: {
venue: {
pools: [
{ sport: "waterpolo" },
{ sport: "artisticswimming" },
{ sport: "swimming", course: "short", lanes: 6, kind: "warm-up" },
],
apart: 12,
},
},
});A score, a part of the pool and its parts named#
A dual meet's points, a water polo match, a crop to the first 15 m of a pool or the goal area, and the parts of the pool named.
A dual meet
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({
sport: "swimming",
away: { name: "Harbour City Gulls", abbr: "HCG", score: 146, color: "#1d4f91" },
home: { name: "Prairie Ridge Bison", abbr: "PRB", score: 154, color: "#a8452c" },
status: "final",
competition: "Dual meet",
});A water polo match
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({
sport: "waterpolo",
away: { name: "Harbour City Gulls", abbr: "HCG", score: 9, color: "#1d4f91" },
home: { name: "Prairie Ridge Bison", abbr: "PRB", score: 11, color: "#a8452c" },
status: "final",
competition: "Quarter-final",
});Diving, as a strip
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({
sport: "diving",
away: { name: "Harbour City Gulls", abbr: "HCG", score: 146, color: "#1d4f91" },
home: { name: "Prairie Ridge Bison", abbr: "PRB", score: 154, color: "#a8452c" },
status: "final",
competition: "Dual meet",
size: "badge",
});Swimming: the end of the pool to the 15 m mark
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", range: "pool-end" });Water polo: the goal area
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "waterpolo", range: "goal-area" });Diving: the springboards
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "diving", range: "springboards" });Artistic swimming: centre stage
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "artisticswimming", range: "centre-stage" });Swimming, with its parts named
Open in a page loads the published package from jsDelivr, which serves only released versions.
Show the code
import { drawKyogijo } from "@johnmorrisdotca/kyogijo-stadiums";
const svg = drawKyogijo({ sport: "swimming", landmarks: true });