@zohodesk/components 1.0.0-temp-206.5 → 1.0.0-temp-207

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 (347) hide show
  1. package/.cli/propValidation_report.html +1 -1
  2. package/README.md +9 -0
  3. package/es/Accordion/Accordion.js +2 -2
  4. package/es/Accordion/AccordionItem.js +4 -4
  5. package/es/Accordion/__tests__/Accordion.spec.js +1 -1
  6. package/es/Accordion/__tests__/AccordionItem.spec.js +1 -1
  7. package/es/Accordion/index.js +2 -2
  8. package/es/Animation/Animation.js +3 -3
  9. package/es/Animation/__tests__/Animation.spec.js +1 -1
  10. package/es/Animation/utils.js +1 -1
  11. package/es/AppContainer/AppContainer.js +9 -9
  12. package/es/AppContainer/__tests__/AppContainer.spec.js +1 -1
  13. package/es/Avatar/Avatar.js +5 -5
  14. package/es/Avatar/__tests__/Avatar.spec.js +1 -1
  15. package/es/AvatarTeam/AvatarTeam.js +4 -4
  16. package/es/AvatarTeam/__tests__/AvatarTeam.spec.js +1 -1
  17. package/es/Button/Button.js +4 -4
  18. package/es/Button/__tests__/Button.spec.js +1 -1
  19. package/es/Button/index.js +2 -2
  20. package/es/Button/props/defaultProps.js +1 -1
  21. package/es/Buttongroup/Buttongroup.js +3 -3
  22. package/es/Buttongroup/__tests__/Buttongroup.spec.js +1 -1
  23. package/es/Card/Card.js +5 -5
  24. package/es/Card/__tests__/Card.spec.js +1 -1
  25. package/es/Card/index.js +4 -4
  26. package/es/CheckBox/CheckBox.js +6 -6
  27. package/es/CheckBox/__tests__/CheckBox.spec.js +1 -1
  28. package/es/DateTime/CalendarView.js +6 -6
  29. package/es/DateTime/DateTime.js +15 -15
  30. package/es/DateTime/DateTimePopupFooter.js +5 -5
  31. package/es/DateTime/DateTimePopupHeader.js +4 -4
  32. package/es/DateTime/DateWidget.js +17 -17
  33. package/es/DateTime/DaysRow.js +3 -3
  34. package/es/DateTime/Time.js +5 -5
  35. package/es/DateTime/YearView.js +6 -6
  36. package/es/DateTime/__tests__/CalendarView.spec.js +1 -1
  37. package/es/DateTime/__tests__/DateTime.spec.js +1 -1
  38. package/es/DateTime/__tests__/DateTimePopupFooter.spec.js +1 -1
  39. package/es/DateTime/__tests__/DateTimePopupHeader.spec.js +1 -1
  40. package/es/DateTime/__tests__/DateWidget.spec.js +1 -1
  41. package/es/DateTime/__tests__/DaysRow.spec.js +1 -1
  42. package/es/DateTime/__tests__/Time.spec.js +1 -1
  43. package/es/DateTime/__tests__/YearView.spec.js +1 -1
  44. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +1 -1
  45. package/es/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +1 -1
  46. package/es/DateTime/__tests__/__snapshots__/YearView.spec.js.snap +1 -1
  47. package/es/DateTime/dateFormatUtils/dateFormat.js +4 -4
  48. package/es/DateTime/dateFormatUtils/dayChange.js +2 -2
  49. package/es/DateTime/dateFormatUtils/index.js +3 -3
  50. package/es/DateTime/dateFormatUtils/monthChange.js +2 -2
  51. package/es/DateTime/dateFormatUtils/timeChange.js +2 -2
  52. package/es/DateTime/dateFormatUtils/yearChange.js +2 -2
  53. package/es/DateTime/index.js +1 -1
  54. package/es/DateTime/props/propTypes.js +1 -1
  55. package/es/DateTime/validator.js +2 -2
  56. package/es/DropBox/DropBox.js +9 -9
  57. package/es/DropBox/DropBoxElement/DropBoxElement.js +6 -6
  58. package/es/DropBox/DropBoxElement/__tests__/DropBoxElement.spec.js +1 -1
  59. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +1 -1
  60. package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +1 -1
  61. package/es/DropBox/__tests__/DropBox.spec.js +1 -1
  62. package/es/DropBox/css/cssJSLogic.js +1 -1
  63. package/es/DropBox/props/defaultProps.js +1 -1
  64. package/es/DropBox/props/propTypes.js +1 -1
  65. package/es/DropBox/utils/isMobilePopover.js +1 -1
  66. package/es/DropDown/DropDown.js +4 -4
  67. package/es/DropDown/DropDownHeading.js +3 -3
  68. package/es/DropDown/DropDownItem.js +3 -3
  69. package/es/DropDown/DropDownSearch.js +4 -4
  70. package/es/DropDown/DropDownSeparator.js +2 -2
  71. package/es/DropDown/__tests__/DropDown.spec.js +1 -1
  72. package/es/DropDown/__tests__/DropDownHeading.spec.js +1 -1
  73. package/es/DropDown/__tests__/DropDownItem.spec.js +1 -1
  74. package/es/DropDown/__tests__/DropDownSearch.spec.js +1 -1
  75. package/es/DropDown/__tests__/DropDownSeparator.spec.js +1 -1
  76. package/es/DropDown/index.js +7 -7
  77. package/es/DropDown/props/propTypes.js +1 -1
  78. package/es/Heading/Heading.js +8 -5
  79. package/es/Heading/__tests__/Heading.spec.js +10 -1
  80. package/es/Heading/__tests__/__snapshots__/Heading.spec.js.snap +55 -1
  81. package/es/Heading/props/propTypes.js +2 -1
  82. package/es/Label/Label.js +4 -4
  83. package/es/Label/__tests__/Label.spec.js +1 -1
  84. package/es/Layout/Box.js +4 -4
  85. package/es/Layout/Container.js +4 -4
  86. package/es/Layout/__tests__/Box.spec.js +1 -1
  87. package/es/Layout/__tests__/Container.spec.js +1 -1
  88. package/es/Layout/index.js +2 -2
  89. package/es/ListItem/ListContainer.js +6 -6
  90. package/es/ListItem/ListItem.js +5 -5
  91. package/es/ListItem/ListItemWithAvatar.js +7 -7
  92. package/es/ListItem/ListItemWithCheckBox.js +6 -6
  93. package/es/ListItem/ListItemWithIcon.js +5 -5
  94. package/es/ListItem/ListItemWithRadio.js +6 -6
  95. package/es/ListItem/__tests__/ListContainer.spec.js +1 -1
  96. package/es/ListItem/__tests__/ListItem.spec.js +1 -1
  97. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +1 -1
  98. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +1 -1
  99. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +1 -1
  100. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +1 -1
  101. package/es/ListItem/index.js +6 -6
  102. package/es/Modal/Modal.js +3 -3
  103. package/es/Modal/__tests__/Modal.spec.js +1 -1
  104. package/es/MultiSelect/AdvancedGroupMultiSelect.js +17 -17
  105. package/es/MultiSelect/AdvancedMultiSelect.js +17 -17
  106. package/es/MultiSelect/EmptyState.js +3 -3
  107. package/es/MultiSelect/MobileHeader/MobileHeader.js +5 -5
  108. package/es/MultiSelect/MobileHeader/__tests__/MobileHeader.spec.js +1 -1
  109. package/es/MultiSelect/MultiSelect.js +20 -20
  110. package/es/MultiSelect/MultiSelectHeader.js +4 -4
  111. package/es/MultiSelect/MultiSelectWithAvatar.js +16 -16
  112. package/es/MultiSelect/SelectedOptions.js +5 -5
  113. package/es/MultiSelect/Suggestions.js +6 -6
  114. package/es/MultiSelect/__tests__/AdvancedGroupMultiSelect.spec.js +1 -1
  115. package/es/MultiSelect/__tests__/AdvancedMultiSelect.spec.js +1 -1
  116. package/es/MultiSelect/__tests__/EmptyState.spec.js +1 -1
  117. package/es/MultiSelect/__tests__/MultiSelect.spec.js +1 -1
  118. package/es/MultiSelect/__tests__/MultiSelectHeader.spec.js +1 -1
  119. package/es/MultiSelect/__tests__/MultiSelectWithAvatar.spec.js +1 -1
  120. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +1 -1
  121. package/es/MultiSelect/__tests__/Suggestions.spec.js +1 -1
  122. package/es/MultiSelect/index.js +4 -4
  123. package/es/MultiSelect/props/defaultProps.js +1 -1
  124. package/es/PopOver/PopOver.js +6 -6
  125. package/es/PopOver/__tests__/PopOver.spec.js +1 -1
  126. package/es/PopOver/index.js +3 -3
  127. package/es/Popup/Popup.js +3 -3
  128. package/es/Provider/AvatarSize.js +1 -1
  129. package/es/Provider/CssProvider.js +1 -1
  130. package/es/Provider/IdProvider.js +2 -2
  131. package/es/Provider/LibraryContext.js +2 -2
  132. package/es/Provider/ZindexProvider.js +2 -2
  133. package/es/Provider/index.js +4 -4
  134. package/es/Radio/Radio.js +5 -5
  135. package/es/Radio/__tests__/Radio.spec.js +1 -1
  136. package/es/Responsive/CustomResponsive.js +12 -19
  137. package/es/Responsive/RefWrapper.js +1 -2
  138. package/es/Responsive/ResizeComponent.js +2 -2
  139. package/es/Responsive/Responsive.js +6 -6
  140. package/es/Responsive/index.js +3 -3
  141. package/es/Responsive/props/propTypes.js +1 -2
  142. package/es/Responsive/utils/index.js +1 -1
  143. package/es/Responsive/windowResizeObserver.js +1 -1
  144. package/es/ResponsiveDropBox/ResponsiveDropBox.js +6 -6
  145. package/es/ResponsiveDropBox/__tests__/ResponsiveDropBox.spec.js +1 -1
  146. package/es/ResponsiveDropBox/props/propTypes.js +1 -1
  147. package/es/Ribbon/Ribbon.js +3 -3
  148. package/es/Ribbon/__tests__/Ribbon.spec.js +1 -1
  149. package/es/RippleEffect/RippleEffect.js +4 -4
  150. package/es/RippleEffect/__tests__/RippleEffect.spec.js +1 -1
  151. package/es/Select/GroupSelect.js +16 -16
  152. package/es/Select/Select.js +15 -15
  153. package/es/Select/SelectWithAvatar.js +17 -17
  154. package/es/Select/SelectWithIcon.js +13 -13
  155. package/es/Select/__tests__/GroupSelect.spec.js +1 -1
  156. package/es/Select/__tests__/Select.spec.js +1 -1
  157. package/es/Select/__tests__/SelectWithAvatar.spec.js +1 -1
  158. package/es/Select/__tests__/SelectWithIcon.spec.js +1 -1
  159. package/es/Select/index.js +4 -4
  160. package/es/Select/props/defaultProps.js +1 -1
  161. package/es/Stencils/Stencils.js +3 -3
  162. package/es/Stencils/__tests__/Stencils.spec.js +1 -1
  163. package/es/Switch/Switch.js +5 -5
  164. package/es/Switch/__tests__/Switch.spec.js +1 -1
  165. package/es/Tab/Tab.js +5 -5
  166. package/es/Tab/TabContent.js +4 -4
  167. package/es/Tab/TabContentWrapper.js +3 -3
  168. package/es/Tab/TabWrapper.js +3 -3
  169. package/es/Tab/Tabs.js +16 -16
  170. package/es/Tab/Tabs.module.css +2 -2
  171. package/es/Tab/__tests__/Tab.spec.js +1 -1
  172. package/es/Tab/__tests__/TabContent.spec.js +1 -1
  173. package/es/Tab/__tests__/TabContentWrapper.spec.js +1 -1
  174. package/es/Tab/__tests__/TabWrapper.spec.js +1 -1
  175. package/es/Tab/__tests__/Tabs.spec.js +1 -1
  176. package/es/Tab/index.js +5 -5
  177. package/es/Tab/props/propTypes.js +2 -2
  178. package/es/Tag/Tag.js +7 -7
  179. package/es/Tag/__tests__/Tag.spec.js +1 -1
  180. package/es/TextBox/TextBox.js +3 -3
  181. package/es/TextBox/__tests__/TextBox.spec.js +1 -1
  182. package/es/TextBoxIcon/TextBoxIcon.js +6 -6
  183. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +1 -1
  184. package/es/TextBoxIcon/props/propTypes.js +1 -1
  185. package/es/Textarea/Textarea.js +154 -27
  186. package/es/Textarea/Textarea.module.css +55 -4
  187. package/es/Textarea/TextareaOne.js +349 -0
  188. package/es/Textarea/__tests__/Textarea.spec.js +1 -1
  189. package/es/Textarea/props/propTypes.js +4 -1
  190. package/es/Textarea/utils/calculateNodeHeight.js +58 -0
  191. package/es/Textarea/utils/calculateNodeHeightOne.js +66 -0
  192. package/es/Textarea/utils/debounce.js +24 -0
  193. package/es/Textarea/utils/getSizingData.js +27 -0
  194. package/es/Textarea/utils/ownerDocument.js +5 -0
  195. package/es/Textarea/utils/ownerWindow.js +8 -0
  196. package/es/Textarea/utils/updateState.js +30 -0
  197. package/es/Tooltip/Tooltip.js +17 -7
  198. package/es/Tooltip/Tooltip.module.css +0 -8
  199. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -3
  200. package/es/VelocityAnimation/VelocityAnimation/__tests__/VelocityAnimation.spec.js +1 -1
  201. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +3 -3
  202. package/es/VelocityAnimation/VelocityAnimationGroup/__tests__/VelocityAnimationGroup.spec.js +1 -1
  203. package/es/VelocityAnimation/index.js +2 -2
  204. package/es/common/common.module.css +24 -0
  205. package/es/css.js +37 -37
  206. package/es/deprecated/PortalLayer/PortalLayer.js +3 -3
  207. package/es/index.js +39 -39
  208. package/es/semantic/Button/Button.js +3 -3
  209. package/es/semantic/Button/__tests__/Button.spec.js +1 -1
  210. package/es/semantic/index.js +1 -1
  211. package/es/utils/Common.js +1 -1
  212. package/es/utils/ContextOptimizer.js +1 -1
  213. package/es/utils/cssUtils.js +11 -0
  214. package/es/utils/datetime/common.js +1 -1
  215. package/es/utils/dropDownUtils.js +1 -1
  216. package/es/utils/index.js +1 -1
  217. package/es/v1/Accordion/Accordion.js +2 -2
  218. package/es/v1/Accordion/AccordionItem.js +4 -4
  219. package/es/v1/Accordion/index.js +2 -2
  220. package/es/v1/Animation/Animation.js +3 -3
  221. package/es/v1/Animation/utils.js +1 -1
  222. package/es/v1/AppContainer/AppContainer.js +9 -9
  223. package/es/v1/Avatar/Avatar.js +5 -5
  224. package/es/v1/AvatarTeam/AvatarTeam.js +4 -4
  225. package/es/v1/Button/Button.js +4 -4
  226. package/es/v1/Button/props/defaultProps.js +1 -1
  227. package/es/v1/Buttongroup/Buttongroup.js +3 -3
  228. package/es/v1/Card/Card.js +5 -5
  229. package/es/v1/Card/index.js +4 -4
  230. package/es/v1/CheckBox/CheckBox.js +6 -6
  231. package/es/v1/DateTime/CalendarView.js +7 -7
  232. package/es/v1/DateTime/DateTime.js +15 -15
  233. package/es/v1/DateTime/DateTimePopupFooter.js +5 -5
  234. package/es/v1/DateTime/DateTimePopupHeader.js +4 -4
  235. package/es/v1/DateTime/DateWidget.js +17 -17
  236. package/es/v1/DateTime/DaysRow.js +3 -3
  237. package/es/v1/DateTime/Time.js +5 -5
  238. package/es/v1/DateTime/YearView.js +6 -6
  239. package/es/v1/DateTime/index.js +1 -1
  240. package/es/v1/DateTime/props/propTypes.js +1 -1
  241. package/es/v1/DropBox/DropBox.js +9 -9
  242. package/es/v1/DropBox/DropBoxElement/DropBoxElement.js +6 -6
  243. package/es/v1/DropBox/props/defaultProps.js +1 -1
  244. package/es/v1/DropBox/props/propTypes.js +1 -1
  245. package/es/v1/DropBox/utils/isMobilePopover.js +1 -1
  246. package/es/v1/DropDown/DropDown.js +4 -4
  247. package/es/v1/DropDown/DropDownHeading.js +3 -3
  248. package/es/v1/DropDown/DropDownItem.js +3 -3
  249. package/es/v1/DropDown/DropDownSearch.js +4 -4
  250. package/es/v1/DropDown/DropDownSeparator.js +2 -2
  251. package/es/v1/DropDown/props/propTypes.js +1 -1
  252. package/es/v1/Heading/Heading.js +8 -5
  253. package/es/v1/Heading/props/propTypes.js +2 -1
  254. package/es/v1/Label/Label.js +4 -4
  255. package/es/v1/Layout/Box.js +4 -4
  256. package/es/v1/Layout/Container.js +4 -4
  257. package/es/v1/Layout/index.js +2 -2
  258. package/es/v1/ListItem/ListContainer.js +6 -6
  259. package/es/v1/ListItem/ListItem.js +5 -5
  260. package/es/v1/ListItem/ListItemWithAvatar.js +7 -7
  261. package/es/v1/ListItem/ListItemWithCheckBox.js +6 -6
  262. package/es/v1/ListItem/ListItemWithIcon.js +5 -5
  263. package/es/v1/ListItem/ListItemWithRadio.js +6 -6
  264. package/es/v1/ListItem/index.js +6 -6
  265. package/es/v1/Modal/Modal.js +3 -3
  266. package/es/v1/MultiSelect/AdvancedGroupMultiSelect.js +17 -17
  267. package/es/v1/MultiSelect/AdvancedMultiSelect.js +17 -17
  268. package/es/v1/MultiSelect/EmptyState.js +3 -3
  269. package/es/v1/MultiSelect/MobileHeader/MobileHeader.js +5 -5
  270. package/es/v1/MultiSelect/MultiSelect.js +19 -19
  271. package/es/v1/MultiSelect/MultiSelectHeader.js +4 -4
  272. package/es/v1/MultiSelect/MultiSelectWithAvatar.js +16 -16
  273. package/es/v1/MultiSelect/SelectedOptions.js +5 -5
  274. package/es/v1/MultiSelect/Suggestions.js +6 -6
  275. package/es/v1/MultiSelect/index.js +4 -4
  276. package/es/v1/MultiSelect/props/defaultProps.js +1 -1
  277. package/es/v1/PopOver/PopOver.js +6 -6
  278. package/es/v1/Popup/Popup.js +3 -3
  279. package/es/v1/Radio/Radio.js +5 -5
  280. package/es/v1/ResponsiveDropBox/ResponsiveDropBox.js +6 -6
  281. package/es/v1/ResponsiveDropBox/props/propTypes.js +1 -1
  282. package/es/v1/Ribbon/Ribbon.js +3 -3
  283. package/es/v1/RippleEffect/RippleEffect.js +4 -4
  284. package/es/v1/Select/GroupSelect.js +16 -16
  285. package/es/v1/Select/Select.js +15 -15
  286. package/es/v1/Select/SelectWithAvatar.js +17 -17
  287. package/es/v1/Select/SelectWithIcon.js +13 -13
  288. package/es/v1/Select/index.js +4 -4
  289. package/es/v1/Select/props/defaultProps.js +1 -1
  290. package/es/v1/Stencils/Stencils.js +3 -3
  291. package/es/v1/Switch/Switch.js +5 -5
  292. package/es/v1/Tab/Tab.js +5 -5
  293. package/es/v1/Tab/TabContent.js +4 -4
  294. package/es/v1/Tab/TabContentWrapper.js +3 -3
  295. package/es/v1/Tab/TabWrapper.js +3 -3
  296. package/es/v1/Tab/Tabs.js +16 -16
  297. package/es/v1/Tab/index.js +5 -5
  298. package/es/v1/Tab/props/propTypes.js +2 -2
  299. package/es/v1/Tab/v1Tabs.module.css +2 -2
  300. package/es/v1/Tag/Tag.js +7 -7
  301. package/es/v1/TextBox/TextBox.js +3 -3
  302. package/es/v1/TextBoxIcon/TextBoxIcon.js +6 -6
  303. package/es/v1/TextBoxIcon/props/propTypes.js +1 -1
  304. package/es/v1/Textarea/Textarea.js +3 -3
  305. package/es/v1/Tooltip/Tooltip.js +17 -7
  306. package/es/v1/Typography/Typography.js +4 -4
  307. package/es/v1/Typography/css/cssJSLogic.js +1 -1
  308. package/es/v1/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -3
  309. package/es/v1/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +3 -3
  310. package/es/v1/semantic/Button/Button.js +3 -3
  311. package/es/v1/semantic/index.js +1 -1
  312. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +1 -1
  313. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +1 -1
  314. package/lib/DateTime/__tests__/__snapshots__/YearView.spec.js.snap +1 -1
  315. package/lib/Heading/Heading.js +7 -3
  316. package/lib/Heading/__tests__/Heading.spec.js +9 -0
  317. package/lib/Heading/__tests__/__snapshots__/Heading.spec.js.snap +55 -1
  318. package/lib/Heading/props/propTypes.js +2 -1
  319. package/lib/Responsive/CustomResponsive.js +5 -12
  320. package/lib/Responsive/RefWrapper.js +3 -4
  321. package/lib/Responsive/props/propTypes.js +1 -2
  322. package/lib/Tab/Tabs.js +54 -53
  323. package/lib/Tab/Tabs.module.css +2 -2
  324. package/lib/Tab/props/propTypes.js +2 -2
  325. package/lib/Textarea/Textarea.js +188 -43
  326. package/lib/Textarea/Textarea.module.css +55 -4
  327. package/lib/Textarea/TextareaOne.js +422 -0
  328. package/lib/Textarea/props/propTypes.js +4 -1
  329. package/lib/Textarea/utils/calculateNodeHeight.js +69 -0
  330. package/lib/Textarea/utils/calculateNodeHeightOne.js +74 -0
  331. package/lib/Textarea/utils/debounce.js +33 -0
  332. package/lib/Textarea/utils/getSizingData.js +37 -0
  333. package/lib/Textarea/utils/ownerDocument.js +13 -0
  334. package/lib/Textarea/utils/ownerWindow.js +18 -0
  335. package/lib/Textarea/utils/updateState.js +36 -0
  336. package/lib/Tooltip/Tooltip.js +15 -4
  337. package/lib/Tooltip/Tooltip.module.css +0 -8
  338. package/lib/common/common.module.css +24 -0
  339. package/lib/utils/cssUtils.js +22 -0
  340. package/lib/v1/Heading/Heading.js +7 -3
  341. package/lib/v1/Heading/props/propTypes.js +2 -1
  342. package/lib/v1/Tab/Tabs.js +3 -3
  343. package/lib/v1/Tab/props/propTypes.js +2 -2
  344. package/lib/v1/Tab/v1Tabs.module.css +2 -2
  345. package/lib/v1/Tooltip/Tooltip.js +15 -4
  346. package/package.json +8 -8
  347. package/result.json +1 -1
