@johnmorrisdotca/kyogijo-stadiums 0.45.1 → 0.45.3

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.
Files changed (293) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/dist/annotate.d.ts +1 -1
  3. package/dist/annotate.js +1 -1
  4. package/dist/arenas-entry.d.ts +1 -0
  5. package/dist/arenas-entry.js +2 -0
  6. package/dist/athletics/describe.js +1 -1
  7. package/dist/athletics-entry.d.ts +1 -0
  8. package/dist/athletics-entry.js +2 -0
  9. package/dist/atlas-entry.d.ts +1 -0
  10. package/dist/atlas-entry.js +2 -0
  11. package/dist/ballpark.d.ts +1 -1
  12. package/dist/ballpark.js +1 -1
  13. package/dist/budo/describe.js +1 -1
  14. package/dist/budo-entry.d.ts +1 -0
  15. package/dist/budo-entry.js +2 -0
  16. package/dist/canvas-entry.d.ts +1 -0
  17. package/dist/canvas-entry.js +2 -0
  18. package/dist/charts-entry.d.ts +1 -0
  19. package/dist/charts-entry.js +2 -0
  20. package/dist/charts.athletics.js +1 -1
  21. package/dist/charts.baseball.js +1 -1
  22. package/dist/charts.curling.heat.js +1 -1
  23. package/dist/charts.curling.js +1 -1
  24. package/dist/charts.d.ts +1 -1
  25. package/dist/charts.js +1 -1
  26. package/dist/charts.network.js +1 -1
  27. package/dist/charts.pool.js +1 -1
  28. package/dist/charts.skating.js +1 -1
  29. package/dist/charts.soccer.js +1 -1
  30. package/dist/cityctx-entry.d.ts +1 -0
  31. package/dist/cityctx-entry.js +2 -0
  32. package/dist/d3-entry.d.ts +1 -0
  33. package/dist/d3-entry.js +2 -0
  34. package/dist/district-entry.d.ts +2 -0
  35. package/dist/district-entry.js +4 -0
  36. package/dist/district-lean-entry.js +1 -1
  37. package/dist/district.js +1 -1
  38. package/dist/draw.js +1 -1
  39. package/dist/element-entry.d.ts +1 -0
  40. package/dist/element-entry.js +2 -0
  41. package/dist/eras-entry.d.ts +1 -0
  42. package/dist/eras-entry.js +2 -0
  43. package/dist/events.js +1 -1
  44. package/dist/flythrough-entry.d.ts +1 -0
  45. package/dist/flythrough-entry.js +2 -0
  46. package/dist/frames-entry.d.ts +1 -0
  47. package/dist/frames-entry.js +2 -0
  48. package/dist/full.d.ts +1 -0
  49. package/dist/full.js +3 -1
  50. package/dist/geojson-entry.d.ts +1 -0
  51. package/dist/geojson-entry.js +2 -0
  52. package/dist/geometry-entry.d.ts +1 -0
  53. package/dist/geometry-entry.js +2 -0
  54. package/dist/grounds-entry.d.ts +1 -0
  55. package/dist/grounds-entry.js +2 -0
  56. package/dist/heat.js +1 -1
  57. package/dist/heat.zones.d.ts +1 -1
  58. package/dist/heat.zones.js +1 -1
  59. package/dist/index.d.ts +3 -2
  60. package/dist/index.js +3 -1
  61. package/dist/judging-entry.d.ts +1 -0
  62. package/dist/judging-entry.js +2 -0
  63. package/dist/judging.board.js +1 -1
  64. package/dist/judging.draw.js +1 -1
  65. package/dist/judging.js +1 -1
  66. package/dist/judging.text.js +1 -1
  67. package/dist/layers.env.d.ts +1 -1
  68. package/dist/layers.env.js +1 -1
  69. package/dist/layers.js +1 -1
  70. package/dist/layout.js +1 -1
  71. package/dist/layouts-entry.d.ts +1 -0
  72. package/dist/layouts-entry.js +2 -0
  73. package/dist/leagues-entry.d.ts +1 -0
  74. package/dist/leagues-entry.js +2 -0
  75. package/dist/mount-entry.d.ts +1 -0
  76. package/dist/mount-entry.js +2 -0
  77. package/dist/multi-entry.d.ts +1 -0
  78. package/dist/multi-entry.js +2 -0
  79. package/dist/multi.draw.js +1 -1
  80. package/dist/multi.js +1 -1
  81. package/dist/osm-entry.d.ts +1 -0
  82. package/dist/osm-entry.js +2 -0
  83. package/dist/outside.d.ts +2 -1
  84. package/dist/outside.js +7 -6
  85. package/dist/parks-entry.d.ts +1 -0
  86. package/dist/parks-entry.js +2 -0
  87. package/dist/plateau-entry.d.ts +1 -0
  88. package/dist/plateau-entry.js +2 -0
  89. package/dist/plot-entry.d.ts +1 -0
  90. package/dist/plot-entry.js +2 -0
  91. package/dist/png-entry.d.ts +1 -0
  92. package/dist/png-entry.js +2 -0
  93. package/dist/pool.replay.js +1 -1
  94. package/dist/pool.words.js +1 -1
  95. package/dist/quality.d.ts +20 -2
  96. package/dist/quality.js +25 -4
  97. package/dist/ranges.js +1 -1
  98. package/dist/react-entry.d.ts +1 -0
  99. package/dist/react-entry.js +2 -0
  100. package/dist/replay-entry.d.ts +1 -0
  101. package/dist/replay-entry.js +2 -0
  102. package/dist/replay.d.ts +1 -1
  103. package/dist/replay.dom.js +1 -1
  104. package/dist/replay.js +1 -1
  105. package/dist/rules.js +1 -1
  106. package/dist/scene-entry.d.ts +1 -0
  107. package/dist/scene-entry.js +2 -0
  108. package/dist/situation.draw.js +1 -1
  109. package/dist/situation.js +1 -1
  110. package/dist/skating/describe.js +1 -1
  111. package/dist/skating-entry.d.ts +1 -0
  112. package/dist/skating-entry.js +2 -0
  113. package/dist/stadiums-entry.d.ts +1 -0
  114. package/dist/stadiums-entry.js +2 -0
  115. package/dist/strings.core.d.ts +1104 -0
  116. package/dist/strings.core.js +55 -0
  117. package/dist/strings.d.ts +4 -1084
  118. package/dist/strings.en.d.ts +2 -0
  119. package/dist/strings.en.js +537 -0
  120. package/dist/strings.ja.d.ts +2 -0
  121. package/dist/strings.ja.js +562 -0
  122. package/dist/strings.js +5 -1100
  123. package/dist/surfaces/venue.js +1 -1
  124. package/dist/target.js +1 -1
  125. package/dist/team.common.js +1 -1
  126. package/dist/team.formation.js +1 -1
  127. package/dist/team.lineup.js +1 -1
  128. package/dist/team.motion.js +1 -1
  129. package/dist/team.network.js +1 -1
  130. package/dist/team.shape.js +1 -1
  131. package/dist/turn-entry.d.ts +1 -0
  132. package/dist/turn-entry.js +2 -0
  133. package/dist/turn.camera.d.ts +5 -0
  134. package/dist/turn.camera.js +8 -0
  135. package/dist/turn.dom.js +55 -5
  136. package/dist/turn.model.d.ts +1 -1
  137. package/dist/turn.model.js +1 -1
  138. package/dist/uprights.js +1 -1
  139. package/dist/venue-data-entry.d.ts +2 -0
  140. package/dist/venue-data-entry.js +5 -1
  141. package/dist/venue-data.d.ts +1 -1
  142. package/dist/venue-data.js +5 -2
  143. package/dist/venues/amerant-bank-arena.data.d.ts +2 -0
  144. package/dist/venues/amerant-bank-arena.data.js +9 -0
  145. package/dist/venues/amerant-bank-arena.osm.data.d.ts +2 -0
  146. package/dist/venues/amerant-bank-arena.osm.data.js +47 -0
  147. package/dist/venues/american-airlines-center.data.d.ts +2 -0
  148. package/dist/venues/american-airlines-center.data.js +9 -0
  149. package/dist/venues/american-airlines-center.osm.data.d.ts +2 -0
  150. package/dist/venues/american-airlines-center.osm.data.js +57 -0
  151. package/dist/venues/ball-arena.data.d.ts +2 -0
  152. package/dist/venues/ball-arena.data.js +9 -0
  153. package/dist/venues/ball-arena.osm.data.d.ts +2 -0
  154. package/dist/venues/ball-arena.osm.data.js +63 -0
  155. package/dist/venues/bell-centre.data.d.ts +2 -0
  156. package/dist/venues/bell-centre.data.js +9 -0
  157. package/dist/venues/bell-centre.osm.data.d.ts +2 -0
  158. package/dist/venues/bell-centre.osm.data.js +24 -0
  159. package/dist/venues/benchmark-international-arena.data.d.ts +2 -0
  160. package/dist/venues/benchmark-international-arena.data.js +9 -0
  161. package/dist/venues/benchmark-international-arena.osm.data.d.ts +2 -0
  162. package/dist/venues/benchmark-international-arena.osm.data.js +57 -0
  163. package/dist/venues/bridgestone-arena.data.d.ts +2 -0
  164. package/dist/venues/bridgestone-arena.data.js +9 -0
  165. package/dist/venues/bridgestone-arena.osm.data.d.ts +2 -0
  166. package/dist/venues/bridgestone-arena.osm.data.js +43 -0
  167. package/dist/venues/canada-life-centre.data.d.ts +2 -0
  168. package/dist/venues/canada-life-centre.data.js +9 -0
  169. package/dist/venues/canada-life-centre.osm.data.d.ts +2 -0
  170. package/dist/venues/canada-life-centre.osm.data.js +35 -0
  171. package/dist/venues/canadian-tire-centre.data.d.ts +2 -0
  172. package/dist/venues/canadian-tire-centre.data.js +9 -0
  173. package/dist/venues/canadian-tire-centre.osm.data.d.ts +2 -0
  174. package/dist/venues/canadian-tire-centre.osm.data.js +45 -0
  175. package/dist/venues/capital-one-arena.data.d.ts +2 -0
  176. package/dist/venues/capital-one-arena.data.js +9 -0
  177. package/dist/venues/capital-one-arena.osm.data.d.ts +2 -0
  178. package/dist/venues/capital-one-arena.osm.data.js +22 -0
  179. package/dist/venues/climate-pledge-arena.data.d.ts +2 -0
  180. package/dist/venues/climate-pledge-arena.data.js +9 -0
  181. package/dist/venues/climate-pledge-arena.osm.data.d.ts +2 -0
  182. package/dist/venues/climate-pledge-arena.osm.data.js +32 -0
  183. package/dist/venues/crypto-com-arena.data.d.ts +2 -0
  184. package/dist/venues/crypto-com-arena.data.js +9 -0
  185. package/dist/venues/crypto-com-arena.osm.data.d.ts +2 -0
  186. package/dist/venues/crypto-com-arena.osm.data.js +64 -0
  187. package/dist/venues/delta-center.data.d.ts +2 -0
  188. package/dist/venues/delta-center.data.js +9 -0
  189. package/dist/venues/delta-center.osm.data.d.ts +2 -0
  190. package/dist/venues/delta-center.osm.data.js +40 -0
  191. package/dist/venues/enterprise-center.data.d.ts +2 -0
  192. package/dist/venues/enterprise-center.data.js +9 -0
  193. package/dist/venues/enterprise-center.osm.data.d.ts +2 -0
  194. package/dist/venues/enterprise-center.osm.data.js +35 -0
  195. package/dist/venues/grand-casino-arena.data.d.ts +2 -0
  196. package/dist/venues/grand-casino-arena.data.js +9 -0
  197. package/dist/venues/grand-casino-arena.osm.data.d.ts +2 -0
  198. package/dist/venues/grand-casino-arena.osm.data.js +37 -0
  199. package/dist/venues/honda-center.data.d.ts +2 -0
  200. package/dist/venues/honda-center.data.js +9 -0
  201. package/dist/venues/honda-center.osm.data.d.ts +2 -0
  202. package/dist/venues/honda-center.osm.data.js +46 -0
  203. package/dist/venues/keybank-center.data.d.ts +2 -0
  204. package/dist/venues/keybank-center.data.js +9 -0
  205. package/dist/venues/keybank-center.osm.data.d.ts +2 -0
  206. package/dist/venues/keybank-center.osm.data.js +34 -0
  207. package/dist/venues/lenovo-center.data.d.ts +2 -0
  208. package/dist/venues/lenovo-center.data.js +9 -0
  209. package/dist/venues/lenovo-center.osm.data.d.ts +2 -0
  210. package/dist/venues/lenovo-center.osm.data.js +51 -0
  211. package/dist/venues/little-caesars-arena.data.d.ts +2 -0
  212. package/dist/venues/little-caesars-arena.data.js +9 -0
  213. package/dist/venues/little-caesars-arena.osm.data.d.ts +2 -0
  214. package/dist/venues/little-caesars-arena.osm.data.js +64 -0
  215. package/dist/venues/madison-square-garden.data.d.ts +2 -0
  216. package/dist/venues/madison-square-garden.data.js +9 -0
  217. package/dist/venues/madison-square-garden.osm.data.d.ts +2 -0
  218. package/dist/venues/madison-square-garden.osm.data.js +47 -0
  219. package/dist/venues/nationwide-arena.data.d.ts +2 -0
  220. package/dist/venues/nationwide-arena.data.js +9 -0
  221. package/dist/venues/nationwide-arena.osm.data.d.ts +2 -0
  222. package/dist/venues/nationwide-arena.osm.data.js +50 -0
  223. package/dist/venues/ppg-paints-arena.data.d.ts +2 -0
  224. package/dist/venues/ppg-paints-arena.data.js +9 -0
  225. package/dist/venues/ppg-paints-arena.osm.data.d.ts +2 -0
  226. package/dist/venues/ppg-paints-arena.osm.data.js +31 -0
  227. package/dist/venues/prudential-center.data.d.ts +2 -0
  228. package/dist/venues/prudential-center.data.js +9 -0
  229. package/dist/venues/prudential-center.osm.data.d.ts +2 -0
  230. package/dist/venues/prudential-center.osm.data.js +41 -0
  231. package/dist/venues/rogers-arena.data.d.ts +2 -0
  232. package/dist/venues/rogers-arena.data.js +10 -0
  233. package/dist/venues/rogers-arena.osm.data.d.ts +2 -0
  234. package/dist/venues/rogers-arena.osm.data.js +27 -0
  235. package/dist/venues/rogers-place.data.d.ts +2 -0
  236. package/dist/venues/rogers-place.data.js +9 -0
  237. package/dist/venues/rogers-place.osm.data.d.ts +2 -0
  238. package/dist/venues/rogers-place.osm.data.js +40 -0
  239. package/dist/venues/sap-center.data.d.ts +2 -0
  240. package/dist/venues/sap-center.data.js +9 -0
  241. package/dist/venues/sap-center.osm.data.d.ts +2 -0
  242. package/dist/venues/sap-center.osm.data.js +54 -0
  243. package/dist/venues/scotiabank-arena.data.d.ts +2 -0
  244. package/dist/venues/scotiabank-arena.data.js +9 -0
  245. package/dist/venues/scotiabank-arena.osm.data.d.ts +2 -0
  246. package/dist/venues/scotiabank-arena.osm.data.js +45 -0
  247. package/dist/venues/scotiabank-saddledome.data.d.ts +2 -0
  248. package/dist/venues/scotiabank-saddledome.data.js +9 -0
  249. package/dist/venues/scotiabank-saddledome.osm.data.d.ts +2 -0
  250. package/dist/venues/scotiabank-saddledome.osm.data.js +46 -0
  251. package/dist/venues/t-mobile-arena.data.d.ts +2 -0
  252. package/dist/venues/t-mobile-arena.data.js +9 -0
  253. package/dist/venues/t-mobile-arena.osm.data.d.ts +2 -0
  254. package/dist/venues/t-mobile-arena.osm.data.js +50 -0
  255. package/dist/venues/td-garden.data.d.ts +2 -0
  256. package/dist/venues/td-garden.data.js +9 -0
  257. package/dist/venues/td-garden.osm.data.d.ts +2 -0
  258. package/dist/venues/td-garden.osm.data.js +24 -0
  259. package/dist/venues/ubs-arena.data.d.ts +2 -0
  260. package/dist/venues/ubs-arena.data.js +9 -0
  261. package/dist/venues/ubs-arena.osm.data.d.ts +2 -0
  262. package/dist/venues/ubs-arena.osm.data.js +33 -0
  263. package/dist/venues/united-center.data.d.ts +2 -0
  264. package/dist/venues/united-center.data.js +9 -0
  265. package/dist/venues/united-center.osm.data.d.ts +2 -0
  266. package/dist/venues/united-center.osm.data.js +56 -0
  267. package/dist/venues/xfinity-mobile-arena.data.d.ts +2 -0
  268. package/dist/venues/xfinity-mobile-arena.data.js +9 -0
  269. package/dist/venues/xfinity-mobile-arena.osm.data.d.ts +2 -0
  270. package/dist/venues/xfinity-mobile-arena.osm.data.js +47 -0
  271. package/dist/venues-entry.d.ts +1 -0
  272. package/dist/venues-entry.js +2 -0
  273. package/dist/venues.all.d.ts +1 -0
  274. package/dist/venues.all.js +6 -0
  275. package/dist/venues.d.ts +16 -4
  276. package/dist/venues.index.d.ts +8 -0
  277. package/dist/venues.index.js +34 -0
  278. package/dist/venues.js +45 -8
  279. package/dist/venues.osm.data.d.ts +0 -2
  280. package/dist/venues.osm.data.js +0 -2
  281. package/dist/version.d.ts +1 -1
  282. package/dist/version.js +1 -1
  283. package/dist/walk/vancouver.data.d.ts +2 -0
  284. package/dist/walk/vancouver.data.js +1291 -0
  285. package/dist/walk.d.ts +24 -1
  286. package/dist/walk.data.d.ts +2 -2
  287. package/dist/walk.data.js +13 -1293
  288. package/dist/walk.full.d.ts +1 -0
  289. package/dist/walk.full.js +5 -0
  290. package/dist/walk.index.d.ts +7 -0
  291. package/dist/walk.index.js +3 -0
  292. package/dist/walk.js +69 -7
  293. package/package.json +7 -2
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { COLOR_PROPERTIES, SPORTS, crowdStands, describe, drawBadge, drawKyogijo, drawScore, drawSurface, isPortrait, statusLabel, statusText, winnerOf } from "./draw.ts";
3
4
  export { HOME_FIRST, HOME_FIRST_LEAGUES, homeSideFor } from "./homeside.ts";
