@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
package/Popup/Popup.js ADDED
@@ -0,0 +1,690 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.PopupBase = exports.Popup = void 0;
7
+ var _keymap = require("@enact/core/keymap");
8
+ var _dispatcher = require("@enact/core/dispatcher");
9
+ var _FloatingLayer = _interopRequireDefault(require("@enact/ui/FloatingLayer"));
10
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
11
+ var _react = require("react");
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _spotlight = _interopRequireWildcard(require("@enact/spotlight"));
14
+ var _Pause = _interopRequireDefault(require("@enact/spotlight/Pause"));
15
+ var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
16
+ var _container = require("@enact/spotlight/src/container");
17
+ var _Transition = _interopRequireDefault(require("@enact/ui/Transition"));
18
+ var _handle = require("@enact/core/handle");
19
+ var _warning = _interopRequireDefault(require("warning"));
20
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
21
+ var _PopupModule = _interopRequireDefault(require("./Popup.module.css"));
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+ var _excluded = ["children", "css", "direction", "noAnimation", "onHide", "onShow", "open", "position", "spotlightId", "spotlightRestrict", "transitionContainerClassName"],
24
+ _excluded2 = ["noAutoDismiss", "scrimType"];
25
+ /**
26
+ * Modal component that appears at the bottom of the screen and takes up the full screen width.
27
+ *
28
+ * @example
29
+ * <Popup open>Hello!</Popup>
30
+ *
31
+ * @module limestone/Popup
32
+ * @exports Popup
33
+ * @exports PopupBase
34
+ */
35
+ 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); }
36
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
37
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
38
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
39
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
40
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
41
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == typeof e || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
42
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
43
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
44
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
45
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
46
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
47
+ 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; }
48
+ 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; }
49
+ 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; }
50
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
51
+ 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); }
52
+ 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; }
53
+ 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; }
54
+ var isDown = (0, _keymap.is)('down');
55
+ var isLeft = (0, _keymap.is)('left');
56
+ var isRight = (0, _keymap.is)('right');
57
+ var isUp = (0, _keymap.is)('up');
58
+ var TransitionContainer = (0, _SpotlightContainerDecorator["default"])({
59
+ enterTo: 'default-element',
60
+ preserveId: true
61
+ }, _Transition["default"]);
62
+ var getContainerNode = function getContainerNode(containerId) {
63
+ return document.querySelector("[data-spotlight-id='".concat(containerId, "']"));
64
+ };
65
+ var forwardHide = (0, _handle.forward)('onHide');
66
+ var forwardShow = (0, _handle.forward)('onShow');
67
+ var transitionDirection = {
68
+ bottom: 'down',
69
+ center: 'down',
70
+ fullscreen: 'down',
71
+ left: 'left',
72
+ right: 'right',
73
+ top: 'up'
74
+ };
75
+
76
+ /**
77
+ * The base popup component.
78
+ *
79
+ * @class PopupBase
80
+ * @memberof limestone/Popup
81
+ * @ui
82
+ * @public
83
+ */
84
+ var PopupBase = exports.PopupBase = (0, _kind["default"])({
85
+ name: 'PopupBase',
86
+ propTypes: /** @lends limestone/Popup.PopupBase.prototype */{
87
+ /**
88
+ * The contents to be displayed in the body of the popup.
89
+ *
90
+ * @type {Node}
91
+ * @required
92
+ * @public
93
+ */
94
+ children: _propTypes["default"].node.isRequired,
95
+ /**
96
+ * Set the priority with which screen reader should treat updates to live regions for the Popup.
97
+ *
98
+ * @type {String|Object}
99
+ * @public
100
+ */
101
+ 'aria-live': _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
102
+ /**
103
+ * Customizes the component by mapping the supplied collection of CSS class names to the
104
+ * corresponding internal elements and states of this component.
105
+ *
106
+ * The following classes are supported:
107
+ *
108
+ * * `popup` - The root class name
109
+ * * `body` - Applied to the body content container
110
+ * * `popupTransitionContainer` - Applied to the Popup's outermost container. Sizing can be
111
+ * applied here for percentage-of-screen values.
112
+ * * `top` - Applied when the `position` is 'top'
113
+ * * `right` - Applied when the `position` is 'right'
114
+ * * `bottom` - Applied when the `position` is 'bottom'
115
+ * * `left` - Applied when the `position` is 'left'
116
+ *
117
+ * @type {Object}
118
+ * @private
119
+ */
120
+ css: _propTypes["default"].object,
121
+ /**
122
+ * Support accessibility options.
123
+ *
124
+ * If true, the aria-live and role in Popup are `null`.
125
+ *
126
+ * @type {Boolean}
127
+ * @default false
128
+ * @private
129
+ */
130
+ noAlertRole: _propTypes["default"].bool,
131
+ /**
132
+ * Disables transition animation.
133
+ *
134
+ * @type {Boolean}
135
+ * @default false
136
+ * @public
137
+ */
138
+ noAnimation: _propTypes["default"].bool,
139
+ /**
140
+ * Disables the outline in high contrast mode.
141
+ *
142
+ * @type {Boolean}
143
+ * @default false
144
+ * @private
145
+ */
146
+ noOutline: _propTypes["default"].bool,
147
+ /**
148
+ * Called after the popup's "hide" transition finishes.
149
+ *
150
+ * @type {Function}
151
+ * @public
152
+ */
153
+ onHide: _propTypes["default"].func,
154
+ /**
155
+ * Called after the popup's "show" transition finishes.
156
+ *
157
+ * @type {Function}
158
+ * @public
159
+ */
160
+ onShow: _propTypes["default"].func,
161
+ /**
162
+ * Controls the visibility of the Popup.
163
+ *
164
+ * By default, the Popup and its contents are not rendered until `open`.
165
+ *
166
+ * @type {Boolean}
167
+ * @default false
168
+ * @public
169
+ */
170
+ open: _propTypes["default"].bool,
171
+ /**
172
+ * Position of the Popup on the screen.
173
+ *
174
+ * @type {('bottom'|'bottom left'|'bottom right'|'center'|'fullscreen'|'left'|'right'|'top'|'top left'|'top right')}
175
+ * @default 'bottom'
176
+ * @public
177
+ */
178
+ position: _propTypes["default"].oneOf(['bottom', 'bottom left', 'bottom right', 'center', 'fullscreen', 'left', 'right', 'top', 'top left', 'top right']),
179
+ /**
180
+ * The ARIA role for the Popup.
181
+ *
182
+ * @type {String|Object}
183
+ * @public
184
+ */
185
+ role: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
186
+ /**
187
+ * The container id for {@link spotlight/SpotlightContainerDecorator/#SpotlightContainerDecorator.spotlightId|Spotlight container}.
188
+ *
189
+ * @type {String}
190
+ * @default null
191
+ * @public
192
+ */
193
+ spotlightId: _propTypes["default"].string,
194
+ /**
195
+ * Restricts or prioritizes navigation when focus attempts to leave the popup.
196
+ *
197
+ * It can be either `'none'`, `'self-first'`, or `'self-only'`.
198
+ *
199
+ * Note: The ready-to-use {@link limestone/Popup.Popup|Popup} component only supports
200
+ * `'self-first'` and `'self-only'`.
201
+ *
202
+ * @type {('none'|'self-first'|'self-only')}
203
+ * @default 'self-only'
204
+ * @public
205
+ */
206
+ spotlightRestrict: _propTypes["default"].oneOf(['none', 'self-first', 'self-only'])
207
+ },
208
+ defaultProps: {
209
+ noAlertRole: false,
210
+ noAnimation: false,
211
+ open: false,
212
+ position: 'bottom',
213
+ spotlightRestrict: 'self-only'
214
+ },
215
+ styles: {
216
+ css: _PopupModule["default"],
217
+ className: 'popup',
218
+ publicClassNames: ['popup', 'body', 'popupTransitionContainer', 'top', 'right', 'bottom', 'left']
219
+ },
220
+ computed: {
221
+ // When passing `aria-live` prop to the Popup, the prop should work first.
222
+ // If `noAlertRole` is true, alert role and aria-live will be removed. Contents of the popup won't be read automatically when opened.
223
+ // Otherwise, `aria-live` will be usually `off`.
224
+ 'aria-live': function ariaLive(_ref) {
225
+ var live = _ref['aria-live'],
226
+ noAlertRole = _ref.noAlertRole;
227
+ return typeof live !== 'undefined' ? live : !noAlertRole && 'off' || null;
228
+ },
229
+ className: function className(_ref2) {
230
+ var noOutline = _ref2.noOutline,
231
+ position = _ref2.position,
232
+ styler = _ref2.styler;
233
+ return styler.append(position.split(' '), position === 'fullscreen' || noOutline ? null : _PopupModule["default"].outline);
234
+ },
235
+ direction: function direction(_ref3) {
236
+ var position = _ref3.position;
237
+ return transitionDirection[position];
238
+ },
239
+ noAnimation: function noAnimation(_ref4) {
240
+ var _noAnimation = _ref4.noAnimation;
241
+ return typeof ENACT_PACK_NO_ANIMATION !== 'undefined' && ENACT_PACK_NO_ANIMATION || _noAnimation;
242
+ },
243
+ // When passing `role` prop to the Popup, the prop should work first.
244
+ // If `noAlertRole` is true, alert role and aria-live will be removed. Contents of the popup won't be read automatically when opened.
245
+ // Otherwise, `role` will be usually `alert`.
246
+ role: function role(_ref5) {
247
+ var noAlertRole = _ref5.noAlertRole,
248
+ _role = _ref5.role;
249
+ return typeof _role !== 'undefined' ? _role : !noAlertRole && 'alert' || null;
250
+ },
251
+ transitionContainerClassName: function transitionContainerClassName(_ref6) {
252
+ var css = _ref6.css,
253
+ position = _ref6.position,
254
+ styler = _ref6.styler;
255
+ return styler.join(css.popupTransitionContainer, position.split(' '));
256
+ }
257
+ },
258
+ render: function render(_ref7) {
259
+ var children = _ref7.children,
260
+ css = _ref7.css,
261
+ direction = _ref7.direction,
262
+ noAnimation = _ref7.noAnimation,
263
+ onHide = _ref7.onHide,
264
+ onShow = _ref7.onShow,
265
+ open = _ref7.open,
266
+ position = _ref7.position,
267
+ spotlightId = _ref7.spotlightId,
268
+ spotlightRestrict = _ref7.spotlightRestrict,
269
+ transitionContainerClassName = _ref7.transitionContainerClassName,
270
+ rest = _objectWithoutProperties(_ref7, _excluded);
271
+ delete rest.noAlertRole;
272
+ delete rest.noOutline;
273
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionContainer, {
274
+ className: transitionContainerClassName,
275
+ css: css,
276
+ direction: direction,
277
+ duration: "short",
278
+ noAnimation: position === 'fullscreen' ? true : noAnimation,
279
+ onHide: onHide,
280
+ onShow: onShow,
281
+ spotlightDisabled: !open,
282
+ spotlightId: spotlightId,
283
+ spotlightRestrict: spotlightRestrict,
284
+ type: "slide",
285
+ visible: open,
286
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, rest), {}, {
287
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
288
+ className: css.body,
289
+ children: children
290
+ })
291
+ }))
292
+ });
293
+ }
294
+ });
295
+ var SkinnedPopupBase = (0, _Skinnable["default"])(PopupBase);
296
+
297
+ // Deprecate using scrimType 'none' with spotlightRestrict of 'self-only'
298
+ var checkScrimNone = function checkScrimNone(props) {
299
+ var validScrim = !(props.scrimType === 'none' && props.spotlightRestrict === 'self-only');
300
+ process.env.NODE_ENV !== "production" ? (0, _warning["default"])(validScrim, "Using 'spotlightRestrict' of 'self-only' without a scrim " + 'is not supported. Use a transparent scrim to prevent spotlight focus outside of the popup') : void 0;
301
+ };
302
+ var OpenState = {
303
+ CLOSED: 0,
304
+ OPENING: 1,
305
+ OPEN: 2
306
+ };
307
+
308
+ /**
309
+ * A stateful component that renders a popup in a
310
+ * {@link ui/FloatingLayer.FloatingLayer|FloatingLayer}.
311
+ *
312
+ * @class Popup
313
+ * @memberof limestone/Popup
314
+ * @extends limestone/Popup.PopupBase
315
+ * @ui
316
+ * @public
317
+ */
318
+ var Popup = exports.Popup = /*#__PURE__*/function (_Component) {
319
+ function Popup(props) {
320
+ var _this;
321
+ _classCallCheck(this, Popup);
322
+ _this = _callSuper(this, Popup, [props]);
323
+ _this.handleFloatingLayerOpen = function () {
324
+ if (!_this.props.noAnimation && _this.state.popupOpen !== OpenState.OPEN) {
325
+ _this.setState({
326
+ popupOpen: OpenState.OPENING
327
+ });
328
+ } else if (_this.state.popupOpen === OpenState.OPEN && _this.props.open) {
329
+ _this.spotPopupContent();
330
+ }
331
+ };
332
+ _this.handleKeyDown = function (ev) {
333
+ var _this$props = _this.props,
334
+ onClose = _this$props.onClose,
335
+ no5WayClose = _this$props.no5WayClose,
336
+ position = _this$props.position,
337
+ spotlightRestrict = _this$props.spotlightRestrict;
338
+ if (no5WayClose) return;
339
+ var containerId = _this.state.containerId;
340
+ var keyCode = ev.keyCode;
341
+ var direction = (0, _spotlight.getDirection)(keyCode);
342
+ var spottables = _spotlight["default"].getSpottableDescendants(containerId).length;
343
+ var current = _spotlight["default"].getCurrent();
344
+ if (direction && (!spottables || current && getContainerNode(containerId).contains(current))) {
345
+ // explicitly restrict navigation in order to manage focus state when attempting to leave the popup
346
+ _spotlight["default"].set(containerId, {
347
+ restrict: 'self-only'
348
+ });
349
+ if (onClose) {
350
+ var focusChanged;
351
+ if (spottables && current && spotlightRestrict !== 'self-only') {
352
+ focusChanged = _spotlight["default"].move(direction);
353
+ if (focusChanged) {
354
+ // stop propagation to prevent default spotlight behavior
355
+ ev.stopPropagation();
356
+ }
357
+ }
358
+ if (!spottables || focusChanged === false && (position === 'center' || isUp(keyCode) && position === 'bottom' || isDown(keyCode) && position === 'top' || isRight(keyCode) && position === 'left' || isLeft(keyCode) && position === 'right')) {
359
+ // prevent default page scrolling
360
+ ev.preventDefault();
361
+ // stop propagation to prevent default spotlight behavior
362
+ ev.stopPropagation();
363
+ // set the pointer mode to false on keydown
364
+ _spotlight["default"].setPointerMode(false);
365
+ (0, _handle.forwardCustom)('onClose')(null, _this.props);
366
+ }
367
+ }
368
+ }
369
+ };
370
+ _this.handleDismiss = function (ev) {
371
+ (0, _handle.forwardCustom)('onClose', function () {
372
+ return {
373
+ detail: ev === null || ev === void 0 ? void 0 : ev.detail
374
+ };
375
+ })(null, _this.props);
376
+ };
377
+ _this.handlePopupHide = function (ev) {
378
+ forwardHide(ev, _this.props);
379
+ _this.setState({
380
+ floatLayerOpen: false
381
+ }, function () {
382
+ if (!ev.currentTarget || ev.currentTarget.getAttribute('data-spotlight-id') === _this.state.containerId) {
383
+ _this.spotActivator(_this.state.activator);
384
+ }
385
+ _this.setState({
386
+ activator: null
387
+ });
388
+ });
389
+ };
390
+ _this.handlePopupShow = function (ev) {
391
+ forwardShow(ev, _this.props);
392
+ _this.setState({
393
+ popupOpen: OpenState.OPEN
394
+ });
395
+ if (!ev.currentTarget || ev.currentTarget.getAttribute('data-spotlight-id') === _this.state.containerId) {
396
+ _this.spotPopupContent();
397
+ }
398
+ };
399
+ _this.spotActivator = function (activator) {
400
+ _this.paused.resume();
401
+
402
+ // only spot the activator if the popup is closed
403
+ if (_this.props.open) return;
404
+ var current = _spotlight["default"].getCurrent();
405
+ var containerNode = getContainerNode(_this.state.containerId);
406
+ var lastContainerId = (0, _container.getLastContainer)();
407
+ (0, _dispatcher.off)('keydown', _this.handleKeyDown);
408
+
409
+ // if there is no currently-spotted control, or it is wrapped by the popup's container, we
410
+ // know it's safe to change focus
411
+ if (!current || containerNode && containerNode.contains(current)) {
412
+ // attempt to set focus to the activator, if available
413
+ if (!_spotlight["default"].isPaused()) {
414
+ if (activator) {
415
+ if (!_spotlight["default"].focus(activator)) {
416
+ _spotlight["default"].focus();
417
+ }
418
+ } else {
419
+ _spotlight["default"].disableSelector(lastContainerId);
420
+ _spotlight["default"].focus();
421
+ _spotlight["default"].enableSelector(lastContainerId);
422
+ }
423
+ }
424
+ }
425
+ };
426
+ _this.spotPopupContent = function () {
427
+ _this.paused.resume();
428
+
429
+ // only spot the activator if the popup is open
430
+ if (!_this.props.open) return;
431
+ var containerId = _this.state.containerId;
432
+ (0, _dispatcher.on)('keydown', _this.handleKeyDown);
433
+ if (!_spotlight["default"].isPaused() && !_spotlight["default"].focus(containerId)) {
434
+ var current = _spotlight["default"].getCurrent();
435
+
436
+ // In cases where the container contains no spottable controls, or we're in pointer-mode, focus
437
+ // cannot inherently set the active container or blur the active control, so we must do that
438
+ // here.
439
+ if (current) {
440
+ current.blur();
441
+ }
442
+ _spotlight["default"].setActiveContainer(containerId);
443
+ }
444
+ };
445
+ _this.paused = new _Pause["default"]('Popup');
446
+ _this.state = {
447
+ floatLayerOpen: _this.props.open,
448
+ popupOpen: _this.props.open ? OpenState.OPEN : OpenState.CLOSED,
449
+ prevOpen: _this.props.open,
450
+ containerId: _spotlight["default"].add(),
451
+ activator: null
452
+ };
453
+ checkScrimNone(_this.props);
454
+ return _this;
455
+ }
456
+
457
+ // Spot the content after it's mounted.
458
+ _inherits(Popup, _Component);
459
+ return _createClass(Popup, [{
460
+ key: "componentDidMount",
461
+ value: function componentDidMount() {
462
+ if (this.props.open) {
463
+ // If the popup is open on mount, we need to pause spotlight so nothing steals focus
464
+ // while the popup is rendering.
465
+ this.paused.pause();
466
+ if (getContainerNode(this.state.containerId)) {
467
+ this.spotPopupContent();
468
+ }
469
+ }
470
+ }
471
+ }, {
472
+ key: "componentDidUpdate",
473
+ value: function componentDidUpdate(prevProps, prevState) {
474
+ if (this.props.open !== prevProps.open) {
475
+ if (!this.props.noAnimation) {
476
+ if (!this.props.open && this.state.popupOpen === OpenState.CLOSED) {
477
+ // If the popup is supposed to be closed (!this.props.open) and is actually
478
+ // fully closed (OpenState.CLOSED), we must resume spotlight navigation. This
479
+ // can occur when quickly toggling a Popup open and closed.
480
+ this.paused.resume();
481
+ } else {
482
+ // Otherwise, we pause spotlight so it is locked until the popup is ready
483
+ this.paused.pause();
484
+ }
485
+ } else if (this.props.open) {
486
+ forwardShow(null, this.props);
487
+ this.spotPopupContent();
488
+ } else if (prevProps.open) {
489
+ forwardHide(null, this.props);
490
+ this.spotActivator(prevState.activator);
491
+ }
492
+ }
493
+ checkScrimNone(this.props);
494
+ }
495
+ }, {
496
+ key: "componentWillUnmount",
497
+ value: function componentWillUnmount() {
498
+ if (this.props.open) {
499
+ (0, _dispatcher.off)('keydown', this.handleKeyDown);
500
+ }
501
+ _spotlight["default"].remove(this.state.containerId);
502
+ }
503
+ }, {
504
+ key: "render",
505
+ value: function render() {
506
+ var _this$props2 = this.props,
507
+ noAutoDismiss = _this$props2.noAutoDismiss,
508
+ scrimType = _this$props2.scrimType,
509
+ rest = _objectWithoutProperties(_this$props2, _excluded2);
510
+ delete rest.no5WayClose;
511
+ delete rest.onClose;
512
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FloatingLayer["default"], {
513
+ noAutoDismiss: noAutoDismiss,
514
+ open: this.state.floatLayerOpen,
515
+ onOpen: this.handleFloatingLayerOpen,
516
+ onDismiss: this.handleDismiss,
517
+ scrimType: scrimType,
518
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(SkinnedPopupBase, _objectSpread(_objectSpread({}, rest), {}, {
519
+ "data-webos-voice-exclusive": true,
520
+ onHide: this.handlePopupHide,
521
+ onShow: this.handlePopupShow,
522
+ open: this.state.popupOpen >= OpenState.OPENING,
523
+ spotlightId: this.state.containerId
524
+ }))
525
+ });
526
+ }
527
+ }], [{
528
+ key: "getDerivedStateFromProps",
529
+ value: function getDerivedStateFromProps(props, state) {
530
+ if (props.open !== state.prevOpen) {
531
+ if (props.open) {
532
+ return {
533
+ popupOpen: props.noAnimation || state.floatLayerOpen ? OpenState.OPEN : OpenState.CLOSED,
534
+ floatLayerOpen: true,
535
+ activator: _spotlight["default"].getCurrent(),
536
+ prevOpen: props.open
537
+ };
538
+ } else {
539
+ // Disables the spotlight conatiner of popup when `noAnimation` set
540
+ if (props.noAnimation) {
541
+ var node = getContainerNode(state.containerId);
542
+ if (node) {
543
+ node.dataset['spotlightContainerDisabled'] = true;
544
+ }
545
+ }
546
+ return {
547
+ popupOpen: OpenState.CLOSED,
548
+ floatLayerOpen: state.popupOpen === OpenState.OPEN ? !props.noAnimation : false,
549
+ activator: props.noAnimation ? null : state.activator,
550
+ prevOpen: props.open
551
+ };
552
+ }
553
+ }
554
+ return null;
555
+ }
556
+ }]);
557
+ }(_react.Component);
558
+ Popup.propTypes = /** @lends limestone/Popup.Popup.prototype */{
559
+ /**
560
+ * Prevents closing the popup via 5-way navigation out of the content.
561
+ *
562
+ * @type {Boolean}
563
+ * @default false
564
+ * @private
565
+ */
566
+ no5WayClose: _propTypes["default"].bool,
567
+ /**
568
+ * Disables transition animation.
569
+ *
570
+ * @type {Boolean}
571
+ * @default false
572
+ * @public
573
+ */
574
+ noAnimation: _propTypes["default"].bool,
575
+ /**
576
+ * Indicates that the popup will not trigger `onClose` when the user presses the cancel/back (e.g. `ESC`) key or
577
+ * taps outside the popup.
578
+ *
579
+ * @type {Boolean}
580
+ * @default false
581
+ * @public
582
+ */
583
+ noAutoDismiss: _propTypes["default"].bool,
584
+ /**
585
+ * Called on:
586
+ *
587
+ * * pressing `ESC` key,
588
+ * * clicking on outside the boundary of the popup, or
589
+ * * moving spotlight focus outside the boundary of the popup when `spotlightRestrict` is
590
+ * `'self-first'`.
591
+ *
592
+ * Event payload:
593
+ *
594
+ * * pressing `ESC` key, carries `detail` property containing `inputType` value of `'key'`.
595
+ * * clicking outside the boundary of the popup, carries `detail` property containing
596
+ * `inputType` value of `'click'`.
597
+ *
598
+ * It is the responsibility of the callback to set the `open` property to `false`.
599
+ *
600
+ * @type {Function}
601
+ * @public
602
+ */
603
+ onClose: _propTypes["default"].func,
604
+ /**
605
+ * Called after hide transition has completed, and immediately with no transition.
606
+ *
607
+ * @type {Function}
608
+ * @public
609
+ */
610
+ onHide: _propTypes["default"].func,
611
+ /**
612
+ * Called when a key is pressed.
613
+ *
614
+ * @type {Function}
615
+ * @public
616
+ */
617
+ onKeyDown: _propTypes["default"].func,
618
+ /**
619
+ * Called after show transition has completed, and immediately with no transition.
620
+ *
621
+ * Note: The function does not run if Popup is initially opened and
622
+ * {@link limestone/Popup.PopupBase.noAnimation|noAnimation} is `true`.
623
+ *
624
+ * @type {Function}
625
+ * @public
626
+ */
627
+ onShow: _propTypes["default"].func,
628
+ /**
629
+ * Controls the visibility of the Popup.
630
+ *
631
+ * By default, the Popup and its contents are not rendered until `open`.
632
+ *
633
+ * @type {Boolean}
634
+ * @default false
635
+ * @public
636
+ */
637
+ open: _propTypes["default"].bool,
638
+ /**
639
+ * Position of the Popup on the screen.
640
+ *
641
+ * @type {('bottom'|'bottom left'|'bottom right'|'center'|'fullscreen'|'left'|'right'|'top'|'top left'|'top right')}
642
+ * @default 'bottom'
643
+ * @public
644
+ */
645
+ position: _propTypes["default"].oneOf(['bottom', 'bottom left', 'bottom right', 'center', 'fullscreen', 'left', 'right', 'top', 'top left', 'top right']),
646
+ /**
647
+ * Scrim type.
648
+ *
649
+ * * Values: `'transparent'`, `'translucent'`, or `'none'`.
650
+ *
651
+ * `'none'` is not compatible with `spotlightRestrict` of `'self-only'`, use a transparent scrim
652
+ * to prevent mouse focus when using popup.
653
+ *
654
+ * @type {('transparent'|'translucent'|'none')}
655
+ * @default 'translucent'
656
+ * @public
657
+ */
658
+ scrimType: _propTypes["default"].oneOf(['transparent', 'translucent', 'none']),
659
+ /**
660
+ * Restricts or prioritizes navigation when focus attempts to leave the popup.
661
+ *
662
+ * * Values: `'self-first'`, or `'self-only'`.
663
+ *
664
+ * When using `self-first`, attempts to leave the popup via 5-way will fire `onClose` based
665
+ * on the following values of `position`:
666
+ *
667
+ * * `'bottom'` - When leaving via 5-way up
668
+ * * `'top'` - When leaving via 5-way down
669
+ * * `'left'` - When leaving via 5-way right
670
+ * * `'right'` - When leaving via 5-way left
671
+ * * `'center'` - When leaving via any 5-way direction
672
+ *
673
+ * Note: If `onClose` is not set, then this has no effect on 5-way navigation. If the popup
674
+ * has no spottable children, 5-way navigation will cause the Popup to fire `onClose`.
675
+ *
676
+ * @type {('self-first'|'self-only')}
677
+ * @default 'self-only'
678
+ * @public
679
+ */
680
+ spotlightRestrict: _propTypes["default"].oneOf(['self-first', 'self-only'])
681
+ };
682
+ Popup.defaultProps = {
683
+ noAnimation: false,
684
+ noAutoDismiss: false,
685
+ open: false,
686
+ position: 'bottom',
687
+ scrimType: 'translucent',
688
+ spotlightRestrict: 'self-only'
689
+ };
690
+ var _default = exports["default"] = Popup;