@@ -12,6 +12,7 @@
12
12
  /* textarea placeholder default variable */
13
13
  --textarea_placeholder_text_color: var(--zdt_textarea_placeholder_text);
14
14
  }
15
+
15
16
  .basic {
16
17
  composes: varClass;
17
18
  -webkit-appearance: none;
@@ -22,119 +23,169 @@
22
23
  color: var(--textarea_text_color);
23
24
  cursor: var(--textarea_cursor);
24
25
  }
26
+
25
27
  .basic, .noBorder {
26
28
  border-width: var(--textarea_border_width);
27
29
  }
30
+
28
31
  .basic::placeholder {
29
32
  color: var(--textarea_placeholder_text_color);
30
33
  }
34
+
31
35
  .basic::-webkit-placeholder {
32
36
  color: var(--textarea_placeholder_text_color);
33
37
  }
38
+
34
39
  .basic::-moz-placeholder {
35
40
  color: var(--textarea_placeholder_text_color);
36
41
  }
42
+
37
43
  .basic::-ms-placeholder {
38
44
  color: var(--textarea_placeholder_text_color);
39
45
  }
46
+
40
47
  .basic:disabled {
41
48
  --textarea_cursor: not-allowed;
42
49
  --textarea_text_color: var(--zdt_textarea_default_text);
43
50
  }