4
5
  export { inkOn, luminance, rgbOf, safeColour, safePicture } from "./colour.ts";
@@ -35,8 +36,8 @@ export { HEAT_RAMPS, HEAT_RAMP_NAMES } from "./heat.colour.ts";
35
36
  export { ZONE_SETS, ZONE_SET_IDS } from "./heat.zones.ts";
36
37
  export type { Bandwidth, ContourLayer, HeatBase, HeatBins, HeatDatum, HeatLabels, HeatLegend, HeatRamp, HeatRampName, HeatStatistic, HeatmapLayer, HexOrientation, HexbinLayer, LegendLayer, Reducer, StatisticName, ZoneSetId, ZonesLayer } from "./heat.types.ts";
37
38
  export type { ArrowsLayer, Comet, Layer, LayerBase, LayerKind, LayerTeam, LineDatum, LineStyle, LinesLayer, MarkDatum, MarkShape, OutcomeStyle, Paint, PointDatum, PointStyle, PointsLayer, Scale, TableOptions, TextDatum, TextLayer, TextStyle } from "./layers.types.ts";
38
- export { KYOGIJO_STRINGS } from "./strings.ts";
39
- export type { KyogijoWords } from "./strings.ts";
39
+ export { KYOGIJO_STRINGS } from "./strings.core.ts";
40
+ export type { KyogijoWords } from "./strings.core.ts";
40
41
  export { KYOGIJO_COURTS_STYLE } from "./courts.style.ts";
