@linked.cm/calendar 0.1.1 → 0.1.2
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/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/package.d.ts +1 -1
- package/lib/esm/recurrence.js +82 -1
- package/lib/esm/recurrence.js.map +1 -1
- package/lib/esm/tz.d.ts +13 -0
- package/lib/esm/tz.js +38 -2
- package/lib/esm/tz.js.map +1 -1
- package/package.json +3 -3
package/lib/esm/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { Calendar, type CalLabels, type CalendarProps } from './Calendar.js';
|
|
|
6
6
|
export { expandRule, expandEvents } from './recurrence.js';
|
|
7
7
|
export { rangeForCalendarView } from './range.js';
|
|
8
8
|
export { createRefreshBus, useRefreshVersion, calendarBus, type RefreshBus } from './refreshBus.js';
|
|
9
|
-
export { viewerTz, formatTime, formatTimeZone, isCrossTz, dayKeyTz, inputValue, instantFromInput } from './tz.js';
|
|
9
|
+
export { viewerTz, formatTime, formatTimeZone, isCrossTz, dayKeyTz, inputValue, instantFromInput, instantFromZonedWallTime } from './tz.js';
|
|
10
10
|
export { calendarTranslations, defaultCalendarText } from './translations.js';
|
package/lib/esm/index.js
CHANGED
|
@@ -7,6 +7,6 @@ export { Calendar } from './Calendar.js';
|
|
|
7
7
|
export { expandRule, expandEvents } from './recurrence.js';
|
|
8
8
|
export { rangeForCalendarView } from './range.js';
|
|
9
9
|
export { createRefreshBus, useRefreshVersion, calendarBus } from './refreshBus.js';
|
|
10
|
-
export { viewerTz, formatTime, formatTimeZone, isCrossTz, dayKeyTz, inputValue, instantFromInput } from './tz.js';
|
|
10
|
+
export { viewerTz, formatTime, formatTimeZone, isCrossTz, dayKeyTz, inputValue, instantFromInput, instantFromZonedWallTime } from './tz.js';
|
|
11
11
|
export { calendarTranslations, defaultCalendarText } from './translations.js';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,sGAAsG;AACtG,OAAO,cAAc,CAAC;AAEtB,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAsC,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,sGAAsG;AACtG,OAAO,cAAc,CAAC;AAEtB,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAsC,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC5I,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/lib/esm/package.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Official first-party package identity. Hosting it inside Serve does not change its Linked identity. */
|
|
2
2
|
export declare const calendarPackageName: "@_linked/calendar";
|
|
3
3
|
export declare const calendarPackageBaseUri: "https://linked.cm/";
|
|
4
|
-
export declare const getPackageShape: (name: string) => import("@_linked/core/shapes/Shape.js").ShapeConstructor | undefined, linkedOntology: (allFileExports: any, nameSpace: (term: string) => import("@_linked/core/utils/NodeReference.js").NodeReferenceValue, suggestedPrefixAndFileName: string, loadDataFunction?: () => Promise<
|
|
4
|
+
export declare const getPackageShape: (name: string) => import("@_linked/core/shapes/Shape.js").ShapeConstructor | undefined, linkedOntology: (allFileExports: any, nameSpace: (term: string) => import("@_linked/core/utils/NodeReference.js").NodeReferenceValue, suggestedPrefixAndFileName: string, loadDataFunction?: () => Promise<unknown>, dataSource?: string | string[]) => void, linkedShape: {
|
|
5
5
|
<T extends typeof import("@_linked/core/shapes/Shape.js").Shape>(constructor: T): void;
|
|
6
6
|
<T extends typeof import("@_linked/core/shapes/Shape.js").Shape>(config?: import("@_linked/core/utils/Package").ShapeConfig): (constructor: T) => void;
|
|
7
7
|
}, linkedUtil: (constructor: any) => any, packageExports: any, packageMetadata: import("@_linked/core/utils/Package").PackageMetadata, registerPackageExport: (exportedObject: any) => void, registerPackageModule: (_module: any) => void;
|
package/lib/esm/recurrence.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
var _a, _b;
|
|
2
|
+
import { instantFromZonedWallTime, zonedParts } from './tz.js';
|
|
2
3
|
import * as rruleModule from 'rrule';
|
|
4
|
+
const DAY_MS = 86400000;
|
|
3
5
|
// rrule publishes ESM metadata over a CommonJS main. Vite exposes named exports
|
|
4
6
|
// in its browser prebundle but only `default` in Node SSR, so normalize the
|
|
5
7
|
// namespace without requiring either export form statically.
|
|
@@ -14,11 +16,69 @@ function overlaps(start, end, win) {
|
|
|
14
16
|
function formatUtcRecurrenceDate(date) {
|
|
15
17
|
return date.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
|
|
16
18
|
}
|
|
19
|
+
/** A zone this runtime can resolve. An unknown one keeps the UTC expansion rather than throwing. */
|
|
20
|
+
function isKnownZone(tz) {
|
|
21
|
+
try {
|
|
22
|
+
new Intl.DateTimeFormat('en-US', { timeZone: tz });
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function hasDtstart(rule) {
|
|
30
|
+
return /^DTSTART(?:;|:)/im.test(rule);
|
|
31
|
+
}
|
|
17
32
|
function withDtstart(rule, start) {
|
|
18
|
-
return
|
|
33
|
+
return hasDtstart(rule)
|
|
19
34
|
? rule
|
|
20
35
|
: `DTSTART:${formatUtcRecurrenceDate(start)}\n${rule}`;
|
|
21
36
|
}
|
|
37
|
+
/** Express an instant's wall-clock components in `tz` as a floating UTC Date for rrule evaluation. */
|
|
38
|
+
function toFloatingDate(instant, tz) {
|
|
39
|
+
const p = zonedParts(instant, tz);
|
|
40
|
+
return new Date(Date.UTC(p.y, p.mo - 1, p.d, p.hour, p.minute, p.second));
|
|
41
|
+
}
|
|
42
|
+
/** Convert a floating UTC Date returned by rrule back to the real instant in `tz`. */
|
|
43
|
+
function fromFloatingDate(floating, tz) {
|
|
44
|
+
return instantFromZonedWallTime({
|
|
45
|
+
y: floating.getUTCFullYear(),
|
|
46
|
+
mo: floating.getUTCMonth() + 1,
|
|
47
|
+
d: floating.getUTCDate(),
|
|
48
|
+
hour: floating.getUTCHours(),
|
|
49
|
+
minute: floating.getUTCMinutes(),
|
|
50
|
+
second: floating.getUTCSeconds(),
|
|
51
|
+
}, tz);
|
|
52
|
+
}
|
|
53
|
+
function rewriteUtcTokenToFloating(token, tz) {
|
|
54
|
+
const m = /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})Z$/i.exec(token.trim());
|
|
55
|
+
if (!m)
|
|
56
|
+
return token;
|
|
57
|
+
const instant = new Date(Date.UTC(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6]));
|
|
58
|
+
return formatUtcRecurrenceDate(toFloatingDate(instant, tz));
|
|
59
|
+
}
|
|
60
|
+
/** Rewrite UTC instants (`...Z`) in UNTIL, EXDATE, and RDATE into floating wall-time tokens in `tz`
|
|
61
|
+
* so rrule compares them in the same floating space as DTSTART. Leaves non-Z or TZID values untouched. */
|
|
62
|
+
function rewriteRuleToFloating(rule, tz) {
|
|
63
|
+
const unfolded = rule.replace(/\r?\n[ \t]/g, '');
|
|
64
|
+
return unfolded
|
|
65
|
+
.split(/\r?\n/)
|
|
66
|
+
.map((line) => {
|
|
67
|
+
const exOrRdate = /^(EXDATE|RDATE)((?:;[^:]+)?)?:(.*)$/i.exec(line);
|
|
68
|
+
if (exOrRdate) {
|
|
69
|
+
const [, prop, params = '', values] = exOrRdate;
|
|
70
|
+
if (/(?:^|;)TZID=/i.test(params))
|
|
71
|
+
return line;
|
|
72
|
+
const rewritten = values
|
|
73
|
+
.split(',')
|
|
74
|
+
.map((v) => rewriteUtcTokenToFloating(v, tz))
|
|
75
|
+
.join(',');
|
|
76
|
+
return `${prop}${params}:${rewritten}`;
|
|
77
|
+
}
|
|
78
|
+
return line.replace(/(\bUNTIL=)(\d{8}T\d{6}Z)\b/gi, (_, prefix, token) => `${prefix}${rewriteUtcTokenToFloating(token, tz)}`);
|
|
79
|
+
})
|
|
80
|
+
.join('\n');
|
|
81
|
+
}
|
|
22
82
|
/**
|
|
23
83
|
* Expand one graph-projected base event into instances overlapping `win`.
|
|
24
84
|
*
|
|
@@ -27,6 +87,7 @@ function withDtstart(rule, start) {
|
|
|
27
87
|
* returned instances are projections and never become an authoritative event store.
|
|
28
88
|
*/
|
|
29
89
|
export function expandRule(base, rule, win) {
|
|
90
|
+
var _a;
|
|
30
91
|
if (!rule)
|
|
31
92
|
return overlaps(base.start, base.end, win) ? [base] : [];
|
|
32
93
|
const duration = base.end.getTime() - base.start.getTime();
|
|
@@ -36,6 +97,26 @@ export function expandRule(base, rule, win) {
|
|
|
36
97
|
if (!(win.start < win.end)) {
|
|
37
98
|
throw new RangeError('Calendar recurrence window must end after it starts');
|
|
38
99
|
}
|
|
100
|
+
const tz = (_a = base.tz) === null || _a === void 0 ? void 0 : _a.trim();
|
|
101
|
+
if (tz && tz !== 'UTC' && isKnownZone(tz) && !hasDtstart(rule)) {
|
|
102
|
+
const floatingStart = toFloatingDate(base.start, tz);
|
|
103
|
+
const recurrence = rrulestr(`DTSTART:${formatUtcRecurrenceDate(floatingStart)}\n${rewriteRuleToFloating(rule, tz)}`, {
|
|
104
|
+
forceset: true,
|
|
105
|
+
unfold: true,
|
|
106
|
+
});
|
|
107
|
+
// Pad the floating query window by 1 day on each side to cover timezone and DST offsets,
|
|
108
|
+
// then filter converted instants against the real half-open window.
|
|
109
|
+
const queryStart = new Date(toFloatingDate(win.start, tz).getTime() - duration - DAY_MS);
|
|
110
|
+
const queryEnd = new Date(toFloatingDate(win.end, tz).getTime() + DAY_MS);
|
|
111
|
+
return recurrence
|
|
112
|
+
.between(queryStart, queryEnd, true)
|
|
113
|
+
.map((occurrenceStart) => {
|
|
114
|
+
const start = fromFloatingDate(occurrenceStart, tz);
|
|
115
|
+
const end = new Date(start.getTime() + duration);
|
|
116
|
+
return { ...base, id: `${base.id}@${start.toISOString()}`, start, end, recurringInstance: true };
|
|
117
|
+
})
|
|
118
|
+
.filter(({ start, end }) => overlaps(start, end, win));
|
|
119
|
+
}
|
|
39
120
|
const recurrence = rrulestr(withDtstart(rule, base.start), {
|
|
40
121
|
forceset: true,
|
|
41
122
|
unfold: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurrence.js","sourceRoot":"","sources":["../../src/recurrence.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,WAAW,MAAM,OAAO,CAAC;AAErC,gFAAgF;AAChF,4EAA4E;AAC5E,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,WAEhB,CAAC;AACF,MAAM,QAAQ,GAAG,MAAA,QAAQ,CAAC,QAAQ,mCAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,QAAQ,CAAC;AAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACd,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAW,EAAE,GAAS,EAAE,GAAa;IACrD,OAAO,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAU;IACzC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"recurrence.js","sourceRoot":"","sources":["../../src/recurrence.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/tz.d.ts
CHANGED
|
@@ -4,8 +4,17 @@ export interface ZonedParts {
|
|
|
4
4
|
d: number;
|
|
5
5
|
hour: number;
|
|
6
6
|
minute: number;
|
|
7
|
+
second: number;
|
|
7
8
|
weekday: number;
|
|
8
9
|
}
|
|
10
|
+
export interface ZonedWallTime {
|
|
11
|
+
y: number;
|
|
12
|
+
mo: number;
|
|
13
|
+
d: number;
|
|
14
|
+
hour: number;
|
|
15
|
+
minute: number;
|
|
16
|
+
second?: number;
|
|
17
|
+
}
|
|
9
18
|
/** Wall-clock parts of an instant in the given tz (or the browser's if omitted). */
|
|
10
19
|
export declare function zonedParts(date: Date, tz?: string): ZonedParts;
|
|
11
20
|
export declare const dayKey: (y: number, mo: number, d: number) => string;
|
|
@@ -28,3 +37,7 @@ export declare function instantFromInput(value: string, tz?: string): Date | nul
|
|
|
28
37
|
/** Build an absolute instant from a tz day + minutes-into-day. Used when a drag/select produces a new
|
|
29
38
|
* wall-clock time in the display tz and we need the UTC instant to persist. Finds the offset by probing. */
|
|
30
39
|
export declare function instantFromZoned(y: number, mo: number, d: number, minutes: number, tz?: string): Date;
|
|
40
|
+
/** Convert wall-clock parts (including seconds) in `tz` to a real UTC instant via Intl offset probing.
|
|
41
|
+
* Spring-forward DST gaps resolve to the first instant whose wall time is not before the target;
|
|
42
|
+
* ambiguous fall-back times resolve to the earlier instant. */
|
|
43
|
+
export declare function instantFromZonedWallTime(parts: ZonedWallTime, tz?: string): Date;
|
package/lib/esm/tz.js
CHANGED
|
@@ -4,11 +4,11 @@ const WD = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };
|
|
|
4
4
|
/** Wall-clock parts of an instant in the given tz (or the browser's if omitted). */
|
|
5
5
|
export function zonedParts(date, tz) {
|
|
6
6
|
var _a;
|
|
7
|
-
const fmt = new Intl.DateTimeFormat('en-US', { timeZone: tz, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false, weekday: 'short' });
|
|
7
|
+
const fmt = new Intl.DateTimeFormat('en-US', { timeZone: tz, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, weekday: 'short' });
|
|
8
8
|
const p = {};
|
|
9
9
|
for (const part of fmt.formatToParts(date))
|
|
10
10
|
p[part.type] = part.value;
|
|
11
|
-
return { y: +p.year, mo: +p.month, d: +p.day, hour: p.hour === '24' ? 0 : +p.hour, minute: +p.minute, weekday: (_a = WD[p.weekday]) !== null && _a !== void 0 ? _a : 0 };
|
|
11
|
+
return { y: +p.year, mo: +p.month, d: +p.day, hour: p.hour === '24' ? 0 : +p.hour, minute: +p.minute, second: +p.second, weekday: (_a = WD[p.weekday]) !== null && _a !== void 0 ? _a : 0 };
|
|
12
12
|
}
|
|
13
13
|
export const dayKey = (y, mo, d) => `${y}-${String(mo).padStart(2, '0')}-${String(d).padStart(2, '0')}`;
|
|
14
14
|
/** Calendar day (Y-M-D) of an instant, in the given tz. Use to bucket events into day cells. */
|
|
@@ -75,4 +75,40 @@ export function instantFromZoned(y, mo, d, minutes, tz) {
|
|
|
75
75
|
}
|
|
76
76
|
return guess;
|
|
77
77
|
}
|
|
78
|
+
function wallMs(ms, tz) {
|
|
79
|
+
const z = zonedParts(new Date(ms), tz);
|
|
80
|
+
return Date.UTC(z.y, z.mo - 1, z.d, z.hour, z.minute, z.second);
|
|
81
|
+
}
|
|
82
|
+
/** Convert wall-clock parts (including seconds) in `tz` to a real UTC instant via Intl offset probing.
|
|
83
|
+
* Spring-forward DST gaps resolve to the first instant whose wall time is not before the target;
|
|
84
|
+
* ambiguous fall-back times resolve to the earlier instant. */
|
|
85
|
+
export function instantFromZonedWallTime(parts, tz) {
|
|
86
|
+
var _a;
|
|
87
|
+
const target = Date.UTC(parts.y, parts.mo - 1, parts.d, parts.hour, parts.minute, (_a = parts.second) !== null && _a !== void 0 ? _a : 0);
|
|
88
|
+
if (tz === 'UTC')
|
|
89
|
+
return new Date(target);
|
|
90
|
+
let guess = target;
|
|
91
|
+
let firstNotBefore = Infinity;
|
|
92
|
+
for (let i = 0; i < 8; i++) {
|
|
93
|
+
const wall = wallMs(guess, tz);
|
|
94
|
+
const delta = wall - target;
|
|
95
|
+
if (delta === 0) {
|
|
96
|
+
// Check two hours back to detect whether a fall-back transition produced an earlier matching instant.
|
|
97
|
+
const prev = guess - 2 * 3600000;
|
|
98
|
+
const earlier = target - (wallMs(prev, tz) - prev);
|
|
99
|
+
if (earlier < guess && wallMs(earlier, tz) === target) {
|
|
100
|
+
return new Date(earlier);
|
|
101
|
+
}
|
|
102
|
+
return new Date(guess);
|
|
103
|
+
}
|
|
104
|
+
if (wall >= target && guess < firstNotBefore) {
|
|
105
|
+
firstNotBefore = guess;
|
|
106
|
+
}
|
|
107
|
+
guess -= delta;
|
|
108
|
+
}
|
|
109
|
+
if (wallMs(guess, tz) >= target && guess < firstNotBefore) {
|
|
110
|
+
firstNotBefore = guess;
|
|
111
|
+
}
|
|
112
|
+
return new Date(Number.isFinite(firstNotBefore) ? firstNotBefore : guess);
|
|
113
|
+
}
|
|
78
114
|
//# sourceMappingURL=tz.js.map
|
package/lib/esm/tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../src/tz.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,qFAAqF;
|
|
1
|
+
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../src/tz.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linked.cm/calendar",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "A shape-agnostic, controlled LINKED calendar engine shared by Serve and Create Now applications.",
|
|
5
5
|
"linkedPackage": true,
|
|
6
6
|
"type": "module",
|
|
7
|
-
"packageManager": "npm@
|
|
7
|
+
"packageManager": "npm@12.2.0",
|
|
8
8
|
"main": "lib/esm/index.js",
|
|
9
9
|
"module": "lib/esm/index.js",
|
|
10
10
|
"types": "lib/esm/index.d.ts",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"react-dom": "^18.2.0 || ^19.0.0"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@_linked/cli": "1.
|
|
80
|
+
"@_linked/cli": "1.61.0",
|
|
81
81
|
"@changesets/changelog-github": "^1.0.0",
|
|
82
82
|
"@changesets/cli": "^3.0.0",
|
|
83
83
|
"@types/node": "^20.12.7",
|