51
+
44
52
  .readonly {
45
53
  --textarea_cursor: not-allowed;
46
54
  }
55
+
47
56
  .resizeX {
48
57
  composes: resizeX from '../common/common.module.css';
49
58
  }
59
+
50
60
  .resizeY {
51
61
  composes: resizeY from '../common/common.module.css';
52
62
  }
63
+
53
64
  .noresize {
54
65
  composes: resizenone from '../common/common.module.css';
55
66
  }
67
+
56
68
  .resizeboth {
57
69
  composes: resizeboth from '../common/common.module.css';
58
70
  }
71
+
59
72
  /* css:lineheight-validation:ignore */
60
73
  .container {
61
74
  composes: basic;
62
- transition: border var(--zd_transition2) linear 0s,
75
+ transition: .3s;
76
+ /* transition: border var(--zd_transition2) linear 0s,
63
77
  height var(--zd_transition2) linear 0s;
64
- -moz-transition: border var(--zd_transition2) linear 0s,
78
+ -webkit-transition: border var(--zd_transition2) linear 0s,
65
79
  height var(--zd_transition2) linear 0s;
80
+ -moz-transition: border var(--zd_transition2) linear 0s,
81
+ height var(--zd_transition2) linear 0s; */
66
82
  width: 100% ;
67
83
  max-width: 100% ;
68
84
  min-width: var(--zd_size100) ;
69
85
  font-size: var(--textarea_font_size);
70
86
  line-height: var(--textarea_line_height);
71
87
  height: var(--textarea_height);
72
- -webkit-transition: border var(--zd_transition2) linear 0s,
73
- height var(--zd_transition2) linear 0s;
74
88
  border-style: solid;
75
89
  background-color: var(--zdt_textarea_default_bg);
76
90
  border-color: var(--textarea_border_color);
77
91
  padding: var(--textarea_padding);
78
92
  }