41
42
  export { HARDWOOD_SMALL, KYOGIJO_HARDWOOD_STYLE } from "./hardwood.ts";
42
43
  export { KYOGIJO_CROWD_STYLE } from "./crowd.draw.ts";
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  // Kyogijo Stadiums 競技場: sports surfaces as SVG, drawn to scale, with the teams and the score on them.
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 { COLOR_PROPERTIES, SPORTS, crowdStands, describe, drawBadge, drawKyogijo, drawScore, drawSurface, isPortrait, statusLabel, statusText, winnerOf } from "./draw.js";
4
6
  export { HOME_FIRST, HOME_FIRST_LEAGUES, homeSideFor } from "./homeside.js";
5
7
  export { inkOn, luminance, rgbOf, safeColour, safePicture } from "./colour.js";
@@ -22,7 +24,7 @@ export { dojo, drawDojo } from "./budo/dojo.api.js";
22
24
  export { rampColour } from "./layers.marks.js";
23
25
  export { HEAT_RAMPS, HEAT_RAMP_NAMES } from "./heat.colour.js";
24
26
  export { ZONE_SETS, ZONE_SET_IDS } from "./heat.zones.js";
25
- export { KYOGIJO_STRINGS } from "./strings.js";
27
+ export { KYOGIJO_STRINGS } from "./strings.core.js";
26
28
  export { KYOGIJO_COURTS_STYLE } from "./courts.style.js";
27
29
  export { HARDWOOD_SMALL, KYOGIJO_HARDWOOD_STYLE } from "./hardwood.js";
28
30
  export { KYOGIJO_CROWD_STYLE } from "./crowd.draw.js";
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { judgingBoard, boardFoot, BOARD_BASE } from "./judging.board.ts";
3
4
  export { JUDGING_PAPER, judgingPrint, judgingPrintSheets, judgingPrintStyle } from "./judging.print.ts";
4
5
  export type { JudgingPrintOptions } from "./judging.print.ts";
@@ -1,5 +1,7 @@
1
1
  // A judging assignment: the officials of each mat area of a judo tournament, by seat, with their names and IDs, in the seat where they fit and in a chart where they do not; in 2D and in 3D.
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 { judgingBoard, boardFoot, BOARD_BASE } from "./judging.board.js";
4
6
  export { JUDGING_PAPER, judgingPrint, judgingPrintSheets, judgingPrintStyle } from "./judging.print.js";
5
7
  export { KYOGIJO_JUDGING_BROADCAST_STYLE, mountJudgingBroadcast } from "./judging.mount.js";
@@ -10,7 +10,7 @@ import { judgingSetting } from "./judging.js";
10
10
  import { KYOGIJO_JUDGING_BOARD_STYLE, KYOGIJO_JUDGING_STYLE } from "./judging.style.js";
11
11
  import { judgingText } from "./judging.text.js";
12
12
  import { JUDGING_WORDS } from "./judging.words.js";
