@calchemy/date-react 0.1.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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/calendar-scroll.d.ts +2 -0
  3. package/dist/calendar-scroll.d.ts.map +1 -0
  4. package/dist/calendar-scroll.js +225 -0
  5. package/dist/calendar-scroll.js.map +1 -0
  6. package/dist/chunk-KI7GMSS3.js +451 -0
  7. package/dist/chunk-KI7GMSS3.js.map +1 -0
  8. package/dist/chunk-NGJGJXY4.js +34 -0
  9. package/dist/chunk-NGJGJXY4.js.map +1 -0
  10. package/dist/components/Calchemy.d.ts +50 -0
  11. package/dist/components/Calchemy.d.ts.map +1 -0
  12. package/dist/components/Calchemy.js +57 -0
  13. package/dist/components/Calchemy.js.map +1 -0
  14. package/dist/components/calendar/Calendar.d.ts +19 -0
  15. package/dist/components/calendar/Calendar.d.ts.map +1 -0
  16. package/dist/components/calendar/Calendar.js +218 -0
  17. package/dist/components/calendar/Calendar.js.map +1 -0
  18. package/dist/components/calendar/CalendarGrid.d.ts +12 -0
  19. package/dist/components/calendar/CalendarGrid.d.ts.map +1 -0
  20. package/dist/components/calendar/CalendarGrid.js +93 -0
  21. package/dist/components/calendar/CalendarGrid.js.map +1 -0
  22. package/dist/components/calendar/CalendarPeriod.d.ts +6 -0
  23. package/dist/components/calendar/CalendarPeriod.d.ts.map +1 -0
  24. package/dist/components/calendar/CalendarPeriod.js +42 -0
  25. package/dist/components/calendar/CalendarPeriod.js.map +1 -0
  26. package/dist/components/calendar/CalendarPeriodHeading.d.ts +4 -0
  27. package/dist/components/calendar/CalendarPeriodHeading.d.ts.map +1 -0
  28. package/dist/components/calendar/CalendarPeriodHeading.js +9 -0
  29. package/dist/components/calendar/CalendarPeriodHeading.js.map +1 -0
  30. package/dist/components/calendar/CalendarPeriodList.d.ts +6 -0
  31. package/dist/components/calendar/CalendarPeriodList.d.ts.map +1 -0
  32. package/dist/components/calendar/CalendarPeriodList.js +93 -0
  33. package/dist/components/calendar/CalendarPeriodList.js.map +1 -0
  34. package/dist/components/calendar/CalendarScroll.d.ts +8 -0
  35. package/dist/components/calendar/CalendarScroll.d.ts.map +1 -0
  36. package/dist/components/calendar/CalendarScroll.js +115 -0
  37. package/dist/components/calendar/CalendarScroll.js.map +1 -0
  38. package/dist/components/calendar/CalendarSelects.d.ts +12 -0
  39. package/dist/components/calendar/CalendarSelects.d.ts.map +1 -0
  40. package/dist/components/calendar/CalendarSelects.js +31 -0
  41. package/dist/components/calendar/CalendarSelects.js.map +1 -0
  42. package/dist/components/calendar/calendar-period-drag.d.ts +74 -0
  43. package/dist/components/calendar/calendar-period-drag.d.ts.map +1 -0
  44. package/dist/components/calendar/calendar-period-drag.js +374 -0
  45. package/dist/components/calendar/calendar-period-drag.js.map +1 -0
  46. package/dist/components/calendar/context.d.ts +10 -0
  47. package/dist/components/calendar/context.d.ts.map +1 -0
  48. package/dist/components/calendar/context.js +23 -0
  49. package/dist/components/calendar/context.js.map +1 -0
  50. package/dist/components/calendar/date-model.d.ts +36 -0
  51. package/dist/components/calendar/date-model.d.ts.map +1 -0
  52. package/dist/components/calendar/date-model.js +257 -0
  53. package/dist/components/calendar/date-model.js.map +1 -0
  54. package/dist/components/calendar/scroll-preload.d.ts +10 -0
  55. package/dist/components/calendar/scroll-preload.d.ts.map +1 -0
  56. package/dist/components/calendar/scroll-preload.js +80 -0
  57. package/dist/components/calendar/scroll-preload.js.map +1 -0
  58. package/dist/components/calendar/types.d.ts +68 -0
  59. package/dist/components/calendar/types.d.ts.map +1 -0
  60. package/dist/components/calendar/types.js +2 -0
  61. package/dist/components/calendar/types.js.map +1 -0
  62. package/dist/hooks/useCalchemy.d.ts +52 -0
  63. package/dist/hooks/useCalchemy.d.ts.map +1 -0
  64. package/dist/hooks/useCalchemy.js +161 -0
  65. package/dist/hooks/useCalchemy.js.map +1 -0
  66. package/dist/hooks/useDebouncedValue.d.ts +3 -0
  67. package/dist/hooks/useDebouncedValue.d.ts.map +1 -0
  68. package/dist/hooks/useDebouncedValue.js +15 -0
  69. package/dist/hooks/useDebouncedValue.js.map +1 -0
  70. package/dist/index.d.ts +6 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +3 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/inline-completion.d.ts +4 -0
  75. package/dist/inline-completion.d.ts.map +1 -0
  76. package/dist/inline-completion.js +7 -0
  77. package/dist/inline-completion.js.map +1 -0
  78. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCalchemy.d.ts","sourceRoot":"","sources":["../../src/hooks/useCalchemy.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,+BAA+B,EAChC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,+BAA+B,GAAG;IACjE,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,iBAAiB,CAAC;IACjC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,gBAAgB,IAAI,IAAI,CAAC;IACzB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,aAAa,IAAI;QACf,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,KAAK,EAAE;YAAE,aAAa,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,IAAI,CAAC;QAC5D,SAAS,CAAC,KAAK,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,cAAc,IAAI,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;QAChE,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;QAC/D,yBAAyB,EAAE,iBAAiB,GAAG,SAAS,CAAC;QACzD,qBAAqB,EAAE,iBAAiB,GAAG,SAAS,CAAC;KACtD,CAAC;CACH,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa,CA4LtE"}