93
+
79
94
  .needBorder {
80
95
  --textarea_border_width: 0 0 1px 0;
81
96
  }
97
+
82
98
  .borderColor_transparent {
83
99
  --textarea_border_color: var(--zdt_textarea_transparent_border);
84
100
  }
101
+
85
102
  .borderColor_default {
86
103
  --textarea_border_color: var(--zdt_textarea_default_border);
87
104
  }
105
+
88
106
  .effect:hover {
89
107
  --textarea_border_color: var(--zdt_textarea_hover_border);
90
108
  }
109
+
91
110
  .effect:focus {
92
111
  --textarea_border_color: var(--zdt_textarea_focus_border);
93
112
  }
113
+
94
114
  .xsmall,
95
115
  .xmedium {
96
116
  vertical-align: middle;
97
117
  }
118
+
98
119
  .xsmall {
99
120
  --textarea_font_size: var(--zd_font_size14);
100
121
  --textarea_padding: var(--zd_size4) 0 var(--zd_size2);
101
122
  --textarea_height: var(--zd_size28);
102
123
  --textarea_line_height: 1.3572;
103
124
  }
125
+
104
126
  .xmedium {
105
127
  --textarea_font_size: var(--zd_font_size13);
106
128
  --textarea_padding: var(--zd_size4) 0 var(--zd_size2);
107
129
  --textarea_height: var(--zd_size25);
108
130
  --textarea_line_height: 1.3077;
109
131
  }
