@persona/design-system 0.10.6 → 0.10.7

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 (472) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/Accordion.d.mts +1 -1
  3. package/dist/AccordionItem.d.mts +1 -1
  4. package/dist/{Action-Bmo8B-Q3.d.mts → Action-BLMJwLBV.d.mts} +3 -3
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  7. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  8. package/dist/ArrayValueControl.d.mts +1 -1
  9. package/dist/Attribute.d.mts +3 -3
  10. package/dist/BooleanValueControl.d.mts +1 -1
  11. package/dist/BottomPanel.d.mts +7 -0
  12. package/dist/{Breadcrumb-DnY8n3EL.d.mts → Breadcrumb-chGXhl3V.d.mts} +1 -1
  13. package/dist/Breadcrumb.d.mts +1 -1
  14. package/dist/{Breadcrumbs-DRu_JfdI.d.mts → Breadcrumbs-ChKWIuRq.d.mts} +2 -2
  15. package/dist/Breadcrumbs.d.mts +1 -1
  16. package/dist/{Button-Cg8KyT5M.d.mts → Button-B79_aXfC.d.mts} +4 -4
  17. package/dist/Button.d.mts +1 -1
  18. package/dist/{Calendar-D-6WOLJ1.d.mts → Calendar-50D7poM_.d.mts} +1 -1
  19. package/dist/Calendar.d.mts +1 -1
  20. package/dist/CalendarBase.d.mts +1 -1
  21. package/dist/CalendarCell.d.mts +1 -1
  22. package/dist/CalendarGrid.d.mts +1 -1
  23. package/dist/{Card-CfECLwQ6.d.mts → Card-DOIqF954.d.mts} +3 -3
  24. package/dist/Card.d.mts +1 -1
  25. package/dist/CardGrouping.d.mts +2 -2
  26. package/dist/{Checkbox-ZywrdT_h.d.mts → Checkbox-EgYclGfH.d.mts} +1 -1
  27. package/dist/Checkbox.d.mts +1 -1
  28. package/dist/{CheckboxGroupField-CjeEoiPa.d.mts → CheckboxGroupField-Cw-1UxIW.d.mts} +3 -3
  29. package/dist/CheckboxGroupField.d.mts +1 -1
  30. package/dist/ChoicesValueControl.d.mts +1 -1
  31. package/dist/{Combobox-O6LbofT2.d.mts → Combobox-BkDYZlUh.d.mts} +3 -3
  32. package/dist/Combobox.d.mts +2 -2
  33. package/dist/{ComboboxBase-5aSDuY-E.d.mts → ComboboxBase-1Xy4pnRV.d.mts} +6 -6
  34. package/dist/ComboboxBase.d.mts +1 -1
  35. package/dist/{ComboboxMultiSelect-D3mX4Dzq.d.mts → ComboboxMultiSelect-DHf7NK7Z.d.mts} +2 -2
  36. package/dist/ComboboxMultiSelect.d.mts +1 -1
  37. package/dist/{ComboboxSingleSelect-CfSy6sCU.d.mts → ComboboxSingleSelect-Ble5PcXQ.d.mts} +4 -4
  38. package/dist/ComboboxSingleSelect.d.mts +1 -1
  39. package/dist/{CompactBar-zYfXjFmn.d.mts → CompactBar-DmoFq5i6.d.mts} +3 -3
  40. package/dist/CompactBar.d.mts +1 -1
  41. package/dist/{ControlBar-kJ_eWf8f.d.mts → ControlBar-dqzVo6e6.d.mts} +2 -2
  42. package/dist/ControlBar.d.mts +1 -1
  43. package/dist/{DataTable-CAfZNJmb.mjs → DataTable-B7QqP6YU.mjs} +4 -4
  44. package/dist/{DataTable-CAfZNJmb.mjs.map → DataTable-B7QqP6YU.mjs.map} +1 -1
  45. package/dist/{DataTable-BXHmi-SW.d.mts → DataTable-Cblw6bLk.d.mts} +6 -6
  46. package/dist/DataTable.d.mts +1 -1
  47. package/dist/{DateField-g7malFm-.d.mts → DateField-CbTxDzYF.d.mts} +2 -2
  48. package/dist/DateField.d.mts +1 -1
  49. package/dist/{DatePicker-8kUpFFh8.d.mts → DatePicker-1BADH9Pi.d.mts} +2 -2
  50. package/dist/{DatePicker-D-_ibUd1.mjs → DatePicker-CHaNe2Es.mjs} +2 -2
  51. package/dist/{DatePicker-D-_ibUd1.mjs.map → DatePicker-CHaNe2Es.mjs.map} +1 -1
  52. package/dist/DatePicker.d.mts +1 -1
  53. package/dist/{DateRangePicker-Nv4uNuIW.d.mts → DateRangePicker-fq-_pFpg.d.mts} +3 -3
  54. package/dist/DateRangePicker.d.mts +1 -1
  55. package/dist/DateRangeValueControl.d.mts +2 -2
  56. package/dist/DateValueControl.d.mts +1 -1
  57. package/dist/DropdownButton.d.mts +2 -2
  58. package/dist/{DropdownMenu-CAYVX9Q3.d.mts → DropdownMenu-DjdNBJqP.d.mts} +2 -2
  59. package/dist/DropdownMenu.d.mts +1 -1
  60. package/dist/{ErrorProps-Cy-APmdC.d.mts → ErrorProps-D4G9EWX2.d.mts} +1 -1
  61. package/dist/ErrorProps.d.mts +1 -1
  62. package/dist/{FieldRegistry-a44G08fS.d.mts → FieldRegistry-CPr7YoG5.d.mts} +2 -2
  63. package/dist/FieldRegistry.d.mts +1 -1
  64. package/dist/{FilterBar-BpMguIXl.d.mts → FilterBar-DPCPfr4_.d.mts} +4 -4
  65. package/dist/FilterBar.d.mts +1 -1
  66. package/dist/FilterPickerMenu.d.mts +2 -2
  67. package/dist/FilterPill.d.mts +1 -1
  68. package/dist/FilterPopover.d.mts +1 -1
  69. package/dist/FloatValueControl.d.mts +1 -1
  70. package/dist/{FloatingActionBar-DPA9v_yH.d.mts → FloatingActionBar-u3TJcigs.d.mts} +1 -1
  71. package/dist/FloatingActionBar.d.mts +1 -1
  72. package/dist/FloatingToolbar-Df90f7Dm.mjs +493 -0
  73. package/dist/FloatingToolbar-Df90f7Dm.mjs.map +1 -0
  74. package/dist/FloatingToolbar.d.mts +1 -1
  75. package/dist/{FormControl-TkYMZeBd.d.mts → FormControl-D8vpeAPI.d.mts} +2 -2
  76. package/dist/FormControl.d.mts +1 -1
  77. package/dist/FormControlLabel.d.mts +1 -1
  78. package/dist/{FormField-D10LW9-a.d.mts → FormField-C6vp1Vfe.d.mts} +2 -2
  79. package/dist/FormField.d.mts +1 -1
  80. package/dist/{Grid-BtTuj5mR.mjs → Grid-CYpOqTUu.mjs} +1 -1
  81. package/dist/{Grid-BtTuj5mR.mjs.map → Grid-CYpOqTUu.mjs.map} +1 -1
  82. package/dist/{Header-fwlbzxYx.d.mts → Header-C9oYPBLv.d.mts} +1 -1
  83. package/dist/Header.d.mts +1 -1
  84. package/dist/{HelperTooltip-BLfPfJRN.d.mts → HelperTooltip-jHTdkLQq.d.mts} +2 -2
  85. package/dist/HelperTooltip.d.mts +1 -1
  86. package/dist/HighlightedText.d.mts +2 -2
  87. package/dist/{I18nContext-BBVKF9ui.d.mts → I18nContext-DzV-RDIh.d.mts} +2 -2
  88. package/dist/I18nContext.d.mts +1 -1
  89. package/dist/{IconButton-KhCwTwPx.d.mts → IconButton-CaEvsrOn.d.mts} +2 -2
  90. package/dist/IconButton.d.mts +1 -1
  91. package/dist/ImageTile.d.mts +1 -1
  92. package/dist/IndexTableLayout.d.mts +5 -5
  93. package/dist/InlineCombobox.d.mts +1 -1
  94. package/dist/InlineInput.d.mts +1 -1
  95. package/dist/{Input-QNjbGo38.d.mts → Input-DQ2J9wlC.d.mts} +3 -3
  96. package/dist/Input.d.mts +1 -1
  97. package/dist/{InputProps-BT7-RfnD.d.mts → InputProps-DrG94eFF.d.mts} +2 -2
  98. package/dist/InputProps.d.mts +1 -1
  99. package/dist/{Inserter-BnQVEqHV.d.mts → Inserter-CZeKlPqj.d.mts} +1 -1
  100. package/dist/Inserter.d.mts +1 -1
  101. package/dist/IntegerValueControl.d.mts +1 -1
  102. package/dist/Link.d.mts +1 -1
  103. package/dist/{ListBox-CvnFiHK5.d.mts → ListBox-DxbXE_EE.d.mts} +3 -3
  104. package/dist/ListBox.d.mts +1 -1
  105. package/dist/{ListBoxField-DuUwx9Cv.d.mts → ListBoxField-DVLggscv.d.mts} +4 -4
  106. package/dist/ListBoxField.d.mts +1 -1
  107. package/dist/LoadingShimmer.d.mts +1 -1
  108. package/dist/{LogicRow-COvZNiUd.d.mts → LogicRow-DG06PsUe.d.mts} +3 -3
  109. package/dist/LogicRow.d.mts +1 -1
  110. package/dist/MaskedInput.d.mts +1 -1
  111. package/dist/{Menu-ByYFNvgS.d.mts → Menu-Bq6Lij2L.d.mts} +3 -3
  112. package/dist/Menu.d.mts +1 -1
  113. package/dist/{Modal-ziuzDCPN.mjs → Modal-BBlilB-B.mjs} +2 -2
  114. package/dist/{Modal-ziuzDCPN.mjs.map → Modal-BBlilB-B.mjs.map} +1 -1
  115. package/dist/{Modal-Bhwq1bQJ.d.mts → Modal-kEgKwLg4.d.mts} +2 -2
  116. package/dist/Modal.d.mts +1 -1
  117. package/dist/{PageHeader-D2QLrS7-.d.mts → PageHeader-BGGhOS81.d.mts} +2 -2
  118. package/dist/{PageHeader-BzvA_NNt.mjs → PageHeader-DEKTopzU.mjs} +1 -1
  119. package/dist/{PageHeader-BzvA_NNt.mjs.map → PageHeader-DEKTopzU.mjs.map} +1 -1
  120. package/dist/PageHeader.d.mts +1 -1
  121. package/dist/{PageLayout-DfAbeFIh.d.mts → PageLayout-B_LKPZD8.d.mts} +1 -1
  122. package/dist/{PageLayout-DCe3F76N.mjs → PageLayout-DjtGrvJa.mjs} +2 -2
  123. package/dist/{PageLayout-DCe3F76N.mjs.map → PageLayout-DjtGrvJa.mjs.map} +1 -1
  124. package/dist/PageLayout.d.mts +1 -1
  125. package/dist/{PageLayoutFrame-CQLREOBH.d.mts → PageLayoutFrame-uf17F41p.d.mts} +1 -1
  126. package/dist/PageLayoutFrame.d.mts +1 -1
  127. package/dist/{PageSelector-BOe4EzbS.d.mts → PageSelector-CLeG2gFh.d.mts} +3 -3
  128. package/dist/PageSelector.d.mts +1 -1
  129. package/dist/{Pagination-Dpc6TadZ.mjs → Pagination-C8hPOu0l.mjs} +2 -2
  130. package/dist/{Pagination-Dpc6TadZ.mjs.map → Pagination-C8hPOu0l.mjs.map} +1 -1
  131. package/dist/{Pagination-Dy-OSH0Y.d.mts → Pagination-y3kn2X_A.d.mts} +2 -2
  132. package/dist/Pagination.d.mts +1 -1
  133. package/dist/{PillShell-B35z66jZ.d.mts → PillShell-Clv4b-2w.d.mts} +2 -2
  134. package/dist/PillShell.d.mts +1 -1
  135. package/dist/{ProgressIndicator-COCwRZfK.d.mts → ProgressIndicator-tVvf0cY5.d.mts} +1 -1
  136. package/dist/{ProgressIndicator-ISARECzW.mjs → ProgressIndicator-zt3ndT9U.mjs} +1 -1
  137. package/dist/{ProgressIndicator-ISARECzW.mjs.map → ProgressIndicator-zt3ndT9U.mjs.map} +1 -1
  138. package/dist/ProgressIndicator.d.mts +1 -1
  139. package/dist/{PseudoClassProps-D_f-JUT1.d.mts → PseudoClassProps-D-sdJdnG.d.mts} +1 -1
  140. package/dist/PseudoClassProps.d.mts +1 -1
  141. package/dist/{RadioGroup-pyGpWhhj.d.mts → RadioGroup-9AnTQbh9.d.mts} +1 -1
  142. package/dist/RadioGroup.d.mts +1 -1
  143. package/dist/{RangeCalendar-BiugsdSP.d.mts → RangeCalendar-D86xh2yV.d.mts} +2 -2
  144. package/dist/RangeCalendar.d.mts +1 -1
  145. package/dist/RangeCalendarPresets.d.mts +2 -2
  146. package/dist/{RouterContext-BUdfr1it.d.mts → RouterContext-Bgg29ZJo.d.mts} +2 -2
  147. package/dist/RouterContext.d.mts +1 -1
  148. package/dist/{RouterLink-BKbfvJcM.d.mts → RouterLink-CMCsV5H-.d.mts} +2 -2
  149. package/dist/RouterLink.d.mts +1 -1
  150. package/dist/RuleEditorFields.d.mts +2 -2
  151. package/dist/RulesPill.d.mts +1 -1
  152. package/dist/{SearchInput-BejaiGsS.d.mts → SearchInput-NlIspWun.d.mts} +2 -2
  153. package/dist/SearchInput.d.mts +1 -1
  154. package/dist/SectionHeading.d.mts +1 -1
  155. package/dist/{SegmentedControl-UV03Ujqn.d.mts → SegmentedControl-C4C5ge4p.d.mts} +1 -1
  156. package/dist/SegmentedControl.d.mts +1 -1
  157. package/dist/{Select-BLqHxJUz.d.mts → Select-By_LoM1n.d.mts} +3 -3
  158. package/dist/Select.d.mts +1 -1
  159. package/dist/{SingleColumnLayout-DBo35psH.d.mts → SingleColumnLayout-C4qrVyMf.d.mts} +2 -2
  160. package/dist/SingleColumnLayout.d.mts +1 -1
  161. package/dist/SmartTextInput.d.mts +6 -6
  162. package/dist/SmartTextInputField.d.mts +2 -2
  163. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  164. package/dist/SmartTextInputListbox.d.mts +2 -2
  165. package/dist/SmartTextInputPopover.d.mts +1 -1
  166. package/dist/{SplitColumnLayout-C6m_mwdf.d.mts → SplitColumnLayout-BXT7AeNx.d.mts} +2 -2
  167. package/dist/SplitColumnLayout.d.mts +1 -1
  168. package/dist/{Stack-DrYxBkiF.d.mts → Stack-BqRcxDQM.d.mts} +1 -1
  169. package/dist/Stack.d.mts +1 -1
  170. package/dist/{StatusIndicator-pWl1-FLb.mjs → StatusIndicator-Zf75KK3O.mjs} +1 -1
  171. package/dist/{StatusIndicator-pWl1-FLb.mjs.map → StatusIndicator-Zf75KK3O.mjs.map} +1 -1
  172. package/dist/{Sticker-sIBnBbHD.d.mts → Sticker-C2zp47FB.d.mts} +4 -4
  173. package/dist/Sticker.d.mts +1 -1
  174. package/dist/StringValueControl.d.mts +1 -1
  175. package/dist/Tab.d.mts +1 -1
  176. package/dist/{Table-BJfcRpMX.d.mts → Table-DGl3mDwc.d.mts} +1 -1
  177. package/dist/Table.d.mts +1 -1
  178. package/dist/{TableBody-CBz2PjA-.d.mts → TableBody-BbC-H2qj.d.mts} +1 -1
  179. package/dist/TableBody.d.mts +1 -1
  180. package/dist/TableBox.d.mts +2 -2
  181. package/dist/{TableBoxCell-DPXrw63v.d.mts → TableBoxCell-DuvWTwOm.d.mts} +6 -6
  182. package/dist/TableBoxCell.d.mts +1 -1
  183. package/dist/{TableBoxField-C7MGSie9.d.mts → TableBoxField-DRx24VAz.d.mts} +5 -5
  184. package/dist/TableBoxField.d.mts +1 -1
  185. package/dist/{TableBoxRow-uToXVWvl.d.mts → TableBoxRow-DFPTf-bZ.d.mts} +3 -3
  186. package/dist/TableBoxRow.d.mts +1 -1
  187. package/dist/{TableBoxRowActions-Do646IVE.d.mts → TableBoxRowActions-CFCnGc7D.d.mts} +2 -2
  188. package/dist/TableBoxRowActions.d.mts +1 -1
  189. package/dist/{TableCell-KHx5JlqZ.d.mts → TableCell-Do9W49SJ.d.mts} +2 -2
  190. package/dist/TableCell.d.mts +1 -1
  191. package/dist/{TableControls-C-0Dw8vM.mjs → TableControls-Dgle87OP.mjs} +4 -4
  192. package/dist/{TableControls-C-0Dw8vM.mjs.map → TableControls-Dgle87OP.mjs.map} +1 -1
  193. package/dist/{TableControls-BHv-tXA-.d.mts → TableControls-r58fZb_C.d.mts} +5 -5
  194. package/dist/TableControls.d.mts +1 -1
  195. package/dist/{TableControlsContext-D6rifk-v.d.mts → TableControlsContext-nz8GXmXc.d.mts} +2 -2
  196. package/dist/TableControlsContext.d.mts +1 -1
  197. package/dist/{TableHead-D5A3bOwt.d.mts → TableHead-CIXIrZGE.d.mts} +1 -1
  198. package/dist/TableHead.d.mts +1 -1
  199. package/dist/{TableHeaderCell-BXgnxPpX.d.mts → TableHeaderCell-wKcp8rZj.d.mts} +1 -1
  200. package/dist/TableHeaderCell.d.mts +1 -1
  201. package/dist/{TableLayout-Dy5ht8KO.d.mts → TableLayout-0-9FnNvt.d.mts} +1 -1
  202. package/dist/TableLayout.d.mts +1 -1
  203. package/dist/{TableRow-C1iGbNjZ.d.mts → TableRow-C011thJ3.d.mts} +2 -2
  204. package/dist/TableRow.d.mts +1 -1
  205. package/dist/TableTH.d.mts +1 -1
  206. package/dist/{TableViewConfigurationDropdown-C5bjxTGX.d.mts → TableViewConfigurationDropdown-D0VcRmd4.d.mts} +2 -2
  207. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  208. package/dist/{Text-SaoRBdB6.d.mts → Text-BgSW0yDb.d.mts} +3 -3
  209. package/dist/Text.d.mts +1 -1
  210. package/dist/{TextArea-gtSlghjy.d.mts → TextArea-CyWv8jaV.d.mts} +2 -2
  211. package/dist/TextArea.d.mts +1 -1
  212. package/dist/{TextUnderlineTooltip-DV61avLv.d.mts → TextUnderlineTooltip-CcyG4VkJ.d.mts} +2 -2
  213. package/dist/TextUnderlineTooltip.d.mts +1 -1
  214. package/dist/Tile.d.mts +1 -1
  215. package/dist/Toast.d.mts +1 -1
  216. package/dist/{Toggle-BlvrM-Cw.d.mts → Toggle-BIJoB1AA.d.mts} +1 -1
  217. package/dist/Toggle.d.mts +1 -1
  218. package/dist/{Tooltip-CysnLwST.d.mts → Tooltip-CrpfAAfA.d.mts} +2 -2
  219. package/dist/Tooltip.d.mts +1 -1
  220. package/dist/{TruncatedText-YcjNG-zP.d.mts → TruncatedText-DaGx3CX6.d.mts} +1 -1
  221. package/dist/VersionHistory.d.mts +1 -1
  222. package/dist/{VersionHistoryItem-Px3ylMMq.d.mts → VersionHistoryItem-Bo78T7y7.d.mts} +1 -1
  223. package/dist/VersionHistoryItem.d.mts +1 -1
  224. package/dist/WizardModal.d.mts +2 -2
  225. package/dist/{accordionTitleTypography-Dlo2YyWd.d.mts → accordionTitleTypography-D7tOgRzj.d.mts} +2 -2
  226. package/dist/accordionTitleTypography.d.mts +1 -1
  227. package/dist/{chainTypes-aF5rWav-.d.mts → chainTypes-CLKwXymd.d.mts} +4 -4
  228. package/dist/{clientFilterUtils-DDDG1g7e.d.mts → clientFilterUtils-BnASP9Tt.d.mts} +2 -2
  229. package/dist/clientFilterUtils.d.mts +1 -1
  230. package/dist/{codec-D8ZKFLgs.d.mts → codec-C4WJftW6.d.mts} +2 -2
  231. package/dist/codec.d.mts +1 -1
  232. package/dist/{color-Cy_0z4IY.d.mts → color-Db57Wms_.d.mts} +2 -2
  233. package/dist/complete-typography.d.mts +1 -1
  234. package/dist/components/Accordion/index.d.mts +1 -1
  235. package/dist/components/BottomPanel/index.mjs +67 -6
  236. package/dist/components/BottomPanel/index.mjs.map +1 -1
  237. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  238. package/dist/components/Button/index.d.mts +2 -2
  239. package/dist/components/Card/index.d.mts +2 -2
  240. package/dist/components/CardV2/index.d.mts +1 -1
  241. package/dist/components/Checkbox/index.d.mts +1 -1
  242. package/dist/components/Combobox/index.d.mts +2 -2
  243. package/dist/components/DataTable/TableControls/index.d.mts +21 -21
  244. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  245. package/dist/components/DataTable/index.d.mts +8 -8
  246. package/dist/components/DataTable/index.mjs +1 -1
  247. package/dist/components/DataTable/types.d.mts +1 -1
  248. package/dist/components/DatePicker/index.d.mts +5 -5
  249. package/dist/components/DatePicker/index.mjs +1 -1
  250. package/dist/components/DropdownMenu/index.d.mts +1 -1
  251. package/dist/components/FloatingToolbar/index.d.mts +2 -0
  252. package/dist/components/FloatingToolbar/index.mjs +2 -0
  253. package/dist/components/FormControl/index.d.mts +2 -2
  254. package/dist/components/FormField/index.d.mts +5 -5
  255. package/dist/components/Grid/index.mjs +1 -1
  256. package/dist/components/Input/index.d.mts +1 -1
  257. package/dist/components/ListBox/index.d.mts +3 -3
  258. package/dist/components/Menu/index.d.mts +1 -1
  259. package/dist/components/Modal/index.d.mts +1 -1
  260. package/dist/components/Modal/index.mjs +1 -1
  261. package/dist/components/PageHeader/index.d.mts +1 -1
  262. package/dist/components/PageHeader/index.mjs +1 -1
  263. package/dist/components/Pagination/index.d.mts +3 -3
  264. package/dist/components/Pagination/index.mjs +1 -1
  265. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  266. package/dist/components/ProgressIndicator/index.mjs +1 -1
  267. package/dist/components/RadioGroup/index.d.mts +1 -1
  268. package/dist/components/RichTextEditor/index.d.mts +1 -2
  269. package/dist/components/RichTextEditor/index.mjs +21 -476
  270. package/dist/components/RichTextEditor/index.mjs.map +1 -1
  271. package/dist/components/SegmentedControl/index.d.mts +1 -1
  272. package/dist/components/Select/index.d.mts +1 -1
  273. package/dist/components/SmartTextInput/index.d.mts +2 -2
  274. package/dist/components/SmartTextInput/index.mjs +1 -1
  275. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  276. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  277. package/dist/components/Stack/index.d.mts +1 -1
  278. package/dist/components/StatusIndicator/index.mjs +1 -1
  279. package/dist/components/Sticker/index.d.mts +1 -1
  280. package/dist/components/Table/index.d.mts +8 -8
  281. package/dist/components/TableBox/index.d.mts +2 -2
  282. package/dist/components/Text/index.d.mts +1 -1
  283. package/dist/components/TextArea/index.d.mts +1 -1
  284. package/dist/components/Toggle/index.d.mts +1 -1
  285. package/dist/components/Tooltip/index.d.mts +3 -3
  286. package/dist/components/VersionHistory/index.d.mts +1 -1
  287. package/dist/components/VersionHistory/index.mjs +2 -2
  288. package/dist/compound-expression.d.mts +1 -1
  289. package/dist/{constants-CW1DRgwi.d.mts → constants-B2NIZBD6.d.mts} +1 -1
  290. package/dist/{constants-D1hoZ5LO.d.mts → constants-ChVceduh.d.mts} +1 -1
  291. package/dist/constants.d.mts +1 -1
  292. package/dist/constants2.d.mts +1 -1
  293. package/dist/{createPath-C4ZFkt93.d.mts → createPath-D_opTH9A.d.mts} +2 -2
  294. package/dist/createPath.d.mts +1 -1
  295. package/dist/{date-range-rule-value-CrVBpQcf.d.mts → date-range-rule-value-3izEoXmi.d.mts} +2 -2
  296. package/dist/date-range-rule-value.d.mts +1 -1
  297. package/dist/{date-rule-intent-C1aptAoX.d.mts → date-rule-intent-DjYIGcGO.d.mts} +3 -3
  298. package/dist/date-rule-intent.d.mts +1 -1
  299. package/dist/display.d.mts +2 -2
  300. package/dist/fieldPickerOptions.d.mts +2 -2
  301. package/dist/{filter-size-context-CbT4pi3S.d.mts → filter-size-context-BcpjykVw.d.mts} +2 -2
  302. package/dist/filter-size-context.d.mts +1 -1
  303. package/dist/{filters-CkAFU8LV.d.mts → filters-DUI7TLSn.d.mts} +2 -2
  304. package/dist/filters.d.mts +1 -1
  305. package/dist/{formatDateTime-BikGGrvq.d.mts → formatDateTime-CgQvW3A5.d.mts} +1 -1
  306. package/dist/formatDateTime.d.mts +1 -1
  307. package/dist/{helpers-Dvvcz-hL.d.mts → helpers-CDZ7Zk9G.d.mts} +4 -4
  308. package/dist/helpers.d.mts +1 -1
  309. package/dist/{i18n-CKRi992F.mjs → i18n-DaOKaFc2.mjs} +3 -2
  310. package/dist/i18n-DaOKaFc2.mjs.map +1 -0
  311. package/dist/{index-BWAycP6L.d.mts → index-B9kfFACl.d.mts} +1 -1
  312. package/dist/{index-B3A74_ew.d.mts → index-CDFw-zKW.d.mts} +3 -3
  313. package/dist/{index-D2YFHdsf.d.mts → index-DntqThoS.d.mts} +2 -2
  314. package/dist/{index-FgIOTuJ4.d.mts → index-_D_TMpPU.d.mts} +2 -2
  315. package/dist/index2.d.mts +1 -1
  316. package/dist/index3.d.mts +1 -1
  317. package/dist/index4.d.mts +3 -3
  318. package/dist/index5.d.mts +1 -1
  319. package/dist/index6.d.mts +14 -14
  320. package/dist/{input-gtTnb9M8.d.mts → input-RTMLTvG1.d.mts} +3 -3
  321. package/dist/{inputFields-Dfpxi68z.d.mts → inputFields-iRg_emVK.d.mts} +11 -11
  322. package/dist/inputFields.d.mts +1 -1
  323. package/dist/{jsonSchema-DUkfAip_.d.mts → jsonSchema-BJpNaFc4.d.mts} +1 -1
  324. package/dist/lib/PDSProvider.d.mts +3 -3
  325. package/dist/lib/PDSProvider.mjs +1 -1
  326. package/dist/lib/TruncatedText.d.mts +1 -1
  327. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  328. package/dist/lib/chainTypes.d.mts +1 -1
  329. package/dist/lib/color.d.mts +1 -1
  330. package/dist/lib/colorMode.d.mts +2 -2
  331. package/dist/lib/customFunctionSchema.d.mts +1 -1
  332. package/dist/lib/date-filter/index.d.mts +2 -2
  333. package/dist/lib/i18n/index.d.mts +3 -3
  334. package/dist/lib/i18n/index.mjs +1 -1
  335. package/dist/lib/jsonSchema.d.mts +1 -1
  336. package/dist/lib/jsonSchemaType.d.mts +1 -1
  337. package/dist/lib/message.d.mts +1 -1
  338. package/dist/lib/methodChain.d.mts +2 -2
  339. package/dist/lib/methodChainNormalize.d.mts +2 -2
  340. package/dist/lib/methodChainTypes.d.mts +1 -1
  341. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  342. package/dist/lib/platformObject.d.mts +1 -1
  343. package/dist/lib/pseudoClass.d.mts +1 -1
  344. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  345. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  346. package/dist/lib/router/index.d.mts +5 -5
  347. package/dist/lib/schemaOptions.d.mts +1 -1
  348. package/dist/lib/semanticColor.d.mts +1 -1
  349. package/dist/lib/useChain.d.mts +1 -1
  350. package/dist/lint/index.d.mts +1 -1
  351. package/dist/{listbox-options-CkwENvff.d.mts → listbox-options-D0JmYWjB.d.mts} +3 -3
  352. package/dist/listbox-options.d.mts +1 -1
  353. package/dist/{message-klSuXfNN.d.mts → message-Bk5UTw75.d.mts} +1 -1
  354. package/dist/{methodChain-CRYRDa1k.d.mts → methodChain-C3u60_V8.d.mts} +4 -4
  355. package/dist/{methodChainTypes-BtbYWrdP.d.mts → methodChainTypes-Di4GCMX7.d.mts} +2 -2
  356. package/dist/min-copy-size.d.mts +1 -1
  357. package/dist/mixins/focus.d.mts +1 -1
  358. package/dist/mixins/hoverable.d.mts +2 -2
  359. package/dist/mixins/input.d.mts +1 -1
  360. package/dist/mixins/menuItem.d.mts +2 -2
  361. package/dist/mixins/scrollbar.d.mts +1 -1
  362. package/dist/mixins/text.d.mts +1 -1
  363. package/dist/no-raw-table.d.mts +1 -1
  364. package/dist/{operators-BrrJKENE.d.mts → operators-BTCnQpeu.d.mts} +3 -3
  365. package/dist/operators.d.mts +1 -1
  366. package/dist/{palette-C1gBbxLO.d.mts → palette-D61sDyDI.d.mts} +3 -3
  367. package/dist/palette.d.mts +1 -1
  368. package/dist/patterns/CardGrouping/index.mjs +1 -1
  369. package/dist/patterns/IndexTableLayout/index.mjs +3 -3
  370. package/dist/patterns/LayoutLoadingShimmer/index.mjs +1 -1
  371. package/dist/patterns/PageLayout/index.d.mts +4 -4
  372. package/dist/patterns/PageLayout/index.mjs +1 -1
  373. package/dist/patterns/WizardModal/index.mjs +2 -2
  374. package/dist/reactRouterFallback.d.mts +1 -1
  375. package/dist/reduced-motion.d.mts +1 -1
  376. package/dist/relative-date-label.d.mts +1 -1
  377. package/dist/safe-parse.d.mts +1 -1
  378. package/dist/{schemaOptions-C_JM2-sg.d.mts → schemaOptions-BKtrXvjR.d.mts} +3 -3
  379. package/dist/{semantic-BLaQSW1r.d.mts → semantic-BZbvb3LV.d.mts} +1 -1
  380. package/dist/semantic-color.d.mts +1 -1
  381. package/dist/{semanticColor-Bxufk3ZO.d.mts → semanticColor-y9byerSl.d.mts} +3 -3
  382. package/dist/shared.d.mts +1 -1
  383. package/dist/{strings-BGXKl_m6.d.mts → strings-T-gsdqiJ.d.mts} +3 -1
  384. package/dist/strings.d.mts +1 -1
  385. package/dist/{text-Csytfclh.d.mts → text-CKLxMlG4.d.mts} +1 -1
  386. package/dist/{theme-mQ4WkH90.d.mts → theme-BFP-_PEh.d.mts} +3 -3
  387. package/dist/theme.d.mts +1 -1
  388. package/dist/tone.d.mts +3 -3
  389. package/dist/tree.d.mts +1 -1
  390. package/dist/{types-B4KbdEDc.d.mts → types-1p-ij0cd.d.mts} +2 -2
  391. package/dist/{types-Dhz6VMKx.d.mts → types-B5RbKp2V.d.mts} +1 -1
  392. package/dist/{types-dmItSshr.d.mts → types-Bg_sfqXE.d.mts} +2 -2
  393. package/dist/{types-sUEmxsGM.d.mts → types-BiRayNak.d.mts} +3 -3
  394. package/dist/{types-XjJqUj-p.d.mts → types-BnXYfNrd.d.mts} +4 -4
  395. package/dist/{types-C2RhHxbE.d.mts → types-Bu5rhBdH.d.mts} +1 -1
  396. package/dist/{types-DoJubhWu.d.mts → types-C31ecr0j.d.mts} +3 -3
  397. package/dist/{types-rDQg74j-.d.mts → types-FG-jOit9.d.mts} +1 -1
  398. package/dist/{types-DbOD5vE_.d.mts → types-K57NVM0M.d.mts} +2 -2
  399. package/dist/{types-6L0ptM6-.d.mts → types-QYT1VZgy.d.mts} +1 -1
  400. package/dist/types.d.mts +1 -1
  401. package/dist/types2.d.mts +1 -1
  402. package/dist/types3.d.mts +1 -1
  403. package/dist/types4.d.mts +1 -1
  404. package/dist/types5.d.mts +1 -1
  405. package/dist/types6.d.mts +1 -1
  406. package/dist/types8.d.mts +1 -1
  407. package/dist/{url-state-CmgyDnG7.d.mts → url-state-DmhG0Qg-.d.mts} +2 -2
  408. package/dist/url-state.d.mts +1 -1
  409. package/dist/{useChain-7ztbfujM.d.mts → useChain-CIwI4Xop.d.mts} +6 -6
  410. package/dist/useChainAtCursor.d.mts +6 -6
  411. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  412. package/dist/useColumnConfiguration.d.mts +2 -2
  413. package/dist/useComboboxFooterAction.d.mts +1 -1
  414. package/dist/{useFilterStateV2-CPBt0qwc.d.mts → useFilterStateV2-DPzkJpGT.d.mts} +3 -3
  415. package/dist/useFilterStateV2.d.mts +1 -1
  416. package/dist/{useFormField-CmEJCqse.d.mts → useFormField-ATKyX8CU.d.mts} +2 -2
  417. package/dist/useFormField.d.mts +1 -1
  418. package/dist/{useLocationPathname-Cnqj8pf4.d.mts → useLocationPathname-DPMpqO1_.d.mts} +1 -1
  419. package/dist/useLocationPathname.d.mts +1 -1
  420. package/dist/{useTableBoxDragAndDrop-8NS4JBuI.d.mts → useTableBoxDragAndDrop-CCMADt-F.d.mts} +1 -1
  421. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  422. package/dist/{useTableColumns-nPrbDfF_.d.mts → useTableColumns-Bw0HvnP4.d.mts} +2 -2
  423. package/dist/useTableColumns.d.mts +1 -1
  424. package/dist/useTruncation.d.mts +1 -1
  425. package/dist/{utilities-CXoc5Cyr.d.mts → utilities-BfXjJZQt.d.mts} +1 -1
  426. package/dist/utilities.d.mts +1 -1
  427. package/dist/utils/testing.d.mts +1 -1
  428. package/dist/utils.d.mts +1 -1
  429. package/dist/utils4.d.mts +5 -5
  430. package/dist/{validation-BaqPVG1C.d.mts → validation-yhA0siru.d.mts} +3 -3
  431. package/dist/validation.d.mts +1 -1
  432. package/dist/validation2.d.mts +4 -4
  433. package/dist/{value-control-resolver-CMyFwEY7.d.mts → value-control-resolver-Df0AmGFe.d.mts} +2 -2
  434. package/dist/value-control-resolver.d.mts +1 -1
  435. package/dist/variables/effect.d.mts +1 -1
  436. package/dist/variables/semantic.d.mts +1 -1
  437. package/llms.txt +1 -1
  438. package/package.json +12 -13
  439. package/skills/ui-authoring/COMPONENTS.md +1 -0
  440. package/dist/i18n-CKRi992F.mjs.map +0 -1
  441. /package/dist/{index-AnhM47-e2.d.mts → index-BAJc0Rej.d.mts} +0 -0
  442. /package/dist/{index-B33elXxm.d.mts → index-BFHp82YL.d.mts} +0 -0
  443. /package/dist/{index-B4woaFSm.d.mts → index-BYd3Btr1.d.mts} +0 -0
  444. /package/dist/{index-B6T7ov8p.d.mts → index-C6HcjJiY.d.mts} +0 -0
  445. /package/dist/{index-BNRXMhlr.d.mts → index-CEUVsenl.d.mts} +0 -0
  446. /package/dist/{index-BPiqSRRl.d.mts → index-CEqOS-7M.d.mts} +0 -0
  447. /package/dist/{index-BTviwbFV.d.mts → index-CNxS4Tlu.d.mts} +0 -0
  448. /package/dist/{index-Bo9LXG4r.d.mts → index-CP2eJYlK.d.mts} +0 -0
  449. /package/dist/{index-Bq9Ub6MB.d.mts → index-CQQezDJQ2.d.mts} +0 -0
  450. /package/dist/{index-BrGZHEgX.d.mts → index-CWB6exYm.d.mts} +0 -0
  451. /package/dist/{index-Bt4QNofW.d.mts → index-CcSfkYLp2.d.mts} +0 -0
  452. /package/dist/{index-CFuHCx9T.d.mts → index-Cm-1i165.d.mts} +0 -0
  453. /package/dist/{index-CLTQPxoD.d.mts → index-D-giXKyu.d.mts} +0 -0
  454. /package/dist/{index-CaqYCRmZ.d.mts → index-D4DUvwPf.d.mts} +0 -0
  455. /package/dist/{index-CjmAoxrR2.d.mts → index-DCTy4zg0.d.mts} +0 -0
  456. /package/dist/{index-Cx0vQ6ld.d.mts → index-DWIh4oP5.d.mts} +0 -0
  457. /package/dist/{index-CzItj62a.d.mts → index-Dflz2i1X.d.mts} +0 -0
  458. /package/dist/{index-CzUpNo0e.d.mts → index-DhiymMxa.d.mts} +0 -0
  459. /package/dist/{index-DBGd4WeR.d.mts → index-DkrC-i1D.d.mts} +0 -0
  460. /package/dist/{index-DMRtRo7y.d.mts → index-Dp7lwkTl2.d.mts} +0 -0
  461. /package/dist/{index-DNjQe1D8.d.mts → index-DqCA6utX.d.mts} +0 -0
  462. /package/dist/{index-DW3xeuzq.d.mts → index-Iujpc9_6.d.mts} +0 -0
  463. /package/dist/{index-DZlqSwCF.d.mts → index-Jh0C5PIG.d.mts} +0 -0
  464. /package/dist/{index-De7MV8-j.d.mts → index-N-OgGgfF.d.mts} +0 -0
  465. /package/dist/{index-DjG1RCY5.d.mts → index-Oio5ygqN.d.mts} +0 -0
  466. /package/dist/{index-Dlcv6Ku22.d.mts → index-Rvd9MEUQ.d.mts} +0 -0
  467. /package/dist/{index-DrK1_jKY.d.mts → index-YB8V3VRW.d.mts} +0 -0
  468. /package/dist/{index-DztUdPP_.d.mts → index-aKlsLnwy.d.mts} +0 -0
  469. /package/dist/{index-K614ZhWK.d.mts → index-fxXoW-qc.d.mts} +0 -0
  470. /package/dist/{index-NKYLt_R9.d.mts → index-ikHBE458.d.mts} +0 -0
  471. /package/dist/{index-VWno75SQ.d.mts → index-luywJTzJ.d.mts} +0 -0
  472. /package/dist/{index-uMNhmxEh.d.mts → index-xmouCHX9.d.mts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Input","StyledDropdownItem","DropdownMenu","Card","DropdownMenu","Popover","EditorGlobalCss"],"sources":["../../../src/components/RichTextEditor/FloatingToolbar.tsx","../../../src/components/RichTextEditor/markdownUtils.ts","../../../src/components/RichTextEditor/styles.ts","../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react';\nimport { BubbleMenu } from '@tiptap/react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n BoldIcon,\n CheckIcon,\n GridIcon,\n ItalicIcon,\n LinkIcon,\n ListIcon,\n UnlinkIcon,\n XIcon,\n} from '@persona/icons';\n\nimport { IconButton } from '#src/components/Button';\nimport DropdownMenu from '#src/components/DropdownMenu';\nimport Input from '#src/components/Input';\nimport Stack from '#src/components/Stack';\nimport { TransitionDuration } from '#src/variables/transitions';\n\n// Core* colors throughout this file are intentional: the bubble toolbar is an\n// always-dark inverse surface floating over the editor, so it must not track\n// the semantic surface theme.\nconst BubbleMenuBar = styled(Stack)`\n padding: ${Spacing[1]} ${Spacing[2]};\n background-color: ${Color.CoreSlate1100};\n border-radius: ${BorderRadius.Lg};\n`;\n\nconst IconContainer = styled(motion.div)`\n display: flex;\n gap: ${Spacing[1]};\n`;\n\nconst InverseIconButton = styled(IconButton)<{ $selected?: boolean }>`\n background-color: ${({ $selected }) => ($selected ? Color.CoreSlate900 : 'transparent')};\n color: ${Color.PrimaryWhite};\n transition: background-color ${TransitionDuration.ExtraFast} ease-out;\n\n &:hover:not(:disabled) {\n background-color: ${Color.CoreSlate800};\n }\n\n &:disabled {\n background-color: transparent;\n opacity: 0.35;\n }\n`;\n\nconst InverseInput = styled(Input)`\n background-color: ${Color.CoreSlate900};\n color: ${Color.PrimaryWhite};\n\n :focus-within {\n border-color: ${Color.CoreBlue700};\n }\n ::placeholder {\n color: ${Color.TextDisabled};\n }\n\n input {\n background-color: ${Color.CoreSlate900};\n color: ${Color.PrimaryWhite};\n }\n`;\n\nconst StyledDropdownItem = styled(DropdownMenu.Item)`\n width: 100%;\n height: 30px;\n font-size: small;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\n// Tippy hangs its instance off the element it was created against.\ntype TippyReference = Element & { _tippy?: { hide: () => void } };\n\n// Tippy takes its offset as numbers while the spacing tokens are CSS lengths.\nconst TOOLBAR_GAP = parseInt(Spacing[1]);\n\n// Anchored to the field, the toolbar lines up with the input's left edge; over a\n// selection it sits back a notch so it does not crowd the first selected glyph.\nconst FIELD_OFFSET: [skidding: number, distance: number] = [0, TOOLBAR_GAP];\nconst SELECTION_OFFSET: [skidding: number, distance: number] = [-parseInt(Spacing[2]), TOOLBAR_GAP];\n\n// Schemes we trust as link targets. Anything else (no scheme, or an unsafe one\n// like javascript:/data:/vbscript:) is treated as a bare host and forced onto\n// https, which both preserves host:port input and neutralizes script schemes.\nconst SAFE_LINK_SCHEME = /^(https?|mailto|tel):/i;\nconst URI_SCHEME = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\n\nexport const ensureProtocol = (url: string): string => {\n const trimmedUrl = url.trim();\n if (!trimmedUrl) {\n return '';\n }\n // Handlebars placeholders (e.g. {{inquiry.id}}) are legitimate link targets in\n // templated messages — the template render produces the final URL, so pass\n // the expression through unvalidated. Only when nothing before the first\n // placeholder looks like an unsafe scheme: javascript:alert(1)//{{x}} would\n // otherwise smuggle a script href past the allowlist. URL parsers strip C0\n // controls, tabs and spaces before reading the scheme, so normalize the\n // prefix the same way first — java\\tscript:...{{x}} must not slip through.\n if (trimmedUrl.includes('{{')) {\n const beforePlaceholder = trimmedUrl\n .slice(0, trimmedUrl.indexOf('{{'))\n // eslint-disable-next-line no-control-regex -- mirrors how URL parsers strip C0/space before reading the scheme\n .replace(/[\\u0000-\\u0020]/g, '');\n if (!URI_SCHEME.test(beforePlaceholder) || SAFE_LINK_SCHEME.test(beforePlaceholder)) {\n return trimmedUrl;\n }\n return '';\n }\n const candidate = SAFE_LINK_SCHEME.test(trimmedUrl) ? trimmedUrl : `https://${trimmedUrl}`;\n // Re-parse so malformed input — including an unsafe scheme that can't survive\n // the https prefix — is dropped instead of applied as a broken href.\n return URL.canParse(candidate) ? candidate : '';\n};\n\ninterface FloatingToolbarProps {\n /** TipTap editor instance to operate on. */\n editor: Editor | null;\n /**\n * Keep the toolbar up the whole time the editor is focused instead of only\n * while text is selected, so the formatting actions are discoverable without\n * knowing to select first.\n */\n showOnFocus?: boolean;\n}\n\n/**\n * Floating bubble toolbar that appears on text selection or inside a table, or —\n * with `showOnFocus` — for as long as the editor is focused.\n * Keyboard shortcut: Cmd/Ctrl+Shift+U opens the link-edit row.\n */\nfunction FloatingToolbar({ editor, showOnFocus = false }: FloatingToolbarProps) {\n const [linkURL, setLinkURL] = useState('');\n const [editingLink, setEditingLink] = useState(false);\n const linkInputRef = useRef<HTMLInputElement>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n const savedSelection = useRef<{ from: number; to: number } | null>(null);\n const editingLinkRef = useRef(editingLink);\n const blurTimeout = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(() => () => clearTimeout(blurTimeout.current), []);\n\n useEffect(() => {\n editingLinkRef.current = editingLink;\n }, [editingLink]);\n\n const restoreSelection = useCallback(() => {\n if (editor && savedSelection.current) {\n const { from, to } = savedSelection.current;\n editor.chain().focus().setTextSelection({ from, to }).run();\n }\n }, [editor]);\n\n const openLinkEditingMode = useCallback(() => {\n if (!editor) {\n return;\n }\n if (!editor.can().chain().toggleLink({ href: 'https://www.google.com' }).run()) {\n return;\n }\n\n const { from, to } = editor.state.selection;\n savedSelection.current = { from, to };\n\n const linkAttr = editor.getAttributes('link');\n if (linkAttr.href) {\n setLinkURL(linkAttr.href);\n }\n\n editor.chain().focus().setTextSelection({ from, to }).run();\n setEditingLink(true);\n\n setTimeout(() => {\n linkInputRef.current?.focus();\n }, 250);\n }, [editor]);\n\n // Cmd/Ctrl+Shift+U → open link mode; Escape inside link mode → cancel.\n useEffect(() => {\n if (!editor) {\n return undefined;\n }\n const dom = editor.view.dom;\n const handler = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && event.shiftKey && event.key.toLowerCase() === 'u') {\n event.preventDefault();\n openLinkEditingMode();\n return;\n }\n if (event.key === 'Escape' && editingLinkRef.current) {\n event.preventDefault();\n setEditingLink(false);\n setLinkURL('');\n savedSelection.current = null;\n }\n };\n dom.addEventListener('keydown', handler);\n return () => {\n dom.removeEventListener('keydown', handler);\n };\n }, [editor, openLinkEditingMode]);\n\n // Keep selection highlighted while focus is in the link input.\n useEffect(() => {\n if (!editingLink || !editor || !savedSelection.current) {\n return undefined;\n }\n restoreSelection();\n const timeoutId = setTimeout(() => {\n restoreSelection();\n editor.view.dom?.focus();\n }, 0);\n return () => clearTimeout(timeoutId);\n }, [editingLink, restoreSelection, editor]);\n\n if (!editor) {\n return null;\n }\n\n // Pressing a toolbar button focuses that button, and the command's own\n // transaction re-runs this check before the chained `.focus()` hands focus\n // back to the editor. Ignoring focus held inside the toolbar therefore tears\n // the bar down for a frame mid-click, taking the pressed button with it.\n const isFocusWithinToolbar = () => !!toolbarRef.current?.contains(document.activeElement);\n\n // The plugin closes the toolbar off the editor's blur, which cannot fire again\n // once focus has moved in here, so leaving from the toolbar has to close it.\n // Focus only lands on its next target after this event, hence the tick.\n const handleToolbarBlur = () => {\n blurTimeout.current = setTimeout(() => {\n if (editor.isDestroyed || isFocusWithinToolbar() || editor.view.hasFocus()) {\n return;\n }\n (editor.options.element as TippyReference)._tippy?.hide();\n });\n };\n\n const editorState = {\n isBold: editor.isActive('bold'),\n canBold: editor.can().chain().toggleBold().run(),\n isItalic: editor.isActive('italic'),\n canItalic: editor.can().chain().toggleItalic().run(),\n isLink: editor.isActive('link'),\n isBulletList: editor.isActive('bulletList'),\n canLink: editor.can().chain().toggleLink({ href: 'https://www.google.com' }).run(),\n isTable: editor.isActive('table'),\n canInsertTable: editor\n .can()\n .chain()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run(),\n };\n\n return (\n <BubbleMenu\n editor={editor}\n tippyOptions={{\n placement: 'top-start',\n offset: showOnFocus ? FIELD_OFFSET : SELECTION_OFFSET,\n // Sitting above the field rather than the selection: a toolbar that is up\n // for the whole time the field is focused looks jumpy if it chases the\n // caret and hops between selections.\n ...(showOnFocus\n ? { getReferenceClientRect: () => editor.options.element.getBoundingClientRect() }\n : {}),\n }}\n shouldShow={({ editor: e, view, from, to }) => {\n if (!e.isEditable) {\n return false;\n }\n if (e.isActive('mention')) {\n return false;\n }\n // The toolbar carries the table-actions dropdown — a collapsed caret\n // inside a table must still show it or row/column controls are\n // unreachable.\n if (e.isActive('table')) {\n return true;\n }\n if (from !== to) {\n return true;\n }\n return showOnFocus && (view.hasFocus() || isFocusWithinToolbar());\n }}\n >\n <AnimatePresence>\n <BubbleMenuBar\n ref={toolbarRef}\n role='toolbar'\n aria-label='Text formatting'\n direction='horizontal'\n spacing={Spacing[1]}\n onBlur={handleToolbarBlur}\n >\n {!editingLink ? (\n <IconContainer\n key='main-toolbar'\n layout\n initial={{ x: -10, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n exit={{ x: -10, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeOut' }}\n >\n <InverseIconButton\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n $selected={editorState.isBulletList}\n size='sm'\n type='button'\n aria-label='Toggle bullet list'\n data-rte-menu-bar-item\n >\n <ListIcon />\n </InverseIconButton>\n <InverseIconButton\n onClick={() => editor.chain().focus().toggleBold().run()}\n disabled={!editorState.canBold}\n $selected={editorState.isBold}\n size='sm'\n type='button'\n aria-label='Toggle bold'\n data-rte-menu-bar-item\n >\n <BoldIcon />\n </InverseIconButton>\n <InverseIconButton\n onClick={() => editor.chain().focus().toggleItalic().run()}\n $selected={editorState.isItalic}\n disabled={!editorState.canItalic}\n type='button'\n size='sm'\n aria-label='Toggle italic'\n data-rte-menu-bar-item\n >\n <ItalicIcon />\n </InverseIconButton>\n <InverseIconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n openLinkEditingMode();\n }}\n $selected={editorState.isLink}\n disabled={!editorState.canLink}\n size='sm'\n type='button'\n aria-label='Toggle link'\n data-rte-menu-bar-item\n >\n <LinkIcon />\n </InverseIconButton>\n {editorState.isTable ? (\n <DropdownMenu\n contentProps={{\n // @ts-expect-error data attribute on dropdown menu\n 'data-rte-menu-bar-item': 'table-actions-dropdown-menu',\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n editor.commands.focus();\n },\n }}\n trigger={\n <InverseIconButton\n size='sm'\n type='button'\n aria-label='Table actions'\n data-rte-menu-bar-item\n $selected\n >\n <GridIcon />\n </InverseIconButton>\n }\n >\n <StyledDropdownItem\n id='floating-toolbar__tableAddRowAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-after'\n onClick={() => editor.chain().focus().addRowAfter().run()}\n >\n Add row below\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableAddRowBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-before'\n onClick={() => editor.chain().focus().addRowBefore().run()}\n >\n Add row above\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableAddColumnAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-after'\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n >\n Add column right\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableAddColumnBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-before'\n onClick={() => editor.chain().focus().addColumnBefore().run()}\n >\n Add column left\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableDeleteRow'\n variant='basic'\n data-rte-menu-bar-item='table-delete-row'\n onClick={() => editor.chain().focus().deleteRow().run()}\n >\n Delete row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableDeleteColumn'\n variant='basic'\n data-rte-menu-bar-item='table-delete-column'\n onClick={() => editor.chain().focus().deleteColumn().run()}\n >\n Delete column\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableToggleHeaderRow'\n variant='basic'\n data-rte-menu-bar-item='table-toggle-header-row'\n onClick={() => editor.chain().focus().toggleHeaderRow().run()}\n >\n Toggle header row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='floating-toolbar__tableDelete'\n variant='basic'\n data-rte-menu-bar-item='table-delete'\n onClick={() => editor.chain().focus().deleteTable().run()}\n >\n Delete table\n </StyledDropdownItem>\n </DropdownMenu>\n ) : (\n <InverseIconButton\n onClick={() =>\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run()\n }\n disabled={!editorState.canInsertTable}\n size='sm'\n type='button'\n aria-label='Insert table'\n data-rte-menu-bar-item\n >\n <GridIcon />\n </InverseIconButton>\n )}\n </IconContainer>\n ) : (\n <IconContainer\n key='link-toolbar'\n initial={{ x: -10, opacity: 0 }}\n animate={{ x: 0, opacity: 1 }}\n exit={{ x: -10, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeOut' }}\n aria-label='Link toolbar'\n onAnimationComplete={() => {\n if (editor && savedSelection.current) {\n setTimeout(() => {\n restoreSelection();\n linkInputRef.current?.focus();\n }, 10);\n }\n }}\n >\n <InverseInput\n ref={linkInputRef}\n size='sm'\n value={linkURL}\n onChange={(e) => setLinkURL(e.target.value)}\n placeholder='Click to enter URL...'\n aria-label='Link input'\n data-rte-menu-bar-item\n onClick={() => {\n linkInputRef.current?.focus();\n }}\n onFocus={() => {\n if (savedSelection.current && editor) {\n const { from, to } = savedSelection.current;\n editor.chain().setTextSelection({ from, to }).run();\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && linkURL.trim() && editor && savedSelection.current) {\n e.preventDefault();\n e.stopPropagation();\n const { from, to } = savedSelection.current;\n editor\n .chain()\n .focus()\n .setTextSelection({ from, to })\n .setLink({ href: ensureProtocol(linkURL) })\n .run();\n savedSelection.current = null;\n setEditingLink(false);\n setLinkURL('');\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n setEditingLink(false);\n setLinkURL('');\n savedSelection.current = null;\n const { from, to } = editor.state.selection;\n editor.chain().focus().setTextSelection({ from, to }).run();\n }\n }}\n />\n <InverseIconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (linkURL) {\n editor.chain().focus().unsetLink().run();\n }\n restoreSelection();\n setLinkURL('');\n savedSelection.current = null;\n setEditingLink(false);\n }}\n size='sm'\n type='button'\n aria-label='Cancel link'\n data-rte-menu-bar-item\n >\n {linkURL && editorState.isLink ? <UnlinkIcon /> : <XIcon />}\n </InverseIconButton>\n <InverseIconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (linkURL.trim() && editor && savedSelection.current) {\n const { from, to } = savedSelection.current;\n editor\n .chain()\n .focus()\n .setTextSelection({ from, to })\n .setLink({ href: ensureProtocol(linkURL) })\n .run();\n } else if (editor && savedSelection.current) {\n const { from, to } = savedSelection.current;\n editor.chain().focus().setTextSelection({ from, to }).unsetLink().run();\n }\n savedSelection.current = null;\n setEditingLink(false);\n setLinkURL('');\n }}\n size='sm'\n type='button'\n aria-label='Apply link'\n data-rte-menu-bar-item\n >\n <CheckIcon />\n </InverseIconButton>\n </IconContainer>\n )}\n </BubbleMenuBar>\n </AnimatePresence>\n </BubbleMenu>\n );\n}\n\nexport default FloatingToolbar;\n","import type { Node as PMNode } from '@tiptap/pm/model';\n\n/**\n * Collapses double newlines between pipe-delimited table rows into single\n * newlines. TipTap creates paragraph nodes for every Enter, and tiptap-markdown\n * serializes paragraphs as \\n\\n. GFM tables require single newlines between\n * rows to be parsed as a contiguous table block.\n *\n * Only affects lines that start/end with pipe characters — normal paragraph\n * breaks are preserved.\n */\nexport const normalizeTableNewlines = (text: string): string =>\n text.replace(/(\\|[^\\n]*)\\n\\n(\\|)/g, '$1\\n$2');\n\n/**\n * Whether the doc holds no content at all, i.e. it matches the schema's default\n * empty doc. `Editor#isEmpty` also reports true for docs made of structurally\n * empty nodes (a table of blank cells), which still carry real structure worth\n * serializing to markdown.\n */\nexport const isEditorDocEmpty = (doc: PMNode): boolean => {\n const defaultDoc = doc.type.createAndFill();\n return defaultDoc != null && doc.eq(defaultDoc);\n};\n","import { createGlobalStyle, type DefaultTheme } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\n\nimport { withAlpha } from '#src/lib/color';\nimport { semanticColor, semanticTokens } from '#src/lib/semanticColor';\n\n// Mention chips and selected table cells share the PDS accent wash. Opacity25 is 100% under\n// semantic light, so light mode keeps the solid CorePurple100 it painted before.\nconst accentWash = ({ theme }: { theme: DefaultTheme }) => {\n const tokens = semanticTokens(theme);\n return tokens ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25) : Color.CorePurple100;\n};\n\nexport default createGlobalStyle`\n /*\n * A long unbreakable token (URL, hash) otherwise sets the block's min-content\n * width; inside a flex row that lets the editor grow past its container so\n * nothing wraps. anywhere lets the token break, collapsing min-content so the\n * block stays within its container. break-word (which ProseMirror's own\n * injected base style sets via word-wrap) does NOT affect min-content, so it\n * cannot fix this. The doubled selector raises specificity above that base\n * rule, which has equal specificity and is injected after this one.\n */\n .ProseMirror.ProseMirror {\n overflow-wrap: anywhere;\n }\n .ProseMirror ul, .ProseMirror ol {\n padding-left: 30px;\n }\n .mention {\n background-color: ${accentWash};\n color: ${({ theme }) => semanticColor(theme, 'FgAccent', Color.CorePurple700)};\n border-radius: ${BorderRadius.Md};\n display: inline-flex;\n padding: 2px;\n align-items: center;\n gap: ${Spacing[1]};\n }\n\n /* Table styles applied in both edit and read-only views. */\n .ProseMirror table {\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n margin: ${Spacing[2]} 0;\n overflow: hidden;\n }\n .ProseMirror th,\n .ProseMirror td {\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n padding: ${Spacing[1]} ${Spacing[2]};\n vertical-align: top;\n box-sizing: border-box;\n min-width: 1em;\n position: relative;\n }\n .ProseMirror th {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceSecondary', Color.BackgroundSecondary)};\n font-weight: 500;\n text-align: left;\n }\n /* Cell-selection marker. */\n .ProseMirror .selectedCell:after {\n background-color: ${accentWash};\n content: '';\n inset: 0;\n pointer-events: none;\n position: absolute;\n z-index: 2;\n opacity: 0.4;\n }\n`;\n","import type { AnyExtension } from '@tiptap/core';\nimport Link from '@tiptap/extension-link';\nimport Table from '@tiptap/extension-table';\nimport TableCell from '@tiptap/extension-table-cell';\nimport TableHeader from '@tiptap/extension-table-header';\nimport TableRow from '@tiptap/extension-table-row';\nimport type { EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, type EditorEvents, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport dompurify from 'dompurify';\nimport { noop } from 'lodash-es';\nimport { type FC, Fragment, type KeyboardEventHandler, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Markdown } from 'tiptap-markdown';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n BoldIcon,\n CapitalizeIcon,\n CaretDownIcon,\n GridIcon,\n ItalicIcon,\n LinkIcon,\n ListIcon,\n ListNumbersIcon,\n RotateCcwIcon,\n RotateCwIcon,\n} from '@persona/icons';\n\nimport Button from '#src/components/Button';\nimport Card from '#src/components/Card';\nimport DropdownMenu from '#src/components/DropdownMenu';\nimport { TextField } from '#src/components/FormField';\nimport Popover from '#src/components/Popover';\nimport { HStack } from '#src/components/Stack';\nimport { intersperse } from '#src/lib/intersperse';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { useOutsideClick } from '#src/lib/useOutsideClick';\nimport useToggle from '#src/lib/useToggle';\nimport { Z_INDICES } from '#src/lib/zindex';\nimport { focusWithinOutline } from '#src/mixins/focus';\nimport { Elevation } from '#src/variables/effect';\n\nimport FloatingToolbar, { ensureProtocol } from './FloatingToolbar';\nimport { isEditorDocEmpty, normalizeTableNewlines } from './markdownUtils';\nimport EditorGlobalCss from './styles';\nimport type { ExtensionWithMenuBar } from './types';\n\nconst Bar = styled.div`\n display: flex;\n height: fit-content;\n padding: ${Spacing[1]} ${Spacing[1]};\n gap: 2px;\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', Color.BorderHairline)};\n`;\n\nconst TextEditor = styled.div`\n background-clip: padding-box;\n border-radius: ${Spacing[1]};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n ${semanticOnly(\n (tokens) => css`\n background-color: ${tokens.InputSurfaceDefault};\n color: ${tokens.FgPrimary};\n `,\n )}\n\n\n ${focusWithinOutline}\n`;\n\nexport const MenuBarItem = styled.button<{ isActive: boolean }>`\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceDefault', Color.PrimaryWhite)};\n ${semanticOnly(\n (tokens) => css`\n color: ${tokens.FgPrimary};\n\n &:disabled {\n color: ${tokens.FgDisabled};\n }\n `,\n )}\n display: flex;\n align-items: center;\n padding: ${Spacing[1]};\n cursor: pointer;\n border-radius: ${BorderRadius.Md};\n\n ${({ isActive, theme }) =>\n isActive &&\n css`\n background-color: ${semanticColor(theme, 'ActionNeutral', Color.BackgroundButtonDefault)};\n `};\n\n svg {\n margin: 0;\n }\n\n &:hover {\n box-shadow: ${Elevation.Low};\n }\n`;\n\nconst StyledCard = styled(Card)`\n min-width: 300px;\n padding: ${Spacing[3]};\n`;\n\nconst VerticalLine = styled.span`\n border-right: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\n// TODO (Amina) : Size configurable dropdown items\nconst StyledDropdownItem = styled(DropdownMenu.Item)`\n width: 100%;\n height: 30px;\n font-size: small;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport type MenuBarSection = 'undo-redo' | 'text-format' | 'text-style' | 'lists' | 'table';\ninterface MenuBarProps {\n editor: Editor | null;\n supportedSections?: Array<MenuBarSection>;\n}\n\nconst MenuBar: FC<MenuBarProps> = ({\n editor,\n supportedSections = ['undo-redo', 'text-format', 'text-style', 'lists'],\n}) => {\n const [isEditLinkModal, { enable: showEditLinkModal, disable: hideEditLinkModal }] = useToggle();\n const [linkUrl, setLinkUrl] = useState('');\n\n const editLinkModalCardRef = useRef<HTMLDivElement>(null);\n useOutsideClick({ ref: editLinkModalCardRef, onOutsideClick: hideEditLinkModal });\n\n if (!editor || supportedSections.length === 0) {\n return null;\n }\n\n const { view, state } = editor;\n const { from, to } = view.state.selection;\n const selectionText = state.doc.textBetween(from, to, '');\n\n const handleSetLink = (url: string) => {\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: ensureProtocol(url) })\n .run();\n hideEditLinkModal();\n };\n\n const handleLinkModalKeyDown: KeyboardEventHandler = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSetLink(linkUrl);\n }\n };\n\n // Collect menu bar contributions from extensions via options\n const extraMenuBars = editor.extensionManager.extensions\n .filter(\n (ext): ext is ExtensionWithMenuBar =>\n ext.type === 'extension' && 'extraMenuBar' in ext.options,\n )\n .map((ext) => ext.options.extraMenuBar);\n\n const textFormatItems = () => [\n {\n id: 'menu-bar__paragraph',\n label: 'Normal text',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().setParagraph().run(),\n },\n {\n id: 'menu-bar__h1',\n label: 'Heading 1',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n },\n {\n id: 'menu-bar__h2',\n label: 'Heading 2',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n },\n {\n id: 'menu-bar__h3',\n label: 'Heading 3',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),\n },\n ];\n\n const sectionsMap: Record<MenuBarSection, React.ReactNode> = {\n // undo + redo controls\n ['undo-redo']: (\n <Fragment key='undo-redo'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__undo'\n type='button'\n aria-label='Undo'\n data-rte-menu-bar-item='undo'\n isActive={false}\n disabled={!editor.can().chain().focus().undo().run()}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <RotateCcwIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__redo'\n type='button'\n aria-label='Redo'\n data-rte-menu-bar-item='redo'\n isActive={false}\n disabled={!editor.can().chain().focus().redo().run()}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <RotateCwIcon />\n </MenuBarItem>\n </Fragment>\n ),\n // preset text sizes (normal, headings 1-3)\n ['text-format']: (\n <DropdownMenu\n key='text-format'\n contentProps={{\n // @ts-expect-error This adds it correctly as a data attribute to the dropdown menu\n // But it isn't defined in the DropdownMenuProps type\n 'data-rte-menu-bar-item': 'text-format-dropdown-menu',\n // Return focus to the editor (not the trigger) so the user can\n // type immediately after picking a format.\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n editor.commands.focus();\n },\n }}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__textFormats'\n type='button'\n aria-label='Text sizes'\n data-rte-menu-bar-item='text-format'\n isActive={false}\n >\n <CapitalizeIcon />\n <CaretDownIcon />\n </MenuBarItem>\n }\n >\n {textFormatItems().map((item) => (\n <StyledDropdownItem\n key={item.id}\n id={item.id}\n variant={item.variant}\n onClick={item.onClick}\n data-rte-menu-bar-item={item.id}\n >\n {item.label}\n </StyledDropdownItem>\n ))}\n </DropdownMenu>\n ),\n // bold, italic, link\n ['text-style']: (\n <Fragment key='text-style'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__bold'\n type='button'\n aria-label='Bold'\n data-rte-menu-bar-item='bold'\n isActive={editor.isActive('bold')}\n disabled={!editor.can().chain().focus().toggleBold().run()}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <BoldIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__italic'\n type='button'\n aria-label='Italic'\n data-rte-menu-bar-item='italic'\n isActive={editor.isActive('italic')}\n disabled={!editor.can().chain().focus().toggleItalic().run()}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <ItalicIcon />\n </MenuBarItem>\n\n <Popover\n open={isEditLinkModal}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__link'\n type='button'\n aria-label='Link'\n data-rte-menu-bar-item='link'\n // disable link button if there is no selection and cursor is not on an existing link\n disabled={!editor.isActive('link') && selectionText === ''}\n isActive={editor.isActive('link')}\n onClick={() => {\n showEditLinkModal();\n setLinkUrl(editor.getAttributes('link').href || '');\n }}\n >\n <LinkIcon />\n </MenuBarItem>\n }\n >\n <Popover.Content side='bottom' align='center' style={{ zIndex: Z_INDICES.toast }}>\n <StyledCard elevated ref={editLinkModalCardRef}>\n <TextField\n size='sm'\n value={linkUrl}\n data-rte-menu-bar-item='link-url'\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={handleLinkModalKeyDown}\n />\n\n <HStack equal>\n <Button\n id='menu-bar__editLinkModal_cancel'\n size='sm'\n variant='basic'\n data-rte-menu-bar-item='link-cancel'\n onClick={hideEditLinkModal}\n >\n Cancel\n </Button>\n <Button\n id='menu-bar__editLinkModal_save'\n type='submit'\n size='sm'\n variant='primary'\n data-rte-menu-bar-item='link-save'\n onClick={() => {\n handleSetLink(linkUrl);\n hideEditLinkModal();\n }}\n >\n Save\n </Button>\n </HStack>\n </StyledCard>\n </Popover.Content>\n </Popover>\n </Fragment>\n ),\n // bullet list, ordered list\n ['lists']: (\n <Fragment key='lists'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__bulletList'\n type='button'\n aria-label='Bullet list'\n data-rte-menu-bar-item='bullet-list'\n isActive={editor.isActive('bulletList')}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <ListIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__orderedList'\n type='button'\n aria-label='Ordered list'\n data-rte-menu-bar-item='ordered-list'\n isActive={editor.isActive('orderedList')}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListNumbersIcon />\n </MenuBarItem>\n </Fragment>\n ),\n // Insert table when outside one; edit operations when inside a cell.\n ['table']: editor.isActive('table') ? (\n <DropdownMenu\n key='table-actions'\n contentProps={{\n // @ts-expect-error data attribute on dropdown\n 'data-rte-menu-bar-item': 'table-actions-dropdown-menu',\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n editor.commands.focus();\n },\n }}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__tableActions'\n type='button'\n aria-label='Table actions'\n data-rte-menu-bar-item='table-actions'\n isActive\n >\n <GridIcon />\n <CaretDownIcon />\n </MenuBarItem>\n }\n >\n <StyledDropdownItem\n id='menu-bar__tableAddRowAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-after'\n onClick={() => editor.chain().focus().addRowAfter().run()}\n >\n Add row below\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddRowBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-before'\n onClick={() => editor.chain().focus().addRowBefore().run()}\n >\n Add row above\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddColumnAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-after'\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n >\n Add column right\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddColumnBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-before'\n onClick={() => editor.chain().focus().addColumnBefore().run()}\n >\n Add column left\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDeleteRow'\n variant='basic'\n data-rte-menu-bar-item='table-delete-row'\n onClick={() => editor.chain().focus().deleteRow().run()}\n >\n Delete row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDeleteColumn'\n variant='basic'\n data-rte-menu-bar-item='table-delete-column'\n onClick={() => editor.chain().focus().deleteColumn().run()}\n >\n Delete column\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableToggleHeaderRow'\n variant='basic'\n data-rte-menu-bar-item='table-toggle-header-row'\n onClick={() => editor.chain().focus().toggleHeaderRow().run()}\n >\n Toggle header row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDelete'\n variant='basic'\n data-rte-menu-bar-item='table-delete'\n onClick={() => editor.chain().focus().deleteTable().run()}\n >\n Delete table\n </StyledDropdownItem>\n </DropdownMenu>\n ) : (\n <MenuBarItem\n key='table-insert'\n tabIndex={-1}\n id='menu-bar__insertTable'\n type='button'\n aria-label='Insert table'\n data-rte-menu-bar-item='insert-table'\n isActive={false}\n disabled={\n !editor.can().chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()\n }\n onClick={() =>\n editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()\n }\n >\n <GridIcon />\n </MenuBarItem>\n ),\n };\n\n return (\n <Bar title='Menu bar'>\n {intersperse(\n [\n ...supportedSections.map((section) => sectionsMap[section]),\n ...(extraMenuBars.length > 0\n ? [\n <Fragment key='extra'>\n {extraMenuBars.map((contribution, i) => (\n <Fragment key={`extra-menu-${i}`}>\n {contribution.renderPopover(editor)}\n </Fragment>\n ))}\n </Fragment>,\n ]\n : []),\n ],\n (i) => (\n <VerticalLine key={`separator-${i}`} />\n ),\n )}\n </Bar>\n );\n};\n\nexport interface RichTextEditorProps {\n className?: string;\n defaultValue?: string;\n menuBarSections?: Array<MenuBarSection>;\n additionalEditorExtensions?: (AnyExtension | ExtensionWithMenuBar)[];\n returnMarkdown?: boolean;\n\n /**\n * Minimum height of the editor content.\n */\n editorContentMinHeight?: string;\n /**\n * Maximum height of the editor content.\n * If the editor content exceeds this height, the editor will scroll.\n */\n editorContentMaxHeight?: string;\n readOnly?: boolean;\n /** Show a PDS-styled bubble toolbar on selection (and inside tables). */\n floatingToolbar?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event?: KeyboardEvent) => void;\n onBlur?: () => void;\n}\n\nconst Text = styled.div`\n cursor: default;\n`;\n\nconst RichTextEditor: FC<RichTextEditorProps> = ({\n className,\n defaultValue,\n menuBarSections,\n additionalEditorExtensions = [],\n returnMarkdown = false,\n readOnly = false,\n floatingToolbar = false,\n editorContentMaxHeight,\n editorContentMinHeight,\n onChange = noop,\n onKeyDown = noop,\n onBlur = noop,\n}) => {\n // Keep a ref of the latest onKeyDown callback so TipTap's editorProps\n // always invokes the most recent version (not a stale closure from mount\n // time). Assigned during render so it is never a commit behind.\n const onKeyDownRef = useRef(onKeyDown);\n onKeyDownRef.current = onKeyDown;\n\n const editor = useEditor({\n extensions: [\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: 'tight',\n bulletListMarker: '-',\n linkify: false,\n breaks: false,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n StarterKit,\n // We are setting the inclusive attribute to false so that text following the initial text serving as the url placeholder\n // is not considered part of the placeholder.\n Link.extend({ inclusive: false }).configure({\n // autolink is buggy alongside handlebars syntax, so we choose to disable it. Links can still be created using the menu bar item.\n autolink: false,\n openOnClick: false,\n }),\n Table.configure({ resizable: false }),\n TableRow,\n TableHeader,\n TableCell,\n ...additionalEditorExtensions,\n ],\n content: dompurify.sanitize(defaultValue ?? ''),\n editorProps: {\n attributes: {\n title: 'Rich text editor',\n },\n handleKeyDown(_view: EditorView, event: KeyboardEvent) {\n onKeyDownRef.current?.(event);\n // Return true if the event was handled to prevent TipTap's default behavior\n return event.defaultPrevented;\n },\n },\n onUpdate: ({ editor }) => {\n let value = returnMarkdown ? editor.storage.markdown.getMarkdown() : editor.getHTML();\n\n if (returnMarkdown && value) {\n value = normalizeTableNewlines(value);\n }\n\n // We need to return an empty string instead of 'value' because 'value' may be an empty set of html tags when\n // the doc is empty. By returning an empty string we have a consistent value to compare against.\n onChange(isEditorDocEmpty(editor.state.doc) ? '' : dompurify.sanitize(value));\n },\n onBlur: (e: EditorEvents['blur']) => {\n /**\n * We want to make sure we don't fire onBlur when the user clicks on a menu bar item.\n */\n // @ts-expect-error dataset is a valid attribute for a menu bar item but\n // the FocusEvent type doesn't include it for some reason.\n if (!e.event.relatedTarget?.dataset?.rteMenuBarItem) {\n onBlur();\n }\n },\n });\n\n useEffect(() => {\n if (editor) {\n const value = returnMarkdown ? editor.storage.markdown.getMarkdown() : editor.getHTML();\n if (defaultValue !== value) {\n const { from, to } = editor.state.selection;\n editor\n .chain()\n // The defaultValue sync is not user input — keeping it out of undo\n // history stops Undo from reverting the freshly synced document.\n .command(({ tr }) => {\n tr.setMeta('addToHistory', false);\n return true;\n })\n .setContent(dompurify.sanitize(defaultValue), false, {\n preserveWhitespace: true,\n })\n .setTextSelection({ from, to })\n .run();\n }\n }\n }, [defaultValue, editor, returnMarkdown]);\n\n useEffect(() => {\n if (editor) {\n // second param prevents setEditable from emitting onUpdate\n // source: https://github.com/ueberdosis/tiptap/issues/4535#issuecomment-1767019649\n editor.setEditable(!readOnly, false);\n }\n }, [editor, readOnly]);\n\n if (!editor) {\n return null;\n }\n\n const resolvedSections: Array<MenuBarSection> = menuBarSections ?? [\n 'undo-redo',\n 'text-format',\n 'text-style',\n 'lists',\n 'table',\n ];\n\n return (\n // We need the global styles here to overwrite our systems general styles which hinder the rendering of some of the rich text in the editor.\n <>\n <EditorGlobalCss />\n {readOnly ? (\n <Text className={className}>\n <EditorContent editor={editor} />\n </Text>\n ) : (\n <TextEditor className={className}>\n <MenuBar supportedSections={resolvedSections} editor={editor} />\n {floatingToolbar && <FloatingToolbar editor={editor} />}\n <EditorContent\n style={{\n padding: Spacing[3],\n minHeight: editorContentMinHeight ?? 'none',\n maxHeight: editorContentMaxHeight ?? 'none',\n overflowY: 'auto',\n }}\n editor={editor}\n />\n </TextEditor>\n )}\n </>\n );\n};\nexport default RichTextEditor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["Card","DropdownMenu","Popover","EditorGlobalCss"],"sources":["../../../src/components/RichTextEditor/markdownUtils.ts","../../../src/components/RichTextEditor/styles.ts","../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import type { Node as PMNode } from '@tiptap/pm/model';\n\n/**\n * Collapses double newlines between pipe-delimited table rows into single\n * newlines. TipTap creates paragraph nodes for every Enter, and tiptap-markdown\n * serializes paragraphs as \\n\\n. GFM tables require single newlines between\n * rows to be parsed as a contiguous table block.\n *\n * Only affects lines that start/end with pipe characters — normal paragraph\n * breaks are preserved.\n */\nexport const normalizeTableNewlines = (text: string): string =>\n text.replace(/(\\|[^\\n]*)\\n\\n(\\|)/g, '$1\\n$2');\n\n/**\n * Whether the doc holds no content at all, i.e. it matches the schema's default\n * empty doc. `Editor#isEmpty` also reports true for docs made of structurally\n * empty nodes (a table of blank cells), which still carry real structure worth\n * serializing to markdown.\n */\nexport const isEditorDocEmpty = (doc: PMNode): boolean => {\n const defaultDoc = doc.type.createAndFill();\n return defaultDoc != null && doc.eq(defaultDoc);\n};\n","import { createGlobalStyle, type DefaultTheme } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\n\nimport { withAlpha } from '#src/lib/color';\nimport { semanticColor, semanticTokens } from '#src/lib/semanticColor';\n\n// Mention chips and selected table cells share the PDS accent wash. Opacity25 is 100% under\n// semantic light, so light mode keeps the solid CorePurple100 it painted before.\nconst accentWash = ({ theme }: { theme: DefaultTheme }) => {\n const tokens = semanticTokens(theme);\n return tokens ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25) : Color.CorePurple100;\n};\n\nexport default createGlobalStyle`\n /*\n * A long unbreakable token (URL, hash) otherwise sets the block's min-content\n * width; inside a flex row that lets the editor grow past its container so\n * nothing wraps. anywhere lets the token break, collapsing min-content so the\n * block stays within its container. break-word (which ProseMirror's own\n * injected base style sets via word-wrap) does NOT affect min-content, so it\n * cannot fix this. The doubled selector raises specificity above that base\n * rule, which has equal specificity and is injected after this one.\n */\n .ProseMirror.ProseMirror {\n overflow-wrap: anywhere;\n }\n .ProseMirror ul, .ProseMirror ol {\n padding-left: 30px;\n }\n .mention {\n background-color: ${accentWash};\n color: ${({ theme }) => semanticColor(theme, 'FgAccent', Color.CorePurple700)};\n border-radius: ${BorderRadius.Md};\n display: inline-flex;\n padding: 2px;\n align-items: center;\n gap: ${Spacing[1]};\n }\n\n /* Table styles applied in both edit and read-only views. */\n .ProseMirror table {\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n margin: ${Spacing[2]} 0;\n overflow: hidden;\n }\n .ProseMirror th,\n .ProseMirror td {\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n padding: ${Spacing[1]} ${Spacing[2]};\n vertical-align: top;\n box-sizing: border-box;\n min-width: 1em;\n position: relative;\n }\n .ProseMirror th {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceSecondary', Color.BackgroundSecondary)};\n font-weight: 500;\n text-align: left;\n }\n /* Cell-selection marker. */\n .ProseMirror .selectedCell:after {\n background-color: ${accentWash};\n content: '';\n inset: 0;\n pointer-events: none;\n position: absolute;\n z-index: 2;\n opacity: 0.4;\n }\n`;\n","import type { AnyExtension } from '@tiptap/core';\nimport Link from '@tiptap/extension-link';\nimport { Table, TableCell, TableHeader, TableRow } from '@tiptap/extension-table';\nimport type { EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, type EditorEvents, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport dompurify from 'dompurify';\nimport { noop } from 'lodash-es';\nimport { type FC, Fragment, type KeyboardEventHandler, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Markdown, type MarkdownStorage } from 'tiptap-markdown';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n BoldIcon,\n CapitalizeIcon,\n CaretDownIcon,\n GridIcon,\n ItalicIcon,\n LinkIcon,\n ListIcon,\n ListNumbersIcon,\n RotateCcwIcon,\n RotateCwIcon,\n} from '@persona/icons';\n\nimport Button from '#src/components/Button';\nimport Card from '#src/components/Card';\nimport DropdownMenu from '#src/components/DropdownMenu';\nimport FloatingToolbar, { ensureProtocol } from '#src/components/FloatingToolbar';\nimport { TextField } from '#src/components/FormField';\nimport Popover from '#src/components/Popover';\nimport { HStack } from '#src/components/Stack';\nimport { intersperse } from '#src/lib/intersperse';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { useOutsideClick } from '#src/lib/useOutsideClick';\nimport useToggle from '#src/lib/useToggle';\nimport { Z_INDICES } from '#src/lib/zindex';\nimport { focusWithinOutline } from '#src/mixins/focus';\nimport { Elevation } from '#src/variables/effect';\n\nimport { isEditorDocEmpty, normalizeTableNewlines } from './markdownUtils';\nimport EditorGlobalCss from './styles';\nimport type { ExtensionWithMenuBar } from './types';\n\nconst Bar = styled.div`\n display: flex;\n height: fit-content;\n padding: ${Spacing[1]} ${Spacing[1]};\n gap: 2px;\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', Color.BorderHairline)};\n`;\n\nconst TextEditor = styled.div`\n background-clip: padding-box;\n border-radius: ${Spacing[1]};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n ${semanticOnly(\n (tokens) => css`\n background-color: ${tokens.InputSurfaceDefault};\n color: ${tokens.FgPrimary};\n `,\n )}\n\n\n ${focusWithinOutline}\n`;\n\nexport const MenuBarItem = styled.button<{ isActive: boolean }>`\n background: ${({ theme }) => semanticColor(theme, 'InputSurfaceDefault', Color.PrimaryWhite)};\n ${semanticOnly(\n (tokens) => css`\n color: ${tokens.FgPrimary};\n\n &:disabled {\n color: ${tokens.FgDisabled};\n }\n `,\n )}\n display: flex;\n align-items: center;\n padding: ${Spacing[1]};\n cursor: pointer;\n border-radius: ${BorderRadius.Md};\n\n ${({ isActive, theme }) =>\n isActive &&\n css`\n background-color: ${semanticColor(theme, 'ActionNeutral', Color.BackgroundButtonDefault)};\n `};\n\n svg {\n margin: 0;\n }\n\n &:hover {\n box-shadow: ${Elevation.Low};\n }\n`;\n\nconst StyledCard = styled(Card)`\n min-width: 300px;\n padding: ${Spacing[3]};\n`;\n\nconst VerticalLine = styled.span`\n border-right: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\n// TODO (Amina) : Size configurable dropdown items\nconst StyledDropdownItem = styled(DropdownMenu.Item)`\n width: 100%;\n height: 30px;\n font-size: small;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport type MenuBarSection = 'undo-redo' | 'text-format' | 'text-style' | 'lists' | 'table';\ninterface MenuBarProps {\n editor: Editor | null;\n supportedSections?: Array<MenuBarSection>;\n}\n\nconst MenuBar: FC<MenuBarProps> = ({\n editor,\n supportedSections = ['undo-redo', 'text-format', 'text-style', 'lists'],\n}) => {\n const [isEditLinkModal, { enable: showEditLinkModal, disable: hideEditLinkModal }] = useToggle();\n const [linkUrl, setLinkUrl] = useState('');\n\n const editLinkModalCardRef = useRef<HTMLDivElement>(null);\n useOutsideClick({ ref: editLinkModalCardRef, onOutsideClick: hideEditLinkModal });\n\n if (!editor || supportedSections.length === 0) {\n return null;\n }\n\n const { view, state } = editor;\n const { from, to } = view.state.selection;\n const selectionText = state.doc.textBetween(from, to, '');\n\n const handleSetLink = (url: string) => {\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: ensureProtocol(url) })\n .run();\n hideEditLinkModal();\n };\n\n const handleLinkModalKeyDown: KeyboardEventHandler = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSetLink(linkUrl);\n }\n };\n\n // Collect menu bar contributions from extensions via options\n const extraMenuBars = editor.extensionManager.extensions\n .filter(\n (ext): ext is ExtensionWithMenuBar =>\n ext.type === 'extension' && 'extraMenuBar' in ext.options,\n )\n .map((ext) => ext.options.extraMenuBar);\n\n const textFormatItems = () => [\n {\n id: 'menu-bar__paragraph',\n label: 'Normal text',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().setParagraph().run(),\n },\n {\n id: 'menu-bar__h1',\n label: 'Heading 1',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n },\n {\n id: 'menu-bar__h2',\n label: 'Heading 2',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n },\n {\n id: 'menu-bar__h3',\n label: 'Heading 3',\n variant: 'basic' as const,\n type: 'button',\n onClick: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),\n },\n ];\n\n const sectionsMap: Record<MenuBarSection, React.ReactNode> = {\n // undo + redo controls\n ['undo-redo']: (\n <Fragment key='undo-redo'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__undo'\n type='button'\n aria-label='Undo'\n data-rte-menu-bar-item='undo'\n isActive={false}\n disabled={!editor.can().chain().focus().undo().run()}\n onClick={() => editor.chain().focus().undo().run()}\n >\n <RotateCcwIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__redo'\n type='button'\n aria-label='Redo'\n data-rte-menu-bar-item='redo'\n isActive={false}\n disabled={!editor.can().chain().focus().redo().run()}\n onClick={() => editor.chain().focus().redo().run()}\n >\n <RotateCwIcon />\n </MenuBarItem>\n </Fragment>\n ),\n // preset text sizes (normal, headings 1-3)\n ['text-format']: (\n <DropdownMenu\n key='text-format'\n contentProps={{\n // @ts-expect-error This adds it correctly as a data attribute to the dropdown menu\n // But it isn't defined in the DropdownMenuProps type\n 'data-rte-menu-bar-item': 'text-format-dropdown-menu',\n // Return focus to the editor (not the trigger) so the user can\n // type immediately after picking a format.\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n editor.commands.focus();\n },\n }}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__textFormats'\n type='button'\n aria-label='Text sizes'\n data-rte-menu-bar-item='text-format'\n isActive={false}\n >\n <CapitalizeIcon />\n <CaretDownIcon />\n </MenuBarItem>\n }\n >\n {textFormatItems().map((item) => (\n <StyledDropdownItem\n key={item.id}\n id={item.id}\n variant={item.variant}\n onClick={item.onClick}\n data-rte-menu-bar-item={item.id}\n >\n {item.label}\n </StyledDropdownItem>\n ))}\n </DropdownMenu>\n ),\n // bold, italic, link\n ['text-style']: (\n <Fragment key='text-style'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__bold'\n type='button'\n aria-label='Bold'\n data-rte-menu-bar-item='bold'\n isActive={editor.isActive('bold')}\n disabled={!editor.can().chain().focus().toggleBold().run()}\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <BoldIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__italic'\n type='button'\n aria-label='Italic'\n data-rte-menu-bar-item='italic'\n isActive={editor.isActive('italic')}\n disabled={!editor.can().chain().focus().toggleItalic().run()}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <ItalicIcon />\n </MenuBarItem>\n\n <Popover\n open={isEditLinkModal}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__link'\n type='button'\n aria-label='Link'\n data-rte-menu-bar-item='link'\n // disable link button if there is no selection and cursor is not on an existing link\n disabled={!editor.isActive('link') && selectionText === ''}\n isActive={editor.isActive('link')}\n onClick={() => {\n showEditLinkModal();\n setLinkUrl(editor.getAttributes('link').href || '');\n }}\n >\n <LinkIcon />\n </MenuBarItem>\n }\n >\n <Popover.Content side='bottom' align='center' style={{ zIndex: Z_INDICES.toast }}>\n <StyledCard elevated ref={editLinkModalCardRef}>\n <TextField\n size='sm'\n value={linkUrl}\n data-rte-menu-bar-item='link-url'\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={handleLinkModalKeyDown}\n />\n\n <HStack equal>\n <Button\n id='menu-bar__editLinkModal_cancel'\n size='sm'\n variant='basic'\n data-rte-menu-bar-item='link-cancel'\n onClick={hideEditLinkModal}\n >\n Cancel\n </Button>\n <Button\n id='menu-bar__editLinkModal_save'\n type='submit'\n size='sm'\n variant='primary'\n data-rte-menu-bar-item='link-save'\n onClick={() => {\n handleSetLink(linkUrl);\n hideEditLinkModal();\n }}\n >\n Save\n </Button>\n </HStack>\n </StyledCard>\n </Popover.Content>\n </Popover>\n </Fragment>\n ),\n // bullet list, ordered list\n ['lists']: (\n <Fragment key='lists'>\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__bulletList'\n type='button'\n aria-label='Bullet list'\n data-rte-menu-bar-item='bullet-list'\n isActive={editor.isActive('bulletList')}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <ListIcon />\n </MenuBarItem>\n\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__orderedList'\n type='button'\n aria-label='Ordered list'\n data-rte-menu-bar-item='ordered-list'\n isActive={editor.isActive('orderedList')}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListNumbersIcon />\n </MenuBarItem>\n </Fragment>\n ),\n // Insert table when outside one; edit operations when inside a cell.\n ['table']: editor.isActive('table') ? (\n <DropdownMenu\n key='table-actions'\n contentProps={{\n // @ts-expect-error data attribute on dropdown\n 'data-rte-menu-bar-item': 'table-actions-dropdown-menu',\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n editor.commands.focus();\n },\n }}\n trigger={\n <MenuBarItem\n tabIndex={-1}\n id='menu-bar__tableActions'\n type='button'\n aria-label='Table actions'\n data-rte-menu-bar-item='table-actions'\n isActive\n >\n <GridIcon />\n <CaretDownIcon />\n </MenuBarItem>\n }\n >\n <StyledDropdownItem\n id='menu-bar__tableAddRowAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-after'\n onClick={() => editor.chain().focus().addRowAfter().run()}\n >\n Add row below\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddRowBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-row-before'\n onClick={() => editor.chain().focus().addRowBefore().run()}\n >\n Add row above\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddColumnAfter'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-after'\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n >\n Add column right\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableAddColumnBefore'\n variant='basic'\n data-rte-menu-bar-item='table-add-column-before'\n onClick={() => editor.chain().focus().addColumnBefore().run()}\n >\n Add column left\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDeleteRow'\n variant='basic'\n data-rte-menu-bar-item='table-delete-row'\n onClick={() => editor.chain().focus().deleteRow().run()}\n >\n Delete row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDeleteColumn'\n variant='basic'\n data-rte-menu-bar-item='table-delete-column'\n onClick={() => editor.chain().focus().deleteColumn().run()}\n >\n Delete column\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableToggleHeaderRow'\n variant='basic'\n data-rte-menu-bar-item='table-toggle-header-row'\n onClick={() => editor.chain().focus().toggleHeaderRow().run()}\n >\n Toggle header row\n </StyledDropdownItem>\n <StyledDropdownItem\n id='menu-bar__tableDelete'\n variant='basic'\n data-rte-menu-bar-item='table-delete'\n onClick={() => editor.chain().focus().deleteTable().run()}\n >\n Delete table\n </StyledDropdownItem>\n </DropdownMenu>\n ) : (\n <MenuBarItem\n key='table-insert'\n tabIndex={-1}\n id='menu-bar__insertTable'\n type='button'\n aria-label='Insert table'\n data-rte-menu-bar-item='insert-table'\n isActive={false}\n disabled={\n !editor.can().chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()\n }\n onClick={() =>\n editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()\n }\n >\n <GridIcon />\n </MenuBarItem>\n ),\n };\n\n return (\n <Bar title='Menu bar'>\n {intersperse(\n [\n ...supportedSections.map((section) => sectionsMap[section]),\n ...(extraMenuBars.length > 0\n ? [\n <Fragment key='extra'>\n {extraMenuBars.map((contribution, i) => (\n <Fragment key={`extra-menu-${i}`}>\n {contribution.renderPopover(editor)}\n </Fragment>\n ))}\n </Fragment>,\n ]\n : []),\n ],\n (i) => (\n <VerticalLine key={`separator-${i}`} />\n ),\n )}\n </Bar>\n );\n};\n\nexport interface RichTextEditorProps {\n className?: string;\n defaultValue?: string;\n menuBarSections?: Array<MenuBarSection>;\n additionalEditorExtensions?: (AnyExtension | ExtensionWithMenuBar)[];\n returnMarkdown?: boolean;\n\n /**\n * Minimum height of the editor content.\n */\n editorContentMinHeight?: string;\n /**\n * Maximum height of the editor content.\n * If the editor content exceeds this height, the editor will scroll.\n */\n editorContentMaxHeight?: string;\n readOnly?: boolean;\n /** Show a PDS-styled bubble toolbar on selection (and inside tables). */\n floatingToolbar?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event?: KeyboardEvent) => void;\n onBlur?: () => void;\n}\n\n// Tiptap 3 types `editor.storage` per extension via module augmentation, which\n// tiptap-markdown does not ship, so read its storage through a typed accessor.\nconst getMarkdown = (editor: Editor): string =>\n (editor.storage as unknown as { markdown: MarkdownStorage }).markdown.getMarkdown();\n\nconst Text = styled.div`\n cursor: default;\n`;\n\nconst RichTextEditor: FC<RichTextEditorProps> = ({\n className,\n defaultValue,\n menuBarSections,\n additionalEditorExtensions = [],\n returnMarkdown = false,\n readOnly = false,\n floatingToolbar = false,\n editorContentMaxHeight,\n editorContentMinHeight,\n onChange = noop,\n onKeyDown = noop,\n onBlur = noop,\n}) => {\n // Keep a ref of the latest onKeyDown callback so TipTap's editorProps\n // always invokes the most recent version (not a stale closure from mount\n // time). Assigned during render so it is never a commit behind.\n const onKeyDownRef = useRef(onKeyDown);\n onKeyDownRef.current = onKeyDown;\n\n const editor = useEditor({\n extensions: [\n Markdown.configure({\n html: true,\n tightLists: true,\n tightListClass: 'tight',\n bulletListMarker: '-',\n linkify: false,\n breaks: false,\n transformPastedText: false,\n transformCopiedText: false,\n }),\n // Link is configured below; underline and trailingNode stay off to keep\n // the v2 behaviour. ListKeymap is new in v3 — kept on deliberately for\n // improved Backspace/Delete handling at list boundaries.\n StarterKit.configure({ link: false, underline: false, trailingNode: false }),\n // We are setting the inclusive attribute to false so that text following the initial text serving as the url placeholder\n // is not considered part of the placeholder.\n Link.extend({ inclusive: false }).configure({\n // autolink is buggy alongside handlebars syntax, so we choose to disable it. Links can still be created using the menu bar item.\n autolink: false,\n openOnClick: false,\n }),\n Table.configure({ resizable: false }),\n TableRow,\n TableHeader,\n TableCell,\n ...additionalEditorExtensions,\n ],\n content: dompurify.sanitize(defaultValue ?? ''),\n // The menu bar and floating toolbar read active marks during render, so keep\n // Tiptap 2's re-render-per-transaction behaviour.\n shouldRerenderOnTransaction: true,\n editorProps: {\n attributes: {\n title: 'Rich text editor',\n },\n handleKeyDown(_view: EditorView, event: KeyboardEvent) {\n onKeyDownRef.current?.(event);\n // Return true if the event was handled to prevent TipTap's default behavior\n return event.defaultPrevented;\n },\n },\n onUpdate: ({ editor }) => {\n let value = returnMarkdown ? getMarkdown(editor) : editor.getHTML();\n\n if (returnMarkdown && value) {\n value = normalizeTableNewlines(value);\n }\n\n // We need to return an empty string instead of 'value' because 'value' may be an empty set of html tags when\n // the doc is empty. By returning an empty string we have a consistent value to compare against.\n onChange(isEditorDocEmpty(editor.state.doc) ? '' : dompurify.sanitize(value));\n },\n onBlur: (e: EditorEvents['blur']) => {\n /**\n * We want to make sure we don't fire onBlur when the user clicks on a menu bar item.\n */\n // @ts-expect-error dataset is a valid attribute for a menu bar item but\n // the FocusEvent type doesn't include it for some reason.\n if (!e.event.relatedTarget?.dataset?.rteMenuBarItem) {\n onBlur();\n }\n },\n });\n\n useEffect(() => {\n if (editor) {\n const value = returnMarkdown ? getMarkdown(editor) : editor.getHTML();\n if (defaultValue !== value) {\n const { from, to } = editor.state.selection;\n editor\n .chain()\n // The defaultValue sync is not user input — keeping it out of undo\n // history stops Undo from reverting the freshly synced document.\n .command(({ tr }) => {\n tr.setMeta('addToHistory', false);\n return true;\n })\n .setContent(dompurify.sanitize(defaultValue), {\n emitUpdate: false,\n parseOptions: { preserveWhitespace: true },\n })\n .setTextSelection({ from, to })\n .run();\n }\n }\n }, [defaultValue, editor, returnMarkdown]);\n\n useEffect(() => {\n if (editor) {\n // second param prevents setEditable from emitting onUpdate\n // source: https://github.com/ueberdosis/tiptap/issues/4535#issuecomment-1767019649\n editor.setEditable(!readOnly, false);\n }\n }, [editor, readOnly]);\n\n if (!editor) {\n return null;\n }\n\n const resolvedSections: Array<MenuBarSection> = menuBarSections ?? [\n 'undo-redo',\n 'text-format',\n 'text-style',\n 'lists',\n 'table',\n ];\n\n return (\n // We need the global styles here to overwrite our systems general styles which hinder the rendering of some of the rich text in the editor.\n <>\n <EditorGlobalCss />\n {readOnly ? (\n <Text className={className}>\n <EditorContent editor={editor} />\n </Text>\n ) : (\n <TextEditor className={className}>\n <MenuBar supportedSections={resolvedSections} editor={editor} />\n {floatingToolbar && <FloatingToolbar editor={editor} />}\n <EditorContent\n style={{\n padding: Spacing[3],\n minHeight: editorContentMinHeight ?? 'none',\n maxHeight: editorContentMaxHeight ?? 'none',\n overflowY: 'auto',\n }}\n editor={editor}\n />\n </TextEditor>\n )}\n </>\n );\n};\nexport default RichTextEditor;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAa,0BAA0B,SACrC,KAAK,QAAQ,uBAAuB,SAAS;;;;;;;AAQ/C,MAAa,oBAAoB,QAAyB;CACxD,MAAM,aAAa,IAAI,KAAK,eAAe;AAC3C,QAAO,cAAc,QAAQ,IAAI,GAAG,WAAW;;;;ACbjD,MAAM,cAAc,EAAE,YAAqC;CACzD,MAAM,SAAS,eAAe,MAAM;AACpC,QAAO,SAAS,UAAU,OAAO,eAAe,OAAO,UAAU,GAAG,MAAM;;AAG5E,IAAA,iBAAe,iBAAiB;;;;;;;;;;;;;;;;;wBAiBR,WAAW;cACrB,EAAE,YAAY,cAAc,OAAO,YAAY,MAAM,cAAc,CAAC;qBAC7D,aAAa,GAAG;;;;WAI1B,QAAQ,GAAG;;;;;;;;cAQR,QAAQ,GAAG;;;;;yBAKA,EAAE,YAAY,cAAc,OAAO,gBAAgB,MAAM,cAAc,CAAC;eAClF,QAAQ,GAAG,GAAG,QAAQ,GAAG;;;;;;;yBAOf,EAAE,YACrB,cAAc,OAAO,oBAAoB,MAAM,oBAAoB,CAAC;;;;;;wBAMlD,WAAW;;;;;;;;;;;ACpBnC,MAAM,MAAM,OAAO,GAAG;;;aAGT,QAAQ,GAAG,GAAG,QAAQ,GAAG;;8BAER,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,eAAe,CAAC;;AAGxG,MAAM,aAAa,OAAO,GAAG;;mBAEV,QAAQ,GAAG;uBACP,EAAE,YAAY,cAAc,OAAO,gBAAgB,MAAM,cAAc,CAAC;IAC3F,cACC,WAAW,GAAG;0BACO,OAAO,oBAAoB;eACtC,OAAO,UAAU;MAE7B,CAAC;;;IAGA,mBAAmB;;AAGvB,MAAa,cAAc,OAAO,MAA6B;iBAC9C,EAAE,YAAY,cAAc,OAAO,uBAAuB,MAAM,aAAa,CAAC;IAC3F,cACC,WAAW,GAAG;eACJ,OAAO,UAAU;;;iBAGf,OAAO,WAAW;;MAGhC,CAAC;;;aAGS,QAAQ,GAAG;;mBAEL,aAAa,GAAG;;KAE9B,EAAE,UAAU,YACb,YACA,GAAG;0BACmB,cAAc,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;MACzF;;;;;;;oIAO0B;;;AAIhC,MAAM,aAAa,OAAOA,aAAK;;aAElB,QAAQ,GAAG;;AAGxB,MAAM,eAAe,OAAO,IAAI;6BACH,EAAE,YAAY,cAAc,OAAO,gBAAgB,MAAM,cAAc,CAAC;;AAIrG,MAAM,qBAAqB,OAAOC,qBAAa,KAAK;;;;;;;;AAepD,MAAM,WAA6B,EACjC,QACA,oBAAoB;CAAC;CAAa;CAAe;CAAc;CAAQ,OACnE;CACJ,MAAM,CAAC,iBAAiB,EAAE,QAAQ,mBAAmB,SAAS,uBAAuB,WAAW;CAChG,MAAM,CAAC,SAAS,cAAc,SAAS,GAAG;CAE1C,MAAM,uBAAuB,OAAuB,KAAK;AACzD,iBAAgB;EAAE,KAAK;EAAsB,gBAAgB;EAAmB,CAAC;AAEjF,KAAI,CAAC,UAAU,kBAAkB,WAAW,EAC1C,QAAO;CAGT,MAAM,EAAE,MAAM,UAAU;CACxB,MAAM,EAAE,MAAM,OAAO,KAAK,MAAM;CAChC,MAAM,gBAAgB,MAAM,IAAI,YAAY,MAAM,IAAI,GAAG;CAEzD,MAAM,iBAAiB,QAAgB;AACrC,MAAI,QAAQ,IAAI;AACd,UAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,OAAO,CAAC,WAAW,CAAC,KAAK;AAChE;;AAGF,SACG,OAAO,CACP,OAAO,CACP,gBAAgB,OAAO,CACvB,QAAQ,EAAE,MAAM,eAAe,IAAI,EAAE,CAAC,CACtC,KAAK;AACR,qBAAmB;;CAGrB,MAAM,0BAAgD,MAAM;AAC1D,MAAI,EAAE,QAAQ,SAAS;AACrB,KAAE,gBAAgB;AAClB,iBAAc,QAAQ;;;CAK1B,MAAM,gBAAgB,OAAO,iBAAiB,WAC3C,QACE,QACC,IAAI,SAAS,eAAe,kBAAkB,IAAI,QACrD,CACA,KAAK,QAAQ,IAAI,QAAQ,aAAa;CAEzC,MAAM,wBAAwB;EAC5B;GACE,IAAI;GACJ,OAAO;GACP,SAAS;GACT,MAAM;GACN,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;GAC3D;EACD;GACE,IAAI;GACJ,OAAO;GACP,SAAS;GACT,MAAM;GACN,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK;GACxE;EACD;GACE,IAAI;GACJ,OAAO;GACP,SAAS;GACT,MAAM;GACN,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK;GACxE;EACD;GACE,IAAI;GACJ,OAAO;GACP,SAAS;GACT,MAAM;GACN,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK;GACxE;EACF;CAED,MAAM,cAAuD;GAE1D,cACC,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,aAAD;GACE,UAAU;GACV,IAAG;GACH,MAAK;GACL,cAAW;GACX,0BAAuB;GACvB,UAAU;GACV,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;GACpD,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;aAElD,oBAAC,eAAD,EAAiB,CAAA;GACL,CAAA,EAEd,oBAAC,aAAD;GACE,UAAU;GACV,IAAG;GACH,MAAK;GACL,cAAW;GACX,0BAAuB;GACvB,UAAU;GACV,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;GACpD,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;aAElD,oBAAC,cAAD,EAAgB,CAAA;GACJ,CAAA,CACL,EAAA,EA1BG,YA0BH;GAGZ,gBACC,oBAACA,sBAAD;GAEE,cAAc;IAGZ,0BAA0B;IAG1B,mBAAmB,UAAU;AAC3B,WAAM,gBAAgB;AACtB,YAAO,SAAS,OAAO;;IAE1B;GACD,SACE,qBAAC,aAAD;IACE,UAAU;IACV,IAAG;IACH,MAAK;IACL,cAAW;IACX,0BAAuB;IACvB,UAAU;cANZ,CAQE,oBAAC,gBAAD,EAAkB,CAAA,EAClB,oBAAC,eAAD,EAAiB,CAAA,CACL;;aAGf,iBAAiB,CAAC,KAAK,SACtB,oBAAC,oBAAD;IAEE,IAAI,KAAK;IACT,SAAS,KAAK;IACd,SAAS,KAAK;IACd,0BAAwB,KAAK;cAE5B,KAAK;IACa,EAPd,KAAK,GAOS,CACrB;GACW,EArCT,cAqCS;GAGhB,eACC,qBAAC,UAAD,EAAA,UAAA;GACE,oBAAC,aAAD;IACE,UAAU;IACV,IAAG;IACH,MAAK;IACL,cAAW;IACX,0BAAuB;IACvB,UAAU,OAAO,SAAS,OAAO;IACjC,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK;IAC1D,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK;cAExD,oBAAC,UAAD,EAAY,CAAA;IACA,CAAA;GAEd,oBAAC,aAAD;IACE,UAAU;IACV,IAAG;IACH,MAAK;IACL,cAAW;IACX,0BAAuB;IACvB,UAAU,OAAO,SAAS,SAAS;IACnC,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;IAC5D,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;cAE1D,oBAAC,YAAD,EAAc,CAAA;IACF,CAAA;GAEd,oBAACC,iBAAD;IACE,MAAM;IACN,SACE,oBAAC,aAAD;KACE,UAAU;KACV,IAAG;KACH,MAAK;KACL,cAAW;KACX,0BAAuB;KAEvB,UAAU,CAAC,OAAO,SAAS,OAAO,IAAI,kBAAkB;KACxD,UAAU,OAAO,SAAS,OAAO;KACjC,eAAe;AACb,yBAAmB;AACnB,iBAAW,OAAO,cAAc,OAAO,CAAC,QAAQ,GAAG;;eAGrD,oBAAC,UAAD,EAAY,CAAA;KACA,CAAA;cAGhB,oBAACA,gBAAQ,SAAT;KAAiB,MAAK;KAAS,OAAM;KAAS,OAAO,EAAE,QAAQ,UAAU,OAAO;eAC9E,qBAAC,YAAD;MAAY,UAAA;MAAS,KAAK;gBAA1B,CACE,oBAAC,WAAD;OACE,MAAK;OACL,OAAO;OACP,0BAAuB;OACvB,WAAW,MAAM,WAAW,EAAE,OAAO,MAAM;OAC3C,WAAW;OACX,CAAA,EAEF,qBAAC,QAAD;OAAQ,OAAA;iBAAR,CACE,oBAAC,QAAD;QACE,IAAG;QACH,MAAK;QACL,SAAQ;QACR,0BAAuB;QACvB,SAAS;kBACV;QAEQ,CAAA,EACT,oBAAC,QAAD;QACE,IAAG;QACH,MAAK;QACL,MAAK;QACL,SAAQ;QACR,0BAAuB;QACvB,eAAe;AACb,uBAAc,QAAQ;AACtB,4BAAmB;;kBAEtB;QAEQ,CAAA,CACF;SACE;;KACG,CAAA;IACV,CAAA;GACD,EAAA,EArFG,aAqFH;GAGZ,UACC,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,aAAD;GACE,UAAU;GACV,IAAG;GACH,MAAK;GACL,cAAW;GACX,0BAAuB;GACvB,UAAU,OAAO,SAAS,aAAa;GACvC,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK;aAE9D,oBAAC,UAAD,EAAY,CAAA;GACA,CAAA,EAEd,oBAAC,aAAD;GACE,UAAU;GACV,IAAG;GACH,MAAK;GACL,cAAW;GACX,0BAAuB;GACvB,UAAU,OAAO,SAAS,cAAc;GACxC,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK;aAE/D,oBAAC,iBAAD,EAAmB,CAAA;GACP,CAAA,CACL,EAAA,EAxBG,QAwBH;GAGZ,UAAU,OAAO,SAAS,QAAQ,GACjC,qBAACD,sBAAD;GAEE,cAAc;IAEZ,0BAA0B;IAC1B,mBAAmB,UAAU;AAC3B,WAAM,gBAAgB;AACtB,YAAO,SAAS,OAAO;;IAE1B;GACD,SACE,qBAAC,aAAD;IACE,UAAU;IACV,IAAG;IACH,MAAK;IACL,cAAW;IACX,0BAAuB;IACvB,UAAA;cANF,CAQE,oBAAC,UAAD,EAAY,CAAA,EACZ,oBAAC,eAAD,EAAiB,CAAA,CACL;;aArBlB;IAwBE,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;eAC1D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;eAC3D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK;eAC7D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;eAC9D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;eACxD;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;eAC3D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;eAC9D;KAEoB,CAAA;IACrB,oBAAC,oBAAD;KACE,IAAG;KACH,SAAQ;KACR,0BAAuB;KACvB,eAAe,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;eAC1D;KAEoB,CAAA;IACR;KAvFT,gBAuFS,GAEf,oBAAC,aAAD;GAEE,UAAU;GACV,IAAG;GACH,MAAK;GACL,cAAW;GACX,0BAAuB;GACvB,UAAU;GACV,UACE,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY;IAAE,MAAM;IAAG,MAAM;IAAG,eAAe;IAAM,CAAC,CAAC,KAAK;GAE5F,eACE,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY;IAAE,MAAM;IAAG,MAAM;IAAG,eAAe;IAAM,CAAC,CAAC,KAAK;aAGrF,oBAAC,UAAD,EAAY,CAAA;GACA,EAfR,eAeQ;EAEjB;AAED,QACE,oBAAC,KAAD;EAAK,OAAM;YACR,YACC,CACE,GAAG,kBAAkB,KAAK,YAAY,YAAY,SAAS,EAC3D,GAAI,cAAc,SAAS,IACvB,CACE,oBAAC,UAAD,EAAA,UACG,cAAc,KAAK,cAAc,MAChC,oBAAC,UAAD,EAAA,UACG,aAAa,cAAc,OAAO,EAC1B,EAFI,cAAc,IAElB,CACX,EACO,EANG,QAMH,CACZ,GACD,EAAE,CACP,GACA,MACC,oBAAC,cAAD,EAAuC,EAApB,aAAa,IAAO,CAE1C;EACG,CAAA;;AA8BV,MAAM,eAAe,WAClB,OAAO,QAAqD,SAAS,aAAa;AAErF,MAAM,OAAO,OAAO,GAAG;;;AAIvB,MAAM,kBAA2C,EAC/C,WACA,cACA,iBACA,6BAA6B,EAAE,EAC/B,iBAAiB,OACjB,WAAW,OACX,kBAAkB,OAClB,wBACA,wBACA,WAAW,MACX,YAAY,MACZ,SAAS,WACL;CAIJ,MAAM,eAAe,OAAO,UAAU;AACtC,cAAa,UAAU;CAEvB,MAAM,SAAS,UAAU;EACvB,YAAY;GACV,SAAS,UAAU;IACjB,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,qBAAqB;IACtB,CAAC;GAIF,WAAW,UAAU;IAAE,MAAM;IAAO,WAAW;IAAO,cAAc;IAAO,CAAC;GAG5E,KAAK,OAAO,EAAE,WAAW,OAAO,CAAC,CAAC,UAAU;IAE1C,UAAU;IACV,aAAa;IACd,CAAC;GACF,MAAM,UAAU,EAAE,WAAW,OAAO,CAAC;GACrC;GACA;GACA;GACA,GAAG;GACJ;EACD,SAAS,UAAU,SAAS,gBAAgB,GAAG;EAG/C,6BAA6B;EAC7B,aAAa;GACX,YAAY,EACV,OAAO,oBACR;GACD,cAAc,OAAmB,OAAsB;AACrD,iBAAa,UAAU,MAAM;AAE7B,WAAO,MAAM;;GAEhB;EACD,WAAW,EAAE,aAAa;GACxB,IAAI,QAAQ,iBAAiB,YAAY,OAAO,GAAG,OAAO,SAAS;AAEnE,OAAI,kBAAkB,MACpB,SAAQ,uBAAuB,MAAM;AAKvC,YAAS,iBAAiB,OAAO,MAAM,IAAI,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC;;EAE/E,SAAS,MAA4B;;;;AAMnC,OAAI,CAAC,EAAE,MAAM,eAAe,SAAS,eACnC,SAAQ;;EAGb,CAAC;AAEF,iBAAgB;AACd,MAAI;OAEE,kBADU,iBAAiB,YAAY,OAAO,GAAG,OAAO,SAAS,GACzC;IAC1B,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM;AAClC,WACG,OAAO,CAGP,SAAS,EAAE,SAAS;AACnB,QAAG,QAAQ,gBAAgB,MAAM;AACjC,YAAO;MACP,CACD,WAAW,UAAU,SAAS,aAAa,EAAE;KAC5C,YAAY;KACZ,cAAc,EAAE,oBAAoB,MAAM;KAC3C,CAAC,CACD,iBAAiB;KAAE;KAAM;KAAI,CAAC,CAC9B,KAAK;;;IAGX;EAAC;EAAc;EAAQ;EAAe,CAAC;AAE1C,iBAAgB;AACd,MAAI,OAGF,QAAO,YAAY,CAAC,UAAU,MAAM;IAErC,CAAC,QAAQ,SAAS,CAAC;AAEtB,KAAI,CAAC,OACH,QAAO;AAWT,QAEE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAACE,gBAAD,EAAmB,CAAA,EAClB,WACC,oBAAC,MAAD;EAAiB;YACf,oBAAC,eAAD,EAAuB,QAAU,CAAA;EAC5B,CAAA,GAEP,qBAAC,YAAD;EAAuB;YAAvB;GACE,oBAAC,SAAD;IAAS,mBAlB+B,mBAAmB;KACjE;KACA;KACA;KACA;KACA;KACD;IAY6D;IAAU,CAAA;GAC/D,mBAAmB,oBAAC,iBAAD,EAAyB,QAAU,CAAA;GACvD,oBAAC,eAAD;IACE,OAAO;KACL,SAAS,QAAQ;KACjB,WAAW,0BAA0B;KACrC,WAAW,0BAA0B;KACrC,WAAW;KACZ;IACO;IACR,CAAA;GACS;IAEd,EAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import { i as SegmentedControlProps, n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-UV03Ujqn.mjs";
