@enact/limestone 1.3.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 (463) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  2. package/.github/workflows/update-copyright-years.yml +25 -0
  3. package/.travis.yml +40 -0
  4. package/ActionGuide/ActionGuide.d.ts +73 -0
  5. package/ActionGuide/ActionGuide.js +164 -0
  6. package/ActionGuide/ActionGuide.module.css +73 -0
  7. package/ActionGuide/package.json +3 -0
  8. package/ActionGuide/tests/ActionGuide-specs.js +51 -0
  9. package/Alert/Alert.d.ts +155 -0
  10. package/Alert/Alert.js +313 -0
  11. package/Alert/Alert.module.css +190 -0
  12. package/Alert/AlertImage.js +102 -0
  13. package/Alert/AlertImage.module.css +15 -0
  14. package/Alert/package.json +3 -0
  15. package/Alert/tests/Alert-specs.js +204 -0
  16. package/BodyText/BodyText.d.ts +74 -0
  17. package/BodyText/BodyText.js +170 -0
  18. package/BodyText/BodyText.module.css +95 -0
  19. package/BodyText/package.json +3 -0
  20. package/BodyText/tests/BodyText-specs.js +55 -0
  21. package/Button/Button.d.ts +131 -0
  22. package/Button/Button.js +351 -0
  23. package/Button/Button.module.css +2518 -0
  24. package/Button/package.json +3 -0
  25. package/Button/tests/Button-specs.js +252 -0
  26. package/CHANGELOG.md +170 -0
  27. package/Card/Card.d.ts +138 -0
  28. package/Card/Card.js +396 -0
  29. package/Card/Card.module.css +1296 -0
  30. package/Card/package.json +3 -0
  31. package/Card/tests/Card-specs.js +65 -0
  32. package/Checkbox/Checkbox.d.ts +99 -0
  33. package/Checkbox/Checkbox.js +222 -0
  34. package/Checkbox/Checkbox.module.css +1395 -0
  35. package/Checkbox/package.json +3 -0
  36. package/Checkbox/tests/Checkbox-specs.js +79 -0
  37. package/CheckboxItem/CheckboxItem.d.ts +99 -0
  38. package/CheckboxItem/CheckboxItem.js +210 -0
  39. package/CheckboxItem/CheckboxItem.module.css +50 -0
  40. package/CheckboxItem/package.json +3 -0
  41. package/CheckboxItem/tests/CheckboxItem-specs.js +52 -0
  42. package/Chips/Chip.js +252 -0
  43. package/Chips/Chip.module.css +30 -0
  44. package/Chips/Chips.js +215 -0
  45. package/Chips/Chips.module.css +8 -0
  46. package/Chips/index.js +86 -0
  47. package/Chips/tests/Chip-specs.js +186 -0
  48. package/Chips/tests/Chips-specs.js +312 -0
  49. package/ColorPicker/ColorPicker.js +416 -0
  50. package/ColorPicker/ColorPicker.module.css +78 -0
  51. package/ColorPicker/package.json +3 -0
  52. package/ColorPicker/tests/ColorPicker-specs.js +225 -0
  53. package/ColorPicker/utils.js +135 -0
  54. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +106 -0
  55. package/ContextualMenuDecorator/ContextualMenuDecorator.js +264 -0
  56. package/ContextualMenuDecorator/ContextualMenuDecorator.module.css +42 -0
  57. package/ContextualMenuDecorator/package.json +3 -0
  58. package/ContextualMenuDecorator/tests/ContextualMenuDecorator-specs.js +136 -0
  59. package/ContextualPopupDecorator/ContextualPopup.js +200 -0
  60. package/ContextualPopupDecorator/ContextualPopup.module.css +270 -0
  61. package/ContextualPopupDecorator/ContextualPopupDecorator.d.ts +182 -0
  62. package/ContextualPopupDecorator/ContextualPopupDecorator.js +867 -0
  63. package/ContextualPopupDecorator/ContextualPopupDecorator.module.css +3 -0
  64. package/ContextualPopupDecorator/HolePunchScrim.js +69 -0
  65. package/ContextualPopupDecorator/HolePunchScrim.module.css +38 -0
  66. package/ContextualPopupDecorator/package.json +3 -0
  67. package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +621 -0
  68. package/DatePicker/DatePicker.d.ts +173 -0
  69. package/DatePicker/DatePicker.js +175 -0
  70. package/DatePicker/DatePicker.module.css +5 -0
  71. package/DatePicker/DatePickerBase.js +348 -0
  72. package/DatePicker/package.json +3 -0
  73. package/DatePicker/tests/DatePicker-specs.js +247 -0
  74. package/DayPicker/DayPicker.d.ts +92 -0
  75. package/DayPicker/DayPicker.js +188 -0
  76. package/DayPicker/DayPicker.module.css +35 -0
  77. package/DayPicker/DaySelectorDecorator.js +301 -0
  78. package/DayPicker/package.json +3 -0
  79. package/DayPicker/tests/DayPicker-specs.js +138 -0
  80. package/Dropdown/Dropdown.d.ts +135 -0
  81. package/Dropdown/Dropdown.js +460 -0
  82. package/Dropdown/Dropdown.module.css +160 -0
  83. package/Dropdown/DropdownList.js +360 -0
  84. package/Dropdown/package.json +3 -0
  85. package/Dropdown/tests/Dropdown-specs.js +267 -0
  86. package/FixedPopupPanels/FixedPopupPanels.d.ts +72 -0
  87. package/FixedPopupPanels/FixedPopupPanels.js +170 -0
  88. package/FixedPopupPanels/FixedPopupPanels.module.css +146 -0
  89. package/FixedPopupPanels/package.json +3 -0
  90. package/FixedPopupPanels/tests/FixedPopupPanels-specs.js +142 -0
  91. package/FlexiblePopupPanels/FlexiblePopupPanels.js +177 -0
  92. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +291 -0
  93. package/FlexiblePopupPanels/Header.js +110 -0
  94. package/FlexiblePopupPanels/Panel.js +256 -0
  95. package/FlexiblePopupPanels/index.d.ts +145 -0
  96. package/FlexiblePopupPanels/index.js +68 -0
  97. package/FlexiblePopupPanels/package.json +3 -0
  98. package/FlexiblePopupPanels/tests/FlexiblePopupPanels-specs.js +305 -0
  99. package/FlexiblePopupPanels/useNavButtonFocus.js +65 -0
  100. package/FormCheckboxItem/FormCheckboxItem.d.ts +87 -0
  101. package/FormCheckboxItem/FormCheckboxItem.js +200 -0
  102. package/FormCheckboxItem/FormCheckboxItem.module.css +374 -0
  103. package/FormCheckboxItem/package.json +3 -0
  104. package/FormCheckboxItem/tests/FormCheckboxItem-specs.js +164 -0
  105. package/Heading/Heading.d.ts +104 -0
  106. package/Heading/Heading.js +203 -0
  107. package/Heading/Heading.module.css +217 -0
  108. package/Heading/package.json +3 -0
  109. package/Heading/tests/Heading-specs.js +57 -0
  110. package/Icon/Icon.d.ts +377 -0
  111. package/Icon/Icon.js +503 -0
  112. package/Icon/Icon.module.css +121 -0
  113. package/Icon/IconList.js +611 -0
  114. package/Icon/package.json +3 -0
  115. package/Icon/tests/Icon-specs.js +131 -0
  116. package/IconItem/IconItem.d.ts +137 -0
  117. package/IconItem/IconItem.js +360 -0
  118. package/IconItem/IconItem.module.css +414 -0
  119. package/IconItem/package.json +3 -0
  120. package/IconItem/tests/IconItem-specs.js +106 -0
  121. package/Image/Image.d.ts +60 -0
  122. package/Image/Image.js +165 -0
  123. package/Image/Image.module.css +5 -0
  124. package/Image/package.json +3 -0
  125. package/Image/tests/Image-specs.js +62 -0
  126. package/ImageItem/ImageItem.d.ts +134 -0
  127. package/ImageItem/ImageItem.js +377 -0
  128. package/ImageItem/ImageItem.module.css +1079 -0
  129. package/ImageItem/package.json +3 -0
  130. package/ImageItem/tests/ImageItem-specs.js +223 -0
  131. package/Input/Input.js +715 -0
  132. package/Input/Input.module.css +699 -0
  133. package/Input/InputField.js +487 -0
  134. package/Input/InputField.module.css +763 -0
  135. package/Input/InputFieldDecoratorIcon.js +66 -0
  136. package/Input/InputFieldSpotlightDecorator.js +380 -0
  137. package/Input/Keypad.js +111 -0
  138. package/Input/NumberField.js +311 -0
  139. package/Input/index.d.ts +423 -0
  140. package/Input/index.js +87 -0
  141. package/Input/package.json +3 -0
  142. package/Input/pointer.js +103 -0
  143. package/Input/tests/Input-specs.js +537 -0
  144. package/Input/tests/InputField-specs.js +292 -0
  145. package/Input/tests/InputPopup-specs.js +56 -0
  146. package/Input/util.js +130 -0
  147. package/Item/Item.d.ts +108 -0
  148. package/Item/Item.js +360 -0
  149. package/Item/Item.module.css +665 -0
  150. package/Item/package.json +3 -0
  151. package/Item/tests/Item-specs.js +108 -0
  152. package/KeyGuide/KeyGuide.d.ts +103 -0
  153. package/KeyGuide/KeyGuide.js +254 -0
  154. package/KeyGuide/KeyGuide.module.css +431 -0
  155. package/KeyGuide/package.json +3 -0
  156. package/KeyGuide/tests/KeyGuide-specs.js +168 -0
  157. package/LICENSE +201 -0
  158. package/Marquee/Marquee.d.ts +42 -0
  159. package/Marquee/Marquee.js +45 -0
  160. package/Marquee/package.json +3 -0
  161. package/MediaOverlay/MediaOverlay.d.ts +134 -0
  162. package/MediaOverlay/MediaOverlay.js +304 -0
  163. package/MediaOverlay/MediaOverlay.module.css +292 -0
  164. package/MediaOverlay/package.json +3 -0
  165. package/MediaOverlay/tests/MediaOverlay-specs.js +127 -0
  166. package/MediaPlayer/MediaControls.js +934 -0
  167. package/MediaPlayer/MediaControls.module.css +86 -0
  168. package/MediaPlayer/MediaKnob.js +61 -0
  169. package/MediaPlayer/MediaSlider.js +131 -0
  170. package/MediaPlayer/MediaSlider.module.css +319 -0
  171. package/MediaPlayer/MediaSliderDecorator.js +245 -0
  172. package/MediaPlayer/Times.js +152 -0
  173. package/MediaPlayer/Times.module.css +34 -0
  174. package/MediaPlayer/index.d.ts +223 -0
  175. package/MediaPlayer/index.js +34 -0
  176. package/MediaPlayer/package.json +3 -0
  177. package/MediaPlayer/tests/MediaSlider-specs.js +126 -0
  178. package/MediaPlayer/tests/util-specs.js +114 -0
  179. package/MediaPlayer/util.js +83 -0
  180. package/PageViews/Page.js +77 -0
  181. package/PageViews/Page.module.css +3 -0
  182. package/PageViews/PageViews.js +440 -0
  183. package/PageViews/PageViews.module.css +175 -0
  184. package/PageViews/PageViewsRouter.js +150 -0
  185. package/PageViews/index.js +45 -0
  186. package/PageViews/tests/PageViews-specs.js +192 -0
  187. package/Panels/Header.js +599 -0
  188. package/Panels/Header.module.css +243 -0
  189. package/Panels/Panel.js +347 -0
  190. package/Panels/Panel.module.css +33 -0
  191. package/Panels/Panels.js +258 -0
  192. package/Panels/Panels.module.css +12 -0
  193. package/Panels/index.d.ts +376 -0
  194. package/Panels/index.js +66 -0
  195. package/Panels/package.json +3 -0
  196. package/Panels/tests/Header-specs.js +146 -0
  197. package/Panels/tests/Panels-specs.js +257 -0
  198. package/Picker/Picker.d.ts +193 -0
  199. package/Picker/Picker.js +389 -0
  200. package/Picker/Picker.module.css +46 -0
  201. package/Picker/package.json +3 -0
  202. package/Picker/tests/Picker-specs.js +91 -0
  203. package/Popup/Popup.d.ts +169 -0
  204. package/Popup/Popup.js +690 -0
  205. package/Popup/Popup.module.css +180 -0
  206. package/Popup/package.json +3 -0
  207. package/Popup/tests/Popup-specs.js +475 -0
  208. package/PopupTabLayout/PopupTabLayout.d.ts +196 -0
  209. package/PopupTabLayout/PopupTabLayout.js +605 -0
  210. package/PopupTabLayout/PopupTabLayout.module.css +226 -0
  211. package/PopupTabLayout/package.json +3 -0
  212. package/PopupTabLayout/tests/PopupTabLayout-specs.js +285 -0
  213. package/ProgressBar/ProgressBar.d.ts +171 -0
  214. package/ProgressBar/ProgressBar.js +223 -0
  215. package/ProgressBar/ProgressBar.module.css +264 -0
  216. package/ProgressBar/ProgressBarTooltip.js +359 -0
  217. package/ProgressBar/ProgressBarTooltip.module.css +86 -0
  218. package/ProgressBar/package.json +3 -0
  219. package/ProgressBar/tests/ProgressBar-specs.js +400 -0
  220. package/ProgressButton/ProgressButton.d.ts +57 -0
  221. package/ProgressButton/ProgressButton.js +143 -0
  222. package/ProgressButton/ProgressButton.module.css +147 -0
  223. package/ProgressButton/package.json +3 -0
  224. package/ProgressButton/tests/ProgressButton-specs.js +71 -0
  225. package/QuickGuidePanels/Panel.js +90 -0
  226. package/QuickGuidePanels/QuickGuidePanels.js +463 -0
  227. package/QuickGuidePanels/QuickGuidePanels.module.css +26 -0
  228. package/QuickGuidePanels/index.js +52 -0
  229. package/QuickGuidePanels/tests/QuickGuidePanels-specs.js +250 -0
  230. package/README.md +59 -0
  231. package/RadioItem/RadioItem.d.ts +59 -0
  232. package/RadioItem/RadioItem.js +146 -0
  233. package/RadioItem/RadioItem.module.css +233 -0
  234. package/RadioItem/package.json +3 -0
  235. package/RadioItem/tests/RadioItem-specs.js +62 -0
  236. package/RangePicker/RangePicker.d.ts +174 -0
  237. package/RangePicker/RangePicker.js +372 -0
  238. package/RangePicker/RangePicker.module.css +55 -0
  239. package/RangePicker/package.json +3 -0
  240. package/RangePicker/tests/RangePicker-specs.js +122 -0
  241. package/Region/Region.d.ts +33 -0
  242. package/Region/Region.js +91 -0
  243. package/Region/package.json +3 -0
  244. package/Region/tests/Region-specs.js +28 -0
  245. package/Scroller/ContentContainerDecorator.js +24 -0
  246. package/Scroller/EditableWrapper.js +1036 -0
  247. package/Scroller/EditableWrapper.module.css +22 -0
  248. package/Scroller/Scroller.d.ts +270 -0
  249. package/Scroller/Scroller.js +470 -0
  250. package/Scroller/Scroller.module.css +41 -0
  251. package/Scroller/package.json +3 -0
  252. package/Scroller/tests/ContentContainerDecorator-specs.js +20 -0
  253. package/Scroller/tests/EditableWrapper-specs.js +133 -0
  254. package/Scroller/tests/Scroller-specs.js +159 -0
  255. package/Scroller/useEvent.js +39 -0
  256. package/Scroller/useThemeScroller.js +410 -0
  257. package/Skinnable/Skinnable.d.ts +27 -0
  258. package/Skinnable/Skinnable.js +65 -0
  259. package/Skinnable/package.json +3 -0
  260. package/Slider/Slider.d.ts +218 -0
  261. package/Slider/Slider.js +441 -0
  262. package/Slider/Slider.module.css +880 -0
  263. package/Slider/SliderBehaviorDecorator.js +184 -0
  264. package/Slider/package.json +3 -0
  265. package/Slider/tests/Slider-specs.js +573 -0
  266. package/Slider/utils.js +114 -0
  267. package/Spinner/Spinner.d.ts +64 -0
  268. package/Spinner/Spinner.js +254 -0
  269. package/Spinner/Spinner.module.css +368 -0
  270. package/Spinner/package.json +3 -0
  271. package/Spinner/tests/Spinner-specs.js +70 -0
  272. package/Sprite/Sprite.d.ts +100 -0
  273. package/Sprite/Sprite.js +345 -0
  274. package/Sprite/Sprite.module.css +32 -0
  275. package/Sprite/package.json +3 -0
  276. package/Sprite/tests/Sprite-specs.js +59 -0
  277. package/Steps/Steps.d.ts +119 -0
  278. package/Steps/Steps.js +303 -0
  279. package/Steps/Steps.module.css +130 -0
  280. package/Steps/package.json +3 -0
  281. package/Steps/tests/Steps-specs.js +175 -0
  282. package/Switch/Switch.d.ts +54 -0
  283. package/Switch/Switch.js +143 -0
  284. package/Switch/Switch.module.css +714 -0
  285. package/Switch/package.json +3 -0
  286. package/Switch/tests/Switch-specs.js +54 -0
  287. package/SwitchItem/SwitchItem.d.ts +56 -0
  288. package/SwitchItem/SwitchItem.js +144 -0
  289. package/SwitchItem/SwitchItem.module.css +31 -0
  290. package/SwitchItem/package.json +3 -0
  291. package/SwitchItem/tests/SwitchItem-specs.js +49 -0
  292. package/TabLayout/RefocusDecorator.js +142 -0
  293. package/TabLayout/Tab.js +84 -0
  294. package/TabLayout/TabGroup.js +377 -0
  295. package/TabLayout/TabGroup.module.css +280 -0
  296. package/TabLayout/TabLayout.d.ts +161 -0
  297. package/TabLayout/TabLayout.js +661 -0
  298. package/TabLayout/TabLayout.module.css +101 -0
  299. package/TabLayout/package.json +3 -0
  300. package/TabLayout/tests/TabGroup-specs.js +214 -0
  301. package/TabLayout/tests/TabLayout-specs.js +740 -0
  302. package/ThemeDecorator/AccessibilityDecorator.js +151 -0
  303. package/ThemeDecorator/I18nFontDecorator.js +33 -0
  304. package/ThemeDecorator/ThemeDecorator.d.ts +143 -0
  305. package/ThemeDecorator/ThemeDecorator.js +307 -0
  306. package/ThemeDecorator/ThemeDecorator.module.css +1250 -0
  307. package/ThemeDecorator/fontGenerator.js +76 -0
  308. package/ThemeDecorator/package.json +3 -0
  309. package/ThemeDecorator/screenTypes.json +10 -0
  310. package/ThemeDecorator/tests/ThemeDecorator-specs.js +151 -0
  311. package/TimePicker/TimePicker.d.ts +147 -0
  312. package/TimePicker/TimePicker.js +255 -0
  313. package/TimePicker/TimePicker.module.css +61 -0
  314. package/TimePicker/TimePickerBase.js +396 -0
  315. package/TimePicker/package.json +3 -0
  316. package/TimePicker/tests/TimePicker-specs.js +248 -0
  317. package/TooltipDecorator/Tooltip.js +252 -0
  318. package/TooltipDecorator/Tooltip.module.css +496 -0
  319. package/TooltipDecorator/TooltipDecorator.d.ts +229 -0
  320. package/TooltipDecorator/TooltipDecorator.js +260 -0
  321. package/TooltipDecorator/TooltipLabel.js +117 -0
  322. package/TooltipDecorator/package.json +3 -0
  323. package/TooltipDecorator/tests/TooltipDecorator-specs.js +224 -0
  324. package/TooltipDecorator/tests/useTooltip-specs.js +266 -0
  325. package/TooltipDecorator/useTooltip.js +278 -0
  326. package/TooltipDecorator/util.js +273 -0
  327. package/VideoPlayer/Feedback.js +110 -0
  328. package/VideoPlayer/Feedback.module.css +55 -0
  329. package/VideoPlayer/FeedbackContent.js +99 -0
  330. package/VideoPlayer/FeedbackIcon.js +67 -0
  331. package/VideoPlayer/FeedbackIcons.js +76 -0
  332. package/VideoPlayer/FeedbackTooltip.js +242 -0
  333. package/VideoPlayer/FeedbackTooltip.module.css +160 -0
  334. package/VideoPlayer/MediaTitle.js +143 -0
  335. package/VideoPlayer/MediaTitle.module.css +95 -0
  336. package/VideoPlayer/Overlay.js +51 -0
  337. package/VideoPlayer/Video.js +345 -0
  338. package/VideoPlayer/VideoPlayer.d.ts +582 -0
  339. package/VideoPlayer/VideoPlayer.js +2116 -0
  340. package/VideoPlayer/VideoPlayer.module.css +164 -0
  341. package/VideoPlayer/package.json +3 -0
  342. package/VideoPlayer/tests/Video-specs.js +235 -0
  343. package/VideoPlayer/tests/VideoPlayer-specs.js +180 -0
  344. package/VirtualList/VirtualList.d.ts +411 -0
  345. package/VirtualList/VirtualList.js +931 -0
  346. package/VirtualList/VirtualList.module.css +52 -0
  347. package/VirtualList/package.json +3 -0
  348. package/VirtualList/tests/VirtualGridList-specs.js +289 -0
  349. package/VirtualList/tests/VirtualGridList-translate-specs.js +711 -0
  350. package/VirtualList/tests/VirtualList-specs.js +288 -0
  351. package/VirtualList/tests/VirtualList-translate-specs.js +704 -0
  352. package/VirtualList/tests/useEvent-specs.js +172 -0
  353. package/VirtualList/tests/useEvent-translate-specs.js +309 -0
  354. package/VirtualList/useEvent.js +324 -0
  355. package/VirtualList/usePreventScroll.js +31 -0
  356. package/VirtualList/useSpotlight.js +157 -0
  357. package/VirtualList/useThemeVirtualList.js +471 -0
  358. package/VirtualList/useThemeVirtualList.module.css +34 -0
  359. package/WizardPanels/Panel.js +99 -0
  360. package/WizardPanels/WizardPanels.js +501 -0
  361. package/WizardPanels/WizardPanels.module.css +15 -0
  362. package/WizardPanels/index.d.ts +182 -0
  363. package/WizardPanels/index.js +50 -0
  364. package/WizardPanels/package.json +3 -0
  365. package/WizardPanels/tests/WizardPanels-specs.js +713 -0
  366. package/codecov.yml +13 -0
  367. package/fonts/Limestone_Icons.ttf +0 -0
  368. package/fonts/Miso/LICENSE.txt +75 -0
  369. package/fonts/Miso/Miso-Bold.ttf +0 -0
  370. package/fonts/Miso/Miso-Light.ttf +0 -0
  371. package/fonts/Miso/Miso-Regular.ttf +0 -0
  372. package/fonts/MuseoSans/LICENSE.txt +75 -0
  373. package/fonts/MuseoSans/MuseoSans-Black.ttf +0 -0
  374. package/fonts/MuseoSans/MuseoSans-BlackItalic.ttf +0 -0
  375. package/fonts/MuseoSans/MuseoSans-Bold.ttf +0 -0
  376. package/fonts/MuseoSans/MuseoSans-BoldItalic.ttf +0 -0
  377. package/fonts/MuseoSans/MuseoSans-Light.ttf +0 -0
  378. package/fonts/MuseoSans/MuseoSans-Medium.ttf +0 -0
  379. package/fonts/MuseoSans/MuseoSans-MediumItalic.ttf +0 -0
  380. package/fonts/MuseoSans/MuseoSans-Thin.ttf +0 -0
  381. package/index.js +2 -0
  382. package/internal/$L/$L.d.ts +21 -0
  383. package/internal/$L/$L.js +97 -0
  384. package/internal/$L/package.json +3 -0
  385. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +74 -0
  386. package/internal/AsyncRenderChildren/package.json +3 -0
  387. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +49 -0
  388. package/internal/DateComponentPicker/DateComponentPicker.js +165 -0
  389. package/internal/DateComponentPicker/DateComponentPicker.module.css +53 -0
  390. package/internal/DateComponentPicker/DateComponentRangePicker.js +132 -0
  391. package/internal/DateComponentPicker/index.js +31 -0
  392. package/internal/DateComponentPicker/package.json +3 -0
  393. package/internal/DateTime/DateTime.js +83 -0
  394. package/internal/DateTime/DateTime.module.css +51 -0
  395. package/internal/DateTime/DateTimeDecorator.js +268 -0
  396. package/internal/DateTime/index.js +37 -0
  397. package/internal/DateTime/package.json +3 -0
  398. package/internal/DateTime/tests/DateTimeDecorator-specs.js +33 -0
  399. package/internal/DebounceDecorator/DebounceDecorator.js +125 -0
  400. package/internal/DebounceDecorator/package.json +3 -0
  401. package/internal/DebounceDecorator/tests/DebounceDecorator-specs.js +151 -0
  402. package/internal/Panels/Arrangers.js +248 -0
  403. package/internal/Panels/CancelDecorator.js +43 -0
  404. package/internal/Panels/FloatingLayerIdProvider.js +27 -0
  405. package/internal/Panels/NavigationButton.js +64 -0
  406. package/internal/Panels/NavigationButton.module.css +69 -0
  407. package/internal/Panels/PanelsRouter.js +223 -0
  408. package/internal/Panels/PopupDecorator.js +287 -0
  409. package/internal/Panels/TransitionDecorator.js +99 -0
  410. package/internal/Panels/Viewport.js +313 -0
  411. package/internal/Panels/Viewport.module.css +25 -0
  412. package/internal/Panels/captureKeys.js +48 -0
  413. package/internal/Panels/index.js +101 -0
  414. package/internal/Panels/package.json +3 -0
  415. package/internal/Panels/useAutoFocus.js +95 -0
  416. package/internal/Panels/useFocusOnTransition.js +45 -0
  417. package/internal/Panels/useToggleRole.js +30 -0
  418. package/internal/Panels/util.js +64 -0
  419. package/internal/Picker/Picker.js +942 -0
  420. package/internal/Picker/Picker.module.css +1145 -0
  421. package/internal/Picker/PickerButton.js +97 -0
  422. package/internal/Picker/PickerItem.js +38 -0
  423. package/internal/Picker/SpottablePicker.js +63 -0
  424. package/internal/Picker/package.json +3 -0
  425. package/internal/Picker/tests/Picker-specs.js +968 -0
  426. package/internal/SharedStateDecorator/SharedStateDecorator.js +167 -0
  427. package/internal/SharedStateDecorator/package.json +3 -0
  428. package/internal/SharedStateDecorator/tests/SharedStateDecorator-specs.js +277 -0
  429. package/internal/WindowEventable/WindowEventable.js +114 -0
  430. package/internal/WindowEventable/package.json +3 -0
  431. package/internal/util/package.json +3 -0
  432. package/internal/util/util.js +79 -0
  433. package/internal/validators/package.json +4 -0
  434. package/internal/validators/tests/validators-specs.js +80 -0
  435. package/internal/validators/validators.js +136 -0
  436. package/package.json +69 -0
  437. package/resources/ilibmanifest.json +3 -0
  438. package/styles/color-mixins.less +230 -0
  439. package/styles/colors-game-green.less +25 -0
  440. package/styles/colors-game-orange.less +25 -0
  441. package/styles/colors-game.less +56 -0
  442. package/styles/colors-highcontrast.less +21 -0
  443. package/styles/colors.less +435 -0
  444. package/styles/mixins.less +337 -0
  445. package/styles/skin.less +54 -0
  446. package/styles/variables-base.less +32 -0
  447. package/styles/variables-game.less +25 -0
  448. package/styles/variables.less +1182 -0
  449. package/useScroll/HoverToScroll.js +265 -0
  450. package/useScroll/HoverToScroll.module.css +38 -0
  451. package/useScroll/OverscrollEffect.module.css +14 -0
  452. package/useScroll/Scrollbar.js +171 -0
  453. package/useScroll/Scrollbar.module.css +19 -0
  454. package/useScroll/ScrollbarPlaceholder.js +64 -0
  455. package/useScroll/ScrollbarTrack.js +209 -0
  456. package/useScroll/ScrollbarTrack.module.css +136 -0
  457. package/useScroll/package.json +3 -0
  458. package/useScroll/useEvent.js +693 -0
  459. package/useScroll/useOverscrollEffect.js +105 -0
  460. package/useScroll/useScroll.js +523 -0
  461. package/useScroll/useScroll.module.css +49 -0
  462. package/useScroll/useSpotlight.js +32 -0
  463. package/useScroll/useThemeScrollContentHandle.js +32 -0
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ /*
4
+ * This module loads Limestone's locale specific fonts.
5
+ *
6
+ * _This is not intended to be directly included by external developers._ The purpose of this is to
7
+ * override the existing "Limestone" font family with a new typeface, conditionally when the system
8
+ * locale matches the corresponding locale for the font (defined in this component's code).
9
+ *
10
+ */
11
+ var _require = require('@enact/ui/internal/localized-fonts'),
12
+ addLocalizedFont = _require.addLocalizedFont,
13
+ generateFontRules = _require.generateFontRules,
14
+ generateFontOverrideRules = _require.generateFontOverrideRules;
15
+ var fontName = 'Limestone';
16
+
17
+ // Locale Configuration Block
18
+ //
19
+ // "Shape" of the object below is as follows: [square brackets indicate optional elements]
20
+ // fonts = {
21
+ // locale|language|region: {
22
+ // regular: 'font name',
23
+ // [bold: 'font name',]
24
+ // [light: 'font name',]
25
+ // [unicodeRange: 'U+600-6FF,U+FE70-FEFE']
26
+ // },
27
+ // 'ur': {
28
+ // regular: 'LG Smart UI Urdu',
29
+ // unicodeRange:
30
+ // 'U+600-6FF,' +
31
+ // 'U+FE70-FEFE,' +
32
+ // 'U+FB50-FDFF'
33
+ // }
34
+ // };
35
+ var fonts = {
36
+ 'bn': {
37
+ regular: 'LG Smart UI Bengali'
38
+ },
39
+ 'gu': {
40
+ regular: 'LG Smart UI Gujarati'
41
+ },
42
+ 'hi': {
43
+ regular: 'LG Smart UI Devanagari'
44
+ },
45
+ 'ja': {
46
+ regular: 'LG Smart UI JP'
47
+ },
48
+ 'kn': {
49
+ regular: 'LG Smart UI Kannada'
50
+ },
51
+ 'pa': {
52
+ regular: 'LG Smart UI Gurmukhi'
53
+ },
54
+ 'ta': {
55
+ regular: 'LG Smart UI Tamil'
56
+ },
57
+ 'te': {
58
+ regular: 'LG Smart UI Telugu'
59
+ },
60
+ 'ur': {
61
+ regular: ['LG Smart UI Urdu', 'LGSmartUIUrdu'] // This needs 2 references because the "full name" differs from the "family name". To target this font file directly in all OSs we must also include the "postscript name" in addition to the "full name".
62
+ },
63
+ 'zh-Hans': {
64
+ regular: 'LG Smart UI SC'
65
+ }
66
+ };
67
+
68
+ // Duplications and alternate locale names
69
+ fonts['as'] = fonts['bn'];
70
+ fonts['mr'] = fonts['hi'];
71
+ fonts['en-JP'] = fonts['ja'];
72
+ addLocalizedFont(fontName, fonts);
73
+ module.exports = generateFontRules;
74
+ module.exports.fontGenerator = generateFontRules;
75
+ module.exports.fontOverrideGenerator = generateFontOverrideRules;
76
+ module.exports.generateFontRules = generateFontRules;
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "ThemeDecorator.js"
3
+ }
@@ -0,0 +1,10 @@
1
+ [
2
+ {"name": "hd", "pxPerRem": 16, "width": 1280, "height": 720, "aspectRatioName": "hdtv"},
3
+ {"name": "uw-hd", "pxPerRem": 16, "width": 1920, "height": 804, "aspectRatioName": "cinema"},
4
+ {"name": "fhd", "pxPerRem": 24, "width": 1920, "height": 1080, "aspectRatioName": "hdtv"},
5
+ {"name": "uw-uxga", "pxPerRem": 24, "width": 2560, "height": 1080, "aspectRatioName": "cinema"},
6
+ {"name": "qhd", "pxPerRem": 32, "width": 2560, "height": 1440, "aspectRatioName": "hdtv"},
7
+ {"name": "wqhd", "pxPerRem": 32, "width": 3440, "height": 1440, "aspectRatioName": "cinema"},
8
+ {"name": "uhd", "pxPerRem": 48, "width": 3840, "height": 2160, "aspectRatioName": "hdtv", "base": true},
9
+ {"name": "uhd2", "pxPerRem": 96, "width": 7680, "height": 4320, "aspectRatioName": "hdtv"}
10
+ ]
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
4
+ require("@testing-library/jest-dom");
5
+ var _react = require("@testing-library/react");
6
+ var _ = _interopRequireDefault(require("../"));
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
+ describe('ThemeDecorator', function () {
15
+ var AppRoot = function AppRoot(props) {
16
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread({
17
+ "data-app": true
18
+ }, props));
19
+ };
20
+ var a11yConfig = {
21
+ "float": false,
22
+ ri18n: false,
23
+ ri: false,
24
+ spotlight: false
25
+ };
26
+ var A11yApp = (0, _["default"])(a11yConfig, AppRoot);
27
+ test('should add base classes to wrapped component', function () {
28
+ var config = {
29
+ ri: false,
30
+ i18n: false,
31
+ spotlight: false,
32
+ "float": false,
33
+ overlay: false
34
+ };
35
+ var App = (0, _["default"])(config, AppRoot);
36
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
37
+ "data-testid": "app"
38
+ }));
39
+ _spotlight["default"].terminate();
40
+ var appRoot = _react.screen.getByTestId('app');
41
+ expect(appRoot).toHaveClass('neutral');
42
+ expect(appRoot).toHaveClass('bg');
43
+ });
44
+ test('should add author classes to wrapped component', function () {
45
+ var config = {
46
+ ri: false,
47
+ i18n: false,
48
+ spotlight: false,
49
+ "float": false,
50
+ overlay: false
51
+ };
52
+ var App = (0, _["default"])(config, AppRoot);
53
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
54
+ className: "author-class",
55
+ "data-testid": "app"
56
+ }));
57
+ _spotlight["default"].terminate();
58
+ var appRoot = _react.screen.getByTestId('app');
59
+ expect(appRoot).toHaveClass('author-class');
60
+ });
61
+ test('should not add skin classname to wrapped component when float is enabled', function () {
62
+ var config = {
63
+ ri: false,
64
+ i18n: false,
65
+ spotlight: false,
66
+ "float": true,
67
+ overlay: false
68
+ };
69
+ var App = (0, _["default"])(config, AppRoot);
70
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
71
+ "data-testid": "app"
72
+ }));
73
+ _spotlight["default"].terminate();
74
+ var appRoot = _react.screen.getByTestId('app');
75
+ expect(appRoot).not.toHaveClass('neutral');
76
+ });
77
+ test('should not add .bg class to wrapped component when overlay is enabled', function () {
78
+ var config = {
79
+ ri: false,
80
+ i18n: false,
81
+ spotlight: false,
82
+ "float": false,
83
+ overlay: true
84
+ };
85
+ var App = (0, _["default"])(config, AppRoot);
86
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
87
+ "data-testid": "app"
88
+ }));
89
+ _spotlight["default"].terminate();
90
+ var appRoot = _react.screen.getByTestId('app');
91
+ expect(appRoot).not.toHaveClass('bg');
92
+ });
93
+ describe('AccessibilityDecorator', function () {
94
+ test('should add the highContrast class if passing the highContrast prop of true', function () {
95
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
96
+ "data-testid": "app",
97
+ highContrast: true
98
+ }));
99
+ var appRoot = _react.screen.getByTestId('app');
100
+ expect(appRoot).toHaveClass('highContrast');
101
+ });
102
+ test('should add the largeText class if passing the textSize prop of `large`', function () {
103
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
104
+ "data-testid": "app",
105
+ textSize: "large"
106
+ }));
107
+ var appRoot = _react.screen.getByTestId('app');
108
+ expect(appRoot).toHaveClass('largeText');
109
+ });
110
+ test('should update the skinVariants based on the skinVariants prop', function () {
111
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
112
+ "data-testid": "app",
113
+ skinVariants: ['grayscale']
114
+ }));
115
+ var appRoot = _react.screen.getByTestId('app');
116
+ expect(appRoot).toHaveClass('grayscale');
117
+ });
118
+ test('should add the largeText class when the type of the skinVariants prop is a string', function () {
119
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
120
+ "data-testid": "app",
121
+ textSize: "large",
122
+ skinVariants: "grayscale"
123
+ }));
124
+ var appRoot = _react.screen.getByTestId('app');
125
+ expect(appRoot).toHaveClass('largeText');
126
+ expect(appRoot).toHaveClass('grayscale');
127
+ });
128
+ test('should add largeText class when the type of the skinVariants prop is an array', function () {
129
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
130
+ "data-testid": "app",
131
+ textSize: "large",
132
+ skinVariants: ['grayscale']
133
+ }));
134
+ var appRoot = _react.screen.getByTestId('app');
135
+ expect(appRoot).toHaveClass('largeText');
136
+ expect(appRoot).toHaveClass('grayscale');
137
+ });
138
+ test('should add largeText class when the type of the skinVariants prop is an object', function () {
139
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
140
+ "data-testid": "app",
141
+ textSize: "large",
142
+ skinVariants: {
143
+ grayscale: true
144
+ }
145
+ }));
146
+ var appRoot = _react.screen.getByTestId('app');
147
+ expect(appRoot).toHaveClass('largeText');
148
+ expect(appRoot).toHaveClass('grayscale');
149
+ });
150
+ });
151
+ });
@@ -0,0 +1,147 @@
1
+ // Type definitions for limestone/TimePicker
2
+
3
+ import { ChangeableProps as ui_Changeable_ChangeableProps } from "@enact/ui/Changeable";
4
+ import * as React from "react";
5
+
6
+ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
7
+ type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
8
+
9
+ export interface TimePickerBaseProps {
10
+ /**
11
+ * The `hour` component of the time.
12
+ */
13
+ hour: number;
14
+ /**
15
+ * The `meridiem` component of the time.
16
+ */
17
+ meridiem: number;
18
+ /**
19
+ * The `minute` component of the time.
20
+ */
21
+ minute: number;
22
+ /**
23
+ * The order in which the component pickers are displayed.
24
+ *
25
+ * Should be an array of 2 or 3 strings containing one of `'h'` , `'k'` , `'m'` , and `'a'` .
26
+ */
27
+ order: string[];
28
+ /**
29
+ * Disables voice control.
30
+ */
31
+ "data-webos-voice-disabled"?: boolean;
32
+ /**
33
+ * Disables the `TimePicker` .
34
+ */
35
+ disabled?: boolean;
36
+ /**
37
+ * The "aria-label" for the hour picker
38
+ *
39
+ * If not specified, the "aria-label" for the hour picker will be
40
+ a combination of the current value and 'hour change a value with up down button'.
41
+ */
42
+ hourAriaLabel?: string;
43
+ /**
44
+ * The primary text of `TimePicker` .
45
+ */
46
+ label?: string;
47
+ /**
48
+ * The "aria-label" for the meridiem picker.
49
+ *
50
+ * If not specified, the "aria-label" for the meridiem picker will be
51
+ a combination of the current value and 'change a value with up down button'.
52
+ */
53
+ meridiemAriaLabel?: string;
54
+ /**
55
+ * The hint string read when focusing the meridiem picker.
56
+ */
57
+ meridiemLabel?: string;
58
+ /**
59
+ * Array of meridiem labels to display.
60
+ */
61
+ meridiems: string[];
62
+ /**
63
+ * The "aria-label" for the minute picker.
64
+ *
65
+ * If not specified, the "aria-label" for the minute picker will be
66
+ a combination of the current value and 'minute change a value with up down button'.
67
+ */
68
+ minuteAriaLabel?: string;
69
+ /**
70
+ * Hides the label that displays the time.
71
+ */
72
+ noLabel?: boolean;
73
+ /**
74
+ * Called on changes in the `hour` component of the time.
75
+ */
76
+ onChangeHour?: Function;
77
+ /**
78
+ * Called on changes in the `meridiem` component of the time.
79
+ */
80
+ onChangeMeridiem?: Function;
81
+ /**
82
+ * Called on changes in the `minute` component of the time.
83
+ */
84
+ onChangeMinute?: Function;
85
+ /**
86
+ * Called when the component is removed while retaining focus.
87
+ */
88
+ onSpotlightDisappear?: Function;
89
+ /**
90
+ * Called when the focus leaves the picker when the 5-way left key is pressed.
91
+ */
92
+ onSpotlightLeft?: Function;
93
+ /**
94
+ * Called when the focus leaves the picker when the 5-way right key is pressed.
95
+ */
96
+ onSpotlightRight?: Function;
97
+ /**
98
+ * Disables spotlight navigation into the component.
99
+ */
100
+ spotlightDisabled?: boolean;
101
+ /**
102
+ * Called when `Enter` key down on the last picker
103
+ */
104
+ onComplete?: Function;
105
+ }
106
+ /**
107
+ * is the stateless functional time picker
108
+ component. Should not be used directly but may be composed within another component as it is
109
+ within .
110
+ */
111
+
112
+ export class TimePickerBase extends React.Component<
113
+ Merge<React.HTMLProps<HTMLElement>, TimePickerBaseProps>
114
+ > {}
115
+
116
+ export interface TimePickerProps extends ui_Changeable_ChangeableProps {
117
+ /**
118
+ * Default value
119
+ */
120
+ defaultValue?: number;
121
+ /**
122
+ * The selected date.
123
+ */
124
+ value?: Date;
125
+ }
126
+ /**
127
+ * A component that allows displaying or selecting time.
128
+ *
129
+ * Set the property to a standard JavaScript
130
+ object to initialize the picker.
131
+ *
132
+ * By default, `TimePicker` maintains the state of its `value` property. Supply the
133
+ `defaultValue` property to control its initial value. If you wish to directly control updates
134
+ to the component, supply a value to `value` at creation time and update it in response to
135
+ `onChange` events.
136
+ */
137
+
138
+ export class TimePicker extends React.Component<
139
+ Merge<React.HTMLProps<HTMLElement>, TimePickerProps>
140
+ > {}
141
+
142
+ /**
143
+ * Converts a standard `Date` object into a locale-specific string.
144
+ */
145
+ export function timeToLocaleString(time: Date): string | any;
146
+
147
+ export default TimePicker;
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TimePicker = void 0;
7
+ Object.defineProperty(exports, "TimePickerBase", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _TimePickerBase["default"];
11
+ }
12
+ });
13
+ exports.timeToLocaleString = exports["default"] = void 0;
14
+ var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
15
+ var _DateFactory = _interopRequireDefault(require("ilib/lib/DateFactory"));
16
+ var _DateFmt = _interopRequireDefault(require("ilib/lib/DateFmt"));
17
+ var _LocaleInfo = _interopRequireDefault(require("ilib/lib/LocaleInfo"));
18
+ var _DateTime = require("../internal/DateTime");
19
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
20
+ var _TimePickerBase = _interopRequireDefault(require("./TimePickerBase"));
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
22
+ /**
23
+ * Provides a Limestone-themed time selection component.
24
+ *
25
+ * @example
26
+ * <TimePicker value={new Date()} />
27
+ *
28
+ * @module limestone/TimePicker
29
+ * @exports TimePicker
30
+ * @exports TimePickerBase
31
+ * @exports timeToLocaleString
32
+ */
33
+
34
+ /*
35
+ * Converts a string representation of time into minutes
36
+ *
37
+ * @param {String} time Time in the format `HH:mm`
38
+ *
39
+ * @returns {Number} Time in minute
40
+ * @private
41
+ */
42
+ var toMinutes = function toMinutes(time) {
43
+ var colon = time.indexOf(':');
44
+ var hour = parseInt(time.substring(0, colon));
45
+ var minute = parseInt(time.substring(colon + 1));
46
+ return hour * 60 + minute;
47
+ };
48
+
49
+ /*
50
+ * Converts the `start` and `end` string representations (e.g. '12:00') into a numerical
51
+ * representation.
52
+ *
53
+ * @param {Object} options Time options
54
+ * @param {String} options.start Start time of meridiem
55
+ * @param {String} options.end End time of meridiem
56
+ *
57
+ * @returns {Object} Contains start and end time in minutes
58
+ * @private
59
+ */
60
+ var calcMeridiemRange = function calcMeridiemRange(_ref) {
61
+ var start = _ref.start,
62
+ end = _ref.end;
63
+ return {
64
+ start: toMinutes(start),
65
+ end: toMinutes(end)
66
+ };
67
+ };
68
+
69
+ /*
70
+ * Finds the index of the meridiem which contains `time`
71
+ *
72
+ * @param {Number} time Time in minutes
73
+ * @param {Object[]} meridiems Array of meridiems with `start` and `end` members in minutes
74
+ *
75
+ * @returns {Number} Index of `time` in `meridiems`
76
+ * @private
77
+ */
78
+ var indexOfMeridiem = function indexOfMeridiem(time, meridiems) {
79
+ var minutes = time.getHours() * 60 + time.getMinutes();
80
+ for (var i = 0; i < meridiems.length; i++) {
81
+ var m = meridiems[i];
82
+ if (minutes >= m.start && minutes <= m.end) {
83
+ return i;
84
+ }
85
+ }
86
+ return -1;
87
+ };
88
+ var getLabelFormatter = function getLabelFormatter() {
89
+ return new _DateFmt["default"]({
90
+ type: 'time',
91
+ useNative: false,
92
+ timezone: 'local',
93
+ length: 'full',
94
+ date: 'dmwy'
95
+ });
96
+ };
97
+ var dateTimeConfig = {
98
+ customProps: function customProps(i18n, value, _ref2) {
99
+ var meridiemLabel = _ref2.meridiemLabel;
100
+ var values = {
101
+ // i18n props
102
+ meridiems: i18n.meridiemLabels,
103
+ meridiemLabel: meridiemLabel,
104
+ // date components
105
+ hour: 12,
106
+ minute: 0,
107
+ meridiem: 0
108
+ };
109
+ if (i18n.meridiemEnabled && meridiemLabel == null) {
110
+ if (values.meridiems.length > 2) {
111
+ values.meridiemLabel = "".concat(values.meridiems[0], " / ").concat(values.meridiems[1], " ...");
112
+ } else {
113
+ values.meridiemLabel = values.meridiems.join(' / ');
114
+ }
115
+ }
116
+ if (value) {
117
+ if (i18n.meridiemEnabled) {
118
+ values.meridiem = indexOfMeridiem(value, i18n.meridiemRanges);
119
+ }
120
+ values.hour = value.getHours();
121
+ values.minute = value.getMinutes();
122
+ }
123
+ return values;
124
+ },
125
+ defaultOrder: ['h', 'm', 'a'],
126
+ handlers: {
127
+ onChangeHour: function onChangeHour(ev, value) {
128
+ var currentTime = (0, _DateFactory["default"])(value).getTimeExtended();
129
+ var currentHour = value.hour;
130
+ value.hour = ev.value;
131
+
132
+ // In the case of navigating onto the skipped hour of DST, ilib will return the same
133
+ // value so we skip that hour and update the value again.
134
+ var newTime = (0, _DateFactory["default"])(value).getTimeExtended();
135
+ if (newTime === currentTime) {
136
+ value.hour = ev.value * 2 - currentHour;
137
+ }
138
+ return value;
139
+ },
140
+ onChangeMinute: function onChangeMinute(ev, value) {
141
+ value.minute = ev.value;
142
+ return value;
143
+ },
144
+ onChangeMeridiem: function onChangeMeridiem(ev, value, i18n) {
145
+ var meridiemRanges = i18n.meridiemRanges;
146
+ var meridiem = meridiemRanges[ev.value];
147
+ if (meridiemRanges.length === 2) {
148
+ // In the common case of 2 meridiems, we'll offset hours by 12 so that picker stays
149
+ // the same.
150
+ value.hour = (value.getHours() + 12) % 24;
151
+ } else {
152
+ // In the rarer case of > 2 meridiems (e.g. am-ET), try to set hours only first
153
+ var hours = Math.floor(meridiem.start / 60);
154
+ value.hour = hours;
155
+
156
+ // but check if it is still out of bounds and update the minutes as well
157
+ var minutes = hours * 60 + value.getMinutes();
158
+ if (minutes > meridiem.end) {
159
+ value.minute = meridiem.end % 60;
160
+ } else if (minutes < meridiem.start) {
161
+ value.minute = meridiem.start % 60;
162
+ }
163
+ }
164
+ return value;
165
+ }
166
+ },
167
+ i18n: function i18n() {
168
+ // Filters used to extract the order of pickers from the ilib template
169
+ var includeMeridiem = /([khma])(?!\1)/ig;
170
+ var excludeMeridiem = /([khm])(?!\1)/ig;
171
+
172
+ // Meridiem localization
173
+ var merFormatter = new _DateFmt["default"]({
174
+ template: 'a',
175
+ useNative: false,
176
+ timezone: 'local'
177
+ });
178
+ var meridiems = merFormatter.getMeridiemsRange();
179
+ var meridiemRanges = meridiems.map(calcMeridiemRange);
180
+ var meridiemLabels = meridiems.map(function (obj) {
181
+ return obj.name;
182
+ });
183
+
184
+ // Picker ordering
185
+ var li = new _LocaleInfo["default"]();
186
+ var clockPref = li.getClock();
187
+ var meridiemEnabled = clockPref === '12';
188
+ var filter = meridiemEnabled ? includeMeridiem : excludeMeridiem;
189
+ var order = getLabelFormatter().getTemplate().replace(/'.*?'/g, '').match(filter).map(function (s) {
190
+ return s[0].toLowerCase();
191
+ });
192
+ return {
193
+ formatter: getLabelFormatter(),
194
+ meridiemEnabled: meridiemEnabled,
195
+ meridiemLabels: meridiemLabels,
196
+ meridiemRanges: meridiemRanges,
197
+ order: order
198
+ };
199
+ }
200
+ };
201
+
202
+ /**
203
+ * A component that allows displaying or selecting time.
204
+ *
205
+ * Set the {@link limestone/TimePicker.TimePicker.value|value} property to a standard JavaScript
206
+ * {@link /docs/developer-guide/glossary/#date|Date} object to initialize the picker.
207
+ *
208
+ * By default, `TimePicker` maintains the state of its `value` property. Supply the
209
+ * `defaultValue` property to control its initial value. If you wish to directly control updates
210
+ * to the component, supply a value to `value` at creation time and update it in response to
211
+ * `onChange` events.
212
+ *
213
+ * @class TimePicker
214
+ * @memberof limestone/TimePicker
215
+ * @mixes ui/Changeable.Changeable
216
+ * @ui
217
+ * @public
218
+ */
219
+
220
+ /**
221
+ * Default value
222
+ *
223
+ * @name defaultValue
224
+ * @memberof limestone/TimePicker.TimePicker.prototype
225
+ * @type {Number}
226
+ * @public
227
+ */
228
+
229
+ var TimePicker = exports.TimePicker = (0, _Pure["default"])((0, _Skinnable["default"])((0, _DateTime.DateTimeDecorator)(dateTimeConfig, _TimePickerBase["default"])));
230
+
231
+ /**
232
+ * The selected date.
233
+ *
234
+ * @name value
235
+ * @memberof limestone/TimePicker.TimePicker
236
+ * @instance
237
+ * @type {Date}
238
+ * @public
239
+ */
240
+
241
+ /**
242
+ * Converts a standard `Date` object into a locale-specific string.
243
+ *
244
+ * @function
245
+ * @memberof limestone/TimePicker
246
+ * @param {Date} time `Date` to convert
247
+ * @returns {String|null} Converted date or `null` if `date` is invalid
248
+ */
249
+ var timeToLocaleString = exports.timeToLocaleString = function timeToLocaleString(time) {
250
+ if (!time) {
251
+ return null;
252
+ }
253
+ return getLabelFormatter().format(time);
254
+ };
255
+ var _default = exports["default"] = TimePicker;