@johnmorrisdotca/kyogijo-stadiums 0.45.2 → 0.46.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 +71 -0
- package/NOTICE.md +9 -2
- package/dist/annotate.d.ts +1 -1
- package/dist/annotate.js +1 -1
- package/dist/areas.d.ts +4 -0
- package/dist/areas.js +33 -1
- package/dist/arenas-entry.d.ts +1 -0
- package/dist/arenas-entry.js +2 -0
- package/dist/athletics/describe.js +1 -1
- package/dist/athletics-entry.d.ts +1 -0
- package/dist/athletics-entry.js +2 -0
- package/dist/atlas-entry.d.ts +1 -0
- package/dist/atlas-entry.js +2 -0
- package/dist/ballpark.d.ts +1 -1
- package/dist/ballpark.js +1 -1
- package/dist/budo/describe.js +1 -1
- package/dist/budo-entry.d.ts +1 -0
- package/dist/budo-entry.js +2 -0
- package/dist/canvas-entry.d.ts +1 -0
- package/dist/canvas-entry.js +2 -0
- package/dist/charts-entry.d.ts +1 -0
- package/dist/charts-entry.js +2 -0
- package/dist/charts.athletics.js +1 -1
- package/dist/charts.baseball.js +1 -1
- package/dist/charts.curling.heat.js +1 -1
- package/dist/charts.curling.js +1 -1
- package/dist/charts.d.ts +1 -1
- package/dist/charts.js +1 -1
- package/dist/charts.network.js +1 -1
- package/dist/charts.pool.js +1 -1
- package/dist/charts.skating.js +1 -1
- package/dist/charts.soccer.js +1 -1
- package/dist/cityctx-entry.d.ts +1 -0
- package/dist/cityctx-entry.js +2 -0
- package/dist/cityctx.belmont-park.data.d.ts +3 -0
- package/dist/cityctx.belmont-park.data.js +1802 -0
- package/dist/cityctx.data.d.ts +10 -1
- package/dist/cityctx.data.js +11 -2
- package/dist/cityctx.js +19 -1
- package/dist/cityctx.meadowlands.data.d.ts +3 -0
- package/dist/cityctx.meadowlands.data.js +820 -0
- package/dist/cityctx.montreal-city.data.d.ts +3 -0
- package/dist/cityctx.montreal-city.data.js +2899 -0
- package/dist/cityctx.montreal-downtown.data.d.ts +3 -0
- package/dist/cityctx.montreal-downtown.data.js +3004 -0
- package/dist/cityctx.montreal-olympic.data.d.ts +3 -0
- package/dist/cityctx.montreal-olympic.data.js +2562 -0
- package/dist/cityctx.nyc-bronx.data.d.ts +3 -0
- package/dist/cityctx.nyc-bronx.data.js +1671 -0
- package/dist/cityctx.nyc-brooklyn.data.d.ts +3 -0
- package/dist/cityctx.nyc-brooklyn.data.js +3485 -0
- package/dist/cityctx.nyc-flushing.data.d.ts +3 -0
- package/dist/cityctx.nyc-flushing.data.js +865 -0
- package/dist/cityctx.nyc-midtown.data.d.ts +3 -0
- package/dist/cityctx.nyc-midtown.data.js +2438 -0
- package/dist/crowd.d.ts +22 -2
- package/dist/d3-entry.d.ts +1 -0
- package/dist/d3-entry.js +2 -0
- package/dist/district-entry.d.ts +2 -0
- package/dist/district-entry.js +4 -0
- package/dist/district-lean-entry.js +1 -1
- package/dist/district.js +2 -2
- package/dist/draw.js +3 -3
- package/dist/element-entry.d.ts +1 -0
- package/dist/element-entry.js +2 -0
- package/dist/eras-entry.d.ts +1 -0
- package/dist/eras-entry.js +2 -0
- package/dist/events.js +1 -1
- package/dist/flythrough-entry.d.ts +1 -0
- package/dist/flythrough-entry.js +2 -0
- package/dist/flythrough.dom.d.ts +2 -0
- package/dist/flythrough.dom.js +2 -2
- package/dist/frames-entry.d.ts +1 -0
- package/dist/frames-entry.js +2 -0
- package/dist/full.d.ts +1 -0
- package/dist/full.js +3 -1
- package/dist/geojson-entry.d.ts +1 -0
- package/dist/geojson-entry.js +2 -0
- package/dist/geometry-entry.d.ts +1 -0
- package/dist/geometry-entry.js +2 -0
- package/dist/grounds-entry.d.ts +1 -0
- package/dist/grounds-entry.js +2 -0
- package/dist/heat.js +1 -1
- package/dist/heat.zones.d.ts +1 -1
- package/dist/heat.zones.js +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -1
- package/dist/judging-entry.d.ts +1 -0
- package/dist/judging-entry.js +2 -0
- package/dist/judging.board.js +1 -1
- package/dist/judging.draw.js +1 -1
- package/dist/judging.js +1 -1
- package/dist/judging.text.js +1 -1
- package/dist/layers.env.d.ts +1 -1
- package/dist/layers.env.js +1 -1
- package/dist/layers.js +1 -1
- package/dist/layout.js +1 -1
- package/dist/layouts-entry.d.ts +1 -0
- package/dist/layouts-entry.js +2 -0
- package/dist/leagues-entry.d.ts +1 -0
- package/dist/leagues-entry.js +2 -0
- package/dist/mount-entry.d.ts +1 -0
- package/dist/mount-entry.js +2 -0
- package/dist/multi-entry.d.ts +1 -0
- package/dist/multi-entry.js +2 -0
- package/dist/multi.draw.js +1 -1
- package/dist/multi.js +1 -1
- package/dist/osm-entry.d.ts +1 -0
- package/dist/osm-entry.js +2 -0
- package/dist/outside.d.ts +2 -1
- package/dist/outside.js +7 -6
- package/dist/parks-entry.d.ts +1 -0
- package/dist/parks-entry.js +2 -0
- package/dist/plateau-entry.d.ts +1 -0
- package/dist/plateau-entry.js +2 -0
- package/dist/plot-entry.d.ts +1 -0
- package/dist/plot-entry.js +2 -0
- package/dist/png-entry.d.ts +1 -0
- package/dist/png-entry.js +2 -0
- package/dist/pool.replay.js +1 -1
- package/dist/pool.words.js +1 -1
- package/dist/ranges.js +1 -1
- package/dist/react-entry.d.ts +1 -0
- package/dist/react-entry.js +2 -0
- package/dist/replay-entry.d.ts +1 -0
- package/dist/replay-entry.js +2 -0
- package/dist/replay.d.ts +1 -1
- package/dist/replay.dom.js +1 -1
- package/dist/replay.js +1 -1
- package/dist/rules.js +1 -1
- package/dist/scene-entry.d.ts +1 -0
- package/dist/scene-entry.js +2 -0
- package/dist/situation.draw.js +1 -1
- package/dist/situation.js +1 -1
- package/dist/skating/describe.js +1 -1
- package/dist/skating-entry.d.ts +1 -0
- package/dist/skating-entry.js +2 -0
- package/dist/stadiums-entry.d.ts +1 -0
- package/dist/stadiums-entry.js +2 -0
- package/dist/stadiums.d.ts +35 -4
- package/dist/stadiums.data.js +60 -0
- package/dist/stadiums.js +31 -5
- package/dist/stadiums.osm.data.js +224 -2
- package/dist/strings.core.d.ts +1105 -0
- package/dist/strings.core.js +55 -0
- package/dist/strings.d.ts +4 -1084
- package/dist/strings.en.d.ts +2 -0
- package/dist/strings.en.js +537 -0
- package/dist/strings.ja.d.ts +2 -0
- package/dist/strings.ja.js +562 -0
- package/dist/strings.js +5 -1100
- package/dist/surfaces/venue.js +1 -1
- package/dist/target.js +1 -1
- package/dist/team.common.js +1 -1
- package/dist/team.formation.js +1 -1
- package/dist/team.lineup.js +1 -1
- package/dist/team.motion.js +1 -1
- package/dist/team.network.js +1 -1
- package/dist/team.shape.js +1 -1
- package/dist/turn-entry.d.ts +1 -0
- package/dist/turn-entry.js +2 -0
- package/dist/turn.kit.d.ts +14 -1
- package/dist/turn.kit.js +19 -0
- package/dist/turn.model.d.ts +1 -1
- package/dist/turn.model.js +1 -1
- package/dist/turn.style.js +16 -3
- package/dist/uprights.js +1 -1
- package/dist/venue-data-entry.d.ts +2 -0
- package/dist/venue-data-entry.js +5 -1
- package/dist/venue-data.d.ts +1 -1
- package/dist/venue-data.js +5 -2
- package/dist/venue.js +3 -1
- package/dist/venue.real.d.ts +45 -1
- package/dist/venue.real.js +225 -15
- package/dist/venues/amerant-bank-arena.data.d.ts +2 -0
- package/dist/venues/amerant-bank-arena.data.js +9 -0
- package/dist/venues/amerant-bank-arena.osm.data.d.ts +2 -0
- package/dist/venues/amerant-bank-arena.osm.data.js +47 -0
- package/dist/venues/american-airlines-center.data.d.ts +2 -0
- package/dist/venues/american-airlines-center.data.js +9 -0
- package/dist/venues/american-airlines-center.osm.data.d.ts +2 -0
- package/dist/venues/american-airlines-center.osm.data.js +57 -0
- package/dist/venues/ball-arena.data.d.ts +2 -0
- package/dist/venues/ball-arena.data.js +9 -0
- package/dist/venues/ball-arena.osm.data.d.ts +2 -0
- package/dist/venues/ball-arena.osm.data.js +63 -0
- package/dist/venues/bell-centre.data.d.ts +2 -0
- package/dist/venues/bell-centre.data.js +9 -0
- package/dist/venues/bell-centre.osm.data.d.ts +2 -0
- package/dist/venues/bell-centre.osm.data.js +24 -0
- package/dist/venues/benchmark-international-arena.data.d.ts +2 -0
- package/dist/venues/benchmark-international-arena.data.js +9 -0
- package/dist/venues/benchmark-international-arena.osm.data.d.ts +2 -0
- package/dist/venues/benchmark-international-arena.osm.data.js +57 -0
- package/dist/venues/bridgestone-arena.data.d.ts +2 -0
- package/dist/venues/bridgestone-arena.data.js +9 -0
- package/dist/venues/bridgestone-arena.osm.data.d.ts +2 -0
- package/dist/venues/bridgestone-arena.osm.data.js +43 -0
- package/dist/venues/canada-life-centre.data.d.ts +2 -0
- package/dist/venues/canada-life-centre.data.js +9 -0
- package/dist/venues/canada-life-centre.osm.data.d.ts +2 -0
- package/dist/venues/canada-life-centre.osm.data.js +35 -0
- package/dist/venues/canadian-tire-centre.data.d.ts +2 -0
- package/dist/venues/canadian-tire-centre.data.js +9 -0
- package/dist/venues/canadian-tire-centre.osm.data.d.ts +2 -0
- package/dist/venues/canadian-tire-centre.osm.data.js +45 -0
- package/dist/venues/capital-one-arena.data.d.ts +2 -0
- package/dist/venues/capital-one-arena.data.js +9 -0
- package/dist/venues/capital-one-arena.osm.data.d.ts +2 -0
- package/dist/venues/capital-one-arena.osm.data.js +22 -0
- package/dist/venues/climate-pledge-arena.data.d.ts +2 -0
- package/dist/venues/climate-pledge-arena.data.js +9 -0
- package/dist/venues/climate-pledge-arena.osm.data.d.ts +2 -0
- package/dist/venues/climate-pledge-arena.osm.data.js +32 -0
- package/dist/venues/crypto-com-arena.data.d.ts +2 -0
- package/dist/venues/crypto-com-arena.data.js +9 -0
- package/dist/venues/crypto-com-arena.osm.data.d.ts +2 -0
- package/dist/venues/crypto-com-arena.osm.data.js +64 -0
- package/dist/venues/delta-center.data.d.ts +2 -0
- package/dist/venues/delta-center.data.js +9 -0
- package/dist/venues/delta-center.osm.data.d.ts +2 -0
- package/dist/venues/delta-center.osm.data.js +40 -0
- package/dist/venues/enterprise-center.data.d.ts +2 -0
- package/dist/venues/enterprise-center.data.js +9 -0
- package/dist/venues/enterprise-center.osm.data.d.ts +2 -0
- package/dist/venues/enterprise-center.osm.data.js +35 -0
- package/dist/venues/grand-casino-arena.data.d.ts +2 -0
- package/dist/venues/grand-casino-arena.data.js +9 -0
- package/dist/venues/grand-casino-arena.osm.data.d.ts +2 -0
- package/dist/venues/grand-casino-arena.osm.data.js +37 -0
- package/dist/venues/honda-center.data.d.ts +2 -0
- package/dist/venues/honda-center.data.js +9 -0
- package/dist/venues/honda-center.osm.data.d.ts +2 -0
- package/dist/venues/honda-center.osm.data.js +46 -0
- package/dist/venues/keybank-center.data.d.ts +2 -0
- package/dist/venues/keybank-center.data.js +9 -0
- package/dist/venues/keybank-center.osm.data.d.ts +2 -0
- package/dist/venues/keybank-center.osm.data.js +34 -0
- package/dist/venues/lenovo-center.data.d.ts +2 -0
- package/dist/venues/lenovo-center.data.js +9 -0
- package/dist/venues/lenovo-center.osm.data.d.ts +2 -0
- package/dist/venues/lenovo-center.osm.data.js +51 -0
- package/dist/venues/little-caesars-arena.data.d.ts +2 -0
- package/dist/venues/little-caesars-arena.data.js +9 -0
- package/dist/venues/little-caesars-arena.osm.data.d.ts +2 -0
- package/dist/venues/little-caesars-arena.osm.data.js +64 -0
- package/dist/venues/madison-square-garden.data.d.ts +2 -0
- package/dist/venues/madison-square-garden.data.js +9 -0
- package/dist/venues/madison-square-garden.osm.data.d.ts +2 -0
- package/dist/venues/madison-square-garden.osm.data.js +47 -0
- package/dist/venues/nationwide-arena.data.d.ts +2 -0
- package/dist/venues/nationwide-arena.data.js +9 -0
- package/dist/venues/nationwide-arena.osm.data.d.ts +2 -0
- package/dist/venues/nationwide-arena.osm.data.js +50 -0
- package/dist/venues/ppg-paints-arena.data.d.ts +2 -0
- package/dist/venues/ppg-paints-arena.data.js +9 -0
- package/dist/venues/ppg-paints-arena.osm.data.d.ts +2 -0
- package/dist/venues/ppg-paints-arena.osm.data.js +31 -0
- package/dist/venues/prudential-center.data.d.ts +2 -0
- package/dist/venues/prudential-center.data.js +9 -0
- package/dist/venues/prudential-center.osm.data.d.ts +2 -0
- package/dist/venues/prudential-center.osm.data.js +41 -0
- package/dist/venues/rogers-arena.data.d.ts +2 -0
- package/dist/venues/rogers-arena.data.js +10 -0
- package/dist/venues/rogers-arena.osm.data.d.ts +2 -0
- package/dist/venues/rogers-arena.osm.data.js +27 -0
- package/dist/venues/rogers-place.data.d.ts +2 -0
- package/dist/venues/rogers-place.data.js +9 -0
- package/dist/venues/rogers-place.osm.data.d.ts +2 -0
- package/dist/venues/rogers-place.osm.data.js +40 -0
- package/dist/venues/sap-center.data.d.ts +2 -0
- package/dist/venues/sap-center.data.js +9 -0
- package/dist/venues/sap-center.osm.data.d.ts +2 -0
- package/dist/venues/sap-center.osm.data.js +54 -0
- package/dist/venues/scotiabank-arena.data.d.ts +2 -0
- package/dist/venues/scotiabank-arena.data.js +9 -0
- package/dist/venues/scotiabank-arena.osm.data.d.ts +2 -0
- package/dist/venues/scotiabank-arena.osm.data.js +45 -0
- package/dist/venues/scotiabank-saddledome.data.d.ts +2 -0
- package/dist/venues/scotiabank-saddledome.data.js +9 -0
- package/dist/venues/scotiabank-saddledome.osm.data.d.ts +2 -0
- package/dist/venues/scotiabank-saddledome.osm.data.js +46 -0
- package/dist/venues/t-mobile-arena.data.d.ts +2 -0
- package/dist/venues/t-mobile-arena.data.js +9 -0
- package/dist/venues/t-mobile-arena.osm.data.d.ts +2 -0
- package/dist/venues/t-mobile-arena.osm.data.js +50 -0
- package/dist/venues/td-garden.data.d.ts +2 -0
- package/dist/venues/td-garden.data.js +9 -0
- package/dist/venues/td-garden.osm.data.d.ts +2 -0
- package/dist/venues/td-garden.osm.data.js +24 -0
- package/dist/venues/ubs-arena.data.d.ts +2 -0
- package/dist/venues/ubs-arena.data.js +9 -0
- package/dist/venues/ubs-arena.osm.data.d.ts +2 -0
- package/dist/venues/ubs-arena.osm.data.js +33 -0
- package/dist/venues/united-center.data.d.ts +2 -0
- package/dist/venues/united-center.data.js +9 -0
- package/dist/venues/united-center.osm.data.d.ts +2 -0
- package/dist/venues/united-center.osm.data.js +56 -0
- package/dist/venues/xfinity-mobile-arena.data.d.ts +2 -0
- package/dist/venues/xfinity-mobile-arena.data.js +9 -0
- package/dist/venues/xfinity-mobile-arena.osm.data.d.ts +2 -0
- package/dist/venues/xfinity-mobile-arena.osm.data.js +47 -0
- package/dist/venues-entry.d.ts +1 -0
- package/dist/venues-entry.js +2 -0
- package/dist/venues.all.d.ts +1 -0
- package/dist/venues.all.js +6 -0
- package/dist/venues.d.ts +18 -6
- package/dist/venues.data.js +1 -1
- package/dist/venues.index.d.ts +8 -0
- package/dist/venues.index.js +34 -0
- package/dist/venues.js +45 -8
- package/dist/venues.osm.data.d.ts +0 -2
- package/dist/venues.osm.data.js +0 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/walk/vancouver.data.d.ts +2 -0
- package/dist/walk/vancouver.data.js +1291 -0
- package/dist/walk.d.ts +24 -1
- package/dist/walk.data.d.ts +2 -2
- package/dist/walk.data.js +13 -1293
- package/dist/walk.full.d.ts +1 -0
- package/dist/walk.full.js +5 -0
- package/dist/walk.index.d.ts +7 -0
- package/dist/walk.index.js +3 -0
- package/dist/walk.js +69 -7
- package/package.json +7 -2
package/dist/surfaces/venue.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { el, num } from "../format.js";
|
|
2
2
|
import { feet, reachOf, venueLayout } from "../pool.js";
|
|
3
3
|
import { deckMarkup, paintDefs, poolIds } from "../pool.kit.js";
|
|
4
|
-
import { KYOGIJO_STRINGS } from "../strings.js";
|
|
4
|
+
import { KYOGIJO_STRINGS } from "../strings.core.js";
|
|
5
5
|
import { artistic } from "./artistic.js";
|
|
6
6
|
import { diving } from "./dive.js";
|
|
7
7
|
import { swimming } from "./pool.js";
|
package/dist/target.js
CHANGED
|
@@ -9,7 +9,7 @@ import { esc, el, num } from "./format.js";
|
|
|
9
9
|
import { layerTable, renderLayers } from "./layers.js";
|
|
10
10
|
import { chooseLeague, lacrosseOf } from "./leagues.js";
|
|
11
11
|
import { KYOGIJO_BASE_STYLE } from "./style.js";
|
|
12
|
-
import { KYOGIJO_STRINGS, fill } from "./strings.js";
|
|
12
|
+
import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
|
|
13
13
|
import { soccerSpec } from "./surfaces/soccer-spec.js";
|
|
14
14
|
import { NHL, FEET_PER_METRE } from "./geometry.js";
|
|
15
15
|
import { WATER_POLO } from "./pool.figures.js";
|
package/dist/team.common.js
CHANGED
|
@@ -4,7 +4,7 @@ import { safeColour } from "./colour.js";
|
|
|
4
4
|
import { esc, num } from "./format.js";
|
|
5
5
|
import { isNum, markAttrs, place } from "./layers.env.js";
|
|
6
6
|
import { FRAMES } from "./frames.js";
|
|
7
|
-
import { fill } from "./strings.js";
|
|
7
|
+
import { fill } from "./strings.core.js";
|
|
8
8
|
/** The class and the custom property that colour a mark: its own colour, else its team's, else the layer's. */
|
|
9
9
|
export function paintOf(d) {
|
|
10
10
|
const mine = safeColour(d?.color);
|
package/dist/team.formation.js
CHANGED
|
@@ -4,7 +4,7 @@ import { esc, num } from "./format.js";
|
|
|
4
4
|
import { FRAMES } from "./frames.js";
|
|
5
5
|
import { formationById, positionName } from "./formations.js";
|
|
6
6
|
import { isNum, markAttrs, newMade, opacityOf, place, unitOfLayer } from "./layers.env.js";
|
|
7
|
-
import { fill } from "./strings.js";
|
|
7
|
+
import { fill } from "./strings.core.js";
|
|
8
8
|
import { attrs, labelOf, paintOf, round, titled } from "./team.common.js";
|
|
9
9
|
import { FEET_PER } from "./units.js";
|
|
10
10
|
/** The sports whose surface a formation of a sport is drawn on. */
|
package/dist/team.lineup.js
CHANGED
|
@@ -10,7 +10,7 @@ import { isNum, newMade, opacityOf, unitOfLayer } from "./layers.env.js";
|
|
|
10
10
|
import { chooseLeague } from "./leagues.js";
|
|
11
11
|
import { SURFACES, computeFormation, formationOf } from "./team.formation.js";
|
|
12
12
|
import { attrs, labelOf, paintOf, round, titled } from "./team.common.js";
|
|
13
|
-
import { fill } from "./strings.js";
|
|
13
|
+
import { fill } from "./strings.core.js";
|
|
14
14
|
import { FEET_PER } from "./units.js";
|
|
15
15
|
/** The sports whose team turns round for the visitors: a side that attacks the other end. Baseball's fielders, football's offence and a cricket field do not. */
|
|
16
16
|
const TURNS = new Set(["soccer", "nhl", "nba", "rugby", "afl", "volleyball", "handball", "waterpolo", "fieldhockey", "netball"]);
|
package/dist/team.motion.js
CHANGED
|
@@ -6,7 +6,7 @@ import { esc, num } from "./format.js";
|
|
|
6
6
|
import { buildZoneSet } from "./heat.zones.js";
|
|
7
7
|
import { isNum, newMade, opacityOf, place, placeBack, toArray, unitOfLayer } from "./layers.env.js";
|
|
8
8
|
import { headPath } from "./layers.marks.js";
|
|
9
|
-
import { fill } from "./strings.js";
|
|
9
|
+
import { fill } from "./strings.core.js";
|
|
10
10
|
import { attrs, frameNote, labelOf, round, teamClass, teamKey, teamLabel, titled, unitWord } from "./team.common.js";
|
|
11
11
|
import { FEET_PER } from "./units.js";
|
|
12
12
|
/** The movements of a layer that have a start and a way to go, put on the surface. A movement with no length is kept (it has no direction, and counts for nothing in a flow or a rose). */
|
package/dist/team.network.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { esc, num } from "./format.js";
|
|
5
5
|
import { isNum, markAttrs, newMade, opacityOf, place, toArray, unitOfLayer } from "./layers.env.js";
|
|
6
6
|
import { curveBetween, curvePath, headPath } from "./layers.marks.js";
|
|
7
|
-
import { fill } from "./strings.js";
|
|
7
|
+
import { fill } from "./strings.core.js";
|
|
8
8
|
import { attrs, frameNote, round, teamClass, teamKey, titled } from "./team.common.js";
|
|
9
9
|
import { FEET_PER } from "./units.js";
|
|
10
10
|
const idText = (id) => String(id);
|
package/dist/team.shape.js
CHANGED
|
@@ -5,7 +5,7 @@ import { num } from "./format.js";
|
|
|
5
5
|
import { markAttrs, opacityOf, newMade, toArray, unitOfLayer } from "./layers.env.js";
|
|
6
6
|
import { attrs, dots, frameNote, squareWord, unitWord, groupByTeam, paintOf, placeAll, polygonPath, round, teamClass, teamKey, teamLabel, titled, labelOf } from "./team.common.js";
|
|
7
7
|
import { convexHull, delaunay, polygonArea, polygonCentroid, triangulationEdges, voronoiCells } from "./team.geometry.js";
|
|
8
|
-
import { fill } from "./strings.js";
|
|
8
|
+
import { fill } from "./strings.core.js";
|
|
9
9
|
import { FEET_PER } from "./units.js";
|
|
10
10
|
const who = (p) => labelOf(p.d);
|
|
11
11
|
/** The share of the surface (0 to 1) nearer each site than any other, counted on a grid of cells laid over the surface and kept where the surface is. A repeated site has nothing. */
|
package/dist/turn-entry.d.ts
CHANGED
package/dist/turn-entry.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// The 3D view: a surface as a floor that turns, with a net, a basket, a goal or a pair of posts standing on it.
|
|
2
2
|
import "./full.js";
|
|
3
|
+
// The real venues of the NHL's arenas, as this entry has always had them (the lean district reads the ones it shows).
|
|
4
|
+
import "./venues.all.js";
|
|
3
5
|
export { mountKyogijoTurn, mountTurn, turnSupported } from "./turn.dom.js";
|
|
4
6
|
export { buildTurn, floorOptions, openingView } from "./turn.model.js";
|
|
5
7
|
export { turnDirection } from "./turn.camera.js";
|
package/dist/turn.kit.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export interface Plane {
|
|
|
40
40
|
* (a raised room is seen through every wall between it and the eye, at a low angle and from straight above alike).
|
|
41
41
|
*/
|
|
42
42
|
fadeSide?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* A roof: it is cut away from above, so that the bowl under it stays visible, and whole from the street. Its opacity falls from whole to `fadeTo` (0.12 when missing) as the eye rises over the building, from a pitch of `CUTAWAY.from`
|
|
45
|
+
* degrees (the eye at a low angle, outside) to `CUTAWAY.to` (the eye looking down); at the lowest pitches the view allows, an eye at street level, it is whole again whatever its side. In between a roof that is `shy` gives way as
|
|
46
|
+
* a wall does, by the side the eye is on.
|
|
47
|
+
*/
|
|
48
|
+
cut?: boolean;
|
|
43
49
|
/**
|
|
44
50
|
* A face of a closed solid that nothing shows through (a building's wall, drawn opaque): the side of it that is the solid's outside, as the way its `u` x `v` points, 1 out of the solid and -1 into it. While the face is turned away
|
|
45
51
|
* from the eye it is hidden by the solid's own near faces, so a page that asks for it (`layoutOf`'s `cull`) leaves it out of the view until the view turns it round, and spends nothing on it.
|
|
@@ -116,7 +122,14 @@ export declare function shy(p: Plane, centre: readonly [number, number]): Plane;
|
|
|
116
122
|
* How much of a wall is left (1 whole, down to 0.08) at a view: none is cut away unless the wall is on the eye's side of the surface, and then more the lower the eye is, because a wall seen
|
|
117
123
|
* from straight above hides nothing. `yaw` and `pitch` are the view's, in degrees.
|
|
118
124
|
*/
|
|
119
|
-
export declare function fadeOf(p: Pick<Plane, "shy" | "fadeTo" | "fadeAt" | "fadeSide">, yaw: number, pitch: number): number;
|
|
125
|
+
export declare function fadeOf(p: Pick<Plane, "shy" | "fadeTo" | "fadeAt" | "fadeSide" | "cut">, yaw: number, pitch: number): number;
|
|
126
|
+
/** The pitches, in degrees, between which a roof is cut away from above (it is whole at `high` and over, and gone to its `fadeTo` at `low` and under), and between which it is whole again at street level. */
|
|
127
|
+
export declare const CUTAWAY: {
|
|
128
|
+
readonly low: 8;
|
|
129
|
+
readonly high: 38;
|
|
130
|
+
readonly streetFrom: 74;
|
|
131
|
+
readonly streetTo: 84;
|
|
132
|
+
};
|
|
120
133
|
/** A rectangle on the surface, in feet: its corners. */
|
|
121
134
|
export type Rect = {
|
|
122
135
|
x0: number;
|
package/dist/turn.kit.js
CHANGED
|
@@ -105,6 +105,25 @@ export function shy(p, centre) {
|
|
|
105
105
|
* from straight above hides nothing. `yaw` and `pitch` are the view's, in degrees.
|
|
106
106
|
*/
|
|
107
107
|
export function fadeOf(p, yaw, pitch) {
|
|
108
|
+
if (p.cut === true)
|
|
109
|
+
return cutOf(p, yaw, pitch);
|
|
110
|
+
return sideOf(p, yaw, pitch);
|
|
111
|
+
}
|
|
112
|
+
/** The pitches, in degrees, between which a roof is cut away from above (it is whole at `high` and over, and gone to its `fadeTo` at `low` and under), and between which it is whole again at street level. */
|
|
113
|
+
export const CUTAWAY = { low: 8, high: 38, streetFrom: 74, streetTo: 84 };
|
|
114
|
+
const smooth = (x, from, to) => {
|
|
115
|
+
const t = Math.min(1, Math.max(0, (x - from) / (to - from)));
|
|
116
|
+
return t * t * (3 - 2 * t);
|
|
117
|
+
};
|
|
118
|
+
/** How much of a roof is left at a view: cut away from above, given way like a wall by its side, whole at street level. */
|
|
119
|
+
function cutOf(p, yaw, pitch) {
|
|
120
|
+
const lowest = p.fadeTo ?? 0.12;
|
|
121
|
+
const above = lowest + (1 - lowest) * smooth(pitch, CUTAWAY.low, CUTAWAY.high);
|
|
122
|
+
const kept = Math.min(above, sideOf(p, yaw, pitch));
|
|
123
|
+
const street = smooth(pitch, CUTAWAY.streetFrom, CUTAWAY.streetTo);
|
|
124
|
+
return Math.round((kept + (1 - kept) * street) * 1000) / 1000;
|
|
125
|
+
}
|
|
126
|
+
function sideOf(p, yaw, pitch) {
|
|
108
127
|
if (p.shy === undefined)
|
|
109
128
|
return 1;
|
|
110
129
|
const a = (yaw * Math.PI) / 180;
|
package/dist/turn.model.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KYOGIJO_STRINGS } from "./strings.ts";
|
|
1
|
+
import { KYOGIJO_STRINGS } from "./strings.core.ts";
|
|
2
2
|
import { type PresetTable, type TurnDirection, type TurnPreset, type TurnView } from "./turn.camera.ts";
|
|
3
3
|
import type { Plane } from "./turn.kit.ts";
|
|
4
4
|
import { type UprightOptions, type Uprights } from "./uprights.ts";
|
package/dist/turn.model.js
CHANGED
|
@@ -4,7 +4,7 @@ import { describe, drawKyogijo } from "./draw.js";
|
|
|
4
4
|
import { hash } from "./format.js";
|
|
5
5
|
import { lengthUnit } from "./common.js";
|
|
6
6
|
import { convertLength } from "./units.js";
|
|
7
|
-
import { KYOGIJO_STRINGS } from "./strings.js";
|
|
7
|
+
import { KYOGIJO_STRINGS } from "./strings.core.js";
|
|
8
8
|
import { TURN_DEFAULT, clampView, presetView } from "./turn.camera.js";
|
|
9
9
|
import { describeUprights, planesOf, uprightsFor } from "./uprights.js";
|
|
10
10
|
import { resolveCrowd } from "./crowd.js";
|
package/dist/turn.style.js
CHANGED
|
@@ -5,9 +5,9 @@ import { KYOGIJO_TURN_BOARD_STYLE } from "./overlay.js";
|
|
|
5
5
|
* defaults are in `:where()`, which has no weight, so a page's own rule always wins; the colours are custom properties (`--ky-up-*`) a page can set.
|
|
6
6
|
*/
|
|
7
7
|
export const KYOGIJO_TURN_STYLE = `
|
|
8
|
-
:where(.ky-turn){--ky-left:#2f6db0;--ky-right:#b5452c;--ky-cr-home:#b5452c;--ky-cr-away:#2f6db0;--ky-cr-bed:#4a525d;--ky-cr-empty:#7d8794;--ky-cr-gap:#14181d;--ky-cr-conc:#8c929b;--ky-cr-dim:1;--ky-up-roof:rgba(214,218,212,.6);--ky-up-roofline:rgba(40,46,42,.55);--ky-up-fascia:#9aa09a;--ky-up-ivy:#5b8a45;--ky-up-door:#8a6a46;--ky-up-window:rgba(150,200,240,.55);--ky-up-sash:#f2f0e6;--ky-up-banner:#26211d;--ky-up-bannerline:#c8b88a;--ky-up-room:#efe8d6;--ky-up-roomback:#d6cdb9;--ky-up-ceiling:#dedcd5;--ky-up-railw:#fbfaf6;--ky-up-wainline:#6b4a2a;--ky-up-riser:#3f342c;--ky-up-slab:#d8cfba;--ky-up-slabedge:#c2b69c;--ky-up-seatc:#46342a;--ky-up-seatb:#2d211b;--ky-up-dais:#a0683a;--ky-up-dais-side:#6a4326;--ky-up-shrine:#c9b48f;--ky-up-shrine-side:#8f7a55;--ky-up-gal:#4d4037;--ky-up-aisle:#dcc196;--ky-up-panel:rgba(95,58,22,.3);--ky-up-alcove:#b58a52;--ky-up-purple:#5b2a6e;--ky-up-clock:#ffffff;--ky-up-rail:#3a2c1f;--ky-up-matedge:#2a2a26;--ky-up-sbframe:#1a1f1c;--ky-up-sbedge:#5b645e;--ky-up-sbline:#59615b;--ky-up-pole:#e9e7de;--ky-up-white:#f6f4ec;--ky-up-yellow:#f2c230;--ky-up-red:#c8372d;--ky-up-orange:#f26a1b;--ky-up-wood:#e3d4b4;--ky-up-leg:#474e49;--ky-up-pad:#2f6db0;--ky-up-cagepad:#2a2d32;--ky-up-table:#18243f;--ky-up-foot:rgba(0,0,0,.25);--ky-up-ground:#d9d5c7;--ky-up-wall:#2f4a36;--ky-up-clay:#a8703f;--ky-up-cap:#1d2a22;--ky-up-board:#ece9df;--ky-up-glass:rgba(138,190,232,.26);--ky-up-backboard:rgba(255,255,255,.88);--ky-up-outline:#f2f0e6;--ky-up-rim:#e8591a;--ky-up-mesh:rgba(24,30,27,.7);--ky-up-netfill:rgba(255,255,255,.2);--ky-up-tape:#fbfaf4;--ky-turn-bg:transparent;--ky-turn-ink:#1f2320;--ky-turn-rule:rgba(31,35,32,.22);--ky-turn-chip:rgba(255,255,255,.86);--ky-turn-chip-on:#1f2320;--ky-turn-chip-on-ink:#fff;${JUDGING_LIGHT};--ky-up-blk-a:#e9ece4;--ky-up-blk-b:#c9cdc3;--ky-up-blk-c:#a4aa9f;--ky-up-blk-roof:#f4f5f0;--ky-up-blk-line:rgba(40,46,42,.38);--ky-up-plate:rgba(47,109,176,.5);--ky-up-plate-line:#2f6db0}
|
|
9
|
-
@media (prefers-color-scheme:dark){:where(html:not([data-theme=light]) .ky-turn:not([data-theme=light])){--ky-cr-bed:#242a32;--ky-cr-empty:#4a535f;--ky-cr-gap:#050709;--ky-cr-conc:#2a3038;--ky-cr-dim:.82;--ky-up-roof:rgba(60,66,62,.6);--ky-up-roofline:rgba(200,206,200,.5);--ky-up-fascia:#505650;--ky-up-ivy:#3d6633;--ky-up-door:#6a4f33;--ky-up-gal:#2d2621;--ky-up-aisle:#8f7752;--ky-up-alcove:#7d5c36;--ky-up-purple:#43204f;--ky-up-clock:#cfcbc0;--ky-up-room:#6d675a;--ky-up-roomback:#58534a;--ky-up-ceiling:#8c8a82;--ky-up-railw:#d9d6cc;--ky-up-riser:#251f1b;--ky-up-slab:#6b6455;--ky-up-slabedge:#585143;--ky-up-seatc:#2f231c;--ky-up-seatb:#1c1411;--ky-up-dais:#7d5230;--ky-up-dais-side:#52361f;--ky-up-sbframe:#0c0f0d;--ky-up-sbedge:#7a847d;--ky-up-sbline:#8a928c;--ky-up-pole:#d6d4ca;--ky-up-white:#e8e6dc;--ky-up-wood:#a89873;--ky-up-leg:#8a928c;--ky-up-ground:#242823;--ky-up-cagepad:#8f969f;--ky-up-wall:#4d6b55;--ky-up-clay:#7d5231;--ky-up-cap:#c9d2cc;--ky-up-board:#8d928b;--ky-up-glass:rgba(150,200,240,.2);--ky-up-backboard:rgba(255,255,255,.34);--ky-up-outline:#e7e4d8;--ky-up-mesh:rgba(236,236,226,.62);--ky-up-netfill:rgba(255,255,255,.08);--ky-up-tape:#efede2;--ky-turn-ink:#ece8dc;--ky-turn-rule:rgba(236,232,220,.28);--ky-turn-chip:rgba(24,28,25,.82);--ky-turn-chip-on:#ece8dc;--ky-turn-chip-on-ink:#1f2320;${JUDGING_DARK};--ky-up-blk-a:#59626b;--ky-up-blk-b:#444b53;--ky-up-blk-c:#30363c;--ky-up-blk-roof:#69727b;--ky-up-blk-line:rgba(220,226,220,.3);--ky-up-plate:rgba(127,176,232,.45);--ky-up-plate-line:#7fb0e8}}
|
|
10
|
-
:where(html[data-theme=dark] .ky-turn,.ky-turn[data-theme=dark]){--ky-cr-bed:#242a32;--ky-cr-empty:#4a535f;--ky-cr-gap:#050709;--ky-cr-conc:#2a3038;--ky-cr-dim:.82;--ky-up-roof:rgba(60,66,62,.6);--ky-up-roofline:rgba(200,206,200,.5);--ky-up-fascia:#505650;--ky-up-ivy:#3d6633;--ky-up-door:#6a4f33;--ky-up-gal:#2d2621;--ky-up-aisle:#8f7752;--ky-up-alcove:#7d5c36;--ky-up-purple:#43204f;--ky-up-clock:#cfcbc0;--ky-up-room:#6d675a;--ky-up-roomback:#58534a;--ky-up-ceiling:#8c8a82;--ky-up-railw:#d9d6cc;--ky-up-riser:#251f1b;--ky-up-slab:#6b6455;--ky-up-slabedge:#585143;--ky-up-seatc:#2f231c;--ky-up-seatb:#1c1411;--ky-up-dais:#7d5230;--ky-up-dais-side:#52361f;--ky-up-sbframe:#0c0f0d;--ky-up-sbedge:#7a847d;--ky-up-sbline:#8a928c;--ky-up-pole:#d6d4ca;--ky-up-white:#e8e6dc;--ky-up-wood:#a89873;--ky-up-leg:#8a928c;--ky-up-ground:#242823;--ky-up-cagepad:#8f969f;--ky-up-wall:#4d6b55;--ky-up-clay:#7d5231;--ky-up-cap:#c9d2cc;--ky-up-board:#8d928b;--ky-up-glass:rgba(150,200,240,.2);--ky-up-backboard:rgba(255,255,255,.34);--ky-up-outline:#e7e4d8;--ky-up-mesh:rgba(236,236,226,.62);--ky-up-netfill:rgba(255,255,255,.08);--ky-up-tape:#efede2;--ky-turn-ink:#ece8dc;--ky-turn-rule:rgba(236,232,220,.28);--ky-turn-chip:rgba(24,28,25,.82);--ky-turn-chip-on:#ece8dc;--ky-turn-chip-on-ink:#1f2320;${JUDGING_DARK};--ky-up-blk-a:#59626b;--ky-up-blk-b:#444b53;--ky-up-blk-c:#30363c;--ky-up-blk-roof:#69727b;--ky-up-blk-line:rgba(220,226,220,.3);--ky-up-plate:rgba(127,176,232,.45);--ky-up-plate-line:#7fb0e8}
|
|
8
|
+
:where(.ky-turn){--ky-left:#2f6db0;--ky-right:#b5452c;--ky-cr-home:#b5452c;--ky-cr-away:#2f6db0;--ky-cr-bed:#4a525d;--ky-cr-empty:#7d8794;--ky-cr-gap:#14181d;--ky-cr-conc:#8c929b;--ky-cr-dim:1;--ky-up-roof:rgba(214,218,212,.6);--ky-up-roofline:rgba(40,46,42,.55);--ky-up-fascia:#9aa09a;--ky-up-ivy:#5b8a45;--ky-up-brick:#a8604a;--ky-up-canopy:rgba(232,235,230,.9);--ky-up-door:#8a6a46;--ky-up-window:rgba(150,200,240,.55);--ky-up-sash:#f2f0e6;--ky-up-banner:#26211d;--ky-up-bannerline:#c8b88a;--ky-up-room:#efe8d6;--ky-up-roomback:#d6cdb9;--ky-up-ceiling:#dedcd5;--ky-up-railw:#fbfaf6;--ky-up-wainline:#6b4a2a;--ky-up-riser:#3f342c;--ky-up-slab:#d8cfba;--ky-up-slabedge:#c2b69c;--ky-up-seatc:#46342a;--ky-up-seatb:#2d211b;--ky-up-dais:#a0683a;--ky-up-dais-side:#6a4326;--ky-up-shrine:#c9b48f;--ky-up-shrine-side:#8f7a55;--ky-up-gal:#4d4037;--ky-up-aisle:#dcc196;--ky-up-panel:rgba(95,58,22,.3);--ky-up-alcove:#b58a52;--ky-up-purple:#5b2a6e;--ky-up-clock:#ffffff;--ky-up-rail:#3a2c1f;--ky-up-matedge:#2a2a26;--ky-up-sbframe:#1a1f1c;--ky-up-sbedge:#5b645e;--ky-up-sbline:#59615b;--ky-up-pole:#e9e7de;--ky-up-white:#f6f4ec;--ky-up-yellow:#f2c230;--ky-up-red:#c8372d;--ky-up-orange:#f26a1b;--ky-up-wood:#e3d4b4;--ky-up-leg:#474e49;--ky-up-pad:#2f6db0;--ky-up-cagepad:#2a2d32;--ky-up-table:#18243f;--ky-up-foot:rgba(0,0,0,.25);--ky-up-ground:#d9d5c7;--ky-up-wall:#2f4a36;--ky-up-clay:#a8703f;--ky-up-cap:#1d2a22;--ky-up-board:#ece9df;--ky-up-glass:rgba(138,190,232,.26);--ky-up-backboard:rgba(255,255,255,.88);--ky-up-outline:#f2f0e6;--ky-up-rim:#e8591a;--ky-up-mesh:rgba(24,30,27,.7);--ky-up-netfill:rgba(255,255,255,.2);--ky-up-tape:#fbfaf4;--ky-turn-bg:transparent;--ky-turn-ink:#1f2320;--ky-turn-rule:rgba(31,35,32,.22);--ky-turn-chip:rgba(255,255,255,.86);--ky-turn-chip-on:#1f2320;--ky-turn-chip-on-ink:#fff;${JUDGING_LIGHT};--ky-up-blk-a:#e9ece4;--ky-up-blk-b:#c9cdc3;--ky-up-blk-c:#a4aa9f;--ky-up-blk-roof:#f4f5f0;--ky-up-blk-line:rgba(40,46,42,.38);--ky-up-plate:rgba(47,109,176,.5);--ky-up-plate-line:#2f6db0}
|
|
9
|
+
@media (prefers-color-scheme:dark){:where(html:not([data-theme=light]) .ky-turn:not([data-theme=light])){--ky-cr-bed:#242a32;--ky-cr-empty:#4a535f;--ky-cr-gap:#050709;--ky-cr-conc:#2a3038;--ky-cr-dim:.82;--ky-up-roof:rgba(60,66,62,.6);--ky-up-roofline:rgba(200,206,200,.5);--ky-up-fascia:#505650;--ky-up-ivy:#3d6633;--ky-up-brick:#7a4434;--ky-up-canopy:rgba(78,84,80,.9);--ky-up-door:#6a4f33;--ky-up-gal:#2d2621;--ky-up-aisle:#8f7752;--ky-up-alcove:#7d5c36;--ky-up-purple:#43204f;--ky-up-clock:#cfcbc0;--ky-up-room:#6d675a;--ky-up-roomback:#58534a;--ky-up-ceiling:#8c8a82;--ky-up-railw:#d9d6cc;--ky-up-riser:#251f1b;--ky-up-slab:#6b6455;--ky-up-slabedge:#585143;--ky-up-seatc:#2f231c;--ky-up-seatb:#1c1411;--ky-up-dais:#7d5230;--ky-up-dais-side:#52361f;--ky-up-sbframe:#0c0f0d;--ky-up-sbedge:#7a847d;--ky-up-sbline:#8a928c;--ky-up-pole:#d6d4ca;--ky-up-white:#e8e6dc;--ky-up-wood:#a89873;--ky-up-leg:#8a928c;--ky-up-ground:#242823;--ky-up-cagepad:#8f969f;--ky-up-wall:#4d6b55;--ky-up-clay:#7d5231;--ky-up-cap:#c9d2cc;--ky-up-board:#8d928b;--ky-up-glass:rgba(150,200,240,.2);--ky-up-backboard:rgba(255,255,255,.34);--ky-up-outline:#e7e4d8;--ky-up-mesh:rgba(236,236,226,.62);--ky-up-netfill:rgba(255,255,255,.08);--ky-up-tape:#efede2;--ky-turn-ink:#ece8dc;--ky-turn-rule:rgba(236,232,220,.28);--ky-turn-chip:rgba(24,28,25,.82);--ky-turn-chip-on:#ece8dc;--ky-turn-chip-on-ink:#1f2320;${JUDGING_DARK};--ky-up-blk-a:#59626b;--ky-up-blk-b:#444b53;--ky-up-blk-c:#30363c;--ky-up-blk-roof:#69727b;--ky-up-blk-line:rgba(220,226,220,.3);--ky-up-plate:rgba(127,176,232,.45);--ky-up-plate-line:#7fb0e8}}
|
|
10
|
+
:where(html[data-theme=dark] .ky-turn,.ky-turn[data-theme=dark]){--ky-cr-bed:#242a32;--ky-cr-empty:#4a535f;--ky-cr-gap:#050709;--ky-cr-conc:#2a3038;--ky-cr-dim:.82;--ky-up-roof:rgba(60,66,62,.6);--ky-up-roofline:rgba(200,206,200,.5);--ky-up-fascia:#505650;--ky-up-ivy:#3d6633;--ky-up-brick:#7a4434;--ky-up-canopy:rgba(78,84,80,.9);--ky-up-door:#6a4f33;--ky-up-gal:#2d2621;--ky-up-aisle:#8f7752;--ky-up-alcove:#7d5c36;--ky-up-purple:#43204f;--ky-up-clock:#cfcbc0;--ky-up-room:#6d675a;--ky-up-roomback:#58534a;--ky-up-ceiling:#8c8a82;--ky-up-railw:#d9d6cc;--ky-up-riser:#251f1b;--ky-up-slab:#6b6455;--ky-up-slabedge:#585143;--ky-up-seatc:#2f231c;--ky-up-seatb:#1c1411;--ky-up-dais:#7d5230;--ky-up-dais-side:#52361f;--ky-up-sbframe:#0c0f0d;--ky-up-sbedge:#7a847d;--ky-up-sbline:#8a928c;--ky-up-pole:#d6d4ca;--ky-up-white:#e8e6dc;--ky-up-wood:#a89873;--ky-up-leg:#8a928c;--ky-up-ground:#242823;--ky-up-cagepad:#8f969f;--ky-up-wall:#4d6b55;--ky-up-clay:#7d5231;--ky-up-cap:#c9d2cc;--ky-up-board:#8d928b;--ky-up-glass:rgba(150,200,240,.2);--ky-up-backboard:rgba(255,255,255,.34);--ky-up-outline:#e7e4d8;--ky-up-mesh:rgba(236,236,226,.62);--ky-up-netfill:rgba(255,255,255,.08);--ky-up-tape:#efede2;--ky-turn-ink:#ece8dc;--ky-turn-rule:rgba(236,232,220,.28);--ky-turn-chip:rgba(24,28,25,.82);--ky-turn-chip-on:#ece8dc;--ky-turn-chip-on-ink:#1f2320;${JUDGING_DARK};--ky-up-blk-a:#59626b;--ky-up-blk-b:#444b53;--ky-up-blk-c:#30363c;--ky-up-blk-roof:#69727b;--ky-up-blk-line:rgba(220,226,220,.3);--ky-up-plate:rgba(127,176,232,.45);--ky-up-plate-line:#7fb0e8}
|
|
11
11
|
.ky-turn{position:relative;display:block;width:100%;color:var(--ky-turn-ink);font-family:var(--ky-font,system-ui,-apple-system,"Segoe UI","Hiragino Sans","Noto Sans JP",sans-serif);background:var(--ky-turn-bg)}
|
|
12
12
|
.ky-turn-view{position:relative;isolation:isolate;width:100%;aspect-ratio:var(--ky-turn-ratio,16/10);min-height:260px;overflow:hidden;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;border-radius:12px;outline-offset:2px}
|
|
13
13
|
.ky-turn[data-touch=turn] .ky-turn-view{touch-action:none}
|
|
@@ -68,6 +68,13 @@ export const KYOGIJO_TURN_STYLE = `
|
|
|
68
68
|
.ky-turn .u-fascia{fill:var(--ky-up-fascia)}
|
|
69
69
|
.ky-turn .u-shell{fill:var(--ky-up-fascia);stroke:var(--ky-up-roofline);stroke-width:.6}
|
|
70
70
|
.ky-turn .u-ivy{fill:var(--ky-up-ivy)}
|
|
71
|
+
.ky-turn .u-canopy{fill:var(--ky-up-canopy,rgba(232,235,230,.9))}
|
|
72
|
+
.ky-turn .u-brick{fill:var(--ky-up-brick,#a8604a)}
|
|
73
|
+
.ky-turn .u-rail{fill:var(--ky-up-fascia);stroke:var(--ky-up-roofline);stroke-width:.6}
|
|
74
|
+
.ky-turn .u-endtower{fill:var(--ky-up-fascia);stroke:var(--ky-up-roofline);stroke-width:.6}
|
|
75
|
+
.ky-turn .u-endtower-side{fill:color-mix(in srgb,var(--ky-up-fascia) 86%,#000);stroke:var(--ky-up-roofline);stroke-width:.6}
|
|
76
|
+
.ky-turn .u-endtower-board{fill:#141a20;stroke:var(--ky-up-roofline);stroke-width:.5}
|
|
77
|
+
.ky-turn .u-endtower-rows{fill:none;stroke:#7fb2ee;stroke-opacity:.45;stroke-width:.6}
|
|
71
78
|
/* The buildings round a district's venues (context.ts): three tones of wall by the way each faces, and a lighter roof. */
|
|
72
79
|
.ky-turn .u-block{stroke:var(--ky-up-blk-line);stroke-width:.5}
|
|
73
80
|
.ky-turn .u-block-a{fill:var(--ky-up-blk-a)}
|
|
@@ -90,6 +97,12 @@ export const KYOGIJO_TURN_STYLE = `
|
|
|
90
97
|
.ky-turn .u-signplate{fill:var(--ky-turn-bg);fill-opacity:.9;stroke:var(--ky-turn-rule);stroke-width:.5}
|
|
91
98
|
.ky-turn .u-sign{fill:var(--ky-turn-ink);font-family:var(--ky-font,system-ui,-apple-system,"Segoe UI","Hiragino Sans","Noto Sans JP",sans-serif);font-weight:600}
|
|
92
99
|
.ky-turn .u-mast{fill:var(--ky-up-fascia);stroke:var(--ky-up-roofline);stroke-width:.4}
|
|
100
|
+
.ky-turn .u-tower{fill:var(--ky-up-fascia);stroke:var(--ky-up-roofline);stroke-width:.4}
|
|
101
|
+
.ky-turn .u-tower-slit{fill:var(--ky-up-roofline);fill-opacity:.55}
|
|
102
|
+
.ky-turn .u-tower-foot{fill:var(--ky-up-roofline);fill-opacity:.8}
|
|
103
|
+
.ky-turn .u-tower-cap{fill:var(--ky-up-roofline);fill-opacity:.85}
|
|
104
|
+
.ky-turn .u-tower-glass{fill:var(--ky-up-fascia);fill-opacity:.55}
|
|
105
|
+
.ky-turn .u-tower-cable{fill:var(--ky-up-roofline);fill-opacity:.7}
|
|
93
106
|
.ky-turn .u-skylight{fill:var(--ky-up-skylight,#a9c8da);fill-opacity:.9;stroke:var(--ky-up-roofline);stroke-width:.5}
|
|
94
107
|
.ky-turn .u-podium{fill:#000;fill-opacity:.16}
|
|
95
108
|
.ky-turn .u-ledge{fill:var(--ky-up-roofline)}
|
package/dist/uprights.js
CHANGED
|
@@ -13,7 +13,7 @@ import { NHL_RINK } from "./leagues/hockey.js";
|
|
|
13
13
|
import { chooseLeague, courtOf, diamondOf, fieldOf, rinkOf } from "./leagues.js";
|
|
14
14
|
import { fenceFor, heldPark, parkWallsIn } from "./parks.core.js";
|
|
15
15
|
import { fenceOutline } from "./surfaces/baseball.js";
|
|
16
|
-
import { KYOGIJO_STRINGS, fill } from "./strings.js";
|
|
16
|
+
import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
|
|
17
17
|
import { soccerSpec } from "./surfaces/soccer-spec.js";
|
|
18
18
|
import { thinnest } from "./turn.kit.js";
|
|
19
19
|
import { scoreboard } from "./uprights.board.js";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { loadArena, loadGround, loadPark, loadVenueDataFor, venueDataKeysFor, venueName } from "./venue-data.ts";
|
|
2
2
|
export type { VenueDataKeys } from "./venue-data.ts";
|
|
3
|
+
export { loadOutside } from "./walk.ts";
|
|
4
|
+
export { loadStrings } from "./strings.core.ts";
|
|
3
5
|
export type { Arena } from "./arenas.core.ts";
|
|
4
6
|
export type { Ground } from "./grounds.core.ts";
|
|
5
7
|
export type { Park } from "./parks.core.ts";
|
package/dist/venue-data-entry.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
// The data of the venues a page shows, one file each, read when asked for: `loadVenueDataFor` for the venues of a district, `loadArena`, `loadPark` and `loadGround` for one, `venueName` to list the venues by name without reading any of them.
|
|
1
|
+
// The data of the venues a page shows, one file each, read when asked for (`loadOutside` the walkable ground of a crowd outside them, and `loadStrings` the words of a language, in the same way): `loadVenueDataFor` for the venues of a district, `loadArena`, `loadPark` and `loadGround` for one, `venueName` to list the venues by name without reading any of them.
|
|
2
2
|
export { loadArena, loadGround, loadPark, loadVenueDataFor, venueDataKeysFor, venueName } from "./venue-data.js";
|
|
3
|
+
// The walkable ground of the crowd outside some venues (OpenStreetMap, ODbL 1.0), one file for each district, read when the venues have a crowd outside to show.
|
|
4
|
+
export { loadOutside } from "./walk.js";
|
|
5
|
+
// The words of a language, one file each, read before the first draw in it.
|
|
6
|
+
export { loadStrings } from "./strings.core.js";
|
package/dist/venue-data.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export interface VenueDataKeys {
|
|
|
39
39
|
*/
|
|
40
40
|
export declare function venueDataKeysFor(venues: readonly string[]): VenueDataKeys;
|
|
41
41
|
/**
|
|
42
|
-
* The records of the venues a page is about to draw, each read from its own file and no other, and held for the drawing: what `planDistrict`, `drawDistrict` and `mountDistrictTurn` of the lean district read. Await it before the
|
|
42
|
+
* The records of the venues a page is about to draw, each read from its own file (an arena of the NHL's real venue from its own two) and no other, and held for the drawing: what `planDistrict`, `drawDistrict` and `mountDistrictTurn` of the lean district read. Await it before the
|
|
43
43
|
* first call and again when the venues change; a venue whose records are held is not read twice.
|
|
44
44
|
* @example
|
|
45
45
|
* ```ts
|
package/dist/venue-data.js
CHANGED
|
@@ -9,6 +9,8 @@ import { registerParks } from "./parks.core.js";
|
|
|
9
9
|
import { PARK_INDEX } from "./parks.index.js";
|
|
10
10
|
import { KODOKAN_NAME } from "./kodokan.js";
|
|
11
11
|
import { STADIUMS, stadiumKind } from "./stadiums.js";
|
|
12
|
+
import { VENUE_INDEX } from "./venues.index.js";
|
|
13
|
+
import { loadVenue } from "./venues.js";
|
|
12
14
|
/** The files read, by kind and key, each once: asking again gives the same promise, and one that failed (the network) is asked for again next time. */
|
|
13
15
|
const kept = new Map();
|
|
14
16
|
function read(kind, index, id, keep) {
|
|
@@ -75,7 +77,7 @@ export function venueDataKeysFor(venues) {
|
|
|
75
77
|
return keys;
|
|
76
78
|
}
|
|
77
79
|
/**
|
|
78
|
-
* The records of the venues a page is about to draw, each read from its own file and no other, and held for the drawing: what `planDistrict`, `drawDistrict` and `mountDistrictTurn` of the lean district read. Await it before the
|
|
80
|
+
* The records of the venues a page is about to draw, each read from its own file (an arena of the NHL's real venue from its own two) and no other, and held for the drawing: what `planDistrict`, `drawDistrict` and `mountDistrictTurn` of the lean district read. Await it before the
|
|
79
81
|
* first call and again when the venues change; a venue whose records are held is not read twice.
|
|
80
82
|
* @example
|
|
81
83
|
* ```ts
|
|
@@ -88,7 +90,8 @@ export function venueDataKeysFor(venues) {
|
|
|
88
90
|
*/
|
|
89
91
|
export async function loadVenueDataFor(venues) {
|
|
90
92
|
const keys = venueDataKeysFor(venues);
|
|
91
|
-
|
|
93
|
+
// An arena of the NHL also has a real venue (its facts and its outline, two files), which the district draws it from.
|
|
94
|
+
await Promise.all([...keys.arenas.map(loadArena), ...keys.arenas.filter((id) => Object.hasOwn(VENUE_INDEX, id)).map(loadVenue), ...keys.parks.map(loadPark), ...keys.grounds.map(loadGround)]);
|
|
92
95
|
}
|
|
93
96
|
const nameIn = (index, id, language) => (id !== undefined && Object.hasOwn(index, id) ? (language === "ja" ? index[id].nameJa : index[id].name) : undefined);
|
|
94
97
|
/**
|
package/dist/venue.js
CHANGED
|
@@ -261,5 +261,7 @@ export function standsVenueOf(stands, crowd, o, v, lift) {
|
|
|
261
261
|
items.push({ id: "roof", kind: "roof", at: centre, height: topOf(planes), planes });
|
|
262
262
|
}
|
|
263
263
|
const r = stands.reach;
|
|
264
|
-
|
|
264
|
+
// Every roof is cut away from above and whole from the street (`Plane.cut`).
|
|
265
|
+
const cutItems = items.map((item) => (item.kind === "roof" ? { ...item, planes: item.planes.map((p) => ({ ...p, cut: true })) } : item));
|
|
266
|
+
return { items: cutItems, defs, reach: Math.max(r.left, r.right, r.top, r.bottom) + 6 };
|
|
265
267
|
}
|
package/dist/venue.real.d.ts
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { type Pt, type RealShell, type StandRing } from "./crowd.ts";
|
|
2
|
-
import { type Plane, type Upright } from "./turn.kit.ts";
|
|
2
|
+
import { type Plane, type Upright, type V3 } from "./turn.kit.ts";
|
|
3
3
|
/** How far a lid rises from its edge towards the middle, and how far a saddle's high ends stand over its low sides, in feet (ours: the sources give a roof's kind, not its height). */
|
|
4
4
|
export declare const LID_RISE = 22;
|
|
5
5
|
export declare const SADDLE_RISE = 30;
|
|
6
|
+
/** How far a barrel vault's crown stands over its springing at the long sides, in feet (ours: the article says the roof looks like a Quonset hut, not how high it rises). */
|
|
7
|
+
export declare const BARREL_RISE = 34;
|
|
6
8
|
/** The saddle's share of its rise at a point (0 at the middle of a side, 1 at the middle of an end): half a saddle's way from one to the other, as a hyperbolic paraboloid (u squared less v squared) lies over the building's box. */
|
|
7
9
|
export declare function saddleAt(real: Pick<RealShell, "footprint">, [x, y]: Pt): number;
|
|
10
|
+
/** The barrel vault's share of its rise at a point (0 at the springing along each long side, 1 over the middle line): a round arch over the building's short axis, the quarter of a circle's rise at each step in from the side. */
|
|
11
|
+
export declare function barrelAt(real: Pick<RealShell, "footprint">, [, y]: Pt): number;
|
|
8
12
|
/** The height of the roof over a point of the building's edge, above the surface, in feet. */
|
|
9
13
|
export declare const roofAt: (real: RealShell, p: Pt) => number;
|
|
14
|
+
/** The height of the wall of a building under canopies at a point of its rim: where a canopy is over it, the canopy's back edge, which the wall carries up to (the outside of Lumen Field's roofs is one curved face to the ground); elsewhere the rim's own height. */
|
|
15
|
+
export declare function wallAt(real: RealShell, p: Pt): number;
|
|
16
|
+
/**
|
|
17
|
+
* A tower that leans and curves: a square shaft of horizontal sections that tapers from a broad foot on the ground to a narrow top, along a curve that runs from the foot to the top (the line the map gives of its funicular), its
|
|
18
|
+
* back curving up from a flatter foot to the inclination the article gives at the top; a plinth where it meets the ground, the dark slits down its sloped back, an observatory of dark and glass bands on its top and, with `cables`,
|
|
19
|
+
* thin lines from the observatory to the roof. Each face of a ring is a trapezoid on a plane through its corners, so that the faces meet along their edges. The foot and the top and their height are the sources'; the curve, the
|
|
20
|
+
* widths, the slits, the plinth and the observatory are ours.
|
|
21
|
+
*/
|
|
22
|
+
export declare function towerPlanes(tower: NonNullable<RealShell["tower"]>, z: number, cables?: V3[]): Plane[];
|
|
10
23
|
/** The point where a ray from `from` first meets a polygon, or `undefined`. */
|
|
11
24
|
export declare function firstHit(poly: readonly Pt[], from: Pt, angle: number): Pt | undefined;
|
|
12
25
|
/** How tall the glazed concourse band over a podium is, in feet (ours). */
|
|
@@ -40,8 +53,39 @@ export declare const SKYLIGHT_WIDTH = 14;
|
|
|
40
53
|
export declare const SKYLIGHT_SHARE = 0.78;
|
|
41
54
|
/** How far a canopy's low edge, the field's side of it, stands under its high edge: the OpenStreetMap roof's `roof:height` is the rise, and the canopy rises to the back of the stands (ours: the sources do not say which way it slopes). */
|
|
42
55
|
export declare const CANOPY_NOTE = "low over the field, high over the back of the stands";
|
|
56
|
+
/** How many strips a canopy is cut into from the field's side to the back, so that a curved roof is a curve (ours: the drawing's pieces are flat). */
|
|
57
|
+
export declare const CANOPY_STRIPS = 3;
|
|
58
|
+
/** From this many rays round the middle on, a canopy is cut by every other one. */
|
|
59
|
+
export declare const CANOPY_FINE = 48;
|
|
60
|
+
/** The share of a canopy's rise at a share of the way from the field's side to the back: a straight slope, or for OpenStreetMap's `roof:shape=round` a convex arc, a quarter of a circle, steep at the field's edge and levelling over the back of the stands. */
|
|
61
|
+
export declare function canopyRiseAt(shape: string | undefined, t: number): number;
|
|
62
|
+
/** How wide the scoreboard on a tower's face is and how tall, as shares of the face, and how far it stands out from it, in feet (ours: the article says the scoreboard is vertical, not how large). */
|
|
63
|
+
export declare const TOWER_BOARD: {
|
|
64
|
+
readonly wide: 0.62;
|
|
65
|
+
readonly tall: 0.46;
|
|
66
|
+
readonly from: 0.55;
|
|
67
|
+
readonly out: 0.4;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* A tower standing apart from the bowl: a box on its outline, four faces and a flat top, that gives way to the eye as a wall does (a tall tower between the eye and the field is cut away, whole from above), with the scoreboard
|
|
71
|
+
* on the face towards the field, a dark panel high on it and divided into its rows of lamps.
|
|
72
|
+
*/
|
|
73
|
+
export declare function endTowerPlanes(tower: NonNullable<RealShell["towers"]>[number], index: number, lift: number, centre: Pt): Plane[];
|
|
43
74
|
/** How many rings of pieces an air-supported roof is drawn in, from the rim in to the crown (ours: the roof is smooth, the drawing is faceted). */
|
|
44
75
|
export declare const DOME_RINGS = 4;
|
|
76
|
+
/** How wide a rail girder is, how thick, how wide a column under it is, and how many columns stand under each rail, in feet (ours: the article says the roof runs on rails on the north and the south side, not what holds them up). */
|
|
77
|
+
export declare const RAIL: {
|
|
78
|
+
readonly wide: 12;
|
|
79
|
+
readonly thick: 16;
|
|
80
|
+
readonly column: 15;
|
|
81
|
+
readonly columns: 4;
|
|
82
|
+
readonly inset: 24;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The rails a retractable ballpark roof runs on, along its north and south sides (the article: 128 wheels on rails there), as two girders at the roof's lowest height, each on a row of columns from the ground, and running
|
|
86
|
+
* on over the strip where the sections rest. The rails run the way the sections park, from the cover's middle to where they rest; a girder lies a little inside each side of the cover.
|
|
87
|
+
*/
|
|
88
|
+
export declare function panelRails(panels: NonNullable<RealShell["panels"]>, c: Pt, lift: number): Plane[];
|
|
45
89
|
/** The pod in the middle of a cable roof's opening, as a share of the opening's size, and how thick it is, in feet (ours: the article says the fabric gathers into a pod above the video board, not how large it is). */
|
|
46
90
|
export declare const POD: {
|
|
47
91
|
readonly share: 0.24;
|