13
- import { fill } from "./strings.js";
13
+ import { fill } from "./strings.core.js";
14
14
  import { metaMarkup, safeClass } from "./common.js";
15
15
  import { LINE_HEIGHT, fitLines, textWidth } from "./text.js";
16
16
  import { VERSION } from "./version.js";
@@ -11,7 +11,7 @@ import { judgingPlan, judgingSetting } from "./judging.js";
11
11
  import { judgingText } from "./judging.text.js";
12
12
  import { KYOGIJO_JUDGING_STYLE } from "./judging.style.js";
13
13
  import { JUDGING_WORDS } from "./judging.words.js";
14
- import { fill } from "./strings.js";
14
+ import { fill } from "./strings.core.js";
15
15
  import { LINE_HEIGHT } from "./text.js";
16
16
  import { VERSION } from "./version.js";
17
17
  /** The rows of one mat's chart, each as tall as its name and ID need, set in a chart `width` wide. */
package/dist/judging.js CHANGED
@@ -3,7 +3,7 @@
3
3
  import { budoPlan } from "./budo/plan.js";
4
4
  import { JUDGING_LEAGUE, JUDGING_MATS_MAX, JUDGING_SEATS, JUDGING_SEAT_WORDS, JUDGING_STYLES } from "./judging.data.js";
5
5
  import { JUDGING_WORDS } from "./judging.words.js";
6
- import { fill } from "./strings.js";
6
+ import { fill } from "./strings.core.js";
7
7
  /** The longest name, ID and mat label that are taken, in characters. */
8
8
  export const JUDGING_LIMITS = Object.freeze({ name: 120, id: 64, label: 40, line: 60 });
9
9
  /** Text made safe to show: control characters become spaces, runs of spaces one, the ends trimmed. */
@@ -1,6 +1,6 @@
1
1
  // What a judging picture says in words: the title and the description of an assignment, each mat with each seat and who is in it. Shared by the plan view, the broadcast view and the 3D view.
2
2
  import { JUDGING_WORDS } from "./judging.words.js";
3
- import { fill } from "./strings.js";
3
+ import { fill } from "./strings.core.js";
4
4
  /** The sentence that names one seat and who sits in it. */
