@johnmorrisdotca/dougu-sports 0.3.0 → 0.3.1
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 +11 -1
- package/README.md +1 -1
- package/dist/emblems/emblem.core.d.ts +6 -0
- package/dist/emblems/emblem.lathe.d.ts +8 -0
- package/dist/emblems/emblem.lathe.js +8 -4
- package/dist/emblems/gear/gear.skates.js +3 -0
- package/dist/emblems/gear/gear.sumo.js +1 -0
- package/dist/emblems/gear/gear.water.js +2 -0
- package/dist/emblems/sport/artisticswimming.js +1 -0
- package/dist/emblems/sport/athletics.js +1 -0
- package/dist/emblems/sport/diving.js +1 -0
- package/dist/emblems/sport/racquetball.js +1 -0
- package/dist/emblems/sport/sumo.js +1 -0
- package/dist/emblems/trophy/baseball.js +1 -0
- package/dist/emblems/trophy/basketball.js +1 -0
- package/dist/emblems/trophy/bowl.js +1 -0
- package/dist/emblems/trophy/canadian-bowl.js +1 -0
- package/dist/emblems/trophy/cricket-urn.js +1 -0
- package/dist/emblems/trophy/football.js +1 -0
- package/dist/emblems/trophy/globe.js +1 -0
- package/dist/emblems/trophy/hockey-cup.js +2 -0
- package/dist/emblems/trophy/lidded-cup.js +1 -0
- package/dist/emblems/trophy/rugby-cup.js +1 -0
- package/dist/emblems/trophy/salver.js +1 -0
- package/dist/emblems/trophy/soccer-ball.js +1 -0
- package/dist/emblems/trophy/soccer-globe.js +1 -0
- package/dist/emblems/trophy/sumo-cup.js +1 -0
- package/dist/emblems/trophy/tennis-cup.js +1 -0
- package/dist/emblems/trophy/tennis-plate.js +1 -0
- package/dist/turn-control.js +2 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ All notable changes to this project are written here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.3.1] - 2026-10-14
|
|
10
|
+
|
|
11
|
+
Nothing is cut off when an emblem turns: every cup and the pieces that were clipped at rest now draw inside their box at every angle.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **Tall and wide things were cut off by their own box as they turned, and a few were cut off at rest.** Every emblem is drawn in a fixed square box sized for the still drawing, and a turn grows the outline past it: tilted toward the eye by 60 degrees, the rim and the foot of all 16 cups (and the handles of the sumo cup, up to 17.6 of 64 units, a quarter of the picture) went out of the box. Each cup now has a `turnBox`, measured from its drawing over every yaw and tilt, and `emblemFrame`, `bindTurn` and `renderEmblem(id, { turnBox: true })` draw in it, so a turn is one size from the first frame to the last and the resting view of `bindTurn` is the same size too (the cup is drawn up to 30 percent smaller in its square while it can turn). A still drawing keeps its box and its size. Eleven pieces of flat art whose stroke ran past the 64 by 64 box at rest (the swim goggles, three skates, the diving board, the referee's fan, the running track and three pictograms, by up to 3.3 units) have a box that holds them. Balls, medals, crests and the other flat art needed nothing. `test/turnbox.test.ts` measures the ink of every emblem, still and turned, against its box. A frame at no turn is now the still in the box of the turn (`renderEmblem(id, { turnBox: true })`), which is the still itself for everything but those cups.
|
|
16
|
+
|
|
9
17
|
## [0.3.0] - 2026-10-14
|
|
10
18
|
|
|
11
19
|
Nineteen more soccer balls (26, 18, 14, 12 and 6 panels, winter orange and high-visibility yellow, futsal and beach soccer), 186 emblems in all.
|
|
@@ -100,7 +108,9 @@ First preview: the name, the API and two sample emblems. The full set of trophie
|
|
|
100
108
|
- Tests for the drawing, the ids, the turns and the bundle size of one item; a package check that installs the packed tarball and bundles one item from it.
|
|
101
109
|
- The demo (a playground with a turn slider, and a gallery page), `docs/layout.md`, `docs/turning.md`, `docs/gallery.md`, the family header and footer, the CI, Pages and Release workflows, and `LICENSES/` and `NOTICE.md` ready for third-party art.
|
|
102
110
|
|
|
103
|
-
[Unreleased]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.
|
|
111
|
+
[Unreleased]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.3.1...HEAD
|
|
112
|
+
[0.3.1]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.3.0...v0.3.1
|
|
113
|
+
[0.3.0]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.2.1...v0.3.0
|
|
104
114
|
[0.2.1]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.2.0...v0.2.1
|
|
105
115
|
[0.2.0]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.1.0...v0.2.0
|
|
106
116
|
[0.1.0]: https://github.com/johnmorrisdotca/dougu-sports/compare/v0.0.1...v0.1.0
|
package/README.md
CHANGED
|
@@ -217,7 +217,7 @@ console.log(renderEmblem("medal:gold").includes(" color=")); // false
|
|
|
217
217
|
import { ballFrame, emblemFrame } from "@johnmorrisdotca/dougu-sports/turn";
|
|
218
218
|
import { renderEmblem } from "@johnmorrisdotca/dougu-sports/emblems";
|
|
219
219
|
|
|
220
|
-
console.log(emblemFrame("trophy:hockey-cup", { yaw: 0 }) === renderEmblem("trophy:hockey-cup")); // true
|
|
220
|
+
console.log(emblemFrame("trophy:hockey-cup", { yaw: 0 }) === renderEmblem("trophy:hockey-cup", { turnBox: true })); // true
|
|
221
221
|
console.log(emblemFrame("trophy:tennis-cup", { yaw: 90 }) === renderEmblem("trophy:tennis-cup")); // false
|
|
222
222
|
console.log(ballFrame("ball:soccer", { yaw: 90 }) === ballFrame("ball:soccer", { yaw: 450 })); // true
|
|
223
223
|
```
|
|
@@ -44,6 +44,12 @@ export interface EmblemOptions {
|
|
|
44
44
|
numberColor?: string;
|
|
45
45
|
/** Which side of a pennant is drawn at rest: `"front"` (the default) or `"back"`. */
|
|
46
46
|
view?: "front" | "back";
|
|
47
|
+
/**
|
|
48
|
+
* The box the drawing is made in. A turning emblem has two: the box of its still drawing, and a box that holds every turn of it (a cup tilted toward the eye shows its rim and its foot beyond the still drawing's
|
|
49
|
+
* edges). `true` draws in the box of the turn, so that a still drawing and the frames of its turn are one size; `false` draws a turned frame in the box of the still. By default a still drawing (`svg`) is in its own
|
|
50
|
+
* box and every turned frame (`frame`) is in the box of the turn, so nothing is cut off while it turns and the size does not change from one angle to the next.
|
|
51
|
+
*/
|
|
52
|
+
turnBox?: boolean;
|
|
47
53
|
}
|
|
48
54
|
/** A turn, in degrees from the resting view (0 and 0 is the still drawing): `yaw` about the vertical axis, `pitch` the tilt toward the eye. */
|
|
49
55
|
export interface FrameOptions extends EmblemOptions {
|
|
@@ -49,6 +49,14 @@ export interface LatheModel {
|
|
|
49
49
|
tones?: Readonly<Record<string, string>>;
|
|
50
50
|
/** The elevation of the eye in degrees at rest: how much of the top of a rim shows. */
|
|
51
51
|
tilt?: number;
|
|
52
|
+
/** The view box of the still drawing, `x y width height`; "0 0 64 64" unless the still reaches past it (the stroke of a rim at the top edge). */
|
|
53
|
+
box?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The view box of every turned frame. A turn tilts the body toward the eye by up to 60 degrees and away by 40: the rim and the foot swing up and down by the sine of the elevation times their radius, past the
|
|
56
|
+
* 64 by 64 box of the still drawing, and the handles, balls and poles swing out to their full reach. It is the box that holds the drawing at every yaw and pitch, so the drawing does not change size as it turns.
|
|
57
|
+
* `test/turnbox.test.ts` measures every frame against it, and `scripts/turn-boxes.mjs` prints the box a model needs.
|
|
58
|
+
*/
|
|
59
|
+
turnBox?: string;
|
|
52
60
|
solids: readonly Solid[];
|
|
53
61
|
handles?: readonly Handle[];
|
|
54
62
|
balls?: readonly Ball[];
|
|
@@ -414,13 +414,17 @@ const PENTAGONS = [
|
|
|
414
414
|
];
|
|
415
415
|
/** A lathe emblem: the object with its names and its model, the still drawing and the turned one. */
|
|
416
416
|
export function defineLathe(id, en, ja, source, model) {
|
|
417
|
-
const
|
|
417
|
+
const rest = model.box ?? "0 0 64 64";
|
|
418
|
+
const turn = model.turnBox ?? rest;
|
|
419
|
+
// A still drawing is in its own box and a turned frame in the box of the turn, unless the options say otherwise; the box is the same for every angle.
|
|
420
|
+
const make = (o, turned) => {
|
|
418
421
|
const r = resolve(o);
|
|
419
422
|
const yaw = typeof o?.yaw === "number" && Number.isFinite(o.yaw) ? o.yaw % 360 : 0;
|
|
420
423
|
const pitch = typeof o?.pitch === "number" && Number.isFinite(o.pitch) ? Math.max(-40, Math.min(60, o.pitch)) : 0;
|
|
421
424
|
const d = draw(model, r, o, yaw, pitch);
|
|
422
|
-
|
|
425
|
+
const box = (o?.turnBox ?? turned) ? turn : rest;
|
|
426
|
+
return wrap({ title: en, size: r.size, style: r.style, theme: r.theme, defs: d.defs, body: d.body, box, edge: d.edge, width: r.style === "line" ? 2.3 : 0.6 });
|
|
423
427
|
};
|
|
424
|
-
const still = labelled(en, ja, (o) =>
|
|
425
|
-
return { id, en, ja, source, kind: "lathe", model, svg: still, frame: labelled(en, ja,
|
|
428
|
+
const still = labelled(en, ja, (o) => make(o, false));
|
|
429
|
+
return { id, en, ja, source, kind: "lathe", model, svg: still, frame: labelled(en, ja, (o) => make(o, true)) };
|
|
426
430
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Ice skates drawn by us, all facing right: a hockey skate, a figure skate and a speed skate.
|
|
2
2
|
import { capsule, drawn, rect, seg } from "./gear.core.js";
|
|
3
3
|
export const GEAR_HOCKEY_SKATE = /* @__PURE__ */ drawn("gear:hockey-skate", "Hockey skate", "アイスホッケースケート", {
|
|
4
|
+
box: "-0.9 -0.9 65.8 65.8",
|
|
4
5
|
main: "#232a36",
|
|
5
6
|
accent: "#d4202c",
|
|
6
7
|
parts: [
|
|
@@ -14,6 +15,7 @@ export const GEAR_HOCKEY_SKATE = /* @__PURE__ */ drawn("gear:hockey-skate", "Hoc
|
|
|
14
15
|
],
|
|
15
16
|
});
|
|
16
17
|
export const GEAR_FIGURE_SKATE = /* @__PURE__ */ drawn("gear:figure-skate", "Figure skate", "フィギュアスケート靴", {
|
|
18
|
+
box: "-1.4 -1.4 66.8 66.8",
|
|
17
19
|
main: "#f6f2ea",
|
|
18
20
|
accent: "#c8a26a",
|
|
19
21
|
parts: [
|
|
@@ -26,6 +28,7 @@ export const GEAR_FIGURE_SKATE = /* @__PURE__ */ drawn("gear:figure-skate", "Fig
|
|
|
26
28
|
],
|
|
27
29
|
});
|
|
28
30
|
export const GEAR_SPEED_SKATE = /* @__PURE__ */ drawn("gear:speed-skate", "Speed skate", "スピードスケート靴", {
|
|
31
|
+
box: "-1.2 -1.2 66.4 66.4",
|
|
29
32
|
main: "#2a5fb0",
|
|
30
33
|
accent: "#1d1f24",
|
|
31
34
|
parts: [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Sumo gear, drawn for this package: the referee's war fan with its tassel, and the wrestler's belt with its stiff hanging cords.
|
|
2
2
|
import { capsule, circle, drawn, seg } from "./gear.core.js";
|
|
3
3
|
export const GEAR_GUNBAI = /* @__PURE__ */ drawn("gear:gunbai", "Referee's war fan", "軍配", {
|
|
4
|
+
box: "-0.4 0 64.7 64.7",
|
|
4
5
|
main: "#4a2428",
|
|
5
6
|
accent: "#f0dca6",
|
|
6
7
|
parts: [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Swimming and diving gear drawn by us: a diving board over water, and a pair of goggles.
|
|
2
2
|
import { capsule, drawn, ellipse, rect } from "./gear.core.js";
|
|
3
3
|
export const GEAR_DIVING_BOARD = /* @__PURE__ */ drawn("gear:diving-board", "Diving board", "飛び込み板", {
|
|
4
|
+
box: "-1.4 -0.8 66.8 66.8",
|
|
4
5
|
main: "#4b84b8",
|
|
5
6
|
accent: "#8a949f",
|
|
6
7
|
parts: [
|
|
@@ -11,6 +12,7 @@ export const GEAR_DIVING_BOARD = /* @__PURE__ */ drawn("gear:diving-board", "Div
|
|
|
11
12
|
],
|
|
12
13
|
});
|
|
13
14
|
export const GEAR_SWIM_GOGGLES = /* @__PURE__ */ drawn("gear:swim-goggles", "Swim goggles", "水泳のゴーグル", {
|
|
15
|
+
box: "-2.1 -2.1 68.2 68.2",
|
|
14
16
|
main: "#2a7fd0",
|
|
15
17
|
accent: "#1d1f24",
|
|
16
18
|
parts: [
|
|
@@ -4,6 +4,7 @@ import { defineIcon } from "../emblem.shapes.js";
|
|
|
4
4
|
const wave = (y) => `M3 ${y}q7-6 14 0t14 0 14 0 14 0`;
|
|
5
5
|
/** Raised legs. */
|
|
6
6
|
export const SPORT_ARTISTICSWIMMING = /* @__PURE__ */ defineIcon("sport:artisticswimming", "Raised legs", "水面に上げた脚", "ours", {
|
|
7
|
+
box: "-0.3 0 64.6 64.6",
|
|
7
8
|
metal: "flat",
|
|
8
9
|
ink: true,
|
|
9
10
|
front: [
|
|
@@ -4,6 +4,7 @@ import { circlePath as circ, defineIcon } from "../emblem.shapes.js";
|
|
|
4
4
|
const wave = (y) => `M3 ${y}q7-6 14 0t14 0 14 0 14 0`;
|
|
5
5
|
/** Diver. */
|
|
6
6
|
export const SPORT_DIVING = /* @__PURE__ */ defineIcon("sport:diving", "Diver", "飛込の選手", "ours", {
|
|
7
|
+
box: "-0.3 0 64.6 64.6",
|
|
7
8
|
metal: "flat",
|
|
8
9
|
ink: true,
|
|
9
10
|
front: [
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { circlePath as circ, defineIcon } from "../emblem.shapes.js";
|
|
3
3
|
/** Racquetball racket and ball. */
|
|
4
4
|
export const SPORT_RACQUETBALL = /* @__PURE__ */ defineIcon("sport:racquetball", "Racquetball racket", "ラケットボールのラケット", "ours", {
|
|
5
|
+
box: "-0.3 0 64.6 64.6",
|
|
5
6
|
metal: "flat",
|
|
6
7
|
ink: true,
|
|
7
8
|
front: [
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A ring of about thirty gold pennants standing round a silver baseball on a round base. */
|
|
4
4
|
export const TROPHY_BASEBALL = /* @__PURE__ */ defineLathe("trophy:baseball", "Baseball trophy", "野球のトロフィー", "ours", {
|
|
5
5
|
metal: "silver",
|
|
6
|
+
turnBox: "-9.3 -7.3 82.6 82.6",
|
|
6
7
|
tones: { gilt: "#d9a620", pole: "#aab2bc", accent: "#e0b030" },
|
|
7
8
|
solids: [
|
|
8
9
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A gold ball resting over a net and rim, on a tapered column and base. */
|
|
4
4
|
export const TROPHY_BASKETBALL = /* @__PURE__ */ defineLathe("trophy:basketball", "Basketball trophy", "バスケットボールのトロフィー", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-5 0 74 74",
|
|
6
7
|
solids: [
|
|
7
8
|
{
|
|
8
9
|
p: [
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A round bowl on a short foot. */
|
|
4
4
|
export const TROPHY_BOWL = /* @__PURE__ */ defineLathe("trophy:bowl", "Bowl", "ボウル", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-6.7 -9.2 77.4 77.4",
|
|
6
7
|
solids: [{ open: true, p: [[16, 25, 1], [19, 24.8], [30, 15], [38, 7, 1], [38, 4.6, 1], [46, 3.6, 1], [46, 9, 1], [49, 9, 1], [49, 13.4, 1], [54, 13.4, 1]], decor: [["ring", 21]] }],
|
|
7
8
|
plate: { y0: 49.2, y1: 53.8 },
|
|
8
9
|
});
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A wide silver bowl with two handles on a tall tiered base. */
|
|
4
4
|
export const TROPHY_CANADIAN_BOWL = /* @__PURE__ */ defineLathe("trophy:canadian-bowl", "Wide two-handled bowl", "取っ手が二つの広いボウル", "ours", {
|
|
5
5
|
metal: "silver",
|
|
6
|
+
turnBox: "-10.7 -9.6 85.3 85.3",
|
|
6
7
|
tones: { dark: "#2b2f36" },
|
|
7
8
|
solids: [
|
|
8
9
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A small terracotta urn. */
|
|
4
4
|
export const TROPHY_CRICKET_URN = /* @__PURE__ */ defineLathe("trophy:cricket-urn", "Urn", "取っ手付きの壺", "ours", {
|
|
5
5
|
metal: "flat",
|
|
6
|
+
turnBox: "-2.2 0 68.4 68.4",
|
|
6
7
|
color: "#a8442f",
|
|
7
8
|
tones: { wood: "#b98a4f" },
|
|
8
9
|
solids: [
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A silver football standing on end, tilted as if ready for a kick, on a tapered three-sided stand. */
|
|
4
4
|
export const TROPHY_FOOTBALL = /* @__PURE__ */ defineLathe("trophy:football", "Football trophy", "アメフトのトロフィー", "ours", {
|
|
5
5
|
metal: "silver",
|
|
6
|
+
turnBox: "-5.1 0 74.1 74.1",
|
|
6
7
|
solids: [
|
|
7
8
|
{ sides: 3, p: [[28.6, 3.4, 1], [49, 10.2, 1], [49, 12.8, 1], [53.4, 12.8, 1], [53.4, 15, 1], [58.4, 15, 1]] },
|
|
8
9
|
],
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A globe in a stand. */
|
|
4
4
|
export const TROPHY_GLOBE = /* @__PURE__ */ defineLathe("trophy:globe", "Globe on a stand", "台座の上の地球儀", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-5.5 0 74.9 74.9",
|
|
6
7
|
solids: [{ p: [[34, 3.4, 1], [48, 3.4, 1], [48, 8, 1], [51, 8, 1], [51, 13, 1], [55, 13, 1], [55, 15.2, 1], [59, 15.2, 1]] }],
|
|
7
8
|
balls: [{ kind: "globe", cy: 21, r: 15 }],
|
|
8
9
|
plate: { y0: 55.2, y1: 58.8 },
|
|
@@ -4,6 +4,8 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
4
4
|
/** A tall silver cup: a small bowl on a collar over a tall tiered barrel of widening bands. */
|
|
5
5
|
export const TROPHY_HOCKEY_CUP = /* @__PURE__ */ defineLathe("trophy:hockey-cup", "Banded silver cup", "段付きの銀カップ", "ours", {
|
|
6
6
|
metal: "silver",
|
|
7
|
+
box: "-0.4 -0.8 64.8 64.8",
|
|
8
|
+
turnBox: "-8.8 -9.2 81.6 81.6",
|
|
7
9
|
tones: { dark: "#2b2f36" },
|
|
8
10
|
solids: [
|
|
9
11
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A cup with a domed lid and a knob. */
|
|
4
4
|
export const TROPHY_LIDDED_CUP = /* @__PURE__ */ defineLathe("trophy:lidded-cup", "Cup with a lid", "ふた付きカップ", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-1.2 0 66.4 66.4",
|
|
6
7
|
solids: [
|
|
7
8
|
{
|
|
8
9
|
p: [
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A gilded two-handled cup with a lid. */
|
|
4
4
|
export const TROPHY_RUGBY_CUP = /* @__PURE__ */ defineLathe("trophy:rugby-cup", "Gilded cup with a lid", "ふた付きの金色のカップ", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-6 -8.8 76.1 76.1",
|
|
6
7
|
tones: { dark: "#3a2a22" },
|
|
7
8
|
solids: [
|
|
8
9
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A broad dish on a low foot, with a banded rim. */
|
|
4
4
|
export const TROPHY_SALVER = /* @__PURE__ */ defineLathe("trophy:salver", "Salver", "足付きの丸盆", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-4.5 -8.4 72.9 72.9",
|
|
6
7
|
tilt: 24,
|
|
7
8
|
solids: [{ open: true, p: [[22, 30, 1], [24.4, 30, 1], [29, 22, 1], [34, 8, 1], [34, 4.8, 1], [42, 3.8, 1], [42, 9.4, 1], [46, 10.4, 1], [48, 12.6, 1], [51, 12.6, 1]], decor: [["disc", 26.4, "main"]] }],
|
|
8
9
|
plate: { y0: 48.2, y1: 50.8 },
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A soccer ball held up on a tapering stand. */
|
|
4
4
|
export const TROPHY_SOCCER_BALL = /* @__PURE__ */ defineLathe("trophy:soccer-ball", "Soccer ball trophy", "サッカーのトロフィー", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-5.4 0 74.7 74.7",
|
|
6
7
|
solids: [{ p: [[27, 4.4, 1], [38, 3.4], [47, 5.4, 1], [47, 8, 1], [51, 8, 1], [51, 12.4, 1], [55, 12.4, 1], [55, 15, 1], [59, 15, 1]] }],
|
|
7
8
|
balls: [{ kind: "soccer", cy: 16, r: 11.4 }],
|
|
8
9
|
plate: { y0: 55.2, y1: 58.8 },
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** Gold spiral figures rising to hold up a globe, with green bands at the base. */
|
|
4
4
|
export const TROPHY_SOCCER_GLOBE = /* @__PURE__ */ defineLathe("trophy:soccer-globe", "Globe on a column", "柱の上の地球儀", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-3.8 -0.4 71.6 71.6",
|
|
6
7
|
tones: { green: "#1f8a5b" },
|
|
7
8
|
solids: [
|
|
8
9
|
{
|
|
@@ -6,6 +6,7 @@ const side = (a) => ({ a, w: 2.4, tone: "gilt", pts: [[8.4, 27], [14, 25], [18.4
|
|
|
6
6
|
/** A tall silver cup with phoenix-crested handles on a tall stand. */
|
|
7
7
|
export const TROPHY_SUMO_CUP = /* @__PURE__ */ defineLathe("trophy:sumo-cup", "Phoenix-handle cup", "鳳凰飾りの銀杯", "ours", {
|
|
8
8
|
metal: "silver",
|
|
9
|
+
turnBox: "-12.9 -17.9 89.9 89.9",
|
|
9
10
|
tones: { dark: "#2b2f36", gilt: "#d9a620" },
|
|
10
11
|
solids: [
|
|
11
12
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A two-handled cup with a lid and a small pineapple finial. */
|
|
4
4
|
export const TROPHY_TENNIS_CUP = /* @__PURE__ */ defineLathe("trophy:tennis-cup", "Pineapple cup", "パイナップル飾りのカップ", "ours", {
|
|
5
5
|
metal: "gold",
|
|
6
|
+
turnBox: "-3.6 -4.2 71.2 71.2",
|
|
6
7
|
tones: { dark: "#2b2f36" },
|
|
7
8
|
solids: [
|
|
8
9
|
{
|
|
@@ -3,6 +3,7 @@ import { defineLathe } from "../emblem.lathe.js";
|
|
|
3
3
|
/** A silver salver with a gilt pattern. */
|
|
4
4
|
export const TROPHY_TENNIS_PLATE = /* @__PURE__ */ defineLathe("trophy:tennis-plate", "Plate on a pedestal", "台付きの大皿", "ours", {
|
|
5
5
|
metal: "silver",
|
|
6
|
+
turnBox: "-5.9 -8.9 75.9 75.9",
|
|
6
7
|
tilt: 36,
|
|
7
8
|
tones: { gilt: "#d9a620", plain: "#9aa3ad" },
|
|
8
9
|
solids: [
|
package/dist/turn-control.js
CHANGED
|
@@ -94,7 +94,8 @@ export function bindTurn(container, ref, options = {}) {
|
|
|
94
94
|
renderId = undefined;
|
|
95
95
|
}
|
|
96
96
|
const at = angles.yaw === 0 && angles.pitch === 0 && angles.roll === 0;
|
|
97
|
-
|
|
97
|
+
// The resting view of an emblem that turns is drawn in the box of the turn too, so that the element is the same size at every angle and a drag does not make the emblem jump or zoom at its first step.
|
|
98
|
+
container.innerHTML = !turnable ? renderEmblem(current, frame) : at ? renderEmblem(current, { turnBox: true, ...frame }) : emblemFrame(current, { ...frame, ...angles });
|
|
98
99
|
};
|
|
99
100
|
/** One drawing for any number of changes within a frame. */
|
|
100
101
|
const schedule = () => {
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.3.
|
|
1
|
+
export declare const VERSION = "0.3.1";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.3.
|
|
1
|
+
export const VERSION = "0.3.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@johnmorrisdotca/dougu-sports",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
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",
|