@gfazioli/mantine-clock 2.1.17 → 3.0.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/README.md +1 -1
- package/dist/cjs/Clock.cjs +611 -446
- package/dist/cjs/Clock.cjs.map +1 -1
- package/dist/cjs/Clock.module.css.cjs +1 -1
- package/dist/cjs/ClockDigital.cjs +125 -0
- package/dist/cjs/ClockDigital.cjs.map +1 -0
- package/dist/cjs/ClockDigital.module.css.cjs +7 -0
- package/dist/cjs/ClockDigital.module.css.cjs.map +1 -0
- package/dist/cjs/geometry.cjs +217 -0
- package/dist/cjs/geometry.cjs.map +1 -0
- package/dist/cjs/hooks/use-clock-count-down.cjs +90 -122
- package/dist/cjs/hooks/use-clock-count-down.cjs.map +1 -1
- package/dist/cjs/hooks/use-clock.cjs +25 -36
- package/dist/cjs/hooks/use-clock.cjs.map +1 -1
- package/dist/cjs/index.cjs +6 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/Clock.mjs +613 -448
- package/dist/esm/Clock.mjs.map +1 -1
- package/dist/esm/Clock.module.css.mjs +1 -1
- package/dist/esm/ClockDigital.mjs +123 -0
- package/dist/esm/ClockDigital.mjs.map +1 -0
- package/dist/esm/ClockDigital.module.css.mjs +5 -0
- package/dist/esm/ClockDigital.module.css.mjs.map +1 -0
- package/dist/esm/geometry.mjs +208 -0
- package/dist/esm/geometry.mjs.map +1 -0
- package/dist/esm/hooks/use-clock-count-down.mjs +90 -122
- package/dist/esm/hooks/use-clock-count-down.mjs.map +1 -1
- package/dist/esm/hooks/use-clock.mjs +25 -36
- package/dist/esm/hooks/use-clock.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/styles.css +2 -2
- package/dist/styles.layer.css +2 -2
- package/dist/types/Clock.d.ts +70 -1
- package/dist/types/ClockDigital.d.ts +50 -0
- package/dist/types/geometry.d.ts +92 -0
- package/dist/types/hooks/use-clock-count-down.d.ts +25 -28
- package/dist/types/hooks/use-clock.d.ts +14 -10
- package/dist/types/index.d.mts +5 -1
- package/dist/types/index.d.ts +5 -1
- package/package.json +5 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var classes = {"root":"me_3508fb61","clockContainer":"me_bfe0e7d2","glassWrapper":"me_5cac7cf6","clockFace":"me_a73eac6c","arcsLayer":"me_8cd76651","centerBlur":"me_46419d9b","centerDot":"me_b7f1a195","hourMarks":"me_199c38a3","minuteTick":"me_7001a110","hourTick":"me_42e74ca0","number":"me_1037b208","primaryNumber":"me_9129b04c","secondaryNumber":"me_83b9a1fe","hand":"me_35043aee","hourHand":"me_42e1bb72","minuteHand":"me_6ffc0fe2","secondHandContainer":"me_22ead85f","secondHand":"me_1a457e42","secondHandCounterweight":"me_32db9852"};
|
|
4
|
+
var classes = {"root":"me_3508fb61","clockContainer":"me_bfe0e7d2","glassWrapper":"me_5cac7cf6","clockFace":"me_a73eac6c","faceContent":"me_f1150bfd","arcsLayer":"me_8cd76651","centerBlur":"me_46419d9b","centerDot":"me_b7f1a195","hourMarks":"me_199c38a3","minuteTick":"me_7001a110","hourTick":"me_42e74ca0","number":"me_1037b208","primaryNumber":"me_9129b04c","secondaryNumber":"me_83b9a1fe","hand":"me_35043aee","hourHand":"me_42e1bb72","minuteHand":"me_6ffc0fe2","secondHandContainer":"me_22ead85f","secondHand":"me_1a457e42","secondHandCounterweight":"me_32db9852"};
|
|
5
5
|
|
|
6
6
|
module.exports = classes;
|
|
7
7
|
//# sourceMappingURL=Clock.module.css.cjs.map
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var core = require('@mantine/core');
|
|
6
|
+
var useClock = require('./hooks/use-clock.cjs');
|
|
7
|
+
var ClockDigital_module = require('./ClockDigital.module.css.cjs');
|
|
8
|
+
|
|
9
|
+
const defaultDigitalSizes = {
|
|
10
|
+
xs: 14,
|
|
11
|
+
sm: 20,
|
|
12
|
+
md: 32,
|
|
13
|
+
lg: 48,
|
|
14
|
+
xl: 64
|
|
15
|
+
};
|
|
16
|
+
const defaultDigitalProps = {
|
|
17
|
+
size: "md",
|
|
18
|
+
use24Hours: true,
|
|
19
|
+
showSeconds: true,
|
|
20
|
+
showDate: false,
|
|
21
|
+
showAmPm: true,
|
|
22
|
+
separator: ":",
|
|
23
|
+
running: true,
|
|
24
|
+
updateFrequency: 1e3,
|
|
25
|
+
padHours: true,
|
|
26
|
+
padMinutes: true,
|
|
27
|
+
padSeconds: true
|
|
28
|
+
};
|
|
29
|
+
const digitalVarsResolver = core.createVarsResolver(
|
|
30
|
+
(theme, { size, color, fontFamily, gap }) => {
|
|
31
|
+
const sizeValue = size || "md";
|
|
32
|
+
const fontSize = typeof sizeValue === "number" ? sizeValue : typeof sizeValue === "string" && sizeValue in defaultDigitalSizes ? defaultDigitalSizes[sizeValue] : 32;
|
|
33
|
+
return {
|
|
34
|
+
root: {
|
|
35
|
+
"--clock-digital-size": `${fontSize}px`,
|
|
36
|
+
"--clock-digital-color": color ? core.parseThemeColor({ color, theme }).value : "",
|
|
37
|
+
"--clock-digital-font-family": fontFamily || "",
|
|
38
|
+
"--clock-digital-gap": typeof gap === "number" ? `${gap}px` : gap || ""
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
const ClockDigital = core.factory((_props, ref) => {
|
|
44
|
+
const props = core.useProps("ClockDigital", defaultDigitalProps, _props);
|
|
45
|
+
const {
|
|
46
|
+
size,
|
|
47
|
+
color,
|
|
48
|
+
fontFamily,
|
|
49
|
+
gap,
|
|
50
|
+
timezone,
|
|
51
|
+
use24Hours,
|
|
52
|
+
showSeconds,
|
|
53
|
+
showDate,
|
|
54
|
+
showAmPm,
|
|
55
|
+
separator,
|
|
56
|
+
running,
|
|
57
|
+
updateFrequency,
|
|
58
|
+
padHours,
|
|
59
|
+
padMinutes,
|
|
60
|
+
padSeconds,
|
|
61
|
+
classNames,
|
|
62
|
+
style,
|
|
63
|
+
styles,
|
|
64
|
+
unstyled,
|
|
65
|
+
vars,
|
|
66
|
+
className,
|
|
67
|
+
...others
|
|
68
|
+
} = props;
|
|
69
|
+
const getStyles = core.useStyles({
|
|
70
|
+
name: "ClockDigital",
|
|
71
|
+
props,
|
|
72
|
+
classes: ClockDigital_module,
|
|
73
|
+
className,
|
|
74
|
+
style,
|
|
75
|
+
classNames,
|
|
76
|
+
styles,
|
|
77
|
+
unstyled,
|
|
78
|
+
vars,
|
|
79
|
+
varsResolver: digitalVarsResolver
|
|
80
|
+
});
|
|
81
|
+
const clock = useClock.useClock({
|
|
82
|
+
enabled: running !== false,
|
|
83
|
+
timezone,
|
|
84
|
+
use24Hours,
|
|
85
|
+
updateFrequency,
|
|
86
|
+
padHours,
|
|
87
|
+
padMinutes,
|
|
88
|
+
padSeconds
|
|
89
|
+
});
|
|
90
|
+
return /* @__PURE__ */ React.createElement(
|
|
91
|
+
core.Box,
|
|
92
|
+
{
|
|
93
|
+
...getStyles("root"),
|
|
94
|
+
ref,
|
|
95
|
+
role: "timer",
|
|
96
|
+
"aria-label": `${clock.formattedHours}${separator}${clock.formattedMinutes}${showSeconds ? `${separator}${clock.formattedSeconds}` : ""}`,
|
|
97
|
+
...others
|
|
98
|
+
},
|
|
99
|
+
/* @__PURE__ */ React.createElement(core.Box, { component: "span", ...getStyles("segment", { className: getStyles("hours").className }) }, clock.formattedHours),
|
|
100
|
+
/* @__PURE__ */ React.createElement(core.Box, { component: "span", ...getStyles("separator") }, separator),
|
|
101
|
+
/* @__PURE__ */ React.createElement(
|
|
102
|
+
core.Box,
|
|
103
|
+
{
|
|
104
|
+
component: "span",
|
|
105
|
+
...getStyles("segment", { className: getStyles("minutes").className })
|
|
106
|
+
},
|
|
107
|
+
clock.formattedMinutes
|
|
108
|
+
),
|
|
109
|
+
showSeconds && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(core.Box, { component: "span", ...getStyles("separator") }, separator), /* @__PURE__ */ React.createElement(
|
|
110
|
+
core.Box,
|
|
111
|
+
{
|
|
112
|
+
component: "span",
|
|
113
|
+
...getStyles("segment", { className: getStyles("seconds").className })
|
|
114
|
+
},
|
|
115
|
+
clock.formattedSeconds
|
|
116
|
+
)),
|
|
117
|
+
!use24Hours && showAmPm && clock.amPm && /* @__PURE__ */ React.createElement(core.Box, { component: "span", ...getStyles("amPm") }, clock.amPm),
|
|
118
|
+
showDate && /* @__PURE__ */ React.createElement(core.Box, { component: "span", ...getStyles("date") }, String(clock.day).padStart(2, "0"), "/", String(clock.month).padStart(2, "0"), "/", clock.year)
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
ClockDigital.classes = ClockDigital_module;
|
|
122
|
+
ClockDigital.displayName = "ClockDigital";
|
|
123
|
+
|
|
124
|
+
exports.ClockDigital = ClockDigital;
|
|
125
|
+
//# sourceMappingURL=ClockDigital.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClockDigital.cjs","sources":["../../src/ClockDigital.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n Factory,\n factory,\n MantineColor,\n MantineSize,\n parseThemeColor,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { Timezone } from './Clock';\nimport { useClock } from './hooks/use-clock';\nimport classes from './ClockDigital.module.css';\n\nexport type ClockDigitalStylesNames =\n | 'root'\n | 'segment'\n | 'hours'\n | 'separator'\n | 'minutes'\n | 'seconds'\n | 'amPm'\n | 'date';\n\nexport type ClockDigitalCssVariables = {\n root:\n | '--clock-digital-size'\n | '--clock-digital-color'\n | '--clock-digital-font-family'\n | '--clock-digital-gap';\n};\n\nexport interface ClockDigitalProps extends BoxProps, StylesApiProps<ClockDigitalFactory> {\n /** Size preset or pixel value */\n size?: MantineSize | number | (string & {});\n /** Text color */\n color?: MantineColor;\n /** Font family (default: monospace) */\n fontFamily?: string;\n /** Gap between segments */\n gap?: number | string;\n /** Timezone */\n timezone?: Timezone;\n /** 24-hour format (default: true) */\n use24Hours?: boolean;\n /** Show seconds (default: true) */\n showSeconds?: boolean;\n /** Show date below time (default: false) */\n showDate?: boolean;\n /** Show AM/PM indicator when use24Hours is false */\n showAmPm?: boolean;\n /** Separator character (default: \":\") */\n separator?: string;\n /** Whether the clock is running (default: true) */\n running?: boolean;\n /** Update frequency in ms (default: 1000) */\n updateFrequency?: number;\n /** Pad hours with leading zero */\n padHours?: boolean;\n /** Pad minutes with leading zero (default: true) */\n padMinutes?: boolean;\n /** Pad seconds with leading zero (default: true) */\n padSeconds?: boolean;\n}\n\nexport type ClockDigitalFactory = Factory<{\n props: ClockDigitalProps;\n ref: HTMLDivElement;\n stylesNames: ClockDigitalStylesNames;\n vars: ClockDigitalCssVariables;\n}>;\n\nconst defaultDigitalSizes: Record<string, number> = {\n xs: 14,\n sm: 20,\n md: 32,\n lg: 48,\n xl: 64,\n};\n\nconst defaultDigitalProps: Partial<ClockDigitalProps> = {\n size: 'md',\n use24Hours: true,\n showSeconds: true,\n showDate: false,\n showAmPm: true,\n separator: ':',\n running: true,\n updateFrequency: 1000,\n padHours: true,\n padMinutes: true,\n padSeconds: true,\n};\n\nconst digitalVarsResolver = createVarsResolver<ClockDigitalFactory>(\n (theme, { size, color, fontFamily, gap }) => {\n const sizeValue = size || 'md';\n const fontSize =\n typeof sizeValue === 'number'\n ? sizeValue\n : typeof sizeValue === 'string' && sizeValue in defaultDigitalSizes\n ? defaultDigitalSizes[sizeValue]\n : 32;\n\n return {\n root: {\n '--clock-digital-size': `${fontSize}px`,\n '--clock-digital-color': color ? parseThemeColor({ color, theme }).value : '',\n '--clock-digital-font-family': fontFamily || '',\n '--clock-digital-gap': typeof gap === 'number' ? `${gap}px` : gap || '',\n },\n };\n }\n);\n\nexport const ClockDigital = factory<ClockDigitalFactory>((_props, ref) => {\n const props = useProps('ClockDigital', defaultDigitalProps, _props);\n const {\n size,\n color,\n fontFamily,\n gap,\n timezone,\n use24Hours,\n showSeconds,\n showDate,\n showAmPm,\n separator,\n running,\n updateFrequency,\n padHours,\n padMinutes,\n padSeconds,\n classNames,\n style,\n styles,\n unstyled,\n vars,\n className,\n ...others\n } = props;\n\n const getStyles = useStyles<ClockDigitalFactory>({\n name: 'ClockDigital',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver: digitalVarsResolver,\n });\n\n const clock = useClock({\n enabled: running !== false,\n timezone,\n use24Hours,\n updateFrequency,\n padHours,\n padMinutes,\n padSeconds,\n });\n\n return (\n <Box\n {...getStyles('root')}\n ref={ref}\n role=\"timer\"\n aria-label={`${clock.formattedHours}${separator}${clock.formattedMinutes}${showSeconds ? `${separator}${clock.formattedSeconds}` : ''}`}\n {...others}\n >\n <Box component=\"span\" {...getStyles('segment', { className: getStyles('hours').className })}>\n {clock.formattedHours}\n </Box>\n <Box component=\"span\" {...getStyles('separator')}>\n {separator}\n </Box>\n <Box\n component=\"span\"\n {...getStyles('segment', { className: getStyles('minutes').className })}\n >\n {clock.formattedMinutes}\n </Box>\n {showSeconds && (\n <>\n <Box component=\"span\" {...getStyles('separator')}>\n {separator}\n </Box>\n <Box\n component=\"span\"\n {...getStyles('segment', { className: getStyles('seconds').className })}\n >\n {clock.formattedSeconds}\n </Box>\n </>\n )}\n {!use24Hours && showAmPm && clock.amPm && (\n <Box component=\"span\" {...getStyles('amPm')}>\n {clock.amPm}\n </Box>\n )}\n {showDate && (\n <Box component=\"span\" {...getStyles('date')}>\n {String(clock.day).padStart(2, '0')}/{String(clock.month).padStart(2, '0')}/{clock.year}\n </Box>\n )}\n </Box>\n );\n});\n\nClockDigital.classes = classes;\nClockDigital.displayName = 'ClockDigital';\n"],"names":["createVarsResolver","parseThemeColor","factory","useProps","useStyles","classes","useClock","Box"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var classes = {"root":"me_d4858e85","segment":"me_85878ab0","hours":"me_bb9f6dcc","minutes":"me_4f5c085c","seconds":"me_855035fc","separator":"me_a1ee322","amPm":"me_d47dc8ec","date":"me_d47efd51"};
|
|
5
|
+
|
|
6
|
+
module.exports = classes;
|
|
7
|
+
//# sourceMappingURL=ClockDigital.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClockDigital.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var dayjs = require('dayjs');
|
|
5
|
+
var timezonePlugin = require('dayjs/plugin/timezone');
|
|
6
|
+
var utc = require('dayjs/plugin/utc');
|
|
7
|
+
|
|
8
|
+
dayjs.extend(utc);
|
|
9
|
+
dayjs.extend(timezonePlugin);
|
|
10
|
+
const normalizeAngle = (deg) => (deg % 360 + 360) % 360;
|
|
11
|
+
const fmt = (n) => Number.isFinite(n) ? n.toFixed(3) : "0";
|
|
12
|
+
function secondAngleFromDate(d, tz) {
|
|
13
|
+
if (!d) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
const dt = tz && tz !== "" ? dayjs(d).tz(tz) : dayjs(d);
|
|
17
|
+
return normalizeAngle((dt.second() + dt.millisecond() / 1e3) * 6);
|
|
18
|
+
}
|
|
19
|
+
function minuteAngleFromDate(d, tz) {
|
|
20
|
+
if (!d) {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
const dt = tz && tz !== "" ? dayjs(d).tz(tz) : dayjs(d);
|
|
24
|
+
return normalizeAngle(dt.minute() * 6);
|
|
25
|
+
}
|
|
26
|
+
function hourAngleFromDate(d, tz) {
|
|
27
|
+
if (!d) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
const dt = tz && tz !== "" ? dayjs(d).tz(tz) : dayjs(d);
|
|
31
|
+
return normalizeAngle(dt.hour() % 12 * 30 + dt.minute() * 0.5);
|
|
32
|
+
}
|
|
33
|
+
function describeSectorPath(cx, cy, r, startDeg, endDeg, direction) {
|
|
34
|
+
const start = normalizeAngle(startDeg);
|
|
35
|
+
const end = normalizeAngle(endDeg);
|
|
36
|
+
let delta = 0;
|
|
37
|
+
if (direction === "clockwise") {
|
|
38
|
+
delta = end - start;
|
|
39
|
+
if (delta < 0) {
|
|
40
|
+
delta += 360;
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
delta = start - end;
|
|
44
|
+
if (delta < 0) {
|
|
45
|
+
delta += 360;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const largeArc = delta >= 180 ? 1 : 0;
|
|
49
|
+
const sweep = direction === "clockwise" ? 1 : 0;
|
|
50
|
+
const aStart = start * Math.PI / 180;
|
|
51
|
+
const aEnd = end * Math.PI / 180;
|
|
52
|
+
const x1 = cx + r * Math.sin(aStart);
|
|
53
|
+
const y1 = cy - r * Math.cos(aStart);
|
|
54
|
+
const x2 = cx + r * Math.sin(aEnd);
|
|
55
|
+
const y2 = cy - r * Math.cos(aEnd);
|
|
56
|
+
return `M ${fmt(cx)} ${fmt(cy)} L ${fmt(x1)} ${fmt(y1)} A ${fmt(r)} ${fmt(r)} 0 ${largeArc} ${sweep} ${fmt(x2)} ${fmt(y2)} Z`;
|
|
57
|
+
}
|
|
58
|
+
class CircularGeometry {
|
|
59
|
+
constructor(size) {
|
|
60
|
+
this.width = size;
|
|
61
|
+
this.height = size;
|
|
62
|
+
this.centerX = Math.round(size / 2);
|
|
63
|
+
this.centerY = Math.round(size / 2);
|
|
64
|
+
this.radius = Math.round(size / 2);
|
|
65
|
+
}
|
|
66
|
+
clipPath() {
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
borderRadius() {
|
|
70
|
+
return "50%";
|
|
71
|
+
}
|
|
72
|
+
tickPosition(index, total, tickOffset) {
|
|
73
|
+
const angleDeg = 360 / total * index;
|
|
74
|
+
return {
|
|
75
|
+
x: 0,
|
|
76
|
+
// positioned via CSS left: 50% + transform
|
|
77
|
+
y: tickOffset,
|
|
78
|
+
angle: angleDeg,
|
|
79
|
+
transformOrigin: `50% ${this.radius - tickOffset}px`,
|
|
80
|
+
positioning: "rotation"
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
numberPosition(hourIndex, numberRadius) {
|
|
84
|
+
const angle = (hourIndex * 30 - 90) * (Math.PI / 180);
|
|
85
|
+
return {
|
|
86
|
+
x: Math.round(this.centerX + Math.cos(angle) * numberRadius),
|
|
87
|
+
y: Math.round(this.centerY + Math.sin(angle) * numberRadius)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
handAnchor() {
|
|
91
|
+
return { x: this.centerX, y: this.centerY };
|
|
92
|
+
}
|
|
93
|
+
handLength(ratio) {
|
|
94
|
+
return Math.round(this.radius * ratio);
|
|
95
|
+
}
|
|
96
|
+
sectorPath(startDeg, endDeg, radius, direction) {
|
|
97
|
+
return describeSectorPath(this.centerX, this.centerY, radius, startDeg, endDeg, direction);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
class RoundedRectGeometry {
|
|
101
|
+
// half height
|
|
102
|
+
constructor(width, height, borderRadius) {
|
|
103
|
+
this.width = width;
|
|
104
|
+
this.height = height;
|
|
105
|
+
this.centerX = Math.round(width / 2);
|
|
106
|
+
this.centerY = Math.round(height / 2);
|
|
107
|
+
this.borderRadiusValue = Math.min(borderRadius, Math.min(width, height) / 2);
|
|
108
|
+
this.radius = Math.round(Math.min(width, height) / 2);
|
|
109
|
+
this.hw = width / 2;
|
|
110
|
+
this.hh = height / 2;
|
|
111
|
+
}
|
|
112
|
+
clipPath() {
|
|
113
|
+
return `inset(0 round ${this.borderRadiusValue}px)`;
|
|
114
|
+
}
|
|
115
|
+
borderRadius() {
|
|
116
|
+
return `${this.borderRadiusValue}px`;
|
|
117
|
+
}
|
|
118
|
+
tickPosition(index, total, tickOffset) {
|
|
119
|
+
const clockDeg = 360 / total * index;
|
|
120
|
+
const mathRad = (clockDeg - 90) * Math.PI / 180;
|
|
121
|
+
const dist = this.distanceToEdge(mathRad);
|
|
122
|
+
const r = dist - tickOffset;
|
|
123
|
+
const x = this.centerX + Math.cos(mathRad) * r;
|
|
124
|
+
const y = this.centerY + Math.sin(mathRad) * r;
|
|
125
|
+
return {
|
|
126
|
+
x: Math.round(x),
|
|
127
|
+
y: Math.round(y),
|
|
128
|
+
angle: clockDeg,
|
|
129
|
+
// rotation so tick points inward
|
|
130
|
+
transformOrigin: "center center",
|
|
131
|
+
positioning: "absolute"
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
numberPosition(hourIndex, numberRadius) {
|
|
135
|
+
const mathRad = (hourIndex * 30 - 90) * Math.PI / 180;
|
|
136
|
+
const dist = this.distanceToEdge(mathRad);
|
|
137
|
+
const maxRadius = this.radius;
|
|
138
|
+
const scaledR = numberRadius / maxRadius * dist * 0.92;
|
|
139
|
+
return {
|
|
140
|
+
x: Math.round(this.centerX + Math.cos(mathRad) * scaledR),
|
|
141
|
+
y: Math.round(this.centerY + Math.sin(mathRad) * scaledR)
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
handAnchor() {
|
|
145
|
+
return { x: this.centerX, y: this.centerY };
|
|
146
|
+
}
|
|
147
|
+
handLength(ratio) {
|
|
148
|
+
return Math.round(this.radius * ratio);
|
|
149
|
+
}
|
|
150
|
+
sectorPath(startDeg, endDeg, radius, direction) {
|
|
151
|
+
return describeSectorPath(this.centerX, this.centerY, radius, startDeg, endDeg, direction);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Distance from center to the edge of the rounded rectangle at a given math angle.
|
|
155
|
+
* Accounts for the corner arcs: if the ray hits a corner region, it intersects
|
|
156
|
+
* the quarter-circle arc instead of the straight edge.
|
|
157
|
+
*/
|
|
158
|
+
distanceToEdge(mathRad) {
|
|
159
|
+
const cos = Math.cos(mathRad);
|
|
160
|
+
const sin = Math.sin(mathRad);
|
|
161
|
+
const br = this.borderRadiusValue;
|
|
162
|
+
let rectDist;
|
|
163
|
+
if (Math.abs(cos) < 1e-10) {
|
|
164
|
+
rectDist = this.hh / Math.abs(sin);
|
|
165
|
+
} else if (Math.abs(sin) < 1e-10) {
|
|
166
|
+
rectDist = this.hw / Math.abs(cos);
|
|
167
|
+
} else {
|
|
168
|
+
rectDist = Math.min(this.hw / Math.abs(cos), this.hh / Math.abs(sin));
|
|
169
|
+
}
|
|
170
|
+
if (br < 1) {
|
|
171
|
+
return rectDist;
|
|
172
|
+
}
|
|
173
|
+
const px = cos * rectDist;
|
|
174
|
+
const py = sin * rectDist;
|
|
175
|
+
const inCornerX = Math.abs(px) > this.hw - br;
|
|
176
|
+
const inCornerY = Math.abs(py) > this.hh - br;
|
|
177
|
+
if (!inCornerX || !inCornerY) {
|
|
178
|
+
return rectDist;
|
|
179
|
+
}
|
|
180
|
+
const cx = (px > 0 ? 1 : -1) * (this.hw - br);
|
|
181
|
+
const cy = (py > 0 ? 1 : -1) * (this.hh - br);
|
|
182
|
+
const b = -(cos * cx + sin * cy);
|
|
183
|
+
const c = cx * cx + cy * cy - br * br;
|
|
184
|
+
const discriminant = b * b - c;
|
|
185
|
+
if (discriminant < 0) {
|
|
186
|
+
if (process.env.NODE_ENV !== "production") {
|
|
187
|
+
console.warn("[Clock] Negative discriminant in distanceToEdge \u2014 falling back to rectDist");
|
|
188
|
+
}
|
|
189
|
+
return rectDist;
|
|
190
|
+
}
|
|
191
|
+
const sqrtD = Math.sqrt(discriminant);
|
|
192
|
+
const t = -b + sqrtD;
|
|
193
|
+
return t > 0 ? t : rectDist;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function createGeometry(size, shape = "circle", options) {
|
|
197
|
+
if (shape === "rounded-rect") {
|
|
198
|
+
const rawAspectRatio = options?.aspectRatio ?? 1;
|
|
199
|
+
const aspectRatio = Number.isFinite(rawAspectRatio) ? Math.max(0.1, rawAspectRatio) : 1;
|
|
200
|
+
const width = size;
|
|
201
|
+
const height = Math.round(size * aspectRatio);
|
|
202
|
+
const rawBorderRadius = options?.borderRadius ?? Math.round(Math.min(width, height) * 0.2);
|
|
203
|
+
const borderRadius = Number.isFinite(rawBorderRadius) ? Math.max(0, rawBorderRadius) : 0;
|
|
204
|
+
return new RoundedRectGeometry(width, height, borderRadius);
|
|
205
|
+
}
|
|
206
|
+
return new CircularGeometry(size);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
exports.CircularGeometry = CircularGeometry;
|
|
210
|
+
exports.RoundedRectGeometry = RoundedRectGeometry;
|
|
211
|
+
exports.createGeometry = createGeometry;
|
|
212
|
+
exports.describeSectorPath = describeSectorPath;
|
|
213
|
+
exports.hourAngleFromDate = hourAngleFromDate;
|
|
214
|
+
exports.minuteAngleFromDate = minuteAngleFromDate;
|
|
215
|
+
exports.normalizeAngle = normalizeAngle;
|
|
216
|
+
exports.secondAngleFromDate = secondAngleFromDate;
|
|
217
|
+
//# sourceMappingURL=geometry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.cjs","sources":["../../src/geometry.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport timezonePlugin from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\ndayjs.extend(timezonePlugin);\n\n// --- Pure helper functions (extracted from RealClock, now module-level) ---\n\n/** Normalize angle to [0, 360) */\nexport const normalizeAngle = (deg: number): number => ((deg % 360) + 360) % 360;\n\n/** Format number for SVG path precision */\nconst fmt = (n: number): string => (Number.isFinite(n) ? n.toFixed(3) : '0');\n\n/** Compute second hand angle from a Date, respecting timezone */\nexport function secondAngleFromDate(d: Date | null | undefined, tz?: string): number {\n if (!d) {\n return 0;\n }\n const dt = tz && tz !== '' ? dayjs(d).tz(tz) : dayjs(d);\n return normalizeAngle((dt.second() + dt.millisecond() / 1000) * 6);\n}\n\n/** Compute minute hand angle from a Date, respecting timezone */\nexport function minuteAngleFromDate(d: Date | null | undefined, tz?: string): number {\n if (!d) {\n return 0;\n }\n const dt = tz && tz !== '' ? dayjs(d).tz(tz) : dayjs(d);\n return normalizeAngle(dt.minute() * 6);\n}\n\n/** Compute hour hand angle from a Date, respecting timezone */\nexport function hourAngleFromDate(d: Date | null | undefined, tz?: string): number {\n if (!d) {\n return 0;\n }\n const dt = tz && tz !== '' ? dayjs(d).tz(tz) : dayjs(d);\n return normalizeAngle((dt.hour() % 12) * 30 + dt.minute() * 0.5);\n}\n\n/** Build an SVG sector path from center to arc */\nexport function describeSectorPath(\n cx: number,\n cy: number,\n r: number,\n startDeg: number,\n endDeg: number,\n direction: 'clockwise' | 'counterClockwise'\n): string {\n const start = normalizeAngle(startDeg);\n const end = normalizeAngle(endDeg);\n\n let delta = 0;\n if (direction === 'clockwise') {\n delta = end - start;\n if (delta < 0) {\n delta += 360;\n }\n } else {\n delta = start - end;\n if (delta < 0) {\n delta += 360;\n }\n }\n\n const largeArc = delta >= 180 ? 1 : 0;\n const sweep = direction === 'clockwise' ? 1 : 0;\n\n const aStart = (start * Math.PI) / 180;\n const aEnd = (end * Math.PI) / 180;\n const x1 = cx + r * Math.sin(aStart);\n const y1 = cy - r * Math.cos(aStart);\n const x2 = cx + r * Math.sin(aEnd);\n const y2 = cy - r * Math.cos(aEnd);\n\n return `M ${fmt(cx)} ${fmt(cy)} L ${fmt(x1)} ${fmt(y1)} A ${fmt(r)} ${fmt(r)} 0 ${largeArc} ${sweep} ${fmt(x2)} ${fmt(y2)} Z`;\n}\n\n// --- Geometry interface ---\n\nexport interface TickPosition {\n x: number;\n y: number;\n angle: number;\n transformOrigin: string;\n /** 'rotation' = circular CSS rotate pattern, 'absolute' = positioned at x,y with angle rotation */\n positioning: 'rotation' | 'absolute';\n}\n\nexport interface NumberPosition {\n x: number;\n y: number;\n}\n\nexport interface HandAnchor {\n x: number;\n y: number;\n}\n\nexport interface ClockGeometry {\n /** The width and height of the clock container */\n readonly width: number;\n readonly height: number;\n /** Center coordinates */\n readonly centerX: number;\n readonly centerY: number;\n /** CSS clip-path for the clock face shape */\n clipPath: () => string | undefined;\n /** CSS border-radius for the clock face shape */\n borderRadius: () => string;\n /** Position of a tick mark (hour or minute) */\n tickPosition: (index: number, total: number, tickOffset: number) => TickPosition;\n /** Position of an hour number */\n numberPosition: (hourIndex: number, numberRadius: number) => NumberPosition;\n /** Hand anchor point (where hands rotate from) */\n handAnchor: () => HandAnchor;\n /** Hand length given a ratio (0-1) relative to the \"radius\" */\n handLength: (ratio: number) => number;\n /** SVG sector path for arcs */\n sectorPath: (\n startDeg: number,\n endDeg: number,\n radius: number,\n direction: 'clockwise' | 'counterClockwise'\n ) => string;\n}\n\n// --- Circular geometry (default) ---\n\nexport class CircularGeometry implements ClockGeometry {\n readonly width: number;\n readonly height: number;\n readonly centerX: number;\n readonly centerY: number;\n private readonly radius: number;\n\n constructor(size: number) {\n this.width = size;\n this.height = size;\n this.centerX = Math.round(size / 2);\n this.centerY = Math.round(size / 2);\n this.radius = Math.round(size / 2);\n }\n\n clipPath(): string | undefined {\n return undefined; // circle uses border-radius, no clip-path needed\n }\n\n borderRadius(): string {\n return '50%';\n }\n\n tickPosition(index: number, total: number, tickOffset: number): TickPosition {\n const angleDeg = (360 / total) * index;\n return {\n x: 0, // positioned via CSS left: 50% + transform\n y: tickOffset,\n angle: angleDeg,\n transformOrigin: `50% ${this.radius - tickOffset}px`,\n positioning: 'rotation',\n };\n }\n\n numberPosition(hourIndex: number, numberRadius: number): NumberPosition {\n const angle = (hourIndex * 30 - 90) * (Math.PI / 180);\n return {\n x: Math.round(this.centerX + Math.cos(angle) * numberRadius),\n y: Math.round(this.centerY + Math.sin(angle) * numberRadius),\n };\n }\n\n handAnchor(): HandAnchor {\n return { x: this.centerX, y: this.centerY };\n }\n\n handLength(ratio: number): number {\n return Math.round(this.radius * ratio);\n }\n\n sectorPath(\n startDeg: number,\n endDeg: number,\n radius: number,\n direction: 'clockwise' | 'counterClockwise'\n ): string {\n return describeSectorPath(this.centerX, this.centerY, radius, startDeg, endDeg, direction);\n }\n}\n\n// --- Rounded-rectangle geometry ---\n// Distributes ticks and numbers along the perimeter of the rounded rectangle\n// using ray-casting from center. This produces the Apple Watch effect where\n// numbers follow the rectangular edges rather than a circular path.\n\nexport class RoundedRectGeometry implements ClockGeometry {\n readonly width: number;\n readonly height: number;\n readonly centerX: number;\n readonly centerY: number;\n private readonly borderRadiusValue: number;\n private readonly radius: number; // effective radius for hands (half shorter side)\n private readonly hw: number; // half width\n private readonly hh: number; // half height\n\n constructor(width: number, height: number, borderRadius: number) {\n this.width = width;\n this.height = height;\n this.centerX = Math.round(width / 2);\n this.centerY = Math.round(height / 2);\n this.borderRadiusValue = Math.min(borderRadius, Math.min(width, height) / 2);\n this.radius = Math.round(Math.min(width, height) / 2);\n this.hw = width / 2;\n this.hh = height / 2;\n }\n\n clipPath(): string {\n return `inset(0 round ${this.borderRadiusValue}px)`;\n }\n\n borderRadius(): string {\n return `${this.borderRadiusValue}px`;\n }\n\n tickPosition(index: number, total: number, tickOffset: number): TickPosition {\n // Clock angle: 0=12 o'clock, 90=3 o'clock, etc.\n const clockDeg = (360 / total) * index;\n // Convert to math angle (0=right, counter-clockwise) for ray casting\n const mathRad = ((clockDeg - 90) * Math.PI) / 180;\n\n const dist = this.distanceToEdge(mathRad);\n // Position the tick at the edge, inset by tickOffset\n const r = dist - tickOffset;\n const x = this.centerX + Math.cos(mathRad) * r;\n const y = this.centerY + Math.sin(mathRad) * r;\n\n return {\n x: Math.round(x),\n y: Math.round(y),\n angle: clockDeg, // rotation so tick points inward\n transformOrigin: 'center center',\n positioning: 'absolute',\n };\n }\n\n numberPosition(hourIndex: number, numberRadius: number): NumberPosition {\n const mathRad = ((hourIndex * 30 - 90) * Math.PI) / 180;\n const dist = this.distanceToEdge(mathRad);\n // Scale: numberRadius is relative to the circular radius, map to edge distance\n const maxRadius = this.radius;\n const scaledR = (numberRadius / maxRadius) * dist * 0.92; // 0.92 keeps inside padding\n\n return {\n x: Math.round(this.centerX + Math.cos(mathRad) * scaledR),\n y: Math.round(this.centerY + Math.sin(mathRad) * scaledR),\n };\n }\n\n handAnchor(): HandAnchor {\n return { x: this.centerX, y: this.centerY };\n }\n\n handLength(ratio: number): number {\n return Math.round(this.radius * ratio);\n }\n\n sectorPath(\n startDeg: number,\n endDeg: number,\n radius: number,\n direction: 'clockwise' | 'counterClockwise'\n ): string {\n return describeSectorPath(this.centerX, this.centerY, radius, startDeg, endDeg, direction);\n }\n\n /**\n * Distance from center to the edge of the rounded rectangle at a given math angle.\n * Accounts for the corner arcs: if the ray hits a corner region, it intersects\n * the quarter-circle arc instead of the straight edge.\n */\n private distanceToEdge(mathRad: number): number {\n const cos = Math.cos(mathRad);\n const sin = Math.sin(mathRad);\n const br = this.borderRadiusValue;\n\n // Distance to the plain rectangle edge\n let rectDist: number;\n if (Math.abs(cos) < 1e-10) {\n rectDist = this.hh / Math.abs(sin);\n } else if (Math.abs(sin) < 1e-10) {\n rectDist = this.hw / Math.abs(cos);\n } else {\n rectDist = Math.min(this.hw / Math.abs(cos), this.hh / Math.abs(sin));\n }\n\n if (br < 1) {\n return rectDist;\n }\n\n // Check if the hit point falls in a corner region\n const px = cos * rectDist;\n const py = sin * rectDist;\n\n const inCornerX = Math.abs(px) > this.hw - br;\n const inCornerY = Math.abs(py) > this.hh - br;\n\n if (!inCornerX || !inCornerY) {\n // On a straight segment, rect distance is correct\n return rectDist;\n }\n\n // Ray hits a corner region — intersect with the corner circle\n const cx = (px > 0 ? 1 : -1) * (this.hw - br);\n const cy = (py > 0 ? 1 : -1) * (this.hh - br);\n\n // Solve: (t*cos - cx)^2 + (t*sin - cy)^2 = br^2\n // t^2 - 2t*(cos*cx + sin*cy) + (cx^2 + cy^2 - br^2) = 0\n const b = -(cos * cx + sin * cy);\n const c = cx * cx + cy * cy - br * br;\n const discriminant = b * b - c;\n\n if (discriminant < 0) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('[Clock] Negative discriminant in distanceToEdge — falling back to rectDist');\n }\n return rectDist;\n }\n\n const sqrtD = Math.sqrt(discriminant);\n const t = -b + sqrtD; // we want the farther intersection (outer edge)\n\n return t > 0 ? t : rectDist;\n }\n}\n\n/** Create the appropriate geometry for the given shape */\nexport function createGeometry(\n size: number,\n shape: 'circle' | 'rounded-rect' = 'circle',\n options?: { aspectRatio?: number; borderRadius?: number }\n): ClockGeometry {\n if (shape === 'rounded-rect') {\n const rawAspectRatio = options?.aspectRatio ?? 1;\n const aspectRatio = Number.isFinite(rawAspectRatio) ? Math.max(0.1, rawAspectRatio) : 1;\n const width = size;\n const height = Math.round(size * aspectRatio);\n // Default border radius: 20% of the shorter side (Apple Watch-like)\n const rawBorderRadius = options?.borderRadius ?? Math.round(Math.min(width, height) * 0.2);\n const borderRadius = Number.isFinite(rawBorderRadius) ? Math.max(0, rawBorderRadius) : 0;\n return new RoundedRectGeometry(width, height, borderRadius);\n }\n return new CircularGeometry(size);\n}\n"],"names":[],"mappings":"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"}
|