@sarmal/core 0.20.0 → 0.23.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/dist/auto-init.cjs +38 -6
- package/dist/auto-init.cjs.map +1 -1
- package/dist/auto-init.d.cts +1 -1
- package/dist/auto-init.d.ts +1 -1
- package/dist/auto-init.js +38 -6
- package/dist/auto-init.js.map +1 -1
- package/dist/curves/artemis2.d.cts +1 -1
- package/dist/curves/artemis2.d.ts +1 -1
- package/dist/curves/astroid.d.cts +1 -1
- package/dist/curves/astroid.d.ts +1 -1
- package/dist/curves/deltoid.d.cts +1 -1
- package/dist/curves/deltoid.d.ts +1 -1
- package/dist/curves/epicycloid3.d.cts +1 -1
- package/dist/curves/epicycloid3.d.ts +1 -1
- package/dist/curves/epitrochoid7.d.cts +1 -1
- package/dist/curves/epitrochoid7.d.ts +1 -1
- package/dist/curves/index.d.cts +1 -1
- package/dist/curves/index.d.ts +1 -1
- package/dist/curves/lame.d.cts +1 -1
- package/dist/curves/lame.d.ts +1 -1
- package/dist/curves/lissajous32.d.cts +1 -1
- package/dist/curves/lissajous32.d.ts +1 -1
- package/dist/curves/lissajous43.d.cts +1 -1
- package/dist/curves/lissajous43.d.ts +1 -1
- package/dist/curves/rose3.d.cts +1 -1
- package/dist/curves/rose3.d.ts +1 -1
- package/dist/curves/rose5.d.cts +1 -1
- package/dist/curves/rose5.d.ts +1 -1
- package/dist/curves/rose52.d.cts +1 -1
- package/dist/curves/rose52.d.ts +1 -1
- package/dist/curves/star.d.cts +1 -1
- package/dist/curves/star.d.ts +1 -1
- package/dist/curves/star4.d.cts +1 -1
- package/dist/curves/star4.d.ts +1 -1
- package/dist/curves/star7.d.cts +1 -1
- package/dist/curves/star7.d.ts +1 -1
- package/dist/index.cjs +38 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +38 -6
- package/dist/index.js.map +1 -1
- package/dist/{types-frtEoAq6.d.cts → types-C0b4MPtI.d.cts} +4 -0
- package/dist/{types-frtEoAq6.d.ts → types-C0b4MPtI.d.ts} +4 -0
- package/package.json +1 -1
package/dist/curves/astroid.d.ts
CHANGED
package/dist/curves/deltoid.d.ts
CHANGED
package/dist/curves/index.d.cts
CHANGED
package/dist/curves/index.d.ts
CHANGED
package/dist/curves/lame.d.cts
CHANGED
package/dist/curves/lame.d.ts
CHANGED
package/dist/curves/rose3.d.cts
CHANGED
package/dist/curves/rose3.d.ts
CHANGED
package/dist/curves/rose5.d.cts
CHANGED
package/dist/curves/rose5.d.ts
CHANGED
package/dist/curves/rose52.d.cts
CHANGED
package/dist/curves/rose52.d.ts
CHANGED
package/dist/curves/star.d.cts
CHANGED
package/dist/curves/star.d.ts
CHANGED
package/dist/curves/star4.d.cts
CHANGED
package/dist/curves/star4.d.ts
CHANGED
package/dist/curves/star7.d.cts
CHANGED
package/dist/curves/star7.d.ts
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -428,6 +428,7 @@ var RENDER_OPTION_KEYS = /* @__PURE__ */ new Set([
|
|
|
428
428
|
"headColor",
|
|
429
429
|
"skeletonColor",
|
|
430
430
|
"trailStyle",
|
|
431
|
+
"headRadius",
|
|
431
432
|
]);
|
|
432
433
|
function validateRenderOptions(partial) {
|
|
433
434
|
for (const key of Object.keys(partial)) {
|
|
@@ -447,6 +448,9 @@ function validateRenderOptions(partial) {
|
|
|
447
448
|
if (partial.trailStyle !== void 0) {
|
|
448
449
|
assertTrailStyle(partial.trailStyle);
|
|
449
450
|
}
|
|
451
|
+
if (partial.headRadius !== void 0) {
|
|
452
|
+
assertHeadRadius(partial.headRadius);
|
|
453
|
+
}
|
|
450
454
|
}
|
|
451
455
|
function assertTrailColor(value) {
|
|
452
456
|
if (typeof value === "string") {
|
|
@@ -504,6 +508,18 @@ function assertTrailStyle(value) {
|
|
|
504
508
|
);
|
|
505
509
|
}
|
|
506
510
|
}
|
|
511
|
+
function assertHeadRadius(value) {
|
|
512
|
+
if (typeof value !== "number") {
|
|
513
|
+
throw new TypeError(
|
|
514
|
+
`[sarmal] setRenderOptions: headRadius must be a number, got ${JSON.stringify(value)}`,
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
518
|
+
throw new TypeError(
|
|
519
|
+
`[sarmal] setRenderOptions: headRadius must be a finite positive number, got ${value}`,
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
507
523
|
function resolveTrailMainColor(trailColor) {
|
|
508
524
|
return typeof trailColor === "string" ? trailColor : trailColor[0];
|
|
509
525
|
}
|
|
@@ -532,9 +548,9 @@ function warnIfTrailColorMismatch(trailColor, trailStyle) {
|
|
|
532
548
|
);
|
|
533
549
|
}
|
|
534
550
|
}
|
|
535
|
-
var getHeadDotRadius = (w, h) => Math.max(1, 3 * Math.sqrt(Math.min(w, h) / 160));
|
|
536
551
|
|
|
537
552
|
// src/renderer.ts
|
|
553
|
+
var getHeadDotRadius = (w, h) => Math.max(1, 3 * Math.sqrt(Math.min(w, h) / 160));
|
|
538
554
|
var WHITE_HEX = "#ffffff";
|
|
539
555
|
function hexToRgbComponents(hex) {
|
|
540
556
|
const n = parseInt(hex.slice(1), 16);
|
|
@@ -571,6 +587,7 @@ function createRenderer(options) {
|
|
|
571
587
|
setupCanvas();
|
|
572
588
|
let logicalWidth = canvas.width / dpr;
|
|
573
589
|
let logicalHeight = canvas.height / dpr;
|
|
590
|
+
let headRadius = options.headRadius ?? getHeadDotRadius(logicalWidth, logicalHeight);
|
|
574
591
|
let skeleton = [];
|
|
575
592
|
let skeletonCanvas = null;
|
|
576
593
|
let trail = [];
|
|
@@ -687,7 +704,7 @@ function createRenderer(options) {
|
|
|
687
704
|
}
|
|
688
705
|
const x = head.x * scale + offsetX;
|
|
689
706
|
const y = head.y * scale + offsetY;
|
|
690
|
-
const r =
|
|
707
|
+
const r = headRadius;
|
|
691
708
|
ctx.fillStyle = headColor;
|
|
692
709
|
ctx.beginPath();
|
|
693
710
|
ctx.arc(x, y, r, 0, Math.PI * 2);
|
|
@@ -816,6 +833,9 @@ function createRenderer(options) {
|
|
|
816
833
|
if (partial.headColor !== void 0) {
|
|
817
834
|
userHeadColor = partial.headColor;
|
|
818
835
|
}
|
|
836
|
+
if (partial.headRadius !== void 0) {
|
|
837
|
+
headRadius = partial.headRadius;
|
|
838
|
+
}
|
|
819
839
|
if (userHeadColor === null) {
|
|
820
840
|
headColor = resolveHeadColor(trailColor, trailStyle);
|
|
821
841
|
} else {
|
|
@@ -834,6 +854,8 @@ function createRenderer(options) {
|
|
|
834
854
|
|
|
835
855
|
// src/renderer-svg.ts
|
|
836
856
|
var EMPTY_PARAMS2 = {};
|
|
857
|
+
var SVG_DEFAULT_HEAD_RADIUS = 0.5;
|
|
858
|
+
var SKELETON_STROKE_WIDTH_PX = 1.5;
|
|
837
859
|
var HIGH_TRAIL_LENGTH_THRESHOLD = 5e3;
|
|
838
860
|
function pointsToPathString(pts, scale, offsetX, offsetY) {
|
|
839
861
|
if (pts.length < 2) {
|
|
@@ -873,15 +895,21 @@ function createSVGRenderer(options) {
|
|
|
873
895
|
let skeletonColor = options.skeletonColor ?? "#ffffff";
|
|
874
896
|
let userHeadColor = options.headColor ?? null;
|
|
875
897
|
let headColor = userHeadColor ?? resolveHeadColor(trailColor, trailStyle);
|
|
898
|
+
let headRadius;
|
|
876
899
|
let trailSolid = resolveTrailMainColor(trailColor);
|
|
877
900
|
let trailPalette = resolveTrailPalette(trailColor);
|
|
878
901
|
const ariaLabel = options.ariaLabel ?? "Loading";
|
|
879
902
|
warnIfTrailColorMismatch(trailColor, trailStyle);
|
|
880
903
|
const viewSize = 100;
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
904
|
+
function getContainerPixelSize() {
|
|
905
|
+
const rect = container.getBoundingClientRect();
|
|
906
|
+
return rect.width && rect.height ? Math.min(rect.width, rect.height) : 200;
|
|
907
|
+
}
|
|
908
|
+
const containerPx = getContainerPixelSize();
|
|
909
|
+
const svgTrailMinWidth = (TRAIL_MIN_WIDTH * viewSize) / containerPx;
|
|
910
|
+
const svgTrailMaxWidth = (TRAIL_MAX_WIDTH * viewSize) / containerPx;
|
|
911
|
+
const svgSkeletonStrokeWidth = String((SKELETON_STROKE_WIDTH_PX * viewSize) / containerPx);
|
|
912
|
+
headRadius = options.headRadius ?? SVG_DEFAULT_HEAD_RADIUS;
|
|
885
913
|
container.setAttribute("viewBox", `0 0 ${viewSize} ${viewSize}`);
|
|
886
914
|
container.setAttribute("role", "img");
|
|
887
915
|
container.setAttribute("aria-label", ariaLabel);
|
|
@@ -1154,6 +1182,10 @@ function createSVGRenderer(options) {
|
|
|
1154
1182
|
if (partial.headColor !== void 0) {
|
|
1155
1183
|
userHeadColor = partial.headColor;
|
|
1156
1184
|
}
|
|
1185
|
+
if (partial.headRadius !== void 0) {
|
|
1186
|
+
headRadius = partial.headRadius;
|
|
1187
|
+
headCircle.setAttribute("r", String(headRadius));
|
|
1188
|
+
}
|
|
1157
1189
|
if (userHeadColor === null) {
|
|
1158
1190
|
headColor = resolveHeadColor(trailColor, trailStyle);
|
|
1159
1191
|
} else {
|