react-native-ruler-date-picker 0.1.0 → 0.2.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 (220) hide show
  1. package/README.md +186 -60
  2. package/lib/commonjs/LensTick.js +83 -0
  3. package/lib/commonjs/LensTick.js.map +1 -0
  4. package/lib/commonjs/Ruler.js +38 -0
  5. package/lib/commonjs/Ruler.js.map +1 -0
  6. package/lib/commonjs/RulerContext.js +17 -0
  7. package/lib/commonjs/RulerContext.js.map +1 -0
  8. package/lib/commonjs/RulerDatePicker.js +38 -351
  9. package/lib/commonjs/RulerDatePicker.js.map +1 -1
  10. package/lib/commonjs/RulerDateRangePicker.js +56 -0
  11. package/lib/commonjs/RulerDateRangePicker.js.map +1 -0
  12. package/lib/commonjs/RulerHeader.js +106 -0
  13. package/lib/commonjs/RulerHeader.js.map +1 -0
  14. package/lib/commonjs/RulerIndicator.js +67 -0
  15. package/lib/commonjs/RulerIndicator.js.map +1 -0
  16. package/lib/commonjs/RulerLensTicks.js +55 -0
  17. package/lib/commonjs/RulerLensTicks.js.map +1 -0
  18. package/lib/commonjs/RulerLensTrack.js +52 -0
  19. package/lib/commonjs/RulerLensTrack.js.map +1 -0
  20. package/lib/commonjs/RulerRange.js +39 -0
  21. package/lib/commonjs/RulerRange.js.map +1 -0
  22. package/lib/commonjs/RulerRangeContext.js +17 -0
  23. package/lib/commonjs/RulerRangeContext.js.map +1 -0
  24. package/lib/commonjs/RulerRangeHeader.js +154 -0
  25. package/lib/commonjs/RulerRangeHeader.js.map +1 -0
  26. package/lib/commonjs/RulerRangeHighlight.js +50 -0
  27. package/lib/commonjs/RulerRangeHighlight.js.map +1 -0
  28. package/lib/commonjs/RulerRangeIndicator.js +71 -0
  29. package/lib/commonjs/RulerRangeIndicator.js.map +1 -0
  30. package/lib/commonjs/RulerRangeRoot.js +80 -0
  31. package/lib/commonjs/RulerRangeRoot.js.map +1 -0
  32. package/lib/commonjs/RulerRangeTicks.js +57 -0
  33. package/lib/commonjs/RulerRangeTicks.js.map +1 -0
  34. package/lib/commonjs/RulerRangeTrack.js +46 -0
  35. package/lib/commonjs/RulerRangeTrack.js.map +1 -0
  36. package/lib/commonjs/RulerResetButton.js +46 -0
  37. package/lib/commonjs/RulerResetButton.js.map +1 -0
  38. package/lib/commonjs/RulerRoot.js +87 -0
  39. package/lib/commonjs/RulerRoot.js.map +1 -0
  40. package/lib/commonjs/RulerTicks.js +51 -0
  41. package/lib/commonjs/RulerTicks.js.map +1 -0
  42. package/lib/commonjs/RulerTrack.js +46 -0
  43. package/lib/commonjs/RulerTrack.js.map +1 -0
  44. package/lib/commonjs/Tick.js +41 -36
  45. package/lib/commonjs/Tick.js.map +1 -1
  46. package/lib/commonjs/defaults.js +20 -19
  47. package/lib/commonjs/defaults.js.map +1 -1
  48. package/lib/commonjs/index.js +287 -1
  49. package/lib/commonjs/index.js.map +1 -1
  50. package/lib/commonjs/presets.js +108 -0
  51. package/lib/commonjs/presets.js.map +1 -0
  52. package/lib/commonjs/tickResolver.js +101 -0
  53. package/lib/commonjs/tickResolver.js.map +1 -0
  54. package/lib/commonjs/useHaptics.js +1 -1
  55. package/lib/commonjs/useHaptics.web.js +43 -0
  56. package/lib/commonjs/useHaptics.web.js.map +1 -0
  57. package/lib/commonjs/useRulerDatePicker.js +264 -0
  58. package/lib/commonjs/useRulerDatePicker.js.map +1 -0
  59. package/lib/commonjs/useRulerDateRangePicker.js +313 -0
  60. package/lib/commonjs/useRulerDateRangePicker.js.map +1 -0
  61. package/lib/commonjs/utils.js +61 -47
  62. package/lib/commonjs/utils.js.map +1 -1
  63. package/lib/module/LensTick.js +77 -0
  64. package/lib/module/LensTick.js.map +1 -0
  65. package/lib/module/Ruler.js +35 -0
  66. package/lib/module/Ruler.js.map +1 -0
  67. package/lib/module/RulerContext.js +12 -0
  68. package/lib/module/RulerContext.js.map +1 -0
  69. package/lib/module/RulerDatePicker.js +38 -350
  70. package/lib/module/RulerDatePicker.js.map +1 -1
  71. package/lib/module/RulerDateRangePicker.js +52 -0
  72. package/lib/module/RulerDateRangePicker.js.map +1 -0
  73. package/lib/module/RulerHeader.js +101 -0
  74. package/lib/module/RulerHeader.js.map +1 -0
  75. package/lib/module/RulerIndicator.js +62 -0
  76. package/lib/module/RulerIndicator.js.map +1 -0
  77. package/lib/module/RulerLensTicks.js +50 -0
  78. package/lib/module/RulerLensTicks.js.map +1 -0
  79. package/lib/module/RulerLensTrack.js +47 -0
  80. package/lib/module/RulerLensTrack.js.map +1 -0
  81. package/lib/module/RulerRange.js +36 -0
  82. package/lib/module/RulerRange.js.map +1 -0
  83. package/lib/module/RulerRangeContext.js +12 -0
  84. package/lib/module/RulerRangeContext.js.map +1 -0
  85. package/lib/module/RulerRangeHeader.js +149 -0
  86. package/lib/module/RulerRangeHeader.js.map +1 -0
  87. package/lib/module/RulerRangeHighlight.js +45 -0
  88. package/lib/module/RulerRangeHighlight.js.map +1 -0
  89. package/lib/module/RulerRangeIndicator.js +66 -0
  90. package/lib/module/RulerRangeIndicator.js.map +1 -0
  91. package/lib/module/RulerRangeRoot.js +75 -0
  92. package/lib/module/RulerRangeRoot.js.map +1 -0
  93. package/lib/module/RulerRangeTicks.js +51 -0
  94. package/lib/module/RulerRangeTicks.js.map +1 -0
  95. package/lib/module/RulerRangeTrack.js +41 -0
  96. package/lib/module/RulerRangeTrack.js.map +1 -0
  97. package/lib/module/RulerResetButton.js +41 -0
  98. package/lib/module/RulerResetButton.js.map +1 -0
  99. package/lib/module/RulerRoot.js +82 -0
  100. package/lib/module/RulerRoot.js.map +1 -0
  101. package/lib/module/RulerTicks.js +45 -0
  102. package/lib/module/RulerTicks.js.map +1 -0
  103. package/lib/module/RulerTrack.js +41 -0
  104. package/lib/module/RulerTrack.js.map +1 -0
  105. package/lib/module/Tick.js +41 -36
  106. package/lib/module/Tick.js.map +1 -1
  107. package/lib/module/defaults.js +19 -18
  108. package/lib/module/defaults.js.map +1 -1
  109. package/lib/module/index.js +46 -1
  110. package/lib/module/index.js.map +1 -1
  111. package/lib/module/presets.js +103 -0
  112. package/lib/module/presets.js.map +1 -0
  113. package/lib/module/tickResolver.js +97 -0
  114. package/lib/module/tickResolver.js.map +1 -0
  115. package/lib/module/useHaptics.js +1 -1
  116. package/lib/module/useHaptics.js.map +1 -1
  117. package/lib/module/useHaptics.web.js +39 -0
  118. package/lib/module/useHaptics.web.js.map +1 -0
  119. package/lib/module/useRulerDatePicker.js +260 -0
  120. package/lib/module/useRulerDatePicker.js.map +1 -0
  121. package/lib/module/useRulerDateRangePicker.js +310 -0
  122. package/lib/module/useRulerDateRangePicker.js.map +1 -0
  123. package/lib/module/utils.js +59 -45
  124. package/lib/module/utils.js.map +1 -1
  125. package/lib/typescript/LensTick.d.ts +20 -0
  126. package/lib/typescript/LensTick.d.ts.map +1 -0
  127. package/lib/typescript/Ruler.d.ts +31 -0
  128. package/lib/typescript/Ruler.d.ts.map +1 -0
  129. package/lib/typescript/RulerContext.d.ts +11 -0
  130. package/lib/typescript/RulerContext.d.ts.map +1 -0
  131. package/lib/typescript/RulerDatePicker.d.ts +10 -7
  132. package/lib/typescript/RulerDatePicker.d.ts.map +1 -1
  133. package/lib/typescript/RulerDateRangePicker.d.ts +26 -0
  134. package/lib/typescript/RulerDateRangePicker.d.ts.map +1 -0
  135. package/lib/typescript/RulerHeader.d.ts +14 -0
  136. package/lib/typescript/RulerHeader.d.ts.map +1 -0
  137. package/lib/typescript/RulerIndicator.d.ts +17 -0
  138. package/lib/typescript/RulerIndicator.d.ts.map +1 -0
  139. package/lib/typescript/RulerLensTicks.d.ts +12 -0
  140. package/lib/typescript/RulerLensTicks.d.ts.map +1 -0
  141. package/lib/typescript/RulerLensTrack.d.ts +13 -0
  142. package/lib/typescript/RulerLensTrack.d.ts.map +1 -0
  143. package/lib/typescript/RulerRange.d.ts +32 -0
  144. package/lib/typescript/RulerRange.d.ts.map +1 -0
  145. package/lib/typescript/RulerRangeContext.d.ts +11 -0
  146. package/lib/typescript/RulerRangeContext.d.ts.map +1 -0
  147. package/lib/typescript/RulerRangeHeader.d.ts +12 -0
  148. package/lib/typescript/RulerRangeHeader.d.ts.map +1 -0
  149. package/lib/typescript/RulerRangeHighlight.d.ts +8 -0
  150. package/lib/typescript/RulerRangeHighlight.d.ts.map +1 -0
  151. package/lib/typescript/RulerRangeIndicator.d.ts +17 -0
  152. package/lib/typescript/RulerRangeIndicator.d.ts.map +1 -0
  153. package/lib/typescript/RulerRangeRoot.d.ts +7 -0
  154. package/lib/typescript/RulerRangeRoot.d.ts.map +1 -0
  155. package/lib/typescript/RulerRangeTicks.d.ts +14 -0
  156. package/lib/typescript/RulerRangeTicks.d.ts.map +1 -0
  157. package/lib/typescript/RulerRangeTrack.d.ts +8 -0
  158. package/lib/typescript/RulerRangeTrack.d.ts.map +1 -0
  159. package/lib/typescript/RulerResetButton.d.ts +10 -0
  160. package/lib/typescript/RulerResetButton.d.ts.map +1 -0
  161. package/lib/typescript/RulerRoot.d.ts +7 -0
  162. package/lib/typescript/RulerRoot.d.ts.map +1 -0
  163. package/lib/typescript/RulerTicks.d.ts +9 -0
  164. package/lib/typescript/RulerTicks.d.ts.map +1 -0
  165. package/lib/typescript/RulerTrack.d.ts +8 -0
  166. package/lib/typescript/RulerTrack.d.ts.map +1 -0
  167. package/lib/typescript/Tick.d.ts +3 -16
  168. package/lib/typescript/Tick.d.ts.map +1 -1
  169. package/lib/typescript/defaults.d.ts +6 -9
  170. package/lib/typescript/defaults.d.ts.map +1 -1
  171. package/lib/typescript/index.d.ts +37 -1
  172. package/lib/typescript/index.d.ts.map +1 -1
  173. package/lib/typescript/presets.d.ts +27 -0
  174. package/lib/typescript/presets.d.ts.map +1 -0
  175. package/lib/typescript/tickResolver.d.ts +10 -0
  176. package/lib/typescript/tickResolver.d.ts.map +1 -0
  177. package/lib/typescript/types.d.ts +302 -85
  178. package/lib/typescript/types.d.ts.map +1 -1
  179. package/lib/typescript/useHaptics.web.d.ts +17 -0
  180. package/lib/typescript/useHaptics.web.d.ts.map +1 -0
  181. package/lib/typescript/useRulerDatePicker.d.ts +26 -0
  182. package/lib/typescript/useRulerDatePicker.d.ts.map +1 -0
  183. package/lib/typescript/useRulerDateRangePicker.d.ts +40 -0
  184. package/lib/typescript/useRulerDateRangePicker.d.ts.map +1 -0
  185. package/lib/typescript/utils.d.ts +14 -12
  186. package/lib/typescript/utils.d.ts.map +1 -1
  187. package/package.json +25 -7
  188. package/src/LensTick.tsx +90 -0
  189. package/src/Ruler.ts +32 -0
  190. package/src/RulerContext.tsx +20 -0
  191. package/src/RulerDatePicker.tsx +41 -439
  192. package/src/RulerDateRangePicker.tsx +53 -0
  193. package/src/RulerHeader.tsx +125 -0
  194. package/src/RulerIndicator.tsx +84 -0
  195. package/src/RulerLensTicks.tsx +50 -0
  196. package/src/RulerLensTrack.tsx +45 -0
  197. package/src/RulerRange.ts +33 -0
  198. package/src/RulerRangeContext.tsx +20 -0
  199. package/src/RulerRangeHeader.tsx +180 -0
  200. package/src/RulerRangeHighlight.tsx +47 -0
  201. package/src/RulerRangeIndicator.tsx +85 -0
  202. package/src/RulerRangeRoot.tsx +87 -0
  203. package/src/RulerRangeTicks.tsx +68 -0
  204. package/src/RulerRangeTrack.tsx +39 -0
  205. package/src/RulerResetButton.tsx +59 -0
  206. package/src/RulerRoot.tsx +93 -0
  207. package/src/RulerTicks.tsx +57 -0
  208. package/src/RulerTrack.tsx +39 -0
  209. package/src/Tick.tsx +60 -49
  210. package/src/defaults.ts +21 -19
  211. package/src/index.ts +83 -1
  212. package/src/presets.ts +108 -0
  213. package/src/tickResolver.ts +123 -0
  214. package/src/types.ts +354 -102
  215. package/src/useHaptics.web.ts +55 -0
  216. package/src/useRulerDatePicker.ts +373 -0
  217. package/src/useRulerDateRangePicker.ts +468 -0
  218. package/src/utils.ts +67 -68
  219. package/lib/commonjs/package.json +0 -1
  220. package/lib/module/package.json +0 -1