1
+ import { i as SegmentedControlProps, n as SegmentedControlItem, t as SegmentedControl } from "../../SegmentedControl-C4C5ge4p.mjs";
2
2
  export { SegmentedControl, SegmentedControl as default, SegmentedControlItem, SegmentedControlProps };
@@ -1,2 +1,2 @@
1
- import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-BLqHxJUz.mjs";
1
+ import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-By_LoM1n.mjs";
2
2
  export { Option, Select, Select as default, SelectHeader, SelectProps };
@@ -1,5 +1,5 @@
1
- import { a as Mode, i as FunctionFormRenderProps, n as CustomFunctionDetailRenderProps, o as OpenCodeChainFunctionPanel, s as PopoverFooterRenderer, t as CodeChainFunctionPanelRenderProps, u as ValueType } from "../../types-XjJqUj-p.mjs";
2
- import { t as ContextMenuExamples } from "../../listbox-options-CkwENvff.mjs";
1
+ import { a as Mode, i as FunctionFormRenderProps, n as CustomFunctionDetailRenderProps, o as OpenCodeChainFunctionPanel, s as PopoverFooterRenderer, t as CodeChainFunctionPanelRenderProps, u as ValueType } from "../../types-BnXYfNrd.mjs";
2
+ import { t as ContextMenuExamples } from "../../listbox-options-D0JmYWjB.mjs";
3
3
  import SmartTextInput, { SmartTextInputProps } from "../../SmartTextInput.mjs";