5
5
  function seatSentence(a, setting) {
6
6
  const w = JUDGING_WORDS[setting.language].say;
@@ -2,7 +2,7 @@ import "./frames.providers.ts";
2
2
  import type { P } from "./layers.marks.ts";
3
3
  import type { LayerBase } from "./layers.types.ts";
4
4
  import { type Outline } from "./outline.ts";
5
- import { type KyogijoWords } from "./strings.ts";
5
+ import { type KyogijoWords } from "./strings.core.ts";
6
6
  import type { Box, ScoreOptions, SurfaceOptions } from "./types.ts";
7
7
  import { type Unit } from "./units.ts";
8
8
  export declare const isNum: (value: unknown) => value is number;
@@ -8,7 +8,7 @@ import { zoneResolver } from "./rules.js";
8
8
  import "./frames.providers.js";
9
9
  import { chooseLeague } from "./leagues.js";
10
10
  import { frameSizeOf, outlineOf } from "./outline.js";
11
- import { KYOGIJO_STRINGS } from "./strings.js";
11
+ import { KYOGIJO_STRINGS } from "./strings.core.js";
12
12
  import { FEET_PER, SURFACE_UNITS, isUnit } from "./units.js";
13
13
  export const isNum = (value) => typeof value === "number" && Number.isFinite(value);
14
14
  export const clamp01 = (value) => Math.max(0, Math.min(1, value));
package/dist/layers.js CHANGED
@@ -15,7 +15,7 @@ import { clamp01, envFor, isNum, markAttrs, markTitle, newMade, opacityOf, own,
15
15
  import { safeClass } from "./common.js";
16
16
  import { esc, num } from "./format.js";
17
17
  import { curveBetween, curvePath, headPath, isPolygon, polylinePath, rampColour, shapePath, taperPath, wavePath, } from "./layers.marks.js";
18
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
18
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
19
19
  import { FEET_PER } from "./units.js";
20
20
  /**
21
21
  * How the standard outcomes look. A word that is not here draws as a filled mark; `style.outcomes` of a layer adds words and changes these.
package/dist/layout.js CHANGED
@@ -10,7 +10,7 @@ import { KYOGIJO_GRID_STYLE } from "./layout.style.js";
10
10
  import { KYOGIJO_MARK_STYLE } from "./mark.js";
11
11
  import { isPolygon, shapePath } from "./layers.marks.js";
12
12
  import { elements, parseSvg, textOf, writeSvg } from "./scene.xml.js";
13
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
13
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
14
14
  import { KYOGIJO_BASE_STYLE, KYOGIJO_CURLING_STYLE, KYOGIJO_HEAT_STYLE, KYOGIJO_NOTE_STYLE, KYOGIJO_TEAM_STYLE } from "./style.js";
15
15
  import { textWidth } from "./text.js";
16
16
  import { VERSION } from "./version.js";
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { GRID_MAX_CELLS, GRID_PRESETS, drawGrid } from "./layout.ts";
3
4
  export type { GridCell, GridDrawing, GridLegendItem, GridOptions, GridPreset, GridPresetInfo } from "./layout.ts";
4
5
  export { KYOGIJO_GRID_STYLE } from "./layout.style.ts";
@@ -1,5 +1,7 @@
1
1
  // Layouts: many drawings in one SVG (small multiples with a shared title, subtitle, credit line and key, in a size for a social card or a phone) and the grounds behind a drawing or a grid.
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 { GRID_MAX_CELLS, GRID_PRESETS, drawGrid } from "./layout.js";
4
6
  export { KYOGIJO_GRID_STYLE } from "./layout.style.js";
5
7
  export { BACKGROUND_OPACITY, BACKGROUND_PATTERNS, KYOGIJO_BACKGROUND_STYLE, backgroundMarkup, laidOn, resolveBackground } from "./background.js";
@@ -1,3 +1,4 @@
1
+ import "./strings.ts";
1
2
  export { FAMILY_OF, LEAGUES, VARIANTS, aflOf, chooseLeague, courtOf, cricketOf, diamondOf, fieldHockeyOf, fieldOf, gaelicOf, handballOf, lacrosseOf, rugbyOf, hasHistory, leagueAt, leagueAtOf, leagueById, leagueChanges, leagueFigures, leagueIds, leagueSeason, leagueSize, netOf, rinkOf, sheetOf } from "./leagues.ts";
2
3
  export type { BaseballLeague, BasketballLeague, CourtFigures, CurlingLeague, SheetFigures, BadmintonFigures, BadmintonLeague, FreeZone, FreeZones, NetFigures, NetLeague, NetSport, NetballFigures, NetballLeague, PadelFigures, PadelLeague, PickleballFigures, PickleballLeague, RacquetballFigures, RacquetballLeague, RoundnetFigures, RoundnetLeague, SepakTakrawFigures, SepakTakrawLeague, SquashFigures, SquashLeague, TableTennisFigures, TableTennisLeague, TennisFigures, TennisLeague, TeqballFigures, TeqballLeague, VolleyballFigures, VolleyballLeague, CourtMarks, DiamondFigures, Family, FootballLeague, HockeyLeague, League, LeagueAt, LeagueChange, LeagueSource, LeagueSpan, Named, RinkFigures } from "./leagues.ts";
3
4
  export { MLB_DIAMOND } from "./leagues/baseball.ts";
@@ -1,4 +1,6 @@
1
1
  // The leagues: each variant of a family of surface, with its rulebook's figures, its names and its sources.
2
+ // The words in both languages, as this entry has always carried them (the lean district reads one language when it is asked to).
3
+ import "./strings.js";
2
4
  export { FAMILY_OF, LEAGUES, VARIANTS, aflOf, chooseLeague, courtOf, cricketOf, diamondOf, fieldHockeyOf, fieldOf, gaelicOf, handballOf, lacrosseOf, rugbyOf, hasHistory, leagueAt, leagueAtOf, leagueById, leagueChanges, leagueFigures, leagueIds, leagueSeason, leagueSize, netOf, rinkOf, sheetOf } from "./leagues.js";
3
5
  export { MLB_DIAMOND } from "./leagues/baseball.js";
4
6
  export { NBA_COURT } from "./leagues/basketball.js";
@@ -1,3 +1,4 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { containerAspect, kyogijoElement, mountKyogijo } from "./mount.ts";
3
4
  export type { KyogijoMount, KyogijoReplay, MountSettings } from "./mount.ts";
@@ -1,3 +1,5 @@
1
1
  // Drawing into a container in the browser, with the layout following the container's shape.
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 { containerAspect, kyogijoElement, mountKyogijo } from "./mount.js";
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { drawMulti, multiSetting, multiTable } from "./multi.draw.ts";
3
4
  export { SURROUND_HEIGHT, buildMultiTurn, mountMultiTurn, multiPresets, multiTurnMarkup } from "./multi.turn.ts";
4
5
  export { MULTI_MAX, fitSentence, multiFit, multiLayout, needsSentence, specOf, venueOf } from "./multi.ts";
@@ -2,6 +2,8 @@
2
2
  // officials' chairs, a scoreboard hung over the middle, the boards and the empty places for the event's own words and marks; the real configurations of events as presets, each with its rule; the halls whose
3
3
  // floors are published, and whether a layout fits one; and a real stadium round the floor at the same scale. `multiTable` is the text alternative.
4
4
  import "./full.js";
5
+ // The real venues of the NHL's arenas, as this entry has always had them (the lean district reads the ones it shows).
6
+ import "./venues.all.js";
5
7
  export { drawMulti, multiSetting, multiTable } from "./multi.draw.js";
6
8
  export { SURROUND_HEIGHT, buildMultiTurn, mountMultiTurn, multiPresets, multiTurnMarkup } from "./multi.turn.js";
7
9
  export { MULTI_MAX, fitSentence, multiFit, multiLayout, needsSentence, specOf, venueOf } from "./multi.js";
@@ -12,7 +12,7 @@ import { fitSentence, multiFit, multiLayout, multiNumber, needsSentence, venueOf
12
12
  import { KYOGIJO_MULTI_STYLE } from "./multi.style.js";
13
13
  import { MULTI_WORDS } from "./multi.words.js";
14
14
  import { outlineOf } from "./outline.js";
15
- import { fill } from "./strings.js";
15
+ import { fill } from "./strings.core.js";
16
16
  import { textWidth } from "./text.js";
17
17
  import { uprightsFor } from "./uprights.js";
18
18
  import { hallBoards } from "./venue.boards.js";
package/dist/multi.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // A tournament layout laid out: several of the package's own surfaces on one floor, to scale, where each stands and what it leaves free; the floor the layout needs; and whether it fits a hall's floor. The
2
2
  // figures are in multi.data.ts (a rulebook's, with its source); this file only adds them up. Nothing here draws SVG (multi.draw.ts does), and every function returns new values.
3
3
  import { inOctagon } from "./budo/plan.js";
4
- import { fill } from "./strings.js";
4
+ import { fill } from "./strings.core.js";
5
5
  import { FEET_PER_METRE } from "./geometry.js";
6
6
  import { IJF_CONTEST, WKF_KUMITE } from "./leagues/budo.js";
7
7
  import { MULTI_PRESETS, MULTI_VENUES, multiPreset, multiVenueById } from "./multi.data.js";
@@ -1,2 +1,3 @@
1
+ import "./strings.ts";
1
2
  export { OSM_AREAS, OSM_ATTRIBUTION, VANCOUVER_CENTRE } from "./osm.context.data.ts";
2
3
  export type { ContextArea } from "./context.ts";
package/dist/osm-entry.js CHANGED
@@ -1,2 +1,4 @@
1
1
  // The buildings and streets round a district, from OpenStreetMap (ODbL 1.0), as data a district takes in its `context` option: downtown Vancouver's, round BC Place and Rogers Arena, with the credit that goes with a drawing made from it.
2
+ // The words in both languages, as this entry has always carried them (the lean district reads one language when it is asked to).
3
+ import "./strings.js";
2
4
  export { OSM_AREAS, OSM_ATTRIBUTION, VANCOUVER_CENTRE } from "./osm.context.data.js";
package/dist/outside.d.ts CHANGED
@@ -28,7 +28,8 @@ export declare const hasOutside: (plan: Pick<DistrictPlan, "members">) => boolea
28
28
  export declare const OUTSIDE_VENUES: readonly string[];
29
29
  /**
30
30
  * The crowd outside a plan's venues, in the plan's frame: the people of every venue of the plan that stands on a mask (each with its seats as the plan has them), worked out once and kept. `undefined` where no venue of the plan
31
- * has a mask. The crowd is the same list whatever level is shown: `outsideCount` says how many of its first people stand at a level.
31
+ * has a mask. The crowd is the same list whatever level is shown: `outsideCount` says how many of its first people stand at a level. The district entry holds the data of every mask; the lean district holds a mask's data only after
32
+ * `loadOutside(venues)` has read it, and throws, saying so, where it is asked for a crowd before.
32
33
  * @example
33
34
  * ```ts
34
35
  * import { planDistrict } from "@johnmorrisdotca/kyogijo-stadiums/district";
package/dist/outside.js CHANGED
@@ -5,8 +5,8 @@
5
5
  import { districtRing, turnBy } from "./district.js";
6
6
  import { FEET_PER_METRE } from "./geometry.js";
7
7
  import { metresFrom } from "./venues.geo.js";
8
- import { WALK_DATA } from "./walk.data.js";
9
- import { WALK_IDS, walkIdFor, walkMask } from "./walk.js";
8
+ import { WALK_INDEX } from "./walk.index.js";
9
+ import { WALK_IDS, walkDataOf, walkIdFor, walkMask } from "./walk.js";
10
10
  import { OUTSIDE_LEVELS, outsideCount } from "./outside.paint.js";
11
11
  export { OUTSIDE_LEVELS, outsideCount };
12
12
  /** The most people to a square metre of walkable ground in the list at 100 percent: a crowd standing close, short of a crush. */
@@ -166,11 +166,12 @@ export const maskIdOf = (plan) => walkIdFor(plan.members.map((m) => m.member.id)
166
166
  /** Whether a plan has a crowd to show: some venue of it stands on a mask. */
167
167
  export const hasOutside = (plan) => maskIdOf(plan) !== undefined;
168
168
  /** The ids of the venues there is a walkable mask round. */
169
- export const OUTSIDE_VENUES = Object.freeze([...new Set(WALK_IDS.flatMap((id) => WALK_DATA[id].venues.map((key) => key.split(":")[0])))]);
169
+ export const OUTSIDE_VENUES = Object.freeze([...new Set(WALK_IDS.flatMap((id) => WALK_INDEX[id].venues.map((key) => key.split(":")[0])))]);
170
170
  const placedCache = new WeakMap();
171
171
  /**
172
172
  * The crowd outside a plan's venues, in the plan's frame: the people of every venue of the plan that stands on a mask (each with its seats as the plan has them), worked out once and kept. `undefined` where no venue of the plan
173
- * has a mask. The crowd is the same list whatever level is shown: `outsideCount` says how many of its first people stand at a level.
173
+ * has a mask. The crowd is the same list whatever level is shown: `outsideCount` says how many of its first people stand at a level. The district entry holds the data of every mask; the lean district holds a mask's data only after
174
+ * `loadOutside(venues)` has read it, and throws, saying so, where it is asked for a crowd before.
174
175
  * @example
175
176
  * ```ts
176
177
  * import { planDistrict } from "@johnmorrisdotca/kyogijo-stadiums/district";
@@ -189,7 +190,7 @@ export function outsideCrowd(plan) {
189
190
  placedCache.set(plan, null);
190
191
  return undefined;
191
192
  }
192
- const data = WALK_DATA[maskId];
193
+ const data = walkDataOf(maskId);
193
194
  const ids = data.venues.map((key) => key.split(":")[0]);
194
195
  const present = ids.map((id) => plan.members.find((m) => m.member.id === id)).filter((m) => m !== undefined);
195
196
  const extras = { buildings: data.venues.map((key) => metresFrom(data.origin, districtRing(key))), apron: 5 };
@@ -216,7 +217,7 @@ export function outsideCrowd(plan) {
216
217
  }
217
218
  /** Whether a point of the plan's frame (feet) is on the mask's walkable ground: the inverse of what `outsideCrowd` does to a person, for a test to hold the crowd to the mask. */
218
219
  export function standsOnWalkable(plan, maskId, [fx, fy]) {
219
- const data = WALK_DATA[maskId];
220
+ const data = walkDataOf(maskId);
220
221
  const [shiftX, shiftY] = metresFrom(plan.origin, [data.origin])[0];
221
222
  const [ux, uy] = turnBy([fx, fy], -plan.turn);
222
223
  const mask = walkMask(maskId, { buildings: data.venues.map((key) => metresFrom(data.origin, districtRing(key))), apron: 5 });
@@ -1,3 +1,4 @@
1
+ import "./strings.ts";
1
2
  export { PARKS, PARK_IDS, fenceFor, parkById, parkByName, parkByWikidata, parkNameIn, parkOfficialName, parkPointsIn, parkQuirksIn, parkSourceUrl, parkUnit, parkWallsIn, parksByName } from "./parks.ts";
2
3
  export { officialName, plainName } from "./names.ts";
3
4
  export type { PlaceAlias, PlaceNameKind } from "./names.ts";
@@ -1,3 +1,5 @@
1
1
  // The ballparks: their fence distances, with the article each was read from.
2
+ // The words in both languages, as this entry has always carried them (the lean district reads one language when it is asked to).
3
+ import "./strings.js";
2
4
  export { PARKS, PARK_IDS, fenceFor, parkById, parkByName, parkByWikidata, parkNameIn, parkOfficialName, parkPointsIn, parkQuirksIn, parkSourceUrl, parkUnit, parkWallsIn, parksByName } from "./parks.js";
3
5
  export { officialName, plainName } from "./names.js";
@@ -1,3 +1,4 @@
1
+ import "./strings.ts";
1
2
  export { PLATEAU_ATTRIBUTION, PLATEAU_AREAS, TOKYO_DOME_CITY } from "./plateau.data.ts";
2
3
  export { CONTEXT_BLOCKS, CONTEXT_LANDMARK, CONTEXT_LANDMARK_REACH, CONTEXT_REACH, CONTEXT_TONES, decodeBuilding } from "./context.ts";
3
4
  export type { ContextArea } from "./context.ts";
@@ -1,3 +1,5 @@
1
1
  // The buildings round a district, from Project PLATEAU (MLIT's 3D city models of Japan), as data a district takes in its `context` option: Tokyo Dome City's, simplified and edited, under PLATEAU's terms, with their credit.
2
+ // The words in both languages, as this entry has always carried them (the lean district reads one language when it is asked to).
3
+ import "./strings.js";
2
4
  export { PLATEAU_ATTRIBUTION, PLATEAU_AREAS, TOKYO_DOME_CITY } from "./plateau.data.js";
3
5
  export { CONTEXT_BLOCKS, CONTEXT_LANDMARK, CONTEXT_LANDMARK_REACH, CONTEXT_REACH, CONTEXT_TONES, decodeBuilding } from "./context.js";
@@ -1,3 +1,4 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { surfaceMark, surfaceScales } from "./plot.ts";
3
4
  export type { PlotContext, PlotDocument, PlotElement, PlotScales, SurfaceMark, SurfaceScales } from "./plot.ts";
@@ -1,3 +1,5 @@
1
1
  // A drawing as a mark for Observable Plot, with Plot not imported.
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 { surfaceMark, surfaceScales } from "./plot.js";
@@ -1,3 +1,4 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { PNG_PEER_MISSING, toPNG } from "./png.ts";
3
4
  export type { PngOptions } from "./png.ts";
package/dist/png-entry.js CHANGED
@@ -1,3 +1,5 @@
1
1
  // A drawing as a PNG in Node, through the optional peer @resvg/resvg-js.
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 { PNG_PEER_MISSING, toPNG } from "./png.js";
@@ -4,7 +4,7 @@
4
4
  // of the marks. Nothing here is a model of swimming: it is the splits the caller has, played back.
5
5
  import { swimPlan } from "./pool.js";
6
6
  import { formatTime } from "./pool.race.js";
7
- import { KYOGIJO_STRINGS } from "./strings.js";
7
+ import { KYOGIJO_STRINGS } from "./strings.core.js";
8
8
  const finite = (value) => Number.isFinite(value);
9
9
  /** The progress of one row over a race of `distance` metres with a split every `every` metres. */
10
10
  export function progressOf(row, distance, every, reaction) {
@@ -3,7 +3,7 @@ import { artisticPlan, divePlan, poloPlan, swimPlan, venueOf } from "./pool.js";
3
3
  import { STATUS_TEXT, formatTime } from "./pool.race.js";
4
4
  import { MEDALS } from "./pool.labels.js";
5
5
  import { WATER_POLO } from "./pool.figures.js";
6
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
6
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
7
7
  const trimmed = (value) => String(Math.round(value * 100) / 100);
8
8
  /** The plan of a pool sport's options. */
9
9
  export function planOf(o) {
package/dist/quality.d.ts CHANGED
@@ -62,11 +62,29 @@ export declare function rasterOf(quality: Quality, tier: QualityTier, dpr: numbe
62
62
  * still (see `rasterOf`). `Infinity` at `high`, by name or in `auto`.
63
63
  */
64
64
  export declare function layerBudget(tier: QualityTier, isHandheld: boolean): number;
65
+ /**
66
+ * The shares a layer is made at, from the smallest to a whole: the share a view needs (`viewShare`) is rounded up to one of these, so that a zoom draws the layers again at most three times from the whole view to the nearest and not at every step.
67
+ */
68
+ export declare const SHARE_LEVELS: readonly number[];
69
+ /** How much finer than the screen shows it a layer is made: the perspective makes what is near the eye larger than the scale of the fit says, by a tenth at most with the lens of a district. */
70
+ export declare const VIEW_MARGIN = 1.25;
71
+ /**
72
+ * The share of its size a layer needs to be as fine as the screen shows it, whatever the device's pixel ratio: a layer holds `share` device pixels for each pixel of the scene (times the ratio) and the screen shows `scale * zoom`
73
+ * of them (times the ratio too, and a little more near the eye), so a share of `scale * zoom * VIEW_MARGIN` is as sharp as the view and no layer needs more. `scale` is the scale that fits the scene in its container (`viewScale`), `zoom` the
74
+ * view's. Rounded up to one of `SHARE_LEVELS`, so a view that is drawn at 0.15 of the scene's size, as a district on a phone is, has layers a quarter as wide and as high, a sixteenth of the pixels. 1 when the view is at least as large as the scene.
75
+ */
76
+ export declare function viewShare(scale: number, zoom: number): number;
77
+ /**
78
+ * The least share the floor is made at, under what the view needs: the floor is one layer, and it holds the thinnest lines of the view (the north arrow, the scale, the grid, the streets and their edges), which a browser draws as a staircase
79
+ * when the layer is made much coarser than it shows (Chromium does; measured on the demo at a ratio of 3). One layer at 0.6 of its size is 24 megabytes on a phone at a ratio of 3, against 67 whole.
80
+ */
81
+ export declare const FLOOR_SHARE = 0.6;
65
82
  /**
66
83
  * The share of its size each layer is made at, from the sizes the layers would have at full size (their boxes in CSS pixels), the share every layer is made at (`rasterOf`), the device's pixel ratio and the layer budget: a layer is
67
- * made at the smaller of the share and the one that holds `budget` device pixels, never under a fifth. The floor comes first, then the planes, as `layoutOf` takes them.
84
+ * made at the smaller of the share and the one that holds `budget` device pixels, and never at more than `ceiling` (what the view needs, `viewShare`), never under a fifth. The floor comes first, then the planes, as `layoutOf` takes them; its
85
+ * ceiling is at least `floorMin`.
68
86
  */
69
- export declare function rasterShares(sizes: readonly (readonly [number, number])[], share: number, dpr: number, budget: number): number[];
87
+ export declare function rasterShares(sizes: readonly (readonly [number, number])[], share: number, dpr: number, budget: number, ceiling?: number, floorMin?: number): number[];
70
88
  /** How the governor judges the frames. Times are in milliseconds. */
71
89
  export interface GovernorTuning {
72
90
  /** The frames in a window it keeps (the oldest are dropped past twice this), and the fewest it judges: a window is also at least `settleMs` long, so a view at 60 frames a second judges 42 frames and one at 6 frames a second judges 8. */
package/dist/quality.js CHANGED
@@ -51,16 +51,37 @@ export function layerBudget(tier, isHandheld) {
51
51
  return Infinity;
52
52
  return { medium: isHandheld ? 2e6 : 4e6, low: isHandheld ? 1e6 : 2e6 }[tier];
53
53
  }
54
+ /**
55
+ * The shares a layer is made at, from the smallest to a whole: the share a view needs (`viewShare`) is rounded up to one of these, so that a zoom draws the layers again at most three times from the whole view to the nearest and not at every step.
56
+ */
57
+ export const SHARE_LEVELS = [0.25, 0.4, 0.6, 1];
58
+ /** How much finer than the screen shows it a layer is made: the perspective makes what is near the eye larger than the scale of the fit says, by a tenth at most with the lens of a district. */
59
+ export const VIEW_MARGIN = 1.25;
60
+ /**
61
+ * The share of its size a layer needs to be as fine as the screen shows it, whatever the device's pixel ratio: a layer holds `share` device pixels for each pixel of the scene (times the ratio) and the screen shows `scale * zoom`
62
+ * of them (times the ratio too, and a little more near the eye), so a share of `scale * zoom * VIEW_MARGIN` is as sharp as the view and no layer needs more. `scale` is the scale that fits the scene in its container (`viewScale`), `zoom` the
63
+ * view's. Rounded up to one of `SHARE_LEVELS`, so a view that is drawn at 0.15 of the scene's size, as a district on a phone is, has layers a quarter as wide and as high, a sixteenth of the pixels. 1 when the view is at least as large as the scene.
64
+ */
65
+ export function viewShare(scale, zoom) {
66
+ const need = scale * zoom * VIEW_MARGIN;
67
+ return SHARE_LEVELS.find((level) => level >= need - 1e-9) ?? 1;
68
+ }
69
+ /**
70
+ * The least share the floor is made at, under what the view needs: the floor is one layer, and it holds the thinnest lines of the view (the north arrow, the scale, the grid, the streets and their edges), which a browser draws as a staircase
71
+ * when the layer is made much coarser than it shows (Chromium does; measured on the demo at a ratio of 3). One layer at 0.6 of its size is 24 megabytes on a phone at a ratio of 3, against 67 whole.
72
+ */
73
+ export const FLOOR_SHARE = 0.6;
54
74
  /**
55
75
  * The share of its size each layer is made at, from the sizes the layers would have at full size (their boxes in CSS pixels), the share every layer is made at (`rasterOf`), the device's pixel ratio and the layer budget: a layer is
56
- * made at the smaller of the share and the one that holds `budget` device pixels, never under a fifth. The floor comes first, then the planes, as `layoutOf` takes them.
76
+ * made at the smaller of the share and the one that holds `budget` device pixels, and never at more than `ceiling` (what the view needs, `viewShare`), never under a fifth. The floor comes first, then the planes, as `layoutOf` takes them; its
77
+ * ceiling is at least `floorMin`.
57
78
  */
58
- export function rasterShares(sizes, share, dpr, budget) {
79
+ export function rasterShares(sizes, share, dpr, budget, ceiling = 1, floorMin = 0) {
59
80
  const ratio = dpr > 0 ? dpr : 1;
60
- return sizes.map(([w, h]) => {
81
+ return sizes.map(([w, h], i) => {
61
82
  const area = w * h * ratio * ratio;
62
83
  const own = area > budget ? Math.sqrt(budget / area) : 1;
63
- return Math.max(0.2, Math.round(Math.min(share, own) * 1000) / 1000);
84
+ return Math.max(0.2, Math.round(Math.min(share, own, i === 0 ? Math.max(ceiling, floorMin) : ceiling) * 1000) / 1000);
64
85
  });
65
86
  }
66
87
  export const GOVERNOR_TUNING = { frames: 24, minFrames: 8, settleMs: 700, warmMs: 600, budgetMs: 21, steadyMs: 18.5, upAfterMs: 5000, maxUpAfterMs: 300000, quietMs: 600, pauseMs: 250 };
package/dist/ranges.js CHANGED
@@ -10,7 +10,7 @@ import { toSurface } from "./frames.js";
10
10
  import "./frames.providers.js";
11
11
  import { parseRange } from "./ranges.names.js";
12
12
  import { frameSizeOf } from "./outline.js";
13
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
13
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
14
14
  import { quarterTurn } from "./surfaces/surface.js";
15
15
  import { convertLength } from "./units.js";
16
16
  const round = (value) => String(Math.round(value * 100) / 100);
@@ -1,3 +1,4 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { createKyogijo, kyogijoHtml, kyogijoProps } from "./react.ts";
3
4
  export type { KyogijoProps, ReactLike } from "./react.ts";
@@ -1,3 +1,5 @@
1
1
  // A helper for React that does not depend on it: props to spread onto a div, and a component made from the React you pass.
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 { createKyogijo, kyogijoHtml, kyogijoProps } from "./react.js";
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { activeEvents, describeEvent, drawFrame, eventsBetween, interpolate, possession, replayClock, replayEvents, replayInfo, replayLayers, replaySnapshot, replaySummary, replayTable, replayTimes, trails } from "./replay.ts";
3
4
  export type { ReplaySnapshot } from "./replay.ts";
4
5
  export { alongPool, distanceAt, progressOf, raceTimeline } from "./pool.replay.ts";
@@ -1,6 +1,8 @@
1
1
  // Replay: tracking data over time on a surface. The frame, the clock and the pure functions between them; the controls and the animation
2
2
  // are in the mount (`mountKyogijo(...).replay(...)`) and in `<kyogijo-field>`.
3
3
  import "./full.js";
4
+ // The real venues of the NHL's arenas, as this entry has always had them (the lean district reads the ones it shows).
5
+ import "./venues.all.js";
4
6
  export { activeEvents, describeEvent, drawFrame, eventsBetween, interpolate, possession, replayClock, replayEvents, replayInfo, replayLayers, replaySnapshot, replaySummary, replayTable, replayTimes, trails } from "./replay.js";
5
7
  export { alongPool, distanceAt, progressOf, raceTimeline } from "./pool.replay.js";
6
8
  export { formatTime, parseTime } from "./pool.race.js";
package/dist/replay.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Layer } from "./layers.types.ts";
2
2
  import type { ActiveEvent, Possession, ReplayEvent, ReplayLook, ReplayObject, ReplayTeam, ReplayTimeline, ReplayTrail } from "./replay.types.ts";
3
- import { type KyogijoWords } from "./strings.ts";
3
+ import { type KyogijoWords } from "./strings.core.ts";
4
4
  import type { Language, ScoreOptions, SurfaceOptions } from "./types.ts";
5
5
  type P = [number, number];
6
6
  /** Seconds as a clock, `0:12` or `1:05:09`. */
@@ -5,7 +5,7 @@ import { num } from "./format.js";
5
5
  import { renderLayers } from "./layers.js";
6
6
  import { REPLAY_SPEEDS, createReplay } from "./replay.control.js";
7
7
  import { describeEvent, drawFrame, replayClock, replayGroups, replaySpoken, replayInfo, replayPlacer, replaySnapshot } from "./replay.js";
8
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
8
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
9
9
  const SVG_NS = "http://www.w3.org/2000/svg";
10
10
  let counter = 0;
11
11
  /** The controls' stylesheet: written once beside the controls, scoped to them, in the page's own colours. */
package/dist/replay.js CHANGED
@@ -7,7 +7,7 @@ import { drawKyogijo, describe } from "./draw.js";
7
7
  import { esc, hash } from "./format.js";
8
8
  import { envFor, place, unitOfLayer } from "./layers.env.js";
9
9
  import { renderLayers } from "./layers.js";
10
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
10
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
11
11
  import { VERSION } from "./version.js";
12
12
  const TEAMS = ["home", "away", "ball", "puck", "official"];
13
13
  const isNum = (value) => typeof value === "number" && Number.isFinite(value);
package/dist/rules.js CHANGED
@@ -24,7 +24,7 @@ import { fenceFor, heldPark, parkWallsIn } from "./parks.core.js";
24
24
  import { PARK_IDS_WITHOUT_WALLS } from "./parks.walls.js";
25
25
  import { frameSizeOf, outlineOf } from "./outline.js";
26
26
  import { soccerSpec } from "./surfaces/soccer-spec.js";
27
- import { KYOGIJO_STRINGS } from "./strings.js";
27
+ import { KYOGIJO_STRINGS } from "./strings.core.js";
28
28
  import { FEET_PER, isUnit } from "./units.js";
29
29
  export { RULE_IDS } from "./rules.types.js";
30
30
  const PICK = ["league", "year", "pitch", "park", "fence", "units", "sheet", "net", "field", "pool", "athletics", "skating"];
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { sceneFromSvg, sceneOf } from "./scene.ts";
3
4
  export { sceneToSvg } from "./scene.flat.ts";
4
5
  export type { FlatOptions } from "./scene.flat.ts";
@@ -1,5 +1,7 @@
1
1
  // A drawing as plain data: the shapes it is painted with, in order, their colours worked out for light or dark; and the SVG that needs no stylesheet.
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 { sceneFromSvg, sceneOf } from "./scene.js";
4
6
  export { sceneToSvg } from "./scene.flat.js";
5
7
  export { pathCommands } from "./scene.path.js";
@@ -5,7 +5,7 @@ import { wideView } from "./annotate.js";
5
5
  import { el, num } from "./format.js";
6
6
  import { DRIVE_CODES, downTag, hockeyPill, yardLineText } from "./situation.js";
7
7
  import { pillWidget, scorebugWidget, shootoutWidget, tagWidget } from "./situation.widgets.js";
8
- import { KYOGIJO_STRINGS } from "./strings.js";
8
+ import { KYOGIJO_STRINGS } from "./strings.core.js";
9
9
  import { roundedRect, textOn } from "./surfaces/surface.js";
10
10
  /** A widget set where the eye wants it, upright however the surface lies. */
11
11
  function put(widget, cx, cy, turned) {
package/dist/situation.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // team attacks, which end, what the words say), so that the drawing (`situation.draw.ts`, `situation.badge.ts`) and the description do not decide it twice. A value that is not what
3
3
  // it should be (a fourth down on the CFL's field, 7 skaters, a clock that is not a time) is left out, as a value from a page's markup is anywhere else; nothing here throws.
4
4
  import { attackingIn } from "./frames.js";
5
- import { KYOGIJO_STRINGS, fill } from "./strings.js";
5
+ import { KYOGIJO_STRINGS, fill } from "./strings.core.js";
6
6
  /** The most rounds of a shootout that are drawn. */
7
7
  export const SHOOTOUT_MAX = 12;
8
8
  /** The rounds that are regular: the rounds after them are sudden death. */
@@ -1,5 +1,5 @@
1
1
  // What a skating drawing says of itself: its sentence about the rink, and what the options mark on it. Cheap (it reads the options, not the plan), so that a title and a description cost nothing.
2
- import { fill, KYOGIJO_STRINGS } from "../strings.js";
2
+ import { fill, KYOGIJO_STRINGS } from "../strings.core.js";
3
3
  import { raceById } from "./events.js";
4
4
  import { furnitureOf, racesOf, skatingLeague } from "./plan.js";
5
5
  import { longOval } from "./track.js";
@@ -1,4 +1,5 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { skatingPairs, skatingGrid, skatingResults, skatingReplay, figureElements, formatTime, distanceSkated } from "./charts.skating.ts";
3
4
  export type { DrawTotals, ElementTotals, FigureElementsOptions, SkatingElement, SkatingEntry, SkatingPair, SkatingRaceOptions, SkatingReplay, SkatingReplayOptions, SkatingResult, SkatingResultsTotals, SkatingRunner, SkatingStarter } from "./charts.skating.ts";
4
5
  export { ELEMENT_KINDS, ELEMENT_NAMES, LONG_TRACK_RACES, LONG_TRACK_RACE_IDS, RACES, RACE_IDS, SHORT_TRACK_RACES, SHORT_TRACK_RACE_IDS, raceById } from "./skating/events.ts";
@@ -1,6 +1,8 @@
1
1
  // The ice skating rinks: the standard 400 m speed skating track, the short track oval and the figure skating rink, with the plan of each, the track's geometry (a point of a lane, the start of a race, the
2
2
  // lap of the crossing), the races and the elements, and the data: the pairs of a race, the starting positions of a short track race, the results, a replay and the elements of a programme as marks.
3
3
  import "./full.js";
4
+ // The real venues of the NHL's arenas, as this entry has always had them (the lean district reads the ones it shows).
5
+ import "./venues.all.js";
4
6
  export { skatingPairs, skatingGrid, skatingResults, skatingReplay, figureElements, formatTime, distanceSkated } from "./charts.skating.js";
5
7
  export { ELEMENT_KINDS, ELEMENT_NAMES, LONG_TRACK_RACES, LONG_TRACK_RACE_IDS, RACES, RACE_IDS, SHORT_TRACK_RACES, SHORT_TRACK_RACE_IDS, raceById } from "./skating/events.js";
6
8
  export { disciplineOf, furnitureOf, racesOf, skatingLeague, skatingPlan } from "./skating/plan.js";
@@ -1,3 +1,4 @@
1
1
  import "./full.ts";
2
+ import "./venues.all.ts";
2
3
  export { VENUE_ATTRIBUTION, STADIUMS, STADIUM_IDS, groundOfStadium, planPark, planStadium, stadiumBowl, stadiumBowlInside, stadiumById, stadiumByWikidata, stadiumConfigOf, stadiumConfigs, stadiumFrameHeading, stadiumKind, stadiumNames, stadiumOrientation, stadiumSeats } from "./stadiums.ts";
3
4
  export type { ParkPlan, RealStadium, RealStadiumData, StadiumBasis, StadiumConfigData, StadiumConfigId, StadiumKind, StadiumOrientation, StadiumOsm, StadiumPlan, StadiumRoof } from "./stadiums.ts";