@cube-dev/ui-kit 0.137.0 → 0.137.1

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 (429) hide show
  1. package/dist/CHANGELOG.md +22 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.d.ts +0 -1
  20. package/dist/components/actions/Button/Button.js +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  25. package/dist/components/actions/CommandMenu/styled.js +1 -1
  26. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  27. package/dist/components/actions/ItemActionContext.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuSection.js +1 -1
  33. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  36. package/dist/components/actions/Menu/context.js +1 -1
  37. package/dist/components/actions/Menu/styled.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.d.ts +25 -0
  57. package/dist/components/content/InlineInput/InlineInput.js +109 -44
  58. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  100. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  101. package/dist/components/fields/Checkbox/context.js +1 -1
  102. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  103. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  104. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  105. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  106. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  110. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  111. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  112. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  113. package/dist/components/fields/DatePicker/intl.js +1 -1
  114. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  115. package/dist/components/fields/DatePicker/props.js +1 -1
  116. package/dist/components/fields/DatePicker/utils.js +1 -1
  117. package/dist/components/fields/FileInput/FileInput.js +1 -1
  118. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  119. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  120. package/dist/components/fields/Input/Input.js +1 -1
  121. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  122. package/dist/components/fields/ListBox/ListBox.js +1 -1
  123. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  124. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  125. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  126. package/dist/components/fields/Picker/Picker.js +1 -1
  127. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  128. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  129. package/dist/components/fields/RadioGroup/context.js +1 -1
  130. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  131. package/dist/components/fields/Select/Select.js +1 -1
  132. package/dist/components/fields/Slider/Gradation.js +1 -1
  133. package/dist/components/fields/Slider/HueSlider.js +1 -1
  134. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  135. package/dist/components/fields/Slider/Slider.js +1 -1
  136. package/dist/components/fields/Slider/SliderBase.js +1 -1
  137. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  138. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  139. package/dist/components/fields/Slider/elements.js +1 -1
  140. package/dist/components/fields/Slider/index.js +1 -1
  141. package/dist/components/fields/Switch/Switch.js +1 -1
  142. package/dist/components/fields/TextArea/TextArea.js +1 -1
  143. package/dist/components/fields/TextInput/TextInput.js +1 -1
  144. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  145. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  146. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  147. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  148. package/dist/components/form/Form/Field.js +1 -1
  149. package/dist/components/form/Form/Form.js +1 -1
  150. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  151. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  152. package/dist/components/form/Form/SubmitError.js +1 -1
  153. package/dist/components/form/Form/index.js +1 -1
  154. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  155. package/dist/components/form/Form/use-field/use-field.js +1 -1
  156. package/dist/components/form/Form/use-form.js +1 -1
  157. package/dist/components/form/Form/validation.js +1 -1
  158. package/dist/components/form/Label.js +1 -1
  159. package/dist/components/form/wrapper.js +1 -1
  160. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  161. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  162. package/dist/components/layout/Flex.js +1 -1
  163. package/dist/components/layout/Flow.js +1 -1
  164. package/dist/components/layout/Grid.js +1 -1
  165. package/dist/components/layout/Panel.js +1 -1
  166. package/dist/components/layout/Prefix.js +1 -1
  167. package/dist/components/layout/ResizablePanel.js +1 -1
  168. package/dist/components/layout/Space.js +1 -1
  169. package/dist/components/layout/Suffix.js +1 -1
  170. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  171. package/dist/components/navigation/Tabs/TabButton.js +5 -2
  172. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  173. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  174. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  175. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  176. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  177. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  178. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  179. package/dist/components/navigation/Tabs/styled.js +1 -1
  180. package/dist/components/navigation/Tabs/types.js +1 -1
  181. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  182. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  183. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  184. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  185. package/dist/components/other/Calendar/Calendar.js +1 -1
  186. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  187. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  188. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  189. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  190. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  191. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  192. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  193. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  194. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  195. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  196. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  197. package/dist/components/overlays/Dialog/context.js +1 -1
  198. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  199. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  200. package/dist/components/overlays/Modal/Modal.js +1 -1
  201. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  202. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  203. package/dist/components/overlays/Modal/Overlay.js +1 -1
  204. package/dist/components/overlays/Modal/Popover.js +1 -1
  205. package/dist/components/overlays/Modal/Tray.js +1 -1
  206. package/dist/components/overlays/Modal/Underlay.js +1 -1
  207. package/dist/components/overlays/Modal/types.d.ts +0 -1
  208. package/dist/components/overlays/Notifications/Notification.js +1 -1
  209. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  210. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  211. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  212. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  213. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  214. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  215. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  216. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  217. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  218. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  219. package/dist/components/overlays/Notifications/index.js +1 -1
  220. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  221. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  222. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  223. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  224. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  225. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  226. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  227. package/dist/components/overlays/Toast/index.js +1 -1
  228. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  229. package/dist/components/overlays/Toast/useToast.js +1 -1
  230. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  231. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  232. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  233. package/dist/components/overlays/Tooltip/context.js +1 -1
  234. package/dist/components/portal/Portal.js +1 -1
  235. package/dist/components/portal/PortalProvider.js +1 -1
  236. package/dist/components/portal/index.d.ts +0 -1
  237. package/dist/components/portal/usePortal.js +1 -1
  238. package/dist/components/shared/DraggableCollection.js +1 -1
  239. package/dist/components/shared/InvalidIcon.js +1 -1
  240. package/dist/components/shared/ValidIcon.js +1 -1
  241. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  242. package/dist/components/status/Spin/Cube.js +1 -1
  243. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  244. package/dist/components/status/Spin/Spin.js +1 -1
  245. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  246. package/dist/data/item-themes.js +1 -1
  247. package/dist/data/themes.js +1 -1
  248. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  249. package/dist/icons/AdjustmentsIcon.js +1 -1
  250. package/dist/icons/AiIcon.js +1 -1
  251. package/dist/icons/AreaChartIcon.js +1 -1
  252. package/dist/icons/BackwardIcon.js +1 -1
  253. package/dist/icons/BarChartIcon.js +1 -1
  254. package/dist/icons/BellFilledIcon.js +1 -1
  255. package/dist/icons/BellIcon.js +1 -1
  256. package/dist/icons/BooleanIcon.js +1 -1
  257. package/dist/icons/CalendarEditIcon.js +1 -1
  258. package/dist/icons/CalendarIcon.js +1 -1
  259. package/dist/icons/CaretDownIcon.js +1 -1
  260. package/dist/icons/CaretUpIcon.js +1 -1
  261. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  262. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  263. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  264. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  265. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  266. package/dist/icons/ChartBarLineIcon.js +1 -1
  267. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  268. package/dist/icons/ChartBarStackedIcon.js +1 -1
  269. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  270. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  271. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  272. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  273. package/dist/icons/ChartBubbleIcon.js +1 -1
  274. package/dist/icons/ChartDonut2Icon.js +1 -1
  275. package/dist/icons/ChartFunnelIcon.js +1 -1
  276. package/dist/icons/ChartHeatmapIcon.js +1 -1
  277. package/dist/icons/ChartKPIIcon.js +1 -1
  278. package/dist/icons/ChartPie2Icon.js +1 -1
  279. package/dist/icons/ChartScatterIcon.js +1 -1
  280. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  281. package/dist/icons/CheckCircleIcon.js +1 -1
  282. package/dist/icons/CheckIcon.js +1 -1
  283. package/dist/icons/CircleFilledIcon.js +1 -1
  284. package/dist/icons/ClearIcon.js +1 -1
  285. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  286. package/dist/icons/CloseCircleIcon.js +1 -1
  287. package/dist/icons/CloseIcon.js +1 -1
  288. package/dist/icons/CodeIcon.js +1 -1
  289. package/dist/icons/ColumnTotalIcon.js +1 -1
  290. package/dist/icons/CopyIcon.js +1 -1
  291. package/dist/icons/CountIcon.js +1 -1
  292. package/dist/icons/CubeIcon.js +1 -1
  293. package/dist/icons/CubePauseIcon.js +1 -1
  294. package/dist/icons/CubePlayIcon.js +1 -1
  295. package/dist/icons/CurrencyDollarIcon.js +1 -1
  296. package/dist/icons/DangerIcon.js +1 -1
  297. package/dist/icons/DashboardIcon.js +1 -1
  298. package/dist/icons/DatabaseIcon.js +1 -1
  299. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  300. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  301. package/dist/icons/DirectionIcon.js +1 -1
  302. package/dist/icons/DonutIcon.js +1 -1
  303. package/dist/icons/DownIcon.js +1 -1
  304. package/dist/icons/EditIcon.js +1 -1
  305. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  306. package/dist/icons/ExclamationCircleIcon.js +1 -1
  307. package/dist/icons/ExclamationIcon.js +1 -1
  308. package/dist/icons/EyeIcon.js +1 -1
  309. package/dist/icons/EyeInvisibleIcon.js +1 -1
  310. package/dist/icons/FilterIcon.js +1 -1
  311. package/dist/icons/FolderFilledIcon.js +1 -1
  312. package/dist/icons/FolderIcon.js +1 -1
  313. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  314. package/dist/icons/FolderOpenIcon.js +1 -1
  315. package/dist/icons/ForwardIcon.js +1 -1
  316. package/dist/icons/GripVerticalIcon.js +1 -1
  317. package/dist/icons/HierarchyIcon.js +1 -1
  318. package/dist/icons/HierarchyOpenIcon.js +1 -1
  319. package/dist/icons/Icon.js +1 -1
  320. package/dist/icons/InfoCircleIcon.js +1 -1
  321. package/dist/icons/InfoIcon.js +1 -1
  322. package/dist/icons/KeyIcon.js +1 -1
  323. package/dist/icons/LeftIcon.js +1 -1
  324. package/dist/icons/LineChartIcon.js +1 -1
  325. package/dist/icons/LoadingIcon.js +1 -1
  326. package/dist/icons/LockFilledIcon.js +1 -1
  327. package/dist/icons/LockIcon.js +1 -1
  328. package/dist/icons/MoreIcon.js +1 -1
  329. package/dist/icons/NotAllowedIcon.js +1 -1
  330. package/dist/icons/Number123Icon.js +1 -1
  331. package/dist/icons/NumberIcon.js +1 -1
  332. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  333. package/dist/icons/PauseCircleIcon.js +1 -1
  334. package/dist/icons/PauseIcon.js +1 -1
  335. package/dist/icons/PercentageIcon.js +1 -1
  336. package/dist/icons/PieChartIcon.js +1 -1
  337. package/dist/icons/PlayCircleIcon.js +1 -1
  338. package/dist/icons/PlayIcon.js +1 -1
  339. package/dist/icons/PlusIcon.js +1 -1
  340. package/dist/icons/ProgressBarIcon.js +1 -1
  341. package/dist/icons/ReloadIcon.js +1 -1
  342. package/dist/icons/ReportIcon.js +1 -1
  343. package/dist/icons/ReturnIcon.js +1 -1
  344. package/dist/icons/RightIcon.js +1 -1
  345. package/dist/icons/RowTotalsIcon.js +1 -1
  346. package/dist/icons/SchemeIcon.js +1 -1
  347. package/dist/icons/SearchIcon.js +1 -1
  348. package/dist/icons/SemanticQueryIcon.js +1 -1
  349. package/dist/icons/SettingsIcon.js +1 -1
  350. package/dist/icons/ShieldFilledIcon.js +1 -1
  351. package/dist/icons/ShieldIcon.js +1 -1
  352. package/dist/icons/SlashIcon.js +1 -1
  353. package/dist/icons/SparklesIcon.js +1 -1
  354. package/dist/icons/SqlIcon.js +1 -1
  355. package/dist/icons/StatsIcon.js +1 -1
  356. package/dist/icons/StopIcon.js +1 -1
  357. package/dist/icons/StringIcon.js +1 -1
  358. package/dist/icons/SubtotalsIcon.js +1 -1
  359. package/dist/icons/SwitchIcon.js +1 -1
  360. package/dist/icons/TableIcon.js +1 -1
  361. package/dist/icons/ThumbsDownIcon.js +1 -1
  362. package/dist/icons/ThumbsUpIcon.js +1 -1
  363. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  364. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  365. package/dist/icons/ThunderboltIcon.js +1 -1
  366. package/dist/icons/TimeIcon.js +1 -1
  367. package/dist/icons/TrashIcon.js +1 -1
  368. package/dist/icons/UnlockIcon.js +1 -1
  369. package/dist/icons/UpIcon.js +1 -1
  370. package/dist/icons/UserGroupIcon.js +1 -1
  371. package/dist/icons/UserIcon.js +1 -1
  372. package/dist/icons/UserLockIcon.js +1 -1
  373. package/dist/icons/ViewIcon.js +1 -1
  374. package/dist/icons/WarningFilledIcon.js +1 -1
  375. package/dist/icons/WarningIcon.js +1 -1
  376. package/dist/icons/wrap-icon.js +1 -1
  377. package/dist/index.js +1 -1
  378. package/dist/provider.js +1 -1
  379. package/dist/providers/TrackingProvider.js +1 -1
  380. package/dist/providers/navigationAdapter.default.js +1 -1
  381. package/dist/tokens/base.js +1 -1
  382. package/dist/tokens/colors.js +1 -1
  383. package/dist/tokens/index.js +1 -1
  384. package/dist/tokens/layout.js +1 -1
  385. package/dist/tokens/shadows.js +1 -1
  386. package/dist/tokens/sizes.js +1 -1
  387. package/dist/tokens/spacing.js +1 -1
  388. package/dist/tokens/typography.js +1 -1
  389. package/dist/utils/ResizeSensor.js +1 -1
  390. package/dist/utils/is-dev-env.js +1 -1
  391. package/dist/utils/modules.js +1 -1
  392. package/dist/utils/promise.js +1 -1
  393. package/dist/utils/raf.js +1 -1
  394. package/dist/utils/random.js +1 -1
  395. package/dist/utils/range.js +1 -1
  396. package/dist/utils/react/RenderCache.js +1 -1
  397. package/dist/utils/react/Slots.js +1 -1
  398. package/dist/utils/react/chain.js +1 -1
  399. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  400. package/dist/utils/react/index.js +1 -1
  401. package/dist/utils/react/interactions.js +1 -1
  402. package/dist/utils/react/isTextOnly.js +1 -1
  403. package/dist/utils/react/mapProps.js +1 -1
  404. package/dist/utils/react/mergeProps.js +1 -1
  405. package/dist/utils/react/nullableValue.js +1 -1
  406. package/dist/utils/react/resolveIcon.js +1 -1
  407. package/dist/utils/react/sharedStore.js +1 -1
  408. package/dist/utils/react/useCombinedRefs.js +1 -1
  409. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  410. package/dist/utils/react/useEventBus.js +1 -1
  411. package/dist/utils/react/useId.js +1 -1
  412. package/dist/utils/react/useIsDarwin.js +1 -1
  413. package/dist/utils/react/useKeySymbols.js +1 -1
  414. package/dist/utils/react/useLayoutEffect.js +1 -1
  415. package/dist/utils/react/useLocalStorage.js +1 -1
  416. package/dist/utils/react/useMergeStyles.js +1 -1
  417. package/dist/utils/react/usePopoverSync.js +1 -1
  418. package/dist/utils/react/useQaProps.js +1 -1
  419. package/dist/utils/react/useViewportSize.js +1 -1
  420. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  421. package/dist/utils/selection.js +1 -1
  422. package/dist/utils/styles.js +1 -1
  423. package/dist/utils/tree.js +1 -1
  424. package/dist/utils/warnings.js +1 -1
  425. package/dist/version.js +2 -2
  426. package/docs/components/content/InlineInput.md +55 -10
  427. package/docs/components/navigation/Tabs.md +2 -0
  428. package/package.json +1 -1
  429. package/dist/components/portal/PortalProvider.d.ts +0 -2
