@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,278 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTooltip = exports.defaultScreenEdgeKeepout = exports["default"] = void 0;
7
+ var _handle = require("@enact/core/handle");
8
+ var _util = require("@enact/core/util");
9
+ var _I18nDecorator = require("@enact/i18n/I18nDecorator");
10
+ var _FloatingLayer = require("@enact/ui/FloatingLayer");
11
+ var _resolution = _interopRequireDefault(require("@enact/ui/resolution"));
12
+ var _react = require("react");
13
+ var _Tooltip = require("./Tooltip");
14
+ var _util2 = require("./util");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ 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; }
18
+ 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; }
19
+ 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; }
20
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
21
+ 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); }
22
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
23
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
25
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
27
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
28
+ function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); } /* global MutationObserver ResizeObserver */
29
+ var currentTooltip; // needed to know whether we should stop a showing job when unmounting
30
+
31
+ var getTooltipDirection = function getTooltipDirection(tooltipPosition, tooltipType) {
32
+ var position = tooltipPosition || (0, _Tooltip.defaultDirection)(tooltipType) + ' ' + (0, _Tooltip.defaultArrowAnchor)(tooltipType);
33
+ var arr = position.split(' ');
34
+ if (arr.length === 2) {
35
+ return {
36
+ tooltipDirection: arr[0],
37
+ arrowAnchor: arr[1]
38
+ };
39
+ } else {
40
+ return {
41
+ tooltipDirection: position === 'below' ? 'below' : 'above',
42
+ arrowAnchor: 'right'
43
+ };
44
+ }
45
+ };
46
+ var removeTooltipProps = function removeTooltipProps(_ref) {
47
+ var props = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
48
+ delete props.rtl;
49
+ delete props.screenEdgeKeepout;
50
+ delete props.tooltipDelay;
51
+ delete props.tooltipMarquee;
52
+ delete props.tooltipPosition;
53
+ delete props.tooltipProps;
54
+ delete props.tooltipRelative;
55
+ delete props.tooltipText;
56
+ delete props.tooltipType;
57
+ delete props.tooltipUpdateDelay;
58
+ delete props.tooltipWidth;
59
+ return props;
60
+ };
61
+
62
+ /*
63
+ * The boundary around the screen which the tooltip should never cross, typically involving
64
+ * flipping to an alternate orientation or adjusting its offset to remain on screen.
65
+ * The default of 48 is derived from a standard 24px screen-keepout size plus the standard
66
+ * Spotlight-outset (24px) margin/padding value which keeps elements and text aligned inside a
67
+ * Panel. Note: This value will be scaled according to the resolution.
68
+ */
69
+ var defaultScreenEdgeKeepout = exports.defaultScreenEdgeKeepout = 24 + 24;
70
+
71
+ // A hook to show Limestone-styled tooltip components.
72
+ var useTooltip = exports.useTooltip = function useTooltip(props) {
73
+ var _useI18nContext;
74
+ var _props$screenEdgeKeep = props.screenEdgeKeepout,
75
+ screenEdgeKeepout = _props$screenEdgeKeep === void 0 ? defaultScreenEdgeKeepout : _props$screenEdgeKeep,
76
+ _props$tooltipDelay = props.tooltipDelay,
77
+ tooltipDelay = _props$tooltipDelay === void 0 ? 500 : _props$tooltipDelay,
78
+ _props$tooltipType = props.tooltipType,
79
+ tooltipType = _props$tooltipType === void 0 ? 'balloon' : _props$tooltipType,
80
+ _props$tooltipUpdateD = props.tooltipUpdateDelay,
81
+ tooltipUpdateDelay = _props$tooltipUpdateD === void 0 ? 400 : _props$tooltipUpdateD,
82
+ tooltipMarquee = props.tooltipMarquee,
83
+ tooltipPosition = props.tooltipPosition,
84
+ tooltipProps = props.tooltipProps,
85
+ tooltipRelative = props.tooltipRelative,
86
+ tooltipText = props.tooltipText,
87
+ tooltipWidth = props.tooltipWidth;
88
+ var rtlI18nContext = (_useI18nContext = (0, _I18nDecorator.useI18nContext)()) === null || _useI18nContext === void 0 ? void 0 : _useI18nContext.rtl;
89
+ var rtl = typeof props.rtl === 'boolean' ? props.rtl : rtlI18nContext;
90
+ var _useState = (0, _react.useState)(false),
91
+ _useState2 = _slicedToArray(_useState, 2),
92
+ showing = _useState2[0],
93
+ setShowing = _useState2[1];
94
+ var _useState3 = (0, _react.useState)({
95
+ arrowAnchor: null,
96
+ labelOffset: null,
97
+ position: {
98
+ top: 0,
99
+ left: 0
100
+ },
101
+ tooltipDirection: null
102
+ }),
103
+ _useState4 = _slicedToArray(_useState3, 2),
104
+ layout = _useState4[0],
105
+ setLayout = _useState4[1];
106
+ var mutableRef = (0, _react.useRef)({
107
+ mutationObserver: null,
108
+ resizeObserver: null,
109
+ showTooltipJob: null,
110
+ setTooltipLayoutJob: null
111
+ });
112
+ var clientRef = (0, _react.useRef)(null);
113
+ var tooltipRef = (0, _react.useRef)(null);
114
+ var showTooltip = (0, _react.useCallback)(function (client) {
115
+ if (tooltipText) {
116
+ var _mutableRef$current$s, _mutableRef$current$m, _mutableRef$current$r;
117
+ clientRef.current = client;
118
+ currentTooltip = client;
119
+ (_mutableRef$current$s = mutableRef.current.showTooltipJob) === null || _mutableRef$current$s === void 0 || _mutableRef$current$s.startAfter(tooltipDelay);
120
+ (_mutableRef$current$m = mutableRef.current.mutationObserver) === null || _mutableRef$current$m === void 0 || _mutableRef$current$m.observe(clientRef.current, {
121
+ attributes: true,
122
+ childList: true
123
+ });
124
+ (_mutableRef$current$r = mutableRef.current.resizeObserver) === null || _mutableRef$current$r === void 0 || _mutableRef$current$r.observe(clientRef.current);
125
+ }
126
+ }, [clientRef, tooltipDelay, tooltipText]);
127
+ var hideTooltip = (0, _react.useCallback)(function () {
128
+ if (tooltipText) {
129
+ var _mutableRef$current$m2, _mutableRef$current$r2, _mutableRef$current$s2, _mutableRef$current$s3;
130
+ (_mutableRef$current$m2 = mutableRef.current.mutationObserver) === null || _mutableRef$current$m2 === void 0 || _mutableRef$current$m2.disconnect();
131
+ (_mutableRef$current$r2 = mutableRef.current.resizeObserver) === null || _mutableRef$current$r2 === void 0 || _mutableRef$current$r2.disconnect();
132
+ clientRef.current = null;
133
+ currentTooltip = null;
134
+ (_mutableRef$current$s2 = mutableRef.current.showTooltipJob) === null || _mutableRef$current$s2 === void 0 || _mutableRef$current$s2.stop();
135
+ (_mutableRef$current$s3 = mutableRef.current.setTooltipLayoutJob) === null || _mutableRef$current$s3 === void 0 || _mutableRef$current$s3.stop();
136
+ setShowing(false);
137
+ }
138
+ }, [clientRef, tooltipText]);
139
+ var startTooltipLayoutJob = (0, _react.useCallback)(function () {
140
+ var _mutableRef$current$s4;
141
+ (_mutableRef$current$s4 = mutableRef.current.setTooltipLayoutJob) === null || _mutableRef$current$s4 === void 0 || _mutableRef$current$s4.startAfter(tooltipUpdateDelay);
142
+ }, [tooltipUpdateDelay]);
143
+
144
+ // Recalculate tooltip layout on keydown to make sure tooltip is positioned correctly in case something changes as a result of the keydown.
145
+ var onKeyDown = (0, _react.useCallback)(function (ev) {
146
+ (0, _handle.forward)('onKeyDown', ev, props);
147
+ if (!props.disabled) {
148
+ startTooltipLayoutJob();
149
+ }
150
+ }, [props, startTooltipLayoutJob]);
151
+ var onMouseOver = (0, _react.useCallback)(function (ev) {
152
+ (0, _handle.forward)('onMouseOver', ev, props);
153
+ if (props.disabled) {
154
+ showTooltip(ev.currentTarget);
155
+ }
156
+ }, [props, showTooltip]);
157
+ var onMouseOut = (0, _react.useCallback)(function (ev) {
158
+ (0, _handle.forward)('onMouseOut', ev, props);
159
+ if (props.disabled) {
160
+ if (clientRef.current && !clientRef.current.contains(ev.relatedTarget)) {
161
+ hideTooltip();
162
+ }
163
+ }
164
+ }, [hideTooltip, props]);
165
+ var onFocus = (0, _react.useCallback)(function (ev) {
166
+ (0, _handle.forward)('onFocus', ev, props);
167
+ showTooltip(ev.target);
168
+ }, [props, showTooltip]);
169
+ var onBlur = (0, _react.useCallback)(function (ev) {
170
+ (0, _handle.forward)('onBlur', ev, props);
171
+ hideTooltip();
172
+ }, [hideTooltip, props]);
173
+ var handlers = {
174
+ onKeyDown: onKeyDown,
175
+ onMouseOver: onMouseOver,
176
+ onMouseOut: onMouseOut,
177
+ onFocus: onFocus,
178
+ onBlur: onBlur
179
+ };
180
+ (0, _react.useEffect)(function () {
181
+ var mutableRefCurrent = mutableRef.current;
182
+ if (typeof window !== 'undefined' && window.MutationObserver) {
183
+ mutableRefCurrent.mutationObserver = new MutationObserver(startTooltipLayoutJob);
184
+ }
185
+ if (typeof window !== 'undefined' && window.ResizeObserver) {
186
+ mutableRefCurrent.resizeObserver = new ResizeObserver(startTooltipLayoutJob);
187
+ }
188
+ return function () {
189
+ if (currentTooltip === clientRef.current) {
190
+ var _mutableRefCurrent$mu, _mutableRefCurrent$re;
191
+ currentTooltip = null;
192
+ (_mutableRefCurrent$mu = mutableRefCurrent.mutationObserver) === null || _mutableRefCurrent$mu === void 0 || _mutableRefCurrent$mu.disconnect();
193
+ (_mutableRefCurrent$re = mutableRefCurrent.resizeObserver) === null || _mutableRefCurrent$re === void 0 || _mutableRefCurrent$re.disconnect();
194
+ mutableRefCurrent.showTooltipJob.stop();
195
+ mutableRefCurrent.setTooltipLayoutJob.stop();
196
+ }
197
+ };
198
+ }, [startTooltipLayoutJob]);
199
+ var setTooltipLayout = (0, _react.useCallback)(function () {
200
+ if (!tooltipRef.current || !clientRef.current) {
201
+ return;
202
+ }
203
+ var newLayout = getTooltipDirection(tooltipPosition, tooltipType);
204
+ var tooltipNode = tooltipRef.current.getBoundingClientRect(); // label bound
205
+ var clientNode = clientRef.current.getBoundingClientRect(); // client bound
206
+ var overflow = (0, _util2.calcOverflow)(tooltipNode, clientNode, newLayout.tooltipDirection, _resolution["default"].scale(screenEdgeKeepout));
207
+ newLayout.tooltipDirection = (0, _util2.adjustDirection)(newLayout.tooltipDirection, overflow, rtl);
208
+ newLayout.arrowAnchor = (0, _util2.adjustAnchor)(newLayout.arrowAnchor, newLayout.tooltipDirection, overflow, rtl);
209
+ newLayout.position = (0, _util2.adjustTransform)(clientRef.current, newLayout.tooltipDirection, (0, _util2.getPosition)(clientNode, newLayout.tooltipDirection));
210
+ newLayout.labelOffset = newLayout.arrowAnchor === 'center' ? (0, _util2.getLabelOffset)(tooltipNode, newLayout.tooltipDirection, newLayout.position, overflow) : null;
211
+ if (newLayout.position.top !== layout.position.top || newLayout.position.left !== layout.position.left || newLayout.labelOffset !== layout.labelOffset || newLayout.arrowAnchor !== layout.arrowAnchor) {
212
+ setLayout(newLayout);
213
+ }
214
+ }, [rtl, tooltipPosition, tooltipType, screenEdgeKeepout, layout, tooltipRef, clientRef]);
215
+ (0, _react.useLayoutEffect)(function () {
216
+ mutableRef.current.showTooltipJob = new _util.Job(function () {
217
+ setShowing(true);
218
+ });
219
+ }, [showing]);
220
+ (0, _react.useLayoutEffect)(function () {
221
+ mutableRef.current.setTooltipLayoutJob = new _util.Job(function () {
222
+ setTooltipLayout();
223
+ });
224
+ }, [setTooltipLayout]);
225
+ var getTooltipRef = (0, _react.useCallback)(function (node) {
226
+ tooltipRef.current = node;
227
+ if (node) {
228
+ setTooltipLayout();
229
+ }
230
+ }, [setTooltipLayout]);
231
+
232
+ /*
233
+ * Conditionally creates the FloatingLayer and Tooltip based on the presence of `tooltipText`
234
+ */
235
+ var renderTooltip = (0, _react.useCallback)(function () {
236
+ var _layout$position = layout.position,
237
+ top = _layout$position.top,
238
+ left = _layout$position.left;
239
+ var tooltipStyle = {
240
+ // Moving the position to CSS variables where there are additional offset calculations
241
+ '--tooltip-position-top': tooltipRelative ? null : _resolution["default"].unit(top, 'rem'),
242
+ '--tooltip-position-left': tooltipRelative ? null : _resolution["default"].unit(left, 'rem')
243
+ };
244
+ var renderedTooltip = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.Tooltip, _objectSpread(_objectSpread({
245
+ "aria-hidden": true,
246
+ labelOffset: layout.labelOffset
247
+ }, tooltipProps), {}, {
248
+ arrowAnchor: layout.arrowAnchor,
249
+ direction: layout.tooltipDirection,
250
+ marquee: tooltipMarquee,
251
+ relative: tooltipRelative,
252
+ style: tooltipStyle,
253
+ tooltipRef: getTooltipRef,
254
+ type: tooltipType,
255
+ width: tooltipWidth,
256
+ children: tooltipText
257
+ }));
258
+ if (!tooltipRelative) {
259
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FloatingLayer.FloatingLayerBase, {
260
+ open: showing,
261
+ noAutoDismiss: true,
262
+ onDismiss: hideTooltip,
263
+ scrimType: "none",
264
+ children: renderedTooltip
265
+ }, "tooltipFloatingLayer");
266
+ } else if (showing) {
267
+ return renderedTooltip;
268
+ } else {
269
+ return null;
270
+ }
271
+ }, [getTooltipRef, hideTooltip, layout, showing, tooltipMarquee, tooltipProps, tooltipRelative, tooltipText, tooltipType, tooltipWidth]);
272
+ return {
273
+ tooltip: tooltipText ? renderTooltip() : null,
274
+ handlers: handlers,
275
+ restProps: removeTooltipProps(props)
276
+ };
277
+ };
278
+ var _default = exports["default"] = useTooltip;
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPosition = exports.getLabelOffset = exports.calcOverflow = exports.adjustTransform = exports.adjustDirection = exports.adjustAnchor = void 0;
7
+ var _resolution = _interopRequireDefault(require("@enact/ui/resolution"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
10
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
13
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
14
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // TooltipDecorator util.js
15
+ //
16
+ /**
17
+ * Calculates the unusable space of a centered Tooltip, which the Tooltip arrow cannot be positioned,
18
+ * as a percentage of the Tooltip's total width.
19
+ *
20
+ * @param {Number} tooltipWidth The measured width of the Tooltip
21
+ * @return {Number} The percent of the width of the tooltip that the Tooltip's
22
+ * decorations allocate for themselves (on one side).
23
+ * @private
24
+ */
25
+ var getLabelUnavailableSpace = function getLabelUnavailableSpace(tooltipWidth) {
26
+ // Arrow is 30px wide total, we need to know how wide half of it is, since it's centered on the anchor point.
27
+ var arrowWidth = 30 / 2;
28
+
29
+ // Tooltip is 108px tall, divide by half to get the curve radius, add the tooltip width
30
+ // to determine the distance that the anchor cannot progress past.
31
+ var tooltipUnavailableEdge = _resolution["default"].scale(108 / 2 + arrowWidth);
32
+
33
+ // cap the offset at 50% - that percentage
34
+ var tooltipUnavailablePercentage = 0.5 - tooltipUnavailableEdge / tooltipWidth;
35
+ return tooltipUnavailablePercentage;
36
+ };
37
+
38
+ /**
39
+ * Adjust anchor position for `Tooltip` based on overflow and rtl.
40
+ * Takes the output of `adjustDirection`, and `calcOverflow`.
41
+ *
42
+ * @method
43
+ * @memberof limestone/TooltipDecorator
44
+ * @param {String} arrowAnchor Initial anchor position
45
+ * @param {String} tooltipDirection Direction of tooltip; value from `adjustDirection`
46
+ * @param {Object} overflow Tooltip's calculated overflow from `calcOverflow`
47
+ * @param {Boolean} rtl RTL mode
48
+ * @returns {String} Adjusted anchor position
49
+ * @private
50
+ */
51
+ var adjustAnchor = exports.adjustAnchor = function adjustAnchor(arrowAnchor, tooltipDirection, overflow, rtl) {
52
+ if (tooltipDirection === 'above' || tooltipDirection === 'below') {
53
+ if (rtl && arrowAnchor !== 'center') {
54
+ arrowAnchor = arrowAnchor === 'left' ? 'right' : 'left';
55
+ }
56
+
57
+ // Flip sideways if it overflows to the sides
58
+ if (arrowAnchor === 'center') {
59
+ // If tooltip is anchored in the center, don't flip. We'll offset it appropriately later.
60
+ } else if (overflow.isOverRight) {
61
+ arrowAnchor = 'left';
62
+ } else if (overflow.isOverLeft) {
63
+ arrowAnchor = 'right';
64
+ }
65
+
66
+ // If tooltip is just too wide for the whole screen, switch it to a center tooltip
67
+ if (overflow.isOverWide && tooltipDirection !== 'left' && tooltipDirection !== 'right') {
68
+ arrowAnchor = 'center';
69
+ }
70
+ }
71
+ return arrowAnchor;
72
+ };
73
+
74
+ /**
75
+ * Adjust direction for `Tooltip` based on overflow and rtl.
76
+ * Takes the output from `calcOverflow`.
77
+ *
78
+ * @method
79
+ * @memberof limestone/TooltipDecorator
80
+ * @param {String} tooltipDirection Direction of tooltip
81
+ * @param {Object} overflow Tooltip's calculated overflow from `calcOverflow`
82
+ * @param {Boolean} rtl RTL mode
83
+ * @returns {String} Adjusted tooltip direction
84
+ * @private
85
+ */
86
+ var adjustDirection = exports.adjustDirection = function adjustDirection(tooltipDirection, overflow, rtl) {
87
+ if (rtl && (tooltipDirection === 'left' || tooltipDirection === 'right')) {
88
+ tooltipDirection = tooltipDirection === 'left' ? 'right' : 'left';
89
+ }
90
+
91
+ // Flip tooltip if it overflows towards the tooltip direction
92
+ if (overflow.isOverTop && tooltipDirection === 'above') {
93
+ tooltipDirection = 'below';
94
+ } else if (overflow.isOverBottom && tooltipDirection === 'below') {
95
+ tooltipDirection = 'above';
96
+ } else if (overflow.isOverLeft && tooltipDirection === 'left' && !overflow.isOverWide) {
97
+ tooltipDirection = 'right';
98
+ } else if (overflow.isOverRight && tooltipDirection === 'right' && !overflow.isOverWide) {
99
+ tooltipDirection = 'left';
100
+ }
101
+ return tooltipDirection;
102
+ };
103
+
104
+ /**
105
+ * Calculates the top and left position for `Tooltip` accounting for transform.
106
+ *
107
+ * @method
108
+ * @memberof limestone/TooltipDecorator
109
+ * @param {Node} clientNode The value for client node
110
+ * @param {String} tooltipDirection Direction of tooltip
111
+ * @param {Object} tooltipPosition The `getBoundingClientRect` values for tooltip node
112
+ * @returns {Object} Tooltip's calculated new position accounting for transform
113
+ * @private
114
+ */
115
+ var adjustTransform = exports.adjustTransform = function adjustTransform(clientNode, tooltipDirection, tooltipPosition) {
116
+ var componentNodes = clientNode !== null && clientNode !== void 0 && clientNode.childNodes.length ? [clientNode].concat(_toConsumableArray(clientNode.childNodes)) : [clientNode];
117
+ var nodePositions = clientNode.getBoundingClientRect();
118
+ var hasTransform = false;
119
+ var transformMatrix = [];
120
+ componentNodes.forEach(function (node) {
121
+ if (window.getComputedStyle(node).transitionProperty === 'transform') {
122
+ hasTransform = true;
123
+ var matrix = window.getComputedStyle(node).transform.split('(')[1].split(')')[0].split(',');
124
+ transformMatrix = [parseFloat(matrix[0]) - 1, parseFloat(matrix[3]) - 1];
125
+ }
126
+ });
127
+ if (!hasTransform) return tooltipPosition;
128
+ var horizontal = (nodePositions.right - nodePositions.left) * transformMatrix[0] / 2,
129
+ vertical = (nodePositions.bottom - nodePositions.top) * transformMatrix[1] / 2;
130
+ switch (tooltipDirection) {
131
+ case 'above':
132
+ tooltipPosition.top -= vertical;
133
+ break;
134
+ case 'below':
135
+ tooltipPosition.top += vertical;
136
+ break;
137
+ case 'left':
138
+ tooltipPosition.left -= horizontal;
139
+ break;
140
+ case 'right':
141
+ tooltipPosition.left += horizontal;
142
+ break;
143
+ default:
144
+ break;
145
+ }
146
+ return tooltipPosition;
147
+ };
148
+
149
+ /**
150
+ * Calculates the overflow of `Tooltip` — if `Tooltip` is at the edge of the viewport.
151
+ * Return the amount of overflow in a particular direction if there is overflow (false otherwise).
152
+ *
153
+ * @method
154
+ * @memberof limestone/TooltipDecorator
155
+ * @param {Object} tooltipNode The `getBoundingClientRect` values for tooltip node
156
+ * @param {Object} clientNode The `getBoundingClientRect` values for client node
157
+ * @param {String} tooltipDirection Direction of tooltip
158
+ * @param {Number} tooltipHeight Tooltip height
159
+ * @param {Number} edgeKeepout Extra margin around the screen to avoid
160
+ * @returns {Object} Tooltip's calculated overflow
161
+ * @private
162
+ */
163
+ var calcOverflow = exports.calcOverflow = function calcOverflow(tooltipNode, clientNode, tooltipDirection, edgeKeepout) {
164
+ // get the distance of space on both the right and left side of the client node. `clientNode.width / 2` because we want the tooltip to be positioned horizontally in middle of the client node.
165
+ var windowWidth = window.innerWidth;
166
+ var windowHeight = window.innerHeight;
167
+ var clientHorizontalCenter = clientNode.left + clientNode.width / 2;
168
+ var tooltipSafeWidth = tooltipNode.width + edgeKeepout;
169
+ var tooltipCenteredSafeWidth = tooltipNode.width / 2 + edgeKeepout;
170
+ var rightDelta = tooltipSafeWidth > clientHorizontalCenter;
171
+ var leftDelta = tooltipSafeWidth > windowWidth - clientHorizontalCenter;
172
+ var isTooltipWide = tooltipSafeWidth > windowWidth || leftDelta && rightDelta;
173
+ if (tooltipDirection === 'above' || tooltipDirection === 'below') {
174
+ var isOverTop = clientNode.top - tooltipNode.height - edgeKeepout;
175
+ var isOverBottom = clientNode.bottom + tooltipNode.height + edgeKeepout;
176
+ var isOverLeft = clientHorizontalCenter - tooltipSafeWidth;
177
+ var isOverRight = clientHorizontalCenter + tooltipSafeWidth;
178
+ var isOverCenterLeft = clientHorizontalCenter - tooltipCenteredSafeWidth;
179
+ var isOverCenterRight = clientHorizontalCenter + tooltipCenteredSafeWidth;
180
+ return {
181
+ isOverTop: isOverTop < 0 ? isOverTop : false,
182
+ isOverBottom: isOverBottom > windowHeight ? isOverBottom - windowHeight : false,
183
+ isOverLeft: isOverLeft < 0 ? isOverLeft : false,
184
+ isOverRight: isOverRight > windowWidth ? isOverRight - windowWidth : false,
185
+ isOverCenterLeft: isOverCenterLeft < 0 ? isOverCenterLeft : false,
186
+ isOverCenterRight: isOverCenterRight > windowWidth ? isOverCenterRight - windowWidth : false,
187
+ isOverWide: isTooltipWide
188
+ };
189
+ } else if (tooltipDirection === 'left' || tooltipDirection === 'right') {
190
+ var _isOverTop = clientNode.top - tooltipNode.height + clientNode.height - edgeKeepout;
191
+ var _isOverBottom = clientNode.bottom + tooltipNode.height - clientNode.height / 2 + edgeKeepout;
192
+ var _isOverLeft = clientNode.left - tooltipNode.width - edgeKeepout;
193
+ var _isOverRight = clientNode.right + tooltipNode.width + edgeKeepout;
194
+ return {
195
+ isOverTop: _isOverTop < 0 ? _isOverTop : false,
196
+ isOverBottom: _isOverBottom > windowHeight ? _isOverBottom - windowHeight : false,
197
+ isOverLeft: _isOverLeft < 0 ? _isOverLeft : false,
198
+ isOverRight: _isOverRight > windowWidth ? _isOverRight - windowWidth : false,
199
+ isOverWide: isTooltipWide
200
+ };
201
+ }
202
+ };
203
+
204
+ /**
205
+ * Calculates the top and left position for `Tooltip`.
206
+ * Takes the output of `adjustAnchor`, `adjustDirection`, and `calcOverflow`.
207
+ *
208
+ * @method
209
+ * @memberof limestone/TooltipDecorator
210
+ * @param {Object} clientNode The `getBoundingClientRect` values for client node
211
+ * @param {String} tooltipDirection Direction of tooltip
212
+ * @returns {Object} Tooltip top and left position
213
+ * @private
214
+ */
215
+ var getPosition = exports.getPosition = function getPosition(clientNode, tooltipDirection) {
216
+ var position = {};
217
+ switch (tooltipDirection) {
218
+ case 'above':
219
+ position.top = clientNode.top;
220
+ break;
221
+ case 'below':
222
+ position.top = clientNode.bottom;
223
+ break;
224
+ case 'right':
225
+ position.left = clientNode.right;
226
+ break;
227
+ case 'left':
228
+ position.left = clientNode.left;
229
+ break;
230
+ default:
231
+ position = {};
232
+ }
233
+ if (tooltipDirection === 'above' || tooltipDirection === 'below') {
234
+ position.left = clientNode.left + clientNode.width / 2;
235
+ } else if (tooltipDirection === 'left' || tooltipDirection === 'right') {
236
+ position.top = clientNode.top + clientNode.height / 2;
237
+ }
238
+ return position;
239
+ };
240
+
241
+ /**
242
+ * Adjusts the `Tooltip` arrow anchor when the tooltip is too wide.
243
+ * Takes the output of `calcOverflow`.
244
+ *
245
+ * @method
246
+ * @memberof limestone/TooltipDecorator
247
+ * @param {Object} tooltipNode The `getBoundingClientRect` values for tooltip node
248
+ * @param {String} tooltipDirection Direction of tooltip
249
+ * @param {Object} tooltipPosition Calculated tooltip position from `getPosition`
250
+ * @param {Object} overflow Tooltip's calculated overflow from `calcOverflow`
251
+ * @private
252
+ */
253
+ var getLabelOffset = exports.getLabelOffset = function getLabelOffset(tooltipNode, tooltipDirection, tooltipPosition, overflow) {
254
+ // This method is irrelevant to left and right anchored tooltips, skip entirely.
255
+ if (tooltipDirection !== 'left' && tooltipDirection !== 'right') {
256
+ var tooltipWidth = tooltipNode.width;
257
+ if (overflow.isOverWide || overflow.isOverCenterLeft || overflow.isOverCenterRight) {
258
+ var pixelOffset = 0;
259
+ if (overflow.isOverCenterLeft) {
260
+ // Start shifting the label to the right (negative offset)
261
+ pixelOffset = overflow.isOverCenterLeft;
262
+ } else if (overflow.isOverCenterRight) {
263
+ // Start shifting the label to the left (positive offset)
264
+ pixelOffset = overflow.isOverCenterRight;
265
+ }
266
+ var percentageOffset = pixelOffset / tooltipWidth * -1;
267
+ var offsetBoundaryPercentage = getLabelUnavailableSpace(tooltipWidth);
268
+ var cappedPercentageOffset = Math.max(offsetBoundaryPercentage * -1, Math.min(offsetBoundaryPercentage, percentageOffset));
269
+ return cappedPercentageOffset;
270
+ }
271
+ }
272
+ return null;
273
+ };
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.FeedbackBase = exports.Feedback = void 0;
7
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _util = require("../internal/util");
10
+ var _FeedbackIcon = _interopRequireDefault(require("./FeedbackIcon"));
11
+ var _FeedbackIcons = _interopRequireDefault(require("./FeedbackIcons.js"));
12
+ var _FeedbackModule = _interopRequireDefault(require("./Feedback.module.css"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ var _excluded = ["children", "playbackState"];
15
+ /**
16
+ * Feedback {@link limestone/VideoPlayer}. This displays the media's playback rate and other
17
+ * information.
18
+ *
19
+ * @class Feedback
20
+ * @memberof limestone/VideoPlayer
21
+ * @ui
22
+ * @private
23
+ */
24
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
25
+ 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; }
26
+ 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; }
27
+ 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; }
28
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
29
+ 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); }
30
+ 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; }
31
+ 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; }
32
+ var FeedbackBase = exports.FeedbackBase = (0, _kind["default"])({
33
+ name: 'Feedback',
34
+ propTypes: /** @lends limestone/VideoPlayer.Feedback.prototype */{
35
+ children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
36
+ /**
37
+ * Refers to one of the following possible media playback states.
38
+ * `'play'`, `'pause'`, `'rewind'`, `'fastForward'` ,
39
+ * `'jumpBackward'`, `'jumpForward'`, `'jumpToStart'`, `'jumpToEnd'`, `'stop'`.
40
+ *
41
+ * Each state understands where its related icon should be positioned, and whether it should
42
+ * respond to changes to the `visible` property.
43
+ *
44
+ * This string feeds directly into {@link limestone/FeedbackIcon.FeedbackIcon}.
45
+ *
46
+ * @type {('play'|'pause'|'rewind'|'fastForward'|'jumpBackward'|'jumpForward'|'jumpToStart'|'jumpToEnd'|'stop')}
47
+ * @public
48
+ */
49
+ playbackState: _propTypes["default"].oneOf(Object.keys(_FeedbackIcons["default"])),
50
+ /**
51
+ * If the current `playbackState` allows this component's visibility to be changed,
52
+ * this component will be hidden. If not, setting this property will have no effect.
53
+ * All `playbackState`s respond to this property except the following:
54
+ * `'rewind'`, `'fastForward'`.
55
+ *
56
+ * @type {Boolean}
57
+ * @default true
58
+ * @public
59
+ */
60
+ visible: _propTypes["default"].bool
61
+ },
62
+ defaultProps: {
63
+ visible: true
64
+ },
65
+ styles: {
66
+ css: _FeedbackModule["default"],
67
+ className: 'feedback'
68
+ },
69
+ computed: {
70
+ className: function className(_ref) {
71
+ var styler = _ref.styler,
72
+ visible = _ref.visible;
73
+ return styler.append({
74
+ hidden: !visible
75
+ });
76
+ },
77
+ children: function children(_ref2) {
78
+ var _children = _ref2.children,
79
+ s = _ref2.playbackState;
80
+ if (_FeedbackIcons["default"][s]) {
81
+ // Working with a known state, treat `children` as playbackRate
82
+ if (_FeedbackIcons["default"][s].message && _children !== 1) {
83
+ // `1` represents a playback rate of 1:1
84
+ return _children.toString().replace(/^-/, '') + _FeedbackIcons["default"][s].message;
85
+ }
86
+ } else {
87
+ // Custom Message
88
+ return _children;
89
+ }
90
+ }
91
+ },
92
+ render: function render(_ref3) {
93
+ var children = _ref3.children,
94
+ playbackState = _ref3.playbackState,
95
+ rest = _objectWithoutProperties(_ref3, _excluded);
96
+ delete rest.visible;
97
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, rest), {}, {
98
+ children: [_FeedbackIcons["default"][playbackState] && _FeedbackIcons["default"][playbackState].position === 'before' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_FeedbackIcon["default"], {
99
+ children: playbackState
100
+ }) : null, children ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
101
+ className: _FeedbackModule["default"].message,
102
+ children: children
103
+ }) : null, _FeedbackIcons["default"][playbackState] && _FeedbackIcons["default"][playbackState].position === 'after' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_FeedbackIcon["default"], {
104
+ children: playbackState
105
+ }) : null]
106
+ }));
107
+ }
108
+ });
109
+ var Feedback = exports.Feedback = (0, _util.onlyUpdateForProps)(FeedbackBase, ['children', 'playbackState', 'visible']);
110
+ var _default = exports["default"] = Feedback;