4
4
  import SmartTextInputField, { SmartTextInputFieldProps } from "../../SmartTextInputField.mjs";
5
5
  export { type CodeChainFunctionPanelRenderProps, type ContextMenuExamples, type CustomFunctionDetailRenderProps, type FunctionFormRenderProps, Mode, type OpenCodeChainFunctionPanel, type PopoverFooterRenderer, SmartTextInputField, type SmartTextInputFieldProps, type SmartTextInputProps, ValueType, SmartTextInput as default };
@@ -26,8 +26,8 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
26
26
  import { LoaderIcon } from "@persona/icons";
27
27
  import { ArrowLeftIcon as ArrowLeftIcon$1 } from "@persona/icons/12px";
28
28
  import { FocusScope, mergeProps, useComboBox, useDialog, useFocusManager, useInteractOutside, useListBox, useOption, usePopover } from "react-aria";
29
- import { Item, useComboBoxState } from "react-stately";
30
29
  import { createPortal } from "react-dom";
30
+ import { Item, useComboBoxState } from "react-stately";
31
31
  //#region src/components/SmartTextInput/parser/tree.ts
32
32
  function getChildren(node) {
33
33
  return node.children ?? [];
@@ -1,2 +1,2 @@
1
- import { _ as isASTMethodChainNode, a as ASTErrorNode, c as ASTIdentifierNode, d as ASTNumberNode, f as ASTParenCloseNode, g as isASTCustomFunctionNode, h as ErrorKind, i as ASTDotNode, l as ASTMethodChainNode, m as ASTStringNode, n as ASTChain, o as ASTFunctionNode, p as ASTParenOpenNode, r as ASTCustomFunctionNode, s as ASTFunctionParamType, t as ASTArrayNode, u as ASTNodeType, v as isAnyASTFunctionNode, y as isRealASTFunctionParamType } from "../../../../types-C2RhHxbE.mjs";
1
+ import { _ as isASTMethodChainNode, a as ASTErrorNode, c as ASTIdentifierNode, d as ASTNumberNode, f as ASTParenCloseNode, g as isASTCustomFunctionNode, h as ErrorKind, i as ASTDotNode, l as ASTMethodChainNode, m as ASTStringNode, n as ASTChain, o as ASTFunctionNode, p as ASTParenOpenNode, r as ASTCustomFunctionNode, s as ASTFunctionParamType, t as ASTArrayNode, u as ASTNodeType, v as isAnyASTFunctionNode, y as isRealASTFunctionParamType } from "../../../../types-Bu5rhBdH.mjs";
2
2
  export { ASTArrayNode, ASTChain, ASTCustomFunctionNode, ASTDotNode, ASTErrorNode, ASTFunctionNode, ASTFunctionParamType, ASTIdentifierNode, ASTMethodChainNode, ASTNodeType, ASTNumberNode, ASTParenCloseNode, ASTParenOpenNode, ASTStringNode, ErrorKind, isASTCustomFunctionNode, isASTMethodChainNode, isAnyASTFunctionNode, isRealASTFunctionParamType };
@@ -1,3 +1,3 @@
1
- import { f as ASTParenCloseNode, p as ASTParenOpenNode } from "../../../../types-C2RhHxbE.mjs";
2
- import { a as NodeType, c as isMethodChainNode, i as ErrorNode, n as ErrorKind, o as isASTChainNode, r as ErrorMessageByKind, s as isASTContainerNode, t as ASTNode } from "../../../../types-dmItSshr.mjs";
1
+ import { f as ASTParenCloseNode, p as ASTParenOpenNode } from "../../../../types-Bu5rhBdH.mjs";
2
+ import { a as NodeType, c as isMethodChainNode, i as ErrorNode, n as ErrorKind, o as isASTChainNode, r as ErrorMessageByKind, s as isASTContainerNode, t as ASTNode } from "../../../../types-Bg_sfqXE.mjs";
3
3
  export { ASTNode, ASTParenCloseNode, ASTParenOpenNode, ErrorKind, ErrorMessageByKind, ErrorNode, NodeType, isASTChainNode, isASTContainerNode, isMethodChainNode };
@@ -1,2 +1,2 @@
1
- import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-DrYxBkiF.mjs";
1
+ import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-BqRcxDQM.mjs";
2
2
  export { HStack, HStackProps, Stack, Stack as default, StackProps };
@@ -1,2 +1,2 @@
1
- import { n as StatusIndicator, t as STATUSES } from "../../StatusIndicator-pWl1-FLb.mjs";
1
+ import { n as StatusIndicator, t as STATUSES } from "../../StatusIndicator-Zf75KK3O.mjs";
2
2
  export { STATUSES, StatusIndicator, StatusIndicator as default };
@@ -1,2 +1,2 @@
1
- import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-sIBnBbHD.mjs";
1
+ import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-C2zp47FB.mjs";
2
2
  export { LabelBackgrounds, STICKER_COLOR_CONFIG, Sticker, Sticker as default, StickerContainer, StickerContentContainer, StickerProps, StyledTruncatedText };
@@ -1,9 +1,9 @@
1
- import { t as Table } from "../../Table-BJfcRpMX.mjs";
2
- import { t as TableHeaderCell } from "../../TableHeaderCell-BXgnxPpX.mjs";
3
- import { t as TableRow } from "../../TableRow-C1iGbNjZ.mjs";
4
- import { a as TableCellProps, c as TableTD, i as TableCell, l as TableTR, n as StickyTH, o as TableCellTitle, r as TableActionTD, s as TableIconTD, t as StickyTD } from "../../TableCell-KHx5JlqZ.mjs";
5
- import { t as TableHead } from "../../TableHead-D5A3bOwt.mjs";
6
- import { t as TableBody } from "../../TableBody-CBz2PjA-.mjs";
7
- import { t as TableTH } from "../../index-D2YFHdsf.mjs";
8
- import { t as TableLayout } from "../../TableLayout-Dy5ht8KO.mjs";
1
+ import { t as Table } from "../../Table-DGl3mDwc.mjs";
2
+ import { t as TableHeaderCell } from "../../TableHeaderCell-wKcp8rZj.mjs";
3
+ import { t as TableRow } from "../../TableRow-C011thJ3.mjs";
4
+ import { a as TableCellProps, c as TableTD, i as TableCell, l as TableTR, n as StickyTH, o as TableCellTitle, r as TableActionTD, s as TableIconTD, t as StickyTD } from "../../TableCell-Do9W49SJ.mjs";
5
+ import { t as TableHead } from "../../TableHead-CIXIrZGE.mjs";
6
+ import { t as TableBody } from "../../TableBody-BbC-H2qj.mjs";
7
+ import { t as TableTH } from "../../index-DntqThoS.mjs";
8
+ import { t as TableLayout } from "../../TableLayout-0-9FnNvt.mjs";
9
9
  export { StickyTD, StickyTH, Table, Table as default, TableActionTD, TableBody, TableCell, TableCellProps, TableCellTitle, TableHead, TableHeaderCell, TableIconTD, TableLayout, TableRow, TableTD, TableTH, TableTR };
@@ -1,3 +1,3 @@
1
- import { t as DragDirection } from "../../useTableBoxDragAndDrop-8NS4JBuI.mjs";
2
- import { a as TableBox, o as TableBoxContext, r as InlineEditConfig, s as TableBoxProps } from "../../TableBoxCell-DPXrw63v.mjs";
1
+ import { t as DragDirection } from "../../useTableBoxDragAndDrop-CCMADt-F.mjs";
2
+ import { a as TableBox, o as TableBoxContext, r as InlineEditConfig, s as TableBoxProps } from "../../TableBoxCell-DuvWTwOm.mjs";
3
3
  export { DragDirection, InlineEditConfig, TableBoxContext, TableBoxProps, TableBox as default };
@@ -1,2 +1,2 @@
1
- import { a as Label, c as ParagraphProps, d as TabularNumber, i as HeadingProps, l as Span, n as DisplayProps, o as LabelProps, r as Heading, s as Paragraph, t as Display, u as SpanProps } from "../../Text-SaoRBdB6.mjs";
1
+ import { a as Label, c as ParagraphProps, d as TabularNumber, i as HeadingProps, l as Span, n as DisplayProps, o as LabelProps, r as Heading, s as Paragraph, t as Display, u as SpanProps } from "../../Text-BgSW0yDb.mjs";
2
2
  export { Display, DisplayProps, Heading, HeadingProps, Label, LabelProps, Paragraph, ParagraphProps, Span, SpanProps, TabularNumber };
@@ -1,2 +1,2 @@
1
- import { n as TextAreaWithStyle, t as TextAreaProps } from "../../TextArea-gtSlghjy.mjs";
1
+ import { n as TextAreaWithStyle, t as TextAreaProps } from "../../TextArea-CyWv8jaV.mjs";
2
2
  export { TextAreaWithStyle as TextArea, TextAreaWithStyle as default, TextAreaProps };
@@ -1,2 +1,2 @@
1
- import { n as ToggleProps, t as Toggle } from "../../Toggle-BlvrM-Cw.mjs";
1
+ import { n as ToggleProps, t as Toggle } from "../../Toggle-BIJoB1AA.mjs";
2
2
  export { Toggle, Toggle as default, ToggleProps };
@@ -1,4 +1,4 @@
1
- import { i as TooltipWithIconProps, n as Tooltip, r as TooltipStandardProps, t as FloatingTooltip } from "../../Tooltip-CysnLwST.mjs";
2
- import { t as HelperTooltip } from "../../HelperTooltip-BLfPfJRN.mjs";
3
- import { n as TextWithDashedUnderline, t as TextUnderlineTooltip } from "../../TextUnderlineTooltip-DV61avLv.mjs";
1
+ import { i as TooltipWithIconProps, n as Tooltip, r as TooltipStandardProps, t as FloatingTooltip } from "../../Tooltip-CrpfAAfA.mjs";
2
+ import { t as HelperTooltip } from "../../HelperTooltip-jHTdkLQq.mjs";
3
+ import { n as TextWithDashedUnderline, t as TextUnderlineTooltip } from "../../TextUnderlineTooltip-CcyG4VkJ.mjs";
4
4
  export { FloatingTooltip, HelperTooltip, TextUnderlineTooltip, TextWithDashedUnderline, Tooltip, Tooltip as default, TooltipStandardProps, TooltipWithIconProps };
@@ -1,3 +1,3 @@
1
- import { n as VersionHistoryItemProps, r as VersionHistoryStatus } from "../../VersionHistoryItem-Px3ylMMq.mjs";
1
+ import { n as VersionHistoryItemProps, r as VersionHistoryStatus } from "../../VersionHistoryItem-Bo78T7y7.mjs";
2
2
  import { VersionHistory, VersionHistoryProps } from "../../VersionHistory.mjs";
3
3
  export { VersionHistory, VersionHistory as default, type VersionHistoryItemProps, type VersionHistoryProps, type VersionHistoryStatus };
@@ -7,9 +7,9 @@ import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
7
7
  import { n as Button, t as IconButton } from "../../IconButton-DftINsp7.mjs";
8
8
  import { n as DropdownMenu_default } from "../../DropdownMenu-Q8S-9rXm.mjs";
9
9
  import { t as Spinner } from "../../Spinner-CXb-KUs1.mjs";
10
- import { i as Modal_default } from "../../Modal-ziuzDCPN.mjs";
10
+ import { i as Modal_default } from "../../Modal-BBlilB-B.mjs";
11
11
  import { t as TextAreaWithStyle } from "../../TextArea-Dro-HH8O.mjs";
12
- import { n as StatusIndicator } from "../../StatusIndicator-pWl1-FLb.mjs";
12
+ import { n as StatusIndicator } from "../../StatusIndicator-Zf75KK3O.mjs";
13
13
  import { useCallback, useMemo, useState } from "react";
14
14
  import { Color, Spacing } from "@persona/design-tokens";
15
15
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { n as CompoundExpression, u as FilterRule } from "./types-DbOD5vE_.mjs";
1
+ import { n as CompoundExpression, u as FilterRule } from "./types-K57NVM0M.mjs";
2
2
 
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/compound-expression.d.ts
4
4
  declare function addRuleToGroup(compound: CompoundExpression, groupIndex: number, rule: FilterRule): CompoundExpression;
@@ -3,4 +3,4 @@ declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
3
3
  declare const MIN_PAGE_SIZE = 10;
4
4
  //#endregion
5
5
  export { MIN_PAGE_SIZE as n, DEFAULT_PAGE_SIZE_OPTIONS as t };
6
- //# sourceMappingURL=constants-CW1DRgwi.d.mts.map
6
+ //# sourceMappingURL=constants-B2NIZBD6.d.mts.map
@@ -7,4 +7,4 @@ declare function getColumnWidths(compact?: boolean): {
7
7
  };
8
8
  //#endregion
9
9
  export { getColumnWidths as t };
10
- //# sourceMappingURL=constants-D1hoZ5LO.d.mts.map
10
+ //# sourceMappingURL=constants-ChVceduh.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-CW1DRgwi.mjs";
1
+ import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-B2NIZBD6.mjs";
2
2
  export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE };
@@ -1,2 +1,2 @@
1
- import { t as getColumnWidths } from "./constants-D1hoZ5LO.mjs";
1
+ import { t as getColumnWidths } from "./constants-ChVceduh.mjs";
2
2
  export { getColumnWidths };
@@ -1,7 +1,7 @@
1
- import { i as To } from "./types-Dhz6VMKx.mjs";
1
+ import { i as To } from "./types-B5RbKp2V.mjs";
2
2
 
3
3
  //#region src/lib/router/createPath.d.ts
4
4
  declare function createPath(to: To): string;
5
5
  //#endregion
6
6
  export { createPath as t };
7
- //# sourceMappingURL=createPath-C4ZFkt93.d.mts.map
7
+ //# sourceMappingURL=createPath-D_opTH9A.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as createPath } from "./createPath-C4ZFkt93.mjs";
1
+ import { t as createPath } from "./createPath-D_opTH9A.mjs";
2
2
  export { createPath };
@@ -1,4 +1,4 @@
1
- import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from "./types-DbOD5vE_.mjs";
1
+ import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from "./types-K57NVM0M.mjs";
2
2
 
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/date-range-rule-value.d.ts
4
4
  /**
@@ -14,4 +14,4 @@ import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from
14
14
  declare function resolveDateRangeRuleValue(rule: Pick<FilterRule, 'operator' | 'relativeDate' | 'value'>, fieldType?: FilterFieldType): DateRangeFilterValue | null;
15
15
  //#endregion
16
16
  export { resolveDateRangeRuleValue as t };
17
- //# sourceMappingURL=date-range-rule-value-CrVBpQcf.d.mts.map
17
+ //# sourceMappingURL=date-range-rule-value-3izEoXmi.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-CrVBpQcf.mjs";
1
+ import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-3izEoXmi.mjs";
2
2
  export { resolveDateRangeRuleValue };
@@ -1,5 +1,5 @@
1
- import { a as DateFilterPreset } from "./types-rDQg74j-.mjs";
2
- import { t as DateFilterChange } from "./DateRangePicker-Nv4uNuIW.mjs";
1
+ import { a as DateFilterPreset } from "./types-FG-jOit9.mjs";
2
+ import { t as DateFilterChange } from "./DateRangePicker-fq-_pFpg.mjs";
3
3
  import { DateValue } from "@internationalized/date";
4
4
  import { RangeValue } from "@react-types/shared";
5
5
 
@@ -17,4 +17,4 @@ type DateRuleIntent = {
17
17
  declare function dateRuleIntent(change: DateFilterChange, writesEnabled: boolean): DateRuleIntent;
18
18
  //#endregion
19
19
  export { dateRuleIntent as t };
20
- //# sourceMappingURL=date-rule-intent-C1aptAoX.d.mts.map
20
+ //# sourceMappingURL=date-rule-intent-DjYIGcGO.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as dateRuleIntent } from "./date-rule-intent-C1aptAoX.mjs";
1
+ import { t as dateRuleIntent } from "./date-rule-intent-DjYIGcGO.mjs";
2
2
  export { dateRuleIntent };
@@ -1,5 +1,5 @@
1
- import { c as FilterFieldType, d as FilterRuleValue, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-DbOD5vE_.mjs";
2
- import { i as CommonStrings } from "./strings-BGXKl_m6.mjs";
1
+ import { c as FilterFieldType, d as FilterRuleValue, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-K57NVM0M.mjs";
2
+ import { i as CommonStrings } from "./strings-T-gsdqiJ.mjs";
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/display.d.ts
4
4
  interface ValueDisplayOptions {
5
5
  /** `PDSProvider` locale for date values; English format when omitted. */