132
+
110
133
  .small {
111
134
  --textarea_height: var(--zd_size30);
112
135
  --textarea_padding: var(--zd_size2) 0;
113
136
  }
137
+
114
138
  .smallanimated:focus,
115
139
  .xsmallanimated:focus,
116
140
  .xmediumanimated:focus {
117
141
  --textarea_height: var(--zd_size70);
118
142
  }
143
+
119
144
  .medium {
120
145
  --textarea_height: var(--zd_size88);
121
146
  --textarea_padding: var(--zd_size2);
122
147
  }
148
+
123
149
  .large {
124
150
  --textarea_height: var(--zd_size45);
125
151
  --textarea_padding: var(--zd_size2);
126
152
  }
153
+
127
154
  .largeanimated:focus {
128
155
  --textarea_height: var(--zd_size220);
129
156
  }
157
+
130
158
  .xlarge {
131
159
  --textarea_height: var(--zd_size184);
132
160
  }
161
+
133
162
  .default {
134
163
  font-family: var(--zd_regular);
135
164
  --textarea_text_color: var(--zdt_textarea_black_text);
136
165
  }
166
+
137
167
  .primary {
138
168
  composes: semibold from '../common/common.module.css';
139
169
  --textarea_text_color: var(--zdt_textarea_black_text);
140
170
  }