@@ -0,0 +1,161 @@
1
+ import { useEffect, useMemo, useState } from "react";
2
+ import { resolveExpectedDateValue } from "@calchemy/date-core";
3
+ import { composeInlineCompletion, formatInlineCompletionDescription, } from "../inline-completion";
4
+ import { useDebouncedValue } from "./useDebouncedValue";
5
+ export function useCalchemy(options) {
6
+ const [uncontrolledInputValue, setUncontrolledInputValue] = useState(options.defaultInputValue ?? "");
7
+ const [uncontrolledValue, setUncontrolledValue] = useState(options.defaultValue ?? null);
8
+ const [uncontrolledInputMode, setUncontrolledInputMode] = useState(options.defaultInputMode ?? "field");
9
+ const inputValue = options.inputValue ?? uncontrolledInputValue;
10
+ const value = options.value ?? uncontrolledValue;
11
+ const inputMode = options.inputMode ?? uncontrolledInputMode;
12
+ const fieldInputActive = inputMode === "field";
13
+ const queryValue = useDebouncedValue(inputValue);
14
+ const queryPending = inputValue !== queryValue;
15
+ const result = useMemo(() => options.calchemy.parseDate(queryValue, options.parseContext), [queryValue, options.calchemy, options.parseContext]);
16
+ const expectedValue = options.expectedValue;
17
+ const expectedOptions = {
18
+ ...(options.multipleRangeExpansionLimit === undefined
19
+ ? {}
20
+ : { multipleRangeExpansionLimit: options.multipleRangeExpansionLimit }),
21
+ };
22
+ const expectedResult = resolveExpectedDateValue(result, expectedValue, expectedOptions);
23
+ const valueKindMismatch = expectedResult.status === "invalid" && result.status === "valid";
24
+ const settledInlineCompletion = useMemo(() => options.calchemy.getInlineCompletion(queryValue, options.parseContext), [queryValue, options.calchemy, options.parseContext]);
25
+ const inlineCompletion = queryPending ? null : settledInlineCompletion;
26
+ function updateValue(nextValue, nextResult = result) {
27
+ if (options.value === undefined) {
28
+ setUncontrolledValue(nextValue);
29
+ }
30
+ options.onValueChange?.(nextValue, nextResult);
31
+ }
32
+ useEffect(() => {
33
+ const nextResult = options.calchemy.parseDate(queryValue, options.parseContext);
34
+ const nextExpectedResult = resolveExpectedDateValue(nextResult, expectedValue, expectedOptions);
35
+ if (nextExpectedResult.status === "valid") {
36
+ if (options.value === undefined) {
37
+ setUncontrolledValue(nextExpectedResult.value);
38
+ }
39
+ options.onValueChange?.(nextExpectedResult.value, nextExpectedResult);
40
+ }
41
+ }, [
42
+ queryValue,
43
+ expectedValue,
44
+ expectedOptions.multipleRangeExpansionLimit,
45
+ options.calchemy,
46
+ options.parseContext,
47
+ ]);
48
+ function updateInputValue(nextValue) {
49
+ if (options.inputValue === undefined) {
50
+ setUncontrolledInputValue(nextValue);
51
+ }
52
+ options.onInputValueChange?.(nextValue);
53
+ }
54
+ function getActiveInlineCompletion() {
55
+ if (!fieldInputActive || queryPending) {
56
+ return null;
57
+ }
58
+ return settledInlineCompletion;
59
+ }
60
+ function setInputMode(nextMode) {
61
+ if (options.inputMode === undefined) {
62
+ setUncontrolledInputMode(nextMode);
63
+ }
64
+ options.onInputModeChange?.(nextMode);
65
+ }
66
+ function acceptCompletion() {
67
+ const activeCompletion = getActiveInlineCompletion();
68
+ if (!activeCompletion) {
69
+ return;
70
+ }
71
+ updateInputValue(composeInlineCompletion(inputValue, activeCompletion));
72
+ }
73
+ function selectCandidate(candidateId) {
74
+ if (!fieldInputActive || result.status !== "ambiguous") {
75
+ return;
76
+ }
77
+ const candidate = result.candidates.find((item) => item.id === candidateId);
78
+ if (!candidate) {
79
+ return;
80
+ }
81
+ const candidateResult = {
82
+ status: "valid",
83
+ input: inputValue,
84
+ value: candidate.value,
85
+ candidates: [candidate],
86
+ corrections: result.corrections,
87
+ warnings: result.warnings,
88
+ };
89
+ const resolvedCandidateResult = resolveExpectedDateValue(candidateResult, expectedValue, expectedOptions);
90
+ if (resolvedCandidateResult.status !== "valid") {
91
+ return;
92
+ }
93
+ updateValue(resolvedCandidateResult.value, resolvedCandidateResult);
94
+ }
95
+ function selectDate(nextValue) {
96
+ const nextResult = {
97
+ status: "valid",
98
+ input: inputValue,
99
+ value: nextValue,
100
+ candidates: [],
101
+ corrections: [],
102
+ warnings: [],
103
+ };
104
+ const resolvedResult = resolveExpectedDateValue(nextResult, expectedValue, expectedOptions);
105
+ if (resolvedResult.status !== "valid") {
106
+ return;
107
+ }
108
+ updateValue(resolvedResult.value, resolvedResult);
109
+ if (resolvedResult.value.kind === "single") {
110
+ updateInputValue(resolvedResult.value.date.toString());
111
+ }
112
+ }
113
+ return {
114
+ calchemy: options.calchemy,
115
+ parseContext: options.parseContext,
116
+ inputValue,
117
+ value,
118
+ result: expectedResult,
119
+ expectedValue,
120
+ inputMode,
121
+ valueKindMismatch,
122
+ inlineCompletion,
123
+ setInputValue: updateInputValue,
124
+ setInputMode,
125
+ acceptCompletion,
126
+ selectCandidate,
127
+ selectDate,
128
+ getInputProps() {
129
+ const activeCompletion = getActiveInlineCompletion();
130
+ return {
131
+ value: inputValue,
132
+ readOnly: !fieldInputActive,
133
+ onChange(event) {
134
+ if (!fieldInputActive) {
135
+ return;
136
+ }
137
+ updateInputValue(event.currentTarget.value);
138
+ },
139
+ onKeyDown(event) {
140
+ if (!fieldInputActive) {
141
+ return;
142
+ }
143
+ if (event.key === "Tab" && activeCompletion) {
144
+ event.preventDefault();
145
+ acceptCompletion();
146
+ }
147
+ },
148
+ "aria-invalid": expectedResult.status === "invalid",
149
+ ...(fieldInputActive && inlineCompletion
150
+ ? {
151
+ "aria-description": formatInlineCompletionDescription(inputValue, inlineCompletion),
152
+ }
153
+ : {}),
154
+ "calchemy-status": valueKindMismatch ? "kind-mismatch" : expectedResult.status,
155
+ "calchemy-expected-value": expectedValue,
156
+ "calchemy-value-kind": expectedResult.status === "valid" ? expectedResult.value.kind : undefined,
157
+ };
158
+ },
159
+ };
160
+ }
161
+ //# sourceMappingURL=useCalchemy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCalchemy.js","sourceRoot":"","sources":["../../src/hooks/useCalchemy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const PARSE_QUERY_DEBOUNCE_MS = 150;
2
+ export declare function useDebouncedValue<T>(value: T, delayMs?: number): T;
3
+ //# sourceMappingURL=useDebouncedValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebouncedValue.d.ts","sourceRoot":"","sources":["../../src/hooks/useDebouncedValue.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,SAA0B,GAAG,CAAC,CAcnF"}
@@ -0,0 +1,15 @@
1
+ import { useEffect, useState } from "react";
2
+ export const PARSE_QUERY_DEBOUNCE_MS = 150;
3
+ export function useDebouncedValue(value, delayMs = PARSE_QUERY_DEBOUNCE_MS) {
4
+ const [debouncedValue, setDebouncedValue] = useState(value);
5
+ useEffect(() => {
6
+ const timeoutId = setTimeout(() => {
7
+ setDebouncedValue(value);
8
+ }, delayMs);
9
+ return () => {
10
+ clearTimeout(timeoutId);
11
+ };
12
+ }, [value, delayMs]);
13
+ return debouncedValue;
14
+ }
15
+ //# sourceMappingURL=useDebouncedValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebouncedValue.js","sourceRoot":"","sources":["../../src/hooks/useDebouncedValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,OAAO,GAAG,uBAAuB;IAC9E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAErB,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { Calchemy, useCalchemyCalendar, useCalchemyContext } from "./components/Calchemy";
2
+ export type { CalendarBounds, CalendarDuration, CalendarNamedDates, CalendarPeriodModel, CalendarPeriodUnit, CalendarState, CalendarWeekdayFormat, CalchemyCalendarGridProps, CalchemyCalendarHeaderProps, CalchemyCalendarHeadingProps, CalchemyCalendarMonthSelectProps, CalchemyCalendarNavigationProps, CalchemyCalendarPeriodHeadingProps, CalchemyCalendarPeriodListProps, CalchemyCalendarPeriodProps, CalchemyCalendarProps, CalchemyCalendarWeekdaysProps, CalchemyCalendarYearSelectProps, CalchemyCandidatesProps, CalchemyFieldProps, CalchemyInputModeProps, CalchemyRootProps, ParsedCalendarPeriod, } from "./components/Calchemy";
3
+ export { useCalchemy } from "./hooks/useCalchemy";
4
+ export type { ExpectedDateValue } from "@calchemy/date-core";
5
+ export type { CalchemyInputMode, CalchemyState, UseCalchemyOptions } from "./hooks/useCalchemy";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Calchemy, useCalchemyCalendar, useCalchemyContext } from "./components/Calchemy";
2
+ export { useCalchemy } from "./hooks/useCalchemy";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA0B1F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { InlineCompletion } from "@calchemy/date-core";
2
+ export declare function composeInlineCompletion(inputValue: string, completion: InlineCompletion): string;
3
+ export declare function formatInlineCompletionDescription(inputValue: string, completion: InlineCompletion): string;
4
+ //# sourceMappingURL=inline-completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-completion.d.ts","sourceRoot":"","sources":["../src/inline-completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CAER;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CAER"}
@@ -0,0 +1,7 @@
1
+ export function composeInlineCompletion(inputValue, completion) {
2
+ return `${inputValue}${completion.suffix}`;
3
+ }
4
+ export function formatInlineCompletionDescription(inputValue, completion) {
5
+ return `Suggestion: ${composeInlineCompletion(inputValue, completion)}. Press Tab to accept.`;
6
+ }
7
+ //# sourceMappingURL=inline-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-completion.js","sourceRoot":"","sources":["../src/inline-completion.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,UAA4B;IAE5B,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,UAAkB,EAClB,UAA4B;IAE5B,OAAO,eAAe,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,wBAAwB,CAAC;AAChG,CAAC"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@calchemy/date-react",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Headless React primitives for Calchemy date input.",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/ikartik90/calchemy.git"
10
+ },
11
+ "homepage": "https://github.com/ikartik90/calchemy#readme",
12
+ "bugs": "https://github.com/ikartik90/calchemy/issues",
13
+ "keywords": [
14
+ "date",
15
+ "parser",
16
+ "temporal",
17
+ "natural-language"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "sideEffects": false,
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ },
28
+ "./calendar-scroll": {
29
+ "types": "./dist/calendar-scroll.d.ts",
30
+ "import": "./dist/calendar-scroll.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "dependencies": {
37
+ "@calchemy/date-core": "0.1.0"
38
+ },
39
+ "peerDependencies": {
40
+ "react": ">=18.3.0 || >=19.0.0",
41
+ "react-dom": ">=18.3.0 || >=19.0.0"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "react-dom": {
45
+ "optional": true
46
+ }
47
+ },
48
+ "devDependencies": {},
49
+ "scripts": {
50
+ "build": "tsup src/index.ts src/calendar-scroll.ts --format esm --sourcemap --tsconfig tsconfig.build.json --external react --external react-dom --external react/jsx-runtime --external @calchemy/date-core && tsc -p tsconfig.build.json --emitDeclarationOnly",
51
+ "test": "pnpm run build && vitest run --root ../.. --config vitest.config.ts packages/date-react/tests --environment jsdom",
52
+ "typecheck": "tsc -b && tsc -p tsconfig.test.json --noEmit",
53
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
54
+ }
55
+ }