@@ -1,5 +1,5 @@
1
- import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-5aSDuY-E.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-a44G08fS.mjs";
1
+ import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-1Xy4pnRV.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-CPr7YoG5.mjs";
3
3
 
4
4
  //#region src/components/DataTable/TableControls/FiltersV2/fieldPickerOptions.d.ts
5
5
  declare const FIELDS_SUBMENU_LABEL = "Fields";
@@ -1,4 +1,4 @@
1
- import { p as FilterSize } from "./types-DbOD5vE_.mjs";
1
+ import { p as FilterSize } from "./types-K57NVM0M.mjs";
2
2
  import * as _$react from "react";
3
3
 
4
4
  //#region src/components/DataTable/TableControls/FiltersV2/filter-size-context.d.ts
@@ -49,4 +49,4 @@ declare const FILTER_SIZE_TOKENS: Record<FilterSize, FilterSizeTokens>;
49
49
  declare function useFilterSizeTokens(override?: FilterSize): FilterSizeTokens;
50
50
  //#endregion
51
51
  export { useFilterBarSize as a, FilterSizeTokens as i, FilterBarContext as n, useFilterSizeTokens as o, FilterBarContextValue as r, FILTER_SIZE_TOKENS as t };
52
- //# sourceMappingURL=filter-size-context-CbT4pi3S.d.mts.map
52
+ //# sourceMappingURL=filter-size-context-BcpjykVw.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-CbT4pi3S.mjs";
1
+ import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-BcpjykVw.mjs";
2
2
  export { FILTER_SIZE_TOKENS, FilterBarContext, FilterBarContextValue, FilterSizeTokens, useFilterBarSize, useFilterSizeTokens };
