@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,661 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Tab", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Tab["default"];
10
+ }
11
+ });
12
+ exports["default"] = exports.TabLayoutDecorator = exports.TabLayoutContext = exports.TabLayoutBase = exports.TabLayout = void 0;
13
+ var _handle = require("@enact/core/handle");
14
+ var _keymap = require("@enact/core/keymap");
15
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
16
+ var _util = require("@enact/core/util");
17
+ var _I18nDecorator = require("@enact/i18n/I18nDecorator");
18
+ var _spotlight = _interopRequireWildcard(require("@enact/spotlight"));
19
+ var _target = require("@enact/spotlight/src/target");
20
+ var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
21
+ var _Changeable = require("@enact/ui/Changeable");
22
+ var _Layout = require("@enact/ui/Layout");
23
+ var _resolution = _interopRequireWildcard(require("@enact/ui/resolution"));
24
+ var _Toggleable = _interopRequireDefault(require("@enact/ui/Toggleable"));
25
+ var _Touchable = _interopRequireDefault(require("@enact/ui/Touchable"));
26
+ var _ViewManager = _interopRequireDefault(require("@enact/ui/ViewManager"));
27
+ var _propTypes = _interopRequireDefault(require("prop-types"));
28
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
29
+ var _react = require("react");
30
+ var _ThemeDecorator = require("../ThemeDecorator");
31
+ var _RefocusDecorator = _interopRequireWildcard(require("./RefocusDecorator"));
32
+ var _TabGroup = _interopRequireDefault(require("./TabGroup"));
33
+ var _Tab = _interopRequireDefault(require("./Tab"));
34
+ var _TabLayoutModule = _interopRequireDefault(require("./TabLayout.module.css"));
35
+ var _PopupTabLayoutModule = _interopRequireDefault(require("../PopupTabLayout/PopupTabLayout.module.css"));
36
+ var _jsxRuntime = require("react/jsx-runtime");
37
+ var _excluded = ["children", "collapsed", "css", "data-spotlight-id", "primaryIndex", "dimensions", "handleClick", "handleEnter", "handleFlick", "handleFocus", "handleTabsTransitionEnd", "index", "onCollapse", "onScrollStop", "onSelect", "orientation", "scrollable", "scrollPosition", "size", "tabOrientation", "tabs", "type"];
38
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
39
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
40
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
41
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
42
+ function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
43
+ 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; }
44
+ 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; }
45
+ 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; }
46
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
47
+ 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); } /**
48
+ * Provides a Limestone-themed TabLayout.
49
+ *
50
+ * @module limestone/TabLayout
51
+ * @exports TabLayout
52
+ * @exports TabLayoutBase
53
+ * @exports TabLayoutContext
54
+ * @exports TabLayoutDecorator
55
+ * @exports Tab
56
+ */
57
+ var MAX_TABS_BEFORE_VERTICAL_SCROLLING = 8;
58
+ var TAB_SPACING = 48;
59
+ var TabLayoutContext = exports.TabLayoutContext = /*#__PURE__*/(0, _react.createContext)(null);
60
+ var TouchableCell = (0, _Touchable["default"])(_Layout.Cell);
61
+ var isTouchMode = function isTouchMode() {
62
+ return (0, _ThemeDecorator.getLastInputType)() === 'touch';
63
+ };
64
+ var getHorizontalTabWidth = function getHorizontalTabWidth(dataSize, size, tabSize) {
65
+ var widths;
66
+ if (tabSize) {
67
+ return tabSize;
68
+ }
69
+ if (size === 'small') {
70
+ widths = [540, 420, 420];
71
+ } else {
72
+ widths = [852, 672, 552];
73
+ }
74
+ if (dataSize < 5) {
75
+ return widths[0];
76
+ } else if (dataSize < 6) {
77
+ return widths[1];
78
+ } else {
79
+ return widths[2];
80
+ }
81
+ };
82
+ var isHorizontalScrollableTabs = function isHorizontalScrollableTabs(dataSize, offset, size, tabSize) {
83
+ var _window;
84
+ var totalTabsWidth = dataSize * getHorizontalTabWidth(dataSize, size, tabSize) + TAB_SPACING * (dataSize - 1) + 2 * offset;
85
+ return typeof window !== 'undefined' && (_window = window) !== null && _window !== void 0 && _window.innerWidth ? window.innerWidth < _resolution["default"].scale(totalTabsWidth) : false;
86
+ };
87
+
88
+ /**
89
+ * Tabbed Layout component.
90
+ *
91
+ * Example:
92
+ *
93
+ * ```jsx
94
+ * <TabLayout>
95
+ * <Tab title="Tab One">
96
+ * <Item>Hello</Item>
97
+ * </Tab>
98
+ * <Tab title="Tab Two">
99
+ * <Item>Goodbye</Item>
100
+ * </Tab>
101
+ * </TabLayout>
102
+ * ```
103
+ *
104
+ * @class TabLayout
105
+ * @memberof limestone/TabLayout
106
+ * @ui
107
+ * @public
108
+ */
109
+ var TabLayoutBase = exports.TabLayoutBase = (0, _kind["default"])({
110
+ name: 'TabLayout',
111
+ propTypes: /** @lends limestone/TabLayout.TabLayout.prototype */{
112
+ /**
113
+ * Sets where this component should attach its tabs and animations.
114
+ *
115
+ * "left" and "right" represent true screen left and screen right, while "start" represents
116
+ * screen left in LTR and screen right in RTL. "end" is the reverse: screen right for LTR
117
+ * and screen left for RTL.
118
+ *
119
+ * @type {('left'|'right'|'start'|'end')}
120
+ * @default 'start'
121
+ * @private
122
+ */
123
+ anchorTo: _propTypes["default"].oneOf(['left', 'right', 'start', 'end']),
124
+ /**
125
+ * Prevents the tab list from automatically collapsing when the screen orientation changes to portrait mode.
126
+ *
127
+ * Only applies to `orientation="vertical".
128
+ *
129
+ * @type {Boolean}
130
+ * @public
131
+ */
132
+ blockCollapseOnPortrait: _propTypes["default"].bool,
133
+ /**
134
+ * Collection of {@link limestone/TabLayout.Tab|Tabs} to render.
135
+ *
136
+ * @type {Node}
137
+ * @public
138
+ */
139
+ children: _propTypes["default"].node,
140
+ /**
141
+ * Collapses the vertical tab list into icons only.
142
+ *
143
+ * Only applies to `orientation="vertical"`. If the tabs do not include icons, a single
144
+ * collapsed icon will be shown.
145
+ *
146
+ * @type {Boolean}
147
+ * @public
148
+ */
149
+ collapsed: _propTypes["default"].bool,
150
+ /**
151
+ * Customizes the component by mapping the supplied collection of CSS class names to the
152
+ * corresponding internal elements and states of this component.
153
+ *
154
+ * The following classes are supported:
155
+ *
156
+ * @type {Object}
157
+ * @public
158
+ */
159
+ css: _propTypes["default"].object,
160
+ 'data-spotlight-id': _propTypes["default"].string,
161
+ /**
162
+ * Specify dimensions for the layout areas.
163
+ *
164
+ * All 4 combinations must be supplied: each of the elements, tabs and content in both
165
+ * collapsed and expanded state.
166
+ *
167
+ * @type {{tabs: {collapsed: Number, normal: Number}, content: {expanded: number, normal: number}}}
168
+ * @default {
169
+ * tabs: {
170
+ * collapsed: 228,
171
+ * normal: 882
172
+ * },
173
+ * content: {
174
+ * expanded: null,
175
+ * normal: null
176
+ * }
177
+ * }
178
+ * @private
179
+ */
180
+ dimensions: _propTypes["default"].shape({
181
+ content: _propTypes["default"].shape({
182
+ expanded: _propTypes["default"].number,
183
+ normal: _propTypes["default"].number
184
+ }).isRequired,
185
+ tabs: _propTypes["default"].shape({
186
+ collapsed: _propTypes["default"].number,
187
+ normal: _propTypes["default"].number
188
+ }).isRequired
189
+ }),
190
+ /**
191
+ * The currently selected tab.
192
+ *
193
+ * @type {Number}
194
+ * @default 0
195
+ * @public
196
+ */
197
+ index: _propTypes["default"].number,
198
+ /**
199
+ * The offset of the tabs area from the left and right edges of the screen.
200
+ * This option is only applicable when `orientation` is set to `horizontal`.
201
+ * The default value set to `36` to have the right position of the tabs in the normal panel.
202
+ * If the tabs are supposed to scroll, this value should be set to `132` and the panel should have no padding.
203
+ *
204
+ * @type {Number}
205
+ * @default 36
206
+ * @public
207
+ */
208
+ offset: _propTypes["default"].number,
209
+ /**
210
+ * Called when the tabs are collapsed.
211
+ *
212
+ * @type {Function}
213
+ * @public
214
+ */
215
+ onCollapse: _propTypes["default"].func,
216
+ /**
217
+ * Called when the tabs are expanded.
218
+ *
219
+ * @type {Function}
220
+ * @public
221
+ */
222
+ onExpand: _propTypes["default"].func,
223
+ /**
224
+ * Called when a tab is selected
225
+ *
226
+ * @type {Function}
227
+ * @public
228
+ */
229
+ onSelect: _propTypes["default"].func,
230
+ /**
231
+ * Called when the tab collapse or expand animation completes.
232
+ *
233
+ * Event payload includes:
234
+ * * `type` - Always set to "onTabAnimationEnd"
235
+ * * `collapsed` - `true` when the tabs are collapsed
236
+ *
237
+ * @type {Function}
238
+ * @public
239
+ */
240
+ onTabAnimationEnd: _propTypes["default"].func,
241
+ /**
242
+ * Orientation of the tabs.
243
+ *
244
+ * @type {('horizontal'|'vertical')}
245
+ * @default 'vertical'
246
+ * @public
247
+ */
248
+ orientation: _propTypes["default"].oneOf(['horizontal', 'vertical']),
249
+ /**
250
+ * The index of the primary tab.
251
+ * When this prop is set, the initial focus will be on the primary tab when rendered.
252
+ * Also, when pressing the back key from other tabs, the focus will be moved to the primary tab.
253
+ * If the `primaryIndex` is not provided, the initial focus will default to the first tab during the initial render.
254
+ *
255
+ * @type {Number}
256
+ * @default null
257
+ * @public
258
+ */
259
+ primaryIndex: _propTypes["default"].number,
260
+ /**
261
+ * Indicates the content's text direction is right-to-left.
262
+ *
263
+ * @type {Boolean}
264
+ * @private
265
+ */
266
+ rtl: _propTypes["default"].bool,
267
+ /**
268
+ * The scroll position of the tab list.
269
+ * This property maintains the vertical scroll position of the tabs when they are scrollable and collapsed.
270
+ *
271
+ * @type {{x: number, y: number}}
272
+ * @default {x: 0, y: 0}
273
+ * @private
274
+ */
275
+ scrollPosition: _propTypes["default"].object,
276
+ /**
277
+ * The size of the horizontal tab.
278
+ *
279
+ * @type {('small'|'large')}
280
+ * @default 'large'
281
+ * @public
282
+ */
283
+ size: _propTypes["default"].oneOf(['small', 'large']),
284
+ /**
285
+ * Assign a custom size to horizontal tabs.
286
+ *
287
+ * Tabs in the horizontal orientation automatically stretch to fill the available width.
288
+ * Leave this prop blank to use the default auto-sizing behavior.
289
+ * Tabs may also be set to a finite width using this property. This accepts numeric pixel
290
+ * values. Be mindful of the value you provide as values that are too wide will run off the
291
+ * edge of the screen.
292
+ *
293
+ * Only applies to `orientation="horizontal"` at this time.
294
+ *
295
+ * @type {Number}
296
+ * @public
297
+ */
298
+ tabSize: _propTypes["default"].number,
299
+ /**
300
+ * Type of TabLayout.
301
+ *
302
+ * @type {('normal'|'popup')}
303
+ * @default 'normal'
304
+ * @private
305
+ */
306
+ type: _propTypes["default"].oneOf(['normal', 'popup'])
307
+ },
308
+ defaultProps: {
309
+ anchorTo: 'start',
310
+ dimensions: {
311
+ tabs: {
312
+ collapsed: 216,
313
+ normal: 888
314
+ },
315
+ content: {
316
+ expanded: null,
317
+ normal: null
318
+ }
319
+ },
320
+ index: null,
321
+ primaryIndex: null,
322
+ offset: 36,
323
+ orientation: 'vertical',
324
+ scrollPosition: {
325
+ x: 0,
326
+ y: 0
327
+ },
328
+ size: 'large',
329
+ type: 'normal'
330
+ },
331
+ styles: {
332
+ css: _TabLayoutModule["default"],
333
+ className: 'tabLayout',
334
+ publicClassNames: ['bg', 'button', 'client', 'collapsed', 'content', 'selected', 'tab', 'tabGroup', 'tabLayout', 'tabs', 'tabsExpanded', 'vertical']
335
+ },
336
+ handlers: {
337
+ onKeyDown: function onKeyDown(ev, props) {
338
+ var keyCode = ev.keyCode,
339
+ target = ev.target;
340
+ var collapsed = props.collapsed,
341
+ orientation = props.orientation,
342
+ spotlightId = props['data-spotlight-id'];
343
+ var direction = (0, _spotlight.getDirection)(keyCode);
344
+ if ((0, _handle.forwardWithPrevent)('onKeyDown', ev, props) && direction && collapsed && orientation === 'vertical' && document.querySelector("[data-spotlight-id='".concat(spotlightId, "']")).contains(target) && target.tagName !== 'INPUT') {
345
+ _spotlight["default"].setPointerMode(false);
346
+ ev.preventDefault();
347
+ _spotlight["default"].set(spotlightId, {
348
+ navigableFilter: null
349
+ });
350
+ var nextTarget = (0, _target.getTargetByDirectionFromElement)(direction, target);
351
+ var isNextTargetInTabs = nextTarget && document.querySelector(".".concat(_TabLayoutModule["default"].tabs)).contains(nextTarget);
352
+ _spotlight["default"].set(spotlightId, {
353
+ navigableFilter: (0, _RefocusDecorator.getNavigableFilter)(spotlightId, collapsed)
354
+ });
355
+ if (!isNextTargetInTabs && _spotlight["default"].move(direction)) {
356
+ ev.stopPropagation();
357
+ } else if (isNextTargetInTabs && document.querySelector("[data-spotlight-id='".concat(spotlightId, "'] .").concat(_TabLayoutModule["default"].content)).contains(target)) {
358
+ (0, _handle.forward)('onExpand', ev, props);
359
+ }
360
+ } else if ((0, _keymap.is)('enter')(keyCode) && !collapsed && document.querySelector("[data-spotlight-id='".concat(spotlightId, "-tabs-expanded']")).contains(target) && target.tagName !== 'INPUT') {
361
+ ev.stopPropagation();
362
+ }
363
+ },
364
+ onKeyUp: function onKeyUp(ev, props) {
365
+ var keyCode = ev.keyCode,
366
+ target = ev.target;
367
+ var anchorTo = props.anchorTo,
368
+ collapsed = props.collapsed,
369
+ orientation = props.orientation,
370
+ primaryIndex = props.primaryIndex,
371
+ spotlightId = props['data-spotlight-id'],
372
+ rtl = props.rtl,
373
+ type = props.type;
374
+ var popupPanelRef = document.querySelector("[data-spotlight-id='".concat(spotlightId, "'] .").concat(_PopupTabLayoutModule["default"].panel));
375
+ var tabLayoutContentRef = document.querySelector("[data-spotlight-id='".concat(spotlightId, "'] .").concat(_TabLayoutModule["default"].content));
376
+ var tabsExpandedSpotlightId = "".concat(spotlightId, "-tabs-expanded");
377
+ if ((0, _handle.forwardWithPrevent)('onKeyUp', ev, props) && (0, _keymap.is)('cancel')(keyCode)) {
378
+ if (type === 'popup' && popupPanelRef !== null && popupPanelRef !== void 0 && popupPanelRef.contains(target) && (popupPanelRef === null || popupPanelRef === void 0 ? void 0 : popupPanelRef.dataset.index) === '0' || type === 'normal' && !_spotlight["default"].getPointerMode() && tabLayoutContentRef !== null && tabLayoutContentRef !== void 0 && tabLayoutContentRef.contains(target)) {
379
+ if (collapsed) {
380
+ (0, _handle.forward)('onExpand', ev, props);
381
+ }
382
+ _spotlight["default"].focus("[data-spotlight-id='".concat(tabsExpandedSpotlightId, "']"));
383
+ ev.stopPropagation();
384
+ } else if (primaryIndex !== null) {
385
+ _spotlight["default"].focus("[data-spotlight-id='".concat(tabsExpandedSpotlightId, "-primary-tab']"));
386
+ ev.stopPropagation();
387
+ }
388
+ } else if ((0, _keymap.is)('enter')(keyCode) && !collapsed && document.querySelector("[data-spotlight-id='".concat(tabsExpandedSpotlightId, "']")).contains(target) && target.tagName !== 'INPUT') {
389
+ _spotlight["default"].setPointerMode(false);
390
+ var moveTo;
391
+ if (orientation === 'vertical') {
392
+ if (anchorTo === 'left') {
393
+ moveTo = 'right';
394
+ } else if (anchorTo === 'right') {
395
+ moveTo = 'left';
396
+ } else if (anchorTo === 'start') {
397
+ if (rtl) {
398
+ moveTo = 'left';
399
+ } else {
400
+ moveTo = 'right';
401
+ }
402
+ } else if (anchorTo === 'end') {
403
+ if (!rtl) {
404
+ moveTo = 'left';
405
+ } else {
406
+ moveTo = 'right';
407
+ }
408
+ }
409
+ } else {
410
+ moveTo = 'down';
411
+ }
412
+ _spotlight["default"].move(moveTo);
413
+ }
414
+ },
415
+ onScrollStop: (0, _handle.handle)((0, _handle.forProp)('collapsed', false), (0, _handle.forProp)('orientation', 'vertical'), (0, _handle.forwardCustom)('onScrollStop', function (_ref) {
416
+ var scrollLeft = _ref.scrollLeft,
417
+ scrollTop = _ref.scrollTop;
418
+ return {
419
+ scrollPosition: {
420
+ x: scrollLeft,
421
+ y: scrollTop
422
+ }
423
+ };
424
+ })),
425
+ onSelect: (0, _handle.handle)((0, _handle.forwardCustom)('onSelect', function (_ref2) {
426
+ var selected = _ref2.selected;
427
+ return {
428
+ index: selected
429
+ };
430
+ })),
431
+ handleTabsTransitionEnd: (0, _handle.handle)((0, _handle.forward)('onTransitionEnd'), (0, _handle.forProp)('orientation', 'vertical'),
432
+ // Validate the transition is from the root node
433
+ function (ev) {
434
+ return ev.target.classList.contains(_TabLayoutModule["default"].tabs);
435
+ }, (0, _handle.forwardCustom)('onTabAnimationEnd', function (ev, _ref3) {
436
+ var collapsed = _ref3.collapsed;
437
+ return {
438
+ collapsed: Boolean(collapsed)
439
+ };
440
+ })),
441
+ handleFlick: function handleFlick(_ref4, _ref5) {
442
+ var direction = _ref4.direction,
443
+ velocityX = _ref4.velocityX;
444
+ var collapsed = _ref5.collapsed,
445
+ onCollapse = _ref5.onCollapse,
446
+ onExpand = _ref5.onExpand;
447
+ // See the global class 'spotlight-input-touch' to check the input type is touch
448
+ if (isTouchMode() && direction === 'horizontal') {
449
+ if (!collapsed && velocityX < 0) {
450
+ onCollapse();
451
+ } else if (collapsed && velocityX > 0) {
452
+ onExpand();
453
+ }
454
+ }
455
+ },
456
+ handleClick: (0, _handle.handle)(isTouchMode, (0, _handle.forward)('onExpand')),
457
+ handleFocus: (0, _handle.handle)((0, _handle.not)(isTouchMode), (0, _handle.forward)('onExpand')),
458
+ handleEnter: function handleEnter(ev, props) {
459
+ var index = ev.index,
460
+ previousIndex = ev.previousIndex;
461
+ if (index > previousIndex) {
462
+ (0, _handle.forward)('onCollapse', ev, props);
463
+ }
464
+ }
465
+ },
466
+ computed: {
467
+ children: function children(_ref6) {
468
+ var _children = _ref6.children;
469
+ return (0, _util.mapAndFilterChildren)(_children, function (child) {
470
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {
471
+ children: child.props.children
472
+ });
473
+ });
474
+ },
475
+ className: function className(_ref7) {
476
+ var collapsed = _ref7.collapsed,
477
+ anchorTo = _ref7.anchorTo,
478
+ orientation = _ref7.orientation,
479
+ styler = _ref7.styler;
480
+ return styler.append({
481
+ collapsed: orientation === 'vertical' && collapsed
482
+ }, "anchor".concat((0, _util.cap)(anchorTo)), orientation);
483
+ },
484
+ scrollable: function scrollable(_ref8) {
485
+ var children = _ref8.children,
486
+ offset = _ref8.offset,
487
+ orientation = _ref8.orientation,
488
+ size = _ref8.size,
489
+ tabSize = _ref8.tabSize;
490
+ var isVertical = orientation === 'vertical';
491
+ return isVertical ? children.length > MAX_TABS_BEFORE_VERTICAL_SCROLLING : isHorizontalScrollableTabs(children.length, offset, size, tabSize);
492
+ },
493
+ style: function style(_ref9) {
494
+ var children = _ref9.children,
495
+ dimensions = _ref9.dimensions,
496
+ offset = _ref9.offset,
497
+ orientation = _ref9.orientation,
498
+ size = _ref9.size,
499
+ _style = _ref9.style,
500
+ tabSize = _ref9.tabSize;
501
+ var isVertical = orientation === 'vertical';
502
+ var scrollable = isVertical ? children.length > MAX_TABS_BEFORE_VERTICAL_SCROLLING : isHorizontalScrollableTabs(children.length, offset, size, tabSize);
503
+ var tabSizeValue = !isVertical ? getHorizontalTabWidth(children.length, size, tabSize) : null;
504
+ var totalTabsWidth = _resolution["default"].scaleToRem(tabSizeValue * children.length + TAB_SPACING * (children.length - 1));
505
+ return _objectSpread(_objectSpread({}, _style), {}, {
506
+ '--offset': (0, _resolution.scaleToRem)(offset),
507
+ '--scrollable': scrollable ? '1' : '0',
508
+ '--tabs-width': !isVertical ? totalTabsWidth : '100%',
509
+ '--tab-width': (0, _resolution.scaleToRem)(tabSizeValue),
510
+ '--tablayout-expand-collapse-diff': orientation === 'vertical' ? (0, _resolution.scaleToRem)(dimensions.tabs.normal - dimensions.tabs.collapsed) : 0
511
+ });
512
+ },
513
+ index: function index(_ref0) {
514
+ var _ref1;
515
+ var _index = _ref0.index,
516
+ primaryIndex = _ref0.primaryIndex;
517
+ // If `index` is not provided, it defaults to `primaryIndex` or 0.
518
+ return (_ref1 = _index !== null && _index !== void 0 ? _index : primaryIndex) !== null && _ref1 !== void 0 ? _ref1 : 0;
519
+ },
520
+ tabOrientation: function tabOrientation(_ref10) {
521
+ var orientation = _ref10.orientation;
522
+ return orientation === 'vertical' ? 'horizontal' : 'vertical';
523
+ },
524
+ tabs: function tabs(_ref11) {
525
+ var children = _ref11.children;
526
+ var tabs = (0, _util.mapAndFilterChildren)(children, function (child) {
527
+ return Object.keys(child.props).filter(function (prop) {
528
+ return prop !== 'children' && prop !== 'id';
529
+ }).reduce(function (obj, key) {
530
+ return _objectSpread(_objectSpread({}, obj), {}, _defineProperty({}, key, child.props[key]));
531
+ }, {});
532
+ });
533
+ return tabs;
534
+ }
535
+ },
536
+ render: function render(_ref12) {
537
+ var children = _ref12.children,
538
+ collapsed = _ref12.collapsed,
539
+ css = _ref12.css,
540
+ spotlightId = _ref12['data-spotlight-id'],
541
+ primaryIndex = _ref12.primaryIndex,
542
+ dimensions = _ref12.dimensions,
543
+ handleClick = _ref12.handleClick,
544
+ handleEnter = _ref12.handleEnter,
545
+ handleFlick = _ref12.handleFlick,
546
+ handleFocus = _ref12.handleFocus,
547
+ handleTabsTransitionEnd = _ref12.handleTabsTransitionEnd,
548
+ index = _ref12.index,
549
+ onCollapse = _ref12.onCollapse,
550
+ onScrollStop = _ref12.onScrollStop,
551
+ onSelect = _ref12.onSelect,
552
+ orientation = _ref12.orientation,
553
+ scrollable = _ref12.scrollable,
554
+ scrollPosition = _ref12.scrollPosition,
555
+ size = _ref12.size,
556
+ tabOrientation = _ref12.tabOrientation,
557
+ tabs = _ref12.tabs,
558
+ type = _ref12.type,
559
+ rest = _objectWithoutProperties(_ref12, _excluded);
560
+ delete rest.anchorTo;
561
+ delete rest.blockCollapseOnPortrait;
562
+ delete rest.onExpand;
563
+ delete rest.offset;
564
+ delete rest.onTabAnimationEnd;
565
+ delete rest.rtl;
566
+ delete rest.tabSize;
567
+ var contentSize = collapsed ? dimensions.content.expanded : dimensions.content.normal;
568
+ var isVertical = orientation === 'vertical';
569
+ var ContentCell = isVertical ? TouchableCell : _Layout.Cell;
570
+ var contentCellProps = isVertical ? {
571
+ onFlick: handleFlick
572
+ } : null;
573
+
574
+ // Props that are shared between both of the rendered TabGroup components
575
+ var tabGroupProps = {
576
+ css: css,
577
+ primaryIndex: primaryIndex,
578
+ onClick: collapsed ? handleClick : null,
579
+ onFocus: collapsed ? handleFocus : null,
580
+ onFocusTab: onSelect,
581
+ onSelect: onSelect,
582
+ orientation: orientation,
583
+ selectedIndex: index,
584
+ tabs: tabs
585
+ };
586
+
587
+ // In vertical orientation, render two sets of tabs, one just icons, one with icons and text.
588
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TabLayoutContext, {
589
+ value: handleEnter,
590
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Layout.Layout, _objectSpread(_objectSpread({}, rest), {}, {
591
+ orientation: tabOrientation,
592
+ "data-spotlight-id": spotlightId,
593
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
594
+ className: css.tabs,
595
+ shrink: true,
596
+ onTransitionEnd: handleTabsTransitionEnd,
597
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabGroup["default"], _objectSpread(_objectSpread({}, tabGroupProps), {}, {
598
+ collapsed: isVertical,
599
+ scrollPosition: scrollPosition,
600
+ scrollable: scrollable,
601
+ size: size,
602
+ spotlightDisabled: !collapsed && isVertical,
603
+ spotlightId: (0, _RefocusDecorator.getTabsSpotlightId)(spotlightId, isVertical)
604
+ }))
605
+ }), isVertical ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
606
+ className: css.tabs + ' ' + css.tabsExpanded,
607
+ size: dimensions.tabs.normal,
608
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabGroup["default"], _objectSpread(_objectSpread({}, tabGroupProps), {}, {
609
+ onScrollStop: onScrollStop,
610
+ scrollable: scrollable,
611
+ spotlightDisabled: collapsed,
612
+ spotlightId: (0, _RefocusDecorator.getTabsSpotlightId)(spotlightId, false)
613
+ }))
614
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(ContentCell, _objectSpread(_objectSpread({
615
+ size: isVertical ? contentSize : null,
616
+ className: css.content,
617
+ component: _ViewManager["default"],
618
+ index: index,
619
+ noAnimation: true,
620
+ onFocus: type === 'normal' && !collapsed ? onCollapse : null,
621
+ orientation: orientation
622
+ }, contentCellProps), {}, {
623
+ children: children
624
+ }))]
625
+ }))
626
+ });
627
+ }
628
+ });
629
+ var TabLayoutDecorator = exports.TabLayoutDecorator = (0, _compose["default"])((0, _Toggleable["default"])({
630
+ prop: 'collapsed',
631
+ activate: 'onCollapse',
632
+ deactivate: 'onExpand'
633
+ }), (0, _Changeable.Changeable)({
634
+ prop: 'index',
635
+ change: 'onSelect'
636
+ }), (0, _Changeable.Changeable)({
637
+ prop: 'scrollPosition',
638
+ change: 'onScrollStop'
639
+ }), _RefocusDecorator["default"], (0, _SpotlightContainerDecorator["default"])({
640
+ // using last-focused so we return to the last focused if it exists but fall through to
641
+ // default element if no focus has occurred yet (e.g. on mount)
642
+ enterTo: 'last-focused',
643
+ // favor the content when collapsed and the tabs otherwise
644
+ defaultElement: [".".concat(_TabLayoutModule["default"].horizontal, " .").concat(_TabLayoutModule["default"].tabs, " *"), ".".concat(_TabLayoutModule["default"].collapsed, " .").concat(_TabLayoutModule["default"].content, " *"), ".".concat(_TabLayoutModule["default"].tabsExpanded, " *")]
645
+ }), (0, _I18nDecorator.I18nContextDecorator)({
646
+ rtlProp: 'rtl'
647
+ }));
648
+
649
+ // Currently not documenting the base output since it's not exported
650
+ var TabLayout = exports.TabLayout = TabLayoutDecorator(TabLayoutBase);
651
+
652
+ /**
653
+ * A shortcut to access {@link limestone/TabLayout.Tab}
654
+ *
655
+ * @name Tab
656
+ * @type {limestone/TabLayout.Tab}
657
+ * @static
658
+ * @memberof limestone/TabLayout.TabLayout
659
+ */
660
+ TabLayout.Tab = _Tab["default"];
661
+ var _default = exports["default"] = TabLayout;