@quen-ui/components 0.0.14 → 1.0.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 (483) hide show
  1. package/README.md +2 -2
  2. package/dist/Accordion/Accordion.cjs.js +88 -0
  3. package/dist/Accordion/Accordion.d.ts +3 -0
  4. package/dist/Accordion/Accordion.es.js +89 -0
  5. package/dist/Accordion/AccordionGroup.cjs.js +82 -0
  6. package/dist/Accordion/AccordionGroup.d.ts +12 -0
  7. package/dist/Accordion/AccordionGroup.es.js +82 -0
  8. package/dist/Accordion/AccordionItem.cjs.js +71 -0
  9. package/dist/Accordion/AccordionItem.d.ts +3 -0
  10. package/dist/Accordion/AccordionItem.es.js +72 -0
  11. package/dist/Accordion/helpers.cjs.js +24 -0
  12. package/dist/Accordion/helpers.d.ts +25 -0
  13. package/dist/Accordion/helpers.es.js +24 -0
  14. package/dist/Accordion/index.cjs.js +7 -0
  15. package/dist/Accordion/index.d.ts +8 -0
  16. package/dist/Accordion/index.es.js +7 -0
  17. package/dist/Accordion/styles.cjs.js +97 -0
  18. package/dist/Accordion/styles.d.ts +23 -0
  19. package/dist/Accordion/styles.es.js +97 -0
  20. package/dist/Accordion/types.d.ts +142 -0
  21. package/dist/Accordion/useAccordionState.cjs.js +34 -0
  22. package/dist/Accordion/useAccordionState.d.ts +12 -0
  23. package/dist/Accordion/useAccordionState.es.js +34 -0
  24. package/dist/Alert/Alert.cjs.js +1 -1
  25. package/dist/Alert/Alert.es.js +1 -1
  26. package/dist/Alert/styles.cjs.js +14 -10
  27. package/dist/Alert/styles.es.js +14 -10
  28. package/dist/Avatar/styles.cjs.js +16 -11
  29. package/dist/Avatar/styles.es.js +16 -11
  30. package/dist/Badge/styles.cjs.js +7 -7
  31. package/dist/Badge/styles.es.js +7 -7
  32. package/dist/Breadcrumbs/BreadcrumbItem.cjs.js +6 -6
  33. package/dist/Breadcrumbs/BreadcrumbItem.es.js +6 -6
  34. package/dist/Breadcrumbs/Breadcrumbs.cjs.js +2 -3
  35. package/dist/Breadcrumbs/Breadcrumbs.es.js +2 -3
  36. package/dist/Breadcrumbs/styles.cjs.js +15 -15
  37. package/dist/Breadcrumbs/styles.es.js +15 -15
  38. package/dist/Button/Button.cjs.js +3 -3
  39. package/dist/Button/Button.es.js +6 -6
  40. package/dist/Button/index.d.ts +1 -1
  41. package/dist/Button/styles.cjs.js +49 -54
  42. package/dist/Button/styles.es.js +50 -55
  43. package/dist/Button/types.d.ts +2 -3
  44. package/dist/Calendar/Calendar.cjs.js +200 -0
  45. package/dist/Calendar/Calendar.d.ts +4 -0
  46. package/dist/Calendar/Calendar.es.js +201 -0
  47. package/dist/Calendar/DaysLevel.cjs.js +93 -0
  48. package/dist/Calendar/DaysLevel.d.ts +3 -0
  49. package/dist/Calendar/DaysLevel.es.js +94 -0
  50. package/dist/Calendar/MonthLevel.cjs.js +23 -0
  51. package/dist/Calendar/MonthLevel.d.ts +3 -0
  52. package/dist/Calendar/MonthLevel.es.js +24 -0
  53. package/dist/Calendar/YearsLevel.cjs.js +24 -0
  54. package/dist/Calendar/YearsLevel.d.ts +3 -0
  55. package/dist/Calendar/YearsLevel.es.js +25 -0
  56. package/dist/Calendar/helpers.cjs.js +60 -0
  57. package/dist/Calendar/helpers.d.ts +9 -0
  58. package/dist/Calendar/helpers.es.js +60 -0
  59. package/dist/Calendar/index.d.ts +2 -0
  60. package/dist/Calendar/styles.cjs.js +116 -0
  61. package/dist/Calendar/styles.d.ts +16 -0
  62. package/dist/Calendar/styles.es.js +116 -0
  63. package/dist/Calendar/types.d.ts +115 -0
  64. package/dist/Card/Card.cjs.js +4 -2
  65. package/dist/Card/Card.d.ts +1 -1
  66. package/dist/Card/Card.es.js +4 -2
  67. package/dist/Card/styles.cjs.js +2 -2
  68. package/dist/Card/styles.es.js +2 -2
  69. package/dist/Card/types.d.ts +2 -0
  70. package/dist/Checkbox/Checkbox.cjs.js +1 -1
  71. package/dist/Checkbox/Checkbox.es.js +1 -1
  72. package/dist/Checkbox/CheckboxGroup.cjs.js +22 -25
  73. package/dist/Checkbox/CheckboxGroup.es.js +22 -25
  74. package/dist/Checkbox/styles.cjs.js +24 -23
  75. package/dist/Checkbox/styles.es.js +24 -23
  76. package/dist/ColorPicker/ColorPicker.cjs.js +404 -0
  77. package/dist/ColorPicker/ColorPicker.d.ts +3 -0
  78. package/dist/ColorPicker/ColorPicker.es.js +405 -0
  79. package/dist/ColorPicker/InputColor.cjs.js +94 -0
  80. package/dist/ColorPicker/InputColor.d.ts +3 -0
  81. package/dist/ColorPicker/InputColor.es.js +95 -0
  82. package/dist/ColorPicker/InputsColor.cjs.js +177 -0
  83. package/dist/ColorPicker/InputsColor.d.ts +3 -0
  84. package/dist/ColorPicker/InputsColor.es.js +178 -0
  85. package/dist/ColorPicker/helpers.cjs.js +32 -0
  86. package/dist/ColorPicker/helpers.d.ts +4 -0
  87. package/dist/ColorPicker/helpers.es.js +32 -0
  88. package/dist/ColorPicker/index.cjs.js +7 -0
  89. package/dist/ColorPicker/index.d.ts +8 -0
  90. package/dist/ColorPicker/index.es.js +7 -0
  91. package/dist/ColorPicker/styles.cjs.js +234 -0
  92. package/dist/ColorPicker/styles.d.ts +43 -0
  93. package/dist/ColorPicker/styles.es.js +234 -0
  94. package/dist/ColorPicker/types.d.ts +56 -0
  95. package/dist/Divider/styles.cjs.js +12 -10
  96. package/dist/Divider/styles.es.js +12 -10
  97. package/dist/Drawer/Drawer.cjs.js +7 -3
  98. package/dist/Drawer/Drawer.es.js +5 -1
  99. package/dist/Drawer/styles.cjs.js +4 -5
  100. package/dist/Drawer/styles.es.js +4 -5
  101. package/dist/Dropdown/Dropdown.cjs.js +33 -4
  102. package/dist/Dropdown/Dropdown.d.ts +2 -2
  103. package/dist/Dropdown/Dropdown.es.js +32 -3
  104. package/dist/Dropdown/DropdownItem.cjs.js +4 -5
  105. package/dist/Dropdown/DropdownItem.es.js +4 -5
  106. package/dist/Dropdown/DropdownList.cjs.js +3 -2
  107. package/dist/Dropdown/DropdownList.es.js +6 -5
  108. package/dist/Dropdown/DropdownPortal.cjs.js +8 -5
  109. package/dist/Dropdown/DropdownPortal.d.ts +5 -3
  110. package/dist/Dropdown/DropdownPortal.es.js +9 -6
  111. package/dist/Dropdown/helpers.cjs.js +1 -1
  112. package/dist/Dropdown/helpers.es.js +1 -1
  113. package/dist/Dropdown/styles.cjs.js +28 -27
  114. package/dist/Dropdown/styles.d.ts +2 -0
  115. package/dist/Dropdown/styles.es.js +28 -27
  116. package/dist/EmptyState/EmptyState.cjs.js +51 -0
  117. package/dist/EmptyState/EmptyState.d.ts +3 -0
  118. package/dist/EmptyState/EmptyState.es.js +52 -0
  119. package/dist/EmptyState/index.d.ts +2 -0
  120. package/dist/EmptyState/types.d.ts +10 -0
  121. package/dist/Flex/Flex.d.ts +1 -1
  122. package/dist/Flex/types.d.ts +1 -0
  123. package/dist/Form/Field.cjs.js +175 -0
  124. package/dist/Form/Field.d.ts +3 -0
  125. package/dist/Form/Field.es.js +176 -0
  126. package/dist/Form/FieldArray.cjs.js +24 -0
  127. package/dist/Form/FieldArray.d.ts +3 -0
  128. package/dist/Form/FieldArray.es.js +25 -0
  129. package/dist/Form/Form.cjs.js +69 -0
  130. package/dist/Form/Form.d.ts +3 -0
  131. package/dist/Form/Form.es.js +69 -0
  132. package/dist/Form/defaultValidateMessages.cjs.js +51 -0
  133. package/dist/Form/defaultValidateMessages.d.ts +47 -0
  134. package/dist/Form/defaultValidateMessages.es.js +51 -0
  135. package/dist/Form/helpers.cjs.js +8 -0
  136. package/dist/Form/helpers.d.ts +1 -0
  137. package/dist/Form/helpers.es.js +8 -0
  138. package/dist/Form/index.cjs.js +13 -0
  139. package/dist/Form/index.d.ts +14 -0
  140. package/dist/Form/index.es.js +13 -0
  141. package/dist/Form/types.d.ts +147 -0
  142. package/dist/Form/useForm.cjs.js +230 -0
  143. package/dist/Form/useForm.d.ts +2 -0
  144. package/dist/Form/useForm.es.js +230 -0
  145. package/dist/Form/useWatch.cjs.js +14 -0
  146. package/dist/Form/useWatch.d.ts +3 -0
  147. package/dist/Form/useWatch.es.js +14 -0
  148. package/dist/Highlight/Highlight.cjs.js +113 -0
  149. package/dist/Highlight/Highlight.d.ts +3 -0
  150. package/dist/Highlight/Highlight.es.js +114 -0
  151. package/dist/Highlight/helpers.cjs.js +147 -0
  152. package/dist/Highlight/helpers.d.ts +27 -0
  153. package/dist/Highlight/helpers.es.js +147 -0
  154. package/dist/Highlight/index.d.ts +2 -0
  155. package/dist/Highlight/styles.cjs.js +11 -0
  156. package/dist/Highlight/styles.d.ts +4 -0
  157. package/dist/Highlight/styles.es.js +11 -0
  158. package/dist/Highlight/types.d.ts +53 -0
  159. package/dist/Image/styles.cjs.js +4 -5
  160. package/dist/Image/styles.es.js +4 -5
  161. package/dist/InputBase/InputBase.cjs.js +32 -0
  162. package/dist/InputBase/InputBase.d.ts +4 -0
  163. package/dist/InputBase/InputBase.es.js +33 -0
  164. package/dist/InputBase/index.d.ts +2 -0
  165. package/dist/InputBase/styles.cjs.js +61 -0
  166. package/dist/InputBase/styles.d.ts +7 -0
  167. package/dist/InputBase/styles.es.js +61 -0
  168. package/dist/InputBase/types.d.ts +25 -0
  169. package/dist/InputDate/InputDate.cjs.js +344 -0
  170. package/dist/InputDate/InputDate.d.ts +4 -0
  171. package/dist/InputDate/InputDate.es.js +345 -0
  172. package/dist/InputDate/helpers.cjs.js +78 -0
  173. package/dist/InputDate/helpers.d.ts +5 -0
  174. package/dist/InputDate/helpers.es.js +78 -0
  175. package/dist/InputDate/index.d.ts +2 -0
  176. package/dist/InputDate/styles.cjs.js +35 -0
  177. package/dist/InputDate/styles.d.ts +5 -0
  178. package/dist/InputDate/styles.es.js +35 -0
  179. package/dist/InputDate/types.d.ts +23 -0
  180. package/dist/InputNumber/InputNumber.cjs.js +70 -73
  181. package/dist/InputNumber/InputNumber.d.ts +1 -1
  182. package/dist/InputNumber/InputNumber.es.js +72 -75
  183. package/dist/InputNumber/styles.cjs.js +20 -60
  184. package/dist/InputNumber/styles.d.ts +4 -8
  185. package/dist/InputNumber/styles.es.js +21 -61
  186. package/dist/InputNumber/types.d.ts +2 -18
  187. package/dist/Layout/Header.cjs.js +27 -23
  188. package/dist/Layout/Header.d.ts +1 -1
  189. package/dist/Layout/Header.es.js +28 -24
  190. package/dist/Layout/Sidebar.cjs.js +24 -25
  191. package/dist/Layout/Sidebar.d.ts +1 -1
  192. package/dist/Layout/Sidebar.es.js +25 -26
  193. package/dist/Layout/index.d.ts +2 -2
  194. package/dist/Layout/styles.cjs.js +16 -52
  195. package/dist/Layout/styles.d.ts +2 -15
  196. package/dist/Layout/styles.es.js +16 -52
  197. package/dist/Layout/types.d.ts +7 -22
  198. package/dist/Loader/styles.cjs.js +5 -4
  199. package/dist/Loader/styles.es.js +5 -4
  200. package/dist/LoadingOverlay/LoadingOverlay.cjs.js +22 -0
  201. package/dist/LoadingOverlay/LoadingOverlay.d.ts +3 -0
  202. package/dist/LoadingOverlay/LoadingOverlay.es.js +23 -0
  203. package/dist/LoadingOverlay/index.d.ts +2 -0
  204. package/dist/LoadingOverlay/styles.cjs.js +28 -0
  205. package/dist/LoadingOverlay/styles.d.ts +5 -0
  206. package/dist/LoadingOverlay/styles.es.js +28 -0
  207. package/dist/LoadingOverlay/types.d.ts +16 -0
  208. package/dist/Menu/Menu.cjs.js +42 -0
  209. package/dist/Menu/Menu.d.ts +3 -0
  210. package/dist/Menu/Menu.es.js +43 -0
  211. package/dist/Menu/MenuItem.cjs.js +112 -0
  212. package/dist/Menu/MenuItem.d.ts +3 -0
  213. package/dist/Menu/MenuItem.es.js +113 -0
  214. package/dist/Menu/helpers.cjs.js +20 -0
  215. package/dist/Menu/helpers.d.ts +17 -0
  216. package/dist/Menu/helpers.es.js +20 -0
  217. package/dist/Menu/index.d.ts +2 -0
  218. package/dist/Menu/styles.cjs.js +98 -0
  219. package/dist/Menu/styles.d.ts +16 -0
  220. package/dist/Menu/styles.es.js +98 -0
  221. package/dist/Menu/types.d.ts +85 -0
  222. package/dist/Modal/Modal.cjs.js +17 -7
  223. package/dist/Modal/Modal.d.ts +1 -1
  224. package/dist/Modal/Modal.es.js +16 -6
  225. package/dist/Modal/styles.cjs.js +39 -9
  226. package/dist/Modal/styles.d.ts +4 -0
  227. package/dist/Modal/styles.es.js +40 -10
  228. package/dist/Modal/types.d.ts +2 -0
  229. package/dist/Notification/Notification.cjs.js +3 -3
  230. package/dist/Notification/Notification.es.js +3 -3
  231. package/dist/Notification/NotificationInstance.cjs.js +10 -17
  232. package/dist/Notification/NotificationInstance.es.js +8 -15
  233. package/dist/Notification/NotificationsStore.cjs.js +2 -7
  234. package/dist/Notification/NotificationsStore.es.js +2 -7
  235. package/dist/Notification/styles.cjs.js +6 -6
  236. package/dist/Notification/styles.es.js +6 -6
  237. package/dist/Pagination/Pagination.cjs.js +114 -0
  238. package/dist/Pagination/Pagination.d.ts +3 -0
  239. package/dist/Pagination/Pagination.es.js +115 -0
  240. package/dist/Pagination/index.d.ts +2 -0
  241. package/dist/Pagination/styles.cjs.js +54 -0
  242. package/dist/Pagination/styles.d.ts +2 -0
  243. package/dist/Pagination/styles.es.js +54 -0
  244. package/dist/Pagination/types.d.ts +49 -0
  245. package/dist/Progress/Progress.cjs.js +1 -1
  246. package/dist/Progress/Progress.es.js +1 -1
  247. package/dist/Progress/styles.cjs.js +5 -50
  248. package/dist/Progress/styles.es.js +5 -50
  249. package/dist/Progress/types.d.ts +1 -0
  250. package/dist/RadioButton/RadioButton.cjs.js +1 -1
  251. package/dist/RadioButton/RadioButton.es.js +1 -1
  252. package/dist/RadioButton/RadioButtonGroup.cjs.js +19 -22
  253. package/dist/RadioButton/RadioButtonGroup.es.js +19 -22
  254. package/dist/RadioButton/styles.cjs.js +11 -13
  255. package/dist/RadioButton/styles.es.js +11 -13
  256. package/dist/RichTextEditor/RichTextEditor.cjs.js +289 -0
  257. package/dist/RichTextEditor/RichTextEditor.d.ts +4 -0
  258. package/dist/RichTextEditor/RichTextEditor.es.js +290 -0
  259. package/dist/RichTextEditor/RichTextEditorColorControl.cjs.js +38 -0
  260. package/dist/RichTextEditor/RichTextEditorColorControl.d.ts +3 -0
  261. package/dist/RichTextEditor/RichTextEditorColorControl.es.js +39 -0
  262. package/dist/RichTextEditor/RichTextEditorTableControl.cjs.js +62 -0
  263. package/dist/RichTextEditor/RichTextEditorTableControl.d.ts +3 -0
  264. package/dist/RichTextEditor/RichTextEditorTableControl.es.js +63 -0
  265. package/dist/RichTextEditor/helpers.cjs.js +151 -0
  266. package/dist/RichTextEditor/helpers.d.ts +10 -0
  267. package/dist/RichTextEditor/helpers.es.js +151 -0
  268. package/dist/RichTextEditor/index.d.ts +2 -0
  269. package/dist/RichTextEditor/plugins.cjs.js +571 -0
  270. package/dist/RichTextEditor/plugins.d.ts +2 -0
  271. package/dist/RichTextEditor/plugins.es.js +571 -0
  272. package/dist/RichTextEditor/styles.cjs.js +60 -0
  273. package/dist/RichTextEditor/styles.d.ts +7 -0
  274. package/dist/RichTextEditor/styles.es.js +60 -0
  275. package/dist/RichTextEditor/types.d.ts +79 -0
  276. package/dist/Select/Select.cjs.js +30 -18
  277. package/dist/Select/Select.es.js +30 -18
  278. package/dist/Select/helpers.cjs.js +1 -1
  279. package/dist/Select/helpers.d.ts +24 -24
  280. package/dist/Select/helpers.es.js +1 -1
  281. package/dist/Select/styles.cjs.js +91 -118
  282. package/dist/Select/styles.d.ts +4 -5
  283. package/dist/Select/styles.es.js +91 -118
  284. package/dist/Select/types.d.ts +3 -23
  285. package/dist/Select/useSelect.cjs.js +8 -14
  286. package/dist/Select/useSelect.d.ts +20 -20
  287. package/dist/Select/useSelect.es.js +8 -14
  288. package/dist/Skeleton/Skeleton.cjs.js +35 -0
  289. package/dist/Skeleton/Skeleton.d.ts +3 -0
  290. package/dist/Skeleton/Skeleton.es.js +36 -0
  291. package/dist/Skeleton/SkeletonAvatar.cjs.js +17 -0
  292. package/dist/Skeleton/SkeletonAvatar.d.ts +3 -0
  293. package/dist/Skeleton/SkeletonAvatar.es.js +18 -0
  294. package/dist/Skeleton/SkeletonButton.cjs.js +21 -0
  295. package/dist/Skeleton/SkeletonButton.d.ts +3 -0
  296. package/dist/Skeleton/SkeletonButton.es.js +22 -0
  297. package/dist/Skeleton/SkeletonCard.cjs.js +15 -0
  298. package/dist/Skeleton/SkeletonCard.d.ts +3 -0
  299. package/dist/Skeleton/SkeletonCard.es.js +16 -0
  300. package/dist/Skeleton/SkeletonLayout.cjs.js +60 -0
  301. package/dist/Skeleton/SkeletonLayout.d.ts +3 -0
  302. package/dist/Skeleton/SkeletonLayout.es.js +61 -0
  303. package/dist/Skeleton/SkeletonList.cjs.js +39 -0
  304. package/dist/Skeleton/SkeletonList.d.ts +3 -0
  305. package/dist/Skeleton/SkeletonList.es.js +40 -0
  306. package/dist/Skeleton/SkeletonTextBlock.cjs.js +7 -0
  307. package/dist/Skeleton/SkeletonTextBlock.d.ts +5 -0
  308. package/dist/Skeleton/SkeletonTextBlock.es.js +8 -0
  309. package/dist/Skeleton/index.cjs.js +17 -0
  310. package/dist/Skeleton/index.d.ts +18 -0
  311. package/dist/Skeleton/index.es.js +17 -0
  312. package/dist/Skeleton/styles.cjs.js +59 -0
  313. package/dist/Skeleton/styles.d.ts +3 -0
  314. package/dist/Skeleton/styles.es.js +59 -0
  315. package/dist/Skeleton/types.d.ts +74 -0
  316. package/dist/Slider/Slider.cjs.js +282 -0
  317. package/dist/Slider/Slider.d.ts +3 -0
  318. package/dist/Slider/Slider.es.js +283 -0
  319. package/dist/Slider/index.d.ts +2 -0
  320. package/dist/Slider/styles.cjs.js +156 -0
  321. package/dist/Slider/styles.d.ts +35 -0
  322. package/dist/Slider/styles.es.js +156 -0
  323. package/dist/Slider/types.d.ts +53 -0
  324. package/dist/Spoiler/Spoiler.cjs.js +62 -0
  325. package/dist/Spoiler/Spoiler.d.ts +3 -0
  326. package/dist/Spoiler/Spoiler.es.js +63 -0
  327. package/dist/Spoiler/index.d.ts +2 -0
  328. package/dist/Spoiler/styles.cjs.js +15 -0
  329. package/dist/Spoiler/styles.d.ts +4 -0
  330. package/dist/Spoiler/styles.es.js +15 -0
  331. package/dist/Spoiler/types.d.ts +23 -0
  332. package/dist/Switch/Switch.cjs.js +32 -6
  333. package/dist/Switch/Switch.d.ts +2 -2
  334. package/dist/Switch/Switch.es.js +33 -7
  335. package/dist/Switch/styles.cjs.js +24 -7
  336. package/dist/Switch/styles.d.ts +4 -0
  337. package/dist/Switch/styles.es.js +24 -7
  338. package/dist/Switch/types.d.ts +3 -0
  339. package/dist/Tabs/Tab.cjs.js +8 -8
  340. package/dist/Tabs/Tab.es.js +8 -8
  341. package/dist/Tabs/TabPanel.cjs.js +3 -3
  342. package/dist/Tabs/TabPanel.es.js +3 -3
  343. package/dist/Tabs/Tabs.cjs.js +5 -4
  344. package/dist/Tabs/Tabs.d.ts +1 -1
  345. package/dist/Tabs/Tabs.es.js +5 -4
  346. package/dist/Tabs/TabsList.cjs.js +25 -1
  347. package/dist/Tabs/TabsList.d.ts +2 -2
  348. package/dist/Tabs/TabsList.es.js +25 -1
  349. package/dist/Tabs/styles.cjs.js +104 -34
  350. package/dist/Tabs/styles.d.ts +2 -0
  351. package/dist/Tabs/styles.es.js +104 -34
  352. package/dist/Tabs/types.d.ts +7 -3
  353. package/dist/Tag/Tag.cjs.js +4 -1
  354. package/dist/Tag/Tag.d.ts +1 -1
  355. package/dist/Tag/Tag.es.js +4 -1
  356. package/dist/Tag/styles.cjs.js +14 -9
  357. package/dist/Tag/styles.d.ts +2 -0
  358. package/dist/Tag/styles.es.js +14 -9
  359. package/dist/Tag/types.d.ts +6 -0
  360. package/dist/TextField/TextField.cjs.js +57 -56
  361. package/dist/TextField/TextField.d.ts +1 -1
  362. package/dist/TextField/TextField.es.js +58 -57
  363. package/dist/TextField/styles.cjs.js +9 -50
  364. package/dist/TextField/styles.d.ts +3 -8
  365. package/dist/TextField/styles.es.js +10 -51
  366. package/dist/TextField/types.d.ts +2 -20
  367. package/dist/Textarea/Textarea.cjs.js +57 -56
  368. package/dist/Textarea/Textarea.d.ts +1 -1
  369. package/dist/Textarea/Textarea.es.js +58 -57
  370. package/dist/Textarea/styles.cjs.js +10 -62
  371. package/dist/Textarea/styles.d.ts +3 -8
  372. package/dist/Textarea/styles.es.js +12 -64
  373. package/dist/Textarea/types.d.ts +2 -21
  374. package/dist/Tooltip/Tooltip.cjs.js +3 -1
  375. package/dist/Tooltip/Tooltip.d.ts +1 -1
  376. package/dist/Tooltip/Tooltip.es.js +3 -1
  377. package/dist/Tooltip/types.d.ts +3 -0
  378. package/dist/_virtual/client.cjs.js +5 -0
  379. package/dist/_virtual/client.cjs2.js +4 -0
  380. package/dist/_virtual/client.es.js +5 -0
  381. package/dist/_virtual/client.es2.js +4 -0
  382. package/dist/_virtual/index.cjs.js +4 -0
  383. package/dist/_virtual/index.es.js +4 -0
  384. package/dist/_virtual/react-dom-client.development.cjs.js +4 -0
  385. package/dist/_virtual/react-dom-client.development.es.js +4 -0
  386. package/dist/_virtual/react-dom-client.production.cjs.js +4 -0
  387. package/dist/_virtual/react-dom-client.production.es.js +4 -0
  388. package/dist/_virtual/scheduler.development.cjs.js +4 -0
  389. package/dist/_virtual/scheduler.development.es.js +4 -0
  390. package/dist/_virtual/scheduler.production.cjs.js +4 -0
  391. package/dist/_virtual/scheduler.production.es.js +4 -0
  392. package/dist/assets/box.svg.cjs.js +21 -0
  393. package/dist/assets/box.svg.es.js +5 -0
  394. package/dist/index.d.ts +1 -50
  395. package/dist/message/Message.cjs.js +42 -0
  396. package/dist/message/Message.d.ts +3 -0
  397. package/dist/message/Message.es.js +43 -0
  398. package/dist/message/MessageContext.cjs.js +101 -0
  399. package/dist/message/MessageContext.d.ts +4 -0
  400. package/dist/message/MessageContext.es.js +101 -0
  401. package/dist/message/index.cjs.js +8 -0
  402. package/dist/message/index.d.ts +6 -0
  403. package/dist/message/index.es.js +8 -0
  404. package/dist/message/styles.cjs.js +79 -0
  405. package/dist/message/styles.d.ts +11 -0
  406. package/dist/message/styles.es.js +79 -0
  407. package/dist/message/types.d.ts +42 -0
  408. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.cjs.js +30 -0
  409. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.es.js +31 -0
  410. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.cjs.js +23 -0
  411. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.es.js +24 -0
  412. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.cjs.js +7 -0
  413. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.es.js +7 -0
  414. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.cjs.js +7 -0
  415. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.es.js +7 -0
  416. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.cjs.js +7 -0
  417. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.es.js +7 -0
  418. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.cjs.js +7 -0
  419. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.es.js +7 -0
  420. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.cjs.js +7 -0
  421. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.es.js +7 -0
  422. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.cjs.js +7 -0
  423. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.es.js +7 -0
  424. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.cjs.js +7 -0
  425. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.es.js +7 -0
  426. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.cjs.js +7 -0
  427. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.es.js +7 -0
  428. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.cjs.js +7 -0
  429. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.es.js +7 -0
  430. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.cjs.js +7 -0
  431. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.es.js +7 -0
  432. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.cjs.js +7 -0
  433. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.es.js +7 -0
  434. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.cjs.js +7 -0
  435. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.es.js +7 -0
  436. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.cjs.js +7 -0
  437. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.es.js +7 -0
  438. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.cjs.js +7 -0
  439. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.es.js +7 -0
  440. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.cjs.js +7 -0
  441. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.es.js +7 -0
  442. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.cjs.js +7 -0
  443. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.es.js +7 -0
  444. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.cjs.js +7 -0
  445. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.es.js +7 -0
  446. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.cjs.js +7 -0
  447. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.es.js +7 -0
  448. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.cjs.js +7 -0
  449. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.es.js +7 -0
  450. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.cjs.js +7 -0
  451. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.es.js +7 -0
  452. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.cjs.js +7 -0
  453. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.es.js +7 -0
  454. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.cjs.js +7 -0
  455. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.es.js +7 -0
  456. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.cjs.js +7 -0
  457. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.es.js +7 -0
  458. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.cjs.js +7 -0
  459. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.es.js +7 -0
  460. package/dist/node_modules/react-dom/cjs/react-dom-client.development.cjs.js +19870 -0
  461. package/dist/node_modules/react-dom/cjs/react-dom-client.development.es.js +19870 -0
  462. package/dist/node_modules/react-dom/cjs/react-dom-client.production.cjs.js +11524 -0
  463. package/dist/node_modules/react-dom/cjs/react-dom-client.production.es.js +11524 -0
  464. package/dist/node_modules/react-dom/client.cjs.js +31 -0
  465. package/dist/node_modules/react-dom/client.es.js +31 -0
  466. package/dist/node_modules/scheduler/cjs/scheduler.development.cjs.js +264 -0
  467. package/dist/node_modules/scheduler/cjs/scheduler.development.es.js +264 -0
  468. package/dist/node_modules/scheduler/cjs/scheduler.production.cjs.js +259 -0
  469. package/dist/node_modules/scheduler/cjs/scheduler.production.es.js +259 -0
  470. package/dist/node_modules/scheduler/index.cjs.js +17 -0
  471. package/dist/node_modules/scheduler/index.es.js +17 -0
  472. package/dist/packages/components/index.cjs.js +93 -0
  473. package/dist/packages/components/index.es.js +93 -0
  474. package/dist/typography/Text/Text.es.js +3 -3
  475. package/dist/typography/Title/Title.cjs.js +2 -0
  476. package/dist/typography/Title/Title.d.ts +1 -1
  477. package/dist/typography/Title/Title.es.js +2 -0
  478. package/dist/typography/Title/styles.cjs.js +3 -0
  479. package/dist/typography/Title/styles.es.js +3 -0
  480. package/dist/typography/Title/types.d.ts +1 -0
  481. package/package.json +16 -13
  482. package/dist/index.cjs.js +0 -63
  483. package/dist/index.es.js +0 -63