@@ -1,4 +1,4 @@
1
- import { i as BaseFilterConfig, l as FilterTypeDefinition, t as ActiveFilter, u as FilterTypeResolver } from "./types-sUEmxsGM.mjs";
1
+ import { i as BaseFilterConfig, l as FilterTypeDefinition, t as ActiveFilter, u as FilterTypeResolver } from "./types-BiRayNak.mjs";
2
2
  import { ComponentProps } from "react";
3
3
  import * as _$styled_components0 from "styled-components";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
@@ -19,4 +19,4 @@ declare const Filters: <TFilter extends BaseFilterConfig>({
19
19
  }) => _$react_jsx_runtime0.JSX.Element;
20
20
  //#endregion
21
21
  export { resolveFilterTypeDefinition as a, isFilterActive as i, FiltersContainer as n, synchronizeActiveFilters as o, getActiveFilters as r, Filters as t };
22
- //# sourceMappingURL=filters-CkAFU8LV.d.mts.map
22
+ //# sourceMappingURL=filters-DUI7TLSn.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, o as synchronizeActiveFilters, r as getActiveFilters, t as Filters } from "./filters-CkAFU8LV.mjs";
1
+ import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, o as synchronizeActiveFilters, r as getActiveFilters, t as Filters } from "./filters-DUI7TLSn.mjs";
2
2
  export { Filters, FiltersContainer, getActiveFilters, isFilterActive, resolveFilterTypeDefinition, synchronizeActiveFilters };