171
+
172
+ .forceHiddenStyle {
173
+ /* Visibility needed to hide the extra text area on iPads */
174
+ visibility: hidden;
175
+ /* Remove from the content flow */
176
+ position: absolute;
177
+ /* Ignore the scrollbar width */
178
+ overflow: hidden;
179
+ height: 0 ;
180
+ top: 0 ;
181
+ /* Create a new layer, increase the isolation of the computed values */
182
+ transform: translateZ(0);
183
+ }
184
+
185
+ [dir=ltr] .forceHiddenStyle {
186
+ left: 0 ;
187
+ }
188
+
189
+ [dir=rtl] .forceHiddenStyle {
190
+ right: 0 ;
191
+ }
@@ -0,0 +1,349 @@
1
+ import React from "react";
2
+ import ReactDOM from "react-dom";
3
+ import { defaultProps } from "./props/defaultProps";
4
+ import { propTypes } from "./props/propTypes";
5
+ /* eslint css-modules/no-unused-class: [2, { markAsUsed: ['resizeX', 'resizeY', 'noresize', 'resizeboth', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'default', 'primary'] }] */
6
+
7
+ import style from "./Textarea.module.css";
8
+ import ownerWindow from "./ownerWindow";
9
+ import debounce from "./debounce";
10
+ const styles = {
11
+ shadow: {
12
+ // Visibility needed to hide the extra text area on iPads
13
+ visibility: "hidden",
14
+ // Remove from the content flow
15
+ position: "absolute",
16
+ // Ignore the scrollbar width
17
+ overflow: "hidden",
18
+ height: 0,
19
+ top: 0,
20
+ left: 0,
21
+ // Create a new layer, increase the isolation of the computed values
22
+ transform: "translateZ(0)"
23
+ }
24
+ };
25
+ export default class Textarea extends React.Component {
26
+ constructor(props) {
27
+ super(props);
28
+ this.onChange = this.onChange.bind(this);
29
+ this.onKeyDown = this.onKeyDown.bind(this);
30
+ this.onBlur = this.onBlur.bind(this);
31
+ this.inputRef = this.inputRef.bind(this);
32
+ this.getUpdatedState = this.getUpdatedState.bind(this);
33
+ this.isEmpty = this.isEmpty.bind(this);
34
+ this.getStyleValue = this.getStyleValue.bind(this);
35
+ this.updateState = this.updateState.bind(this);
36
+ this.syncHeight = this.syncHeight.bind(this);
37
+ this.syncHeightWithFlushSync = this.syncHeightWithFlushSync.bind(this);
38
+ this.handleResize = this.handleResize.bind(this);
39
+ this.rAFHandleResize = this.rAFHandleResize.bind(this);
40
+ this.rAF = null;
41
+ this.resizeObserver = null;
42
+ this.debounceHandleResize = null;
43
+ this.shadowRef = /*#__PURE__*/React.createRef();
44
+ this.rendersRef = /*#__PURE__*/React.createRef();
45
+ this.state = {
46
+ outerHeightStyle: 0,
47
+ overflow: false
48
+ };
49
+ }
50
+
51
+ onBlur(e) {
52
+ e && e.preventDefault();
53
+ let {
54
+ onBlur
55
+ } = this.props;
56
+ onBlur && onBlur(e.target.value, e);
57
+ this.syncHeight();
58
+ }
59
+
60
+ onKeyDown(e) {
61
+ let {
62
+ onKeyDown
63
+ } = this.props;
64
+ onKeyDown && onKeyDown(e);
65
+ }
66
+
67
+ inputRef(e) {
68
+ let {
69
+ getRef
70
+ } = this.props;
71
+ this.textareaRef = e;
72
+ getRef && getRef(e);
73
+ }
74
+
75
+ isEmpty(obj) {
76
+ return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflow;
77
+ }
78
+
79
+ getStyleValue(value) {
80
+ return parseInt(value, 10) || 0;
81
+ }
82
+
83
+ getUpdatedState() {
84
+ const {
85
+ minRows = 1,
86
+ maxRows = 5,
87
+ placeHolder
88
+ } = this.props;
89
+ const input = this.textareaRef;
90
+ const containerWindow = ownerWindow(input);
91
+ const computedStyle = containerWindow.getComputedStyle(input); // If input's width is shrunk and it's not visible, don't sync height.
92
+
93
+ if (computedStyle.width === "0px") {
94
+ return {
95
+ outerHeightStyle: 0
96
+ };
97
+ }
98
+
99
+ const inputShallow = this.shadowRef.current;
100
+ inputShallow.style.width = computedStyle.width;
101
+ inputShallow.value = input.value || placeHolder || "x"; // if (inputShallow.value.slice(-1) === "\n") {
102
+ // Certain fonts which overflow the line height will cause the textarea
103
+ // to report a different scrollHeight depending on whether the last line
104
+ // is empty. Make it non-empty to avoid this issue.
105
+ // inputShallow.value += " ";
106
+ // }
107
+
108
+ const boxSizing = computedStyle.boxSizing;
109
+ const padding = this.getStyleValue(computedStyle.paddingBottom) + this.getStyleValue(computedStyle.paddingTop);
110
+ const border = this.getStyleValue(computedStyle.borderBottomWidth) + this.getStyleValue(computedStyle.borderTopWidth); // The height of the inner content
111
+
112
+ const innerHeight = inputShallow.scrollHeight; // Measure height of a textarea with a single row
113
+
114
+ inputShallow.value = "x";
115
+ const singleRowHeight = inputShallow.scrollHeight; // The height of the outer content
116
+
117
+ let outerHeight = innerHeight;
118
+
119
+ if (minRows) {
120
+ outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);
121
+ }
122
+
123
+ if (maxRows) {
124
+ outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);
125
+ }
126
+
127
+ outerHeight = Math.max(outerHeight, singleRowHeight); // Take the box sizing into account for applying this value as a style.
128
+
129
+ const outerHeightStyle = outerHeight + (boxSizing === "border-box" ? padding + border : 0);
130
+ const overflow = Math.abs(outerHeight - innerHeight) <= 1;
131
+ console.log("outerHeightStyle-->", outerHeightStyle);
132
+ return {
133
+ outerHeightStyle,
134
+ overflow
135
+ };
136
+ }
137
+
138
+ updateState(prevState, newState) {
139
+ const {
140
+ outerHeightStyle,
141
+ overflow
142
+ } = newState;
143
+ const renders = this.rendersRef; // Need a large enough difference to update the height.
144
+ // This prevents infinite rendering loop.
145
+
146
+ if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {
147
+ renders.current += 1;
148
+ return {
149
+ overflow,
150
+ outerHeightStyle
151
+ };
152
+ } // if (process.env.NODE_ENV !== "production") {
153
+ // if (renders.current === 20) {
154
+ // console.error(
155
+ // [
156
+ // "MUI: Too many re-renders. The layout is unstable.",
157
+ // "TextareaAutosize limits the number of renders to prevent an infinite loop."
158
+ // ].join("\n")
159
+ // )
160
+ // }
161
+ // }
162
+
163
+
164
+ return prevState;
165
+ }
166
+
167
+ syncHeight() {
168
+ const newState = this.getUpdatedState();
169
+
170
+ if (this.isEmpty(newState)) {
171
+ return;
172
+ }
173
+
174
+ this.setState(prevState => this.updateState(prevState, newState));
175
+ }
176
+
177
+ onChange(e) {
178
+ e && e.preventDefault();
179
+ let {
180
+ onChange,
181
+ text
182
+ } = this.props;
183
+ this.rendersRef.current = 0;
184
+ const isControlled = text !== undefined;
185
+
186
+ if (!isControlled) {
187
+ this.syncHeight();
188
+ }
189
+
190
+ onChange && onChange(e.target.value, e);
191
+ }
192
+
193
+ syncHeightWithFlushSync() {
194
+ const newState = this.getUpdatedState();
195
+
196
+ if (this.isEmpty(newState)) {
197
+ return;
198
+ }
199
+
200
+ ReactDOM.flushSync(() => {
201
+ this.setState(prevState => this.updateState(prevState, newState));
202
+ });
203
+ }
204
+
205
+ handleResize() {
206
+ this.rendersRef.current = 0;
207
+ this.syncHeightWithFlushSync();
208
+ }
209
+
210
+ rAFHandleResize() {
211
+ cancelAnimationFrame(this.rAF);
212
+ this.rAF = requestAnimationFrame(() => {
213
+ this.handleResize();
214
+ });
215
+ }
216
+
217
+ componentDidMount() {
218
+ const input = this.textareaRef;
219
+ const containerWindow = ownerWindow(input);
220
+ this.debounceHandleResize = debounce(this.handleResize);
221
+ containerWindow.addEventListener("resize", this.debounceHandleResize);
222
+
223
+ if (typeof ResizeObserver !== "undefined") {
224
+ this.resizeObserver = new ResizeObserver(this.rAFHandleResize);
225
+ this.resizeObserver.observe(input);
226
+ }
227
+ }
228
+
229
+ componentWillUnmount() {
230
+ const input = this.textareaRef;
231
+ const containerWindow = ownerWindow(input);
232
+ this.debounceHandleResize.clear();
233
+ cancelAnimationFrame(this.rAF);
234
+ containerWindow.removeEventListener("resize", this.debounceHandleResize);
235
+
236
+ if (this.resizeObserver) {
237
+ this.resizeObserver.disconnect();
238
+ }
239
+ }
240
+
241
+ componentDidUpdate(prevProps) {
242
+ if (prevProps.text !== this.props.text) {
243
+ this.rendersRef.current = 0;
244
+ this.syncHeight();
245
+ }
246
+ }
247
+
248
+ render() {
249
+ let {
250
+ size,
251
+ placeHolder,
252
+ needBorder,
253
+ text,
254
+ isDisabled,
255
+ resize,
256
+ maxLength,
257
+ animated,
258
+ variant,
259
+ getRef,
260
+ onFocus,
261
+ dataId,
262
+ dataSelectorId,
263
+ isReadOnly,
264
+ needAppearance,
265
+ needReadOnlyStyle,
266
+ borderColor,
267
+ needEffect,
268
+ autoFocus,
269
+ htmlId,
270
+ a11y,
271
+ customClass,
272
+ maxRows,
273
+ minRows = 3,
274
+ inlineStyle
275
+ } = this.props;
276
+ let {
277
+ ariaLabel,
278
+ ariaLabelledby
279
+ } = a11y;
280
+ let resizes = {
281
+ horizontal: "resizeX",
282
+ vertical: "resizeY",
283
+ both: "resizeboth",
284
+ none: "noresize"
285
+ };
286
+ let options = {};
287
+
288
+ if (isReadOnly) {
289
+ options.readOnly = "readOnly";
290
+ }
291
+
292
+ if (isDisabled) {
293
+ options.disabled = "disabled";
294
+ }
295
+
296
+ if (autoFocus) {
297
+ options.autoFocus = true;
298
+ }
299
+
300
+ let classList = needAppearance ? `${style.container} ${style[size]} ${style[variant]} ${needBorder ? style.needBorder : style.noBorder} ${resize ? style[resizes[resize]] : style[resizes.none]} ${animated ? `${style[`${size}animated`]}` : ""} ${isDisabled && !needEffect || isReadOnly && !needEffect ? "" : style.effect}` : `${style.basic}`;
301
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("textarea", {
302
+ "aria-label": ariaLabel,
303
+ "aria-labelledby": ariaLabelledby,
304
+ className: `${customClass} ${isReadOnly && needReadOnlyStyle ? style.readonly : ""} ${classList} ${style[`borderColor_${borderColor}`]}`,
305
+ placeholder: placeHolder,
306
+ ...options,
307
+ "data-id": dataId,
308
+ "data-test-id": dataId,
309
+ maxLength: maxLength,
310
+ onChange: this.onChange,
311
+ onKeyDown: this.onKeyDown,
312
+ onFocus: onFocus,
313
+ onBlur: this.onBlur,
314
+ ref: this.inputRef,
315
+ value: text,
316
+ id: htmlId,
317
+ "data-selector-id": dataSelectorId,
318
+ rows: minRows,
319
+ style: {
320
+ height: this.state.outerHeightStyle,
321
+ // Need a large enough difference to allow scrolling.
322
+ // This prevents infinite rendering loop.
323
+ overflow: this.state.overflow ? "hidden" : undefined,
324
+ ...inlineStyle
325
+ }
326
+ }), /*#__PURE__*/React.createElement("textarea", {
327
+ "aria-hidden": true,
328
+ readOnly: true,
329
+ ref: this.shadowRef,
330
+ tabIndex: -1,
331
+ className: `${customClass} ${classList} ${style[`borderColor_${borderColor}`]}`,
332
+ style: { ...styles.shadow,
333
+ ...inlineStyle,
334
+ paddingTop: 0,
335
+ paddingBottom: 0
336
+ }
337
+ }));
338
+ }
339
+
340
+ }
341
+ Textarea.defaultProps = defaultProps;
342
+ Textarea.propTypes = propTypes; // if (__DOCS__) {
343
+ // Textarea.docs = {
344
+ // componentGroup: 'Form Elements',
345
+ // folderName: 'Style Guide',
346
+ // external: true,
347
+ // description: ' '
348
+ // };
349
+ // }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Textarea from '../Textarea';
2
+ import Textarea from "../Textarea";
3
3
  import { render } from "@testing-library/react";