@@ -7,10 +7,10 @@ exports.computeDayRange = computeDayRange;
7
7
  exports.dateToDayOffset = dateToDayOffset;
8
8
  exports.dayOffsetToDate = dayOffsetToDate;
9
9
  exports.formatDateString = formatDateString;
10
- exports.shouldShowLabel = shouldShowLabel;
11
- exports.useResolvedColors = useResolvedColors;
10
+ exports.normalizeDate = normalizeDate;
11
+ exports.useResolvedTheme = useResolvedTheme;
12
12
  var _reactNative = require("react-native");
13
- var _defaults = require("./defaults");
13
+ var _defaults = require("./defaults.js");
14
14
  /**
15
15
  * Formats a Date object as a local YYYY-MM-DD string,
16
16
  * avoiding timezone shifting bugs caused by toISOString().
@@ -23,56 +23,51 @@ function formatDateString(date = new Date()) {
23
23
  }
24
24
 
25
25
  /**
26
- * Converts a Date or YYYY-MM-DD string to a day offset relative to a reference time.
26
+ * Normalizes a Date or string to a local midnight Date object.
27
+ * Parses YYYY-MM-DD explicitly as local midnight to avoid UTC timezone shifts,
28
+ * and guards against Invalid Dates.
27
29
  */
28
- function dateToDayOffset(date, referenceTime) {
29
- const d = typeof date === 'string' ? new Date(date) : new Date(date);
30
+ function normalizeDate(input) {
31
+ let d;
32
+ if (!input) {
33
+ d = new Date();
34
+ } else if (typeof input === 'string') {
35
+ const parts = input.trim().split('-');
36
+ if (parts.length === 3) {
37
+ const year = parseInt(parts[0], 10);
38
+ const month = parseInt(parts[1], 10) - 1;
39
+ const day = parseInt(parts[2], 10);
40
+ d = new Date(year, month, day);
41
+ } else {
42
+ d = new Date(input);
43
+ }
44
+ } else {
45
+ d = new Date(input.getTime());
46
+ }
47
+ if (isNaN(d.getTime())) {
48
+ d = new Date();
49
+ }
30
50
  d.setHours(0, 0, 0, 0);
31
- return Math.round((d.getTime() - referenceTime) / _defaults.MS_PER_DAY);
51
+ return d;
32
52
  }
33
53
 
34
54
  /**
35
- * Converts a day offset back to a Date object.
36
- */
37
- function dayOffsetToDate(offset, referenceTime) {
38
- return new Date(referenceTime + offset * _defaults.MS_PER_DAY);
39
- }
40
-
41
- /**
42
- * Resolves user-provided color props against the system color scheme defaults.
43
- * User-provided values always take precedence.
55
+ * Converts a Date or YYYY-MM-DD string to a day offset relative to a reference time.
44
56
  */
45
- function useResolvedColors(props) {
46
- const scheme = (0, _reactNative.useColorScheme)();
47
- const palette = scheme === 'dark' ? _defaults.DARK_COLORS : _defaults.LIGHT_COLORS;
48
- return {
49
- tickColor: props.tickColor ?? palette.tickColor,
50
- tickTallColor: props.tickTallColor ?? props.tickColor ?? palette.tickTallColor,
51
- labelColor: props.labelColor ?? palette.labelColor,
52
- accentColor: props.accentColor ?? palette.accentColor,
53
- indicatorColor: props.indicatorColor ?? palette.indicatorColor,
54
- backgroundColor: props.backgroundColor ?? palette.backgroundColor
55
- };
57
+ function dateToDayOffset(date, referenceTime) {
58
+ const d = normalizeDate(date);
59
+ return Math.round((d.getTime() - referenceTime) / _defaults.MS_PER_DAY);
56
60
  }
57
61
 
58
62
  /**
59
- * Determines whether a date should display a label based on the labelInterval setting.
63
+ * Converts a day offset back to a Date object at local midnight.
64
+ * Uses native calendar math (setDate) to avoid Daylight Saving Time (DST) 23h/25h hour drift.
60
65
  */
61
- function shouldShowLabel(date, labelInterval, todayTime) {
62
- if (!labelInterval || labelInterval === 'weekly') {
63
- // Default: every 7th day relative to today (matches original Friday-style spacing)
64
- const dayOffset = Math.round((date.getTime() - todayTime) / _defaults.MS_PER_DAY);
65
- return dayOffset % 7 === 0;
66
- }
67
- if (labelInterval === 'daily') {
68
- return true;
69
- }
70
- if (labelInterval === 'monthly') {
71
- return date.getDate() === 1;
72
- }
73
-
74
- // Custom callback
75
- return labelInterval(date);
66
+ function dayOffsetToDate(offset, referenceTime) {
67
+ const d = new Date(referenceTime);
68
+ d.setDate(d.getDate() + offset);
69
+ d.setHours(0, 0, 0, 0);
70
+ return d;
76
71
  }
77
72
 
78
73
  /**
@@ -82,18 +77,37 @@ function computeDayRange(todayTime, minDate, maxDate) {
82
77
  let minOffset = -_defaults.DEFAULT_DAY_RANGE;
83
78
  let maxOffset = _defaults.DEFAULT_DAY_RANGE;
84
79
  if (minDate) {
85
- const d = new Date(minDate);
86
- d.setHours(0, 0, 0, 0);
80
+ const d = normalizeDate(minDate);
87
81
  minOffset = Math.round((d.getTime() - todayTime) / _defaults.MS_PER_DAY);
88
82
  }
89
83
  if (maxDate) {
90
- const d = new Date(maxDate);
91
- d.setHours(0, 0, 0, 0);
84
+ const d = normalizeDate(maxDate);
92
85
  maxOffset = Math.round((d.getTime() - todayTime) / _defaults.MS_PER_DAY);
93
86
  }
87
+ if (minOffset > maxOffset) {
88
+ const temp = minOffset;
89
+ minOffset = maxOffset;
90
+ maxOffset = temp;
91
+ }
94
92
  return {
95
93
  minOffset,
96
94
  maxOffset
97
95
  };
98
96
  }
97
+
98
+ /**
99
+ * Resolves user-provided theme against the system color scheme defaults (Light/Dark).
100
+ */
101
+ function useResolvedTheme(theme) {
102
+ const scheme = (0, _reactNative.useColorScheme)();
103
+ const palette = scheme === 'dark' ? _defaults.DARK_THEME : _defaults.LIGHT_THEME;
104
+ return {
105
+ background: theme?.background ?? palette.background,
106
+ indicatorColor: theme?.indicatorColor ?? palette.indicatorColor,
107
+ accentColor: theme?.accentColor ?? palette.accentColor,
108
+ labelColor: theme?.labelColor ?? palette.labelColor,
109
+ defaultTickColor: theme?.defaultTickColor ?? palette.defaultTickColor,
110
+ rangeHighlightColor: theme?.rangeHighlightColor ?? palette.rangeHighlightColor
111
+ };
112
+ }
99
113
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_defaults","formatDateString","date","Date","year","getFullYear","month","String","getMonth","padStart","day","getDate","dateToDayOffset","referenceTime","d","setHours","Math","round","getTime","MS_PER_DAY","dayOffsetToDate","offset","useResolvedColors","props","scheme","useColorScheme","palette","DARK_COLORS","LIGHT_COLORS","tickColor","tickTallColor","labelColor","accentColor","indicatorColor","backgroundColor","shouldShowLabel","labelInterval","todayTime","dayOffset","computeDayRange","minDate","maxDate","minOffset","DEFAULT_DAY_RANGE","maxOffset"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_defaults","formatDateString","date","Date","year","getFullYear","month","String","getMonth","padStart","day","getDate","normalizeDate","input","d","parts","trim","split","length","parseInt","getTime","isNaN","setHours","dateToDayOffset","referenceTime","Math","round","MS_PER_DAY","dayOffsetToDate","offset","setDate","computeDayRange","todayTime","minDate","maxDate","minOffset","DEFAULT_DAY_RANGE","maxOffset","temp","useResolvedTheme","theme","scheme","useColorScheme","palette","DARK_THEME","LIGHT_THEME","background","indicatorColor","accentColor","labelColor","defaultTickColor","rangeHighlightColor"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import Animated, { useAnimatedStyle } from 'react-native-reanimated';
6
+ import { useRulerContext } from "./RulerContext.js";
7
+ import { Tick } from "./Tick.js";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ /**
10
+ * Animated tick item with non-linear hyperbolic-tangent spatial distortion.
11
+ * Tick spacing smoothly magnifies near the center needle and asymptotically
12
+ * flattens out to standard spacing away from the center.
13
+ */
14
+ export function LensTick({
15
+ tick,
16
+ tickSpacing,
17
+ rulerHeight,
18
+ translateX,
19
+ magnification,
20
+ radius,
21
+ scaleTicks,
22
+ containerWidth
23
+ }) {
24
+ const {
25
+ width: contextWidth
26
+ } = useRulerContext();
27
+ const width = containerWidth ?? contextWidth;
28
+ const animatedStyle = useAnimatedStyle(() => {
29
+ 'worklet';
30
+
31
+ const d = tick.offset * tickSpacing + translateX.value;
32
+ const A = (magnification - 1) * radius;
33
+ const warpedX = d + A * Math.tanh(d / radius);
34
+ if (!scaleTicks) {
35
+ return {
36
+ transform: [{
37
+ translateX: warpedX
38
+ }]
39
+ };
40
+ }
41
+ const dist = Math.abs(d);
42
+ const radiusLimit = radius * 1.5;
43
+ const factor = dist < radiusLimit ? 1 - dist / radiusLimit : 0;
44
+ const scale = 1 + (magnification - 1) * 0.25 * factor;
45
+ return {
46
+ transform: [{
47
+ translateX: warpedX
48
+ }, {
49
+ scale: scale
50
+ }]
51
+ };
52
+ }, [tick.offset, tickSpacing, translateX, magnification, radius, scaleTicks]);
53
+ return /*#__PURE__*/_jsx(Animated.View, {
54
+ style: [styles.lensTickWrapper, {
55
+ height: rulerHeight,
56
+ left: width / 2
57
+ }, animatedStyle],
58
+ children: /*#__PURE__*/_jsx(Tick, {
59
+ tick: {
60
+ ...tick,
61
+ offset: 0
62
+ },
63
+ tickSpacing: tickSpacing,
64
+ rulerHeight: rulerHeight
65
+ })
66
+ });
67
+ }
68
+ const styles = StyleSheet.create({
69
+ lensTickWrapper: {
70
+ position: 'absolute',
71
+ height: '100%',
72
+ width: 0,
73
+ justifyContent: 'flex-end',
74
+ alignItems: 'center'
75
+ }
76
+ });
77
+ //# sourceMappingURL=LensTick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","Animated","useAnimatedStyle","useRulerContext","Tick","jsx","_jsx","LensTick","tick","tickSpacing","rulerHeight","translateX","magnification","radius","scaleTicks","containerWidth","width","contextWidth","animatedStyle","d","offset","value","A","warpedX","Math","tanh","transform","dist","abs","radiusLimit","factor","scale","View","style","styles","lensTickWrapper","height","left","children","create","position","justifyContent","alignItems"],"sourceRoot":"../../src","sources":["LensTick.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IAAIC,gBAAgB,QAA0B,yBAAyB;AACtF,SAASC,eAAe,QAAQ,mBAAgB;AAChD,SAASC,IAAI,QAAQ,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAc9B;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,UAAU;EACVC,aAAa;EACbC,MAAM;EACNC,UAAU;EACVC;AACa,CAAC,EAAE;EAChB,MAAM;IAAEC,KAAK,EAAEC;EAAa,CAAC,GAAGd,eAAe,CAAC,CAAC;EACjD,MAAMa,KAAK,GAAGD,cAAc,IAAIE,YAAY;EAE5C,MAAMC,aAAa,GAAGhB,gBAAgB,CAAC,MAAM;IAC3C,SAAS;;IACT,MAAMiB,CAAC,GAAGX,IAAI,CAACY,MAAM,GAAGX,WAAW,GAAGE,UAAU,CAACU,KAAK;IACtD,MAAMC,CAAC,GAAG,CAACV,aAAa,GAAG,CAAC,IAAIC,MAAM;IACtC,MAAMU,OAAO,GAAGJ,CAAC,GAAGG,CAAC,GAAGE,IAAI,CAACC,IAAI,CAACN,CAAC,GAAGN,MAAM,CAAC;IAE7C,IAAI,CAACC,UAAU,EAAE;MACf,OAAO;QACLY,SAAS,EAAE,CAAC;UAAEf,UAAU,EAAEY;QAAQ,CAAC;MACrC,CAAC;IACH;IAEA,MAAMI,IAAI,GAAGH,IAAI,CAACI,GAAG,CAACT,CAAC,CAAC;IACxB,MAAMU,WAAW,GAAGhB,MAAM,GAAG,GAAG;IAChC,MAAMiB,MAAM,GAAGH,IAAI,GAAGE,WAAW,GAAG,CAAC,GAAGF,IAAI,GAAGE,WAAW,GAAG,CAAC;IAC9D,MAAME,KAAK,GAAG,CAAC,GAAG,CAACnB,aAAa,GAAG,CAAC,IAAI,IAAI,GAAGkB,MAAM;IAErD,OAAO;MACLJ,SAAS,EAAE,CACT;QAAEf,UAAU,EAAEY;MAAQ,CAAC,EACvB;QAAEQ,KAAK,EAAEA;MAAM,CAAC;IAEpB,CAAC;EACH,CAAC,EAAE,CAACvB,IAAI,CAACY,MAAM,EAAEX,WAAW,EAAEE,UAAU,EAAEC,aAAa,EAAEC,MAAM,EAAEC,UAAU,CAAC,CAAC;EAE7E,oBACER,IAAA,CAACL,QAAQ,CAAC+B,IAAI;IACZC,KAAK,EAAE,CACLC,MAAM,CAACC,eAAe,EACtB;MAAEC,MAAM,EAAE1B,WAAW;MAAE2B,IAAI,EAAErB,KAAK,GAAG;IAAE,CAAC,EACxCE,aAAa,CACb;IAAAoB,QAAA,eAEFhC,IAAA,CAACF,IAAI;MACHI,IAAI,EAAE;QACJ,GAAGA,IAAI;QACPY,MAAM,EAAE;MACV,CAAE;MACFX,WAAW,EAAEA,WAAY;MACzBC,WAAW,EAAEA;IAAY,CAC1B;EAAC,CACW,CAAC;AAEpB;AAEA,MAAMwB,MAAM,GAAGlC,UAAU,CAACuC,MAAM,CAAC;EAC/BJ,eAAe,EAAE;IACfK,QAAQ,EAAE,UAAU;IACpBJ,MAAM,EAAE,MAAM;IACdpB,KAAK,EAAE,CAAC;IACRyB,cAAc,EAAE,UAAU;IAC1BC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ import { RulerRoot } from "./RulerRoot.js";
4
+ import { RulerTrack } from "./RulerTrack.js";
5
+ import { RulerIndicator } from "./RulerIndicator.js";
6
+ import { RulerTicks } from "./RulerTicks.js";
7
+ import { Tick } from "./Tick.js";
8
+ import { RulerHeader } from "./RulerHeader.js";
9
+ import { RulerResetButton } from "./RulerResetButton.js";
10
+ import { RulerLensTrack } from "./RulerLensTrack.js";
11
+ import { RulerLensTicks } from "./RulerLensTicks.js";
12
+
13
+ /**
14
+ * Compound Anatomy API for the Ruler Date Picker.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <Ruler.Root value={selectedDate} onChange={setSelectedDate}>
19
+ * <Ruler.Header />
20
+ * <Ruler.LensTrack />
21
+ * </Ruler.Root>
22
+ * ```
23
+ */
24
+ export const Ruler = {
25
+ Root: RulerRoot,
26
+ Track: RulerTrack,
27
+ LensTrack: RulerLensTrack,
28
+ Ticks: RulerTicks,
29
+ LensTicks: RulerLensTicks,
30
+ Indicator: RulerIndicator,
31
+ Tick: Tick,
32
+ Header: RulerHeader,
33
+ ResetButton: RulerResetButton
34
+ };
35
+ //# sourceMappingURL=Ruler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RulerRoot","RulerTrack","RulerIndicator","RulerTicks","Tick","RulerHeader","RulerResetButton","RulerLensTrack","RulerLensTicks","Ruler","Root","Track","LensTrack","Ticks","LensTicks","Indicator","Header","ResetButton"],"sourceRoot":"../../src","sources":["Ruler.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,IAAI,QAAQ,WAAQ;AAC7B,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,cAAc,QAAQ,qBAAkB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,KAAK,GAAG;EACnBC,IAAI,EAAEV,SAAS;EACfW,KAAK,EAAEV,UAAU;EACjBW,SAAS,EAAEL,cAAc;EACzBM,KAAK,EAAEV,UAAU;EACjBW,SAAS,EAAEN,cAAc;EACzBO,SAAS,EAAEb,cAAc;EACzBE,IAAI,EAAEA,IAAI;EACVY,MAAM,EAAEX,WAAW;EACnBY,WAAW,EAAEX;AACf,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ export const RulerContext = /*#__PURE__*/createContext(null);
5
+ export function useRulerContext() {
6
+ const context = useContext(RulerContext);
7
+ if (!context) {
8
+ throw new Error('Ruler compound subcomponents must be rendered within a <Ruler.Root> provider.');
9
+ }
10
+ return context;
11
+ }
12
+ //# sourceMappingURL=RulerContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","RulerContext","useRulerContext","context","Error"],"sourceRoot":"../../src","sources":["RulerContext.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAWjD,OAAO,MAAMC,YAAY,gBAAGF,aAAa,CAA2B,IAAI,CAAC;AAEzE,OAAO,SAASG,eAAeA,CAAA,EAAsB;EACnD,MAAMC,OAAO,GAAGH,UAAU,CAACC,YAAY,CAAC;EACxC,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,+EAA+E,CAAC;EAClG;EACA,OAAOD,OAAO;AAChB","ignoreList":[]}