@@ -27,4 +27,4 @@ declare function formatDateTime(dateTime: DateTime, options?: FormatDateTimeOpti
27
27
  declare function formatTimeZoneName(dateTime: DateTime, locale?: string): string;
28
28
  //#endregion
29
29
  export { formatDateTime as a, formatDate as i, LEGACY_DATETIME_FORMAT as n, formatTimeZoneName as o, LEGACY_DATE_FORMAT as r, usesLegacyDateFormat as s, FormatDateTimeOptions as t };
30
- //# sourceMappingURL=formatDateTime-BikGGrvq.d.mts.map
30
+ //# sourceMappingURL=formatDateTime-CgQvW3A5.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as formatDateTime, i as formatDate, n as LEGACY_DATETIME_FORMAT, o as formatTimeZoneName, r as LEGACY_DATE_FORMAT, s as usesLegacyDateFormat, t as FormatDateTimeOptions } from "./formatDateTime-BikGGrvq.mjs";
1
+ import { a as formatDateTime, i as formatDate, n as LEGACY_DATETIME_FORMAT, o as formatTimeZoneName, r as LEGACY_DATE_FORMAT, s as usesLegacyDateFormat, t as FormatDateTimeOptions } from "./formatDateTime-CgQvW3A5.mjs";
2
2
  export { FormatDateTimeOptions, LEGACY_DATETIME_FORMAT, LEGACY_DATE_FORMAT, formatDate, formatDateTime, formatTimeZoneName, usesLegacyDateFormat };
@@ -1,6 +1,6 @@
1
- import { n as CheckboxProps } from "./Checkbox-ZywrdT_h.mjs";
2
- import { i as CommonStrings } from "./strings-BGXKl_m6.mjs";
3
- import { S as RenderValueStickerFormatConfig, b as DatetimeConfig, d as DataTableColumnImageFormat, h as DataTableColumnStringFormat, l as DataTableColumnFormat, p as DataTableColumnPiiFormat, y as DateConfig } from "./types-DoJubhWu.mjs";
1
+ import { n as CheckboxProps } from "./Checkbox-EgYclGfH.mjs";
2
+ import { i as CommonStrings } from "./strings-T-gsdqiJ.mjs";
3
+ import { S as RenderValueStickerFormatConfig, b as DatetimeConfig, d as DataTableColumnImageFormat, h as DataTableColumnStringFormat, l as DataTableColumnFormat, p as DataTableColumnPiiFormat, y as DateConfig } from "./types-C31ecr0j.mjs";
4
4
  import { ReactNode } from "react";
5
5
 
6
6
  //#region src/components/DataTable/helpers.d.ts
@@ -87,4 +87,4 @@ declare const renderAsLightweightImage: (value: unknown, config?: DataTableColum
87
87
  declare const renderAsPDSFormat: <TData = unknown>(value: unknown, format?: DataTableColumnFormat<TData>, row?: TData, options?: PDSFormatOptions) => string | ReactNode;
88
88
  //#endregion
89
89
  export { renderAsDate as a, renderAsNumber as c, renderAsSticker as d, renderAsString as f, renderAsCopyableString as i, renderAsPDSFormat as l, renderAsCheckbox as n, renderAsDatetime as o, renderAsURL as p, renderAsCheckboxHeader as r, renderAsLightweightImage as s, PDSFormatOptions as t, renderAsPii as u };
90
- //# sourceMappingURL=helpers-Dvvcz-hL.d.mts.map
90
+ //# sourceMappingURL=helpers-CDZ7Zk9G.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "./helpers-Dvvcz-hL.mjs";
1
+ import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "./helpers-CDZ7Zk9G.mjs";
2
2
  export { PDSFormatOptions, renderAsCheckbox, renderAsCheckboxHeader, renderAsCopyableString, renderAsDate, renderAsDatetime, renderAsLightweightImage, renderAsNumber, renderAsPDSFormat, renderAsPii, renderAsSticker, renderAsString, renderAsURL };