4
4
  describe('Textarea component', () => {
5
5
  const size = ['xsmall', 'small', 'xmedium', 'medium', 'large'];
@@ -27,5 +27,8 @@ export const propTypes = {
27
27
  a11y: PropTypes.shape({
28
28
  ariaLabel: PropTypes.string,
29
29
  ariaLabelledby: PropTypes.string
30
- })
30
+ }),
31
+ maxRows: PropTypes.string,
32
+ minRows: PropTypes.string,
33
+ inlineStyle: PropTypes.string
31
34
  };
@@ -0,0 +1,58 @@
1
+ import getSizingData from "./getSizingData";
2
+ export default function calculateNodeHeight(_ref) {
3
+ let {
4
+ minRows = 1,
5
+ maxRows = 5,
6
+ textareaEle,
7
+ hiddenTextareaEle
8
+ } = _ref;
9
+ const {
10
+ computedStyle,
11
+ paddingSize,
12
+ borderSize,
13
+ boxSizing
14
+ } = getSizingData(textareaEle);
15
+ const isBorderBox = boxSizing === "border-box"; // If input's width is shrunk and it's not visible, don't sync height.
16
+
17
+ if (computedStyle.width === '0px') {
18
+ return {
19
+ height: 0
20
+ };
21
+ }
22
+
23
+ let hiddenTextarea = hiddenTextareaEle;
24
+ hiddenTextarea.style.width = computedStyle.width;
25
+ hiddenTextarea.value = textareaEle.value || textareaEle.placeholder || "x";
26
+
27
+ if (hiddenTextarea.value.slice(-1) === "\n") {
28
+ // // Certain fonts which overflow the line height will cause the textarea
29
+ // // to report a different scrollHeight depending on whether the last line
30
+ // // is empty. Make it non-empty to avoid this issue.
31
+ hiddenTextarea.value += " ";
32
+ } // The height of the inner content
33
+
34
+
35
+ const innerHeight = hiddenTextarea.scrollHeight; // Measure height of a textarea with a single row
36
+
37
+ hiddenTextarea.value = "x";
38
+ const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize || parseInt(computedStyle.lineHeight); // The height of the outer content
39
+
40
+ let outerHeight = innerHeight;
41
+
42
+ if (minRows) {
43
+ outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);
44
+ }
45
+
46
+ if (maxRows) {
47
+ outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);
48
+ }
49
+
50
+ outerHeight = Math.max(outerHeight, singleRowHeight); // Take the box sizing into account for applying this value as a style.
51
+
52
+ const height = outerHeight + (isBorderBox ? paddingSize + borderSize : 0);
53
+ const overflow = Math.abs(outerHeight - innerHeight) <= 1;
54
+ return {
55
+ height,
56
+ overflow
57
+ };
58
+ }
@@ -0,0 +1,66 @@
1
+ import getSizingData from "./getSizingData";
2
+
3
+ const getHeight = (node, _ref) => {
4
+ let {
5
+ borderSize,
6
+ paddingSize,
7
+ isBorderBox
8
+ } = _ref;
9
+ const height = node.scrollHeight;
10
+
11
+ if (isBorderBox) {
12
+ // border-box: add border, since height = content + padding + border
13
+ return height + borderSize;
14
+ } // remove padding, since height = content
15
+
16
+
17
+ return height - paddingSize;
18
+ };
19
+
20
+ export default function calculateNodeHeightOne(_ref2) {
21
+ let {
22
+ minRows = 1,
23
+ maxRows = 5,
24
+ textareaEle,
25
+ hiddenTextareaEle
26
+ } = _ref2;
27
+ const {
28
+ computedStyle,
29
+ paddingSize,
30
+ borderSize,
31
+ boxSizing
32
+ } = getSizingData(hiddenTextareaEle);
33
+ const isBorderBox = boxSizing === "border-box"; // If input's width is shrunk and it's not visible, don't sync height.
34
+
35
+ if (computedStyle.width === '0px') {
36
+ return {
37
+ height: 0
38
+ };
39
+ }
40
+
41
+ let hiddenTextarea = hiddenTextareaEle; // The height of the inner content
42
+
43
+ let height = getHeight(hiddenTextarea, {
44
+ paddingSize,
45
+ borderSize,
46
+ isBorderBox
47
+ });
48
+ const innerHeight = getHeight(hiddenTextarea, {
49
+ paddingSize,
50
+ borderSize,
51
+ isBorderBox
52
+ }); // measure height of a textarea with a single row
53
+
54
+ hiddenTextarea.value = textareaEle.value || textareaEle.placeholder || "x";
55
+ hiddenTextarea.style.width = computedStyle.width;
56
+ const rowHeight = hiddenTextarea.scrollHeight - paddingSize;
57
+ let minHeight = rowHeight * minRows + (isBorderBox ? paddingSize + borderSize : 0);
58
+ let maxHeight = rowHeight * maxRows + (isBorderBox ? paddingSize + borderSize : 0);
59
+ height = Math.min(maxHeight, Math.max(minHeight, height)); // Take the box sizing into account for applying this value as a style.
60
+
61
+ const overflow = Math.abs(height - innerHeight) <= 1;
62
+ return {
63
+ height,
64
+ overflow
65
+ };
66
+ }
@@ -0,0 +1,24 @@
1
+ // Corresponds to 10 frames at 60 Hz.
2
+ export default function debounce(func) {
3
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;
4
+ let timeout;
5
+
6
+ function debounced() {
7
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
8
+ args[_key] = arguments[_key];
9
+ }
10
+
11
+ const later = () => {
12
+ func.apply(this, args);
13
+ };
14
+
15
+ clearTimeout(timeout);
16
+ timeout = setTimeout(later, wait);
17
+ }
18
+
19
+ debounced.clear = () => {
20
+ clearTimeout(timeout);
21
+ };
22
+
23
+ return debounced;
24
+ }