@johnmorrisdotca/dougu-sports 0.9.0 → 0.11.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 +19 -0
- package/NOTICE.md +15 -1
- package/README.md +8 -5
- package/dist/brands/brand.ball.d.ts +29 -0
- package/dist/brands/brand.ball.js +23 -0
- package/dist/brands/brand.data.d.ts +47 -0
- package/dist/brands/brand.data.js +308 -0
- package/dist/brands/brand.letters.d.ts +31 -0
- package/dist/brands/brand.letters.js +88 -0
- package/dist/brands/brand.render.d.ts +47 -0
- package/dist/brands/brand.render.js +106 -0
- package/dist/brands-entry.d.ts +8 -0
- package/dist/brands-entry.js +5 -0
- package/dist/emblems/award/ribbon.d.ts +2 -0
- package/dist/emblems/award/ribbon.js +17 -0
- package/dist/emblems/ball/ball.index.js +2 -2
- package/dist/emblems/ball/ball.soccer.era.d.ts +22 -20
- package/dist/emblems/ball/ball.soccer.era.js +103 -64
- package/dist/emblems/emblem.descriptions.js +11 -10
- package/dist/emblems/emblem.equipment.js +3 -3
- package/dist/emblems/emblem.ids.d.ts +7 -7
- package/dist/emblems/emblem.ids.js +18 -5
- package/dist/emblems/emblem.registry.js +2 -0
- package/dist/emblems/gear/gear.index.js +2 -1
- package/dist/emblems/gear/gear.nets.d.ts +3 -0
- package/dist/emblems/gear/gear.nets.js +103 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -1
|
@@ -2,6 +2,7 @@ import { GEAR_BADMINTON_RACKET } from "./gear.badmintonracket.js";
|
|
|
2
2
|
import { GEAR_BASEBALL_GLOVE } from "./gear.baseballglove.js";
|
|
3
3
|
import { GEAR_CRICKET_BAT } from "./gear.cricketbat.js";
|
|
4
4
|
import { GEAR_BASEBALL_BAT, GEAR_BASKETBALL_HOOP, GEAR_VOLLEYBALL_NET, GEAR_GOALPOSTS, GEAR_WICKET, GEAR_ROUNDNET_SET } from "./gear.field.js";
|
|
5
|
+
import { GEAR_TAKRAW_NET, GEAR_NETBALL_POST, GEAR_TEQBALL_TABLE } from "./gear.nets.js";
|
|
5
6
|
import { GEAR_FIELD_HOCKEY_STICK } from "./gear.fieldhockeystick.js";
|
|
6
7
|
import { GEAR_FOOTBALL_HELMET } from "./gear.footballhelmet.js";
|
|
7
8
|
import { GEAR_GOALIE_MASK } from "./gear.goaliemask.js";
|
|
@@ -21,7 +22,7 @@ import { GEAR_JUDOGI, GEAR_JUDOGI_BLUE, GEAR_JUDOGI_FOLDED, GEAR_JUDOGI_BLUE_FOL
|
|
|
21
22
|
import { GEAR_OBI_STEP_1, GEAR_OBI_STEP_2, GEAR_OBI_STEP_3, GEAR_OBI_STEP_4, GEAR_OBI_STEP_5, GEAR_OBI_STEP_6 } from "./gear.budo.steps.js";
|
|
22
23
|
import { GEAR_YUMI, GEAR_YA } from "./gear.kyudo.js";
|
|
23
24
|
/** Every piece of gear, in the order a gallery shows them. */
|
|
24
|
-
export const GEARS = [GEAR_HOCKEY_STICK, GEAR_GOALIE_STICK, GEAR_HOCKEY_SKATE, GEAR_GOALIE_MASK, GEAR_GOAL_NET, GEAR_FIELD_HOCKEY_STICK, GEAR_LACROSSE_STICK, GEAR_CRICKET_BAT, GEAR_WICKET, GEAR_TABLE_TENNIS_PADDLE, GEAR_BADMINTON_RACKET, GEAR_TENNIS_RACKET, GEAR_SQUASH_RACKET, GEAR_RACQUETBALL_RACKET, GEAR_PADEL_RACKET, GEAR_PICKLEBALL_PADDLE, GEAR_ROUNDNET_SET, GEAR_VOLLEYBALL_NET, GEAR_BASKETBALL_HOOP, GEAR_BASEBALL_BAT, GEAR_BASEBALL_GLOVE, GEAR_FOOTBALL_HELMET, GEAR_GOALPOSTS, GEAR_HURLEY, GEAR_CURLING_BROOM, GEAR_FIGURE_SKATE, GEAR_SPEED_SKATE, GEAR_DIVING_BOARD, GEAR_SWIM_GOGGLES, GEAR_STARTING_BLOCKS, GEAR_RELAY_BATON, GEAR_JAVELIN, GEAR_HURDLES, GEAR_GUNBAI, GEAR_MAWASHI, GEAR_SHINAI, GEAR_KENDO_MEN, GEAR_JUDOGI, GEAR_JUDOGI_BLUE, GEAR_JUDOGI_FOLDED, GEAR_JUDOGI_BLUE_FOLDED, GEAR_JUDOGI_BACK, GEAR_JUDOGI_BLUE_BACK, GEAR_OBI, GEAR_OBI_WHITE, GEAR_OBI_YELLOW, GEAR_OBI_ORANGE, GEAR_OBI_GREEN, GEAR_OBI_BLUE, GEAR_OBI_BROWN, GEAR_OBI_KOHAKU, GEAR_OBI_RED, GEAR_OBI_WOMEN, GEAR_OBI_WHITE_YELLOW, GEAR_OBI_YELLOW_ORANGE, GEAR_OBI_ORANGE_GREEN, GEAR_OBI_GREEN_BLUE, GEAR_OBI_BLUE_BROWN, GEAR_OBI_STEP_1, GEAR_OBI_STEP_2, GEAR_OBI_STEP_3, GEAR_OBI_STEP_4, GEAR_OBI_STEP_5, GEAR_OBI_STEP_6, GEAR_YUMI, GEAR_YA, GEAR_KARATE_GI];
|
|
25
|
+
export const GEARS = [GEAR_HOCKEY_STICK, GEAR_GOALIE_STICK, GEAR_HOCKEY_SKATE, GEAR_GOALIE_MASK, GEAR_GOAL_NET, GEAR_FIELD_HOCKEY_STICK, GEAR_LACROSSE_STICK, GEAR_CRICKET_BAT, GEAR_WICKET, GEAR_TABLE_TENNIS_PADDLE, GEAR_BADMINTON_RACKET, GEAR_TENNIS_RACKET, GEAR_SQUASH_RACKET, GEAR_RACQUETBALL_RACKET, GEAR_PADEL_RACKET, GEAR_PICKLEBALL_PADDLE, GEAR_ROUNDNET_SET, GEAR_TAKRAW_NET, GEAR_NETBALL_POST, GEAR_TEQBALL_TABLE, GEAR_VOLLEYBALL_NET, GEAR_BASKETBALL_HOOP, GEAR_BASEBALL_BAT, GEAR_BASEBALL_GLOVE, GEAR_FOOTBALL_HELMET, GEAR_GOALPOSTS, GEAR_HURLEY, GEAR_CURLING_BROOM, GEAR_FIGURE_SKATE, GEAR_SPEED_SKATE, GEAR_DIVING_BOARD, GEAR_SWIM_GOGGLES, GEAR_STARTING_BLOCKS, GEAR_RELAY_BATON, GEAR_JAVELIN, GEAR_HURDLES, GEAR_GUNBAI, GEAR_MAWASHI, GEAR_SHINAI, GEAR_KENDO_MEN, GEAR_JUDOGI, GEAR_JUDOGI_BLUE, GEAR_JUDOGI_FOLDED, GEAR_JUDOGI_BLUE_FOLDED, GEAR_JUDOGI_BACK, GEAR_JUDOGI_BLUE_BACK, GEAR_OBI, GEAR_OBI_WHITE, GEAR_OBI_YELLOW, GEAR_OBI_ORANGE, GEAR_OBI_GREEN, GEAR_OBI_BLUE, GEAR_OBI_BROWN, GEAR_OBI_KOHAKU, GEAR_OBI_RED, GEAR_OBI_WOMEN, GEAR_OBI_WHITE_YELLOW, GEAR_OBI_YELLOW_ORANGE, GEAR_OBI_ORANGE_GREEN, GEAR_OBI_GREEN_BLUE, GEAR_OBI_BLUE_BROWN, GEAR_OBI_STEP_1, GEAR_OBI_STEP_2, GEAR_OBI_STEP_3, GEAR_OBI_STEP_4, GEAR_OBI_STEP_5, GEAR_OBI_STEP_6, GEAR_YUMI, GEAR_YA, GEAR_KARATE_GI];
|
|
25
26
|
/** The id of every piece of gear: `"gear:hockey-stick"`. */
|
|
26
27
|
export const GEAR_IDS = GEARS.map((g) => g.id);
|
|
27
28
|
const TABLE = new Map(GEARS.map((g) => [g.id, g]));
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const GEAR_TAKRAW_NET: import("./gear.index.ts").Piece<import("./gear.core.ts").GearSpec>;
|
|
2
|
+
export declare const GEAR_NETBALL_POST: import("./gear.index.ts").Piece<import("./gear.core.ts").GearSpec>;
|
|
3
|
+
export declare const GEAR_TEQBALL_TABLE: import("./gear.index.ts").Piece<import("./gear.core.ts").GearSpec>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// The nets and posts of three sports, drawn for this package from their rulebooks' sizes: a sepak takraw net between its two posts, a netball goalpost with its ring and net, and a teqball table with its net.
|
|
2
|
+
// Each is drawn to the scale of its rule where the rule gives a size and the box allows; what is not to scale is said beside each drawing below and the sources are in NOTICE.md (a piece of gear claims no size of its own).
|
|
3
|
+
import { capsule, drawn, ellipse, rect, seg } from "./gear.core.js";
|
|
4
|
+
/** A number rounded for a path. */
|
|
5
|
+
const f = (n) => Math.round(n * 100) / 100;
|
|
6
|
+
// Not to scale: the net is drawn about 1.4 m long between its posts (the rule's minimum is 6.1 m) with a coarser mesh than 0.06-0.08 m, and the posts 0.08 m across (the rule's greatest radius is 0.04 m).
|
|
7
|
+
// Sepak takraw (ISTAF Law of the Game, Regu): the posts are 1.55 m for men, the net 0.70 m deep and at least 6.10 m long, its top 1.52 m at the centre and 1.55 m at the posts. 1.55 m is 52 units, so 1 m is 33.5.
|
|
8
|
+
const TAKRAW_M = 52 / 1.55;
|
|
9
|
+
const TAKRAW_FLOOR = 58.5;
|
|
10
|
+
const TAKRAW_TOP = TAKRAW_FLOOR - 52;
|
|
11
|
+
const TAKRAW_DEEP = 0.7 * TAKRAW_M;
|
|
12
|
+
const TAKRAW_SAG = 0.03 * TAKRAW_M;
|
|
13
|
+
const TAKRAW_LEFT = 9;
|
|
14
|
+
const TAKRAW_RIGHT = 55;
|
|
15
|
+
/** The y of the net's top edge across it: 1.55 m at the posts and 1.52 m at the centre (a parabola). */
|
|
16
|
+
const takrawTop = (x) => {
|
|
17
|
+
const u = (x - 32) / ((TAKRAW_RIGHT - TAKRAW_LEFT) / 2);
|
|
18
|
+
return TAKRAW_TOP + TAKRAW_SAG * (1 - u * u);
|
|
19
|
+
};
|
|
20
|
+
const takrawEdge = (dy) => `M${TAKRAW_LEFT} ${f(TAKRAW_TOP + dy)}Q32 ${f(TAKRAW_TOP + dy + 2 * TAKRAW_SAG)} ${TAKRAW_RIGHT} ${f(TAKRAW_TOP + dy)}`;
|
|
21
|
+
const TAKRAW_MESH = (() => {
|
|
22
|
+
let d = "";
|
|
23
|
+
for (let x = TAKRAW_LEFT + 3; x < TAKRAW_RIGHT - 1; x += 3)
|
|
24
|
+
d += seg(x, f(takrawTop(x) + 1), x, f(takrawTop(x) + TAKRAW_DEEP - 1));
|
|
25
|
+
for (let k = 1; k < 7; k++)
|
|
26
|
+
d += takrawEdge(1 + ((TAKRAW_DEEP - 2) * k) / 7);
|
|
27
|
+
return d;
|
|
28
|
+
})();
|
|
29
|
+
export const GEAR_TAKRAW_NET = /* @__PURE__ */ drawn("gear:takraw-net", "Sepak takraw net", "セパタクローのネット", {
|
|
30
|
+
main: "#f4f1ea",
|
|
31
|
+
accent: "#c8202c",
|
|
32
|
+
parts: [
|
|
33
|
+
{ d: seg(3, TAKRAW_FLOOR + 0.5, 61, TAKRAW_FLOOR + 0.5), stroke: "#8a949f", w: 1.2, line: "none" },
|
|
34
|
+
{ d: TAKRAW_MESH, stroke: "#4a5260", w: 0.6, line: "stroke" },
|
|
35
|
+
{ d: takrawEdge(0.9), stroke: "$main", w: 1.8 },
|
|
36
|
+
{ d: takrawEdge(TAKRAW_DEEP - 0.9), stroke: "$main", w: 1.8 },
|
|
37
|
+
{ d: rect(TAKRAW_LEFT, TAKRAW_TOP, 1.7, f(TAKRAW_DEEP), 0), fill: "$accent", shade: 0.3, line: "none" },
|
|
38
|
+
{ d: rect(TAKRAW_RIGHT - 1.7, TAKRAW_TOP, 1.7, f(TAKRAW_DEEP), 0), fill: "$accent", shade: 0.3, line: "none" },
|
|
39
|
+
{ d: capsule(TAKRAW_LEFT - 1.3, TAKRAW_FLOOR, TAKRAW_LEFT - 1.3, TAKRAW_TOP, 2.7), fill: "#9aa3ae", shade: 0.6, cyl: 0.8 },
|
|
40
|
+
{ d: capsule(TAKRAW_RIGHT + 1.3, TAKRAW_FLOOR, TAKRAW_RIGHT + 1.3, TAKRAW_TOP, 2.7), fill: "#9aa3ae", shade: 0.6, cyl: 0.8 },
|
|
41
|
+
],
|
|
42
|
+
});
|
|
43
|
+
// Not to scale: the pole is drawn 190 mm across (a padded middle pole), the ring's rod wider than 15 mm, the bar a little over 150 mm so that it reaches the ring, and the net 420 mm long (the rule: 380 to 457 mm).
|
|
44
|
+
// Netball (World Netball, Rules of Netball, 2024 edition, Rule 1 Technical specifications, 1.13 and 1.14 goalposts): a pole 3.05 m high and 65 to 100 mm across under padding up to 50 mm thick, a bar of 150 mm from the front edge at the top, a ring of 15 mm rod 380 mm inside, and a net 380 to 457 mm long.
|
|
45
|
+
// 3.05 m is 54 units, so 1 m is 17.7 units.
|
|
46
|
+
const NETBALL_M = 54 / 3.05;
|
|
47
|
+
const NETBALL_FLOOR = 59;
|
|
48
|
+
const NETBALL_TOP = NETBALL_FLOOR - 54;
|
|
49
|
+
const NETBALL_POLE = 25;
|
|
50
|
+
const NETBALL_BAR = 0.15 * NETBALL_M;
|
|
51
|
+
const NETBALL_RING_R = (0.38 / 2) * NETBALL_M;
|
|
52
|
+
const NETBALL_NET = 0.42 * NETBALL_M;
|
|
53
|
+
const ringX = NETBALL_POLE + 1.7 + NETBALL_BAR + NETBALL_RING_R;
|
|
54
|
+
const ringTilt = NETBALL_RING_R * 0.34;
|
|
55
|
+
const NETBALL_MESH = (() => {
|
|
56
|
+
let d = "";
|
|
57
|
+
for (let k = -3; k <= 3; k++) {
|
|
58
|
+
const x1 = ringX + (NETBALL_RING_R * k) / 3.4;
|
|
59
|
+
d += `M${f(x1)} ${f(NETBALL_TOP + 1.5 + ringTilt * Math.sqrt(Math.max(0, 1 - (k / 3.4) ** 2)))}L${f(x1 * 0.97 + ringX * 0.03)} ${f(NETBALL_TOP + 1.5 + NETBALL_NET)}`;
|
|
60
|
+
}
|
|
61
|
+
for (let r = 1; r < 4; r++)
|
|
62
|
+
d += `M${f(ringX - NETBALL_RING_R)} ${f(NETBALL_TOP + 1.5 + (NETBALL_NET * r) / 4)}H${f(ringX + NETBALL_RING_R)}`;
|
|
63
|
+
return d;
|
|
64
|
+
})();
|
|
65
|
+
export const GEAR_NETBALL_POST = /* @__PURE__ */ drawn("gear:netball-post", "Netball goalpost", "ネットボールのポスト", {
|
|
66
|
+
main: "#2b6cb5",
|
|
67
|
+
accent: "#d9dde2",
|
|
68
|
+
parts: [
|
|
69
|
+
{ d: seg(8, NETBALL_FLOOR + 0.5, 56, NETBALL_FLOOR + 0.5), stroke: "#8a949f", w: 1.2, line: "none" },
|
|
70
|
+
{ d: rect(NETBALL_POLE - 1.7, NETBALL_TOP, 3.4, NETBALL_FLOOR - NETBALL_TOP, 1.2), fill: "$main", shade: 0.5, cyl: 0.7 },
|
|
71
|
+
{ d: NETBALL_MESH, stroke: "#8f98a3", w: 0.5, line: "stroke" },
|
|
72
|
+
{ d: seg(NETBALL_POLE + 1.7, NETBALL_TOP + 1, NETBALL_POLE + 1.7 + NETBALL_BAR + 0.5, NETBALL_TOP + 1.5), stroke: "#8f98a3", w: 1.1 },
|
|
73
|
+
{ d: ellipse(f(ringX), NETBALL_TOP + 1.5, f(NETBALL_RING_R), f(ringTilt)), stroke: "$accent", w: 1.1, op: 0.95 },
|
|
74
|
+
],
|
|
75
|
+
});
|
|
76
|
+
// Not to scale: the table is seen from the side, so its width is not shown and the net's 20 mm thickness is a line; the legs' places and the surface's thickness are drawn by eye (the rules give none). The length, the heights and the net's 140 mm are to scale.
|
|
77
|
+
// Teqball (FITEQ, The Official Rules and Regulations of Teqball, 2025 edition effective 5 February 2025, 1.1.1-1.1.5 the table and 1.2.1-1.2.3 the net): 3,000 mm long, 900 mm to the top of the net; the playing surface 760 mm from the ground at its highest and 565 mm at its lowest; the net 140 mm above the surface.
|
|
78
|
+
// 3,000 mm is 54 units, so 1 m is 18.
|
|
79
|
+
const TEQ_S = 54 / 3000;
|
|
80
|
+
const TEQ_FLOOR = 42;
|
|
81
|
+
const TEQ_X0 = 5;
|
|
82
|
+
const TEQ_X1 = TEQ_X0 + 3000 * TEQ_S;
|
|
83
|
+
const TEQ_MID = (TEQ_X0 + TEQ_X1) / 2;
|
|
84
|
+
const TEQ_LOW = TEQ_FLOOR - 565 * TEQ_S;
|
|
85
|
+
const TEQ_HIGH = TEQ_FLOOR - 760 * TEQ_S;
|
|
86
|
+
const TEQ_NET_TOP = TEQ_FLOOR - 900 * TEQ_S;
|
|
87
|
+
/** The control point that puts the middle of a quadratic from the low end to the low end at the highest point. */
|
|
88
|
+
const TEQ_CTRL = 2 * TEQ_HIGH - TEQ_LOW;
|
|
89
|
+
/** The surface's thickness, drawn by eye. */
|
|
90
|
+
const TEQ_THICK = 2.4;
|
|
91
|
+
/** The surface's height at a distance t (0 to 1) along its length. */
|
|
92
|
+
const teqAt = (t) => (1 - t) * (1 - t) * TEQ_LOW + 2 * t * (1 - t) * TEQ_CTRL + t * t * TEQ_LOW;
|
|
93
|
+
const teqLeg = (t) => `M${f(TEQ_X0 + 3000 * TEQ_S * t)} ${f(TEQ_FLOOR)}V${f(teqAt(t) + TEQ_THICK - 0.4)}`;
|
|
94
|
+
export const GEAR_TEQBALL_TABLE = /* @__PURE__ */ drawn("gear:teqball-table", "Teqball table", "テックボールのテーブル", {
|
|
95
|
+
main: "#3f7fb5",
|
|
96
|
+
accent: "#e9eef2",
|
|
97
|
+
parts: [
|
|
98
|
+
{ d: seg(3, TEQ_FLOOR + 0.5, 61, TEQ_FLOOR + 0.5), stroke: "#8a949f", w: 1.2, line: "none" },
|
|
99
|
+
{ d: `${teqLeg(0.16)}${teqLeg(0.84)}`, stroke: "#6b7580", w: 2.4, line: "stroke" },
|
|
100
|
+
{ d: `M${f(TEQ_X0)} ${f(TEQ_LOW)}Q${f(TEQ_MID)} ${f(TEQ_CTRL)} ${f(TEQ_X1)} ${f(TEQ_LOW)}V${f(TEQ_LOW + TEQ_THICK)}Q${f(TEQ_MID)} ${f(TEQ_CTRL + TEQ_THICK)} ${f(TEQ_X0)} ${f(TEQ_LOW + TEQ_THICK)}z`, fill: "$main", shade: 0.7 },
|
|
101
|
+
{ d: rect(TEQ_MID - 0.6, TEQ_NET_TOP, 1.2, TEQ_HIGH - TEQ_NET_TOP + 0.4, 0.2), fill: "$accent", shade: 0.2 },
|
|
102
|
+
],
|
|
103
|
+
});
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { EMBLEM_TABLE } from "./emblems/emblem.registry.ts";
|
|
|
6
6
|
export { AWARD_MEDAL } from "./emblems/award/medal.ts";
|
|
7
7
|
export { AWARD_BADGE } from "./emblems/award/badge.ts";
|
|
8
8
|
export { AWARD_CROWN } from "./emblems/award/crown.ts";
|
|
9
|
+
export { AWARD_RIBBON } from "./emblems/award/ribbon.ts";
|
|
9
10
|
export { AWARD_STAR } from "./emblems/award/star.ts";
|
|
10
11
|
export { AWARD_SHIELD } from "./emblems/award/shield.ts";
|
|
11
12
|
export { TROPHY_CUP } from "./emblems/trophy/cup.ts";
|
|
@@ -110,7 +111,7 @@ export { BALL_LACROSSE, BALL_RACQUETBALL, BALL_TABLE_TENNIS, BALL_SHOT } from ".
|
|
|
110
111
|
export { BALL_SOCCER_26, BALL_SOCCER_18, BALL_SOCCER_14, BALL_SOCCER_12, BALL_SOCCER_6, BALL_SOCCER_26_ORANGE, BALL_SOCCER_18_ORANGE, BALL_SOCCER_14_ORANGE, BALL_SOCCER_12_ORANGE, BALL_SOCCER_6_ORANGE, BALL_SOCCER_26_YELLOW, BALL_SOCCER_18_YELLOW, BALL_SOCCER_14_YELLOW, BALL_SOCCER_12_YELLOW, BALL_SOCCER_6_YELLOW } from "./emblems/ball/ball.soccer.panels.ts";
|
|
111
112
|
export { BALL_FUTSAL, BALL_BEACH_SOCCER } from "./emblems/ball/ball.soccer.indoor.ts";
|
|
112
113
|
export { BALL_SOCCER_1870_HAND_STITCHED, BALL_SOCCER_1900_LACED, BALL_SOCCER_1930_18_PANEL, BALL_SOCCER_1950_12_PANEL, BALL_SOCCER_1960_32_PANEL_LEATHER } from "./emblems/ball/ball.soccer.vintage.ts";
|
|
113
|
-
export {
|
|
114
|
+
export { BALL_SOCCER_RETRO_PENTAGONS, BALL_SOCCER_RETRO_LEAVES, BALL_SOCCER_RETRO_ROSETTE, BALL_SOCCER_RETRO_STAR, BALL_SOCCER_RETRO_PINWHEEL, BALL_SOCCER_RETRO_KITES, BALL_SOCCER_14_PANEL_DOUBLE_BORDER, BALL_SOCCER_8_PANEL_PLAIN, BALL_SOCCER_6_PANEL_BANDS, BALL_SOCCER_6_PANEL_DIAMONDS, BALL_SOCCER_20_PANEL_DOTS, BALL_SOCCER_TRAINING_HIGH_VIS } from "./emblems/ball/ball.soccer.era.ts";
|
|
114
115
|
export { BALL_SOCCER_STARS_BLUE, BALL_SOCCER_STARS_RED, BALL_SOCCER_STARS_NIGHT, BALL_SOCCER_HEXAGONS_CYAN, BALL_SOCCER_HEXAGONS_MAGENTA, BALL_SOCCER_HEXAGONS_LIME, BALL_SOCCER_FLAMES_FIRE, BALL_SOCCER_FLAMES_ICE, BALL_SOCCER_FLAMES_TOXIC, BALL_SOCCER_CHEVRONS_RED, BALL_SOCCER_CHEVRONS_GREEN, BALL_SOCCER_CHEVRONS_BLUE, BALL_SOCCER_SWIRL_BLUE, BALL_SOCCER_SWIRL_RED, BALL_SOCCER_SWIRL_TEAL, BALL_SOCCER_METALLIC_GOLD, BALL_SOCCER_METALLIC_SILVER, BALL_SOCCER_METALLIC_COBALT } from "./emblems/ball/ball.soccer.store.ts";
|
|
115
116
|
export { BALL_BASEBALL_LEMON_PEEL, BALL_BASEBALL_RED_BLUE, BALL_BASEBALL_BLACK_RED, BALL_BASEBALL_VINTAGE_LEATHER, BALL_SOFTBALL_11_OPTIC } from "./emblems/ball/ball.baseball.vintage.ts";
|
|
116
117
|
export { BALL_VOLLEYBALL_COLOURS, BALL_VOLLEYBALL_BRAZIL, BALL_VOLLEYBALL_JAPAN, BALL_VOLLEYBALL_CANADA, BALL_VOLLEYBALL_USA, BALL_VOLLEYBALL_ITALY, BALL_VOLLEYBALL_POLAND, BALL_VOLLEYBALL_FRANCE, BALL_VOLLEYBALL_SERBIA, BALL_VOLLEYBALL_NETHERLANDS, BALL_VOLLEYBALL_GERMANY } from "./emblems/ball/ball.volleyball.flag.ts";
|
|
@@ -123,6 +124,7 @@ export { GEAR_BADMINTON_RACKET } from "./emblems/gear/gear.badmintonracket.ts";
|
|
|
123
124
|
export { GEAR_BASEBALL_GLOVE } from "./emblems/gear/gear.baseballglove.ts";
|
|
124
125
|
export { GEAR_CRICKET_BAT } from "./emblems/gear/gear.cricketbat.ts";
|
|
125
126
|
export { GEAR_BASEBALL_BAT, GEAR_BASKETBALL_HOOP, GEAR_VOLLEYBALL_NET, GEAR_GOALPOSTS, GEAR_WICKET, GEAR_ROUNDNET_SET } from "./emblems/gear/gear.field.ts";
|
|
127
|
+
export { GEAR_TAKRAW_NET, GEAR_NETBALL_POST, GEAR_TEQBALL_TABLE } from "./emblems/gear/gear.nets.ts";
|
|
126
128
|
export { GEAR_FIELD_HOCKEY_STICK } from "./emblems/gear/gear.fieldhockeystick.ts";
|
|
127
129
|
export { GEAR_FOOTBALL_HELMET } from "./emblems/gear/gear.footballhelmet.ts";
|
|
128
130
|
export { GEAR_GOALIE_MASK } from "./emblems/gear/gear.goaliemask.ts";
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { EMBLEM_TABLE } from "./emblems/emblem.registry.js";
|
|
|
7
7
|
export { AWARD_MEDAL } from "./emblems/award/medal.js";
|
|
8
8
|
export { AWARD_BADGE } from "./emblems/award/badge.js";
|
|
9
9
|
export { AWARD_CROWN } from "./emblems/award/crown.js";
|
|
10
|
+
export { AWARD_RIBBON } from "./emblems/award/ribbon.js";
|
|
10
11
|
export { AWARD_STAR } from "./emblems/award/star.js";
|
|
11
12
|
export { AWARD_SHIELD } from "./emblems/award/shield.js";
|
|
12
13
|
export { TROPHY_CUP } from "./emblems/trophy/cup.js";
|
|
@@ -110,7 +111,7 @@ export { BALL_LACROSSE, BALL_RACQUETBALL, BALL_TABLE_TENNIS, BALL_SHOT } from ".
|
|
|
110
111
|
export { BALL_SOCCER_26, BALL_SOCCER_18, BALL_SOCCER_14, BALL_SOCCER_12, BALL_SOCCER_6, BALL_SOCCER_26_ORANGE, BALL_SOCCER_18_ORANGE, BALL_SOCCER_14_ORANGE, BALL_SOCCER_12_ORANGE, BALL_SOCCER_6_ORANGE, BALL_SOCCER_26_YELLOW, BALL_SOCCER_18_YELLOW, BALL_SOCCER_14_YELLOW, BALL_SOCCER_12_YELLOW, BALL_SOCCER_6_YELLOW } from "./emblems/ball/ball.soccer.panels.js";
|
|
111
112
|
export { BALL_FUTSAL, BALL_BEACH_SOCCER } from "./emblems/ball/ball.soccer.indoor.js";
|
|
112
113
|
export { BALL_SOCCER_1870_HAND_STITCHED, BALL_SOCCER_1900_LACED, BALL_SOCCER_1930_18_PANEL, BALL_SOCCER_1950_12_PANEL, BALL_SOCCER_1960_32_PANEL_LEATHER } from "./emblems/ball/ball.soccer.vintage.js";
|
|
113
|
-
export {
|
|
114
|
+
export { BALL_SOCCER_RETRO_PENTAGONS, BALL_SOCCER_RETRO_LEAVES, BALL_SOCCER_RETRO_ROSETTE, BALL_SOCCER_RETRO_STAR, BALL_SOCCER_RETRO_PINWHEEL, BALL_SOCCER_RETRO_KITES, BALL_SOCCER_14_PANEL_DOUBLE_BORDER, BALL_SOCCER_8_PANEL_PLAIN, BALL_SOCCER_6_PANEL_BANDS, BALL_SOCCER_6_PANEL_DIAMONDS, BALL_SOCCER_20_PANEL_DOTS, BALL_SOCCER_TRAINING_HIGH_VIS } from "./emblems/ball/ball.soccer.era.js";
|
|
114
115
|
export { BALL_SOCCER_STARS_BLUE, BALL_SOCCER_STARS_RED, BALL_SOCCER_STARS_NIGHT, BALL_SOCCER_HEXAGONS_CYAN, BALL_SOCCER_HEXAGONS_MAGENTA, BALL_SOCCER_HEXAGONS_LIME, BALL_SOCCER_FLAMES_FIRE, BALL_SOCCER_FLAMES_ICE, BALL_SOCCER_FLAMES_TOXIC, BALL_SOCCER_CHEVRONS_RED, BALL_SOCCER_CHEVRONS_GREEN, BALL_SOCCER_CHEVRONS_BLUE, BALL_SOCCER_SWIRL_BLUE, BALL_SOCCER_SWIRL_RED, BALL_SOCCER_SWIRL_TEAL, BALL_SOCCER_METALLIC_GOLD, BALL_SOCCER_METALLIC_SILVER, BALL_SOCCER_METALLIC_COBALT } from "./emblems/ball/ball.soccer.store.js";
|
|
115
116
|
export { BALL_BASEBALL_LEMON_PEEL, BALL_BASEBALL_RED_BLUE, BALL_BASEBALL_BLACK_RED, BALL_BASEBALL_VINTAGE_LEATHER, BALL_SOFTBALL_11_OPTIC } from "./emblems/ball/ball.baseball.vintage.js";
|
|
116
117
|
export { BALL_VOLLEYBALL_COLOURS, BALL_VOLLEYBALL_BRAZIL, BALL_VOLLEYBALL_JAPAN, BALL_VOLLEYBALL_CANADA, BALL_VOLLEYBALL_USA, BALL_VOLLEYBALL_ITALY, BALL_VOLLEYBALL_POLAND, BALL_VOLLEYBALL_FRANCE, BALL_VOLLEYBALL_SERBIA, BALL_VOLLEYBALL_NETHERLANDS, BALL_VOLLEYBALL_GERMANY } from "./emblems/ball/ball.volleyball.flag.js";
|
|
@@ -123,6 +124,7 @@ export { GEAR_BADMINTON_RACKET } from "./emblems/gear/gear.badmintonracket.js";
|
|
|
123
124
|
export { GEAR_BASEBALL_GLOVE } from "./emblems/gear/gear.baseballglove.js";
|
|
124
125
|
export { GEAR_CRICKET_BAT } from "./emblems/gear/gear.cricketbat.js";
|
|
125
126
|
export { GEAR_BASEBALL_BAT, GEAR_BASKETBALL_HOOP, GEAR_VOLLEYBALL_NET, GEAR_GOALPOSTS, GEAR_WICKET, GEAR_ROUNDNET_SET } from "./emblems/gear/gear.field.js";
|
|
127
|
+
export { GEAR_TAKRAW_NET, GEAR_NETBALL_POST, GEAR_TEQBALL_TABLE } from "./emblems/gear/gear.nets.js";
|
|
126
128
|
export { GEAR_FIELD_HOCKEY_STICK } from "./emblems/gear/gear.fieldhockeystick.js";
|
|
127
129
|
export { GEAR_FOOTBALL_HELMET } from "./emblems/gear/gear.footballhelmet.js";
|
|
128
130
|
export { GEAR_GOALIE_MASK } from "./emblems/gear/gear.goaliemask.js";
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.11.0";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.11.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@johnmorrisdotca/dougu-sports",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Dougu Sports 道具, sports emblems as SVG strings: trophies, medals, crests, sport icons, and the ball and gear of every sport, in metal, line or flat colour, with optional 3D turning. Light and dark, accessible, tree-shakeable. Zero dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sports",
|
|
@@ -53,6 +53,11 @@
|
|
|
53
53
|
"import": "./dist/emblems-entry.js",
|
|
54
54
|
"default": "./dist/emblems-entry.js"
|
|
55
55
|
},
|
|
56
|
+
"./brands": {
|
|
57
|
+
"types": "./dist/brands-entry.d.ts",
|
|
58
|
+
"import": "./dist/brands-entry.js",
|
|
59
|
+
"default": "./dist/brands-entry.js"
|
|
60
|
+
},
|
|
56
61
|
"./turn": {
|
|
57
62
|
"types": "./dist/turn-entry.d.ts",
|
|
58
63
|
"import": "./dist/turn-entry.js",
|
|
@@ -122,12 +127,14 @@
|
|
|
122
127
|
"family:readme": "node scripts/family-readme.mjs",
|
|
123
128
|
"dev": "pnpm build && node scripts/dev.ts",
|
|
124
129
|
"gallery": "pnpm build && node scripts/make-gallery.ts",
|
|
130
|
+
"flags": "node scripts/make-flags.mjs",
|
|
125
131
|
"site": "pnpm build && node scripts/site.ts",
|
|
126
132
|
"test:demo": "pnpm site && playwright test",
|
|
127
133
|
"screenshots": "pnpm site && node scripts/screenshots.ts"
|
|
128
134
|
},
|
|
129
135
|
"devDependencies": {
|
|
130
136
|
"@eslint/js": "^9.0.0",
|
|
137
|
+
"@johnmorrisdotca/hata": "1.5.0",
|
|
131
138
|
"@playwright/test": "^1.63.0",
|
|
132
139
|
"@types/node": "^24.0.0",
|
|
133
140
|
"esbuild": "^0.25.0",
|