@@ -0,0 +1,290 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, useRef, useState, useCallback, useEffect, useMemo, useImperativeHandle, Fragment } from "react";
3
+ import { useTheme } from "@quen-ui/theme";
4
+ import { sanitize, toolbarButton } from "./helpers.es.js";
5
+ import { RichTextEditorWrapper, RichTextEditorContentStyled } from "./styles.es.js";
6
+ import Flex from "../Flex/Flex.es.js";
7
+ import Divider from "../Divider/Divider.es.js";
8
+ import { defaultPlugins } from "./plugins.es.js";
9
+ const RichTextEditor = ({
10
+ className,
11
+ onChange,
12
+ disabled,
13
+ value = "",
14
+ placeholder,
15
+ style,
16
+ plugins = [],
17
+ enablePlugins = []
18
+ }, ref) => {
19
+ const theme = useTheme();
20
+ const editorRef = useRef(null);
21
+ const lastHtmlRef = useRef(value);
22
+ const [selection, setSelection] = useState(null);
23
+ const [updatePluginState, setUpdatePluginState] = useState(0);
24
+ const pluginStateRef = useRef({});
25
+ const exec = useCallback(
26
+ (command, value2) => {
27
+ if (disabled) return;
28
+ document.execCommand(command, false, value2);
29
+ const el = editorRef.current;
30
+ if (!el) return;
31
+ const html = sanitize(el.innerHTML);
32
+ lastHtmlRef.current = html;
33
+ onChange?.(html);
34
+ },
35
+ [disabled, onChange]
36
+ );
37
+ const getHTML = useCallback(
38
+ () => sanitize(editorRef.current?.innerHTML || ""),
39
+ []
40
+ );
41
+ const setHTML = useCallback(
42
+ (html) => {
43
+ if (!editorRef.current) return;
44
+ editorRef.current.innerHTML = sanitize(html);
45
+ lastHtmlRef.current = editorRef.current.innerHTML;
46
+ onChange?.(lastHtmlRef.current);
47
+ },
48
+ [onChange]
49
+ );
50
+ const getText = useCallback(() => editorRef.current?.innerText || "", []);
51
+ const getPluginState = useCallback(
52
+ (key) => pluginStateRef.current[key],
53
+ []
54
+ );
55
+ const setPluginState = useCallback((key, value2) => {
56
+ setUpdatePluginState(Math.random());
57
+ pluginStateRef.current[key] = value2;
58
+ }, []);
59
+ const update = useCallback(() => {
60
+ if (!editorRef.current) return;
61
+ const html = sanitize(editorRef.current.innerHTML);
62
+ if (html === lastHtmlRef.current) return;
63
+ lastHtmlRef.current = html;
64
+ onChange?.(html);
65
+ const ctx = createCtx();
66
+ plugins.forEach((p) => p.onInput?.(ctx));
67
+ }, [onChange, plugins]);
68
+ const createCtx = useCallback(() => {
69
+ return {
70
+ editor: editorRef.current,
71
+ exec,
72
+ update,
73
+ getHTML,
74
+ getText,
75
+ setHTML,
76
+ selection,
77
+ getPluginState,
78
+ setPluginState,
79
+ theme
80
+ };
81
+ }, [
82
+ exec,
83
+ update,
84
+ getHTML,
85
+ getText,
86
+ setHTML,
87
+ selection,
88
+ getPluginState,
89
+ setPluginState,
90
+ theme
91
+ ]);
92
+ useEffect(() => {
93
+ if (editorRef.current) {
94
+ editorRef.current.innerHTML = sanitize(value);
95
+ lastHtmlRef.current = editorRef.current.innerHTML;
96
+ }
97
+ }, []);
98
+ const allPlugins = useMemo(() => {
99
+ const pl = [...defaultPlugins, ...plugins];
100
+ if (enablePlugins?.length) {
101
+ return pl.filter((p) => enablePlugins.includes(p.key));
102
+ }
103
+ return pl;
104
+ }, [plugins]);
105
+ useImperativeHandle(ref, () => ({
106
+ getHTML: () => sanitize(editorRef.current?.innerHTML || ""),
107
+ setHTML: (html) => {
108
+ if (editorRef.current) {
109
+ editorRef.current.innerHTML = sanitize(html);
110
+ lastHtmlRef.current = editorRef.current.innerHTML;
111
+ onChange?.(lastHtmlRef.current);
112
+ }
113
+ },
114
+ focus: () => editorRef.current?.focus()
115
+ }));
116
+ useEffect(() => {
117
+ const handleSelection = () => {
118
+ const sel = document.getSelection();
119
+ setSelection(sel);
120
+ const ctx = createCtx();
121
+ allPlugins.forEach((p) => p.onSelectionChange?.(sel, ctx));
122
+ };
123
+ document.addEventListener("selectionchange", handleSelection);
124
+ return () => document.removeEventListener("selectionchange", handleSelection);
125
+ }, [allPlugins, createCtx]);
126
+ useEffect(() => {
127
+ const el = editorRef.current;
128
+ if (!el) return;
129
+ const ctx = createCtx();
130
+ const handleInput = () => {
131
+ update();
132
+ allPlugins.forEach((p) => p.onInput?.(ctx));
133
+ };
134
+ const handleFocus = () => {
135
+ allPlugins.forEach((p) => p.onFocus?.(ctx));
136
+ };
137
+ const handleBlur = () => {
138
+ allPlugins.forEach((p) => p.onBlur?.(ctx));
139
+ };
140
+ const handleKeyDown2 = (e) => {
141
+ allPlugins.forEach((p) => p.onKeyDown?.(e, ctx));
142
+ };
143
+ const handlePaste = (e) => {
144
+ let handled = false;
145
+ allPlugins.forEach((p) => {
146
+ try {
147
+ p.onPaste?.(e, ctx);
148
+ if (e.defaultPrevented) handled = true;
149
+ } catch (err) {
150
+ window.console.error(err);
151
+ }
152
+ });
153
+ if (!handled) {
154
+ const clipboard = e.clipboardData;
155
+ if (!clipboard) return;
156
+ const html = clipboard.getData("text/html");
157
+ if (html) {
158
+ e.preventDefault();
159
+ const safe = sanitize(html);
160
+ document.execCommand("insertHTML", false, safe);
161
+ update();
162
+ }
163
+ }
164
+ };
165
+ const handleDrop2 = (ev) => {
166
+ ev.preventDefault();
167
+ allPlugins.forEach((p) => p.onDrop?.(ev, ctx));
168
+ const files = Array.from(ev.dataTransfer?.files || []);
169
+ for (const file of files) {
170
+ if (file.type.startsWith("image/")) {
171
+ const reader = new FileReader();
172
+ reader.onload = (e) => {
173
+ const imgHtml = `<img src="${e.target?.result}" alt="image" style="max-width:100%;height:auto;" />`;
174
+ document.execCommand("insertHTML", false, imgHtml);
175
+ update();
176
+ };
177
+ reader.readAsDataURL(file);
178
+ }
179
+ }
180
+ };
181
+ el.addEventListener("input", handleInput);
182
+ el.addEventListener("focus", handleFocus);
183
+ el.addEventListener("blur", handleBlur);
184
+ el.addEventListener("keydown", handleKeyDown2);
185
+ el.addEventListener("paste", handlePaste);
186
+ el.addEventListener("drop", handleDrop2);
187
+ return () => {
188
+ el.removeEventListener("input", handleInput);
189
+ el.removeEventListener("focus", handleFocus);
190
+ el.removeEventListener("blur", handleBlur);
191
+ el.removeEventListener("keydown", handleKeyDown2);
192
+ el.removeEventListener("paste", handlePaste);
193
+ el.removeEventListener("drop", handleDrop2);
194
+ };
195
+ }, [allPlugins, createCtx, update]);
196
+ const handleKeyDown = useCallback(
197
+ (e) => {
198
+ if (e.ctrlKey || e.metaKey) {
199
+ switch (e.key.toLowerCase()) {
200
+ case "b":
201
+ e.preventDefault();
202
+ exec("bold");
203
+ break;
204
+ case "i":
205
+ e.preventDefault();
206
+ exec("italic");
207
+ break;
208
+ case "u":
209
+ e.preventDefault();
210
+ exec("underline");
211
+ break;
212
+ }
213
+ }
214
+ },
215
+ [exec]
216
+ );
217
+ const onInput = useCallback(() => {
218
+ update();
219
+ }, [update]);
220
+ const handleDrop = useCallback(
221
+ (e) => {
222
+ e.preventDefault();
223
+ if (disabled) return;
224
+ const files = Array.from(e.dataTransfer.files);
225
+ for (const file of files) {
226
+ if (file.type.startsWith("image/")) {
227
+ const reader = new FileReader();
228
+ reader.onload = (ev) => {
229
+ const img = `<img src="${ev.target?.result}" alt="image" style="max-width:100%;height:auto;" />`;
230
+ document.execCommand("insertHTML", false, img);
231
+ update();
232
+ };
233
+ reader.readAsDataURL(file);
234
+ }
235
+ }
236
+ },
237
+ [update, disabled]
238
+ );
239
+ const handleDragOver = useCallback(
240
+ (e) => {
241
+ if (!disabled) e.preventDefault();
242
+ },
243
+ [disabled]
244
+ );
245
+ const renderToolbar = useCallback(() => {
246
+ const ctx = createCtx();
247
+ return allPlugins.map((plugin, idx) => {
248
+ const key = plugin.key ?? `p_${idx}`;
249
+ const state = plugin.getState ? plugin.getState(editorRef.current, ctx) : { active: false };
250
+ const title = plugin.title;
251
+ const onClick = (ref2) => plugin.action?.({
252
+ exec,
253
+ update,
254
+ editor: editorRef.current,
255
+ context: ctx,
256
+ ref: ref2
257
+ });
258
+ return /* @__PURE__ */ jsx(Fragment, { children: toolbarButton(
259
+ plugin.label,
260
+ onClick,
261
+ title,
262
+ plugin.disabled,
263
+ Boolean(state?.active)
264
+ ) }, key);
265
+ });
266
+ }, [updatePluginState]);
267
+ return /* @__PURE__ */ jsxs(RichTextEditorWrapper, { className, style, children: [
268
+ /* @__PURE__ */ jsx(Flex, { gap: "xs", wrap: "wrap", children: renderToolbar() }),
269
+ /* @__PURE__ */ jsx(Divider, { direction: "horizontal", view: "disabled" }),
270
+ /* @__PURE__ */ jsx(
271
+ RichTextEditorContentStyled,
272
+ {
273
+ role: "textbox",
274
+ ref: editorRef,
275
+ contentEditable: !disabled,
276
+ suppressContentEditableWarning: true,
277
+ onInput,
278
+ onKeyDown: handleKeyDown,
279
+ "data-placeholder": placeholder,
280
+ "aria-label": "Rich text editor",
281
+ onDrop: handleDrop,
282
+ onDragOver: handleDragOver
283
+ }
284
+ )
285
+ ] });
286
+ };
287
+ const RichTextEditor_default = forwardRef(RichTextEditor);
288
+ export {
289
+ RichTextEditor_default as default
290
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const React = require("react");
4
+ const theme = require("@quen-ui/theme");
5
+ const index = require("../ColorPicker/index.cjs.js");
6
+ const Dropdown = require("../Dropdown/Dropdown.cjs.js");
7
+ const RichTextEditorColorControl = ({
8
+ ref,
9
+ onChange,
10
+ onClose,
11
+ color,
12
+ theme: theme$1
13
+ }) => {
14
+ const [open, setOpen] = React.useState(true);
15
+ const handleClose = () => {
16
+ setOpen(false);
17
+ onClose();
18
+ };
19
+ return /* @__PURE__ */ jsxRuntime.jsx(theme.QuenUIProvider, { theme: theme$1, children: /* @__PURE__ */ jsxRuntime.jsx(
20
+ Dropdown,
21
+ {
22
+ anchorRef: ref,
23
+ open,
24
+ onClickOutside: handleClose,
25
+ content: /* @__PURE__ */ jsxRuntime.jsx(
26
+ index.ColorPicker,
27
+ {
28
+ size: "s",
29
+ format: "hex",
30
+ hideInputs: true,
31
+ onChangeComplete: onChange,
32
+ value: color
33
+ }
34
+ )
35
+ }
36
+ ) });
37
+ };
38
+ module.exports = RichTextEditorColorControl;
@@ -0,0 +1,3 @@
1
+ import { IRichTextEditorColorPickerProps } from './types';
2
+ declare const RichTextEditorColorControl: ({ ref, onChange, onClose, color, theme }: IRichTextEditorColorPickerProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default RichTextEditorColorControl;
@@ -0,0 +1,39 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { QuenUIProvider } from "@quen-ui/theme";
4
+ import { ColorPicker } from "../ColorPicker/index.es.js";
5
+ import Dropdown from "../Dropdown/Dropdown.es.js";
6
+ const RichTextEditorColorControl = ({
7
+ ref,
8
+ onChange,
9
+ onClose,
10
+ color,
11
+ theme
12
+ }) => {
13
+ const [open, setOpen] = useState(true);
14
+ const handleClose = () => {
15
+ setOpen(false);
16
+ onClose();
17
+ };
18
+ return /* @__PURE__ */ jsx(QuenUIProvider, { theme, children: /* @__PURE__ */ jsx(
19
+ Dropdown,
20
+ {
21
+ anchorRef: ref,
22
+ open,
23
+ onClickOutside: handleClose,
24
+ content: /* @__PURE__ */ jsx(
25
+ ColorPicker,
26
+ {
27
+ size: "s",
28
+ format: "hex",
29
+ hideInputs: true,
30
+ onChangeComplete: onChange,
31
+ value: color
32
+ }
33
+ )
34
+ }
35
+ ) });
36
+ };
37
+ export {
38
+ RichTextEditorColorControl as default
39
+ };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const React = require("react");
4
+ const theme = require("@quen-ui/theme");
5
+ const styles = require("./styles.cjs.js");
6
+ const Flex = require("../Flex/Flex.cjs.js");
7
+ const Text = require("../typography/Text/Text.cjs.js");
8
+ const Dropdown = require("../Dropdown/Dropdown.cjs.js");
9
+ const RichTextEditorTableControl = ({
10
+ onSelect,
11
+ onClose,
12
+ ref,
13
+ theme: theme$1
14
+ }) => {
15
+ const [hovered, setHovered] = React.useState({ rows: 0, cols: 0 });
16
+ const [gridSize, setGridSize] = React.useState({ rows: 10, cols: 10 });
17
+ const [open, setOpen] = React.useState(true);
18
+ const handleHover = (r, c) => {
19
+ if (r + 1 >= gridSize.rows) {
20
+ setGridSize({ ...gridSize, rows: Math.min(gridSize.rows + 5, 10) });
21
+ }
22
+ if (c + 1 >= gridSize.cols) {
23
+ setGridSize({ ...gridSize, cols: Math.min(gridSize.cols + 5, 10) });
24
+ }
25
+ setHovered({ rows: r + 1, cols: c + 1 });
26
+ };
27
+ const handleClick = () => {
28
+ if (hovered.rows > 0 && hovered.cols > 0) {
29
+ onSelect(hovered);
30
+ onClose?.();
31
+ }
32
+ setOpen(false);
33
+ };
34
+ return /* @__PURE__ */ jsxRuntime.jsx(theme.QuenUIProvider, { theme: theme$1, children: /* @__PURE__ */ jsxRuntime.jsx(
35
+ Dropdown,
36
+ {
37
+ onClickClose: onClose,
38
+ open,
39
+ anchorRef: ref,
40
+ content: /* @__PURE__ */ jsxRuntime.jsxs(styles.TableSizePickerWrapper, { children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx(Flex, { direction: "column", gap: 2, children: Array.from({ length: gridSize.rows }).map((_, r) => /* @__PURE__ */ jsxRuntime.jsx(Flex, { gap: 2, children: Array.from({ length: gridSize.cols }).map((_2, c) => {
42
+ const active = r < hovered.rows && c < hovered.cols;
43
+ return /* @__PURE__ */ jsxRuntime.jsx(
44
+ styles.TableSizePickerCellStyled,
45
+ {
46
+ active,
47
+ onMouseEnter: () => handleHover(r, c),
48
+ onClick: handleClick
49
+ },
50
+ c
51
+ );
52
+ }) }, r)) }),
53
+ /* @__PURE__ */ jsxRuntime.jsxs(Text, { size: "xs", children: [
54
+ hovered.rows,
55
+ " × ",
56
+ hovered.cols
57
+ ] })
58
+ ] })
59
+ }
60
+ ) });
61
+ };
62
+ module.exports = RichTextEditorTableControl;
@@ -0,0 +1,3 @@
1
+ import { IRichTextEditorTableSizePickerProps } from './types';
2
+ declare const RichTextEditorTableControl: ({ onSelect, onClose, ref, theme }: IRichTextEditorTableSizePickerProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default RichTextEditorTableControl;
@@ -0,0 +1,63 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { QuenUIProvider } from "@quen-ui/theme";
4
+ import { TableSizePickerWrapper, TableSizePickerCellStyled } from "./styles.es.js";
5
+ import Flex from "../Flex/Flex.es.js";
6
+ import Text from "../typography/Text/Text.es.js";
7
+ import Dropdown from "../Dropdown/Dropdown.es.js";
8
+ const RichTextEditorTableControl = ({
9
+ onSelect,
10
+ onClose,
11
+ ref,
12
+ theme
13
+ }) => {
14
+ const [hovered, setHovered] = useState({ rows: 0, cols: 0 });
15
+ const [gridSize, setGridSize] = useState({ rows: 10, cols: 10 });
16
+ const [open, setOpen] = useState(true);
17
+ const handleHover = (r, c) => {
18
+ if (r + 1 >= gridSize.rows) {
19
+ setGridSize({ ...gridSize, rows: Math.min(gridSize.rows + 5, 10) });
20
+ }
21
+ if (c + 1 >= gridSize.cols) {
22
+ setGridSize({ ...gridSize, cols: Math.min(gridSize.cols + 5, 10) });
23
+ }
24
+ setHovered({ rows: r + 1, cols: c + 1 });
25
+ };
26
+ const handleClick = () => {
27
+ if (hovered.rows > 0 && hovered.cols > 0) {
28
+ onSelect(hovered);
29
+ onClose?.();
30
+ }
31
+ setOpen(false);
32
+ };
33
+ return /* @__PURE__ */ jsx(QuenUIProvider, { theme, children: /* @__PURE__ */ jsx(
34
+ Dropdown,
35
+ {
36
+ onClickClose: onClose,
37
+ open,
38
+ anchorRef: ref,
39
+ content: /* @__PURE__ */ jsxs(TableSizePickerWrapper, { children: [
40
+ /* @__PURE__ */ jsx(Flex, { direction: "column", gap: 2, children: Array.from({ length: gridSize.rows }).map((_, r) => /* @__PURE__ */ jsx(Flex, { gap: 2, children: Array.from({ length: gridSize.cols }).map((_2, c) => {
41
+ const active = r < hovered.rows && c < hovered.cols;
42
+ return /* @__PURE__ */ jsx(
43
+ TableSizePickerCellStyled,
44
+ {
45
+ active,
46
+ onMouseEnter: () => handleHover(r, c),
47
+ onClick: handleClick
48
+ },
49
+ c
50
+ );
51
+ }) }, r)) }),
52
+ /* @__PURE__ */ jsxs(Text, { size: "xs", children: [
53
+ hovered.rows,
54
+ " × ",
55
+ hovered.cols
56
+ ] })
57
+ ] })
58
+ }
59
+ ) });
60
+ };
61
+ export {
62
+ RichTextEditorTableControl as default
63
+ };
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const DOMPurify = require("dompurify");
6
+ const Tooltip = require("../Tooltip/Tooltip.cjs.js");
7
+ const styles = require("./styles.cjs.js");
8
+ const sanitize = (html) => {
9
+ return DOMPurify.sanitize(html, { USE_PROFILES: { html: true } });
10
+ };
11
+ const toolbarButton = (label, onClick, title, disabled, active = false) => {
12
+ const ref = React.useRef(null);
13
+ return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { text: title, show: !!title, children: /* @__PURE__ */ jsxRuntime.jsx(
14
+ styles.ToolbarButtonStyled,
15
+ {
16
+ disabled,
17
+ "aria-label": title,
18
+ ref,
19
+ size: "s",
20
+ view: !active ? "icon" : "link",
21
+ onClick: () => onClick(ref),
22
+ children: label
23
+ }
24
+ ) });
25
+ };
26
+ const insertNodeAtSelection = (editor, node) => {
27
+ const sel = document.getSelection();
28
+ if (!sel || !sel.rangeCount) {
29
+ editor.appendChild(node);
30
+ return;
31
+ }
32
+ const range = sel.getRangeAt(0);
33
+ range.deleteContents();
34
+ range.insertNode(node);
35
+ };
36
+ const setCursorAtEnd = (el) => {
37
+ const range = document.createRange();
38
+ const sel = window.getSelection();
39
+ range.selectNodeContents(el);
40
+ range.collapse(false);
41
+ sel?.removeAllRanges();
42
+ sel?.addRange(range);
43
+ };
44
+ const getCurrentBlock = () => {
45
+ const sel = document.getSelection();
46
+ if (!sel || !sel.anchorNode) {
47
+ return null;
48
+ }
49
+ let node = sel.anchorNode;
50
+ if (node.nodeType === 3) {
51
+ node = node.parentElement;
52
+ }
53
+ if (!node) {
54
+ return null;
55
+ }
56
+ return node.closest("[data-checkbox-line], div, p, li");
57
+ };
58
+ function isCursorInTag(tagName, sel) {
59
+ if (!sel || !sel.anchorNode) return false;
60
+ let node = sel.anchorNode;
61
+ if (node.nodeType === Node.TEXT_NODE) {
62
+ node = node.parentNode;
63
+ }
64
+ while (node) {
65
+ if (node instanceof HTMLElement && node.tagName.toLowerCase() === tagName.toLowerCase()) {
66
+ return true;
67
+ }
68
+ node = node.parentElement;
69
+ }
70
+ return false;
71
+ }
72
+ const findClosestAncestorElement = (node, predicate) => {
73
+ let cur = node;
74
+ if (!cur) return null;
75
+ if (cur.nodeType === Node.TEXT_NODE) cur = cur.parentElement;
76
+ while (cur && cur instanceof HTMLElement) {
77
+ if (predicate(cur)) return cur;
78
+ cur = cur.parentElement;
79
+ }
80
+ return null;
81
+ };
82
+ const unwrapInlineColorSpans = (fragment) => {
83
+ const walker = document.createTreeWalker(
84
+ fragment,
85
+ NodeFilter.SHOW_ELEMENT,
86
+ null
87
+ );
88
+ const toUnwrap = [];
89
+ let node = walker.nextNode();
90
+ while (node) {
91
+ const el = node;
92
+ if (el.tagName === "SPAN" && el.style && (el.style.color || el.style.backgroundColor)) {
93
+ toUnwrap.push(el);
94
+ }
95
+ node = walker.nextNode();
96
+ }
97
+ for (const span of toUnwrap) {
98
+ const parent = span.parentNode;
99
+ if (!parent) continue;
100
+ while (span.firstChild) parent.insertBefore(span.firstChild, span);
101
+ parent.removeChild(span);
102
+ }
103
+ return fragment;
104
+ };
105
+ const getCurrentTextColor = (range) => {
106
+ const commonAncestor = range.commonAncestorContainer;
107
+ if (!range.collapsed) {
108
+ const walker = document.createTreeWalker(
109
+ commonAncestor,
110
+ NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
111
+ null
112
+ );
113
+ let detectedColor = null;
114
+ let first = true;
115
+ let node2 = walker.nextNode();
116
+ while (node2) {
117
+ if (range.intersectsNode(node2)) {
118
+ const el = node2 instanceof HTMLElement ? node2 : node2.parentElement;
119
+ if (el) {
120
+ const color = el.style?.color || null;
121
+ if (first) {
122
+ detectedColor = color;
123
+ first = false;
124
+ } else if (detectedColor !== color) {
125
+ return null;
126
+ }
127
+ }
128
+ }
129
+ node2 = walker.nextNode();
130
+ }
131
+ return detectedColor;
132
+ }
133
+ let node = range.startContainer;
134
+ if (node.nodeType === Node.TEXT_NODE) node = node.parentElement;
135
+ while (node && node instanceof HTMLElement) {
136
+ if (node.style.color) {
137
+ return node.style.color;
138
+ }
139
+ node = node.parentElement;
140
+ }
141
+ return null;
142
+ };
143
+ exports.findClosestAncestorElement = findClosestAncestorElement;
144
+ exports.getCurrentBlock = getCurrentBlock;
145
+ exports.getCurrentTextColor = getCurrentTextColor;
146
+ exports.insertNodeAtSelection = insertNodeAtSelection;
147
+ exports.isCursorInTag = isCursorInTag;
148
+ exports.sanitize = sanitize;
149
+ exports.setCursorAtEnd = setCursorAtEnd;
150
+ exports.toolbarButton = toolbarButton;
151
+ exports.unwrapInlineColorSpans = unwrapInlineColorSpans;
@@ -0,0 +1,10 @@
1
+ import { ReactNode, RefObject } from 'react';
2
+ export declare const sanitize: (html: string) => string;
3
+ export declare const toolbarButton: (label: ReactNode, onClick: (ref: RefObject<HTMLButtonElement | null>) => void, title?: string, disabled?: boolean, active?: boolean) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const insertNodeAtSelection: (editor: HTMLElement, node: HTMLElement) => void;
5
+ export declare const setCursorAtEnd: (el: HTMLElement) => void;
6
+ export declare const getCurrentBlock: () => HTMLElement | null;
7
+ export declare function isCursorInTag(tagName: string, sel: Selection | null): boolean;
8
+ export declare const findClosestAncestorElement: (node: Node | null, predicate: (el: HTMLElement) => boolean) => HTMLElement | null;
9
+ export declare const unwrapInlineColorSpans: (fragment: DocumentFragment) => DocumentFragment;
10
+ export declare const getCurrentTextColor: (range: Range) => string | null;