@@ -1,11 +1,12 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
5
+ import { useAutoTooltip } from "../use-auto-tooltip.js";
5
6
  import { BLOCK_STYLES, COLOR_STYLES, OUTER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
6
7
  import { forwardRef, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
8
- import { FocusScope, useFocusWithin } from "react-aria";
9
+ import { FocusScope, useFocusRing, useFocusWithin } from "react-aria";
9
10
  import { useControlledState } from "@react-stately/utils";
10
11
 
11
12
  //#region src/components/content/InlineInput/InlineInput.tsx
@@ -13,14 +14,35 @@ const InlineInputRoot = tasty({
13
14
  as: "span",
14
15
  styles: {
15
16
  display: "inline-flex",
17
+ alignItems: "baseline",
16
18
  verticalAlign: "baseline",
17
19
  position: "relative",
20
+ maxWidth: "100%",
18
21
  color: "inherit",
19
22
  preset: "inherit",
20
23
  cursor: {
21
24
  "": "inherit",
22
25
  "editable & !editing": "text"
23
26
  },
27
+ outline: {
28
+ "": "1bw #primary.0",
29
+ focused: "1bw #primary"
30
+ },
31
+ outlineOffset: 1,
32
+ radius: {
33
+ "": 0,
34
+ focused: true
35
+ },
36
+ transition: "theme",
37
+ Display: {
38
+ display: "block",
39
+ whiteSpace: "nowrap",
40
+ overflow: "hidden",
41
+ textOverflow: "ellipsis",
42
+ maxWidth: "100%",
43
+ preset: "inherit",
44
+ color: "inherit"
45
+ },
24
46
  Input: {
25
47
  recipe: "reset input / input-autofill",
26
48
  preset: "inherit",
@@ -63,7 +85,7 @@ const STYLE_PROPS = [
63
85
  * works regardless of `editTrigger`.
64
86
  */
65
87
  const InlineInput = forwardRef(function InlineInput(allProps, ref) {
66
- const { value: valueProp, defaultValue, onChange, isEditing: isEditingProp, defaultIsEditing, onEditingChange, onSubmit, onCancel, editTrigger = "dblclick", submitOnBlur = true, trimOnSubmit = true, allowEmpty = false, isDisabled = false, isReadOnly = false, placeholder, renderDisplay, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, qa, qaVal, styles: stylesProp, inputStyles, mods: customMods, tokens: customTokens, ...otherProps } = allProps;
88
+ const { value: valueProp, defaultValue, onChange, isEditing: isEditingProp, defaultIsEditing, onEditingChange, onSubmit, onCancel, editTrigger = "dblclick", keyboardActivation = true, submitOnBlur = true, trimOnSubmit = true, allowEmpty = false, isDisabled = false, isReadOnly = false, placeholder, renderDisplay, tooltip = true, tooltipPlacement = "top", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, qa, qaVal, styles: stylesProp, inputStyles, mods: customMods, tokens: customTokens, ...otherProps } = allProps;
67
89
  const isControlled = valueProp !== void 0;
68
90
  const inputRef = useRef(null);
69
91
  const measureRef = useRef(null);
@@ -76,7 +98,9 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
76
98
  const [inputWidth, setInputWidth] = useState(null);
77
99
  const submitTokenRef = useRef(0);
78
100
  const isEditingRef = useRef(isEditing);
79
- isEditingRef.current = isEditing;
101
+ useLayoutEffect(() => {
102
+ isEditingRef.current = isEditing;
103
+ }, [isEditing]);
80
104
  useEffect(() => {
81
105
  setOptimisticValue(null);
82
106
  }, [value]);
@@ -146,6 +170,7 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
146
170
  const handleInputChange = useEvent((e) => {
147
171
  setDraft(e.target.value);
148
172
  });
173
+ const { isFocusVisible, focusProps: focusRingProps } = useFocusRing();
149
174
  const { focusWithinProps } = useFocusWithin({
150
175
  isDisabled: !isEditing,
151
176
  onBlurWithin: () => {
@@ -154,26 +179,31 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
154
179
  }
155
180
  });
156
181
  const handleDblClick = useEvent((e) => {
157
- if (editTrigger !== "dblclick") return;
158
182
  e.preventDefault();
159
183
  e.stopPropagation();
160
184
  enterEditing();
161
185
  });
162
186
  const handleClick = useEvent((e) => {
163
- if (editTrigger !== "click") return;
164
187
  e.preventDefault();
165
188
  e.stopPropagation();
166
189
  enterEditing();
167
190
  });
191
+ const handleRootKeyDown = useEvent((e) => {
192
+ if (e.key === "Enter" || e.key === "F2" || e.key === " ") {
193
+ e.preventDefault();
194
+ e.stopPropagation();
195
+ enterEditing();
196
+ }
197
+ });
168
198
  useImperativeHandle(ref, () => ({
169
199
  startEditing: () => enterEditing(),
170
200
  stopEditing: (submit = true) => {
171
- if (!isEditing) return;
201
+ if (!isEditingRef.current) return;
172
202
  if (submit) commit(draft);
173
203
  else cancel();
174
204
  },
175
205
  focus: () => {
176
- if (isEditing) inputRef.current?.focus();
206
+ if (isEditingRef.current) inputRef.current?.focus();
177
207
  else rootRef.current?.focus();
178
208
  },
179
209
  getValue: () => displayedValue
@@ -182,13 +212,14 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
182
212
  commit,
183
213
  cancel,
184
214
  draft,
185
- displayedValue,
186
- isEditing
215
+ displayedValue
187
216
  ]);
188
217
  const isEditable = editTrigger !== "none" && !isDisabled && !isReadOnly;
218
+ const showFocusRing = isFocusVisible && isEditable && !isEditing;
189
219
  const mods = useMemo(() => ({
190
220
  editing: isEditing,
191
221
  editable: isEditable,
222
+ focused: showFocusRing,
192
223
  disabled: isDisabled,
193
224
  "read-only": isReadOnly,
194
225
  empty: !displayedValue,
@@ -196,6 +227,7 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
196
227
  }), [
197
228
  isEditing,
198
229
  isEditable,
230
+ showFocusRing,
199
231
  isDisabled,
200
232
  isReadOnly,
201
233
  displayedValue,
@@ -222,41 +254,74 @@ const InlineInput = forwardRef(function InlineInput(allProps, ref) {
222
254
  children: placeholder
223
255
  }) : "");
224
256
  const baseProps = filterBaseProps(otherProps, { eventProps: true });
225
- return /* @__PURE__ */ jsx(InlineInputRoot, {
226
- ref: rootRef,
227
- qa: qa ?? "InlineInput",
228
- qaVal,
229
- mods,
230
- tokens,
231
- styles: extractedStyles,
232
- ...mergeProps$1(baseProps, focusWithinProps, {
233
- onDoubleClick: isEditing ? void 0 : handleDblClick,
234
- onClick: isEditing ? void 0 : handleClick
235
- }),
236
- children: isEditing ? /* @__PURE__ */ jsxs(FocusScope, {
237
- autoFocus: true,
238
- restoreFocus: false,
239
- contain: false,
240
- children: [/* @__PURE__ */ jsx("span", {
241
- ref: measureRef,
242
- "data-element": "Measure",
243
- "aria-hidden": "true",
244
- children: draft || placeholder || " "
245
- }), /* @__PURE__ */ jsx("input", {
246
- ref: inputRef,
247
- "data-element": "Input",
248
- type: "text",
249
- value: draft,
250
- placeholder,
251
- disabled: isDisabled,
252
- readOnly: isReadOnly,
253
- "aria-label": ariaLabel,
254
- "aria-labelledby": ariaLabelledby,
255
- onChange: handleInputChange,
256
- onKeyDown: handleKeyDown
257
- })]
258
- }) : displayContent
257
+ const { labelRef: tooltipLabelRef, renderWithTooltip } = useAutoTooltip({
258
+ tooltip: isEditing || renderDisplay ? false : tooltip,
259
+ children: displayedValue
259
260
  });
261
+ const wantsClick = !isEditing && isEditable && editTrigger === "click";
262
+ const wantsDblClick = !isEditing && isEditable && editTrigger === "dblclick";
263
+ const wantsKeyboard = !isEditing && isEditable && keyboardActivation;
264
+ const renderRoot = (triggerProps, tooltipRef) => {
265
+ const handleRootRef = (element) => {
266
+ rootRef.current = element;
267
+ if (tooltipRef) tooltipRef.current = element;
268
+ };
269
+ const handleDisplayRef = (element) => {
270
+ tooltipLabelRef(element);
271
+ };
272
+ const a11yProps = {};
273
+ if (wantsKeyboard) {
274
+ a11yProps.tabIndex = 0;
275
+ a11yProps.role = "button";
276
+ a11yProps["aria-roledescription"] = "editable text";
277
+ if (ariaLabel) a11yProps["aria-label"] = ariaLabel;
278
+ if (ariaLabelledby) a11yProps["aria-labelledby"] = ariaLabelledby;
279
+ }
280
+ if (isDisabled) a11yProps["aria-disabled"] = true;
281
+ if (isReadOnly) a11yProps["aria-readonly"] = true;
282
+ return /* @__PURE__ */ jsx(InlineInputRoot, {
283
+ ref: handleRootRef,
284
+ qa: qa ?? "InlineInput",
285
+ qaVal,
286
+ mods,
287
+ tokens,
288
+ styles: extractedStyles,
289
+ ...mergeProps$1(baseProps, focusWithinProps, focusRingProps, triggerProps ?? {}, {
290
+ onDoubleClick: wantsDblClick ? handleDblClick : void 0,
291
+ onClick: wantsClick ? handleClick : void 0,
292
+ onKeyDown: wantsKeyboard ? handleRootKeyDown : void 0,
293
+ ...a11yProps
294
+ }),
295
+ children: isEditing ? /* @__PURE__ */ jsxs(FocusScope, {
296
+ autoFocus: true,
297
+ restoreFocus: false,
298
+ contain: false,
299
+ children: [/* @__PURE__ */ jsx("span", {
300
+ ref: measureRef,
301
+ "data-element": "Measure",
302
+ "aria-hidden": "true",
303
+ children: draft || placeholder || " "
304
+ }), /* @__PURE__ */ jsx("input", {
305
+ ref: inputRef,
306
+ "data-element": "Input",
307
+ type: "text",
308
+ value: draft,
309
+ placeholder,
310
+ disabled: isDisabled,
311
+ readOnly: isReadOnly,
312
+ "aria-label": ariaLabel,
313
+ "aria-labelledby": ariaLabelledby,
314
+ onChange: handleInputChange,
315
+ onKeyDown: handleKeyDown
316
+ })]
317
+ }) : /* @__PURE__ */ jsx("span", {
318
+ ref: handleDisplayRef,
319
+ "data-element": "Display",
320
+ children: displayContent
321
+ })
322
+ });
323
+ };
324
+ return renderWithTooltip(renderRoot, tooltipPlacement);
260
325
  });
261
326
 
262
327
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"InlineInput.js","names":["mergeProps"],"sources":["../../../../src/components/content/InlineInput/InlineInput.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n filterBaseProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FocusScope, useFocusWithin } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport type { ChangeEvent, KeyboardEvent, MouseEvent, ReactNode } from 'react';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type CubeInlineInputEditTrigger = 'dblclick' | 'click' | 'none';\n\nexport interface CubeInlineInputProps\n extends BaseProps,\n BlockStyleProps,\n OuterStyleProps,\n ColorStyleProps {\n /** Controlled value. When provided, the component is controlled. */\n value?: string;\n /** Initial value for uncontrolled usage. */\n defaultValue?: string;\n /**\n * Fires on commit *only when the value actually changed*. Use this to update\n * external state. Pair with `value` for the controlled pattern.\n */\n onChange?: (value: string) => void;\n\n /** Controlled editing state. When provided, the editing state is controlled. */\n isEditing?: boolean;\n /** Default editing state for uncontrolled usage. */\n defaultIsEditing?: boolean;\n /** Called when editing mode starts or ends. */\n onEditingChange?: (isEditing: boolean) => void;\n\n /**\n * Fires every time the user commits (Enter / submit-on-blur / `ref.stopEditing(true)`),\n * even if the value did not change. Use for side effects like analytics or\n * \"save\" toasts. For state updates, prefer `onChange`.\n *\n * May return a Promise. If the returned Promise **rejects**, the component\n * automatically reverts its optimistic display to the actual `value` prop —\n * this gives async-save flows free rollback on failure (in controlled mode).\n */\n onSubmit?: (value: string) => void | Promise<unknown>;\n /** Called when editing is cancelled (Escape or empty submit when `allowEmpty` is false). */\n onCancel?: () => void;\n\n /** How edit mode is activated from the display element. Default: `'dblclick'`. */\n editTrigger?: CubeInlineInputEditTrigger;\n /** Whether to submit when focus leaves the input. Default: `true`. */\n submitOnBlur?: boolean;\n /** Whether to trim the value on submit. Default: `true`. */\n trimOnSubmit?: boolean;\n /** When false, submitting an empty/whitespace value cancels instead. Default: `false`. */\n allowEmpty?: boolean;\n /** When true, edit mode cannot be entered (programmatically or otherwise). */\n isDisabled?: boolean;\n /** When true, edit mode cannot be entered, but the display reads as enabled. */\n isReadOnly?: boolean;\n\n /** Placeholder text shown in the input when the draft is empty. */\n placeholder?: string;\n /** Custom render for display (non-editing) mode. Receives the currently-displayed value (including optimistic). */\n renderDisplay?: (value: string) => ReactNode;\n /** ARIA label for the input (used when no visible label is associated). */\n 'aria-label'?: string;\n /** ARIA labelledby for the input. */\n 'aria-labelledby'?: string;\n\n /** Convenience prop for styling the `Input` sub-element. Merged into `styles.Input`. */\n inputStyles?: Styles;\n}\n\nexport interface CubeInlineInputRef {\n /** Programmatically enter edit mode. */\n startEditing(): void;\n /** Programmatically exit edit mode. `submit=true` commits, `submit=false` cancels. Defaults to commit. */\n stopEditing(submit?: boolean): void;\n /** Focus the underlying element (input when editing, root span otherwise). */\n focus(): void;\n /** Current committed value (includes optimistic value if a parent hasn't synced yet). */\n getValue(): string;\n}\n\n// =============================================================================\n// Styled element\n// =============================================================================\n\nconst InlineInputRoot = tasty({\n as: 'span',\n styles: {\n display: 'inline-flex',\n verticalAlign: 'baseline',\n position: 'relative',\n color: 'inherit',\n preset: 'inherit',\n cursor: {\n '': 'inherit',\n 'editable & !editing': 'text',\n },\n\n Input: {\n recipe: 'reset input / input-autofill',\n preset: 'inherit',\n color: 'inherit',\n fill: 'transparent',\n width: 'initial $input-width 100%',\n minWidth: '1em',\n '&::placeholder': { recipe: 'input-placeholder' },\n },\n\n Measure: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n whiteSpace: 'pre',\n preset: 'inherit',\n height: 0,\n overflow: 'hidden',\n },\n\n Placeholder: {\n recipe: 'input-placeholder',\n preset: 'inherit',\n },\n },\n});\n\nconst STYLE_PROPS = [...BLOCK_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * Inline editable text. Renders the value as inline content by default and\n * swaps to an auto-sizing text input when entering edit mode.\n *\n * Designed to drop into any text context (tab title, heading, paragraph,\n * table cell) without style customization: typography, color, and font family\n * are all inherited from the parent.\n *\n * Value and `isEditing` can each be controlled or uncontrolled independently.\n * Programmatic entry via the imperative ref (`startEditing`/`stopEditing`)\n * works regardless of `editTrigger`.\n */\nexport const InlineInput = forwardRef<CubeInlineInputRef, CubeInlineInputProps>(\n function InlineInput(allProps, ref) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n isEditing: isEditingProp,\n defaultIsEditing,\n onEditingChange,\n onSubmit,\n onCancel,\n editTrigger = 'dblclick',\n submitOnBlur = true,\n trimOnSubmit = true,\n allowEmpty = false,\n isDisabled = false,\n isReadOnly = false,\n placeholder,\n renderDisplay,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n qa,\n qaVal,\n styles: stylesProp,\n inputStyles,\n mods: customMods,\n tokens: customTokens,\n ...otherProps\n } = allProps;\n\n const isControlled = valueProp !== undefined;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const measureRef = useRef<HTMLSpanElement>(null);\n const rootRef = useRef<HTMLSpanElement>(null);\n\n const [value, setValue] = useControlledState<string>(\n valueProp as string,\n (defaultValue ?? '') as string,\n onChange,\n );\n\n const [isEditing, setIsEditing] = useControlledState<boolean>(\n isEditingProp as boolean,\n (defaultIsEditing ?? false) as boolean,\n onEditingChange,\n );\n\n // Optimistic value. Holds the just-committed value while we wait for the\n // (potentially async) controlled parent to sync `value`. In uncontrolled\n // mode `value` updates immediately so this stays null after each render.\n const [optimisticValue, setOptimisticValue] = useState<string | null>(null);\n const displayedValue = optimisticValue ?? value;\n\n const [draft, setDraft] = useState<string>(value);\n const [inputWidth, setInputWidth] = useState<number | null>(null);\n\n // Token to invalidate in-flight onSubmit promises if a newer commit /\n // re-entry happens before they settle.\n const submitTokenRef = useRef(0);\n\n // Synchronous mirror of `isEditing`. We need this because cancel/commit\n // call user callbacks (`onCancel`/`onSubmit`) that may synchronously\n // re-focus another element — that causes a synchronous blur on the\n // input which would otherwise re-enter `commit` via `onBlurWithin` (the\n // state update from `setIsEditing(false)` isn't committed yet, so the\n // closure still sees `isEditing === true`).\n const isEditingRef = useRef(isEditing);\n\n isEditingRef.current = isEditing;\n\n // Clear the optimistic value once `value` catches up or changes externally.\n useEffect(() => {\n setOptimisticValue(null);\n }, [value]);\n\n const enterEditing = useEvent(() => {\n if (isDisabled || isReadOnly || isEditing) return;\n // Invalidate any in-flight onSubmit promise — its outcome no longer\n // matters because the user is about to commit a new value anyway.\n submitTokenRef.current += 1;\n isEditingRef.current = true;\n // Start from the actual prop value, not optimistic — gives the user a\n // way to recover if a previous commit was rejected by the parent.\n setOptimisticValue(null);\n setDraft(value);\n setIsEditing(true);\n });\n\n const commit = useEvent((rawValue: string) => {\n // Re-entry guard. `onSubmit`/`onCancel` may synchronously refocus and\n // trigger another blur-driven commit before the state update lands.\n if (!isEditingRef.current) return;\n\n const next = trimOnSubmit ? rawValue.trim() : rawValue;\n\n if (!next && !allowEmpty) {\n isEditingRef.current = false;\n setIsEditing(false);\n onCancel?.();\n\n return;\n }\n\n const token = ++submitTokenRef.current;\n\n if (isControlled) {\n // Show the new value optimistically until the parent re-renders.\n setOptimisticValue(next);\n }\n isEditingRef.current = false;\n setValue(next);\n setIsEditing(false);\n\n const result = onSubmit?.(next);\n // If onSubmit returns a Promise that rejects, the parent is signalling\n // a save failure — revert the optimistic value back to the actual prop.\n // We guard with a token so a slow rejection doesn't clobber a newer\n // commit's optimistic display.\n if (\n result != null &&\n typeof (result as Promise<unknown>).then === 'function'\n ) {\n (result as Promise<unknown>).then(\n () => {},\n () => {\n if (submitTokenRef.current === token && isControlled) {\n setOptimisticValue(null);\n }\n },\n );\n }\n });\n\n const cancel = useEvent(() => {\n if (!isEditingRef.current) return;\n isEditingRef.current = false;\n setIsEditing(false);\n onCancel?.();\n });\n\n // Keep draft in sync with the external value while NOT editing.\n useEffect(() => {\n if (!isEditing) setDraft(value);\n }, [value, isEditing]);\n\n // Select all text synchronously when entering edit mode.\n useLayoutEffect(() => {\n if (!isEditing) return;\n inputRef.current?.select();\n }, [isEditing]);\n\n // Measure the draft so the input width follows the typed glyphs.\n useLayoutEffect(() => {\n if (!isEditing) return;\n const measure = measureRef.current;\n\n if (!measure) return;\n setInputWidth(measure.scrollWidth);\n }, [isEditing, draft, placeholder]);\n\n const handleKeyDown = useEvent((e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commit(draft);\n\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n cancel();\n\n return;\n }\n\n // Prevent the host (e.g. Tabs) from intercepting text-editing keys.\n if (\n e.key === 'ArrowLeft' ||\n e.key === 'ArrowRight' ||\n e.key === ' ' ||\n e.key === 'Delete' ||\n e.key === 'Backspace'\n ) {\n e.stopPropagation();\n }\n });\n\n const handleInputChange = useEvent((e: ChangeEvent<HTMLInputElement>) => {\n setDraft(e.target.value);\n });\n\n const { focusWithinProps } = useFocusWithin({\n isDisabled: !isEditing,\n onBlurWithin: () => {\n if (!submitOnBlur) return;\n commit(draft);\n },\n });\n\n const handleDblClick = useEvent((e: MouseEvent) => {\n if (editTrigger !== 'dblclick') return;\n e.preventDefault();\n e.stopPropagation();\n enterEditing();\n });\n\n const handleClick = useEvent((e: MouseEvent) => {\n if (editTrigger !== 'click') return;\n e.preventDefault();\n e.stopPropagation();\n enterEditing();\n });\n\n useImperativeHandle(\n ref,\n () => ({\n startEditing: () => enterEditing(),\n stopEditing: (submit = true) => {\n if (!isEditing) return;\n if (submit) commit(draft);\n else cancel();\n },\n focus: () => {\n if (isEditing) inputRef.current?.focus();\n else rootRef.current?.focus();\n },\n getValue: () => displayedValue,\n }),\n [enterEditing, commit, cancel, draft, displayedValue, isEditing],\n );\n\n const isEditable = editTrigger !== 'none' && !isDisabled && !isReadOnly;\n\n const mods = useMemo(\n () => ({\n editing: isEditing,\n editable: isEditable,\n disabled: isDisabled,\n 'read-only': isReadOnly,\n empty: !displayedValue,\n ...customMods,\n }),\n [\n isEditing,\n isEditable,\n isDisabled,\n isReadOnly,\n displayedValue,\n customMods,\n ],\n );\n\n const mergedStyles = useMemo<Styles | undefined>(() => {\n if (!stylesProp && !inputStyles) return undefined;\n if (!inputStyles) return stylesProp;\n const existingInput =\n (stylesProp?.Input as Styles | undefined) ?? undefined;\n\n return {\n ...stylesProp,\n Input: existingInput\n ? { ...existingInput, ...inputStyles }\n : inputStyles,\n };\n }, [stylesProp, inputStyles]);\n\n const extractedStyles = extractStyles(\n otherProps,\n STYLE_PROPS,\n mergedStyles,\n );\n\n const tokens = useMemo(\n () => ({\n ...customTokens,\n '$input-width': inputWidth != null ? `${inputWidth}px` : 'auto',\n }),\n [customTokens, inputWidth],\n );\n\n // In display mode, render the placeholder when the value is empty so the\n // component remains visible / clickable. Consumers using `renderDisplay`\n // take full control and are responsible for handling empty values\n // themselves.\n const displayContent = renderDisplay\n ? renderDisplay(displayedValue)\n : displayedValue ||\n (placeholder ? (\n <span data-element=\"Placeholder\">{placeholder}</span>\n ) : (\n ''\n ));\n\n const baseProps = filterBaseProps(otherProps, { eventProps: true });\n\n return (\n <InlineInputRoot\n ref={rootRef}\n qa={qa ?? 'InlineInput'}\n qaVal={qaVal}\n mods={mods}\n tokens={tokens}\n styles={extractedStyles}\n {...mergeProps(baseProps, focusWithinProps, {\n onDoubleClick: isEditing ? undefined : handleDblClick,\n onClick: isEditing ? undefined : handleClick,\n })}\n >\n {isEditing ? (\n <FocusScope autoFocus restoreFocus={false} contain={false}>\n <span ref={measureRef} data-element=\"Measure\" aria-hidden=\"true\">\n {draft || placeholder || ' '}\n </span>\n <input\n ref={inputRef}\n data-element=\"Input\"\n type=\"text\"\n value={draft}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={isReadOnly}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </FocusScope>\n ) : (\n displayContent\n )}\n </InlineInputRoot>\n );\n },\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"InlineInput.js","names":["mergeProps"],"sources":["../../../../src/components/content/InlineInput/InlineInput.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n filterBaseProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n FocusScope,\n OverlayProps,\n useFocusRing,\n useFocusWithin,\n} from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { AutoTooltipValue, useAutoTooltip } from '../use-auto-tooltip';\n\nimport type {\n ChangeEvent,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n} from 'react';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type CubeInlineInputEditTrigger = 'dblclick' | 'click' | 'none';\n\nexport interface CubeInlineInputProps\n extends BaseProps,\n BlockStyleProps,\n OuterStyleProps,\n ColorStyleProps {\n /** Controlled value. When provided, the component is controlled. */\n value?: string;\n /** Initial value for uncontrolled usage. */\n defaultValue?: string;\n /**\n * Fires on commit *only when the value actually changed*. Use this to update\n * external state. Pair with `value` for the controlled pattern.\n */\n onChange?: (value: string) => void;\n\n /** Controlled editing state. When provided, the editing state is controlled. */\n isEditing?: boolean;\n /** Default editing state for uncontrolled usage. */\n defaultIsEditing?: boolean;\n /** Called when editing mode starts or ends. */\n onEditingChange?: (isEditing: boolean) => void;\n\n /**\n * Fires every time the user commits (Enter / submit-on-blur / `ref.stopEditing(true)`),\n * even if the value did not change. Use for side effects like analytics or\n * \"save\" toasts. For state updates, prefer `onChange`.\n *\n * May return a Promise. If the returned Promise **rejects**, the component\n * automatically reverts its optimistic display to the actual `value` prop —\n * this gives async-save flows free rollback on failure (in controlled mode).\n */\n onSubmit?: (value: string) => void | Promise<unknown>;\n /** Called when editing is cancelled (Escape or empty submit when `allowEmpty` is false). */\n onCancel?: () => void;\n\n /** How edit mode is activated from the display element. Default: `'dblclick'`. */\n editTrigger?: CubeInlineInputEditTrigger;\n /**\n * When true (default) the display element is keyboard-focusable and\n * responds to `Enter`, `F2` and `Space` by entering edit mode. Set to\n * `false` when a host (e.g. an editable tab inside a button) already\n * routes keyboard activation through `ref.startEditing()` — exposing the\n * display element as a separate tab stop would create a nested keyboard\n * focus inside the host.\n *\n * @default true\n */\n keyboardActivation?: boolean;\n /** Whether to submit when focus leaves the input. Default: `true`. */\n submitOnBlur?: boolean;\n /** Whether to trim the value on submit. Default: `true`. */\n trimOnSubmit?: boolean;\n /** When false, submitting an empty/whitespace value cancels instead. Default: `false`. */\n allowEmpty?: boolean;\n /** When true, edit mode cannot be entered (programmatically or otherwise). */\n isDisabled?: boolean;\n /** When true, edit mode cannot be entered, but the display reads as enabled. */\n isReadOnly?: boolean;\n\n /** Placeholder text shown in the input when the draft is empty. */\n placeholder?: string;\n /** Custom render for display (non-editing) mode. Receives the currently-displayed value (including optimistic). */\n renderDisplay?: (value: string) => ReactNode;\n /** ARIA label for the input (used when no visible label is associated). */\n 'aria-label'?: string;\n /** ARIA labelledby for the input. */\n 'aria-labelledby'?: string;\n\n /**\n * Tooltip behaviour for the display value:\n * - `true` (default): auto-tooltip — show the full value when the text is truncated.\n * - `false`: never show a tooltip.\n * - `string`: always show this tooltip text.\n * - object: full `TooltipProvider` configuration (with optional `auto`).\n *\n * The tooltip is automatically suppressed while editing and when `renderDisplay` is used.\n */\n tooltip?: AutoTooltipValue;\n /** Default tooltip placement. @default 'top' */\n tooltipPlacement?: OverlayProps['placement'];\n\n /** Convenience prop for styling the `Input` sub-element. Merged into `styles.Input`. */\n inputStyles?: Styles;\n}\n\nexport interface CubeInlineInputRef {\n /** Programmatically enter edit mode. */\n startEditing(): void;\n /** Programmatically exit edit mode. `submit=true` commits, `submit=false` cancels. Defaults to commit. */\n stopEditing(submit?: boolean): void;\n /** Focus the underlying element (input when editing, root span otherwise). */\n focus(): void;\n /** Current committed value (includes optimistic value if a parent hasn't synced yet). */\n getValue(): string;\n}\n\n// =============================================================================\n// Styled element\n// =============================================================================\n\nconst InlineInputRoot = tasty({\n as: 'span',\n styles: {\n // `inline-flex` with `alignItems: baseline` is used (instead of\n // `inline-block` + `overflow: hidden`) so the container's baseline comes\n // from the first flex item's content baseline. With `inline-block` +\n // `overflow: hidden`, the CSS spec forces the baseline to the bottom\n // margin edge, which visibly shifts the text upward inside surrounding\n // line boxes (notably inside Tabs' centered `Item.Label`).\n display: 'inline-flex',\n alignItems: 'baseline',\n verticalAlign: 'baseline',\n position: 'relative',\n maxWidth: '100%',\n color: 'inherit',\n preset: 'inherit',\n cursor: {\n '': 'inherit',\n 'editable & !editing': 'text',\n },\n // Keyboard focus ring (only when the display element is keyboard-focusable,\n // which is gated by `keyboardActivation` on the React side via the\n // `focused` mod). Outline doesn't take layout space and respects rounded\n // corners via `outlineOffset`.\n outline: {\n '': '1bw #primary.0',\n focused: '1bw #primary',\n },\n outlineOffset: 1,\n radius: {\n '': 0,\n focused: true,\n },\n transition: 'theme',\n\n // Display flex item: owns the truncation (`overflow: hidden` here is a\n // block-level rule that does *not* alter the parent's baseline, unlike\n // an `inline-block` overflow rule).\n Display: {\n display: 'block',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%',\n preset: 'inherit',\n color: 'inherit',\n },\n\n Input: {\n recipe: 'reset input / input-autofill',\n preset: 'inherit',\n color: 'inherit',\n fill: 'transparent',\n width: 'initial $input-width 100%',\n minWidth: '1em',\n '&::placeholder': { recipe: 'input-placeholder' },\n },\n\n Measure: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n whiteSpace: 'pre',\n preset: 'inherit',\n height: 0,\n overflow: 'hidden',\n },\n\n Placeholder: {\n recipe: 'input-placeholder',\n preset: 'inherit',\n },\n },\n});\n\nconst STYLE_PROPS = [...BLOCK_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * Inline editable text. Renders the value as inline content by default and\n * swaps to an auto-sizing text input when entering edit mode.\n *\n * Designed to drop into any text context (tab title, heading, paragraph,\n * table cell) without style customization: typography, color, and font family\n * are all inherited from the parent.\n *\n * Value and `isEditing` can each be controlled or uncontrolled independently.\n * Programmatic entry via the imperative ref (`startEditing`/`stopEditing`)\n * works regardless of `editTrigger`.\n */\nexport const InlineInput = forwardRef<CubeInlineInputRef, CubeInlineInputProps>(\n function InlineInput(allProps, ref) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n isEditing: isEditingProp,\n defaultIsEditing,\n onEditingChange,\n onSubmit,\n onCancel,\n editTrigger = 'dblclick',\n keyboardActivation = true,\n submitOnBlur = true,\n trimOnSubmit = true,\n allowEmpty = false,\n isDisabled = false,\n isReadOnly = false,\n placeholder,\n renderDisplay,\n tooltip = true,\n tooltipPlacement = 'top',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n qa,\n qaVal,\n styles: stylesProp,\n inputStyles,\n mods: customMods,\n tokens: customTokens,\n ...otherProps\n } = allProps;\n\n const isControlled = valueProp !== undefined;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const measureRef = useRef<HTMLSpanElement>(null);\n const rootRef = useRef<HTMLSpanElement>(null);\n\n const [value, setValue] = useControlledState<string>(\n valueProp as string,\n (defaultValue ?? '') as string,\n onChange,\n );\n\n const [isEditing, setIsEditing] = useControlledState<boolean>(\n isEditingProp as boolean,\n (defaultIsEditing ?? false) as boolean,\n onEditingChange,\n );\n\n // Optimistic value. Holds the just-committed value while we wait for the\n // (potentially async) controlled parent to sync `value`. In uncontrolled\n // mode `value` updates immediately so this stays null after each render.\n const [optimisticValue, setOptimisticValue] = useState<string | null>(null);\n const displayedValue = optimisticValue ?? value;\n\n const [draft, setDraft] = useState<string>(value);\n const [inputWidth, setInputWidth] = useState<number | null>(null);\n\n // Token to invalidate in-flight onSubmit promises if a newer commit /\n // re-entry happens before they settle.\n const submitTokenRef = useRef(0);\n\n // Synchronous mirror of `isEditing`. We need this because cancel/commit\n // call user callbacks (`onCancel`/`onSubmit`) that may synchronously\n // re-focus another element — that causes a synchronous blur on the\n // input which would otherwise re-enter `commit` via `onBlurWithin` (the\n // state update from `setIsEditing(false)` isn't committed yet, so the\n // closure still sees `isEditing === true`).\n //\n // The ref is kept in sync via `useLayoutEffect` so concurrent renders\n // that get thrown away don't leak a stale value into the next commit.\n const isEditingRef = useRef(isEditing);\n\n useLayoutEffect(() => {\n isEditingRef.current = isEditing;\n }, [isEditing]);\n\n // Clear the optimistic value once `value` catches up or changes externally.\n useEffect(() => {\n setOptimisticValue(null);\n }, [value]);\n\n const enterEditing = useEvent(() => {\n if (isDisabled || isReadOnly || isEditing) return;\n // Invalidate any in-flight onSubmit promise — its outcome no longer\n // matters because the user is about to commit a new value anyway.\n submitTokenRef.current += 1;\n isEditingRef.current = true;\n // Start from the actual prop value, not optimistic — gives the user a\n // way to recover if a previous commit was rejected by the parent.\n setOptimisticValue(null);\n setDraft(value);\n setIsEditing(true);\n });\n\n const commit = useEvent((rawValue: string) => {\n // Re-entry guard. `onSubmit`/`onCancel` may synchronously refocus and\n // trigger another blur-driven commit before the state update lands.\n if (!isEditingRef.current) return;\n\n const next = trimOnSubmit ? rawValue.trim() : rawValue;\n\n if (!next && !allowEmpty) {\n isEditingRef.current = false;\n setIsEditing(false);\n onCancel?.();\n\n return;\n }\n\n const token = ++submitTokenRef.current;\n\n if (isControlled) {\n // Show the new value optimistically until the parent re-renders.\n setOptimisticValue(next);\n }\n isEditingRef.current = false;\n setValue(next);\n setIsEditing(false);\n\n const result = onSubmit?.(next);\n // If onSubmit returns a Promise that rejects, the parent is signalling\n // a save failure — revert the optimistic value back to the actual prop.\n // We guard with a token so a slow rejection doesn't clobber a newer\n // commit's optimistic display.\n if (\n result != null &&\n typeof (result as Promise<unknown>).then === 'function'\n ) {\n (result as Promise<unknown>).then(\n () => {},\n () => {\n if (submitTokenRef.current === token && isControlled) {\n setOptimisticValue(null);\n }\n },\n );\n }\n });\n\n const cancel = useEvent(() => {\n if (!isEditingRef.current) return;\n isEditingRef.current = false;\n setIsEditing(false);\n onCancel?.();\n });\n\n // Keep draft in sync with the external value while NOT editing.\n useEffect(() => {\n if (!isEditing) setDraft(value);\n }, [value, isEditing]);\n\n // Select all text synchronously when entering edit mode.\n useLayoutEffect(() => {\n if (!isEditing) return;\n inputRef.current?.select();\n }, [isEditing]);\n\n // Measure the draft so the input width follows the typed glyphs.\n useLayoutEffect(() => {\n if (!isEditing) return;\n const measure = measureRef.current;\n\n if (!measure) return;\n setInputWidth(measure.scrollWidth);\n }, [isEditing, draft, placeholder]);\n\n const handleKeyDown = useEvent((e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commit(draft);\n\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n cancel();\n\n return;\n }\n\n // Prevent the host (e.g. Tabs) from intercepting text-editing keys.\n if (\n e.key === 'ArrowLeft' ||\n e.key === 'ArrowRight' ||\n e.key === ' ' ||\n e.key === 'Delete' ||\n e.key === 'Backspace'\n ) {\n e.stopPropagation();\n }\n });\n\n const handleInputChange = useEvent((e: ChangeEvent<HTMLInputElement>) => {\n setDraft(e.target.value);\n });\n\n // Keyboard focus ring on the root. Only fires when the span itself is\n // keyboard-focused (i.e. `wantsKeyboard` made it tabbable) — clicking\n // does not trigger focus-visible, and once edit mode starts focus moves\n // to the inner input, so the ring vanishes naturally.\n const { isFocusVisible, focusProps: focusRingProps } = useFocusRing();\n\n const { focusWithinProps } = useFocusWithin({\n isDisabled: !isEditing,\n onBlurWithin: () => {\n if (!submitOnBlur) return;\n commit(draft);\n },\n });\n\n const handleDblClick = useEvent((e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n enterEditing();\n });\n\n const handleClick = useEvent((e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n enterEditing();\n });\n\n // Keyboard activation from the display element (standalone usage).\n // Hosts that own keyboard handling themselves should pass\n // `keyboardActivation={false}` (see `TabButton` for an example).\n const handleRootKeyDown = useEvent((e: KeyboardEvent<HTMLSpanElement>) => {\n if (e.key === 'Enter' || e.key === 'F2' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n enterEditing();\n }\n });\n\n useImperativeHandle(\n ref,\n () => ({\n startEditing: () => enterEditing(),\n stopEditing: (submit = true) => {\n if (!isEditingRef.current) return;\n if (submit) commit(draft);\n else cancel();\n },\n focus: () => {\n if (isEditingRef.current) inputRef.current?.focus();\n else rootRef.current?.focus();\n },\n getValue: () => displayedValue,\n }),\n [enterEditing, commit, cancel, draft, displayedValue],\n );\n\n const isEditable = editTrigger !== 'none' && !isDisabled && !isReadOnly;\n\n // `focused` is the keyboard-focus ring state. We gate it on `isEditable`\n // and `!isEditing` so the ring never shows on a non-editable display\n // (e.g. inside Tabs with `keyboardActivation={false}` — the span isn't\n // focusable there, but we belt-and-braces it anyway) or while editing\n // (focus is on the inner input).\n const showFocusRing = isFocusVisible && isEditable && !isEditing;\n\n const mods = useMemo(\n () => ({\n editing: isEditing,\n editable: isEditable,\n focused: showFocusRing,\n disabled: isDisabled,\n 'read-only': isReadOnly,\n empty: !displayedValue,\n ...customMods,\n }),\n [\n isEditing,\n isEditable,\n showFocusRing,\n isDisabled,\n isReadOnly,\n displayedValue,\n customMods,\n ],\n );\n\n const mergedStyles = useMemo<Styles | undefined>(() => {\n if (!stylesProp && !inputStyles) return undefined;\n if (!inputStyles) return stylesProp;\n const existingInput =\n (stylesProp?.Input as Styles | undefined) ?? undefined;\n\n return {\n ...stylesProp,\n Input: existingInput\n ? { ...existingInput, ...inputStyles }\n : inputStyles,\n };\n }, [stylesProp, inputStyles]);\n\n const extractedStyles = extractStyles(\n otherProps,\n STYLE_PROPS,\n mergedStyles,\n );\n\n const tokens = useMemo(\n () => ({\n ...customTokens,\n '$input-width': inputWidth != null ? `${inputWidth}px` : 'auto',\n }),\n [customTokens, inputWidth],\n );\n\n // In display mode, render the placeholder when the value is empty so the\n // component remains visible / clickable. Consumers using `renderDisplay`\n // take full control and are responsible for handling empty values\n // themselves.\n const displayContent = renderDisplay\n ? renderDisplay(displayedValue)\n : displayedValue ||\n (placeholder ? (\n <span data-element=\"Placeholder\">{placeholder}</span>\n ) : (\n ''\n ));\n\n const baseProps = filterBaseProps(otherProps, { eventProps: true });\n\n // Overflow detection / auto-tooltip. Suppressed while editing (the input\n // owns the visible text and isn't truncated), and when the consumer\n // provides `renderDisplay` (they own the display story and should attach\n // their own tooltip if needed).\n const { labelRef: tooltipLabelRef, renderWithTooltip } = useAutoTooltip({\n tooltip: isEditing || renderDisplay ? false : tooltip,\n children: displayedValue,\n });\n\n // Wire pointer/keyboard activators only when relevant. Hosts that drive\n // editing through `ref.startEditing()` keep all of these `undefined` so\n // they don't intercept their own keyboard / focus story.\n const wantsClick = !isEditing && isEditable && editTrigger === 'click';\n const wantsDblClick =\n !isEditing && isEditable && editTrigger === 'dblclick';\n const wantsKeyboard = !isEditing && isEditable && keyboardActivation;\n\n const renderRoot = (\n triggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n const handleRootRef = (element: HTMLSpanElement | null) => {\n rootRef.current = element;\n if (tooltipRef) {\n (tooltipRef as { current: HTMLElement | null }).current = element;\n }\n };\n\n // Overflow detection has to look at the truncating element, which is now\n // the inner `Display` (the root is `inline-flex` and doesn't clip). The\n // tooltip still anchors to the root via `tooltipRef` above.\n const handleDisplayRef = (element: HTMLSpanElement | null) => {\n tooltipLabelRef(element);\n };\n\n const a11yProps: HTMLAttributes<HTMLElement> = {};\n\n if (wantsKeyboard) {\n a11yProps.tabIndex = 0;\n a11yProps.role = 'button';\n a11yProps['aria-roledescription'] = 'editable text';\n if (ariaLabel) a11yProps['aria-label'] = ariaLabel;\n if (ariaLabelledby) a11yProps['aria-labelledby'] = ariaLabelledby;\n }\n\n if (isDisabled) a11yProps['aria-disabled'] = true;\n if (isReadOnly) a11yProps['aria-readonly'] = true;\n\n return (\n <InlineInputRoot\n ref={handleRootRef}\n qa={qa ?? 'InlineInput'}\n qaVal={qaVal}\n mods={mods}\n tokens={tokens}\n styles={extractedStyles}\n {...mergeProps(\n baseProps,\n focusWithinProps,\n // Always attach focusRingProps so the hook sees the blur event\n // when focus moves into the inner input on edit-mode entry. If\n // we only attached them while `wantsKeyboard` is true, the hook\n // would miss the blur (since `wantsKeyboard` flips to false the\n // moment editing starts), leaving `isFocused` stale and the\n // ring stuck on after editing ends. `useFocusRing` filters\n // bubbled focus from descendants internally (`target ===\n // currentTarget`), so spreading these on a non-focusable span\n // is a no-op.\n focusRingProps,\n triggerProps ?? {},\n {\n onDoubleClick: wantsDblClick ? handleDblClick : undefined,\n onClick: wantsClick ? handleClick : undefined,\n onKeyDown: wantsKeyboard ? handleRootKeyDown : undefined,\n ...a11yProps,\n },\n )}\n >\n {isEditing ? (\n <FocusScope autoFocus restoreFocus={false} contain={false}>\n <span ref={measureRef} data-element=\"Measure\" aria-hidden=\"true\">\n {draft || placeholder || ' '}\n </span>\n <input\n ref={inputRef}\n data-element=\"Input\"\n type=\"text\"\n value={draft}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={isReadOnly}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </FocusScope>\n ) : (\n <span ref={handleDisplayRef} data-element=\"Display\">\n {displayContent}\n </span>\n )}\n </InlineInputRoot>\n );\n };\n\n return renderWithTooltip(renderRoot, tooltipPlacement);\n },\n);\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { resolveIcon } from "../../../utils/react/resolveIcon.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { DANGER_CLEAR_STYLES, DANGER_NEUTRAL_STYLES, DANGER_PRIMARY_STYLES, DANGER_SECONDARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_NEUTRAL_STYLES, DEFAULT_PRIMARY_STYLES, DEFAULT_SECONDARY_STYLES, ITEM_ACTION_BASE_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_NEUTRAL_STYLES, SPECIAL_PRIMARY_STYLES, SPECIAL_SECONDARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_NEUTRAL_STYLES, SUCCESS_PRIMARY_STYLES, SUCCESS_SECONDARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { _Item } from "../Item/Item.js";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _Layout } from "./Layout.js";
3
3
  import { _LayoutContent } from "./LayoutContent.js";
4
4
  import { _LayoutBlock } from "./LayoutBlock.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Alert } from "../Alert/Alert.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContainer } from "./LayoutContainer.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { createContext, useContext, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { useAutoTooltip } from "../use-auto-tooltip.js";
3
3
  import { SlashIcon } from "../../../icons/SlashIcon.js";
4
4
  import { Button } from "../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
4
4
  import { _Item } from "../Item/Item.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { useCallback, useEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/content/Layout/hooks/useTinyScrollbar.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { LayoutActionsContext, LayoutContextReset, LayoutPanelContext, LayoutRefsContext, LayoutStateContext, useLayoutActionsContext, useLayoutPanelContext, useLayoutRefsContext, useLayoutStateContext } from "./LayoutContext.js";
3
3
  import { _Layout } from "./Layout.js";
4
4
  import { _LayoutContent } from "./LayoutContent.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  //#region src/components/content/Layout/utils.ts
3
3
  /**
4
4
  * Clamps a size value within min/max constraints.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { _Text } from "./Text.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, keyframes, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { RendererPrism, ensureYamlSqlExtensions } from "./prismSetup.js";
3
3
  import { CONTAINER_STYLES, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { Prism as RendererPrism } from "prism-react-renderer";
3
3
 
4
4
  //#region src/components/content/PrismCode/prismSetup.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _PrismCode } from "../PrismCode/PrismCode.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { diffLines } from "diff";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { Space } from "../../layout/Space.js";
3
3
  import { Grid } from "../../layout/Grid.js";
4
4
  import { Flow } from "../../layout/Flow.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { CloseIcon } from "../../../icons/CloseIcon.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { BASE_STYLES, COLOR_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { TEXT_PROP_MAP, _Text } from "../Text.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { TEXT_PROP_MAP } from "./Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";