@commercetools/nimbus 0.0.0-canary-20250904053156 → 0.0.0-canary-20250916130207

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 (510) hide show
  1. package/dist/accordion.d.ts +53 -88
  2. package/dist/chunks/{Button-CNBS3n5a.es.js → Button-BVaauB-c.es.js} +7 -7
  3. package/dist/chunks/{Button-CNBS3n5a.es.js.map → Button-BVaauB-c.es.js.map} +1 -1
  4. package/dist/chunks/Button-BtJHe9xY.cjs.js.map +1 -1
  5. package/dist/chunks/{DateField-Dm2Qlhbk.es.js → DateField-CoKm-f2B.es.js} +23 -23
  6. package/dist/chunks/{DateField-Dm2Qlhbk.es.js.map → DateField-CoKm-f2B.es.js.map} +1 -1
  7. package/dist/chunks/DateField-rweHHCKR.cjs.js.map +1 -1
  8. package/dist/chunks/{DatePicker-B1Unwe6C.es.js → DatePicker-Df8zjP9h.es.js} +23 -23
  9. package/dist/chunks/{DatePicker-B1Unwe6C.es.js.map → DatePicker-Df8zjP9h.es.js.map} +1 -1
  10. package/dist/chunks/{DatePicker-_aG-c1ms.cjs.js → DatePicker-e_53Dtsm.cjs.js} +2 -2
  11. package/dist/chunks/{DatePicker-_aG-c1ms.cjs.js.map → DatePicker-e_53Dtsm.cjs.js.map} +1 -1
  12. package/dist/chunks/{Dialog-C9HXv1rP.es.js → Dialog-Cva4CZ0O.es.js} +25 -25
  13. package/dist/chunks/{Dialog-C9HXv1rP.es.js.map → Dialog-Cva4CZ0O.es.js.map} +1 -1
  14. package/dist/chunks/{Dialog-DZm5Sj40.cjs.js → Dialog-K19USc7c.cjs.js} +2 -2
  15. package/dist/chunks/{Dialog-DZm5Sj40.cjs.js.map → Dialog-K19USc7c.cjs.js.map} +1 -1
  16. package/dist/chunks/{DragAndDrop-ChYb3tCX.es.js → DragAndDrop-Bbd4HbfU.es.js} +3 -3
  17. package/dist/chunks/{DragAndDrop-ChYb3tCX.es.js.map → DragAndDrop-Bbd4HbfU.es.js.map} +1 -1
  18. package/dist/chunks/DragAndDrop-cOfUfFj8.cjs.js.map +1 -1
  19. package/dist/chunks/FieldError-CXcEMuBf.es.js.map +1 -1
  20. package/dist/chunks/FieldError-DyGFfqST.cjs.js.map +1 -1
  21. package/dist/chunks/FocusScope-DPn5XtSy.cjs.js.map +1 -1
  22. package/dist/chunks/{FocusScope-CNO0fzPs.es.js → FocusScope-LBESYsSE.es.js} +5 -5
  23. package/dist/chunks/{FocusScope-CNO0fzPs.es.js.map → FocusScope-LBESYsSE.es.js.map} +1 -1
  24. package/dist/chunks/Form-BuOomA4T.cjs.js.map +1 -1
  25. package/dist/chunks/Form-CXcEMuBf.es.js.map +1 -1
  26. package/dist/chunks/{Group-Cfixd-fh.es.js → Group-DUCWhg7j.es.js} +5 -5
  27. package/dist/chunks/{Group-Cfixd-fh.es.js.map → Group-DUCWhg7j.es.js.map} +1 -1
  28. package/dist/chunks/Group-MdeByg6t.cjs.js.map +1 -1
  29. package/dist/chunks/{Header-CZkkXWBA.es.js → Header-Cfm2XlNT.es.js} +5 -5
  30. package/dist/chunks/{Header-CZkkXWBA.es.js.map → Header-Cfm2XlNT.es.js.map} +1 -1
  31. package/dist/chunks/{Header-D24AtheW.cjs.js → Header-zz3aj0c7.cjs.js} +2 -2
  32. package/dist/chunks/{Header-D24AtheW.cjs.js.map → Header-zz3aj0c7.cjs.js.map} +1 -1
  33. package/dist/chunks/{Heading-DEfy_f01.es.js → Heading-BX1t1Kmm.es.js} +15 -15
  34. package/dist/chunks/{Heading-DEfy_f01.es.js.map → Heading-BX1t1Kmm.es.js.map} +1 -1
  35. package/dist/chunks/Heading-BaW6t55l.cjs.js.map +1 -1
  36. package/dist/chunks/Hidden-CNJIJ63M.cjs.js.map +1 -1
  37. package/dist/chunks/Hidden-j3Lbt7xL.es.js.map +1 -1
  38. package/dist/chunks/{Input-BiHwUBo4.es.js → Input-FFG42ja6.es.js} +5 -5
  39. package/dist/chunks/{Input-BiHwUBo4.es.js.map → Input-FFG42ja6.es.js.map} +1 -1
  40. package/dist/chunks/Input-HBDt7LmM.cjs.js.map +1 -1
  41. package/dist/chunks/Keyboard-Clnp4zAC.es.js.map +1 -1
  42. package/dist/chunks/Keyboard-rYf2KxZN.cjs.js.map +1 -1
  43. package/dist/chunks/{Label-B2YyCdLl.es.js → Label-BdaLJ5Ha.es.js} +2 -2
  44. package/dist/chunks/{Label-B2YyCdLl.es.js.map → Label-BdaLJ5Ha.es.js.map} +1 -1
  45. package/dist/chunks/Label-BgrYyYXn.cjs.js.map +1 -1
  46. package/dist/chunks/{ListBox-Dnuz2Daa.cjs.js → ListBox-BHUS7cW2.cjs.js} +2 -2
  47. package/dist/chunks/{ListBox-Dnuz2Daa.cjs.js.map → ListBox-BHUS7cW2.cjs.js.map} +1 -1
  48. package/dist/chunks/{ListBox-DWMnhpDd.es.js → ListBox-BinkXiqM.es.js} +15 -15
  49. package/dist/chunks/{ListBox-DWMnhpDd.es.js.map → ListBox-BinkXiqM.es.js.map} +1 -1
  50. package/dist/chunks/OverlayArrow-CYjyBtg8.cjs.js.map +1 -1
  51. package/dist/chunks/{OverlayArrow-sJzRZNbO.es.js → OverlayArrow-Kk4VWzmN.es.js} +3 -3
  52. package/dist/chunks/{OverlayArrow-sJzRZNbO.es.js.map → OverlayArrow-Kk4VWzmN.es.js.map} +1 -1
  53. package/dist/chunks/ProgressBar-BA3sLh1k.cjs.js.map +1 -1
  54. package/dist/chunks/{ProgressBar-DjaUQI7N.es.js → ProgressBar-CwFHab_J.es.js} +5 -5
  55. package/dist/chunks/{ProgressBar-DjaUQI7N.es.js.map → ProgressBar-CwFHab_J.es.js.map} +1 -1
  56. package/dist/chunks/RSPContexts-B4yvXuBR.es.js.map +1 -1
  57. package/dist/chunks/RSPContexts-CkSl9jRK.cjs.js.map +1 -1
  58. package/dist/chunks/SSRProvider-Bc-sMhsT.cjs.js.map +1 -1
  59. package/dist/chunks/{SSRProvider-Cu8KibIK.es.js → SSRProvider-v-LddFEs.es.js} +2 -2
  60. package/dist/chunks/{SSRProvider-Cu8KibIK.es.js.map → SSRProvider-v-LddFEs.es.js.map} +1 -1
  61. package/dist/chunks/{SelectionManager-CtwcAiw4.es.js → SelectionManager-C-DrFCWk.es.js} +11 -11
  62. package/dist/chunks/{SelectionManager-CtwcAiw4.es.js.map → SelectionManager-C-DrFCWk.es.js.map} +1 -1
  63. package/dist/chunks/{SelectionManager-x0j8UpyW.cjs.js → SelectionManager-CmUHDDN6.cjs.js} +2 -2
  64. package/dist/chunks/{SelectionManager-x0j8UpyW.cjs.js.map → SelectionManager-CmUHDDN6.cjs.js.map} +1 -1
  65. package/dist/chunks/Separator-CTkcgvBE.cjs.js +18 -0
  66. package/dist/chunks/{Separator-CcMEmnGS.cjs.js.map → Separator-CTkcgvBE.cjs.js.map} +1 -1
  67. package/dist/chunks/{Separator-BCuq0iz5.es.js → Separator-D9Sio9QB.es.js} +7 -7
  68. package/dist/chunks/{Separator-BCuq0iz5.es.js.map → Separator-D9Sio9QB.es.js.map} +1 -1
  69. package/dist/chunks/Text-BWSfeB9p.cjs.js.map +1 -1
  70. package/dist/chunks/Text-DOcU1ycg.es.js.map +1 -1
  71. package/dist/chunks/TextArea-D3FFXnUy.cjs.js.map +1 -1
  72. package/dist/chunks/{TextArea-BmpgvS0R.es.js → TextArea-VPSW7sXC.es.js} +5 -5
  73. package/dist/chunks/{TextArea-BmpgvS0R.es.js.map → TextArea-VPSW7sXC.es.js.map} +1 -1
  74. package/dist/chunks/ToggleButton-CPAdPTCr.cjs.js.map +1 -1
  75. package/dist/chunks/{ToggleButton-C3JL0pgD.es.js → ToggleButton-CRaJMq4q.es.js} +7 -7
  76. package/dist/chunks/{ToggleButton-C3JL0pgD.es.js.map → ToggleButton-CRaJMq4q.es.js.map} +1 -1
  77. package/dist/chunks/{VisuallyHidden-VHEPK04F.es.js → VisuallyHidden-B0NiNh0E.es.js} +3 -3
  78. package/dist/chunks/{VisuallyHidden-VHEPK04F.es.js.map → VisuallyHidden-B0NiNh0E.es.js.map} +1 -1
  79. package/dist/chunks/VisuallyHidden-Bv_AJXZ7.cjs.js.map +1 -1
  80. package/dist/chunks/accordion-D06jBMOb.es.js +276 -0
  81. package/dist/chunks/accordion-D06jBMOb.es.js.map +1 -0
  82. package/dist/chunks/accordion-PyQH8Q_y.cjs.js +2 -0
  83. package/dist/chunks/accordion-PyQH8Q_y.cjs.js.map +1 -0
  84. package/dist/chunks/alert-BhezYOzs.cjs.js +2 -0
  85. package/dist/chunks/alert-BhezYOzs.cjs.js.map +1 -0
  86. package/dist/chunks/{alert-fGOiy9nj.es.js → alert-L8PXimjc.es.js} +59 -52
  87. package/dist/chunks/alert-L8PXimjc.es.js.map +1 -0
  88. package/dist/chunks/{badge-BJd-Q81M.es.js → badge-CHmfeeRs.es.js} +2 -2
  89. package/dist/chunks/{badge-BJd-Q81M.es.js.map → badge-CHmfeeRs.es.js.map} +1 -1
  90. package/dist/chunks/{button-DEgBQobR.es.js → button-BXR4T980.es.js} +7 -7
  91. package/dist/chunks/{button-DEgBQobR.es.js.map → button-BXR4T980.es.js.map} +1 -1
  92. package/dist/chunks/{button-DJYITnqc.cjs.js → button-BooV4ncX.cjs.js} +2 -2
  93. package/dist/chunks/{button-DJYITnqc.cjs.js.map → button-BooV4ncX.cjs.js.map} +1 -1
  94. package/dist/chunks/{calendar-Csq6ml4F.es.js → calendar-DBk-sVXs.es.js} +11 -11
  95. package/dist/chunks/{calendar-Csq6ml4F.es.js.map → calendar-DBk-sVXs.es.js.map} +1 -1
  96. package/dist/chunks/{calendar-BdL5nJXs.cjs.js → calendar-Dyy7Fm8f.cjs.js} +2 -2
  97. package/dist/chunks/{calendar-BdL5nJXs.cjs.js.map → calendar-Dyy7Fm8f.cjs.js.map} +1 -1
  98. package/dist/chunks/{card-BfUdf1Fy.es.js → card-D9fWUQqs.es.js} +3 -3
  99. package/dist/chunks/{card-BfUdf1Fy.es.js.map → card-D9fWUQqs.es.js.map} +1 -1
  100. package/dist/chunks/{checkbox-D-x7pyAC.cjs.js → checkbox-DDB06avu.cjs.js} +2 -2
  101. package/dist/chunks/{checkbox-D-x7pyAC.cjs.js.map → checkbox-DDB06avu.cjs.js.map} +1 -1
  102. package/dist/chunks/{checkbox-BFQXCWuz.es.js → checkbox-Vo5d1nT3.es.js} +10 -10
  103. package/dist/chunks/{checkbox-BFQXCWuz.es.js.map → checkbox-Vo5d1nT3.es.js.map} +1 -1
  104. package/dist/chunks/{combobox-DXzhNwE_.es.js → combobox-7BYJqsr6.es.js} +31 -31
  105. package/dist/chunks/{combobox-DXzhNwE_.es.js.map → combobox-7BYJqsr6.es.js.map} +1 -1
  106. package/dist/chunks/{combobox-Zdlr1WyV.cjs.js → combobox-BNYcRoYl.cjs.js} +2 -2
  107. package/dist/chunks/{combobox-Zdlr1WyV.cjs.js.map → combobox-BNYcRoYl.cjs.js.map} +1 -1
  108. package/dist/chunks/{context-R4YUlO9Y.es.js → context-DHW7D0wv.es.js} +2 -2
  109. package/dist/chunks/{context-R4YUlO9Y.es.js.map → context-DHW7D0wv.es.js.map} +1 -1
  110. package/dist/chunks/context-OoV8SSWX.cjs.js.map +1 -1
  111. package/dist/chunks/{data-table-M8ZE7bUF.es.js → data-table-6OCmas4y.es.js} +28 -28
  112. package/dist/chunks/{data-table-M8ZE7bUF.es.js.map → data-table-6OCmas4y.es.js.map} +1 -1
  113. package/dist/chunks/{data-table-DjXI7oCC.cjs.js → data-table-DFhiLq16.cjs.js} +2 -2
  114. package/dist/chunks/{data-table-DjXI7oCC.cjs.js.map → data-table-DFhiLq16.cjs.js.map} +1 -1
  115. package/dist/chunks/{date-input-C4NM5AFC.cjs.js → date-input-DaemC1P1.cjs.js} +2 -2
  116. package/dist/chunks/{date-input-C4NM5AFC.cjs.js.map → date-input-DaemC1P1.cjs.js.map} +1 -1
  117. package/dist/chunks/{date-input-BGa-cgj-.es.js → date-input-DzpneTE3.es.js} +4 -4
  118. package/dist/chunks/{date-input-BGa-cgj-.es.js.map → date-input-DzpneTE3.es.js.map} +1 -1
  119. package/dist/chunks/date-picker-Bmlxwhhp.es.js +222 -0
  120. package/dist/chunks/date-picker-Bmlxwhhp.es.js.map +1 -0
  121. package/dist/chunks/date-picker-Bqf7Y-W-.cjs.js +2 -0
  122. package/dist/chunks/date-picker-Bqf7Y-W-.cjs.js.map +1 -0
  123. package/dist/chunks/{date-range-picker-DLEQGtgO.cjs.js → date-range-picker-DHnuq-hT.cjs.js} +2 -2
  124. package/dist/chunks/{date-range-picker-DLEQGtgO.cjs.js.map → date-range-picker-DHnuq-hT.cjs.js.map} +1 -1
  125. package/dist/chunks/{date-range-picker-DL00UKjF.es.js → date-range-picker-b-Qkz44d.es.js} +15 -15
  126. package/dist/chunks/{date-range-picker-DL00UKjF.es.js.map → date-range-picker-b-Qkz44d.es.js.map} +1 -1
  127. package/dist/chunks/{divider-BdtT_f-U.es.js → divider-C11VwZPX.es.js} +3 -3
  128. package/dist/chunks/{divider-BdtT_f-U.es.js.map → divider-C11VwZPX.es.js.map} +1 -1
  129. package/dist/chunks/{divider-o2LVtQJm.cjs.js → divider-Lm98hgn6.cjs.js} +2 -2
  130. package/dist/chunks/{divider-o2LVtQJm.cjs.js.map → divider-Lm98hgn6.cjs.js.map} +1 -1
  131. package/dist/chunks/emotion-is-prop-valid.esm-BUuA3iy8.es.js +16 -0
  132. package/dist/chunks/emotion-is-prop-valid.esm-BUuA3iy8.es.js.map +1 -0
  133. package/dist/chunks/emotion-is-prop-valid.esm-ux_11lix.cjs.js +2 -0
  134. package/dist/chunks/emotion-is-prop-valid.esm-ux_11lix.cjs.js.map +1 -0
  135. package/dist/chunks/{extractStyleProps-bWKBkEco.cjs.js → extractStyleProps-CDKV7i5o.cjs.js} +2 -2
  136. package/dist/chunks/{extractStyleProps-bWKBkEco.cjs.js.map → extractStyleProps-CDKV7i5o.cjs.js.map} +1 -1
  137. package/dist/chunks/{extractStyleProps-CFQKiz8b.es.js → extractStyleProps-vXiS8lCp.es.js} +2 -2
  138. package/dist/chunks/{extractStyleProps-CFQKiz8b.es.js.map → extractStyleProps-vXiS8lCp.es.js.map} +1 -1
  139. package/dist/chunks/filterDOMProps-BSVCO5jK.es.js.map +1 -1
  140. package/dist/chunks/filterDOMProps-WUskt27c.cjs.js.map +1 -1
  141. package/dist/chunks/{focusSafely-DJpphVHF.es.js → focusSafely-DS3RePi9.es.js} +3 -3
  142. package/dist/chunks/{focusSafely-DJpphVHF.es.js.map → focusSafely-DS3RePi9.es.js.map} +1 -1
  143. package/dist/chunks/focusSafely-jDMW9aEx.cjs.js.map +1 -1
  144. package/dist/chunks/focusWithoutScrolling-BlyUcXdY.cjs.js.map +1 -1
  145. package/dist/chunks/focusWithoutScrolling-CDw3JYiq.es.js.map +1 -1
  146. package/dist/chunks/{form-field-DDTIZj9s.es.js → form-field-BF03DSg5.es.js} +4 -4
  147. package/dist/chunks/{form-field-DDTIZj9s.es.js.map → form-field-BF03DSg5.es.js.map} +1 -1
  148. package/dist/chunks/{form-field-D1lcT5f5.cjs.js → form-field-DMiHuyrx.cjs.js} +2 -2
  149. package/dist/chunks/{form-field-D1lcT5f5.cjs.js.map → form-field-DMiHuyrx.cjs.js.map} +1 -1
  150. package/dist/chunks/{group-CqfSQXe7.es.js → group-FqYM3Go1.es.js} +2 -2
  151. package/dist/chunks/{group-CqfSQXe7.es.js.map → group-FqYM3Go1.es.js.map} +1 -1
  152. package/dist/chunks/{icon-button-CPXhdrQY.cjs.js → icon-button-CFLScvMi.cjs.js} +2 -2
  153. package/dist/chunks/{icon-button-CPXhdrQY.cjs.js.map → icon-button-CFLScvMi.cjs.js.map} +1 -1
  154. package/dist/chunks/{icon-button-DPtCLr1A.es.js → icon-button-CKidhzN0.es.js} +2 -2
  155. package/dist/chunks/{icon-button-DPtCLr1A.es.js.map → icon-button-CKidhzN0.es.js.map} +1 -1
  156. package/dist/chunks/{icon-toggle-button-BItuQ_Lh.es.js → icon-toggle-button-CfrW8nn2.es.js} +2 -2
  157. package/dist/chunks/{icon-toggle-button-BItuQ_Lh.es.js.map → icon-toggle-button-CfrW8nn2.es.js.map} +1 -1
  158. package/dist/chunks/{icon-toggle-button-BG-F1KE7.cjs.js → icon-toggle-button-DJsMgc_N.cjs.js} +2 -2
  159. package/dist/chunks/{icon-toggle-button-BG-F1KE7.cjs.js.map → icon-toggle-button-DJsMgc_N.cjs.js.map} +1 -1
  160. package/dist/chunks/{index-BDXHumM1.es.js → index-BZioZQfA.es.js} +15 -8
  161. package/dist/chunks/index-BZioZQfA.es.js.map +1 -0
  162. package/dist/chunks/index-QBeUpHcK.cjs.js +4 -0
  163. package/dist/chunks/index-QBeUpHcK.cjs.js.map +1 -0
  164. package/dist/chunks/intlStrings-Cd44R5hT.es.js.map +1 -1
  165. package/dist/chunks/intlStrings-ClBuC6xN.cjs.js.map +1 -1
  166. package/dist/chunks/{kbd-BXN9aXRE.es.js → kbd-D10CDyIE.es.js} +2 -2
  167. package/dist/chunks/{kbd-BXN9aXRE.es.js.map → kbd-D10CDyIE.es.js.map} +1 -1
  168. package/dist/chunks/{link-CFK97sc0.es.js → link-CwFZrz1A.es.js} +4 -4
  169. package/dist/chunks/{link-CFK97sc0.es.js.map → link-CwFZrz1A.es.js.map} +1 -1
  170. package/dist/chunks/link-DWa1zIUJ.cjs.js.map +1 -1
  171. package/dist/chunks/loading-spinner-CSKBo1bM.cjs.js +2 -0
  172. package/dist/chunks/loading-spinner-CSKBo1bM.cjs.js.map +1 -0
  173. package/dist/chunks/{loading-spinner-CvggCl-H.es.js → loading-spinner-D3xWum_0.es.js} +29 -16
  174. package/dist/chunks/loading-spinner-D3xWum_0.es.js.map +1 -0
  175. package/dist/chunks/{make-element-focusable-C4ZHUSEU.es.js → make-element-focusable-BjLmsXKn.es.js} +3 -3
  176. package/dist/chunks/{make-element-focusable-C4ZHUSEU.es.js.map → make-element-focusable-BjLmsXKn.es.js.map} +1 -1
  177. package/dist/chunks/{menu-aLEA43vB.es.js → menu-DZVU5Z-r.es.js} +7 -7
  178. package/dist/chunks/{menu-aLEA43vB.es.js.map → menu-DZVU5Z-r.es.js.map} +1 -1
  179. package/dist/chunks/{menu-DxXsyeUG.cjs.js → menu-bzi7WVh0.cjs.js} +2 -2
  180. package/dist/chunks/{menu-DxXsyeUG.cjs.js.map → menu-bzi7WVh0.cjs.js.map} +1 -1
  181. package/dist/chunks/mergeProps-BA5Cwf5w.cjs.js.map +1 -1
  182. package/dist/chunks/{mergeProps-B_9syxhT.es.js → mergeProps-uJMZqSEt.es.js} +2 -2
  183. package/dist/chunks/{mergeProps-B_9syxhT.es.js.map → mergeProps-uJMZqSEt.es.js.map} +1 -1
  184. package/dist/chunks/{multiline-text-input-sr-8f5JV.es.js → multiline-text-input-BxC-HBJS.es.js} +4 -4
  185. package/dist/chunks/{multiline-text-input-sr-8f5JV.es.js.map → multiline-text-input-BxC-HBJS.es.js.map} +1 -1
  186. package/dist/chunks/{multiline-text-input-z1pACPVX.cjs.js → multiline-text-input-XDsu-5Ir.cjs.js} +2 -2
  187. package/dist/chunks/{multiline-text-input-z1pACPVX.cjs.js.map → multiline-text-input-XDsu-5Ir.cjs.js.map} +1 -1
  188. package/dist/chunks/{nimbus-provider-ClSAgdoD.cjs.js → nimbus-provider-DU9neylH.cjs.js} +2 -2
  189. package/dist/chunks/{nimbus-provider-ClSAgdoD.cjs.js.map → nimbus-provider-DU9neylH.cjs.js.map} +1 -1
  190. package/dist/chunks/{nimbus-provider-DaWtjnp-.es.js → nimbus-provider-mSQ00EQj.es.js} +3 -3
  191. package/dist/chunks/{nimbus-provider-DaWtjnp-.es.js.map → nimbus-provider-mSQ00EQj.es.js.map} +1 -1
  192. package/dist/chunks/number-DHvo-MDe.cjs.js.map +1 -1
  193. package/dist/chunks/number-dMxJejI6.es.js.map +1 -1
  194. package/dist/chunks/{number-input-D4DKdybl.es.js → number-input-86JlfGyD.es.js} +311 -297
  195. package/dist/chunks/number-input-86JlfGyD.es.js.map +1 -0
  196. package/dist/chunks/number-input-C6V-OoKY.cjs.js +2 -0
  197. package/dist/chunks/number-input-C6V-OoKY.cjs.js.map +1 -0
  198. package/dist/chunks/openLink-Ctl0AdAy.es.js.map +1 -1
  199. package/dist/chunks/openLink-DkCJYbzq.cjs.js.map +1 -1
  200. package/dist/chunks/pagination-D-PpTgDZ.es.js +160 -0
  201. package/dist/chunks/pagination-D-PpTgDZ.es.js.map +1 -0
  202. package/dist/chunks/pagination-DFmOo7da.cjs.js +2 -0
  203. package/dist/chunks/pagination-DFmOo7da.cjs.js.map +1 -0
  204. package/dist/chunks/password-input-BVDnOfvR.cjs.js +2 -0
  205. package/dist/chunks/password-input-BVDnOfvR.cjs.js.map +1 -0
  206. package/dist/chunks/password-input-BizG9N1_.es.js +67 -0
  207. package/dist/chunks/password-input-BizG9N1_.es.js.map +1 -0
  208. package/dist/chunks/platform-BDLy2vDY.cjs.js.map +1 -1
  209. package/dist/chunks/platform-Z5fvtFmM.es.js.map +1 -1
  210. package/dist/chunks/{progress-bar-Wka_eryr.es.js → progress-bar-8JDUwg7A.es.js} +4 -4
  211. package/dist/chunks/{progress-bar-Wka_eryr.es.js.map → progress-bar-8JDUwg7A.es.js.map} +1 -1
  212. package/dist/chunks/{progress-bar-Dz8r8vuu.cjs.js → progress-bar-EQdUUcCZ.cjs.js} +2 -2
  213. package/dist/chunks/{progress-bar-Dz8r8vuu.cjs.js.map → progress-bar-EQdUUcCZ.cjs.js.map} +1 -1
  214. package/dist/chunks/{radio-input-B0qTg-Fb.es.js → radio-input-CSatNmXz.es.js} +18 -18
  215. package/dist/chunks/{radio-input-B0qTg-Fb.es.js.map → radio-input-CSatNmXz.es.js.map} +1 -1
  216. package/dist/chunks/{radio-input-D_pe6uBJ.cjs.js → radio-input-CpWPWVHJ.cjs.js} +2 -2
  217. package/dist/chunks/{radio-input-D_pe6uBJ.cjs.js.map → radio-input-CpWPWVHJ.cjs.js.map} +1 -1
  218. package/dist/chunks/{range-calendar-CoAszOTq.es.js → range-calendar-6mWVLehI.es.js} +11 -11
  219. package/dist/chunks/{range-calendar-CoAszOTq.es.js.map → range-calendar-6mWVLehI.es.js.map} +1 -1
  220. package/dist/chunks/{range-calendar-T1Wlvm-Z.cjs.js → range-calendar-jXa_w-79.cjs.js} +2 -2
  221. package/dist/chunks/{range-calendar-T1Wlvm-Z.cjs.js.map → range-calendar-jXa_w-79.cjs.js.map} +1 -1
  222. package/dist/chunks/rich-text-input-B3s6cy-T.cjs.js +2 -0
  223. package/dist/chunks/rich-text-input-B3s6cy-T.cjs.js.map +1 -0
  224. package/dist/chunks/{rich-text-input-9MdutxJr.es.js → rich-text-input-D4cP13Oo.es.js} +182 -195
  225. package/dist/chunks/rich-text-input-D4cP13Oo.es.js.map +1 -0
  226. package/dist/chunks/scrollIntoView-BzIqpHLO.cjs.js.map +1 -1
  227. package/dist/chunks/{scrollIntoView-BYF_8_6g.es.js → scrollIntoView-DW7gkKpB.es.js} +2 -2
  228. package/dist/chunks/{scrollIntoView-BYF_8_6g.es.js.map → scrollIntoView-DW7gkKpB.es.js.map} +1 -1
  229. package/dist/chunks/select-BAV0cdM5.cjs.js +2 -0
  230. package/dist/chunks/select-BAV0cdM5.cjs.js.map +1 -0
  231. package/dist/chunks/{select-Dz2O_cFR.es.js → select-BEko2rwu.es.js} +124 -114
  232. package/dist/chunks/select-BEko2rwu.es.js.map +1 -0
  233. package/dist/chunks/slate-helpers-BwRHJO4o.es.js +6919 -0
  234. package/dist/chunks/slate-helpers-BwRHJO4o.es.js.map +1 -0
  235. package/dist/chunks/slate-helpers-CMAwCMk0.cjs.js +24 -0
  236. package/dist/chunks/slate-helpers-CMAwCMk0.cjs.js.map +1 -0
  237. package/dist/chunks/split-button-1uPesHKO.cjs.js +2 -0
  238. package/dist/chunks/split-button-1uPesHKO.cjs.js.map +1 -0
  239. package/dist/chunks/split-button-BR8DktKd.es.js +101 -0
  240. package/dist/chunks/split-button-BR8DktKd.es.js.map +1 -0
  241. package/dist/chunks/{switch-BToNhl42.cjs.js → switch-BjdhpPWV.cjs.js} +2 -2
  242. package/dist/chunks/{switch-BToNhl42.cjs.js.map → switch-BjdhpPWV.cjs.js.map} +1 -1
  243. package/dist/chunks/{switch-Poa2k7a5.es.js → switch-D08_asL7.es.js} +7 -7
  244. package/dist/chunks/{switch-Poa2k7a5.es.js.map → switch-D08_asL7.es.js.map} +1 -1
  245. package/dist/chunks/{tag-group-BCNooINR.es.js → tag-group-C8xH9Mqk.es.js} +22 -22
  246. package/dist/chunks/{tag-group-BCNooINR.es.js.map → tag-group-C8xH9Mqk.es.js.map} +1 -1
  247. package/dist/chunks/{tag-group-DzXa9m7w.cjs.js → tag-group-D6_THomO.cjs.js} +2 -2
  248. package/dist/chunks/{tag-group-DzXa9m7w.cjs.js.map → tag-group-D6_THomO.cjs.js.map} +1 -1
  249. package/dist/chunks/{text-DfQpupDi.es.js → text-Bi4Gre95.es.js} +2 -2
  250. package/dist/chunks/{text-DfQpupDi.es.js.map → text-Bi4Gre95.es.js.map} +1 -1
  251. package/dist/chunks/{text-input-5jfm2V1Y.cjs.js → text-input-BtBwAmoa.cjs.js} +2 -2
  252. package/dist/chunks/{text-input-5jfm2V1Y.cjs.js.map → text-input-BtBwAmoa.cjs.js.map} +1 -1
  253. package/dist/chunks/{text-input-Dqx8GVHm.es.js → text-input-bPh9j1cv.es.js} +5 -5
  254. package/dist/chunks/{text-input-Dqx8GVHm.es.js.map → text-input-bPh9j1cv.es.js.map} +1 -1
  255. package/dist/chunks/{time-input-B_PIpe-Z.cjs.js → time-input-DP2ci38H.cjs.js} +2 -2
  256. package/dist/chunks/{time-input-B_PIpe-Z.cjs.js.map → time-input-DP2ci38H.cjs.js.map} +1 -1
  257. package/dist/chunks/{time-input-DxKFrUee.es.js → time-input-Dg7SfITo.es.js} +3 -3
  258. package/dist/chunks/{time-input-DxKFrUee.es.js.map → time-input-Dg7SfITo.es.js.map} +1 -1
  259. package/dist/chunks/{toggle-button-Cg00z4JT.cjs.js → toggle-button-D8qdeoHu.cjs.js} +2 -2
  260. package/dist/chunks/{toggle-button-Cg00z4JT.cjs.js.map → toggle-button-D8qdeoHu.cjs.js.map} +1 -1
  261. package/dist/chunks/{toggle-button-C1bAVGF3.es.js → toggle-button-DeqTwBN5.es.js} +5 -5
  262. package/dist/chunks/{toggle-button-C1bAVGF3.es.js.map → toggle-button-DeqTwBN5.es.js.map} +1 -1
  263. package/dist/chunks/{toggle-button-group-jRdpdYyd.es.js → toggle-button-group-DXmJCAH5.es.js} +2 -2
  264. package/dist/chunks/{toggle-button-group-jRdpdYyd.es.js.map → toggle-button-group-DXmJCAH5.es.js.map} +1 -1
  265. package/dist/chunks/{toolbar-ClUkHnY4.cjs.js → toolbar-BfEvyuOt.cjs.js} +2 -2
  266. package/dist/chunks/{toolbar-ClUkHnY4.cjs.js.map → toolbar-BfEvyuOt.cjs.js.map} +1 -1
  267. package/dist/chunks/{toolbar-Oxkd8pfI.es.js → toolbar-Dv9YKOSU.es.js} +6 -6
  268. package/dist/chunks/{toolbar-Oxkd8pfI.es.js.map → toolbar-Dv9YKOSU.es.js.map} +1 -1
  269. package/dist/chunks/{tooltip-B1YdruCE.es.js → tooltip-BE3LzL7I.es.js} +8 -8
  270. package/dist/chunks/{tooltip-B1YdruCE.es.js.map → tooltip-BE3LzL7I.es.js.map} +1 -1
  271. package/dist/chunks/tooltip-g8-hEdZp.cjs.js.map +1 -1
  272. package/dist/chunks/use-formatting-state-Denpy3Zo.cjs.js +2 -0
  273. package/dist/chunks/use-formatting-state-Denpy3Zo.cjs.js.map +1 -0
  274. package/dist/chunks/use-formatting-state-RJvSR-Zg.es.js +247 -0
  275. package/dist/chunks/use-formatting-state-RJvSR-Zg.es.js.map +1 -0
  276. package/dist/chunks/useButton-BgBfaV_L.cjs.js.map +1 -1
  277. package/dist/chunks/{useButton-DAeSjgg9.es.js → useButton-CYfXo2Jm.es.js} +4 -4
  278. package/dist/chunks/{useButton-DAeSjgg9.es.js.map → useButton-CYfXo2Jm.es.js.map} +1 -1
  279. package/dist/chunks/{useCollator-BHMZd1r6.es.js → useCollator-Y-oU82PA.es.js} +2 -2
  280. package/dist/chunks/{useCollator-BHMZd1r6.es.js.map → useCollator-Y-oU82PA.es.js.map} +1 -1
  281. package/dist/chunks/useCollator-YVJAe1GI.cjs.js.map +1 -1
  282. package/dist/chunks/useControlledState-D0L6S_5r.cjs.js.map +1 -1
  283. package/dist/chunks/useControlledState-u436Wbp1.es.js.map +1 -1
  284. package/dist/chunks/{useDateFormatter-C7Kxzwro.es.js → useDateFormatter-BuXtxdR1.es.js} +3 -3
  285. package/dist/chunks/{useDateFormatter-C7Kxzwro.es.js.map → useDateFormatter-BuXtxdR1.es.js.map} +1 -1
  286. package/dist/chunks/useDateFormatter-CS19Cch2.cjs.js.map +1 -1
  287. package/dist/chunks/{useEvent-YHhqZvpU.es.js → useEvent-Bxxy8Y3o.es.js} +2 -2
  288. package/dist/chunks/{useEvent-YHhqZvpU.es.js.map → useEvent-Bxxy8Y3o.es.js.map} +1 -1
  289. package/dist/chunks/useEvent-CuUOU5WV.cjs.js.map +1 -1
  290. package/dist/chunks/useField-DmqO9k7a.cjs.js.map +1 -1
  291. package/dist/chunks/{useField-Ce9zQxmx.es.js → useField-Do87rtEk.es.js} +3 -3
  292. package/dist/chunks/{useField-Ce9zQxmx.es.js.map → useField-Do87rtEk.es.js.map} +1 -1
  293. package/dist/chunks/useFilter-CG8lxfCP.cjs.js.map +1 -1
  294. package/dist/chunks/{useFilter-DOfNzeZ9.es.js → useFilter-ClBjQ7pb.es.js} +2 -2
  295. package/dist/chunks/{useFilter-DOfNzeZ9.es.js.map → useFilter-ClBjQ7pb.es.js.map} +1 -1
  296. package/dist/chunks/{useFocus-DkWJ2TJC.es.js → useFocus-BmMqaBAE.es.js} +2 -2
  297. package/dist/chunks/{useFocus-DkWJ2TJC.es.js.map → useFocus-BmMqaBAE.es.js.map} +1 -1
  298. package/dist/chunks/useFocus-BtJ38vev.cjs.js.map +1 -1
  299. package/dist/chunks/useFocusRing-CzFer4bD.cjs.js.map +1 -1
  300. package/dist/chunks/{useFocusRing-updnkDQg.es.js → useFocusRing-SQNQ9yn0.es.js} +4 -4
  301. package/dist/chunks/{useFocusRing-updnkDQg.es.js.map → useFocusRing-SQNQ9yn0.es.js.map} +1 -1
  302. package/dist/chunks/{useFocusVisible-CWDaG0ze.es.js → useFocusVisible-BrqHqmb9.es.js} +3 -3
  303. package/dist/chunks/{useFocusVisible-CWDaG0ze.es.js.map → useFocusVisible-BrqHqmb9.es.js.map} +1 -1
  304. package/dist/chunks/useFocusVisible-Co0C61s7.cjs.js.map +1 -1
  305. package/dist/chunks/useFocusWithin-BDSWp3rw.cjs.js.map +1 -1
  306. package/dist/chunks/{useFocusWithin-ByYlHjju.es.js → useFocusWithin-Db5nhiOm.es.js} +2 -2
  307. package/dist/chunks/{useFocusWithin-ByYlHjju.es.js.map → useFocusWithin-Db5nhiOm.es.js.map} +1 -1
  308. package/dist/chunks/{useFocusable-CrsD8ZcF.es.js → useFocusable-BqRFi3ok.es.js} +5 -5
  309. package/dist/chunks/{useFocusable-CrsD8ZcF.es.js.map → useFocusable-BqRFi3ok.es.js.map} +1 -1
  310. package/dist/chunks/useFocusable-DCgmQxS1.cjs.js.map +1 -1
  311. package/dist/chunks/useFormReset--wPlnEOl.cjs.js.map +1 -1
  312. package/dist/chunks/{useFormReset-DurgUJL-.es.js → useFormReset-S3fDvX8g.es.js} +2 -2
  313. package/dist/chunks/{useFormReset-DurgUJL-.es.js.map → useFormReset-S3fDvX8g.es.js.map} +1 -1
  314. package/dist/chunks/useFormValidation-BEaCuNx1.cjs.js.map +1 -1
  315. package/dist/chunks/{useFormValidation-4hZ1_a6w.es.js → useFormValidation-CzvY15hR.es.js} +3 -3
  316. package/dist/chunks/{useFormValidation-4hZ1_a6w.es.js.map → useFormValidation-CzvY15hR.es.js.map} +1 -1
  317. package/dist/chunks/useGlobalListeners-BOOfV5Wh.es.js.map +1 -1
  318. package/dist/chunks/useGlobalListeners-DcmIlwrO.cjs.js.map +1 -1
  319. package/dist/chunks/useHighlightSelectionDescription-CpDw-Mgj.cjs.js.map +1 -1
  320. package/dist/chunks/{useHighlightSelectionDescription-BQg1WcM3.es.js → useHighlightSelectionDescription-VzA5DMaE.es.js} +6 -6
  321. package/dist/chunks/{useHighlightSelectionDescription-BQg1WcM3.es.js.map → useHighlightSelectionDescription-VzA5DMaE.es.js.map} +1 -1
  322. package/dist/chunks/{useHover-DhoE75lX.es.js → useHover-B6UI1gbJ.es.js} +2 -2
  323. package/dist/chunks/{useHover-DhoE75lX.es.js.map → useHover-B6UI1gbJ.es.js.map} +1 -1
  324. package/dist/chunks/useHover-CiP9jMFy.cjs.js.map +1 -1
  325. package/dist/chunks/{useLabel-BBmkkrPP.es.js → useLabel-BZKxdTDn.es.js} +2 -2
  326. package/dist/chunks/{useLabel-BBmkkrPP.es.js.map → useLabel-BZKxdTDn.es.js.map} +1 -1
  327. package/dist/chunks/useLabel-Y8tWagLu.cjs.js.map +1 -1
  328. package/dist/chunks/{useLocalizedStringFormatter-BRnRyxJp.es.js → useLocalizedStringFormatter-BpL9LNnx.es.js} +2 -2
  329. package/dist/chunks/{useLocalizedStringFormatter-BRnRyxJp.es.js.map → useLocalizedStringFormatter-BpL9LNnx.es.js.map} +1 -1
  330. package/dist/chunks/useLocalizedStringFormatter-sB0mFYtL.cjs.js.map +1 -1
  331. package/dist/chunks/useObjectRef-CaJ5pgjX.es.js.map +1 -1
  332. package/dist/chunks/useObjectRef-dXOJdONs.cjs.js.map +1 -1
  333. package/dist/chunks/{usePress-DHhWHfMz.es.js → usePress-BuSQ4Y3L.es.js} +6 -6
  334. package/dist/chunks/{usePress-DHhWHfMz.es.js.map → usePress-BuSQ4Y3L.es.js.map} +1 -1
  335. package/dist/chunks/usePress-C8-hLXJw.cjs.js.map +1 -1
  336. package/dist/chunks/useProgressBar-DWH4I0qR.cjs.js.map +1 -1
  337. package/dist/chunks/{useProgressBar-DHFmTHqL.es.js → useProgressBar-g3lb_jPQ.es.js} +4 -4
  338. package/dist/chunks/{useProgressBar-DHFmTHqL.es.js.map → useProgressBar-g3lb_jPQ.es.js.map} +1 -1
  339. package/dist/chunks/{useSingleSelectListState-C_48GoKf.cjs.js → useSingleSelectListState-C-E1yca1.cjs.js} +2 -2
  340. package/dist/chunks/{useSingleSelectListState-C_48GoKf.cjs.js.map → useSingleSelectListState-C-E1yca1.cjs.js.map} +1 -1
  341. package/dist/chunks/{useSingleSelectListState-DZavH1SN.es.js → useSingleSelectListState-CUkiyLA6.es.js} +2 -2
  342. package/dist/chunks/{useSingleSelectListState-DZavH1SN.es.js.map → useSingleSelectListState-CUkiyLA6.es.js.map} +1 -1
  343. package/dist/chunks/useSpinButton-DA7sVP3T.cjs.js.map +1 -1
  344. package/dist/chunks/{useSpinButton-C9DPDo0r.es.js → useSpinButton-DedtXIGZ.es.js} +3 -3
  345. package/dist/chunks/{useSpinButton-C9DPDo0r.es.js.map → useSpinButton-DedtXIGZ.es.js.map} +1 -1
  346. package/dist/chunks/{useSyncRef-DGRbdR4H.es.js → useSyncRef-Cipkqs1s.es.js} +2 -2
  347. package/dist/chunks/{useSyncRef-DGRbdR4H.es.js.map → useSyncRef-Cipkqs1s.es.js.map} +1 -1
  348. package/dist/chunks/useSyncRef-bcjp9eId.cjs.js.map +1 -1
  349. package/dist/chunks/useTextField-BcthGRd8.cjs.js.map +1 -1
  350. package/dist/chunks/{useTextField-BnL6tOdd.es.js → useTextField-tbVMyexr.es.js} +7 -7
  351. package/dist/chunks/{useTextField-BnL6tOdd.es.js.map → useTextField-tbVMyexr.es.js.map} +1 -1
  352. package/dist/chunks/{useToggle-DqruaaTq.es.js → useToggle-CoHAX6Sy.es.js} +5 -5
  353. package/dist/chunks/{useToggle-DqruaaTq.es.js.map → useToggle-CoHAX6Sy.es.js.map} +1 -1
  354. package/dist/chunks/useToggle-VJWgbeCC.cjs.js.map +1 -1
  355. package/dist/chunks/useToggleState-Dl-o05wQ.cjs.js.map +1 -1
  356. package/dist/chunks/useToggleState-Uh0wTgdI.es.js.map +1 -1
  357. package/dist/chunks/{useToolbar-CLH6Sjes.es.js → useToolbar-B1WYuGxA.es.js} +4 -4
  358. package/dist/chunks/{useToolbar-CLH6Sjes.es.js.map → useToolbar-B1WYuGxA.es.js.map} +1 -1
  359. package/dist/chunks/useToolbar-Bqn3EANT.cjs.js.map +1 -1
  360. package/dist/chunks/useUpdateEffect-C5YQs_1w.cjs.js.map +1 -1
  361. package/dist/chunks/useUpdateEffect-CCDx8D4X.es.js.map +1 -1
  362. package/dist/chunks/utils-BGHwK7fd.cjs.js.map +1 -1
  363. package/dist/chunks/utils-BHdR5Nww.cjs.js.map +1 -1
  364. package/dist/chunks/{utils-BkdW_cdL.es.js → utils-CsKCu3xh.es.js} +2 -2
  365. package/dist/chunks/{utils-BkdW_cdL.es.js.map → utils-CsKCu3xh.es.js.map} +1 -1
  366. package/dist/chunks/{utils-jpfA6kxk.es.js → utils-d3Zmq36h.es.js} +2 -2
  367. package/dist/chunks/{utils-jpfA6kxk.es.js.map → utils-d3Zmq36h.es.js.map} +1 -1
  368. package/dist/chunks/{visually-hidden-BluyWhUI.es.js → visually-hidden-09RsVX6x.es.js} +2 -2
  369. package/dist/chunks/{visually-hidden-BluyWhUI.es.js.map → visually-hidden-09RsVX6x.es.js.map} +1 -1
  370. package/dist/components/accordion.cjs +1 -1
  371. package/dist/components/accordion.es.js +1 -1
  372. package/dist/components/alert.cjs +1 -1
  373. package/dist/components/alert.es.js +1 -1
  374. package/dist/components/badge.es.js +1 -1
  375. package/dist/components/button.cjs +1 -1
  376. package/dist/components/button.es.js +1 -1
  377. package/dist/components/calendar.cjs +1 -1
  378. package/dist/components/calendar.es.js +1 -1
  379. package/dist/components/card.es.js +1 -1
  380. package/dist/components/checkbox.cjs +1 -1
  381. package/dist/components/checkbox.es.js +1 -1
  382. package/dist/components/combobox.cjs +1 -1
  383. package/dist/components/combobox.es.js +1 -1
  384. package/dist/components/components.cjs +1 -1
  385. package/dist/components/components.es.js +70 -68
  386. package/dist/components/components.es.js.map +1 -1
  387. package/dist/components/data-table.cjs +1 -1
  388. package/dist/components/data-table.es.js +1 -1
  389. package/dist/components/date-input.cjs +1 -1
  390. package/dist/components/date-input.es.js +1 -1
  391. package/dist/components/date-picker.cjs +1 -1
  392. package/dist/components/date-picker.es.js +1 -1
  393. package/dist/components/date-range-picker.cjs +1 -1
  394. package/dist/components/date-range-picker.es.js +1 -1
  395. package/dist/components/divider.cjs +1 -1
  396. package/dist/components/divider.es.js +1 -1
  397. package/dist/components/form-field.cjs +1 -1
  398. package/dist/components/form-field.es.js +1 -1
  399. package/dist/components/group.es.js +1 -1
  400. package/dist/components/hooks.cjs +1 -1
  401. package/dist/components/hooks.es.js +1 -1
  402. package/dist/components/icon-button.cjs +1 -1
  403. package/dist/components/icon-button.es.js +1 -1
  404. package/dist/components/icon-toggle-button.cjs +1 -1
  405. package/dist/components/icon-toggle-button.es.js +1 -1
  406. package/dist/components/kbd.es.js +1 -1
  407. package/dist/components/link.es.js +1 -1
  408. package/dist/components/loading-spinner.cjs +1 -1
  409. package/dist/components/loading-spinner.es.js +1 -1
  410. package/dist/components/multiline-text-input.cjs +1 -1
  411. package/dist/components/multiline-text-input.es.js +1 -1
  412. package/dist/components/nimbus-provider.cjs +1 -1
  413. package/dist/components/nimbus-provider.es.js +1 -1
  414. package/dist/components/number-input.cjs +1 -1
  415. package/dist/components/number-input.es.js +1 -1
  416. package/dist/components/pagination.cjs +2 -0
  417. package/dist/components/pagination.cjs.map +1 -0
  418. package/dist/components/pagination.es.js +5 -0
  419. package/dist/components/pagination.es.js.map +1 -0
  420. package/dist/components/password-input.cjs +1 -1
  421. package/dist/components/password-input.es.js +1 -1
  422. package/dist/components/popover.cjs +1 -1
  423. package/dist/components/popover.es.js +1 -1
  424. package/dist/components/progress-bar.cjs +1 -1
  425. package/dist/components/progress-bar.es.js +1 -1
  426. package/dist/components/radio-input.cjs +1 -1
  427. package/dist/components/radio-input.es.js +1 -1
  428. package/dist/components/range-calendar.cjs +1 -1
  429. package/dist/components/range-calendar.es.js +1 -1
  430. package/dist/components/rich-text-input.cjs +1 -1
  431. package/dist/components/rich-text-input.es.js +1 -1
  432. package/dist/components/select.cjs +1 -1
  433. package/dist/components/select.es.js +1 -1
  434. package/dist/components/split-button.cjs +1 -1
  435. package/dist/components/split-button.es.js +1 -1
  436. package/dist/components/switch.cjs +1 -1
  437. package/dist/components/switch.es.js +1 -1
  438. package/dist/components/tag-group.cjs +1 -1
  439. package/dist/components/tag-group.es.js +1 -1
  440. package/dist/components/text-input.cjs +1 -1
  441. package/dist/components/text-input.es.js +1 -1
  442. package/dist/components/text.es.js +1 -1
  443. package/dist/components/time-input.cjs +1 -1
  444. package/dist/components/time-input.es.js +1 -1
  445. package/dist/components/toggle-button-group.es.js +1 -1
  446. package/dist/components/toggle-button.cjs +1 -1
  447. package/dist/components/toggle-button.es.js +1 -1
  448. package/dist/components/toolbar.cjs +1 -1
  449. package/dist/components/toolbar.es.js +1 -1
  450. package/dist/components/tooltip.es.js +2 -2
  451. package/dist/components/utils.cjs +1 -1
  452. package/dist/components/utils.es.js +2 -2
  453. package/dist/components/visually-hidden.es.js +1 -1
  454. package/dist/components.d.ts +98 -88
  455. package/dist/index.cjs +1 -1
  456. package/dist/index.cjs.map +1 -1
  457. package/dist/index.d.ts +98 -87
  458. package/dist/index.es.js +62 -60
  459. package/dist/index.es.js.map +1 -1
  460. package/dist/pagination.d.ts +46 -0
  461. package/dist/select.d.ts +9 -0
  462. package/dist/split-button.d.ts +5 -3
  463. package/package.json +19 -18
  464. package/dist/chunks/Separator-CcMEmnGS.cjs.js +0 -18
  465. package/dist/chunks/accordion-EDJoghXQ.cjs.js +0 -2
  466. package/dist/chunks/accordion-EDJoghXQ.cjs.js.map +0 -1
  467. package/dist/chunks/accordion-UL4pfC2d.es.js +0 -223
  468. package/dist/chunks/accordion-UL4pfC2d.es.js.map +0 -1
  469. package/dist/chunks/alert-Ce4-sHmy.cjs.js +0 -2
  470. package/dist/chunks/alert-Ce4-sHmy.cjs.js.map +0 -1
  471. package/dist/chunks/alert-fGOiy9nj.es.js.map +0 -1
  472. package/dist/chunks/date-picker-ChoImuv_.cjs.js +0 -2
  473. package/dist/chunks/date-picker-ChoImuv_.cjs.js.map +0 -1
  474. package/dist/chunks/date-picker-S6C2mWMs.es.js +0 -190
  475. package/dist/chunks/date-picker-S6C2mWMs.es.js.map +0 -1
  476. package/dist/chunks/emotion-is-prop-valid.esm-Bb7Ou5_X.cjs.js +0 -2
  477. package/dist/chunks/emotion-is-prop-valid.esm-Bb7Ou5_X.cjs.js.map +0 -1
  478. package/dist/chunks/emotion-is-prop-valid.esm-qvxbqhmq.es.js +0 -16
  479. package/dist/chunks/emotion-is-prop-valid.esm-qvxbqhmq.es.js.map +0 -1
  480. package/dist/chunks/index-B3DGNvyC.cjs.js +0 -4
  481. package/dist/chunks/index-B3DGNvyC.cjs.js.map +0 -1
  482. package/dist/chunks/index-BDXHumM1.es.js.map +0 -1
  483. package/dist/chunks/loading-spinner-CvggCl-H.es.js.map +0 -1
  484. package/dist/chunks/loading-spinner-DdYXuYkg.cjs.js +0 -2
  485. package/dist/chunks/loading-spinner-DdYXuYkg.cjs.js.map +0 -1
  486. package/dist/chunks/number-input-BszmEIip.cjs.js +0 -2
  487. package/dist/chunks/number-input-BszmEIip.cjs.js.map +0 -1
  488. package/dist/chunks/number-input-D4DKdybl.es.js.map +0 -1
  489. package/dist/chunks/password-input-7AyAmLgJ.es.js +0 -50
  490. package/dist/chunks/password-input-7AyAmLgJ.es.js.map +0 -1
  491. package/dist/chunks/password-input-BtvFF-4B.cjs.js +0 -2
  492. package/dist/chunks/password-input-BtvFF-4B.cjs.js.map +0 -1
  493. package/dist/chunks/rich-text-input-9MdutxJr.es.js.map +0 -1
  494. package/dist/chunks/rich-text-input-D36fnIHb.cjs.js +0 -7
  495. package/dist/chunks/rich-text-input-D36fnIHb.cjs.js.map +0 -1
  496. package/dist/chunks/select-DFNyky2d.cjs.js +0 -2
  497. package/dist/chunks/select-DFNyky2d.cjs.js.map +0 -1
  498. package/dist/chunks/select-Dz2O_cFR.es.js.map +0 -1
  499. package/dist/chunks/slate-helpers-CcSj-DBm.cjs.js +0 -24
  500. package/dist/chunks/slate-helpers-CcSj-DBm.cjs.js.map +0 -1
  501. package/dist/chunks/slate-helpers-DsTiLoO8.es.js +0 -9042
  502. package/dist/chunks/slate-helpers-DsTiLoO8.es.js.map +0 -1
  503. package/dist/chunks/split-button-BIMKDmUe.cjs.js +0 -2
  504. package/dist/chunks/split-button-BIMKDmUe.cjs.js.map +0 -1
  505. package/dist/chunks/split-button-C5Op1s7Z.es.js +0 -103
  506. package/dist/chunks/split-button-C5Op1s7Z.es.js.map +0 -1
  507. package/dist/chunks/use-formatting-state-B26nE9CO.es.js +0 -113
  508. package/dist/chunks/use-formatting-state-B26nE9CO.es.js.map +0 -1
  509. package/dist/chunks/use-formatting-state-D7zenGZW.cjs.js +0 -2
  510. package/dist/chunks/use-formatting-state-D7zenGZW.cjs.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"slate-helpers-CcSj-DBm.cjs.js","sources":["../../../../node_modules/.pnpm/immer@10.1.3/node_modules/immer/dist/immer.mjs","../../../../node_modules/.pnpm/slate@0.118.1/node_modules/slate/dist/index.es.js","../../../../node_modules/.pnpm/direction@1.0.4/node_modules/direction/index.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/throttle.js","../../../../node_modules/.pnpm/compute-scroll-into-view@3.1.1/node_modules/compute-scroll-into-view/dist/index.js","../../../../node_modules/.pnpm/scroll-into-view-if-needed@3.1.0/node_modules/scroll-into-view-if-needed/dist/index.js","../../../../node_modules/.pnpm/is-hotkey@0.2.0/node_modules/is-hotkey/lib/index.js","../../../../node_modules/.pnpm/slate-dom@0.118.1_slate@0.118.1/node_modules/slate-dom/dist/index.es.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/freeze.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/element.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/global.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/process.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../../../../node_modules/.pnpm/slate-react@0.117.4_react-dom@19.1.1_react@19.1.1__react@19.1.1_slate-dom@0.118.1_slate@0.118.1__slate@0.118.1/node_modules/slate-react/dist/index.es.js","../../../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js","../../src/components/rich-text-input/utils/html-serialization.ts","../../src/components/rich-text-input/utils/slate-helpers.tsx"],"sourcesContent":["// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n Object.defineProperties(obj, {\n set: { value: dontMutateFrozenCollections },\n add: { value: dontMutateFrozenCollections },\n clear: { value: dontMutateFrozenCollections },\n delete: { value: dontMutateFrozenCollections }\n });\n }\n Object.freeze(obj);\n if (deep)\n Object.values(obj).forEach((value) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && (isMap(targetObject) ? targetObject.has(prop) : Object.prototype.propertyIsEnumerable.call(targetObject, prop)))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(\n immer\n);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { produce } from 'immer';\n\n// eslint-disable-next-line no-redeclare\nvar PathRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar PointRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n if (point == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar RangeRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\nvar DIRTY_PATHS = new WeakMap();\nvar DIRTY_PATH_KEYS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\n// eslint-disable-next-line no-redeclare\nvar Path = {\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n return paths;\n },\n common(path, another) {\n var common = [];\n for (var i = 0; i < path.length && i < another.length; i++) {\n var av = path[i];\n var bv = another[i];\n if (av !== bv) {\n break;\n }\n common.push(av);\n }\n return common;\n },\n compare(path, another) {\n var min = Math.min(path.length, another.length);\n for (var i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1;\n if (path[i] > another[i]) return 1;\n }\n return 0;\n },\n endsAfter(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av > bv;\n },\n endsAt(path, another) {\n var i = path.length;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n return Path.equals(as, bs);\n },\n endsBefore(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av < bv;\n },\n equals(path, another) {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n },\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n },\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n for (var i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i));\n }\n if (reverse) {\n list.reverse();\n }\n return list;\n },\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n var last = path[path.length - 1];\n return path.slice(0, -1).concat(last + 1);\n },\n operationCanTransformPath(operation) {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true;\n default:\n return false;\n }\n },\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n return path.slice(0, -1);\n },\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n var last = path[path.length - 1];\n if (last <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n return path.slice(0, -1).concat(last - 1);\n },\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n return path.slice(ancestor.length);\n },\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!path) return null;\n // PERF: use destructing instead of immer\n var p = [...path];\n var {\n affinity = 'forward'\n } = options;\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p;\n }\n switch (operation.type) {\n case 'insert_node':\n {\n var {\n path: op\n } = operation;\n if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n p[op.length - 1] += 1;\n }\n break;\n }\n case 'remove_node':\n {\n var {\n path: _op\n } = operation;\n if (Path.equals(_op, p) || Path.isAncestor(_op, p)) {\n return null;\n } else if (Path.endsBefore(_op, p)) {\n p[_op.length - 1] -= 1;\n }\n break;\n }\n case 'merge_node':\n {\n var {\n path: _op2,\n position\n } = operation;\n if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n p[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p)) {\n p[_op2.length - 1] -= 1;\n p[_op2.length] += position;\n }\n break;\n }\n case 'split_node':\n {\n var {\n path: _op3,\n position: _position\n } = operation;\n if (Path.equals(_op3, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1;\n } else if (affinity === 'backward') ; else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p)) {\n p[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n p[_op3.length - 1] += 1;\n p[_op3.length] -= _position;\n }\n break;\n }\n case 'move_node':\n {\n var {\n path: _op4,\n newPath: onp\n } = operation;\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(_op4, onp)) {\n return p;\n }\n if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n var copy = onp.slice();\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n return copy.concat(p.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n } else {\n p[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n }\n p[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1;\n }\n p[_op4.length - 1] -= 1;\n }\n break;\n }\n }\n return p;\n }\n};\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar insertChildren = function insertChildren(xs, index) {\n for (var _len = arguments.length, newValues = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newValues[_key - 2] = arguments[_key];\n }\n return [...xs.slice(0, index), ...newValues, ...xs.slice(index)];\n};\nvar replaceChildren = function replaceChildren(xs, index, removeCount) {\n for (var _len2 = arguments.length, newValues = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n newValues[_key2 - 3] = arguments[_key2];\n }\n return [...xs.slice(0, index), ...newValues, ...xs.slice(index + removeCount)];\n};\nvar removeChildren = replaceChildren;\n/**\n * Replace a descendant with a new node, replacing all ancestors\n */\nvar modifyDescendant = (editor, path, f) => {\n if (path.length === 0) {\n throw new Error('Cannot modify the editor');\n }\n var node = Node.get(editor, path);\n var slicedPath = path.slice();\n var modifiedNode = f(node);\n while (slicedPath.length > 1) {\n var _index = slicedPath.pop();\n var ancestorNode = Node.get(editor, slicedPath);\n modifiedNode = _objectSpread$e(_objectSpread$e({}, ancestorNode), {}, {\n children: replaceChildren(ancestorNode.children, _index, 1, modifiedNode)\n });\n }\n var index = slicedPath.pop();\n editor.children = replaceChildren(editor.children, index, 1, modifiedNode);\n};\n/**\n * Replace the children of a node, replacing all ancestors\n */\nvar modifyChildren = (editor, path, f) => {\n if (path.length === 0) {\n editor.children = f(editor.children);\n } else {\n modifyDescendant(editor, path, node => {\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the element at path [\".concat(path, \"] because it refers to a leaf node: \").concat(Scrubber.stringify(node)));\n }\n return _objectSpread$e(_objectSpread$e({}, node), {}, {\n children: f(node.children)\n });\n });\n }\n};\n/**\n * Replace a leaf, replacing all ancestors\n */\nvar modifyLeaf = (editor, path, f) => modifyDescendant(editor, path, node => {\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(Scrubber.stringify(node)));\n }\n return f(node);\n});\n// eslint-disable-next-line no-redeclare\nvar GeneralTransforms = {\n transform(editor, op) {\n var transformSelection = false;\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n modifyChildren(editor, Path.parent(path), children => {\n var index = path[path.length - 1];\n if (index > children.length) {\n throw new Error(\"Cannot apply an \\\"insert_node\\\" operation at path [\".concat(path, \"] because the destination is past the end of the node.\"));\n }\n return insertChildren(children, index, node);\n });\n transformSelection = true;\n break;\n }\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n if (text.length === 0) break;\n modifyLeaf(editor, _path, node => {\n var before = node.text.slice(0, offset);\n var after = node.text.slice(offset);\n return _objectSpread$e(_objectSpread$e({}, node), {}, {\n text: before + text + after\n });\n });\n transformSelection = true;\n break;\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var index = _path2[_path2.length - 1];\n var prevPath = Path.previous(_path2);\n var prevIndex = prevPath[prevPath.length - 1];\n modifyChildren(editor, Path.parent(_path2), children => {\n var node = children[index];\n var prev = children[prevIndex];\n var newNode;\n if (Text.isText(node) && Text.isText(prev)) {\n newNode = _objectSpread$e(_objectSpread$e({}, prev), {}, {\n text: prev.text + node.text\n });\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n newNode = _objectSpread$e(_objectSpread$e({}, prev), {}, {\n children: prev.children.concat(node.children)\n });\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interfaces: \").concat(Scrubber.stringify(node), \" \").concat(Scrubber.stringify(prev)));\n }\n return replaceChildren(children, prevIndex, 2, newNode);\n });\n transformSelection = true;\n break;\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n var _index2 = _path3[_path3.length - 1];\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n var _node = Node.get(editor, _path3);\n modifyChildren(editor, Path.parent(_path3), children => removeChildren(children, _index2, 1));\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n var truePath = Path.transform(_path3, op);\n var newIndex = truePath[truePath.length - 1];\n modifyChildren(editor, Path.parent(truePath), children => insertChildren(children, newIndex, _node));\n transformSelection = true;\n break;\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n modifyChildren(editor, Path.parent(_path4), children => removeChildren(children, _index3, 1));\n // Transform all the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (editor.selection) {\n var selection = _objectSpread$e({}, editor.selection);\n for (var [point, key] of Range.points(selection)) {\n var result = Point.transform(point, op);\n if (selection != null && result != null) {\n selection[key] = result;\n } else {\n var prev = void 0;\n var next = void 0;\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n var preferNext = false;\n if (prev && next) {\n if (Path.isSibling(prev[1], _path4)) {\n preferNext = false;\n } else if (Path.equals(next[1], _path4)) {\n preferNext = true;\n } else {\n preferNext = Path.common(prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n if (prev && !preferNext) {\n selection[key] = {\n path: prev[1],\n offset: prev[0].text.length\n };\n } else if (next) {\n selection[key] = {\n path: next[1],\n offset: 0\n };\n } else {\n selection = null;\n }\n }\n }\n if (!selection || !Range.equals(selection, editor.selection)) {\n editor.selection = selection;\n }\n }\n break;\n }\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0) break;\n modifyLeaf(editor, _path5, node => {\n var before = node.text.slice(0, _offset);\n var after = node.text.slice(_offset + _text.length);\n return _objectSpread$e(_objectSpread$e({}, node), {}, {\n text: before + after\n });\n });\n transformSelection = true;\n break;\n }\n case 'set_node':\n {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n modifyDescendant(editor, _path6, node => {\n var newNode = _objectSpread$e({}, node);\n for (var _key3 in newProperties) {\n if (_key3 === 'children' || _key3 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key3, \"\\\" property of nodes!\"));\n }\n var value = newProperties[_key3];\n if (value == null) {\n delete newNode[_key3];\n } else {\n newNode[_key3] = value;\n }\n }\n // properties that were previously defined, but are now missing, must be deleted\n for (var _key4 in properties) {\n if (!newProperties.hasOwnProperty(_key4)) {\n delete newNode[_key4];\n }\n }\n return newNode;\n });\n break;\n }\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n if (_newProperties == null) {\n editor.selection = null;\n break;\n }\n if (editor.selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(Scrubber.stringify(_newProperties), \" when there is no current selection.\"));\n }\n editor.selection = _objectSpread$e({}, _newProperties);\n break;\n }\n var _selection = _objectSpread$e({}, editor.selection);\n for (var _key5 in _newProperties) {\n var value = _newProperties[_key5];\n if (value == null) {\n if (_key5 === 'anchor' || _key5 === 'focus') {\n throw new Error(\"Cannot remove the \\\"\".concat(_key5, \"\\\" selection property\"));\n }\n delete _selection[_key5];\n } else {\n _selection[_key5] = value;\n }\n }\n editor.selection = _selection;\n break;\n }\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n var _index4 = _path7[_path7.length - 1];\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n modifyChildren(editor, Path.parent(_path7), children => {\n var node = children[_index4];\n var newNode;\n var nextNode;\n if (Text.isText(node)) {\n var before = node.text.slice(0, position);\n var after = node.text.slice(position);\n newNode = _objectSpread$e(_objectSpread$e({}, node), {}, {\n text: before\n });\n nextNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n text: after\n });\n } else {\n var _before = node.children.slice(0, position);\n var _after = node.children.slice(position);\n newNode = _objectSpread$e(_objectSpread$e({}, node), {}, {\n children: _before\n });\n nextNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n children: _after\n });\n }\n return replaceChildren(children, _index4, 1, newNode, nextNode);\n });\n transformSelection = true;\n break;\n }\n }\n if (transformSelection && editor.selection) {\n var _selection2 = _objectSpread$e({}, editor.selection);\n for (var [_point, _key6] of Range.points(_selection2)) {\n _selection2[_key6] = Point.transform(_point, op);\n }\n if (!Range.equals(_selection2, editor.selection)) {\n editor.selection = _selection2;\n }\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar NodeTransforms = {\n insertNodes(editor, nodes, options) {\n editor.insertNodes(nodes, options);\n },\n liftNodes(editor, options) {\n editor.liftNodes(options);\n },\n mergeNodes(editor, options) {\n editor.mergeNodes(options);\n },\n moveNodes(editor, options) {\n editor.moveNodes(options);\n },\n removeNodes(editor, options) {\n editor.removeNodes(options);\n },\n setNodes(editor, props, options) {\n editor.setNodes(props, options);\n },\n splitNodes(editor, options) {\n editor.splitNodes(options);\n },\n unsetNodes(editor, props, options) {\n editor.unsetNodes(props, options);\n },\n unwrapNodes(editor, options) {\n editor.unwrapNodes(options);\n },\n wrapNodes(editor, element, options) {\n editor.wrapNodes(element, options);\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar SelectionTransforms = {\n collapse(editor, options) {\n editor.collapse(options);\n },\n deselect(editor) {\n editor.deselect();\n },\n move(editor, options) {\n editor.move(options);\n },\n select(editor, target) {\n editor.select(target);\n },\n setPoint(editor, props, options) {\n editor.setPoint(props, options);\n },\n setSelection(editor, props) {\n editor.setSelection(props);\n }\n};\n\nvar isObject = value => typeof value === 'object' && value !== null;\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a = node[key];\n var b = another[key];\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n } else if (isObject(a) && isObject(b)) {\n if (!isDeepEqual(a, b)) return false;\n } else if (a !== b) {\n return false;\n }\n }\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n for (var _key in another) {\n if (node[_key] === undefined && another[_key] !== undefined) {\n return false;\n }\n }\n return true;\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded$4 = [\"anchor\", \"focus\"];\nfunction ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Range = {\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n end(range) {\n var [, end] = Range.edges(range);\n return end;\n },\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n surrounds(range, target) {\n var intersectionRange = Range.intersection(range, target);\n if (!intersectionRange) {\n return false;\n }\n return Range.equals(intersectionRange, target);\n },\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n var [rs, re] = Range.edges(range);\n var [ts, te] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n }\n var [start, end] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0;\n isBeforeEnd = Point.compare(target, end) <= 0;\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0;\n isBeforeEnd = Path.compare(target, end.path) <= 0;\n }\n return isAfterStart && isBeforeEnd;\n },\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$4);\n var [s1, e1] = Range.edges(range);\n var [s2, e2] = Range.edges(another);\n var start = Point.isBefore(s1, s2) ? s2 : s1;\n var end = Point.isBefore(e1, e2) ? e1 : e2;\n if (Point.isBefore(end, start)) {\n return null;\n } else {\n return _objectSpread$d({\n anchor: start,\n focus: end\n }, rest);\n }\n },\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n isForward(range) {\n return !Range.isBackward(range);\n },\n isRange(value) {\n return isObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n *points(range) {\n yield [range.anchor, 'anchor'];\n yield [range.focus, 'focus'];\n },\n start(range) {\n var [start] = Range.edges(range);\n return start;\n },\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (range === null) {\n return null;\n }\n var {\n affinity = 'inward'\n } = options;\n var affinityAnchor;\n var affinityFocus;\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n var isCollapsed = Range.isCollapsed(range);\n if (Range.isForward(range)) {\n affinityAnchor = 'forward';\n affinityFocus = isCollapsed ? affinityAnchor : 'backward';\n } else {\n affinityAnchor = 'backward';\n affinityFocus = isCollapsed ? affinityAnchor : 'forward';\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(range)) {\n affinityAnchor = 'backward';\n affinityFocus = 'forward';\n } else {\n affinityAnchor = 'forward';\n affinityFocus = 'backward';\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n var anchor = Point.transform(range.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(range.focus, op, {\n affinity: affinityFocus\n });\n if (!anchor || !focus) {\n return null;\n }\n return {\n anchor,\n focus\n };\n }\n};\n\n/**\n * Shared the function with isElementType utility\n */\nvar isElement = function isElement(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!isObject(value)) return false;\n // PERF: No need to use the full Editor.isEditor here\n var isEditor = typeof value.apply === 'function';\n if (isEditor) return false;\n var isChildrenValid = deep ? Node.isNodeList(value.children) : Array.isArray(value.children);\n return isChildrenValid;\n};\n// eslint-disable-next-line no-redeclare\nvar Element = {\n isAncestor(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return isObject(value) && Node.isNodeList(value.children, {\n deep\n });\n },\n isElement,\n isElementList(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Array.isArray(value) && value.every(val => Element.isElement(val, {\n deep\n }));\n },\n isElementProps(props) {\n return props.children !== undefined;\n },\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';\n return isElement(value) && value[elementKey] === elementVal;\n },\n matches(element, props) {\n for (var key in props) {\n if (key === 'children') {\n continue;\n }\n if (element[key] !== props[key]) {\n return false;\n }\n }\n return true;\n }\n};\n\nvar _excluded$3 = [\"children\"],\n _excluded2$3 = [\"text\"];\n// eslint-disable-next-line no-redeclare\nvar Node = {\n ancestor(root, path) {\n var node = Node.get(root, path);\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n ancestors(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.ancestors(path, options)) {\n var n = Node.ancestor(root, p);\n var entry = [n, p];\n yield entry;\n }\n }();\n },\n child(root, index) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(Scrubber.stringify(root)));\n }\n var c = root.children[index];\n if (c == null) {\n throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(Scrubber.stringify(root)));\n }\n return c;\n },\n children(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n var {\n reverse = false\n } = options;\n var ancestor = Node.ancestor(root, path);\n var {\n children\n } = ancestor;\n var index = reverse ? children.length - 1 : 0;\n while (reverse ? index >= 0 : index < children.length) {\n var child = Node.child(ancestor, index);\n var childPath = path.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n }();\n },\n common(root, path, another) {\n var p = Path.common(path, another);\n var n = Node.get(root, p);\n return [n, p];\n },\n descendant(root, path) {\n var node = Node.get(root, path);\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n descendants(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path];\n }\n }\n }();\n },\n elements(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path];\n }\n }\n }();\n },\n extractProps(node) {\n if (Element.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$3);\n return properties;\n }\n },\n first(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n n = n.children[0];\n p.push(0);\n }\n }\n return [n, p];\n },\n fragment(root, range) {\n var newRoot = produce({\n children: root.children\n }, r => {\n var [start, end] = Range.edges(range);\n var nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: _ref => {\n var [, path] = _ref;\n return !Range.includes(range, path);\n }\n });\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent = Node.parent(r, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 1);\n }\n if (Path.equals(path, end.path)) {\n var leaf = Node.leaf(r, path);\n leaf.text = leaf.text.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n var _leaf = Node.leaf(r, path);\n _leaf.text = _leaf.text.slice(start.offset);\n }\n }\n if (Editor.isEditor(r)) {\n r.selection = null;\n }\n });\n return newRoot.children;\n },\n get(root, path) {\n var node = Node.getIf(root, path);\n if (node === undefined) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(Scrubber.stringify(root)));\n }\n return node;\n },\n getIf(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return;\n }\n node = node.children[p];\n }\n return node;\n },\n has(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return false;\n }\n node = node.children[p];\n }\n return true;\n },\n isNode(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Text.isText(value) || Element.isElement(value, {\n deep\n }) || Editor.isEditor(value, {\n deep\n });\n },\n isNodeList(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Array.isArray(value) && value.every(val => Node.isNode(val, {\n deep\n }));\n },\n last(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n var i = n.children.length - 1;\n n = n.children[i];\n p.push(i);\n }\n }\n return [n, p];\n },\n leaf(root, path) {\n var node = Node.get(root, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n levels(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.levels(path, options)) {\n var n = Node.get(root, p);\n yield [n, p];\n }\n }();\n },\n matches(node, props) {\n return Element.isElement(node) && Element.isElementProps(props) && Element.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n nodes(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = new Set();\n var p = [];\n var n = root;\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break;\n }\n if (!visited.has(n)) {\n yield [n, p];\n }\n // If we're allowed to go downward and we haven't descended yet, do.\n if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n visited.add(n);\n var nextIndex = reverse ? n.children.length - 1 : 0;\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length];\n }\n p = p.concat(nextIndex);\n n = Node.get(root, p);\n continue;\n }\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break;\n }\n // If we're going forward...\n if (!reverse) {\n var newPath = Path.next(p);\n if (Node.has(root, newPath)) {\n p = newPath;\n n = Node.get(root, p);\n continue;\n }\n }\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n var _newPath = Path.previous(p);\n p = _newPath;\n n = Node.get(root, p);\n continue;\n }\n // Otherwise we're going upward...\n p = Path.parent(p);\n n = Node.get(root, p);\n visited.add(n);\n }\n }();\n },\n parent(root, path) {\n var parentPath = Path.parent(path);\n var p = Node.get(root, parentPath);\n if (Text.isText(p)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n return p;\n },\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node.string).join('');\n }\n },\n texts(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }();\n }\n};\n\nfunction ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Operation = {\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_node');\n },\n isOperation(value) {\n if (!isObject(value)) {\n return false;\n }\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n case 'insert_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'merge_node':\n return typeof value.position === 'number' && Path.isPath(value.path) && isObject(value.properties);\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n case 'remove_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'set_node':\n return Path.isPath(value.path) && isObject(value.properties) && isObject(value.newProperties);\n case 'set_selection':\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isObject(value.properties) && isObject(value.newProperties);\n case 'split_node':\n return Path.isPath(value.path) && typeof value.position === 'number' && isObject(value.properties);\n default:\n return false;\n }\n },\n isOperationList(value) {\n return Array.isArray(value) && value.every(val => Operation.isOperation(val));\n },\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_selection');\n },\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_text');\n },\n inverse(op) {\n switch (op.type) {\n case 'insert_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_node'\n });\n }\n case 'insert_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_text'\n });\n }\n case 'merge_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'split_node',\n path: Path.previous(op.path)\n });\n }\n case 'move_node':\n {\n var {\n newPath,\n path\n } = op;\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op;\n }\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: newPath,\n newPath: path\n });\n }\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n case 'remove_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_node'\n });\n }\n case 'remove_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_text'\n });\n }\n case 'set_node':\n {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n case 'set_selection':\n {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n if (_properties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n case 'split_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'merge_node',\n path: Path.next(op.path)\n });\n }\n }\n }\n};\n\nvar isEditor = function isEditor(value) {\n var {\n deep = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!isObject(value)) {\n return false;\n }\n var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertSoftBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isElementReadOnly === 'function' && typeof value.isInline === 'function' && typeof value.isSelectable === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && typeof value.getDirtyPaths === 'function' && (value.marks === null || isObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && (!deep || Node.isNodeList(value.children)) && Operation.isOperationList(value.operations);\n return isEditor;\n};\n\n// eslint-disable-next-line no-redeclare\nvar Editor = {\n above(editor, options) {\n return editor.above(options);\n },\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n after(editor, at, options) {\n return editor.after(at, options);\n },\n before(editor, at, options) {\n return editor.before(at, options);\n },\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteBackward(unit);\n },\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteForward(unit);\n },\n deleteFragment(editor, options) {\n editor.deleteFragment(options);\n },\n edges(editor, at) {\n return editor.edges(at);\n },\n elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return editor.elementReadOnly(options);\n },\n end(editor, at) {\n return editor.end(at);\n },\n first(editor, at) {\n return editor.first(at);\n },\n fragment(editor, at) {\n return editor.fragment(at);\n },\n hasBlocks(editor, element) {\n return editor.hasBlocks(element);\n },\n hasInlines(editor, element) {\n return editor.hasInlines(element);\n },\n hasPath(editor, path) {\n return editor.hasPath(path);\n },\n hasTexts(editor, element) {\n return editor.hasTexts(element);\n },\n insertBreak(editor) {\n editor.insertBreak();\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n insertSoftBreak(editor) {\n editor.insertSoftBreak();\n },\n insertText(editor, text) {\n editor.insertText(text);\n },\n isBlock(editor, value) {\n return editor.isBlock(value);\n },\n isEdge(editor, point, at) {\n return editor.isEdge(point, at);\n },\n isEditor(value) {\n return isEditor(value);\n },\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element);\n },\n isEmpty(editor, element) {\n return editor.isEmpty(element);\n },\n isEnd(editor, point, at) {\n return editor.isEnd(point, at);\n },\n isInline(editor, value) {\n return editor.isInline(value);\n },\n isNormalizing(editor) {\n return editor.isNormalizing();\n },\n isSelectable(editor, value) {\n return editor.isSelectable(value);\n },\n isStart(editor, point, at) {\n return editor.isStart(point, at);\n },\n isVoid(editor, value) {\n return editor.isVoid(value);\n },\n last(editor, at) {\n return editor.last(at);\n },\n leaf(editor, at, options) {\n return editor.leaf(at, options);\n },\n levels(editor, options) {\n return editor.levels(options);\n },\n marks(editor) {\n return editor.getMarks();\n },\n next(editor, options) {\n return editor.next(options);\n },\n node(editor, at, options) {\n return editor.node(at, options);\n },\n nodes(editor, options) {\n return editor.nodes(options);\n },\n normalize(editor, options) {\n editor.normalize(options);\n },\n parent(editor, at, options) {\n return editor.parent(at, options);\n },\n path(editor, at, options) {\n return editor.path(at, options);\n },\n pathRef(editor, path, options) {\n return editor.pathRef(path, options);\n },\n pathRefs(editor) {\n return editor.pathRefs();\n },\n point(editor, at, options) {\n return editor.point(at, options);\n },\n pointRef(editor, point, options) {\n return editor.pointRef(point, options);\n },\n pointRefs(editor) {\n return editor.pointRefs();\n },\n positions(editor, options) {\n return editor.positions(options);\n },\n previous(editor, options) {\n return editor.previous(options);\n },\n range(editor, at, to) {\n return editor.range(at, to);\n },\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options);\n },\n rangeRefs(editor) {\n return editor.rangeRefs();\n },\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing);\n },\n start(editor, at) {\n return editor.start(at);\n },\n string(editor, at, options) {\n return editor.string(at, options);\n },\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options);\n },\n void(editor, options) {\n return editor.void(options);\n },\n withoutNormalizing(editor, fn) {\n editor.withoutNormalizing(fn);\n },\n shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode);\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar Location = {\n isLocation(value) {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n }\n};\n// eslint-disable-next-line no-redeclare\nvar Span = {\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n};\n\nfunction ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Point = {\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n if (result === 0) {\n if (point.offset < another.offset) return -1;\n if (point.offset > another.offset) return 1;\n return 0;\n }\n return result;\n },\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n equals(point, another) {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n isPoint(value) {\n return isObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n },\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (point === null) {\n return null;\n }\n var {\n affinity = 'forward'\n } = options;\n var {\n path,\n offset\n } = point;\n switch (op.type) {\n case 'insert_node':\n case 'move_node':\n {\n path = Path.transform(path, op, options);\n break;\n }\n case 'insert_text':\n {\n if (Path.equals(op.path, path) && (op.offset < offset || op.offset === offset && affinity === 'forward')) {\n offset += op.text.length;\n }\n break;\n }\n case 'merge_node':\n {\n if (Path.equals(op.path, path)) {\n offset += op.position;\n }\n path = Path.transform(path, op, options);\n break;\n }\n case 'remove_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n offset -= Math.min(offset - op.offset, op.text.length);\n }\n break;\n }\n case 'remove_node':\n {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n path = Path.transform(path, op, options);\n break;\n }\n case 'split_node':\n {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null;\n } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n offset -= op.position;\n path = Path.transform(path, op, _objectSpread$b(_objectSpread$b({}, options), {}, {\n affinity: 'forward'\n }));\n }\n } else {\n path = Path.transform(path, op, options);\n }\n break;\n }\n default:\n return point;\n }\n return {\n path,\n offset\n };\n }\n};\n\nvar _scrubber = undefined;\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nvar Scrubber = {\n setScrubber(scrubber) {\n _scrubber = scrubber;\n },\n stringify(value) {\n return JSON.stringify(value, _scrubber);\n }\n};\n\nvar _excluded$2 = [\"text\"],\n _excluded2$2 = [\"anchor\", \"focus\", \"merge\"];\nfunction ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Text = {\n equals(text, another) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n loose = false\n } = options;\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$2);\n return rest;\n }\n return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another);\n },\n isText(value) {\n return isObject(value) && typeof value.text === 'string';\n },\n isTextList(value) {\n return Array.isArray(value) && value.every(val => Text.isText(val));\n },\n isTextProps(props) {\n return props.text !== undefined;\n },\n matches(text, props) {\n for (var key in props) {\n if (key === 'text') {\n continue;\n }\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false;\n }\n }\n return true;\n },\n decorations(node, decorations) {\n var leaves = [{\n leaf: _objectSpread$a({}, node)\n }];\n for (var dec of decorations) {\n var {\n anchor,\n focus,\n merge: mergeDecoration\n } = dec,\n rest = _objectWithoutProperties(dec, _excluded2$2);\n var [start, end] = Range.edges(dec);\n var next = [];\n var leafEnd = 0;\n var decorationStart = start.offset;\n var decorationEnd = end.offset;\n var merge = mergeDecoration !== null && mergeDecoration !== void 0 ? mergeDecoration : Object.assign;\n for (var {\n leaf\n } of leaves) {\n var {\n length\n } = leaf.text;\n var leafStart = leafEnd;\n leafEnd += length;\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n merge(leaf, rest);\n next.push({\n leaf\n });\n continue;\n }\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (decorationStart !== decorationEnd && (decorationStart === leafEnd || decorationEnd === leafStart) || decorationStart > leafEnd || decorationEnd < leafStart || decorationEnd === leafStart && leafStart !== 0) {\n next.push({\n leaf\n });\n continue;\n }\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n if (decorationEnd < leafEnd) {\n var off = decorationEnd - leafStart;\n after = {\n leaf: _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(off)\n })\n };\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, off)\n });\n }\n if (decorationStart > leafStart) {\n var _off = decorationStart - leafStart;\n before = {\n leaf: _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, _off)\n })\n };\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n merge(middle, rest);\n if (before) {\n next.push(before);\n }\n next.push({\n leaf: middle\n });\n if (after) {\n next.push(after);\n }\n }\n leaves = next;\n }\n if (leaves.length > 1) {\n var currentOffset = 0;\n for (var [index, item] of leaves.entries()) {\n var _start = currentOffset;\n var _end = _start + item.leaf.text.length;\n var position = {\n start: _start,\n end: _end\n };\n if (index === 0) position.isFirst = true;\n if (index === leaves.length - 1) position.isLast = true;\n item.position = position;\n currentOffset = _end;\n }\n }\n return leaves;\n }\n};\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nvar getDefaultInsertLocation = editor => {\n if (editor.selection) {\n return editor.selection;\n } else if (editor.children.length > 0) {\n return Editor.end(editor, []);\n } else {\n return [0];\n }\n};\n\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return n => n === node;\n};\n\n// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n/**\n * Get the distance to the end of the first character in a string of text.\n */\nvar getCharacterDistance = function getCharacterDistance(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left = CodepointType.None;\n var right = CodepointType.None;\n var distance = 0;\n // Evaluation of these conditions are deferred.\n var gb11 = null; // Is GB11 applicable?\n var gb12Or13 = null; // Is GB12 or GB13 applicable?\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code) break;\n var type = getCodepointType(char, code);\n [left, right] = isLTR ? [right, type] : [type, left];\n if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n }\n if (!gb11) break;\n }\n if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n if (!gb12Or13) break;\n }\n if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) {\n break;\n }\n distance += char.length;\n }\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u002B\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\n * Get the distance to the end of the first word in a string of text.\n */\nvar getWordDistance = function getWordDistance(text) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dist = 0;\n var started = false;\n while (text.length > 0) {\n var charDist = getCharacterDistance(text, isRTL);\n var [char, remaining] = splitByCharacterDistance(text, charDist, isRTL);\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true;\n dist += charDist;\n } else if (!started) {\n dist += charDist;\n } else {\n break;\n }\n text = remaining;\n }\n return dist;\n};\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n return [str.slice(0, dist), str.slice(dist)];\n};\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\nvar isWordCharacter = function isWordCharacter(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (SPACE.test(char)) {\n return false;\n }\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n if (PUNCTUATION.test(char)) {\n return false;\n }\n return true;\n};\n/**\n * Iterate on codepoints from right to left.\n */\nvar codepointsIteratorRTL = function* codepointsIteratorRTL(str) {\n var end = str.length - 1;\n for (var i = 0; i < str.length; i++) {\n var char1 = str.charAt(end - i);\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end - i - 1);\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i++;\n continue;\n }\n }\n yield char1;\n }\n};\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isHighSurrogate = charCode => {\n return charCode >= 0xd800 && charCode <= 0xdbff;\n};\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isLowSurrogate = charCode => {\n return charCode >= 0xdc00 && charCode <= 0xdfff;\n};\nvar CodepointType;\n(function (CodepointType) {\n CodepointType[CodepointType[\"None\"] = 0] = \"None\";\n CodepointType[CodepointType[\"Extend\"] = 1] = \"Extend\";\n CodepointType[CodepointType[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType[CodepointType[\"RI\"] = 4] = \"RI\";\n CodepointType[CodepointType[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType[CodepointType[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType[CodepointType[\"L\"] = 32] = \"L\";\n CodepointType[CodepointType[\"V\"] = 64] = \"V\";\n CodepointType[CodepointType[\"T\"] = 128] = \"T\";\n CodepointType[CodepointType[\"LV\"] = 256] = \"LV\";\n CodepointType[CodepointType[\"LVT\"] = 512] = \"LVT\";\n CodepointType[CodepointType[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType[CodepointType[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\nvar getCodepointType = (char, code) => {\n var type = CodepointType.Any;\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend;\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ;\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI;\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend;\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark;\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L;\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V;\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T;\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV;\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT;\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict;\n }\n return type;\n};\nfunction intersects(x, y) {\n return (x & y) !== 0;\n}\nvar NonBoundaryPairs = [\n// GB6\n[CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT],\n// GB7\n[CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n// GB8\n[CodepointType.LVT | CodepointType.T, CodepointType.T],\n// GB9\n[CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n// GB9a\n[CodepointType.Any, CodepointType.SpacingMark],\n// GB9b\n[CodepointType.Prepend, CodepointType.Any],\n// GB11\n[CodepointType.ZWJ, CodepointType.ExtPict],\n// GB12 and GB13\n[CodepointType.RI, CodepointType.RI]];\nfunction isBoundaryPair(left, right) {\n return NonBoundaryPairs.findIndex(r => intersects(left, r[0]) && intersects(right, r[1])) === -1;\n}\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\nvar endsWithEmojiZWJ = str => {\n return str.search(endingEmojiZWJ) !== -1;\n};\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\nvar endsWithOddNumberOfRIs = str => {\n var match = str.match(endingRIs);\n if (match === null) {\n return false;\n } else {\n // A RI is represented by a surrogate pair.\n var numRIs = match[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar TextTransforms = {\n delete(editor, options) {\n editor.delete(options);\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor)\n } = options;\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end = Range.end(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var start = Range.start(at);\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at,\n voids\n });\n var startPoint = startRef.unref();\n var endPoint = endRef.unref();\n at = startPoint || endPoint;\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n if (!voids && Editor.void(editor, {\n at\n }) || Editor.elementReadOnly(editor, {\n at\n })) {\n return;\n }\n var {\n path,\n offset\n } = at;\n if (text.length > 0) editor.apply({\n type: 'insert_text',\n path,\n offset,\n text\n });\n });\n }\n};\n\nfunction ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Transforms = _objectSpread$9(_objectSpread$9(_objectSpread$9(_objectSpread$9({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\n// perf\nvar BATCHING_DIRTY_PATHS = new WeakMap();\nvar isBatchingDirtyPaths = editor => {\n return BATCHING_DIRTY_PATHS.get(editor) || false;\n};\nvar batchDirtyPaths = (editor, fn, update) => {\n var value = BATCHING_DIRTY_PATHS.get(editor) || false;\n BATCHING_DIRTY_PATHS.set(editor, true);\n try {\n fn();\n update();\n } finally {\n BATCHING_DIRTY_PATHS.set(editor, value);\n }\n};\n\n/**\n * update editor dirty paths\n *\n * @param newDirtyPaths: Path[]; new dirty paths\n * @param transform: (p: Path) => Path | null; how to transform existing dirty paths\n */\nfunction updateDirtyPaths(editor, newDirtyPaths, transform) {\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n var add = path => {\n if (path) {\n var key = path.join(',');\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path);\n }\n }\n };\n if (transform) {\n dirtyPaths = [];\n dirtyPathKeys = new Set();\n for (var path of oldDirtyPaths) {\n var newPath = transform(path);\n add(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n for (var _path of newDirtyPaths) {\n add(_path);\n }\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n}\n\nvar apply = (editor, op) => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n // update dirty paths\n if (!isBatchingDirtyPaths(editor)) {\n var transform = Path.operationCanTransformPath(op) ? p => Path.transform(p, op) : undefined;\n updateDirtyPaths(editor, editor.getDirtyPaths(op), transform);\n }\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor, {\n operation: op\n });\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null;\n }\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange({\n operation: op\n });\n editor.operations = [];\n });\n }\n};\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nvar getDirtyPaths = (editor, op) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n case 'insert_node':\n {\n var {\n node,\n path: _path\n } = op;\n var levels = Path.levels(_path);\n var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), _ref => {\n var [, p] = _ref;\n return _path.concat(p);\n });\n return [...levels, ...descendants];\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var ancestors = Path.ancestors(_path2);\n var previousPath = Path.previous(_path2);\n return [...ancestors, previousPath];\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.equals(_path3, newPath)) {\n return [];\n }\n var oldAncestors = [];\n var newAncestors = [];\n for (var ancestor of Path.ancestors(_path3)) {\n var p = Path.transform(ancestor, op);\n oldAncestors.push(p);\n }\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n newAncestors.push(_p);\n }\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _ancestors = Path.ancestors(_path4);\n return [..._ancestors];\n }\n case 'split_node':\n {\n var {\n path: _path5\n } = op;\n var _levels = Path.levels(_path5);\n var nextPath = Path.next(_path5);\n return [..._levels, nextPath];\n }\n default:\n {\n return [];\n }\n }\n};\n\nvar getFragment = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n return Node.fragment(editor, selection);\n }\n return [];\n};\n\nvar normalizeNode = (editor, entry, options) => {\n var [node, path] = entry;\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return;\n }\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n var child = {\n text: ''\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n }\n // Determine whether the node should have block or inline children.\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0]));\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n var n = 0;\n for (var i = 0; i < node.children.length; i++, n++) {\n var currentNode = Node.get(editor, path);\n if (Text.isText(currentNode)) continue;\n var _child = currentNode.children[n];\n var prev = currentNode.children[n - 1];\n var isLast = i === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child);\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n if (isInlineOrText) {\n if (options !== null && options !== void 0 && options.fallbackElement) {\n Transforms.wrapNodes(editor, options.fallbackElement(), {\n at: path.concat(n),\n voids: true\n });\n } else {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n }\n } else {\n Transforms.unwrapNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n }\n n--;\n } else if (Element.isElement(_child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true\n });\n n++;\n } else if (isLast) {\n var _newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n + 1),\n voids: true\n });\n n++;\n }\n }\n } else {\n // If the child is not a text node, and doesn't have a `children` field,\n // then we have an invalid node that will upset slate.\n //\n // eg: `{ type: 'some_node' }`.\n //\n // To prevent slate from breaking, we can add the `children` field,\n // and now that it is valid, we can to many more operations easily,\n // such as extend normalizers to fix erronous structure.\n if (!Text.isText(_child) && !('children' in _child)) {\n var elementChild = _child;\n elementChild.children = [];\n }\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true\n });\n n--;\n } else if (_child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n }\n }\n }\n }\n};\n\nvar shouldNormalize = (editor, _ref) => {\n var {\n iteration,\n initialDirtyPathsLength\n } = _ref;\n var maxIterations = initialDirtyPathsLength * 42; // HACK: better way?\n if (iteration > maxIterations) {\n throw new Error(\"Could not completely normalize the editor after \".concat(maxIterations, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\"));\n }\n return true;\n};\n\nvar above = function above(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n var path = Editor.path(editor, at);\n // If `at` is a Range that spans mulitple nodes, `path` will be their common ancestor.\n // Otherwise `path` will be a text node and/or the same as `at`, in which cases we want to start with its parent.\n if (!Range.isRange(at) || Path.equals(at.focus.path, at.anchor.path)) {\n if (path.length === 0) return;\n path = Path.parent(path);\n }\n var reverse = mode === 'lowest';\n var [firstMatch] = Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse\n });\n return firstMatch; // if nothing matches this returns undefined\n};\n\nfunction ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar addMark = (editor, key, value) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = parentNode && editor.markableVoid(parentNode);\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match,\n split: true,\n voids: true\n });\n } else {\n var marks = _objectSpread$8(_objectSpread$8({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nfunction ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar after = function after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: 'end'\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$7(_objectSpread$7({}, options), {}, {\n at: range\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nfunction ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar before = function before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: 'start'\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$6(_objectSpread$6({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nvar deleteBackward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n};\n\nvar deleteForward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n};\n\nvar deleteFragment = function deleteFragment(editor) {\n var {\n direction = 'forward'\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === 'backward'\n });\n }\n};\n\nvar edges = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n};\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar elementReadOnly = function elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$5(_objectSpread$5({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n)\n }));\n};\n\nvar end = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'end'\n });\n};\n\nvar first = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'start'\n });\n return Editor.node(editor, path);\n};\n\nvar fragment = (editor, at) => {\n var range = Editor.range(editor, at);\n return Node.fragment(editor, range);\n};\n\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar getVoid = function getVoid(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$4(_objectSpread$4({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n)\n }));\n};\n\nvar hasBlocks = (editor, element) => {\n return element.children.some(n => Element.isElement(n) && Editor.isBlock(editor, n));\n};\n\nvar hasInlines = (editor, element) => {\n return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n};\n\nvar hasPath = (editor, path) => {\n return Node.has(editor, path);\n};\n\nvar hasTexts = (editor, element) => {\n return element.children.every(n => Text.isText(n));\n};\n\nvar insertBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nvar insertNode = (editor, node, options) => {\n Transforms.insertNodes(editor, node, options);\n};\n\nvar insertSoftBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar insertText = function insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection,\n marks\n } = editor;\n if (selection) {\n if (marks) {\n var node = _objectSpread$3({\n text\n }, marks);\n Transforms.insertNodes(editor, node, {\n at: options.at,\n voids: options.voids\n });\n } else {\n Transforms.insertText(editor, text, options);\n }\n editor.marks = null;\n }\n};\n\nvar isBlock = (editor, value) => {\n return !editor.isInline(value);\n};\n\nvar isEdge = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n};\n\nvar isEmpty = (editor, element) => {\n var {\n children\n } = element;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n};\n\nvar isEnd = (editor, point, at) => {\n var end = Editor.end(editor, at);\n return Point.equals(point, end);\n};\n\nvar isNormalizing = editor => {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === undefined ? true : isNormalizing;\n};\n\nvar isStart = (editor, point, at) => {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false;\n }\n var start = Editor.start(editor, at);\n return Point.equals(point, start);\n};\n\nvar last = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'end'\n });\n return Editor.node(editor, path);\n};\n\nvar leaf = function leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.leaf(editor, path);\n return [node, path];\n};\n\nfunction levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var levels = [];\n var path = Editor.path(editor, at);\n for (var [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue;\n }\n levels.push([n, p]);\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break;\n }\n }\n if (reverse) {\n levels.reverse();\n }\n yield* levels;\n }();\n}\n\nvar _excluded$1 = [\"text\"],\n _excluded2$1 = [\"text\"];\nvar marks = function marks(editor) {\n var {\n marks,\n selection\n } = editor;\n if (!selection) {\n return null;\n }\n var {\n anchor,\n focus\n } = selection;\n if (marks) {\n return marks;\n }\n if (Range.isExpanded(selection)) {\n var isBackward = Range.isBackward(selection);\n if (isBackward) {\n [focus, anchor] = [anchor, focus];\n }\n /**\n * COMPAT: Make sure hanging ranges (caused by double clicking in Firefox)\n * do not adversely affect the returned marks.\n */\n var isEnd = Editor.isEnd(editor, anchor, anchor.path);\n if (isEnd) {\n var after = Editor.after(editor, anchor);\n if (after) {\n anchor = after;\n }\n }\n var [match] = Editor.nodes(editor, {\n match: Text.isText,\n at: {\n anchor,\n focus\n }\n });\n if (match) {\n var [_node] = match;\n var _rest = _objectWithoutProperties(_node, _excluded$1);\n return _rest;\n } else {\n return {};\n }\n }\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var markedVoid = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n) && editor.markableVoid(n)\n });\n if (!markedVoid) {\n var block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n)\n });\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n }\n var rest = _objectWithoutProperties(node, _excluded2$1);\n return rest;\n};\n\nvar next = function next(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation) return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [next] = Editor.nodes(editor, {\n at: span,\n match,\n mode,\n voids\n });\n return next;\n};\n\nvar node = function node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.get(editor, path);\n return [node, path];\n};\n\nfunction nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n pass: _pass\n } = options;\n var {\n match\n } = options;\n if (!match) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var from;\n var to;\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: 'start'\n });\n var last = Editor.path(editor, at, {\n edge: 'end'\n });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n var nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: _ref => {\n var [node, path] = _ref;\n if (_pass && _pass([node, path])) return true;\n if (!Element.isElement(node)) return false;\n if (!voids && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))) return true;\n return false;\n }\n });\n var matches = [];\n var hit;\n for (var [node, path] of nodeEntries) {\n var isLower = hit && Path.compare(path, hit[1]) === 0;\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue;\n }\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n }\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path];\n continue;\n }\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n var emit = mode === 'lowest' ? hit : [node, path];\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n hit = [node, path];\n }\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n }\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches;\n }\n }();\n}\n\nvar normalize = function normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n force = false,\n operation\n } = options;\n var getDirtyPaths = editor => {\n return DIRTY_PATHS.get(editor) || [];\n };\n var getDirtyPathKeys = editor => {\n return DIRTY_PATH_KEYS.get(editor) || new Set();\n };\n var popDirtyPath = editor => {\n var path = getDirtyPaths(editor).pop();\n var key = path.join(',');\n getDirtyPathKeys(editor).delete(key);\n return path;\n };\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n if (force) {\n var allPaths = Array.from(Node.nodes(editor), _ref => {\n var [, p] = _ref;\n return p;\n });\n var allPathKeys = new Set(allPaths.map(p => p.join(',')));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n if (getDirtyPaths(editor).length === 0) {\n return;\n }\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (var dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _] = entry;\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry, {\n operation\n });\n }\n }\n }\n var dirtyPaths = getDirtyPaths(editor);\n var initialDirtyPathsLength = dirtyPaths.length;\n var iteration = 0;\n while (dirtyPaths.length !== 0) {\n if (!editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation\n })) {\n return;\n }\n var _dirtyPath = popDirtyPath(editor);\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n editor.normalizeNode(_entry, {\n operation\n });\n }\n iteration++;\n dirtyPaths = getDirtyPaths(editor);\n }\n });\n};\n\nvar parent = function parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n};\n\nvar pathRef = function pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: path,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pathRefs = editor => {\n var refs = PATH_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n PATH_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar path = function path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n if (Path.isPath(at)) {\n if (edge === 'start') {\n var [, firstPath] = Node.first(editor, at);\n at = firstPath;\n } else if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n at = lastPath;\n }\n }\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at);\n } else if (edge === 'end') {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n if (Point.isPoint(at)) {\n at = at.path;\n }\n if (depth != null) {\n at = at.slice(0, depth);\n }\n return at;\n};\n\nvar pointRef = function pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: point,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pointRefs = editor => {\n var refs = POINT_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n POINT_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar point = function point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n edge = 'start'\n } = options;\n if (Path.isPath(at)) {\n var path;\n if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node.first(editor, at);\n path = firstPath;\n }\n var node = Node.get(editor, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n return {\n path,\n offset: edge === 'end' ? node.text.length : 0\n };\n }\n if (Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n return edge === 'start' ? start : end;\n }\n return at;\n};\n\nfunction positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var first = reverse ? end : start;\n var isNewBlock = false;\n var blockText = '';\n var distance = 0; // Distance for leafText to catch up to blockText.\n var leafTextRemaining = 0;\n var leafTextOffset = 0;\n var skippedPaths = [];\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n var _loop = function* _loop(path) {\n // If the node is inside a skipped ancestor, do not return any points, but\n // still process its content so that the iteration state remains correct.\n var hasSkippedAncestor = skippedPaths.some(p => Path.isAncestor(p, path));\n function* maybeYield(point) {\n if (!hasSkippedAncestor) {\n yield point;\n }\n }\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n if (!editor.isSelectable(node)) {\n /**\n * If the node is not selectable, skip it and its descendants\n */\n skippedPaths.push(path);\n if (reverse) {\n if (Path.hasPrevious(path)) {\n yield* maybeYield(Editor.end(editor, Path.previous(path)));\n }\n return 0; // continue\n } else {\n var nextPath = Path.next(path);\n if (Editor.hasPath(editor, nextPath)) {\n yield* maybeYield(Editor.start(editor, nextPath));\n }\n return 0; // continue\n }\n }\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n yield* maybeYield(Editor.start(editor, path));\n return 0; // continue\n }\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) return 0; // continue\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s,\n focus: e\n }, {\n voids\n });\n isNewBlock = true;\n }\n }\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path);\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n leafTextOffset = first.offset; // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length;\n leafTextOffset = reverse ? leafTextRemaining : 0;\n }\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield* maybeYield({\n path,\n offset: leafTextOffset\n });\n isNewBlock = false;\n }\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break;\n distance = calcDistance(blockText, unit, reverse);\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n }\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance;\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining;\n break;\n }\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0;\n yield* maybeYield({\n path,\n offset: leafTextOffset\n });\n }\n }\n },\n _ret;\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids\n })) {\n _ret = yield* _loop(path);\n if (_ret === 0) continue;\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text, unit, reverse) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse);\n } else if (unit === 'word') {\n return getWordDistance(text, reverse);\n } else if (unit === 'line' || unit === 'block') {\n return text.length;\n }\n return 1;\n }\n }();\n}\n\nvar previous = function previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n if (!pointBeforeLocation) {\n return;\n }\n var [, to] = Editor.first(editor, []);\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n var span = [pointBeforeLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids\n });\n return previous;\n};\n\nvar rangeRef = function rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: range,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar rangeRefs = editor => {\n var refs = RANGE_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n RANGE_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar range = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at;\n }\n var start = Editor.start(editor, at);\n var end = Editor.end(editor, to || at);\n return {\n anchor: start,\n focus: end\n };\n};\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar removeMark = (editor, key) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = parentNode && editor.markableVoid(parentNode);\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.unsetNodes(editor, key, {\n match,\n split: true,\n voids: true\n });\n } else {\n var marks = _objectSpread$2({}, Editor.marks(editor) || {});\n delete marks[key];\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nvar setNormalizing = (editor, isNormalizing) => {\n NORMALIZING.set(editor, isNormalizing);\n};\n\nvar start = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'start'\n });\n};\n\nvar string = function string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var text = '';\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t = node.text;\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n text += t;\n }\n return text;\n};\n\nvar unhangRange = function unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start, end] = Range.edges(range);\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range) || Path.hasPrevious(end.path)) {\n return range;\n }\n var endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start);\n var before = {\n anchor: first,\n focus: end\n };\n var skip = true;\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n return {\n anchor: start,\n focus: end\n };\n};\n\nvar withoutNormalizing = (editor, fn) => {\n var value = Editor.isNormalizing(editor);\n Editor.setNormalizing(editor, false);\n try {\n fn();\n } finally {\n Editor.setNormalizing(editor, value);\n }\n Editor.normalize(editor);\n};\n\nvar shouldMergeNodesRemovePrevNode = (editor, _ref, _ref2) => {\n var [prevNode, prevPath] = _ref;\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n return Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0;\n};\n\nvar deleteText = function deleteText(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var _Editor$void, _Editor$void2;\n var {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n var isCollapsed = false;\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true;\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n var [start, end] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start.path, end.path);\n var startNonEditable = voids ? null : (_Editor$void = Editor.void(editor, {\n at: start,\n mode: 'highest'\n })) !== null && _Editor$void !== void 0 ? _Editor$void : Editor.elementReadOnly(editor, {\n at: start,\n mode: 'highest'\n });\n var endNonEditable = voids ? null : (_Editor$void2 = Editor.void(editor, {\n at: end,\n mode: 'highest'\n })) !== null && _Editor$void2 !== void 0 ? _Editor$void2 : Editor.elementReadOnly(editor, {\n at: end,\n mode: 'highest'\n });\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n var before = Editor.before(editor, start);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before;\n }\n }\n if (endNonEditable) {\n var after = Editor.after(editor, end);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after;\n }\n }\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n var matches = [];\n var lastPath;\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Element.isElement(node) && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node)) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n var removedText = '';\n if (!isSingleText && !startNonEditable) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset\n } = start;\n var text = _node.text.slice(offset);\n if (text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path,\n offset,\n text\n });\n removedText = text;\n }\n }\n pathRefs.reverse().map(r => r.unref()).filter(r => r !== null).forEach(p => Transforms.removeNodes(editor, {\n at: p,\n voids\n }));\n if (!endNonEditable) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path2\n } = _point2;\n var _offset = isSingleText ? start.offset : 0;\n var _text = _node2.text.slice(_offset, end.offset);\n if (_text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path2,\n offset: _offset,\n text: _text\n });\n removedText = _text;\n }\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n // For certain scripts, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n // Bengali: \\u0980-\\u09FF\n // Thai: \\u0E00-\\u0E7F\n // Burmese (Myanmar): \\u1000-\\u109F\n // Hindi (Devanagari): \\u0900-\\u097F\n // Khmer: \\u1780-\\u17FF\n // Malayalam: \\u0D00-\\u0D7F\n // Oriya: \\u0B00-\\u0B7F\n // Punjabi (Gurmukhi): \\u0A00-\\u0A7F\n // Tamil: \\u0B80-\\u0BFF\n // Telugu: \\u0C00-\\u0C7F\n if (isCollapsed && reverse && unit === 'character' && removedText.length > 1 && removedText.match(/[\\u0980-\\u09FF\\u0E00-\\u0E7F\\u1000-\\u109F\\u0900-\\u097F\\u1780-\\u17FF\\u0D00-\\u0D7F\\u0B00-\\u0B7F\\u0A00-\\u0A7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F]+/)) {\n Transforms.insertText(editor, removedText.slice(0, removedText.length - distance));\n }\n var startUnref = startRef.unref();\n var endUnref = endRef.unref();\n var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n};\n\nvar insertFragment = function insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor),\n batchDirty = true\n } = options;\n if (!fragment.length) {\n return;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n var blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var [, firstLeafPath] = Node.first({\n children: fragment\n }, []);\n var [, lastLeafPath] = Node.last({\n children: fragment\n }, []);\n // For each node in the fragment, determine what level of wrapping should\n // be kept. At minimum, all text nodes will be inserted, but if\n // `shouldInsert` returns true for some ancestor of a particular text node,\n // then the entire ancestor will be inserted rather than inserting the text\n // nodes individually.\n var shouldInsert = _ref => {\n var [n, p] = _ref;\n var isRoot = p.length === 0;\n if (isRoot) {\n return false;\n }\n // If the destination block is empty, insert all top-level blocks of the\n // fragment.\n if (isBlockEmpty) {\n return true;\n }\n // Unless we're at the start of the destination block, unwrap any\n // non-void blocks that contain the first leaf node in the fragment.\n if (!isBlockStart && Path.isAncestor(p, firstLeafPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n // Unless we're at the end of the destination block, unwrap any non-void\n // blocks that contain the last leaf node in the fragment.\n if (!isBlockEnd && Path.isAncestor(p, lastLeafPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n // Always insert void nodes, inline elements and text nodes.\n return true;\n };\n // Whether the current node is in the first block of the fragment.\n var starting = true;\n // Inline nodes in the first block of the fragment, to be merged with the\n // destination block.\n var starts = [];\n // Blocks in the middle of the fragment.\n var middles = [];\n // Inline nodes in the last block of the fragment, to be merged with the\n // destination block. If the fragment contains only one block, this will be\n // empty.\n var ends = [];\n for (var entry of Node.nodes({\n children: fragment\n }, {\n pass: shouldInsert\n })) {\n var [node, path] = entry;\n // If we encounter a block that does not contain the first leaf, we're no\n // longer in the first block of the fragment.\n if (starting && Element.isElement(node) && !editor.isInline(node) && !Path.isAncestor(path, firstLeafPath)) {\n starting = false;\n }\n if (shouldInsert(entry)) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n }\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n // If the fragment contains inlines in multiple distinct blocks, split the\n // destination block.\n var splitBlock = ends.length > 0;\n Transforms.splitNodes(editor, {\n at,\n match: n => splitBlock ? Element.isElement(n) && Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n mode: splitBlock ? 'lowest' : 'highest',\n always: splitBlock && (!isBlockStart || starts.length > 0) && (!isBlockEnd || ends.length > 0),\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty\n });\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, {\n at: blockPath,\n voids\n });\n }\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n batchDirty\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty\n });\n if (!options.at) {\n var _path;\n if (ends.length > 0 && endRef.current) {\n _path = Path.previous(endRef.current);\n } else if (middles.length > 0 && middleRef.current) {\n _path = Path.previous(middleRef.current);\n } else if (startRef.current) {\n _path = Path.previous(startRef.current);\n }\n if (_path) {\n var _end = Editor.end(editor, _path);\n Transforms.select(editor, _end);\n }\n }\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n};\n\nvar collapse = function collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n edge = 'anchor'\n } = options;\n var {\n selection\n } = editor;\n if (!selection) {\n return;\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor);\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus);\n } else if (edge === 'start') {\n var [start] = Range.edges(selection);\n Transforms.select(editor, start);\n } else if (edge === 'end') {\n var [, end] = Range.edges(selection);\n Transforms.select(editor, end);\n }\n};\n\nvar deselect = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null\n });\n }\n};\n\nvar move = function move(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = 'character',\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit\n };\n var props = {};\n if (edge == null || edge === 'anchor') {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n if (point) {\n props.anchor = point;\n }\n }\n if (edge == null || edge === 'focus') {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n if (_point) {\n props.focus = _point;\n }\n }\n Transforms.setSelection(editor, props);\n};\n\nvar select = (editor, target) => {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(Scrubber.stringify(target)));\n }\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target\n });\n};\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar setPoint = function setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = 'both'\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var point = edge === 'anchor' ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n};\n\nvar setSelection = (editor, props) => {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n if (!selection) {\n return;\n }\n for (var k in props) {\n if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n oldProps[k] = selection[k];\n newProps[k] = props[k];\n }\n }\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps\n });\n }\n};\n\nvar insertNodes = function insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest',\n batchDirty = true\n } = options;\n var {\n at,\n match,\n select\n } = options;\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n if (nodes.length === 0) {\n return;\n }\n var [node] = nodes;\n if (!at) {\n at = getDefaultInsertLocation(editor);\n if (select !== false) {\n select = true;\n }\n }\n if (select == null) {\n select = false;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n);\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids\n });\n if (entry) {\n var [, matchPath] = entry;\n var pathRef = Editor.pathRef(editor, matchPath);\n var isAtEnd = Editor.isEnd(editor, at, matchPath);\n Transforms.splitNodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n var parentPath = Path.parent(at);\n var index = at[at.length - 1];\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n if (batchDirty) {\n // PERF: batch update dirty paths\n // batched ops used to transform existing dirty paths\n var batchedOps = [];\n var newDirtyPaths = Path.levels(parentPath);\n batchDirtyPaths(editor, () => {\n var _loop = function _loop() {\n var path = parentPath.concat(index);\n index++;\n var op = {\n type: 'insert_node',\n path,\n node: _node\n };\n editor.apply(op);\n at = Path.next(at);\n batchedOps.push(op);\n if (Text.isText(_node)) {\n newDirtyPaths.push(path);\n } else {\n newDirtyPaths.push(...Array.from(Node.nodes(_node), _ref => {\n var [, p] = _ref;\n return path.concat(p);\n }));\n }\n };\n for (var _node of nodes) {\n _loop();\n }\n }, () => {\n updateDirtyPaths(editor, newDirtyPaths, p => {\n var newPath = p;\n for (var op of batchedOps) {\n if (Path.operationCanTransformPath(op)) {\n newPath = Path.transform(newPath, op);\n if (!newPath) {\n return null;\n }\n }\n }\n return newPath;\n });\n });\n } else {\n for (var _node2 of nodes) {\n var _path = parentPath.concat(index);\n index++;\n editor.apply({\n type: 'insert_node',\n path: _path,\n node: _node2\n });\n at = Path.next(at);\n }\n }\n at = Path.previous(at);\n if (select) {\n var point = Editor.end(editor, at);\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n};\n\nvar liftNodes = function liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!at) {\n return;\n }\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent, parentPath] = parentNodeEntry;\n var index = path[path.length - 1];\n var {\n length\n } = parent.children;\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index === length - 1) {\n var _toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n var _toPath2 = Path.next(parentPath);\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n};\n\nvar _excluded = [\"text\"],\n _excluded2 = [\"children\"];\nvar hasSingleChildNest = (editor, node) => {\n if (Element.isElement(node)) {\n var element = node;\n if (Editor.isVoid(editor, node)) {\n return true;\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0]);\n } else {\n return false;\n }\n } else if (Editor.isEditor(node)) {\n return false;\n } else {\n return true;\n }\n};\nvar mergeNodes = function mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n var [current] = Editor.nodes(editor, {\n at,\n match,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), _ref => {\n var [n] = _ref;\n return n;\n }).slice(commonPath.length).slice(0, -1);\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position;\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(Scrubber.stringify(node), \" \").concat(Scrubber.stringify(prevNode)));\n }\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n }\n if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\n\nvar moveNodes = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n if (path.length !== 0) {\n editor.apply({\n type: 'move_node',\n path,\n newPath\n });\n }\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current);\n }\n }\n toRef.unref();\n });\n};\n\nvar removeNodes = function removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n var depths = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: 'remove_node',\n path,\n node\n });\n }\n }\n });\n};\n\nvar setNodes = function setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection,\n compare,\n merge\n } = options;\n var {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return;\n }\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n var [start, end] = Range.edges(at);\n var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n var endAtEndOfNode = Editor.isEnd(editor, end, end.path);\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode\n });\n var startAtStartOfNode = Editor.isStart(editor, start, start.path);\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n })) {\n var properties = {};\n // FIXME: is this correct?\n var newProperties = {};\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue;\n }\n var hasChanges = false;\n for (var k in props) {\n if (k === 'children' || k === 'text') {\n continue;\n }\n if (compare(props[k], node[k])) {\n hasChanges = true;\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k];\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k]);\n } else {\n if (props[k] != null) newProperties[k] = props[k];\n }\n }\n }\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties\n });\n }\n }\n });\n};\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\nvar splitNodes = function splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n }\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent] = Editor.parent(editor, path);\n match = n => n === parent;\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n if (!at) {\n return;\n }\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward'\n });\n var afterRef;\n try {\n var [highest] = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n if (!highest) {\n return;\n }\n var voidMatch = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n var nudge = 0;\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n if (!after) {\n var text = {\n text: ''\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n at = after;\n always = true;\n }\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n for (var [node, _path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n if (_path.length < highestPath.length || _path.length === 0 || !voids && Element.isElement(node) && Editor.isVoid(editor, node)) {\n break;\n }\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path);\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path)) {\n split = true;\n var properties = Node.extractProps(node);\n editor.apply({\n type: 'split_node',\n path: _path,\n position,\n properties\n });\n }\n position = _path[_path.length - 1] + (split || isEnd ? 1 : 0);\n }\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n Transforms.select(editor, _point2);\n }\n } finally {\n var _afterRef;\n beforeRef.unref();\n (_afterRef = afterRef) === null || _afterRef === void 0 || _afterRef.unref();\n }\n });\n};\n\nvar unsetNodes = function unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!Array.isArray(props)) {\n props = [props];\n }\n var obj = {};\n for (var key of props) {\n obj[key] = null;\n }\n Transforms.setNodes(editor, obj, options);\n};\n\nvar unwrapNodes = function unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n }\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse();\n var _loop = function _loop() {\n var path = pathRef.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids\n });\n };\n for (var pathRef of pathRefs) {\n _loop();\n }\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n};\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar wrapNodes = function wrapNodes(editor, element) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at);\n } else if (editor.isInline(element)) {\n match = n => Element.isElement(n) && Editor.isInline(editor, n) || Text.isText(n);\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n }\n if (split && Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n // Always split if we're in the middle of a block, to ensure that text\n // node boundaries are handled correctly.\n var isAtBlockEdge = point => {\n var blockAbove = Editor.above(editor, {\n at: point,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n)\n });\n return blockAbove && Editor.isEdge(editor, point, blockAbove[1]);\n };\n Transforms.splitNodes(editor, {\n at: end,\n match,\n voids,\n always: !isAtBlockEdge(end)\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n voids,\n always: !isAtBlockEdge(start)\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element) ? n => Element.isElement(n) && Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n mode: 'lowest',\n voids\n }));\n var _loop = function _loop() {\n var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n if (!a) {\n return 0; // continue\n }\n var matches = Array.from(Editor.nodes(editor, {\n at: a,\n match,\n mode,\n voids\n }));\n if (matches.length > 0) {\n var [first] = matches;\n var last = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last;\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n return 0; // continue\n }\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n var wrapper = _objectSpread(_objectSpread({}, element), {}, {\n children: []\n });\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: n => Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids\n });\n }\n },\n _ret;\n for (var [, rootPath] of roots) {\n _ret = _loop();\n if (_ret === 0) continue;\n }\n });\n};\n\n/**\n * Create a new Slate `Editor` object.\n */\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isElementReadOnly: () => false,\n isInline: () => false,\n isSelectable: () => true,\n isVoid: () => false,\n markableVoid: () => false,\n onChange: () => {},\n // Core\n apply: function apply$1() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return apply(editor, ...args);\n },\n // Editor\n addMark: function addMark$1() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return addMark(editor, ...args);\n },\n deleteBackward: function deleteBackward$1() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return deleteBackward(editor, ...args);\n },\n deleteForward: function deleteForward$1() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return deleteForward(editor, ...args);\n },\n deleteFragment: function deleteFragment$1() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return deleteFragment(editor, ...args);\n },\n getFragment: function getFragment$1() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n return getFragment(editor, ...args);\n },\n insertBreak: function insertBreak$1() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n return insertBreak(editor, ...args);\n },\n insertSoftBreak: function insertSoftBreak$1() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n return insertSoftBreak(editor, ...args);\n },\n insertFragment: function insertFragment$1() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n return insertFragment(editor, ...args);\n },\n insertNode: function insertNode$1() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n return insertNode(editor, ...args);\n },\n insertText: function insertText$1() {\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n args[_key11] = arguments[_key11];\n }\n return insertText(editor, ...args);\n },\n normalizeNode: function normalizeNode$1() {\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n args[_key12] = arguments[_key12];\n }\n return normalizeNode(editor, ...args);\n },\n removeMark: function removeMark$1() {\n for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n args[_key13] = arguments[_key13];\n }\n return removeMark(editor, ...args);\n },\n getDirtyPaths: function getDirtyPaths$1() {\n for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {\n args[_key14] = arguments[_key14];\n }\n return getDirtyPaths(editor, ...args);\n },\n shouldNormalize: function shouldNormalize$1() {\n for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {\n args[_key15] = arguments[_key15];\n }\n return shouldNormalize(editor, ...args);\n },\n // Editor interface\n above: function above$1() {\n for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {\n args[_key16] = arguments[_key16];\n }\n return above(editor, ...args);\n },\n after: function after$1() {\n for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {\n args[_key17] = arguments[_key17];\n }\n return after(editor, ...args);\n },\n before: function before$1() {\n for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {\n args[_key18] = arguments[_key18];\n }\n return before(editor, ...args);\n },\n collapse: function collapse$1() {\n for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {\n args[_key19] = arguments[_key19];\n }\n return collapse(editor, ...args);\n },\n delete: function _delete() {\n for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {\n args[_key20] = arguments[_key20];\n }\n return deleteText(editor, ...args);\n },\n deselect: function deselect$1() {\n for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {\n args[_key21] = arguments[_key21];\n }\n return deselect(editor, ...args);\n },\n edges: function edges$1() {\n for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {\n args[_key22] = arguments[_key22];\n }\n return edges(editor, ...args);\n },\n elementReadOnly: function elementReadOnly$1() {\n for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {\n args[_key23] = arguments[_key23];\n }\n return elementReadOnly(editor, ...args);\n },\n end: function end$1() {\n for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {\n args[_key24] = arguments[_key24];\n }\n return end(editor, ...args);\n },\n first: function first$1() {\n for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {\n args[_key25] = arguments[_key25];\n }\n return first(editor, ...args);\n },\n fragment: function fragment$1() {\n for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {\n args[_key26] = arguments[_key26];\n }\n return fragment(editor, ...args);\n },\n getMarks: function getMarks() {\n for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {\n args[_key27] = arguments[_key27];\n }\n return marks(editor, ...args);\n },\n hasBlocks: function hasBlocks$1() {\n for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {\n args[_key28] = arguments[_key28];\n }\n return hasBlocks(editor, ...args);\n },\n hasInlines: function hasInlines$1() {\n for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {\n args[_key29] = arguments[_key29];\n }\n return hasInlines(editor, ...args);\n },\n hasPath: function hasPath$1() {\n for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {\n args[_key30] = arguments[_key30];\n }\n return hasPath(editor, ...args);\n },\n hasTexts: function hasTexts$1() {\n for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {\n args[_key31] = arguments[_key31];\n }\n return hasTexts(editor, ...args);\n },\n insertNodes: function insertNodes$1() {\n for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {\n args[_key32] = arguments[_key32];\n }\n return insertNodes(editor, ...args);\n },\n isBlock: function isBlock$1() {\n for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {\n args[_key33] = arguments[_key33];\n }\n return isBlock(editor, ...args);\n },\n isEdge: function isEdge$1() {\n for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {\n args[_key34] = arguments[_key34];\n }\n return isEdge(editor, ...args);\n },\n isEmpty: function isEmpty$1() {\n for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {\n args[_key35] = arguments[_key35];\n }\n return isEmpty(editor, ...args);\n },\n isEnd: function isEnd$1() {\n for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {\n args[_key36] = arguments[_key36];\n }\n return isEnd(editor, ...args);\n },\n isNormalizing: function isNormalizing$1() {\n for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {\n args[_key37] = arguments[_key37];\n }\n return isNormalizing(editor, ...args);\n },\n isStart: function isStart$1() {\n for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {\n args[_key38] = arguments[_key38];\n }\n return isStart(editor, ...args);\n },\n last: function last$1() {\n for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {\n args[_key39] = arguments[_key39];\n }\n return last(editor, ...args);\n },\n leaf: function leaf$1() {\n for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {\n args[_key40] = arguments[_key40];\n }\n return leaf(editor, ...args);\n },\n levels: function levels$1() {\n for (var _len41 = arguments.length, args = new Array(_len41), _key41 = 0; _key41 < _len41; _key41++) {\n args[_key41] = arguments[_key41];\n }\n return levels(editor, ...args);\n },\n liftNodes: function liftNodes$1() {\n for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {\n args[_key42] = arguments[_key42];\n }\n return liftNodes(editor, ...args);\n },\n mergeNodes: function mergeNodes$1() {\n for (var _len43 = arguments.length, args = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {\n args[_key43] = arguments[_key43];\n }\n return mergeNodes(editor, ...args);\n },\n move: function move$1() {\n for (var _len44 = arguments.length, args = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {\n args[_key44] = arguments[_key44];\n }\n return move(editor, ...args);\n },\n moveNodes: function moveNodes$1() {\n for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {\n args[_key45] = arguments[_key45];\n }\n return moveNodes(editor, ...args);\n },\n next: function next$1() {\n for (var _len46 = arguments.length, args = new Array(_len46), _key46 = 0; _key46 < _len46; _key46++) {\n args[_key46] = arguments[_key46];\n }\n return next(editor, ...args);\n },\n node: function node$1() {\n for (var _len47 = arguments.length, args = new Array(_len47), _key47 = 0; _key47 < _len47; _key47++) {\n args[_key47] = arguments[_key47];\n }\n return node(editor, ...args);\n },\n nodes: function nodes$1() {\n for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {\n args[_key48] = arguments[_key48];\n }\n return nodes(editor, ...args);\n },\n normalize: function normalize$1() {\n for (var _len49 = arguments.length, args = new Array(_len49), _key49 = 0; _key49 < _len49; _key49++) {\n args[_key49] = arguments[_key49];\n }\n return normalize(editor, ...args);\n },\n parent: function parent$1() {\n for (var _len50 = arguments.length, args = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {\n args[_key50] = arguments[_key50];\n }\n return parent(editor, ...args);\n },\n path: function path$1() {\n for (var _len51 = arguments.length, args = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {\n args[_key51] = arguments[_key51];\n }\n return path(editor, ...args);\n },\n pathRef: function pathRef$1() {\n for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {\n args[_key52] = arguments[_key52];\n }\n return pathRef(editor, ...args);\n },\n pathRefs: function pathRefs$1() {\n for (var _len53 = arguments.length, args = new Array(_len53), _key53 = 0; _key53 < _len53; _key53++) {\n args[_key53] = arguments[_key53];\n }\n return pathRefs(editor, ...args);\n },\n point: function point$1() {\n for (var _len54 = arguments.length, args = new Array(_len54), _key54 = 0; _key54 < _len54; _key54++) {\n args[_key54] = arguments[_key54];\n }\n return point(editor, ...args);\n },\n pointRef: function pointRef$1() {\n for (var _len55 = arguments.length, args = new Array(_len55), _key55 = 0; _key55 < _len55; _key55++) {\n args[_key55] = arguments[_key55];\n }\n return pointRef(editor, ...args);\n },\n pointRefs: function pointRefs$1() {\n for (var _len56 = arguments.length, args = new Array(_len56), _key56 = 0; _key56 < _len56; _key56++) {\n args[_key56] = arguments[_key56];\n }\n return pointRefs(editor, ...args);\n },\n positions: function positions$1() {\n for (var _len57 = arguments.length, args = new Array(_len57), _key57 = 0; _key57 < _len57; _key57++) {\n args[_key57] = arguments[_key57];\n }\n return positions(editor, ...args);\n },\n previous: function previous$1() {\n for (var _len58 = arguments.length, args = new Array(_len58), _key58 = 0; _key58 < _len58; _key58++) {\n args[_key58] = arguments[_key58];\n }\n return previous(editor, ...args);\n },\n range: function range$1() {\n for (var _len59 = arguments.length, args = new Array(_len59), _key59 = 0; _key59 < _len59; _key59++) {\n args[_key59] = arguments[_key59];\n }\n return range(editor, ...args);\n },\n rangeRef: function rangeRef$1() {\n for (var _len60 = arguments.length, args = new Array(_len60), _key60 = 0; _key60 < _len60; _key60++) {\n args[_key60] = arguments[_key60];\n }\n return rangeRef(editor, ...args);\n },\n rangeRefs: function rangeRefs$1() {\n for (var _len61 = arguments.length, args = new Array(_len61), _key61 = 0; _key61 < _len61; _key61++) {\n args[_key61] = arguments[_key61];\n }\n return rangeRefs(editor, ...args);\n },\n removeNodes: function removeNodes$1() {\n for (var _len62 = arguments.length, args = new Array(_len62), _key62 = 0; _key62 < _len62; _key62++) {\n args[_key62] = arguments[_key62];\n }\n return removeNodes(editor, ...args);\n },\n select: function select$1() {\n for (var _len63 = arguments.length, args = new Array(_len63), _key63 = 0; _key63 < _len63; _key63++) {\n args[_key63] = arguments[_key63];\n }\n return select(editor, ...args);\n },\n setNodes: function setNodes$1() {\n for (var _len64 = arguments.length, args = new Array(_len64), _key64 = 0; _key64 < _len64; _key64++) {\n args[_key64] = arguments[_key64];\n }\n return setNodes(editor, ...args);\n },\n setNormalizing: function setNormalizing$1() {\n for (var _len65 = arguments.length, args = new Array(_len65), _key65 = 0; _key65 < _len65; _key65++) {\n args[_key65] = arguments[_key65];\n }\n return setNormalizing(editor, ...args);\n },\n setPoint: function setPoint$1() {\n for (var _len66 = arguments.length, args = new Array(_len66), _key66 = 0; _key66 < _len66; _key66++) {\n args[_key66] = arguments[_key66];\n }\n return setPoint(editor, ...args);\n },\n setSelection: function setSelection$1() {\n for (var _len67 = arguments.length, args = new Array(_len67), _key67 = 0; _key67 < _len67; _key67++) {\n args[_key67] = arguments[_key67];\n }\n return setSelection(editor, ...args);\n },\n splitNodes: function splitNodes$1() {\n for (var _len68 = arguments.length, args = new Array(_len68), _key68 = 0; _key68 < _len68; _key68++) {\n args[_key68] = arguments[_key68];\n }\n return splitNodes(editor, ...args);\n },\n start: function start$1() {\n for (var _len69 = arguments.length, args = new Array(_len69), _key69 = 0; _key69 < _len69; _key69++) {\n args[_key69] = arguments[_key69];\n }\n return start(editor, ...args);\n },\n string: function string$1() {\n for (var _len70 = arguments.length, args = new Array(_len70), _key70 = 0; _key70 < _len70; _key70++) {\n args[_key70] = arguments[_key70];\n }\n return string(editor, ...args);\n },\n unhangRange: function unhangRange$1() {\n for (var _len71 = arguments.length, args = new Array(_len71), _key71 = 0; _key71 < _len71; _key71++) {\n args[_key71] = arguments[_key71];\n }\n return unhangRange(editor, ...args);\n },\n unsetNodes: function unsetNodes$1() {\n for (var _len72 = arguments.length, args = new Array(_len72), _key72 = 0; _key72 < _len72; _key72++) {\n args[_key72] = arguments[_key72];\n }\n return unsetNodes(editor, ...args);\n },\n unwrapNodes: function unwrapNodes$1() {\n for (var _len73 = arguments.length, args = new Array(_len73), _key73 = 0; _key73 < _len73; _key73++) {\n args[_key73] = arguments[_key73];\n }\n return unwrapNodes(editor, ...args);\n },\n void: function _void() {\n for (var _len74 = arguments.length, args = new Array(_len74), _key74 = 0; _key74 < _len74; _key74++) {\n args[_key74] = arguments[_key74];\n }\n return getVoid(editor, ...args);\n },\n withoutNormalizing: function withoutNormalizing$1() {\n for (var _len75 = arguments.length, args = new Array(_len75), _key75 = 0; _key75 < _len75; _key75++) {\n args[_key75] = arguments[_key75];\n }\n return withoutNormalizing(editor, ...args);\n },\n wrapNodes: function wrapNodes$1() {\n for (var _len76 = arguments.length, args = new Array(_len76), _key76 = 0; _key76 < _len76; _key76++) {\n args[_key76] = arguments[_key76];\n }\n return wrapNodes(editor, ...args);\n },\n shouldMergeNodesRemovePrevNode: function shouldMergeNodesRemovePrevNode$1() {\n for (var _len77 = arguments.length, args = new Array(_len77), _key77 = 0; _key77 < _len77; _key77++) {\n args[_key77] = arguments[_key77];\n }\n return shouldMergeNodesRemovePrevNode(editor, ...args);\n }\n };\n return editor;\n};\n\nexport { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Scrubber, Span, Text, Transforms, above, addMark, after, apply, before, collapse, createEditor, deleteBackward, deleteForward, deleteFragment, deleteText, deselect, edges, elementReadOnly, end, first, fragment, getDirtyPaths, getFragment, getVoid, hasBlocks, hasInlines, hasPath, hasTexts, insertBreak, insertFragment, insertNode, insertNodes, insertSoftBreak, insertText, isBlock, isEdge, isEditor, isEmpty, isEnd, isNormalizing, isObject, isStart, last, leaf, levels, liftNodes, marks, mergeNodes, move, moveNodes, next, node, nodes, normalize, normalizeNode, parent, path, pathRef, pathRefs, point, pointRef, pointRefs, positions, previous, range, rangeRef, rangeRefs, removeMark, removeNodes, select, setNodes, setNormalizing, setPoint, setSelection, shouldMergeNodesRemovePrevNode, shouldNormalize, splitNodes, start, string, unhangRange, unsetNodes, unwrapNodes, withoutNormalizing, wrapNodes };\n//# sourceMappingURL=index.es.js.map\n","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n value = String(value || '')\n\n if (rtl.test(value)) {\n return 'rtl'\n }\n\n if (ltr.test(value)) {\n return 'ltr'\n }\n\n return 'neutral'\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","const t=t=>\"object\"==typeof t&&null!=t&&1===t.nodeType,e=(t,e)=>(!e||\"hidden\"!==t)&&(\"visible\"!==t&&\"clip\"!==t),n=(t,n)=>{if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){const o=getComputedStyle(t,null);return e(o.overflowY,n)||e(o.overflowX,n)||(t=>{const e=(t=>{if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}})(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)})(t)}return!1},o=(t,e,n,o,l,r,i,s)=>r<t&&i>e||r>t&&i<e?0:r<=t&&s<=n||i>=e&&s>=n?r-t-o:i>e&&s<n||r<t&&s>n?i-e+l:0,l=t=>{const e=t.parentElement;return null==e?t.getRootNode().host||null:e},r=(e,r)=>{var i,s,d,h;if(\"undefined\"==typeof document)return[];const{scrollMode:c,block:f,inline:u,boundary:a,skipOverflowHiddenElements:g}=r,p=\"function\"==typeof a?a:t=>t!==a;if(!t(e))throw new TypeError(\"Invalid target\");const m=document.scrollingElement||document.documentElement,w=[];let W=e;for(;t(W)&&p(W);){if(W=l(W),W===m){w.push(W);break}null!=W&&W===document.body&&n(W)&&!n(document.documentElement)||null!=W&&n(W,g)&&w.push(W)}const b=null!=(s=null==(i=window.visualViewport)?void 0:i.width)?s:innerWidth,H=null!=(h=null==(d=window.visualViewport)?void 0:d.height)?h:innerHeight,{scrollX:y,scrollY:M}=window,{height:v,width:E,top:x,right:C,bottom:I,left:R}=e.getBoundingClientRect(),{top:T,right:B,bottom:F,left:V}=(t=>{const e=window.getComputedStyle(t);return{top:parseFloat(e.scrollMarginTop)||0,right:parseFloat(e.scrollMarginRight)||0,bottom:parseFloat(e.scrollMarginBottom)||0,left:parseFloat(e.scrollMarginLeft)||0}})(e);let k=\"start\"===f||\"nearest\"===f?x-T:\"end\"===f?I+F:x+v/2-T+F,D=\"center\"===u?R+E/2-V+B:\"end\"===u?C+B:R-V;const L=[];for(let t=0;t<w.length;t++){const e=w[t],{height:l,width:r,top:i,right:s,bottom:d,left:h}=e.getBoundingClientRect();if(\"if-needed\"===c&&x>=0&&R>=0&&I<=H&&C<=b&&(e===m&&!n(e)||x>=i&&I<=d&&R>=h&&C<=s))return L;const a=getComputedStyle(e),g=parseInt(a.borderLeftWidth,10),p=parseInt(a.borderTopWidth,10),W=parseInt(a.borderRightWidth,10),T=parseInt(a.borderBottomWidth,10);let B=0,F=0;const V=\"offsetWidth\"in e?e.offsetWidth-e.clientWidth-g-W:0,S=\"offsetHeight\"in e?e.offsetHeight-e.clientHeight-p-T:0,X=\"offsetWidth\"in e?0===e.offsetWidth?0:r/e.offsetWidth:0,Y=\"offsetHeight\"in e?0===e.offsetHeight?0:l/e.offsetHeight:0;if(m===e)B=\"start\"===f?k:\"end\"===f?k-H:\"nearest\"===f?o(M,M+H,H,p,T,M+k,M+k+v,v):k-H/2,F=\"start\"===u?D:\"center\"===u?D-b/2:\"end\"===u?D-b:o(y,y+b,b,g,W,y+D,y+D+E,E),B=Math.max(0,B+M),F=Math.max(0,F+y);else{B=\"start\"===f?k-i-p:\"end\"===f?k-d+T+S:\"nearest\"===f?o(i,d,l,p,T+S,k,k+v,v):k-(i+l/2)+S/2,F=\"start\"===u?D-h-g:\"center\"===u?D-(h+r/2)+V/2:\"end\"===u?D-s+W+V:o(h,s,r,g,W+V,D,D+E,E);const{scrollLeft:t,scrollTop:n}=e;B=0===Y?0:Math.max(0,Math.min(n+B/Y,e.scrollHeight-l/Y+S)),F=0===X?0:Math.max(0,Math.min(t+F/X,e.scrollWidth-r/X+V)),k+=n-B,D+=t-F}L.push({el:e,top:B,left:F})}return L};export{r as compute};//# sourceMappingURL=index.js.map\n","import{compute as t}from\"compute-scroll-into-view\";const o=t=>!1===t?{block:\"end\",inline:\"nearest\"}:(t=>t===Object(t)&&0!==Object.keys(t).length)(t)?t:{block:\"start\",inline:\"nearest\"};function e(e,r){if(!e.isConnected||!(t=>{let o=t;for(;o&&o.parentNode;){if(o.parentNode===document)return!0;o=o.parentNode instanceof ShadowRoot?o.parentNode.host:o.parentNode}return!1})(e))return;const n=(t=>{const o=window.getComputedStyle(t);return{top:parseFloat(o.scrollMarginTop)||0,right:parseFloat(o.scrollMarginRight)||0,bottom:parseFloat(o.scrollMarginBottom)||0,left:parseFloat(o.scrollMarginLeft)||0}})(e);if((t=>\"object\"==typeof t&&\"function\"==typeof t.behavior)(r))return r.behavior(t(e,r));const l=\"boolean\"==typeof r||null==r?void 0:r.behavior;for(const{el:a,top:i,left:s}of t(e,o(r))){const t=i-n.top+n.bottom,o=s-n.left+n.right;a.scroll({top:t,left:o,behavior:l})}}export{e as default};//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (value.length > 1 && !modifier && !ALIASES[value] && !CODES[name]) {\n throw new TypeError('Unknown modifier: \"' + value + '\"');\n }\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","import { Transforms, Element, Editor, Scrubber, Range, Node, Text, Path, Point } from 'slate';\nimport { isHotkey } from 'is-hotkey';\n\n/**\n * Types.\n */\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nvar DOMNode = globalThis.Node;\nvar DOMElement = globalThis.Element;\nvar DOMText = globalThis.Text;\nvar DOMRange = globalThis.Range;\nvar DOMSelection = globalThis.Selection;\nvar DOMStaticRange = globalThis.StaticRange;\n/**\n * Returns the host window of a DOM node\n */\nvar getDefaultView = value => {\n return value && value.ownerDocument && value.ownerDocument.defaultView || null;\n};\n/**\n * Check if a DOM node is a comment node.\n */\nvar isDOMComment = value => {\n return isDOMNode(value) && value.nodeType === 8;\n};\n/**\n * Check if a DOM node is an element node.\n */\nvar isDOMElement = value => {\n return isDOMNode(value) && value.nodeType === 1;\n};\n/**\n * Check if a value is a DOM node.\n */\nvar isDOMNode = value => {\n var window = getDefaultView(value);\n return !!window && value instanceof window.Node;\n};\n/**\n * Check if a value is a DOM selection.\n */\nvar isDOMSelection = value => {\n var window = value && value.anchorNode && getDefaultView(value.anchorNode);\n return !!window && value instanceof window.Selection;\n};\n/**\n * Check if a DOM node is an element node.\n */\nvar isDOMText = value => {\n return isDOMNode(value) && value.nodeType === 3;\n};\n/**\n * Checks whether a paste event is a plaintext-only event.\n */\nvar isPlainTextOnlyPaste = event => {\n return event.clipboardData && event.clipboardData.getData('text/plain') !== '' && event.clipboardData.types.length === 1;\n};\n/**\n * Normalize a DOM point so that it always refers to a text node.\n */\nvar normalizeDOMPoint = domPoint => {\n var [node, offset] = domPoint;\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (isDOMElement(node) && node.childNodes.length) {\n var isLast = offset === node.childNodes.length;\n var index = isLast ? offset - 1 : offset;\n [node, index] = getEditableChildAndIndex(node, index, isLast ? 'backward' : 'forward');\n // If the editable child found is in front of input offset, we instead seek to its end\n isLast = index < offset;\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (isDOMElement(node) && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, isLast ? 'backward' : 'forward');\n }\n // Determine the new offset inside the text node.\n offset = isLast && node.textContent != null ? node.textContent.length : 0;\n }\n // Return the node and offset.\n return [node, offset];\n};\n/**\n * Determines whether the active element is nested within a shadowRoot\n */\nvar hasShadowRoot = node => {\n var parent = node && node.parentNode;\n while (parent) {\n if (parent.toString() === '[object ShadowRoot]') {\n return true;\n }\n parent = parent.parentNode;\n }\n return false;\n};\n/**\n * Get the nearest editable child and index at `index` in a `parent`, preferring\n * `direction`.\n */\nvar getEditableChildAndIndex = (parent, index, direction) => {\n var {\n childNodes\n } = parent;\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false;\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute('contenteditable') === 'false') {\n if (triedForward && triedBackward) {\n break;\n }\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n child = childNodes[i];\n index = i;\n i += direction === 'forward' ? 1 : -1;\n }\n return [child, index];\n};\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n */\nvar getEditableChild = (parent, index, direction) => {\n var [child] = getEditableChildAndIndex(parent, index, direction);\n return child;\n};\n/**\n * Get a plaintext representation of the content of a node, accounting for block\n * elements which get a newline appended.\n *\n * The domNode must be attached to the DOM.\n */\nvar getPlainText = domNode => {\n var text = '';\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue;\n }\n if (isDOMElement(domNode)) {\n for (var childNode of Array.from(domNode.childNodes)) {\n text += getPlainText(childNode);\n }\n var display = getComputedStyle(domNode).getPropertyValue('display');\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n text += '\\n';\n }\n }\n return text;\n};\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nvar catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nvar getSlateFragmentAttribute = dataTransfer => {\n var htmlData = dataTransfer.getData('text/html');\n var [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\n/**\n * Get the dom selection from Shadow Root if possible, otherwise from the document\n */\nvar getSelection = root => {\n if (root.getSelection != null) {\n return root.getSelection();\n }\n return document.getSelection();\n};\n/**\n * Check whether a mutation originates from a editable element inside the editor.\n */\nvar isTrackedMutation = (editor, mutation, batch) => {\n var {\n target\n } = mutation;\n if (isDOMElement(target) && target.matches('[contentEditable=\"false\"]')) {\n return false;\n }\n var {\n document\n } = DOMEditor.getWindow(editor);\n if (document.contains(target)) {\n return DOMEditor.hasDOMNode(editor, target, {\n editable: true\n });\n }\n var parentMutation = batch.find(_ref => {\n var {\n addedNodes,\n removedNodes\n } = _ref;\n for (var node of addedNodes) {\n if (node === target || node.contains(target)) {\n return true;\n }\n }\n for (var _node of removedNodes) {\n if (_node === target || _node.contains(target)) {\n return true;\n }\n }\n });\n if (!parentMutation || parentMutation === mutation) {\n return false;\n }\n // Target add/remove is tracked. Track the mutation if we track the parent mutation.\n return isTrackedMutation(editor, parentMutation, batch);\n};\n/**\n * Retrieves the deepest active element in the DOM, considering nested shadow DOMs.\n */\nvar getActiveElement = () => {\n var activeElement = document.activeElement;\n while ((_activeElement = activeElement) !== null && _activeElement !== void 0 && _activeElement.shadowRoot && (_activeElement$shadow = activeElement.shadowRoot) !== null && _activeElement$shadow !== void 0 && _activeElement$shadow.activeElement) {\n var _activeElement, _activeElement$shadow, _activeElement2;\n activeElement = (_activeElement2 = activeElement) === null || _activeElement2 === void 0 || (_activeElement2 = _activeElement2.shadowRoot) === null || _activeElement2 === void 0 ? void 0 : _activeElement2.activeElement;\n }\n return activeElement;\n};\n/**\n * @returns `true` if `otherNode` is before `node` in the document; otherwise, `false`.\n */\nvar isBefore = (node, otherNode) => Boolean(node.compareDocumentPosition(otherNode) & DOMNode.DOCUMENT_POSITION_PRECEDING);\n/**\n * @returns `true` if `otherNode` is after `node` in the document; otherwise, `false`.\n */\nvar isAfter = (node, otherNode) => Boolean(node.compareDocumentPosition(otherNode) & DOMNode.DOCUMENT_POSITION_FOLLOWING);\n\nvar _navigator$userAgent$, _navigator$userAgent$2;\nvar IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);\nvar IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_WEBKIT = typeof navigator !== 'undefined' && /AppleWebKit(?!.*Chrome)/i.test(navigator.userAgent);\n// \"modern\" Edge was released at 79.x\nvar IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent);\nvar IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent);\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nvar IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent);\nvar IS_ANDROID_CHROME_LEGACY = IS_ANDROID && typeof navigator !== 'undefined' && /Chrome?\\/(?:[0-5]?\\d)(?:\\.)/i.test(navigator.userAgent);\n// Firefox did not support `beforeInput` until `v87`.\nvar IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(navigator.userAgent);\n// UC mobile browser\nvar IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent);\n// Wechat browser (not including mac wechat)\nvar IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent) && !/.*MacWechat/.test(navigator.userAgent) && (\n// avoid lookbehind (buggy in safari < 16.4)\n!IS_CHROME || IS_CHROME_LEGACY); // wechat and low chrome is real wechat\n// Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nvar CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n// Check if the browser is Safari and older than 17\ntypeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Version\\/(\\d+)/.test(navigator.userAgent) && ((_navigator$userAgent$ = navigator.userAgent.match(/Version\\/(\\d+)/)) !== null && _navigator$userAgent$ !== void 0 && _navigator$userAgent$[1] ? parseInt((_navigator$userAgent$2 = navigator.userAgent.match(/Version\\/(\\d+)/)) === null || _navigator$userAgent$2 === void 0 ? void 0 : _navigator$userAgent$2[1], 10) < 17 : false);\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nvar HAS_BEFORE_INPUT_SUPPORT = (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) && !IS_EDGE_LEGACY &&\n// globalThis is undefined in older browsers\ntypeof globalThis !== 'undefined' && globalThis.InputEvent &&\n// @ts-ignore The `getTargetRanges` property isn't recognized.\ntypeof globalThis.InputEvent.prototype.getTargetRanges === 'function';\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n/**\n * An auto-incrementing identifier for keys.\n */\nvar n = 0;\n/**\n * A class that keeps track of a key string. We use a full class here because we\n * want to be able to use them as keys in `WeakMap` objects.\n */\nclass Key {\n constructor() {\n _defineProperty(this, \"id\", void 0);\n this.id = \"\".concat(n++);\n }\n}\n\n/**\n * Two weak maps that allow us rebuild a path given a node. They are populated\n * at render time such that after a render occurs we can always backtrack.\n */\nvar IS_NODE_MAP_DIRTY = new WeakMap();\nvar NODE_TO_INDEX = new WeakMap();\nvar NODE_TO_PARENT = new WeakMap();\n/**\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\n * are used to resolve DOM event-related logic into Slate actions.\n */\nvar EDITOR_TO_WINDOW = new WeakMap();\nvar EDITOR_TO_ELEMENT = new WeakMap();\nvar EDITOR_TO_PLACEHOLDER_ELEMENT = new WeakMap();\nvar ELEMENT_TO_NODE = new WeakMap();\nvar NODE_TO_ELEMENT = new WeakMap();\nvar NODE_TO_KEY = new WeakMap();\nvar EDITOR_TO_KEY_TO_ELEMENT = new WeakMap();\n/**\n * Weak maps for storing editor-related state.\n */\nvar IS_READ_ONLY = new WeakMap();\nvar IS_FOCUSED = new WeakMap();\nvar IS_COMPOSING = new WeakMap();\nvar EDITOR_TO_USER_SELECTION = new WeakMap();\n/**\n * Weak map for associating the context `onChange` context with the plugin.\n */\nvar EDITOR_TO_ON_CHANGE = new WeakMap();\n/**\n * Weak maps for saving pending state on composition stage.\n */\nvar EDITOR_TO_SCHEDULE_FLUSH = new WeakMap();\nvar EDITOR_TO_PENDING_INSERTION_MARKS = new WeakMap();\nvar EDITOR_TO_USER_MARKS = new WeakMap();\n/**\n * Android input handling specific weak-maps\n */\nvar EDITOR_TO_PENDING_DIFFS = new WeakMap();\nvar EDITOR_TO_PENDING_ACTION = new WeakMap();\nvar EDITOR_TO_PENDING_SELECTION = new WeakMap();\nvar EDITOR_TO_FORCE_RENDER = new WeakMap();\n/**\n * Symbols.\n */\nvar PLACEHOLDER_SYMBOL = Symbol('placeholder');\nvar MARK_PLACEHOLDER_SYMBOL = Symbol('mark-placeholder');\n\n// eslint-disable-next-line no-redeclare\nvar DOMEditor = {\n androidPendingDiffs: editor => EDITOR_TO_PENDING_DIFFS.get(editor),\n androidScheduleFlush: editor => {\n var _EDITOR_TO_SCHEDULE_F;\n (_EDITOR_TO_SCHEDULE_F = EDITOR_TO_SCHEDULE_FLUSH.get(editor)) === null || _EDITOR_TO_SCHEDULE_F === void 0 || _EDITOR_TO_SCHEDULE_F();\n },\n blur: editor => {\n var el = DOMEditor.toDOMNode(editor, editor);\n var root = DOMEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, false);\n if (root.activeElement === el) {\n el.blur();\n }\n },\n deselect: editor => {\n var {\n selection\n } = editor;\n var root = DOMEditor.findDocumentOrShadowRoot(editor);\n var domSelection = getSelection(root);\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n if (selection) {\n Transforms.deselect(editor);\n }\n },\n findDocumentOrShadowRoot: editor => {\n var el = DOMEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n if (root instanceof Document || root instanceof ShadowRoot) {\n return root;\n }\n return el.ownerDocument;\n },\n findEventRange: (editor, event) => {\n if ('nativeEvent' in event) {\n event = event.nativeEvent;\n }\n var {\n clientX: x,\n clientY: y,\n target\n } = event;\n if (x == null || y == null) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n var node = DOMEditor.toSlateNode(editor, event.target);\n var path = DOMEditor.findPath(editor, node);\n // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n if (Element.isElement(node) && Editor.isVoid(editor, node)) {\n var rect = target.getBoundingClientRect();\n var isPrev = editor.isInline(node) ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n var edge = Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end'\n });\n var point = isPrev ? Editor.before(editor, edge) : Editor.after(editor, edge);\n if (point) {\n var _range = Editor.range(editor, point);\n return _range;\n }\n }\n // Else resolve a range from the caret position where the drop occured.\n var domRange;\n var {\n document\n } = DOMEditor.getWindow(editor);\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y);\n } else {\n var position = document.caretPositionFromPoint(x, y);\n if (position) {\n domRange = document.createRange();\n domRange.setStart(position.offsetNode, position.offset);\n domRange.setEnd(position.offsetNode, position.offset);\n }\n }\n if (!domRange) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n // Resolve a Slate range from the DOM range.\n var range = DOMEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false\n });\n return range;\n },\n findKey: (editor, node) => {\n var key = NODE_TO_KEY.get(node);\n if (!key) {\n key = new Key();\n NODE_TO_KEY.set(node, key);\n }\n return key;\n },\n findPath: (editor, node) => {\n var path = [];\n var child = node;\n while (true) {\n var parent = NODE_TO_PARENT.get(child);\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n var i = NODE_TO_INDEX.get(child);\n if (i == null) {\n break;\n }\n path.unshift(i);\n child = parent;\n }\n throw new Error(\"Unable to find the path for Slate node: \".concat(Scrubber.stringify(node)));\n },\n focus: function focus(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n retries: 5\n };\n // Return if already focused\n if (IS_FOCUSED.get(editor)) {\n return;\n }\n // Return if no dom node is associated with the editor, which means the editor is not yet mounted\n // or has been unmounted. This can happen especially, while retrying to focus the editor.\n if (!EDITOR_TO_ELEMENT.get(editor)) {\n return;\n }\n // Retry setting focus if the editor has pending operations.\n // The DOM (selection) is unstable while changes are applied.\n // Retry until retries are exhausted or editor is focused.\n if (options.retries <= 0) {\n throw new Error('Could not set focus, editor seems stuck with pending operations');\n }\n if (editor.operations.length > 0) {\n setTimeout(() => {\n DOMEditor.focus(editor, {\n retries: options.retries - 1\n });\n }, 10);\n return;\n }\n var el = DOMEditor.toDOMNode(editor, editor);\n var root = DOMEditor.findDocumentOrShadowRoot(editor);\n if (root.activeElement !== el) {\n // Ensure that the DOM selection state is set to the editor's selection\n if (editor.selection && root instanceof Document) {\n var domSelection = getSelection(root);\n var domRange = DOMEditor.toDOMRange(editor, editor.selection);\n domSelection === null || domSelection === void 0 || domSelection.removeAllRanges();\n domSelection === null || domSelection === void 0 || domSelection.addRange(domRange);\n }\n // Create a new selection in the top of the document if missing\n if (!editor.selection) {\n Transforms.select(editor, Editor.start(editor, []));\n }\n // IS_FOCUSED should be set before calling el.focus() to ensure that\n // FocusedContext is updated to the correct value\n IS_FOCUSED.set(editor, true);\n el.focus({\n preventScroll: true\n });\n }\n },\n getWindow: editor => {\n var window = EDITOR_TO_WINDOW.get(editor);\n if (!window) {\n throw new Error('Unable to find a host window element for this editor');\n }\n return window;\n },\n hasDOMNode: function hasDOMNode(editor, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n editable = false\n } = options;\n var editorEl = DOMEditor.toDOMNode(editor, editor);\n var targetEl;\n // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n try {\n targetEl = isDOMElement(target) ? target : target.parentElement;\n } catch (err) {\n if (err instanceof Error && !err.message.includes('Permission denied to access property \"nodeType\"')) {\n throw err;\n }\n }\n if (!targetEl) {\n return false;\n }\n return targetEl.closest(\"[data-slate-editor]\") === editorEl && (!editable || targetEl.isContentEditable ? true : typeof targetEl.isContentEditable === 'boolean' &&\n // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n targetEl.closest('[contenteditable=\"false\"]') === editorEl || !!targetEl.getAttribute('data-slate-zero-width'));\n },\n hasEditableTarget: (editor, target) => isDOMNode(target) && DOMEditor.hasDOMNode(editor, target, {\n editable: true\n }),\n hasRange: (editor, range) => {\n var {\n anchor,\n focus\n } = range;\n return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);\n },\n hasSelectableTarget: (editor, target) => DOMEditor.hasEditableTarget(editor, target) || DOMEditor.isTargetInsideNonReadonlyVoid(editor, target),\n hasTarget: (editor, target) => isDOMNode(target) && DOMEditor.hasDOMNode(editor, target),\n insertData: (editor, data) => {\n editor.insertData(data);\n },\n insertFragmentData: (editor, data) => editor.insertFragmentData(data),\n insertTextData: (editor, data) => editor.insertTextData(data),\n isComposing: editor => {\n return !!IS_COMPOSING.get(editor);\n },\n isFocused: editor => !!IS_FOCUSED.get(editor),\n isReadOnly: editor => !!IS_READ_ONLY.get(editor),\n isTargetInsideNonReadonlyVoid: (editor, target) => {\n if (IS_READ_ONLY.get(editor)) return false;\n var slateNode = DOMEditor.hasTarget(editor, target) && DOMEditor.toSlateNode(editor, target);\n return Element.isElement(slateNode) && Editor.isVoid(editor, slateNode);\n },\n setFragmentData: (editor, data, originEvent) => editor.setFragmentData(data, originEvent),\n toDOMNode: (editor, node) => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n var domNode = Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.get(DOMEditor.findKey(editor, node));\n if (!domNode) {\n throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(Scrubber.stringify(node)));\n }\n return domNode;\n },\n toDOMPoint: (editor, point) => {\n var [node] = Editor.node(editor, point.path);\n var el = DOMEditor.toDOMNode(editor, node);\n var domPoint;\n // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n if (Editor.void(editor, {\n at: point\n })) {\n point = {\n path: point.path,\n offset: 0\n };\n }\n // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n var selector = \"[data-slate-string], [data-slate-zero-width]\";\n var texts = Array.from(el.querySelectorAll(selector));\n var start = 0;\n for (var i = 0; i < texts.length; i++) {\n var text = texts[i];\n var domNode = text.childNodes[0];\n if (domNode == null || domNode.textContent == null) {\n continue;\n }\n var {\n length\n } = domNode.textContent;\n var attr = text.getAttribute('data-slate-length');\n var trueLength = attr == null ? length : parseInt(attr, 10);\n var end = start + trueLength;\n // Prefer putting the selection inside the mark placeholder to ensure\n // composed text is displayed with the correct marks.\n var nextText = texts[i + 1];\n if (point.offset === end && nextText !== null && nextText !== void 0 && nextText.hasAttribute('data-slate-mark-placeholder')) {\n var _nextText$textContent;\n var domText = nextText.childNodes[0];\n domPoint = [\n // COMPAT: If we don't explicity set the dom point to be on the actual\n // dom text element, chrome will put the selection behind the actual dom\n // text element, causing domRange.getBoundingClientRect() calls on a collapsed\n // selection to return incorrect zero values (https://bugs.chromium.org/p/chromium/issues/detail?id=435438)\n // which will cause issues when scrolling to it.\n domText instanceof DOMText ? domText : nextText, (_nextText$textContent = nextText.textContent) !== null && _nextText$textContent !== void 0 && _nextText$textContent.startsWith('\\uFEFF') ? 1 : 0];\n break;\n }\n if (point.offset <= end) {\n var offset = Math.min(length, Math.max(0, point.offset - start));\n domPoint = [domNode, offset];\n break;\n }\n start = end;\n }\n if (!domPoint) {\n throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(Scrubber.stringify(point)));\n }\n return domPoint;\n },\n toDOMRange: (editor, range) => {\n var {\n anchor,\n focus\n } = range;\n var isBackward = Range.isBackward(range);\n var domAnchor = DOMEditor.toDOMPoint(editor, anchor);\n var domFocus = Range.isCollapsed(range) ? domAnchor : DOMEditor.toDOMPoint(editor, focus);\n var window = DOMEditor.getWindow(editor);\n var domRange = window.document.createRange();\n var [startNode, startOffset] = isBackward ? domFocus : domAnchor;\n var [endNode, endOffset] = isBackward ? domAnchor : domFocus;\n // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n // adjust the offset accordingly.\n var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;\n var isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width');\n var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;\n var isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width');\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset);\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset);\n return domRange;\n },\n toSlateNode: (editor, domNode) => {\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n if (!node) {\n throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n }\n return node;\n },\n toSlatePoint: (editor, domPoint, options) => {\n var {\n exactMatch,\n suppressThrow,\n searchDirection\n } = options;\n var [nearestNode, nearestOffset] = exactMatch ? domPoint : normalizeDOMPoint(domPoint);\n var parentNode = nearestNode.parentNode;\n var textNode = null;\n var offset = 0;\n if (parentNode) {\n var _domNode$textContent, _domNode$textContent2;\n var editorEl = DOMEditor.toDOMNode(editor, editor);\n var potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]');\n // Need to ensure that the closest void node is actually a void node\n // within this editor, and not a void node within some parent editor. This can happen\n // if this editor is within a void node of another editor (\"nested editors\", like in\n // the \"Editable Voids\" example on the docs site).\n var voidNode = potentialVoidNode && editorEl.contains(potentialVoidNode) ? potentialVoidNode : null;\n var potentialNonEditableNode = parentNode.closest('[contenteditable=\"false\"]');\n var nonEditableNode = potentialNonEditableNode && editorEl.contains(potentialNonEditableNode) ? potentialNonEditableNode : null;\n var leafNode = parentNode.closest('[data-slate-leaf]');\n var domNode = null;\n // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n if (textNode) {\n var window = DOMEditor.getWindow(editor);\n var range = window.document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n var contents = range.cloneContents();\n var removals = [...Array.prototype.slice.call(contents.querySelectorAll('[data-slate-zero-width]')), ...Array.prototype.slice.call(contents.querySelectorAll('[contenteditable=false]'))];\n removals.forEach(el => {\n // COMPAT: While composing at the start of a text node, some keyboards put\n // the text content inside the zero width space.\n if (IS_ANDROID && !exactMatch && el.hasAttribute('data-slate-zero-width') && el.textContent.length > 0 && el.textContext !== '\\uFEFF') {\n if (el.textContent.startsWith('\\uFEFF')) {\n el.textContent = el.textContent.slice(1);\n }\n return;\n }\n el.parentNode.removeChild(el);\n });\n // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-dom\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n offset = contents.textContent.length;\n domNode = textNode;\n }\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent and taking the\n // first one that isn't inside a nested editor.\n var leafNodes = voidNode.querySelectorAll('[data-slate-leaf]');\n for (var index = 0; index < leafNodes.length; index++) {\n var current = leafNodes[index];\n if (DOMEditor.hasDOMNode(editor, current)) {\n leafNode = current;\n break;\n }\n }\n // COMPAT: In read-only editors the leaf is not rendered.\n if (!leafNode) {\n offset = 1;\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n offset = domNode.textContent.length;\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent.length;\n });\n }\n } else if (nonEditableNode) {\n // Find the edge of the nearest leaf in `searchDirection`\n var getLeafNodes = node => node ? node.querySelectorAll(\n // Exclude leaf nodes in nested editors\n '[data-slate-leaf]:not(:scope [data-slate-editor] [data-slate-leaf])') : [];\n var elementNode = nonEditableNode.closest('[data-slate-node=\"element\"]');\n if (searchDirection === 'backward' || !searchDirection) {\n var _leafNodes$findLast;\n var _leafNodes = [...getLeafNodes(elementNode === null || elementNode === void 0 ? void 0 : elementNode.previousElementSibling), ...getLeafNodes(elementNode)];\n leafNode = (_leafNodes$findLast = _leafNodes.findLast(leaf => isBefore(nonEditableNode, leaf))) !== null && _leafNodes$findLast !== void 0 ? _leafNodes$findLast : null;\n }\n if (searchDirection === 'forward' || !searchDirection) {\n var _leafNodes2$find;\n var _leafNodes2 = [...getLeafNodes(elementNode), ...getLeafNodes(elementNode === null || elementNode === void 0 ? void 0 : elementNode.nextElementSibling)];\n leafNode = (_leafNodes2$find = _leafNodes2.find(leaf => isAfter(nonEditableNode, leaf))) !== null && _leafNodes2$find !== void 0 ? _leafNodes2$find : null;\n }\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n if (searchDirection === 'forward') {\n offset = 0;\n } else {\n offset = domNode.textContent.length;\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent.length;\n });\n }\n }\n }\n if (domNode && offset === domNode.textContent.length &&\n // COMPAT: Android IMEs might remove the zero width space while composing,\n // and we don't add it for line-breaks.\n IS_ANDROID && domNode.getAttribute('data-slate-zero-width') === 'z' && (_domNode$textContent = domNode.textContent) !== null && _domNode$textContent !== void 0 && _domNode$textContent.startsWith('\\uFEFF') && (\n // COMPAT: If the parent node is a Slate zero-width space, editor is\n // because the text node should have no characters. However, during IME\n // composition the ASCII characters will be prepended to the zero-width\n // space, so subtract 1 from the offset to account for the zero-width\n // space character.\n parentNode.hasAttribute('data-slate-zero-width') ||\n // COMPAT: In Firefox, `range.cloneContents()` returns an extra trailing '\\n'\n // when the document ends with a new-line character. This results in the offset\n // length being off by one, so we need to subtract one to account for this.\n IS_FIREFOX && (_domNode$textContent2 = domNode.textContent) !== null && _domNode$textContent2 !== void 0 && _domNode$textContent2.endsWith('\\n\\n'))) {\n offset--;\n }\n }\n if (IS_ANDROID && !textNode && !exactMatch) {\n var node = parentNode.hasAttribute('data-slate-node') ? parentNode : parentNode.closest('[data-slate-node]');\n if (node && DOMEditor.hasDOMNode(editor, node, {\n editable: true\n })) {\n var _slateNode = DOMEditor.toSlateNode(editor, node);\n var {\n path: _path,\n offset: _offset\n } = Editor.start(editor, DOMEditor.findPath(editor, _slateNode));\n if (!node.querySelector('[data-slate-leaf]')) {\n _offset = nearestOffset;\n }\n return {\n path: _path,\n offset: _offset\n };\n }\n }\n if (!textNode) {\n if (suppressThrow) {\n return null;\n }\n throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n }\n // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n var slateNode = DOMEditor.toSlateNode(editor, textNode);\n var path = DOMEditor.findPath(editor, slateNode);\n return {\n path,\n offset\n };\n },\n toSlateRange: (editor, domRange, options) => {\n var _focusNode$textConten;\n var {\n exactMatch,\n suppressThrow\n } = options;\n var el = isDOMSelection(domRange) ? domRange.anchorNode : domRange.startContainer;\n var anchorNode;\n var anchorOffset;\n var focusNode;\n var focusOffset;\n var isCollapsed;\n if (el) {\n if (isDOMSelection(domRange)) {\n // COMPAT: In firefox the normal seletion way does not work\n // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n if (IS_FIREFOX && domRange.rangeCount > 1) {\n focusNode = domRange.focusNode; // Focus node works fine\n var firstRange = domRange.getRangeAt(0);\n var lastRange = domRange.getRangeAt(domRange.rangeCount - 1);\n // Here we are in the contenteditable mode of a table in firefox\n if (focusNode instanceof HTMLTableRowElement && firstRange.startContainer instanceof HTMLTableRowElement && lastRange.startContainer instanceof HTMLTableRowElement) {\n // HTMLElement, becouse Element is a slate element\n function getLastChildren(element) {\n if (element.childElementCount > 0) {\n return getLastChildren(element.children[0]);\n } else {\n return element;\n }\n }\n var firstNodeRow = firstRange.startContainer;\n var lastNodeRow = lastRange.startContainer;\n // This should never fail as \"The HTMLElement interface represents any HTML element.\"\n var firstNode = getLastChildren(firstNodeRow.children[firstRange.startOffset]);\n var lastNode = getLastChildren(lastNodeRow.children[lastRange.startOffset]);\n // Zero, as we allways take the right one as the anchor point\n focusOffset = 0;\n if (lastNode.childNodes.length > 0) {\n anchorNode = lastNode.childNodes[0];\n } else {\n anchorNode = lastNode;\n }\n if (firstNode.childNodes.length > 0) {\n focusNode = firstNode.childNodes[0];\n } else {\n focusNode = firstNode;\n }\n if (lastNode instanceof HTMLElement) {\n anchorOffset = lastNode.innerHTML.length;\n } else {\n // Fallback option\n anchorOffset = 0;\n }\n } else {\n // This is the read only mode of a firefox table\n // Right to left\n if (firstRange.startContainer === focusNode) {\n anchorNode = lastRange.endContainer;\n anchorOffset = lastRange.endOffset;\n focusOffset = firstRange.startOffset;\n } else {\n // Left to right\n anchorNode = firstRange.startContainer;\n anchorOffset = firstRange.endOffset;\n focusOffset = lastRange.startOffset;\n }\n }\n } else {\n anchorNode = domRange.anchorNode;\n anchorOffset = domRange.anchorOffset;\n focusNode = domRange.focusNode;\n focusOffset = domRange.focusOffset;\n }\n // COMPAT: There's a bug in chrome that always returns `true` for\n // `isCollapsed` for a Selection that comes from a ShadowRoot.\n // (2020/08/08)\n // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n // IsCollapsed might not work in firefox, but this will\n if (IS_CHROME && hasShadowRoot(anchorNode) || IS_FIREFOX) {\n isCollapsed = domRange.anchorNode === domRange.focusNode && domRange.anchorOffset === domRange.focusOffset;\n } else {\n isCollapsed = domRange.isCollapsed;\n }\n } else {\n anchorNode = domRange.startContainer;\n anchorOffset = domRange.startOffset;\n focusNode = domRange.endContainer;\n focusOffset = domRange.endOffset;\n isCollapsed = domRange.collapsed;\n }\n }\n if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n }\n // COMPAT: Firefox sometimes includes an extra \\n (rendered by TextString\n // when isTrailing is true) in the focusOffset, resulting in an invalid\n // Slate point. (2023/11/01)\n if (IS_FIREFOX && (_focusNode$textConten = focusNode.textContent) !== null && _focusNode$textConten !== void 0 && _focusNode$textConten.endsWith('\\n\\n') && focusOffset === focusNode.textContent.length) {\n focusOffset--;\n }\n var anchor = DOMEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n exactMatch,\n suppressThrow\n });\n if (!anchor) {\n return null;\n }\n var focusBeforeAnchor = isBefore(anchorNode, focusNode) || anchorNode === focusNode && focusOffset < anchorOffset;\n var focus = isCollapsed ? anchor : DOMEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow,\n searchDirection: focusBeforeAnchor ? 'forward' : 'backward'\n });\n if (!focus) {\n return null;\n }\n var range = {\n anchor: anchor,\n focus: focus\n };\n // if the selection is a hanging range that ends in a void\n // and the DOM focus is an Element\n // (meaning that the selection ends before the element)\n // unhang the range to avoid mistakenly including the void\n if (Range.isExpanded(range) && Range.isForward(range) && isDOMElement(focusNode) && Editor.void(editor, {\n at: range.focus,\n mode: 'highest'\n })) {\n range = Editor.unhangRange(editor, range, {\n voids: true\n });\n }\n return range;\n }\n};\n\n/**\n * Check whether a text diff was applied in a way we can perform the pending action on /\n * recover the pending selection.\n */\nfunction verifyDiffState(editor, textDiff) {\n var {\n path,\n diff\n } = textDiff;\n if (!Editor.hasPath(editor, path)) {\n return false;\n }\n var node = Node.get(editor, path);\n if (!Text.isText(node)) {\n return false;\n }\n if (diff.start !== node.text.length || diff.text.length === 0) {\n return node.text.slice(diff.start, diff.start + diff.text.length) === diff.text;\n }\n var nextPath = Path.next(path);\n if (!Editor.hasPath(editor, nextPath)) {\n return false;\n }\n var nextNode = Node.get(editor, nextPath);\n return Text.isText(nextNode) && nextNode.text.startsWith(diff.text);\n}\nfunction applyStringDiff(text) {\n for (var _len = arguments.length, diffs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n diffs[_key - 1] = arguments[_key];\n }\n return diffs.reduce((text, diff) => text.slice(0, diff.start) + diff.text + text.slice(diff.end), text);\n}\nfunction longestCommonPrefixLength(str, another) {\n var length = Math.min(str.length, another.length);\n for (var i = 0; i < length; i++) {\n if (str.charAt(i) !== another.charAt(i)) {\n return i;\n }\n }\n return length;\n}\nfunction longestCommonSuffixLength(str, another, max) {\n var length = Math.min(str.length, another.length, max);\n for (var i = 0; i < length; i++) {\n if (str.charAt(str.length - i - 1) !== another.charAt(another.length - i - 1)) {\n return i;\n }\n }\n return length;\n}\n/**\n * Remove redundant changes from the diff so that it spans the minimal possible range\n */\nfunction normalizeStringDiff(targetText, diff) {\n var {\n start,\n end,\n text\n } = diff;\n var removedText = targetText.slice(start, end);\n var prefixLength = longestCommonPrefixLength(removedText, text);\n var max = Math.min(removedText.length - prefixLength, text.length - prefixLength);\n var suffixLength = longestCommonSuffixLength(removedText, text, max);\n var normalized = {\n start: start + prefixLength,\n end: end - suffixLength,\n text: text.slice(prefixLength, text.length - suffixLength)\n };\n if (normalized.start === normalized.end && normalized.text.length === 0) {\n return null;\n }\n return normalized;\n}\n/**\n * Return a string diff that is equivalent to applying b after a spanning the range of\n * both changes\n */\nfunction mergeStringDiffs(targetText, a, b) {\n var start = Math.min(a.start, b.start);\n var overlap = Math.max(0, Math.min(a.start + a.text.length, b.end) - b.start);\n var applied = applyStringDiff(targetText, a, b);\n var sliceEnd = Math.max(b.start + b.text.length, a.start + a.text.length + (a.start + a.text.length > b.start ? b.text.length : 0) - overlap);\n var text = applied.slice(start, sliceEnd);\n var end = Math.max(a.end, b.end - a.text.length + (a.end - a.start));\n return normalizeStringDiff(targetText, {\n start,\n end,\n text\n });\n}\n/**\n * Get the slate range the text diff spans.\n */\nfunction targetRange(textDiff) {\n var {\n path,\n diff\n } = textDiff;\n return {\n anchor: {\n path,\n offset: diff.start\n },\n focus: {\n path,\n offset: diff.end\n }\n };\n}\n/**\n * Normalize a 'pending point' a.k.a a point based on the dom state before applying\n * the pending diffs. Since the pending diffs might have been inserted with different\n * marks we have to 'walk' the offset from the starting position to ensure we still\n * have a valid point inside the document\n */\nfunction normalizePoint(editor, point) {\n var {\n path,\n offset\n } = point;\n if (!Editor.hasPath(editor, path)) {\n return null;\n }\n var leaf = Node.get(editor, path);\n if (!Text.isText(leaf)) {\n return null;\n }\n var parentBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: path\n });\n if (!parentBlock) {\n return null;\n }\n while (offset > leaf.text.length) {\n var entry = Editor.next(editor, {\n at: path,\n match: Text.isText\n });\n if (!entry || !Path.isDescendant(entry[1], parentBlock[1])) {\n return null;\n }\n offset -= leaf.text.length;\n leaf = entry[0];\n path = entry[1];\n }\n return {\n path,\n offset\n };\n}\n/**\n * Normalize a 'pending selection' to ensure it's valid in the current document state.\n */\nfunction normalizeRange(editor, range) {\n var anchor = normalizePoint(editor, range.anchor);\n if (!anchor) {\n return null;\n }\n if (Range.isCollapsed(range)) {\n return {\n anchor,\n focus: anchor\n };\n }\n var focus = normalizePoint(editor, range.focus);\n if (!focus) {\n return null;\n }\n return {\n anchor,\n focus\n };\n}\nfunction transformPendingPoint(editor, point, op) {\n var pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor);\n var textDiff = pendingDiffs === null || pendingDiffs === void 0 ? void 0 : pendingDiffs.find(_ref => {\n var {\n path\n } = _ref;\n return Path.equals(path, point.path);\n });\n if (!textDiff || point.offset <= textDiff.diff.start) {\n return Point.transform(point, op, {\n affinity: 'backward'\n });\n }\n var {\n diff\n } = textDiff;\n // Point references location inside the diff => transform the point based on the location\n // the diff will be applied to and add the offset inside the diff.\n if (point.offset <= diff.start + diff.text.length) {\n var _anchor = {\n path: point.path,\n offset: diff.start\n };\n var _transformed = Point.transform(_anchor, op, {\n affinity: 'backward'\n });\n if (!_transformed) {\n return null;\n }\n return {\n path: _transformed.path,\n offset: _transformed.offset + point.offset - diff.start\n };\n }\n // Point references location after the diff\n var anchor = {\n path: point.path,\n offset: point.offset - diff.text.length + diff.end - diff.start\n };\n var transformed = Point.transform(anchor, op, {\n affinity: 'backward'\n });\n if (!transformed) {\n return null;\n }\n if (op.type === 'split_node' && Path.equals(op.path, point.path) && anchor.offset < op.position && diff.start < op.position) {\n return transformed;\n }\n return {\n path: transformed.path,\n offset: transformed.offset + diff.text.length - diff.end + diff.start\n };\n}\nfunction transformPendingRange(editor, range, op) {\n var anchor = transformPendingPoint(editor, range.anchor, op);\n if (!anchor) {\n return null;\n }\n if (Range.isCollapsed(range)) {\n return {\n anchor,\n focus: anchor\n };\n }\n var focus = transformPendingPoint(editor, range.focus, op);\n if (!focus) {\n return null;\n }\n return {\n anchor,\n focus\n };\n}\nfunction transformTextDiff(textDiff, op) {\n var {\n path,\n diff,\n id\n } = textDiff;\n switch (op.type) {\n case 'insert_text':\n {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff;\n }\n if (op.offset <= diff.start) {\n return {\n diff: {\n start: op.text.length + diff.start,\n end: op.text.length + diff.end,\n text: diff.text\n },\n id,\n path\n };\n }\n return {\n diff: {\n start: diff.start,\n end: diff.end + op.text.length,\n text: diff.text\n },\n id,\n path\n };\n }\n case 'remove_text':\n {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff;\n }\n if (op.offset + op.text.length <= diff.start) {\n return {\n diff: {\n start: diff.start - op.text.length,\n end: diff.end - op.text.length,\n text: diff.text\n },\n id,\n path\n };\n }\n return {\n diff: {\n start: diff.start,\n end: diff.end - op.text.length,\n text: diff.text\n },\n id,\n path\n };\n }\n case 'split_node':\n {\n if (!Path.equals(op.path, path) || op.position >= diff.end) {\n return {\n diff,\n id,\n path: Path.transform(path, op, {\n affinity: 'backward'\n })\n };\n }\n if (op.position > diff.start) {\n return {\n diff: {\n start: diff.start,\n end: Math.min(op.position, diff.end),\n text: diff.text\n },\n id,\n path\n };\n }\n return {\n diff: {\n start: diff.start - op.position,\n end: diff.end - op.position,\n text: diff.text\n },\n id,\n path: Path.transform(path, op, {\n affinity: 'forward'\n })\n };\n }\n case 'merge_node':\n {\n if (!Path.equals(op.path, path)) {\n return {\n diff,\n id,\n path: Path.transform(path, op)\n };\n }\n return {\n diff: {\n start: diff.start + op.position,\n end: diff.end + op.position,\n text: diff.text\n },\n id,\n path: Path.transform(path, op)\n };\n }\n }\n var newPath = Path.transform(path, op);\n if (!newPath) {\n return null;\n }\n return {\n diff,\n path: newPath,\n id\n };\n}\n\n/**\n * Utilities for single-line deletion\n */\nvar doRectsIntersect = (rect, compareRect) => {\n var middle = (compareRect.top + compareRect.bottom) / 2;\n return rect.top <= middle && rect.bottom >= middle;\n};\nvar areRangesSameLine = (editor, range1, range2) => {\n var rect1 = DOMEditor.toDOMRange(editor, range1).getBoundingClientRect();\n var rect2 = DOMEditor.toDOMRange(editor, range2).getBoundingClientRect();\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1);\n};\n/**\n * A helper utility that returns the end portion of a `Range`\n * which is located on a single line.\n *\n * @param {Editor} editor The editor object to compare against\n * @param {Range} parentRange The parent range to compare against\n * @returns {Range} A valid portion of the parentRange which is one a single line\n */\nvar findCurrentLineRange = (editor, parentRange) => {\n var parentRangeBoundary = Editor.range(editor, Range.end(parentRange));\n var positions = Array.from(Editor.positions(editor, {\n at: parentRange\n }));\n var left = 0;\n var right = positions.length;\n var middle = Math.floor(right / 2);\n if (areRangesSameLine(editor, Editor.range(editor, positions[left]), parentRangeBoundary)) {\n return Editor.range(editor, positions[left], parentRangeBoundary);\n }\n if (positions.length < 2) {\n return Editor.range(editor, positions[positions.length - 1], parentRangeBoundary);\n }\n while (middle !== positions.length && middle !== left) {\n if (areRangesSameLine(editor, Editor.range(editor, positions[middle]), parentRangeBoundary)) {\n right = middle;\n } else {\n left = middle;\n }\n middle = Math.floor((left + right) / 2);\n }\n return Editor.range(editor, positions[left], parentRangeBoundary);\n};\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * `withDOM` adds DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\nvar withDOM = function withDOM(editor) {\n var clipboardFormatKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x-slate-fragment';\n var e = editor;\n var {\n apply,\n onChange,\n deleteBackward,\n addMark,\n removeMark\n } = e;\n // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n // avoid collisions between editors in the DOM that share the same value.\n EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap());\n e.addMark = (key, value) => {\n var _EDITOR_TO_SCHEDULE_F, _EDITOR_TO_PENDING_DI;\n (_EDITOR_TO_SCHEDULE_F = EDITOR_TO_SCHEDULE_FLUSH.get(e)) === null || _EDITOR_TO_SCHEDULE_F === void 0 || _EDITOR_TO_SCHEDULE_F();\n if (!EDITOR_TO_PENDING_INSERTION_MARKS.get(e) && (_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(e)) !== null && _EDITOR_TO_PENDING_DI !== void 0 && _EDITOR_TO_PENDING_DI.length) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null);\n }\n EDITOR_TO_USER_MARKS.delete(e);\n addMark(key, value);\n };\n e.removeMark = key => {\n var _EDITOR_TO_PENDING_DI2;\n if (!EDITOR_TO_PENDING_INSERTION_MARKS.get(e) && (_EDITOR_TO_PENDING_DI2 = EDITOR_TO_PENDING_DIFFS.get(e)) !== null && _EDITOR_TO_PENDING_DI2 !== void 0 && _EDITOR_TO_PENDING_DI2.length) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null);\n }\n EDITOR_TO_USER_MARKS.delete(e);\n removeMark(key);\n };\n e.deleteBackward = unit => {\n if (unit !== 'line') {\n return deleteBackward(unit);\n }\n if (e.selection && Range.isCollapsed(e.selection)) {\n var parentBlockEntry = Editor.above(e, {\n match: n => Element.isElement(n) && Editor.isBlock(e, n),\n at: e.selection\n });\n if (parentBlockEntry) {\n var [, parentBlockPath] = parentBlockEntry;\n var parentElementRange = Editor.range(e, parentBlockPath, e.selection.anchor);\n var currentLineRange = findCurrentLineRange(e, parentElementRange);\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(e, {\n at: currentLineRange\n });\n }\n }\n }\n };\n // This attempts to reset the NODE_TO_KEY entry to the correct value\n // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n e.apply = op => {\n var matches = [];\n var pathRefMatches = [];\n var pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(e);\n if (pendingDiffs !== null && pendingDiffs !== void 0 && pendingDiffs.length) {\n var transformed = pendingDiffs.map(textDiff => transformTextDiff(textDiff, op)).filter(Boolean);\n EDITOR_TO_PENDING_DIFFS.set(e, transformed);\n }\n var pendingSelection = EDITOR_TO_PENDING_SELECTION.get(e);\n if (pendingSelection) {\n EDITOR_TO_PENDING_SELECTION.set(e, transformPendingRange(e, pendingSelection, op));\n }\n var pendingAction = EDITOR_TO_PENDING_ACTION.get(e);\n if (pendingAction !== null && pendingAction !== void 0 && pendingAction.at) {\n var at = Point.isPoint(pendingAction === null || pendingAction === void 0 ? void 0 : pendingAction.at) ? transformPendingPoint(e, pendingAction.at, op) : transformPendingRange(e, pendingAction.at, op);\n EDITOR_TO_PENDING_ACTION.set(e, at ? _objectSpread$1(_objectSpread$1({}, pendingAction), {}, {\n at\n }) : null);\n }\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n case 'split_node':\n {\n matches.push(...getMatches(e, op.path));\n break;\n }\n case 'set_selection':\n {\n var _EDITOR_TO_USER_SELEC;\n // Selection was manually set, don't restore the user selection after the change.\n (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(e)) === null || _EDITOR_TO_USER_SELEC === void 0 || _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(e);\n break;\n }\n case 'insert_node':\n case 'remove_node':\n {\n matches.push(...getMatches(e, Path.parent(op.path)));\n break;\n }\n case 'merge_node':\n {\n var prevPath = Path.previous(op.path);\n matches.push(...getMatches(e, prevPath));\n break;\n }\n case 'move_node':\n {\n var commonPath = Path.common(Path.parent(op.path), Path.parent(op.newPath));\n matches.push(...getMatches(e, commonPath));\n var changedPath;\n if (Path.isBefore(op.path, op.newPath)) {\n matches.push(...getMatches(e, Path.parent(op.path)));\n changedPath = op.newPath;\n } else {\n matches.push(...getMatches(e, Path.parent(op.newPath)));\n changedPath = op.path;\n }\n var changedNode = Node.get(editor, Path.parent(changedPath));\n var changedNodeKey = DOMEditor.findKey(e, changedNode);\n var changedPathRef = Editor.pathRef(e, Path.parent(changedPath));\n pathRefMatches.push([changedPathRef, changedNodeKey]);\n break;\n }\n }\n apply(op);\n switch (op.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'move_node':\n case 'split_node':\n case 'insert_text':\n case 'remove_text':\n case 'set_selection':\n {\n // FIXME: Rename to something like IS_DOM_EDITOR_DESYNCED\n // to better reflect reality, see #5792\n IS_NODE_MAP_DIRTY.set(e, true);\n }\n }\n for (var [path, key] of matches) {\n var [node] = Editor.node(e, path);\n NODE_TO_KEY.set(node, key);\n }\n for (var [pathRef, _key] of pathRefMatches) {\n if (pathRef.current) {\n var [_node] = Editor.node(e, pathRef.current);\n NODE_TO_KEY.set(_node, _key);\n }\n pathRef.unref();\n }\n };\n e.setFragmentData = data => {\n var {\n selection\n } = e;\n if (!selection) {\n return;\n }\n var [start, end] = Range.edges(selection);\n var startVoid = Editor.void(e, {\n at: start.path\n });\n var endVoid = Editor.void(e, {\n at: end.path\n });\n if (Range.isCollapsed(selection) && !startVoid) {\n return;\n }\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n var domRange = DOMEditor.toDOMRange(e, selection);\n var contents = domRange.cloneContents();\n var attach = contents.childNodes[0];\n // Make sure attach is non-empty, since empty nodes will not get copied.\n contents.childNodes.forEach(node => {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n });\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n var [voidNode] = endVoid;\n var r = domRange.cloneRange();\n var domNode = DOMEditor.toDOMNode(e, voidNode);\n r.setEndAfter(domNode);\n contents = r.cloneContents();\n }\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.querySelector('[data-slate-spacer]');\n }\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(zw => {\n var isNewline = zw.getAttribute('data-slate-zero-width') === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n });\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (isDOMText(attach)) {\n var span = attach.ownerDocument.createElement('span');\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre';\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n var fragment = e.getFragment();\n var string = JSON.stringify(fragment);\n var encoded = window.btoa(encodeURIComponent(string));\n attach.setAttribute('data-slate-fragment', encoded);\n data.setData(\"application/\".concat(clipboardFormatKey), encoded);\n // Add the content to a <div> so that we can get its inner HTML.\n var div = contents.ownerDocument.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n contents.ownerDocument.body.appendChild(div);\n data.setData('text/html', div.innerHTML);\n data.setData('text/plain', getPlainText(div));\n contents.ownerDocument.body.removeChild(div);\n return data;\n };\n e.insertData = data => {\n if (!e.insertFragmentData(data)) {\n e.insertTextData(data);\n }\n };\n e.insertFragmentData = data => {\n /**\n * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\n */\n var fragment = data.getData(\"application/\".concat(clipboardFormatKey)) || getSlateFragmentAttribute(data);\n if (fragment) {\n var decoded = decodeURIComponent(window.atob(fragment));\n var parsed = JSON.parse(decoded);\n e.insertFragment(parsed);\n return true;\n }\n return false;\n };\n e.insertTextData = data => {\n var text = data.getData('text/plain');\n if (text) {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var split = false;\n for (var line of lines) {\n if (split) {\n Transforms.splitNodes(e, {\n always: true\n });\n }\n e.insertText(line);\n split = true;\n }\n return true;\n }\n return false;\n };\n e.onChange = options => {\n var onContextChange = EDITOR_TO_ON_CHANGE.get(e);\n if (onContextChange) {\n onContextChange(options);\n }\n onChange(options);\n };\n return e;\n};\nvar getMatches = (e, path) => {\n var matches = [];\n for (var [n, p] of Editor.levels(e, {\n at: path\n })) {\n var key = DOMEditor.findKey(e, n);\n matches.push([p, key]);\n }\n return matches;\n};\n\nvar TRIPLE_CLICK = 3;\n\n/**\n * Hotkey mappings for each platform.\n */\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n insertSoftBreak: 'shift+enter',\n splitBlock: 'enter',\n undo: 'mod+z'\n};\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z']\n};\n/**\n * Create a platform-aware hotkey checker.\n */\nvar create = key => {\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n var isGeneric = generic && isHotkey(generic);\n var isApple = apple && isHotkey(apple);\n var isWindows = windows && isHotkey(windows);\n return event => {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (!IS_APPLE && isWindows && isWindows(event)) return true;\n return false;\n };\n};\n/**\n * Hotkeys.\n */\nvar hotkeys = {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSoftBreak: create('insertSoftBreak'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo')\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded = [\"anchor\", \"focus\"],\n _excluded2 = [\"anchor\", \"focus\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every(key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);\nvar isDecorationFlagsEqual = (range, other) => {\n var rangeOwnProps = _objectWithoutProperties(range, _excluded);\n var otherOwnProps = _objectWithoutProperties(other, _excluded2);\n return range[PLACEHOLDER_SYMBOL] === other[PLACEHOLDER_SYMBOL] && shallowCompare(rangeOwnProps, otherOwnProps);\n};\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\nvar isElementDecorationsEqual = (list, another) => {\n if (list === another) {\n return true;\n }\n if (!list || !another) {\n return false;\n }\n if (list.length !== another.length) {\n return false;\n }\n for (var i = 0; i < list.length; i++) {\n var range = list[i];\n var other = another[i];\n if (!Range.equals(range, other) || !isDecorationFlagsEqual(range, other)) {\n return false;\n }\n }\n return true;\n};\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\nvar isTextDecorationsEqual = (list, another) => {\n if (list === another) {\n return true;\n }\n if (!list || !another) {\n return false;\n }\n if (list.length !== another.length) {\n return false;\n }\n for (var i = 0; i < list.length; i++) {\n var range = list[i];\n var other = another[i];\n // compare only offsets because paths doesn't matter for text\n if (range.anchor.offset !== other.anchor.offset || range.focus.offset !== other.focus.offset || !isDecorationFlagsEqual(range, other)) {\n return false;\n }\n }\n return true;\n};\n/**\n * Split and group decorations by each child of a node.\n *\n * @returns An array with length equal to that of `node.children`. Each index\n * corresponds to a child of `node`, and the value is an array of decorations\n * for that child.\n */\nvar splitDecorationsByChild = (editor, node, decorations) => {\n var decorationsByChild = Array.from(node.children, () => []);\n if (decorations.length === 0) {\n return decorationsByChild;\n }\n var path = DOMEditor.findPath(editor, node);\n var level = path.length;\n var ancestorRange = Editor.range(editor, path);\n var cachedChildRanges = new Array(node.children.length);\n var getChildRange = index => {\n var cachedRange = cachedChildRanges[index];\n if (cachedRange) return cachedRange;\n var childRange = Editor.range(editor, [...path, index]);\n cachedChildRanges[index] = childRange;\n return childRange;\n };\n for (var decoration of decorations) {\n var decorationRange = Range.intersection(ancestorRange, decoration);\n if (!decorationRange) continue;\n var [startPoint, endPoint] = Range.edges(decorationRange);\n var startIndex = startPoint.path[level];\n var endIndex = endPoint.path[level];\n for (var i = startIndex; i <= endIndex; i++) {\n var ds = decorationsByChild[i];\n if (!ds) continue;\n var childRange = getChildRange(i);\n var childDecorationRange = Range.intersection(childRange, decoration);\n if (!childDecorationRange) continue;\n ds.push(_objectSpread(_objectSpread({}, decoration), childDecorationRange));\n }\n }\n return decorationsByChild;\n};\n\nexport { CAN_USE_DOM, DOMEditor, DOMElement, DOMNode, DOMRange, DOMSelection, DOMStaticRange, DOMText, EDITOR_TO_ELEMENT, EDITOR_TO_FORCE_RENDER, EDITOR_TO_KEY_TO_ELEMENT, EDITOR_TO_ON_CHANGE, EDITOR_TO_PENDING_ACTION, EDITOR_TO_PENDING_DIFFS, EDITOR_TO_PENDING_INSERTION_MARKS, EDITOR_TO_PENDING_SELECTION, EDITOR_TO_PLACEHOLDER_ELEMENT, EDITOR_TO_SCHEDULE_FLUSH, EDITOR_TO_USER_MARKS, EDITOR_TO_USER_SELECTION, EDITOR_TO_WINDOW, ELEMENT_TO_NODE, HAS_BEFORE_INPUT_SUPPORT, hotkeys as Hotkeys, IS_ANDROID, IS_CHROME, IS_COMPOSING, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_FOCUSED, IS_IOS, IS_NODE_MAP_DIRTY, IS_READ_ONLY, IS_UC_MOBILE, IS_WEBKIT, IS_WECHATBROWSER, Key, MARK_PLACEHOLDER_SYMBOL, NODE_TO_ELEMENT, NODE_TO_INDEX, NODE_TO_KEY, NODE_TO_PARENT, PLACEHOLDER_SYMBOL, TRIPLE_CLICK, applyStringDiff, getActiveElement, getDefaultView, getSelection, hasShadowRoot, isAfter, isBefore, isDOMElement, isDOMNode, isDOMSelection, isElementDecorationsEqual, isPlainTextOnlyPaste, isTextDecorationsEqual, isTrackedMutation, mergeStringDiffs, normalizeDOMPoint, normalizePoint, normalizeRange, normalizeStringDiff, splitDecorationsByChild, targetRange, verifyDiffState, withDOM };\n//# sourceMappingURL=index.es.js.map\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import getDirection from 'direction';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport React, { createContext, useContext, useRef, useEffect, useLayoutEffect, useState, memo, forwardRef, useCallback, useReducer, useMemo, Fragment, Component } from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { Editor, Range, Transforms, Text as Text$1, Path, Node, Point, Element as Element$1, Scrubber } from 'slate';\nimport { DOMEditor, EDITOR_TO_USER_MARKS, EDITOR_TO_PENDING_DIFFS, EDITOR_TO_PENDING_ACTION, EDITOR_TO_PENDING_INSERTION_MARKS, targetRange, verifyDiffState, EDITOR_TO_PENDING_SELECTION, IS_COMPOSING, IS_NODE_MAP_DIRTY, applyStringDiff, isDOMSelection, isTrackedMutation, EDITOR_TO_FORCE_RENDER, normalizeRange, normalizePoint, EDITOR_TO_PLACEHOLDER_ELEMENT, normalizeStringDiff, mergeStringDiffs, CAN_USE_DOM, IS_ANDROID, EDITOR_TO_SCHEDULE_FLUSH, MARK_PLACEHOLDER_SYMBOL, PLACEHOLDER_SYMBOL, IS_WEBKIT, isTextDecorationsEqual, isElementDecorationsEqual, EDITOR_TO_KEY_TO_ELEMENT, NODE_TO_ELEMENT, ELEMENT_TO_NODE, NODE_TO_INDEX, NODE_TO_PARENT, Key, splitDecorationsByChild, IS_READ_ONLY, getActiveElement, getSelection, IS_FOCUSED, getDefaultView, EDITOR_TO_WINDOW, EDITOR_TO_ELEMENT, IS_FIREFOX, EDITOR_TO_USER_SELECTION, HAS_BEFORE_INPUT_SUPPORT, isDOMElement, isDOMNode, TRIPLE_CLICK, IS_FIREFOX_LEGACY, IS_IOS, IS_WECHATBROWSER, IS_UC_MOBILE, Hotkeys, IS_CHROME, isPlainTextOnlyPaste, EDITOR_TO_ON_CHANGE, withDOM } from 'slate-dom';\nexport { NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-dom';\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport ReactDOM from 'react-dom';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n/**\n * A React context for sharing the editor object.\n */\nvar EditorContext = /*#__PURE__*/createContext(null);\n/**\n * Get the current editor object from the React context.\n */\nvar useSlateStatic = () => {\n var editor = useContext(EditorContext);\n if (!editor) {\n throw new Error(\"The `useSlateStatic` hook must be used inside the <Slate> component's context.\");\n }\n return editor;\n};\n\n// eslint-disable-next-line no-redeclare\nvar ReactEditor = DOMEditor;\n\nfunction ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nvar RESOLVE_DELAY = 25;\n// Time with no user interaction before the current user action is considered as done.\nvar FLUSH_DELAY = 200;\n// Replace with `const debug = console.log` to debug\nvar debug = function debug() {};\n// Type guard to check if a value is a DataTransfer\nvar isDataTransfer = value => (value === null || value === void 0 ? void 0 : value.constructor.name) === 'DataTransfer';\nfunction createAndroidInputManager(_ref) {\n var {\n editor,\n scheduleOnDOMSelectionChange,\n onDOMSelectionChange\n } = _ref;\n var flushing = false;\n var compositionEndTimeoutId = null;\n var flushTimeoutId = null;\n var actionTimeoutId = null;\n var idCounter = 0;\n var insertPositionHint = false;\n var applyPendingSelection = () => {\n var pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor);\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n if (pendingSelection) {\n var {\n selection\n } = editor;\n var normalized = normalizeRange(editor, pendingSelection);\n if (normalized && (!selection || !Range.equals(normalized, selection))) {\n Transforms.select(editor, normalized);\n }\n }\n };\n var performAction = () => {\n var action = EDITOR_TO_PENDING_ACTION.get(editor);\n EDITOR_TO_PENDING_ACTION.delete(editor);\n if (!action) {\n return;\n }\n if (action.at) {\n var target = Point.isPoint(action.at) ? normalizePoint(editor, action.at) : normalizeRange(editor, action.at);\n if (!target) {\n return;\n }\n var _targetRange = Editor.range(editor, target);\n if (!editor.selection || !Range.equals(editor.selection, _targetRange)) {\n Transforms.select(editor, target);\n }\n }\n action.run();\n };\n var flush = () => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n if (actionTimeoutId) {\n clearTimeout(actionTimeoutId);\n actionTimeoutId = null;\n }\n if (!hasPendingDiffs() && !hasPendingAction()) {\n applyPendingSelection();\n return;\n }\n if (!flushing) {\n flushing = true;\n setTimeout(() => flushing = false);\n }\n if (hasPendingAction()) {\n flushing = 'action';\n }\n var selectionRef = editor.selection && Editor.rangeRef(editor, editor.selection, {\n affinity: 'forward'\n });\n EDITOR_TO_USER_MARKS.set(editor, editor.marks);\n debug('flush', EDITOR_TO_PENDING_ACTION.get(editor), EDITOR_TO_PENDING_DIFFS.get(editor));\n var scheduleSelectionChange = hasPendingDiffs();\n var diff;\n while (diff = (_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI === void 0 ? void 0 : _EDITOR_TO_PENDING_DI[0]) {\n var _EDITOR_TO_PENDING_DI, _EDITOR_TO_PENDING_DI2;\n var pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor);\n if (pendingMarks !== undefined) {\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n editor.marks = pendingMarks;\n }\n if (pendingMarks && insertPositionHint === false) {\n insertPositionHint = null;\n }\n var range = targetRange(diff);\n if (!editor.selection || !Range.equals(editor.selection, range)) {\n Transforms.select(editor, range);\n }\n if (diff.diff.text) {\n Editor.insertText(editor, diff.diff.text);\n } else {\n Editor.deleteFragment(editor);\n }\n // Remove diff only after we have applied it to account for it when transforming\n // pending ranges.\n EDITOR_TO_PENDING_DIFFS.set(editor, (_EDITOR_TO_PENDING_DI2 = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI2 === void 0 ? void 0 : _EDITOR_TO_PENDING_DI2.filter(_ref2 => {\n var {\n id\n } = _ref2;\n return id !== diff.id;\n }));\n if (!verifyDiffState(editor, diff)) {\n scheduleSelectionChange = false;\n EDITOR_TO_PENDING_ACTION.delete(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n flushing = 'action';\n // Ensure we don't restore the pending user (dom) selection\n // since the document and dom state do not match.\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n scheduleOnDOMSelectionChange.cancel();\n onDOMSelectionChange.cancel();\n selectionRef === null || selectionRef === void 0 || selectionRef.unref();\n }\n }\n var selection = selectionRef === null || selectionRef === void 0 ? void 0 : selectionRef.unref();\n if (selection && !EDITOR_TO_PENDING_SELECTION.get(editor) && (!editor.selection || !Range.equals(selection, editor.selection))) {\n Transforms.select(editor, selection);\n }\n if (hasPendingAction()) {\n performAction();\n return;\n }\n // COMPAT: The selectionChange event is fired after the action is performed,\n // so we have to manually schedule it to ensure we don't 'throw away' the selection\n // while rendering if we have pending changes.\n if (scheduleSelectionChange) {\n scheduleOnDOMSelectionChange();\n }\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n applyPendingSelection();\n var userMarks = EDITOR_TO_USER_MARKS.get(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n if (userMarks !== undefined) {\n editor.marks = userMarks;\n editor.onChange();\n }\n };\n var handleCompositionEnd = _event => {\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId);\n }\n compositionEndTimeoutId = setTimeout(() => {\n IS_COMPOSING.set(editor, false);\n flush();\n }, RESOLVE_DELAY);\n };\n var handleCompositionStart = _event => {\n IS_COMPOSING.set(editor, true);\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId);\n compositionEndTimeoutId = null;\n }\n };\n var updatePlaceholderVisibility = function updatePlaceholderVisibility() {\n var forceHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor);\n if (!placeholderElement) {\n return;\n }\n if (hasPendingDiffs() || forceHide) {\n placeholderElement.style.display = 'none';\n return;\n }\n placeholderElement.style.removeProperty('display');\n };\n var storeDiff = (path, diff) => {\n var _EDITOR_TO_PENDING_DI3;\n var pendingDiffs = (_EDITOR_TO_PENDING_DI3 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI3 !== void 0 ? _EDITOR_TO_PENDING_DI3 : [];\n EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs);\n var target = Node.leaf(editor, path);\n var idx = pendingDiffs.findIndex(change => Path.equals(change.path, path));\n if (idx < 0) {\n var normalized = normalizeStringDiff(target.text, diff);\n if (normalized) {\n pendingDiffs.push({\n path,\n diff,\n id: idCounter++\n });\n }\n updatePlaceholderVisibility();\n return;\n }\n var merged = mergeStringDiffs(target.text, pendingDiffs[idx].diff, diff);\n if (!merged) {\n pendingDiffs.splice(idx, 1);\n updatePlaceholderVisibility();\n return;\n }\n pendingDiffs[idx] = _objectSpread$7(_objectSpread$7({}, pendingDiffs[idx]), {}, {\n diff: merged\n });\n };\n var scheduleAction = function scheduleAction(run) {\n var {\n at\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n insertPositionHint = false;\n EDITOR_TO_PENDING_SELECTION.delete(editor);\n scheduleOnDOMSelectionChange.cancel();\n onDOMSelectionChange.cancel();\n if (hasPendingAction()) {\n flush();\n }\n EDITOR_TO_PENDING_ACTION.set(editor, {\n at,\n run\n });\n // COMPAT: When deleting before a non-contenteditable element chrome only fires a beforeinput,\n // (no input) and doesn't perform any dom mutations. Without a flush timeout we would never flush\n // in this case and thus never actually perform the action.\n actionTimeoutId = setTimeout(flush);\n };\n var handleDOMBeforeInput = event => {\n var _targetRange2;\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n if (IS_NODE_MAP_DIRTY.get(editor)) {\n return;\n }\n var {\n inputType: type\n } = event;\n var targetRange = null;\n var data = event.dataTransfer || event.data || undefined;\n if (insertPositionHint !== false && type !== 'insertText' && type !== 'insertCompositionText') {\n insertPositionHint = false;\n }\n var [nativeTargetRange] = event.getTargetRanges();\n if (nativeTargetRange) {\n targetRange = ReactEditor.toSlateRange(editor, nativeTargetRange, {\n exactMatch: false,\n suppressThrow: true\n });\n }\n // COMPAT: SelectionChange event is fired after the action is performed, so we\n // have to manually get the selection here to ensure it's up-to-date.\n var window = ReactEditor.getWindow(editor);\n var domSelection = window.getSelection();\n if (!targetRange && domSelection) {\n nativeTargetRange = domSelection;\n targetRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n }\n targetRange = (_targetRange2 = targetRange) !== null && _targetRange2 !== void 0 ? _targetRange2 : editor.selection;\n if (!targetRange) {\n return;\n }\n // By default, the input manager tries to store text diffs so that we can\n // defer flushing them at a later point in time. We don't want to flush\n // for every input event as this can be expensive. However, there are some\n // scenarios where we cannot safely store the text diff and must instead\n // schedule an action to let Slate normalize the editor state.\n var canStoreDiff = true;\n if (type.startsWith('delete')) {\n var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n var [start, end] = Range.edges(targetRange);\n var [leaf, path] = Editor.leaf(editor, start.path);\n if (Range.isExpanded(targetRange)) {\n if (leaf.text.length === start.offset && end.offset === 0) {\n var next = Editor.next(editor, {\n at: start.path,\n match: Text$1.isText\n });\n if (next && Path.equals(next[1], end.path)) {\n // when deleting a linebreak, targetRange will span across the break (ie start in the node before and end in the node after)\n // if the node before is empty, this will look like a hanging range and get unhung later--which will take the break we want to remove out of the range\n // so to avoid this we collapse the target range to default to single character deletion\n if (direction === 'backward') {\n targetRange = {\n anchor: end,\n focus: end\n };\n start = end;\n [leaf, path] = next;\n } else {\n targetRange = {\n anchor: start,\n focus: start\n };\n end = start;\n }\n }\n }\n }\n var diff = {\n text: '',\n start: start.offset,\n end: end.offset\n };\n var pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor);\n var relevantPendingDiffs = pendingDiffs === null || pendingDiffs === void 0 ? void 0 : pendingDiffs.find(change => Path.equals(change.path, path));\n var diffs = relevantPendingDiffs ? [relevantPendingDiffs.diff, diff] : [diff];\n var text = applyStringDiff(leaf.text, ...diffs);\n if (text.length === 0) {\n // Text leaf will be removed, so we need to schedule an\n // action to remove it so that Slate can normalize instead\n // of storing as a diff\n canStoreDiff = false;\n }\n if (Range.isExpanded(targetRange)) {\n if (canStoreDiff && Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n var point = {\n path: targetRange.anchor.path,\n offset: start.offset\n };\n var range = Editor.range(editor, point, point);\n handleUserSelect(range);\n return storeDiff(targetRange.anchor.path, {\n text: '',\n end: end.offset,\n start: start.offset\n });\n }\n return scheduleAction(() => Editor.deleteFragment(editor, {\n direction\n }), {\n at: targetRange\n });\n }\n }\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag':\n {\n return scheduleAction(() => Editor.deleteFragment(editor), {\n at: targetRange\n });\n }\n case 'deleteContent':\n case 'deleteContentForward':\n {\n var {\n anchor\n } = targetRange;\n if (canStoreDiff && Range.isCollapsed(targetRange)) {\n var targetNode = Node.leaf(editor, anchor.path);\n if (anchor.offset < targetNode.text.length) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset,\n end: anchor.offset + 1\n });\n }\n }\n return scheduleAction(() => Editor.deleteForward(editor), {\n at: targetRange\n });\n }\n case 'deleteContentBackward':\n {\n var _nativeTargetRange;\n var {\n anchor: _anchor\n } = targetRange;\n // If we have a mismatch between the native and slate selection being collapsed\n // we are most likely deleting a zero-width placeholder and thus should perform it\n // as an action to ensure correct behavior (mostly happens with mark placeholders)\n var nativeCollapsed = isDOMSelection(nativeTargetRange) ? nativeTargetRange.isCollapsed : !!((_nativeTargetRange = nativeTargetRange) !== null && _nativeTargetRange !== void 0 && _nativeTargetRange.collapsed);\n if (canStoreDiff && nativeCollapsed && Range.isCollapsed(targetRange) && _anchor.offset > 0) {\n return storeDiff(_anchor.path, {\n text: '',\n start: _anchor.offset - 1,\n end: _anchor.offset\n });\n }\n return scheduleAction(() => Editor.deleteBackward(editor), {\n at: targetRange\n });\n }\n case 'deleteEntireSoftLine':\n {\n return scheduleAction(() => {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n }, {\n at: targetRange\n });\n }\n case 'deleteHardLineBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'block'\n }), {\n at: targetRange\n });\n }\n case 'deleteSoftLineBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'line'\n }), {\n at: targetRange\n });\n }\n case 'deleteHardLineForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'block'\n }), {\n at: targetRange\n });\n }\n case 'deleteSoftLineForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'line'\n }), {\n at: targetRange\n });\n }\n case 'deleteWordBackward':\n {\n return scheduleAction(() => Editor.deleteBackward(editor, {\n unit: 'word'\n }), {\n at: targetRange\n });\n }\n case 'deleteWordForward':\n {\n return scheduleAction(() => Editor.deleteForward(editor, {\n unit: 'word'\n }), {\n at: targetRange\n });\n }\n case 'insertLineBreak':\n {\n return scheduleAction(() => Editor.insertSoftBreak(editor), {\n at: targetRange\n });\n }\n case 'insertParagraph':\n {\n return scheduleAction(() => Editor.insertBreak(editor), {\n at: targetRange\n });\n }\n case 'insertCompositionText':\n case 'deleteCompositionText':\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n if (isDataTransfer(data)) {\n return scheduleAction(() => ReactEditor.insertData(editor, data), {\n at: targetRange\n });\n }\n var _text = data !== null && data !== void 0 ? data : '';\n // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside\n // the placeholder itself and thus includes the zero-width space inside edit events.\n if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {\n _text = _text.replace('\\uFEFF', '');\n }\n // Pastes from the Android clipboard will generate `insertText` events.\n // If the copied text contains any newlines, Android will append an\n // extra newline to the end of the copied text.\n if (type === 'insertText' && /.*\\n.*\\n$/.test(_text)) {\n _text = _text.slice(0, -1);\n }\n // If the text includes a newline, split it at newlines and paste each component\n // string, with soft breaks in between each.\n if (_text.includes('\\n')) {\n return scheduleAction(() => {\n var parts = _text.split('\\n');\n parts.forEach((line, i) => {\n if (line) {\n Editor.insertText(editor, line);\n }\n if (i !== parts.length - 1) {\n Editor.insertSoftBreak(editor);\n }\n });\n }, {\n at: targetRange\n });\n }\n if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n var [_start, _end] = Range.edges(targetRange);\n var _diff = {\n start: _start.offset,\n end: _end.offset,\n text: _text\n };\n // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word\n // inserted after a mark placeholder is inserted with an anchor offset off by 1.\n // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert\n // text events are fired with the correct target ranges, only the final 'insertComposition'\n // isn't, so we can adjust the target range start offset if we are confident this is the\n // swiftkey insert causing the issue.\n if (_text && insertPositionHint && type === 'insertCompositionText') {\n var hintPosition = insertPositionHint.start + insertPositionHint.text.search(/\\S|$/);\n var diffPosition = _diff.start + _diff.text.search(/\\S|$/);\n if (diffPosition === hintPosition + 1 && _diff.end === insertPositionHint.start + insertPositionHint.text.length) {\n _diff.start -= 1;\n insertPositionHint = null;\n scheduleFlush();\n } else {\n insertPositionHint = false;\n }\n } else if (type === 'insertText') {\n if (insertPositionHint === null) {\n insertPositionHint = _diff;\n } else if (insertPositionHint && Range.isCollapsed(targetRange) && insertPositionHint.end + insertPositionHint.text.length === _start.offset) {\n insertPositionHint = _objectSpread$7(_objectSpread$7({}, insertPositionHint), {}, {\n text: insertPositionHint.text + _text\n });\n } else {\n insertPositionHint = false;\n }\n } else {\n insertPositionHint = false;\n }\n if (canStoreDiff) {\n var currentSelection = editor.selection;\n storeDiff(_start.path, _diff);\n if (currentSelection) {\n var newPoint = {\n path: _start.path,\n offset: _start.offset + _text.length\n };\n scheduleAction(() => {\n Transforms.select(editor, {\n anchor: newPoint,\n focus: newPoint\n });\n }, {\n at: newPoint\n });\n }\n return;\n }\n }\n return scheduleAction(() => Editor.insertText(editor, _text), {\n at: targetRange\n });\n }\n }\n };\n var hasPendingAction = () => {\n return !!EDITOR_TO_PENDING_ACTION.get(editor);\n };\n var hasPendingDiffs = () => {\n var _EDITOR_TO_PENDING_DI4;\n return !!((_EDITOR_TO_PENDING_DI4 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI4 !== void 0 && _EDITOR_TO_PENDING_DI4.length);\n };\n var hasPendingChanges = () => {\n return hasPendingAction() || hasPendingDiffs();\n };\n var isFlushing = () => {\n return flushing;\n };\n var handleUserSelect = range => {\n EDITOR_TO_PENDING_SELECTION.set(editor, range);\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId);\n flushTimeoutId = null;\n }\n var {\n selection\n } = editor;\n if (!range) {\n return;\n }\n var pathChanged = !selection || !Path.equals(selection.anchor.path, range.anchor.path);\n var parentPathChanged = !selection || !Path.equals(selection.anchor.path.slice(0, -1), range.anchor.path.slice(0, -1));\n if (pathChanged && insertPositionHint || parentPathChanged) {\n insertPositionHint = false;\n }\n if (pathChanged || hasPendingDiffs()) {\n flushTimeoutId = setTimeout(flush, FLUSH_DELAY);\n }\n };\n var handleInput = () => {\n if (hasPendingAction() || !hasPendingDiffs()) {\n flush();\n }\n };\n var handleKeyDown = _ => {\n // COMPAT: Swiftkey closes the keyboard when typing inside a empty node\n // directly next to a non-contenteditable element (= the placeholder).\n // The only event fired soon enough for us to allow hiding the placeholder\n // without swiftkey picking it up is the keydown event, so we have to hide it\n // here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535\n if (!hasPendingDiffs()) {\n updatePlaceholderVisibility(true);\n setTimeout(updatePlaceholderVisibility);\n }\n };\n var scheduleFlush = () => {\n if (!hasPendingAction()) {\n actionTimeoutId = setTimeout(flush);\n }\n };\n var handleDomMutations = mutations => {\n if (hasPendingDiffs() || hasPendingAction()) {\n return;\n }\n if (mutations.some(mutation => isTrackedMutation(editor, mutation, mutations))) {\n var _EDITOR_TO_FORCE_REND;\n // Cause a re-render to restore the dom state if we encounter tracked mutations without\n // a corresponding pending action.\n (_EDITOR_TO_FORCE_REND = EDITOR_TO_FORCE_RENDER.get(editor)) === null || _EDITOR_TO_FORCE_REND === void 0 || _EDITOR_TO_FORCE_REND();\n }\n };\n return {\n flush,\n scheduleFlush,\n hasPendingDiffs,\n hasPendingAction,\n hasPendingChanges,\n isFlushing,\n handleUserSelect,\n handleCompositionEnd,\n handleCompositionStart,\n handleDOMBeforeInput,\n handleKeyDown,\n handleDomMutations,\n handleInput\n };\n}\n\nfunction useIsMounted() {\n var isMountedRef = useRef(false);\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef.current;\n}\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? useLayoutEffect : useEffect;\n\nfunction useMutationObserver(node, callback, options) {\n var [mutationObserver] = useState(() => new MutationObserver(callback));\n useIsomorphicLayoutEffect(() => {\n // Discard mutations caused during render phase. This works due to react calling\n // useLayoutEffect synchronously after the render phase before the next tick.\n mutationObserver.takeRecords();\n });\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined');\n }\n mutationObserver.observe(node.current, options);\n return () => mutationObserver.disconnect();\n }, [mutationObserver, node, options]);\n}\n\nvar _excluded$2 = [\"node\"];\nfunction ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar MUTATION_OBSERVER_CONFIG$1 = {\n subtree: true,\n childList: true,\n characterData: true\n};\nvar useAndroidInputManager = !IS_ANDROID ? () => null : _ref => {\n var {\n node\n } = _ref,\n options = _objectWithoutProperties(_ref, _excluded$2);\n if (!IS_ANDROID) {\n return null;\n }\n var editor = useSlateStatic();\n var isMounted = useIsMounted();\n var [inputManager] = useState(() => createAndroidInputManager(_objectSpread$6({\n editor\n }, options)));\n useMutationObserver(node, inputManager.handleDomMutations, MUTATION_OBSERVER_CONFIG$1);\n EDITOR_TO_SCHEDULE_FLUSH.set(editor, inputManager.scheduleFlush);\n if (isMounted) {\n inputManager.flush();\n }\n return inputManager;\n};\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * Leaf content strings.\n */\nvar String$1 = props => {\n var {\n isLast,\n leaf,\n parent,\n text\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, text);\n var parentPath = Path.parent(path);\n var isMarkPlaceholder = Boolean(leaf[MARK_PLACEHOLDER_SYMBOL]);\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n if (editor.isVoid(parent)) {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n length: Node.string(parent).length\n });\n }\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (leaf.text === '' && parent.children[parent.children.length - 1] === text && !editor.isInline(parent) && Editor.string(editor, parentPath) === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n isLineBreak: true,\n isMarkPlaceholder: isMarkPlaceholder\n });\n }\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (leaf.text === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n isMarkPlaceholder: isMarkPlaceholder\n });\n }\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return /*#__PURE__*/React.createElement(TextString, {\n isTrailing: true,\n text: leaf.text\n });\n }\n return /*#__PURE__*/React.createElement(TextString, {\n text: leaf.text\n });\n};\n/**\n * Leaf strings with text in them.\n */\nvar TextString = props => {\n var {\n text,\n isTrailing = false\n } = props;\n var ref = useRef(null);\n var getTextContent = () => {\n return \"\".concat(text !== null && text !== void 0 ? text : '').concat(isTrailing ? '\\n' : '');\n };\n var [initialText] = useState(getTextContent);\n // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n // useLayoutEffect: updating our span before browser paint\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n var textWithTrailing = getTextContent();\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing;\n }\n // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n });\n // We intentionally render a memoized <span> that only receives the initial text content when the component is mounted.\n // We defer to the layout effect above to update the `textContent` of the span element when needed.\n return /*#__PURE__*/React.createElement(MemoizedText$1, {\n ref: ref\n }, initialText);\n};\nvar MemoizedText$1 = /*#__PURE__*/memo( /*#__PURE__*/forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-string\": true,\n ref: ref\n }, props.children);\n}));\n/**\n * Leaf strings without text, render as zero-width strings.\n */\nvar ZeroWidthString = props => {\n var {\n length = 0,\n isLineBreak = false,\n isMarkPlaceholder = false\n } = props;\n var attributes = {\n 'data-slate-zero-width': isLineBreak ? 'n' : 'z',\n 'data-slate-length': length\n };\n if (isMarkPlaceholder) {\n attributes['data-slate-mark-placeholder'] = true;\n }\n // FIXME: Inserting the \\uFEFF on iOS breaks capitalization at the start of an\n // empty editor (https://github.com/ianstormtaylor/slate/issues/5199).\n //\n // However, not inserting the \\uFEFF on iOS causes the editor to crash when\n // inserting any text using an IME at the start of a block. This appears to\n // be because accepting an IME suggestion when at the start of a block (no\n // preceding \\uFEFF) removes one or more DOM elements that `toSlateRange`\n // depends on. (https://github.com/ianstormtaylor/slate/issues/5703)\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread$5({}, attributes), !IS_ANDROID || !isLineBreak ? '\\uFEFF' : null, isLineBreak ? /*#__PURE__*/React.createElement(\"br\", null) : null);\n};\n\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// Delay the placeholder on Android to prevent the keyboard from closing.\n// (https://github.com/ianstormtaylor/slate/pull/5368)\nvar PLACEHOLDER_DELAY = IS_ANDROID ? 300 : 0;\nfunction disconnectPlaceholderResizeObserver(placeholderResizeObserver, releaseObserver) {\n if (placeholderResizeObserver.current) {\n placeholderResizeObserver.current.disconnect();\n if (releaseObserver) {\n placeholderResizeObserver.current = null;\n }\n }\n}\nfunction clearTimeoutRef(timeoutRef) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n}\nvar defaultRenderLeaf = props => /*#__PURE__*/React.createElement(DefaultLeaf, _objectSpread$4({}, props));\n/**\n * Individual leaves in a text node with unique formatting.\n */\nvar Leaf = props => {\n var {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = defaultRenderLeaf,\n leafPosition\n } = props;\n var editor = useSlateStatic();\n var placeholderResizeObserver = useRef(null);\n var placeholderRef = useRef(null);\n var [showPlaceholder, setShowPlaceholder] = useState(false);\n var showPlaceholderTimeoutRef = useRef(null);\n var callbackPlaceholderRef = useCallback(placeholderEl => {\n disconnectPlaceholderResizeObserver(placeholderResizeObserver, placeholderEl == null);\n if (placeholderEl == null) {\n var _leaf$onPlaceholderRe;\n EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor);\n (_leaf$onPlaceholderRe = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe === void 0 || _leaf$onPlaceholderRe.call(leaf, null);\n } else {\n EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);\n if (!placeholderResizeObserver.current) {\n // Create a new observer and observe the placeholder element.\n var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;\n placeholderResizeObserver.current = new ResizeObserver$1(() => {\n var _leaf$onPlaceholderRe2;\n (_leaf$onPlaceholderRe2 = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe2 === void 0 || _leaf$onPlaceholderRe2.call(leaf, placeholderEl);\n });\n }\n placeholderResizeObserver.current.observe(placeholderEl);\n placeholderRef.current = placeholderEl;\n }\n }, [placeholderRef, leaf, editor]);\n var children = /*#__PURE__*/React.createElement(String$1, {\n isLast: isLast,\n leaf: leaf,\n parent: parent,\n text: text\n });\n var leafIsPlaceholder = Boolean(leaf[PLACEHOLDER_SYMBOL]);\n useEffect(() => {\n if (leafIsPlaceholder) {\n if (!showPlaceholderTimeoutRef.current) {\n // Delay the placeholder, so it will not render in a selection\n showPlaceholderTimeoutRef.current = setTimeout(() => {\n setShowPlaceholder(true);\n showPlaceholderTimeoutRef.current = null;\n }, PLACEHOLDER_DELAY);\n }\n } else {\n clearTimeoutRef(showPlaceholderTimeoutRef);\n setShowPlaceholder(false);\n }\n return () => clearTimeoutRef(showPlaceholderTimeoutRef);\n }, [leafIsPlaceholder, setShowPlaceholder]);\n if (leafIsPlaceholder && showPlaceholder) {\n var placeholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n top: 0,\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none',\n // Fixes https://github.com/udecode/plate/issues/2315\n WebkitUserModify: IS_WEBKIT ? 'inherit' : undefined\n },\n contentEditable: false,\n ref: callbackPlaceholderRef\n }\n };\n children = /*#__PURE__*/React.createElement(React.Fragment, null, children, renderPlaceholder(placeholderProps));\n }\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n var attributes = {\n 'data-slate-leaf': true\n };\n return renderLeaf({\n attributes,\n children,\n leaf,\n text,\n leafPosition\n });\n};\nvar MemoizedLeaf = /*#__PURE__*/React.memo(Leaf, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text$1.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = props => {\n var {\n attributes,\n children\n } = props;\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread$4({}, attributes), children);\n};\n\n/**\n * Create a selector that updates when an `update` function is called, and\n * which only causes the component to render when the result of `selector`\n * differs from the previous result according to `equalityFn`.\n *\n * If `selector` is memoized using `useCallback`, then it will only be called\n * when it changes or when `update` is called. Otherwise, `selector` will be\n * called every time the component renders.\n *\n * @example\n * const [state, update] = useGenericSelector(selector, equalityFn)\n *\n * useIsomorphicLayoutEffect(() => {\n * return addEventListener(update)\n * }, [addEventListener, update])\n *\n * return state\n */\nfunction useGenericSelector(selector, equalityFn) {\n var [, forceRender] = useReducer(s => s + 1, 0);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef(() => null);\n var latestSelectedState = useRef(null);\n var selectedState;\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n var selectorResult = selector();\n if (equalityFn(latestSelectedState.current, selectorResult)) {\n selectedState = latestSelectedState.current;\n } else {\n selectedState = selectorResult;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\".concat(latestSubscriptionCallbackError.current.stack, \"\\n\\n\");\n }\n throw err;\n }\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n var update = useCallback(() => {\n try {\n var newSelectedState = latestSelector.current();\n if (equalityFn(latestSelectedState.current, newSelectedState)) {\n return;\n }\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n if (err instanceof Error) {\n latestSubscriptionCallbackError.current = err;\n } else {\n latestSubscriptionCallbackError.current = new Error(String(err));\n }\n }\n forceRender();\n // don't rerender on equalityFn change since we want to be able to define it inline\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [selectedState, update];\n}\nfunction isError(error) {\n return error instanceof Error;\n}\n\n/**\n * A React context for sharing the `decorate` prop of the editable and\n * subscribing to changes on this prop.\n */\nvar DecorateContext = /*#__PURE__*/createContext({});\nvar useDecorations = (node, parentDecorations) => {\n var editor = useSlateStatic();\n var {\n decorate,\n addEventListener\n } = useContext(DecorateContext);\n // Not memoized since we want nodes to be decorated on each render\n var selector = () => {\n var path = ReactEditor.findPath(editor, node);\n return decorate([node, path]);\n };\n var equalityFn = Text$1.isText(node) ? isTextDecorationsEqual : isElementDecorationsEqual;\n var [decorations, update] = useGenericSelector(selector, equalityFn);\n useIsomorphicLayoutEffect(() => {\n var unsubscribe = addEventListener(update);\n update();\n return unsubscribe;\n }, [addEventListener, update]);\n return useMemo(() => [...decorations, ...parentDecorations], [decorations, parentDecorations]);\n};\nvar useDecorateContext = decorateProp => {\n var eventListeners = useRef(new Set());\n var latestDecorate = useRef(decorateProp);\n useIsomorphicLayoutEffect(() => {\n latestDecorate.current = decorateProp;\n eventListeners.current.forEach(listener => listener());\n }, [decorateProp]);\n var decorate = useCallback(entry => latestDecorate.current(entry), []);\n var addEventListener = useCallback(callback => {\n eventListeners.current.add(callback);\n return () => {\n eventListeners.current.delete(callback);\n };\n }, []);\n return useMemo(() => ({\n decorate,\n addEventListener\n }), [decorate, addEventListener]);\n};\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar defaultRenderText = props => /*#__PURE__*/React.createElement(DefaultText, _objectSpread$3({}, props));\n/**\n * Text.\n */\nvar Text = props => {\n var {\n decorations: parentDecorations,\n isLast,\n parent,\n renderPlaceholder,\n renderLeaf,\n renderText = defaultRenderText,\n text\n } = props;\n var editor = useSlateStatic();\n var ref = useRef(null);\n var decorations = useDecorations(text, parentDecorations);\n var decoratedLeaves = Text$1.decorations(text, decorations);\n var key = ReactEditor.findKey(editor, text);\n var children = [];\n for (var i = 0; i < decoratedLeaves.length; i++) {\n var {\n leaf,\n position\n } = decoratedLeaves[i];\n children.push( /*#__PURE__*/React.createElement(MemoizedLeaf, {\n isLast: isLast && i === decoratedLeaves.length - 1,\n key: \"\".concat(key.id, \"-\").concat(i),\n renderPlaceholder: renderPlaceholder,\n leaf: leaf,\n leafPosition: position,\n text: text,\n parent: parent,\n renderLeaf: renderLeaf\n }));\n }\n // Update element-related weak maps with the DOM element ref.\n var callbackRef = useCallback(span => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (span) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.set(key, span);\n NODE_TO_ELEMENT.set(text, span);\n ELEMENT_TO_NODE.set(span, text);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(text);\n if (ref.current) {\n ELEMENT_TO_NODE.delete(ref.current);\n }\n }\n ref.current = span;\n }, [ref, editor, key, text]);\n var attributes = {\n 'data-slate-node': 'text',\n ref: callbackRef\n };\n return renderText({\n text,\n children,\n attributes\n });\n};\nvar MemoizedText = /*#__PURE__*/React.memo(Text, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderText === prev.renderText && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && isTextDecorationsEqual(next.decorations, prev.decorations);\n});\nvar DefaultText = props => {\n var {\n attributes,\n children\n } = props;\n return /*#__PURE__*/React.createElement(\"span\", _objectSpread$3({}, attributes), children);\n};\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar defaultRenderElement = props => /*#__PURE__*/React.createElement(DefaultElement, _objectSpread$2({}, props));\n/**\n * Element.\n */\nvar Element = props => {\n var {\n decorations: parentDecorations,\n element,\n renderElement = defaultRenderElement,\n renderChunk,\n renderPlaceholder,\n renderLeaf,\n renderText\n } = props;\n var editor = useSlateStatic();\n var readOnly = useReadOnly();\n var isInline = editor.isInline(element);\n var decorations = useDecorations(element, parentDecorations);\n var key = ReactEditor.findKey(editor, element);\n var ref = useCallback(ref => {\n // Update element-related weak maps with the DOM element ref.\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.set(key, ref);\n NODE_TO_ELEMENT.set(element, ref);\n ELEMENT_TO_NODE.set(ref, element);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 || KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(element);\n }\n }, [editor, key, element]);\n var children = useChildren({\n decorations,\n node: element,\n renderElement,\n renderChunk,\n renderPlaceholder,\n renderLeaf,\n renderText\n });\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n var attributes = {\n 'data-slate-node': 'element',\n ref\n };\n if (isInline) {\n attributes['data-slate-inline'] = true;\n }\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n if (!isInline && Editor.hasInlines(editor, element)) {\n var text = Node.string(element);\n var dir = getDirection(text);\n if (dir === 'rtl') {\n attributes.dir = dir;\n }\n }\n // If it's a void node, wrap the children in extra void-specific elements.\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true;\n if (!readOnly && isInline) {\n attributes.contentEditable = false;\n }\n var Tag = isInline ? 'span' : 'div';\n var [[_text]] = Node.texts(element);\n children = /*#__PURE__*/React.createElement(Tag, {\n \"data-slate-spacer\": true,\n style: {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n }\n }, /*#__PURE__*/React.createElement(MemoizedText, {\n renderPlaceholder: renderPlaceholder,\n decorations: [],\n isLast: false,\n parent: element,\n text: _text\n }));\n NODE_TO_INDEX.set(_text, 0);\n NODE_TO_PARENT.set(_text, element);\n }\n return renderElement({\n attributes,\n children,\n element\n });\n};\nvar MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {\n return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderChunk === next.renderChunk && prev.renderText === next.renderText && prev.renderLeaf === next.renderLeaf && prev.renderPlaceholder === next.renderPlaceholder && isElementDecorationsEqual(prev.decorations, next.decorations);\n});\n/**\n * The default element renderer.\n */\nvar DefaultElement = props => {\n var {\n attributes,\n children,\n element\n } = props;\n var editor = useSlateStatic();\n var Tag = editor.isInline(element) ? 'span' : 'div';\n return /*#__PURE__*/React.createElement(Tag, _objectSpread$2(_objectSpread$2({}, attributes), {}, {\n style: {\n position: 'relative'\n }\n }), children);\n};\n\n/**\n * Traverse and modify a chunk tree\n */\nclass ChunkTreeHelper {\n constructor(chunkTree, _ref) {\n var {\n chunkSize,\n debug\n } = _ref;\n /**\n * The root of the chunk tree\n */\n _defineProperty(this, \"root\", void 0);\n /**\n * The ideal size of a chunk\n */\n _defineProperty(this, \"chunkSize\", void 0);\n /**\n * Whether debug mode is enabled\n *\n * If enabled, the pointer state will be checked for internal consistency\n * after each mutating operation.\n */\n _defineProperty(this, \"debug\", void 0);\n /**\n * Whether the traversal has reached the end of the chunk tree\n *\n * When this is true, the pointerChunk and pointerIndex point to the last\n * top-level node in the chunk tree, although pointerNode returns null.\n */\n _defineProperty(this, \"reachedEnd\", void 0);\n /**\n * The chunk containing the current node\n */\n _defineProperty(this, \"pointerChunk\", void 0);\n /**\n * The index of the current node within pointerChunk\n *\n * Can be -1 to indicate that the pointer is before the start of the tree.\n */\n _defineProperty(this, \"pointerIndex\", void 0);\n /**\n * Similar to a Slate path; tracks the path of pointerChunk relative to the\n * root.\n *\n * Used to move the pointer from the current chunk to the parent chunk more\n * efficiently.\n */\n _defineProperty(this, \"pointerIndexStack\", void 0);\n /**\n * Indexing the current chunk's children has a slight time cost, which adds up\n * when traversing very large trees, so the current node is cached.\n *\n * A value of undefined means that the current node is not cached. This\n * property must be set to undefined whenever the pointer is moved, unless\n * the pointer is guaranteed to point to the same node that it did previously.\n */\n _defineProperty(this, \"cachedPointerNode\", void 0);\n this.root = chunkTree;\n this.chunkSize = chunkSize;\n // istanbul ignore next\n this.debug = debug !== null && debug !== void 0 ? debug : false;\n this.pointerChunk = chunkTree;\n this.pointerIndex = -1;\n this.pointerIndexStack = [];\n this.reachedEnd = false;\n this.validateState();\n }\n /**\n * Move the pointer to the next leaf in the chunk tree\n */\n readLeaf() {\n // istanbul ignore next\n if (this.reachedEnd) return null;\n // Get the next sibling or aunt node\n while (true) {\n if (this.pointerIndex + 1 < this.pointerSiblings.length) {\n this.pointerIndex++;\n this.cachedPointerNode = undefined;\n break;\n } else if (this.pointerChunk.type === 'root') {\n this.reachedEnd = true;\n return null;\n } else {\n this.exitChunk();\n }\n }\n this.validateState();\n // If the next sibling or aunt is a chunk, descend into it\n this.enterChunkUntilLeaf(false);\n return this.pointerNode;\n }\n /**\n * Move the pointer to the previous leaf in the chunk tree\n */\n returnToPreviousLeaf() {\n // If we were at the end of the tree, descend into the end of the last\n // chunk in the tree\n if (this.reachedEnd) {\n this.reachedEnd = false;\n this.enterChunkUntilLeaf(true);\n return;\n }\n // Get the previous sibling or aunt node\n while (true) {\n if (this.pointerIndex >= 1) {\n this.pointerIndex--;\n this.cachedPointerNode = undefined;\n break;\n } else if (this.pointerChunk.type === 'root') {\n this.pointerIndex = -1;\n return;\n } else {\n this.exitChunk();\n }\n }\n this.validateState();\n // If the previous sibling or aunt is a chunk, descend into it\n this.enterChunkUntilLeaf(true);\n }\n /**\n * Insert leaves before the current leaf, leaving the pointer unchanged\n */\n insertBefore(leaves) {\n this.returnToPreviousLeaf();\n this.insertAfter(leaves);\n this.readLeaf();\n }\n /**\n * Insert leaves after the current leaf, leaving the pointer on the last\n * inserted leaf\n *\n * The insertion algorithm first checks for any chunk we're currently at the\n * end of that can receive additional leaves. Next, it tries to insert leaves\n * at the starts of any subsequent chunks.\n *\n * Any remaining leaves are passed to rawInsertAfter to be chunked and\n * inserted at the highest possible level.\n */\n insertAfter(leaves) {\n // istanbul ignore next\n if (leaves.length === 0) return;\n var beforeDepth = 0;\n var afterDepth = 0;\n // While at the end of a chunk, insert any leaves that will fit, and then\n // exit the chunk\n while (this.pointerChunk.type === 'chunk' && this.pointerIndex === this.pointerSiblings.length - 1) {\n var remainingCapacity = this.chunkSize - this.pointerSiblings.length;\n var toInsertCount = Math.min(remainingCapacity, leaves.length);\n if (toInsertCount > 0) {\n var leavesToInsert = leaves.splice(0, toInsertCount);\n this.rawInsertAfter(leavesToInsert, beforeDepth);\n }\n this.exitChunk();\n beforeDepth++;\n }\n if (leaves.length === 0) return;\n // Save the pointer so that we can come back here after inserting leaves\n // into the starts of subsequent blocks\n var rawInsertPointer = this.savePointer();\n // If leaves are inserted into the start of a subsequent block, then we\n // eventually need to restore the pointer to the last such inserted leaf\n var finalPointer = null;\n // Move the pointer into the chunk containing the next leaf, if it exists\n if (this.readLeaf()) {\n // While at the start of a chunk, insert any leaves that will fit, and\n // then exit the chunk\n while (this.pointerChunk.type === 'chunk' && this.pointerIndex === 0) {\n var _remainingCapacity = this.chunkSize - this.pointerSiblings.length;\n var _toInsertCount = Math.min(_remainingCapacity, leaves.length);\n if (_toInsertCount > 0) {\n var _leavesToInsert = leaves.splice(-_toInsertCount, _toInsertCount);\n // Insert the leaves at the start of the chunk\n this.pointerIndex = -1;\n this.cachedPointerNode = undefined;\n this.rawInsertAfter(_leavesToInsert, afterDepth);\n // If this is the first batch of insertions at the start of a\n // subsequent chunk, set the final pointer to the last inserted leaf\n if (!finalPointer) {\n finalPointer = this.savePointer();\n }\n }\n this.exitChunk();\n afterDepth++;\n }\n }\n this.restorePointer(rawInsertPointer);\n // If there are leaves left to insert, insert them between the end of the\n // previous chunk and the start of the first subsequent chunk, or wherever\n // the pointer ended up after the first batch of insertions\n var minDepth = Math.max(beforeDepth, afterDepth);\n this.rawInsertAfter(leaves, minDepth);\n if (finalPointer) {\n this.restorePointer(finalPointer);\n }\n this.validateState();\n }\n /**\n * Remove the current node and decrement the pointer, deleting any ancestor\n * chunk that becomes empty as a result\n */\n remove() {\n this.pointerSiblings.splice(this.pointerIndex--, 1);\n this.cachedPointerNode = undefined;\n if (this.pointerSiblings.length === 0 && this.pointerChunk.type === 'chunk') {\n this.exitChunk();\n this.remove();\n } else {\n this.invalidateChunk();\n }\n this.validateState();\n }\n /**\n * Add the current chunk and all ancestor chunks to the list of modified\n * chunks\n */\n invalidateChunk() {\n for (var c = this.pointerChunk; c.type === 'chunk'; c = c.parent) {\n this.root.modifiedChunks.add(c);\n }\n }\n /**\n * Whether the pointer is at the start of the tree\n */\n get atStart() {\n return this.pointerChunk.type === 'root' && this.pointerIndex === -1;\n }\n /**\n * The siblings of the current node\n */\n get pointerSiblings() {\n return this.pointerChunk.children;\n }\n /**\n * Get the current node (uncached)\n *\n * If the pointer is at the start or end of the document, returns null.\n *\n * Usually, the current node is a chunk leaf, although it can be a chunk\n * while insertions are in progress.\n */\n getPointerNode() {\n if (this.reachedEnd || this.pointerIndex === -1) {\n return null;\n }\n return this.pointerSiblings[this.pointerIndex];\n }\n /**\n * Cached getter for the current node\n */\n get pointerNode() {\n if (this.cachedPointerNode !== undefined) return this.cachedPointerNode;\n var pointerNode = this.getPointerNode();\n this.cachedPointerNode = pointerNode;\n return pointerNode;\n }\n /**\n * Get the path of a chunk relative to the root, returning null if the chunk\n * is not connected to the root\n */\n getChunkPath(chunk) {\n var path = [];\n for (var c = chunk; c.type === 'chunk'; c = c.parent) {\n var index = c.parent.children.indexOf(c);\n // istanbul ignore next\n if (index === -1) {\n return null;\n }\n path.unshift(index);\n }\n return path;\n }\n /**\n * Save the current pointer to be restored later\n */\n savePointer() {\n if (this.atStart) return 'start';\n // istanbul ignore next\n if (!this.pointerNode) {\n throw new Error('Cannot save pointer when pointerNode is null');\n }\n return {\n chunk: this.pointerChunk,\n node: this.pointerNode\n };\n }\n /**\n * Restore the pointer to a previous state\n */\n restorePointer(savedPointer) {\n if (savedPointer === 'start') {\n this.pointerChunk = this.root;\n this.pointerIndex = -1;\n this.pointerIndexStack = [];\n this.reachedEnd = false;\n this.cachedPointerNode = undefined;\n return;\n }\n // Since nodes may have been inserted or removed prior to the saved\n // pointer since it was saved, the index and index stack must be\n // recomputed. This is slow, but this is fine since restoring a pointer is\n // not a frequent operation.\n var {\n chunk,\n node\n } = savedPointer;\n var index = chunk.children.indexOf(node);\n // istanbul ignore next\n if (index === -1) {\n throw new Error('Cannot restore point because saved node is no longer in saved chunk');\n }\n var indexStack = this.getChunkPath(chunk);\n // istanbul ignore next\n if (!indexStack) {\n throw new Error('Cannot restore point because saved chunk is no longer connected to root');\n }\n this.pointerChunk = chunk;\n this.pointerIndex = index;\n this.pointerIndexStack = indexStack;\n this.reachedEnd = false;\n this.cachedPointerNode = node;\n this.validateState();\n }\n /**\n * Assuming the current node is a chunk, move the pointer into that chunk\n *\n * @param end If true, place the pointer on the last node of the chunk.\n * Otherwise, place the pointer on the first node.\n */\n enterChunk(end) {\n var _this$pointerNode;\n // istanbul ignore next\n if (((_this$pointerNode = this.pointerNode) === null || _this$pointerNode === void 0 ? void 0 : _this$pointerNode.type) !== 'chunk') {\n throw new Error('Cannot enter non-chunk');\n }\n this.pointerIndexStack.push(this.pointerIndex);\n this.pointerChunk = this.pointerNode;\n this.pointerIndex = end ? this.pointerSiblings.length - 1 : 0;\n this.cachedPointerNode = undefined;\n this.validateState();\n // istanbul ignore next\n if (this.pointerChunk.children.length === 0) {\n throw new Error('Cannot enter empty chunk');\n }\n }\n /**\n * Assuming the current node is a chunk, move the pointer into that chunk\n * repeatedly until the current node is a leaf\n *\n * @param end If true, place the pointer on the last node of the chunk.\n * Otherwise, place the pointer on the first node.\n */\n enterChunkUntilLeaf(end) {\n while (((_this$pointerNode2 = this.pointerNode) === null || _this$pointerNode2 === void 0 ? void 0 : _this$pointerNode2.type) === 'chunk') {\n var _this$pointerNode2;\n this.enterChunk(end);\n }\n }\n /**\n * Move the pointer to the parent chunk\n */\n exitChunk() {\n // istanbul ignore next\n if (this.pointerChunk.type === 'root') {\n throw new Error('Cannot exit root');\n }\n var previousPointerChunk = this.pointerChunk;\n this.pointerChunk = previousPointerChunk.parent;\n this.pointerIndex = this.pointerIndexStack.pop();\n this.cachedPointerNode = undefined;\n this.validateState();\n }\n /**\n * Insert leaves immediately after the current node, leaving the pointer on\n * the last inserted leaf\n *\n * Leaves are chunked according to the number of nodes already in the parent\n * plus the number of nodes being inserted, or the minimum depth if larger\n */\n rawInsertAfter(leaves, minDepth) {\n if (leaves.length === 0) return;\n var groupIntoChunks = (leaves, parent, perChunk) => {\n if (perChunk === 1) return leaves;\n var chunks = [];\n for (var i = 0; i < this.chunkSize; i++) {\n var chunkNodes = leaves.slice(i * perChunk, (i + 1) * perChunk);\n if (chunkNodes.length === 0) break;\n var chunk = {\n type: 'chunk',\n key: new Key(),\n parent,\n children: []\n };\n chunk.children = groupIntoChunks(chunkNodes, chunk, perChunk / this.chunkSize);\n chunks.push(chunk);\n }\n return chunks;\n };\n // Determine the chunking depth based on the number of existing nodes in\n // the chunk and the number of nodes being inserted\n var newTotal = this.pointerSiblings.length + leaves.length;\n var depthForTotal = 0;\n for (var i = this.chunkSize; i < newTotal; i *= this.chunkSize) {\n depthForTotal++;\n }\n // A depth of 0 means no chunking\n var depth = Math.max(depthForTotal, minDepth);\n var perTopLevelChunk = Math.pow(this.chunkSize, depth);\n var chunks = groupIntoChunks(leaves, this.pointerChunk, perTopLevelChunk);\n this.pointerSiblings.splice(this.pointerIndex + 1, 0, ...chunks);\n this.pointerIndex += chunks.length;\n this.cachedPointerNode = undefined;\n this.invalidateChunk();\n this.validateState();\n }\n /**\n * If debug mode is enabled, ensure that the state is internally consistent\n */\n // istanbul ignore next\n validateState() {\n if (!this.debug) return;\n var validateDescendant = node => {\n if (node.type === 'chunk') {\n var {\n parent,\n children\n } = node;\n if (!parent.children.includes(node)) {\n throw new Error(\"Debug: Chunk \".concat(node.key.id, \" has an incorrect parent property\"));\n }\n children.forEach(validateDescendant);\n }\n };\n this.root.children.forEach(validateDescendant);\n if (this.cachedPointerNode !== undefined && this.cachedPointerNode !== this.getPointerNode()) {\n throw new Error('Debug: The cached pointer is incorrect and has not been invalidated');\n }\n var actualIndexStack = this.getChunkPath(this.pointerChunk);\n if (!actualIndexStack) {\n throw new Error('Debug: The pointer chunk is not connected to the root');\n }\n if (!Path.equals(this.pointerIndexStack, actualIndexStack)) {\n throw new Error(\"Debug: The cached index stack [\".concat(this.pointerIndexStack.join(', '), \"] does not match the path of the pointer chunk [\").concat(actualIndexStack.join(', '), \"]\"));\n }\n }\n}\n\n/**\n * Traverse an array of children, providing helpers useful for reconciling the\n * children array with a chunk tree\n */\nclass ChildrenHelper {\n constructor(editor, children) {\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"children\", void 0);\n /**\n * Sparse array of Slate node keys, each index corresponding to an index in\n * the children array\n *\n * Fetching the key for a Slate node is expensive, so we cache them here.\n */\n _defineProperty(this, \"cachedKeys\", void 0);\n /**\n * The index of the next node to be read in the children array\n */\n _defineProperty(this, \"pointerIndex\", void 0);\n this.editor = editor;\n this.children = children;\n this.cachedKeys = new Array(children.length);\n this.pointerIndex = 0;\n }\n /**\n * Read a given number of nodes, advancing the pointer by that amount\n */\n read(n) {\n // PERF: If only one child was requested (the most common case), use array\n // indexing instead of slice\n if (n === 1) {\n return [this.children[this.pointerIndex++]];\n }\n var slicedChildren = this.remaining(n);\n this.pointerIndex += n;\n return slicedChildren;\n }\n /**\n * Get the remaining children without advancing the pointer\n *\n * @param [maxChildren] Limit the number of children returned.\n */\n remaining(maxChildren) {\n if (maxChildren === undefined) {\n return this.children.slice(this.pointerIndex);\n }\n return this.children.slice(this.pointerIndex, this.pointerIndex + maxChildren);\n }\n /**\n * Whether all children have been read\n */\n get reachedEnd() {\n return this.pointerIndex >= this.children.length;\n }\n /**\n * Determine whether a node with a given key appears in the unread part of the\n * children array, and return its index relative to the current pointer if so\n *\n * Searching for the node object itself using indexOf is most efficient, but\n * will fail to locate nodes that have been modified. In this case, nodes\n * should be identified by their keys instead.\n *\n * Searching an array of keys using indexOf is very inefficient since fetching\n * the keys for all children in advance is very slow. Insead, if the node\n * search fails to return a value, fetch the keys of each remaining child one\n * by one and compare it to the known key.\n */\n lookAhead(node, key) {\n var elementResult = this.children.indexOf(node, this.pointerIndex);\n if (elementResult > -1) return elementResult - this.pointerIndex;\n for (var i = this.pointerIndex; i < this.children.length; i++) {\n var candidateNode = this.children[i];\n var candidateKey = this.findKey(candidateNode, i);\n if (candidateKey === key) return i - this.pointerIndex;\n }\n return -1;\n }\n /**\n * Convert an array of Slate nodes to an array of chunk leaves, each\n * containing the node and its key\n */\n toChunkLeaves(nodes, startIndex) {\n return nodes.map((node, i) => ({\n type: 'leaf',\n node,\n key: this.findKey(node, startIndex + i),\n index: startIndex + i\n }));\n }\n /**\n * Get the key for a Slate node, cached using the node's index\n */\n findKey(node, index) {\n var cachedKey = this.cachedKeys[index];\n if (cachedKey) return cachedKey;\n var key = ReactEditor.findKey(this.editor, node);\n this.cachedKeys[index] = key;\n return key;\n }\n}\n\n/**\n * Update the chunk tree to match the children array, inserting, removing and\n * updating differing nodes\n */\nvar reconcileChildren = (editor, _ref) => {\n var {\n chunkTree,\n children,\n chunkSize,\n rerenderChildren = [],\n onInsert,\n onUpdate,\n onIndexChange,\n debug\n } = _ref;\n chunkTree.modifiedChunks.clear();\n var chunkTreeHelper = new ChunkTreeHelper(chunkTree, {\n chunkSize,\n debug\n });\n var childrenHelper = new ChildrenHelper(editor, children);\n var treeLeaf;\n // Read leaves from the tree one by one, each one representing a single Slate\n // node. Each leaf from the tree is compared to the current node in the\n // children array to determine whether nodes have been inserted, removed or\n // updated.\n var _loop = function _loop() {\n // Check where the tree node appears in the children array. In the most\n // common case (where no insertions or removals have occurred), this will be\n // 0. If the node has been removed, this will be -1. If new nodes have been\n // inserted before the node, or if the node has been moved to a later\n // position in the same children array, this will be a positive number.\n var lookAhead = childrenHelper.lookAhead(treeLeaf.node, treeLeaf.key);\n // If the node was moved, we want to remove it and insert it later, rather\n // then re-inserting all intermediate nodes before it.\n var wasMoved = lookAhead > 0 && chunkTree.movedNodeKeys.has(treeLeaf.key);\n // If the tree leaf was moved or removed, remove it\n if (lookAhead === -1 || wasMoved) {\n chunkTreeHelper.remove();\n return 1; // continue\n }\n // Get the matching Slate node and any nodes that may have been inserted\n // prior to it. Insert these into the chunk tree.\n var insertedChildrenStartIndex = childrenHelper.pointerIndex;\n var insertedChildren = childrenHelper.read(lookAhead + 1);\n var matchingChild = insertedChildren.pop();\n if (insertedChildren.length) {\n var _leavesToInsert = childrenHelper.toChunkLeaves(insertedChildren, insertedChildrenStartIndex);\n chunkTreeHelper.insertBefore(_leavesToInsert);\n insertedChildren.forEach((node, relativeIndex) => {\n onInsert === null || onInsert === void 0 || onInsert(node, insertedChildrenStartIndex + relativeIndex);\n });\n }\n var matchingChildIndex = childrenHelper.pointerIndex - 1;\n // Make sure the chunk tree contains the most recent version of the Slate\n // node\n if (treeLeaf.node !== matchingChild) {\n treeLeaf.node = matchingChild;\n chunkTreeHelper.invalidateChunk();\n onUpdate === null || onUpdate === void 0 || onUpdate(matchingChild, matchingChildIndex);\n }\n // Update the index if it has changed\n if (treeLeaf.index !== matchingChildIndex) {\n treeLeaf.index = matchingChildIndex;\n onIndexChange === null || onIndexChange === void 0 || onIndexChange(matchingChild, matchingChildIndex);\n }\n // Manually invalidate chunks containing specific children that we want to\n // re-render\n if (rerenderChildren.includes(matchingChildIndex)) {\n chunkTreeHelper.invalidateChunk();\n }\n };\n while (treeLeaf = chunkTreeHelper.readLeaf()) {\n if (_loop()) continue;\n }\n // If there are still Slate nodes remaining from the children array that were\n // not matched to nodes in the tree, insert them at the end of the tree\n if (!childrenHelper.reachedEnd) {\n var remainingChildren = childrenHelper.remaining();\n var leavesToInsert = childrenHelper.toChunkLeaves(remainingChildren, childrenHelper.pointerIndex);\n // Move the pointer back to the final leaf in the tree, or the start of the\n // tree if the tree is currently empty\n chunkTreeHelper.returnToPreviousLeaf();\n chunkTreeHelper.insertAfter(leavesToInsert);\n remainingChildren.forEach((node, relativeIndex) => {\n onInsert === null || onInsert === void 0 || onInsert(node, childrenHelper.pointerIndex + relativeIndex);\n });\n }\n chunkTree.movedNodeKeys.clear();\n};\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar KEY_TO_CHUNK_TREE = new WeakMap();\n/**\n * Get or create the chunk tree for a Slate node\n *\n * If the reconcile option is provided, the chunk tree will be updated to\n * match the current children of the node. The children are chunked\n * automatically using the given chunk size.\n */\nvar getChunkTreeForNode = function getChunkTreeForNode(editor, node) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var key = ReactEditor.findKey(editor, node);\n var chunkTree = KEY_TO_CHUNK_TREE.get(key);\n if (!chunkTree) {\n chunkTree = {\n type: 'root',\n movedNodeKeys: new Set(),\n modifiedChunks: new Set(),\n children: []\n };\n KEY_TO_CHUNK_TREE.set(key, chunkTree);\n }\n if (options.reconcile) {\n reconcileChildren(editor, _objectSpread$1({\n chunkTree,\n children: node.children\n }, options.reconcile));\n }\n return chunkTree;\n};\n\nvar defaultRenderChunk = _ref => {\n var {\n children\n } = _ref;\n return children;\n};\nvar ChunkAncestor = props => {\n var {\n root,\n ancestor,\n renderElement,\n renderChunk = defaultRenderChunk\n } = props;\n return ancestor.children.map(chunkNode => {\n if (chunkNode.type === 'chunk') {\n var key = chunkNode.key.id;\n var renderedChunk = renderChunk({\n highest: ancestor === root,\n lowest: chunkNode.children.some(c => c.type === 'leaf'),\n attributes: {\n 'data-slate-chunk': true\n },\n children: /*#__PURE__*/React.createElement(MemoizedChunk, {\n root: root,\n ancestor: chunkNode,\n renderElement: renderElement,\n renderChunk: renderChunk\n })\n });\n return /*#__PURE__*/React.createElement(Fragment, {\n key: key\n }, renderedChunk);\n }\n // Only blocks containing no inlines are chunked\n var element = chunkNode.node;\n return renderElement(element, chunkNode.index, chunkNode.key);\n });\n};\nvar ChunkTree = ChunkAncestor;\nvar MemoizedChunk = /*#__PURE__*/React.memo(ChunkAncestor, (prev, next) => prev.root === next.root && prev.renderElement === next.renderElement && prev.renderChunk === next.renderChunk && !next.root.modifiedChunks.has(next.ancestor));\n\nvar ElementContext = /*#__PURE__*/createContext(null);\n/**\n * Get the current element.\n */\nvar useElement = () => {\n var context = useContext(ElementContext);\n if (!context) {\n throw new Error('The `useElement` hook must be used inside `renderElement`.');\n }\n return context;\n};\n/**\n * Get the current element, or return null if not inside `renderElement`.\n */\nvar useElementIf = () => useContext(ElementContext);\n\n/**\n * Children.\n */\nvar useChildren = props => {\n var {\n decorations,\n node,\n renderElement,\n renderChunk,\n renderPlaceholder,\n renderText,\n renderLeaf\n } = props;\n var editor = useSlateStatic();\n IS_NODE_MAP_DIRTY.set(editor, false);\n var isEditor = Editor.isEditor(node);\n var isBlock = !isEditor && Element$1.isElement(node) && !editor.isInline(node);\n var isLeafBlock = isBlock && Editor.hasInlines(editor, node);\n var chunkSize = isLeafBlock ? null : editor.getChunkSize(node);\n var chunking = !!chunkSize;\n var {\n decorationsByChild,\n childrenToRedecorate\n } = useDecorationsByChild(editor, node, decorations);\n // Update the index and parent of each child.\n // PERF: If chunking is enabled, this is done while traversing the chunk tree\n // instead to eliminate unnecessary weak map operations.\n if (!chunking) {\n node.children.forEach((n, i) => {\n NODE_TO_INDEX.set(n, i);\n NODE_TO_PARENT.set(n, node);\n });\n }\n var renderElementComponent = useCallback((n, i, cachedKey) => {\n var key = cachedKey !== null && cachedKey !== void 0 ? cachedKey : ReactEditor.findKey(editor, n);\n return /*#__PURE__*/React.createElement(ElementContext.Provider, {\n key: \"provider-\".concat(key.id),\n value: n\n }, /*#__PURE__*/React.createElement(MemoizedElement, {\n decorations: decorationsByChild[i],\n element: n,\n key: key.id,\n renderElement: renderElement,\n renderChunk: renderChunk,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n renderText: renderText\n }));\n }, [editor, decorationsByChild, renderElement, renderChunk, renderPlaceholder, renderLeaf, renderText]);\n var renderTextComponent = (n, i) => {\n var key = ReactEditor.findKey(editor, n);\n return /*#__PURE__*/React.createElement(MemoizedText, {\n decorations: decorationsByChild[i],\n key: key.id,\n isLast: i === node.children.length - 1,\n parent: node,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n renderText: renderText,\n text: n\n });\n };\n if (!chunking) {\n return node.children.map((n, i) => Text$1.isText(n) ? renderTextComponent(n, i) : renderElementComponent(n, i));\n }\n var chunkTree = getChunkTreeForNode(editor, node, {\n reconcile: {\n chunkSize,\n rerenderChildren: childrenToRedecorate,\n onInsert: (n, i) => {\n NODE_TO_INDEX.set(n, i);\n NODE_TO_PARENT.set(n, node);\n },\n onUpdate: (n, i) => {\n NODE_TO_INDEX.set(n, i);\n NODE_TO_PARENT.set(n, node);\n },\n onIndexChange: (n, i) => {\n NODE_TO_INDEX.set(n, i);\n }\n }\n });\n return /*#__PURE__*/React.createElement(ChunkTree, {\n root: chunkTree,\n ancestor: chunkTree,\n renderElement: renderElementComponent,\n renderChunk: renderChunk\n });\n};\nvar useDecorationsByChild = (editor, node, decorations) => {\n var decorationsByChild = splitDecorationsByChild(editor, node, decorations);\n // The value we return is a mutable array of `DecoratedRange[]` arrays. This\n // lets us avoid passing an immutable array of decorations for each child into\n // `ChunkTree` using props. Each `DecoratedRange[]` is only updated if the\n // decorations at that index have changed, which speeds up the equality check\n // for the `decorations` prop in the memoized `Element` and `Text` components.\n var mutableDecorationsByChild = useRef(decorationsByChild).current;\n // Track the list of child indices whose decorations have changed, so that we\n // can tell the chunk tree to re-render these children.\n var childrenToRedecorate = [];\n // Resize the mutable array to match the latest result\n mutableDecorationsByChild.length = decorationsByChild.length;\n for (var i = 0; i < decorationsByChild.length; i++) {\n var _mutableDecorationsBy;\n var _decorations = decorationsByChild[i];\n var previousDecorations = (_mutableDecorationsBy = mutableDecorationsByChild[i]) !== null && _mutableDecorationsBy !== void 0 ? _mutableDecorationsBy : null;\n if (!isElementDecorationsEqual(previousDecorations, _decorations)) {\n mutableDecorationsByChild[i] = _decorations;\n childrenToRedecorate.push(i);\n }\n }\n return {\n decorationsByChild: mutableDecorationsByChild,\n childrenToRedecorate\n };\n};\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\nvar ReadOnlyContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `readOnly` state of the editor.\n */\nvar useReadOnly = () => {\n return useContext(ReadOnlyContext);\n};\n\n/**\n * A React context for sharing the editor selector context in a way to control\n * re-renders.\n */\nvar SlateSelectorContext = /*#__PURE__*/createContext({});\nvar refEquality = (a, b) => a === b;\n/**\n * Use redux style selectors to prevent re-rendering on every keystroke.\n *\n * Bear in mind re-rendering can only prevented if the returned value is a value\n * type or for reference types (e.g. objects and arrays) add a custom equality\n * function.\n *\n * If `selector` is memoized using `useCallback`, then it will only be called\n * when it or the editor state changes. Otherwise, `selector` will be called\n * every time the component renders.\n *\n * @example\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection))\n */\nfunction useSlateSelector(selector) {\n var equalityFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : refEquality;\n var {\n deferred\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var context = useContext(SlateSelectorContext);\n if (!context) {\n throw new Error(\"The `useSlateSelector` hook must be used inside the <Slate> component's context.\");\n }\n var {\n addEventListener\n } = context;\n var editor = useSlateStatic();\n var genericSelector = useCallback(() => selector(editor), [editor, selector]);\n var [selectedState, update] = useGenericSelector(genericSelector, equalityFn);\n useIsomorphicLayoutEffect(() => {\n var unsubscribe = addEventListener(update, {\n deferred\n });\n update();\n return unsubscribe;\n }, [addEventListener, update, deferred]);\n return selectedState;\n}\n/**\n * Create selector context with editor updating on every editor change\n */\nfunction useSelectorContext() {\n var eventListeners = useRef(new Set());\n var deferredEventListeners = useRef(new Set());\n var onChange = useCallback(() => {\n eventListeners.current.forEach(listener => listener());\n }, []);\n var flushDeferred = useCallback(() => {\n deferredEventListeners.current.forEach(listener => listener());\n deferredEventListeners.current.clear();\n }, []);\n var addEventListener = useCallback(function (callbackProp) {\n var {\n deferred = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = deferred ? () => deferredEventListeners.current.add(callbackProp) : callbackProp;\n eventListeners.current.add(callback);\n return () => {\n eventListeners.current.delete(callback);\n };\n }, []);\n var selectorContext = useMemo(() => ({\n addEventListener,\n flushDeferred\n }), [addEventListener, flushDeferred]);\n return {\n selectorContext,\n onChange\n };\n}\nfunction useFlushDeferredSelectorsOnRender() {\n var {\n flushDeferred\n } = useContext(SlateSelectorContext);\n useIsomorphicLayoutEffect(flushDeferred);\n}\n\n/**\n * Get the current editor object and re-render whenever it changes.\n */\nvar useSlate = () => {\n var {\n addEventListener\n } = useContext(SlateSelectorContext);\n var [, forceRender] = useReducer(s => s + 1, 0);\n if (!addEventListener) {\n throw new Error(\"The `useSlate` hook must be used inside the <Slate> component's context.\");\n }\n useIsomorphicLayoutEffect(() => addEventListener(forceRender), [addEventListener]);\n return useSlateStatic();\n};\nvar EDITOR_TO_V = new WeakMap();\nvar getEditorVersionRef = editor => {\n var v = EDITOR_TO_V.get(editor);\n if (v) {\n return v;\n }\n v = {\n current: 0\n };\n EDITOR_TO_V.set(editor, v);\n // Register the `onChange` handler exactly once per editor\n var {\n onChange\n } = editor;\n editor.onChange = options => {\n v.current++;\n onChange(options);\n };\n return v;\n};\n/**\n * Get the current editor object and its version, which increments on every\n * change.\n *\n * @deprecated The `v` counter is no longer used except for this hook, and may\n * be removed in a future version.\n */\nvar useSlateWithV = () => {\n var editor = useSlate();\n var vRef = useMemo(() => getEditorVersionRef(editor), [editor]);\n return {\n editor,\n v: vRef.current\n };\n};\n\nfunction useTrackUserInput() {\n var editor = useSlateStatic();\n var receivedUserInput = useRef(false);\n var animationFrameIdRef = useRef(0);\n var onUserInput = useCallback(() => {\n if (receivedUserInput.current) {\n return;\n }\n receivedUserInput.current = true;\n var window = ReactEditor.getWindow(editor);\n window.cancelAnimationFrame(animationFrameIdRef.current);\n animationFrameIdRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false;\n });\n }, [editor]);\n useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), []);\n return {\n receivedUserInput,\n onUserInput\n };\n}\n\nvar createRestoreDomManager = (editor, receivedUserInput) => {\n var bufferedMutations = [];\n var clear = () => {\n bufferedMutations = [];\n };\n var registerMutations = mutations => {\n if (!receivedUserInput.current) {\n return;\n }\n var trackedMutations = mutations.filter(mutation => isTrackedMutation(editor, mutation, mutations));\n bufferedMutations.push(...trackedMutations);\n };\n function restoreDOM() {\n if (bufferedMutations.length > 0) {\n bufferedMutations.reverse().forEach(mutation => {\n if (mutation.type === 'characterData') {\n // We don't want to restore the DOM for characterData mutations\n // because this interrupts the composition.\n return;\n }\n mutation.removedNodes.forEach(node => {\n mutation.target.insertBefore(node, mutation.nextSibling);\n });\n mutation.addedNodes.forEach(node => {\n mutation.target.removeChild(node);\n });\n });\n // Clear buffered mutations to ensure we don't undo them twice\n clear();\n }\n }\n return {\n registerMutations,\n restoreDOM,\n clear\n };\n};\n\nvar MUTATION_OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true\n};\n// We have to use a class component here since we rely on `getSnapshotBeforeUpdate` which has no FC equivalent\n// to run code synchronously immediately before react commits the component update to the DOM.\nclass RestoreDOMComponent extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"context\", null);\n _defineProperty(this, \"manager\", null);\n _defineProperty(this, \"mutationObserver\", null);\n }\n observe() {\n var _this$mutationObserve;\n var {\n node\n } = this.props;\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined');\n }\n (_this$mutationObserve = this.mutationObserver) === null || _this$mutationObserve === void 0 || _this$mutationObserve.observe(node.current, MUTATION_OBSERVER_CONFIG);\n }\n componentDidMount() {\n var {\n receivedUserInput\n } = this.props;\n var editor = this.context;\n this.manager = createRestoreDomManager(editor, receivedUserInput);\n this.mutationObserver = new MutationObserver(this.manager.registerMutations);\n this.observe();\n }\n getSnapshotBeforeUpdate() {\n var _this$mutationObserve2, _this$mutationObserve3, _this$manager2;\n var pendingMutations = (_this$mutationObserve2 = this.mutationObserver) === null || _this$mutationObserve2 === void 0 ? void 0 : _this$mutationObserve2.takeRecords();\n if (pendingMutations !== null && pendingMutations !== void 0 && pendingMutations.length) {\n var _this$manager;\n (_this$manager = this.manager) === null || _this$manager === void 0 || _this$manager.registerMutations(pendingMutations);\n }\n (_this$mutationObserve3 = this.mutationObserver) === null || _this$mutationObserve3 === void 0 || _this$mutationObserve3.disconnect();\n (_this$manager2 = this.manager) === null || _this$manager2 === void 0 || _this$manager2.restoreDOM();\n return null;\n }\n componentDidUpdate() {\n var _this$manager3;\n (_this$manager3 = this.manager) === null || _this$manager3 === void 0 || _this$manager3.clear();\n this.observe();\n }\n componentWillUnmount() {\n var _this$mutationObserve4;\n (_this$mutationObserve4 = this.mutationObserver) === null || _this$mutationObserve4 === void 0 || _this$mutationObserve4.disconnect();\n }\n render() {\n return this.props.children;\n }\n}\n_defineProperty(RestoreDOMComponent, \"contextType\", EditorContext);\nvar RestoreDOM = IS_ANDROID ? RestoreDOMComponent : _ref => {\n var {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n};\n\n/**\n * A React context for sharing the `composing` state of the editor.\n */\nvar ComposingContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `composing` state of the editor.\n */\nvar useComposing = () => {\n return useContext(ComposingContext);\n};\n\nvar _excluded$1 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderChunk\", \"renderLeaf\", \"renderText\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\", \"disableDefaultStyles\"],\n _excluded2 = [\"text\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props));\n/**\n * Editable.\n */\nvar Editable = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var defaultRenderPlaceholder = useCallback(props => /*#__PURE__*/React.createElement(DefaultPlaceholder, _objectSpread({}, props)), []);\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderChunk,\n renderLeaf,\n renderText,\n renderPlaceholder = defaultRenderPlaceholder,\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style: userStyle = {},\n as: Component = 'div',\n disableDefaultStyles = false\n } = props,\n attributes = _objectWithoutProperties(props, _excluded$1);\n var editor = useSlate();\n // Rerender editor when composition status changed\n var [isComposing, setIsComposing] = useState(false);\n var ref = useRef(null);\n var deferredOperations = useRef([]);\n var [placeholderHeight, setPlaceholderHeight] = useState();\n var processing = useRef(false);\n var {\n onUserInput,\n receivedUserInput\n } = useTrackUserInput();\n var [, forceRender] = useReducer(s => s + 1, 0);\n EDITOR_TO_FORCE_RENDER.set(editor, forceRender);\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly);\n // Keep track of some state for the event handler logic.\n var state = useMemo(() => ({\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null,\n hasMarkPlaceholder: false\n }), []);\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n //\n // If this stops working in Firefox, make sure nothing is causing this\n // component to re-render during the initial mount. If the DOM selection is\n // set by `useIsomorphicLayoutEffect` before `onDOMSelectionChange` updates\n // `editor.selection`, the DOM selection can be removed accidentally.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n /**\n * The AndroidInputManager object has a cyclical dependency on onDOMSelectionChange\n *\n * It is defined as a reference to simplify hook dependencies and clarify that\n * it needs to be initialized.\n */\n var androidInputManagerRef = useRef();\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n var onDOMSelectionChange = useMemo(() => throttle(() => {\n if (IS_NODE_MAP_DIRTY.get(editor)) {\n onDOMSelectionChange();\n return;\n }\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n if (!processing.current && IS_WEBKIT && root instanceof ShadowRoot) {\n processing.current = true;\n var active = getActiveElement();\n if (active) {\n document.execCommand('indent');\n } else {\n Transforms.deselect(editor);\n }\n processing.current = false;\n return;\n }\n var androidInputManager = androidInputManagerRef.current;\n if ((IS_ANDROID || !ReactEditor.isComposing(editor)) && (!state.isUpdatingSelection || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing()) && !state.isDraggingInternally) {\n var _root = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = _root;\n var _el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = getSelection(_root);\n if (activeElement === _el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = ReactEditor.hasEditableTarget(editor, anchorNode) || ReactEditor.isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeInEditor = ReactEditor.hasTarget(editor, focusNode);\n if (anchorNodeSelectable && focusNodeInEditor) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n if (range) {\n if (!ReactEditor.isComposing(editor) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.hasPendingChanges()) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing())) {\n Transforms.select(editor, range);\n } else {\n androidInputManager === null || androidInputManager === void 0 || androidInputManager.handleUserSelect(range);\n }\n }\n }\n // Deselect the editor if the dom selection is not selectable in readonly mode\n if (readOnly && (!anchorNodeSelectable || !focusNodeInEditor)) {\n Transforms.deselect(editor);\n }\n }\n }, 100), [editor, readOnly, state]);\n var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n androidInputManagerRef.current = useAndroidInputManager({\n node: ref,\n onDOMSelectionChange,\n scheduleOnDOMSelectionChange\n });\n useIsomorphicLayoutEffect(() => {\n var _androidInputManagerR, _androidInputManagerR2;\n // Update element-related weak maps with the DOM element ref.\n var window;\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n // Make sure the DOM selection state is in sync.\n var {\n selection\n } = editor;\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = getSelection(root);\n if (!domSelection || !ReactEditor.isFocused(editor) || (_androidInputManagerR = androidInputManagerRef.current) !== null && _androidInputManagerR !== void 0 && _androidInputManagerR.hasPendingAction()) {\n return;\n }\n var setDomSelection = forceChange => {\n var hasDomSelection = domSelection.type !== 'None';\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return;\n }\n // Get anchorNode and focusNode\n var focusNode = domSelection.focusNode;\n var anchorNode;\n // COMPAT: In firefox the normal selection way does not work\n // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n if (IS_FIREFOX && domSelection.rangeCount > 1) {\n var firstRange = domSelection.getRangeAt(0);\n var lastRange = domSelection.getRangeAt(domSelection.rangeCount - 1);\n // Right to left\n if (firstRange.startContainer === focusNode) {\n anchorNode = lastRange.endContainer;\n } else {\n // Left to right\n anchorNode = firstRange.startContainer;\n }\n } else {\n anchorNode = domSelection.anchorNode;\n }\n // verify that the dom selection is in the editor\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(anchorNode) && editorElement.contains(focusNode)) {\n hasDomSelectionInEditor = true;\n }\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (hasDomSelection && hasDomSelectionInEditor && selection && !forceChange) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n var _anchorNode;\n if (!state.hasMarkPlaceholder) {\n return;\n }\n // Ensure selection is inside the mark placeholder\n if ((_anchorNode = anchorNode) !== null && _anchorNode !== void 0 && (_anchorNode = _anchorNode.parentElement) !== null && _anchorNode !== void 0 && _anchorNode.hasAttribute('data-slate-mark-placeholder')) {\n return;\n }\n }\n }\n // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true\n });\n return;\n }\n // Otherwise the DOM selection is out of sync, so update it.\n state.isUpdatingSelection = true;\n var newDomRange = null;\n try {\n newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n } catch (e) {\n // Ignore, dom and state might be out of sync\n }\n if (newDomRange) {\n if (ReactEditor.isComposing(editor) && !IS_ANDROID) {\n domSelection.collapseToEnd();\n } else if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n scrollSelectionIntoView(editor, newDomRange);\n } else {\n domSelection.removeAllRanges();\n }\n return newDomRange;\n };\n // In firefox if there is more then 1 range and we call setDomSelection we remove the ability to select more cells in a table\n if (domSelection.rangeCount <= 1) {\n setDomSelection();\n }\n var ensureSelection = ((_androidInputManagerR2 = androidInputManagerRef.current) === null || _androidInputManagerR2 === void 0 ? void 0 : _androidInputManagerR2.isFlushing()) === 'action';\n if (!IS_ANDROID || !ensureSelection) {\n setTimeout(() => {\n state.isUpdatingSelection = false;\n });\n return;\n }\n var timeoutId = null;\n var animationFrameId = requestAnimationFrame(() => {\n if (ensureSelection) {\n var ensureDomSelection = forceChange => {\n try {\n var el = ReactEditor.toDOMNode(editor, editor);\n el.focus();\n setDomSelection(forceChange);\n } catch (e) {\n // Ignore, dom and state might be out of sync\n }\n };\n // Compat: Android IMEs try to force their selection by manually re-applying it even after we set it.\n // This essentially would make setting the slate selection during an update meaningless, so we force it\n // again here. We can't only do it in the setTimeout after the animation frame since that would cause a\n // visible flicker.\n ensureDomSelection();\n timeoutId = setTimeout(() => {\n // COMPAT: While setting the selection in an animation frame visually correctly sets the selection,\n // it doesn't update GBoards spellchecker state. We have to manually trigger a selection change after\n // the animation frame to ensure it displays the correct state.\n ensureDomSelection(true);\n state.isUpdatingSelection = false;\n });\n }\n });\n return () => {\n cancelAnimationFrame(animationFrameId);\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n var onDOMBeforeInput = useCallback(event => {\n handleNativeHistoryEvents(editor, event);\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n if (processing !== null && processing !== void 0 && processing.current && IS_WEBKIT && root instanceof ShadowRoot) {\n var ranges = event.getTargetRanges();\n var range = ranges[0];\n var newRange = new window.Range();\n newRange.setStart(range.startContainer, range.startOffset);\n newRange.setEnd(range.endContainer, range.endOffset);\n // Translate the DOM Range into a Slate Range\n var slateRange = ReactEditor.toSlateRange(editor, newRange, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, slateRange);\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n onUserInput();\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n var _EDITOR_TO_USER_SELEC;\n // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.\n if (androidInputManagerRef.current) {\n return androidInputManagerRef.current.handleDOMBeforeInput(event);\n }\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n var {\n selection\n } = editor;\n var {\n inputType: type\n } = event;\n var data = event.dataTransfer || event.data || undefined;\n var isCompositionChange = type === 'insertCompositionText' || type === 'deleteCompositionText';\n // COMPAT: use composition change events as a hint to where we should insert\n // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038\n if (isCompositionChange && ReactEditor.isComposing(editor)) {\n return;\n }\n var native = false;\n if (type === 'insertText' && selection && Range.isCollapsed(selection) &&\n // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) &&\n // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0) {\n native = true;\n // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n if (editor.marks) {\n native = false;\n }\n // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint)\n if (!IS_NODE_MAP_DIRTY.get(editor)) {\n var _node$parentElement, _window$getComputedSt;\n // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of anchor nodes.\n var {\n anchor\n } = selection;\n var [node, offset] = ReactEditor.toDOMPoint(editor, anchor);\n var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest('a');\n var _window = ReactEditor.getWindow(editor);\n if (native && anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n var _lastText$textContent;\n // Find the last text node inside the anchor.\n var lastText = _window === null || _window === void 0 ? void 0 : _window.document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();\n if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset) {\n native = false;\n }\n }\n // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'\n // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n if (native && node.parentElement && (_window === null || _window === void 0 || (_window$getComputedSt = _window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {\n var block = Editor.above(editor, {\n at: anchor.path,\n match: n => Element$1.isElement(n) && Editor.isBlock(editor, n)\n });\n if (block && Node.string(block[0]).includes('\\t')) {\n native = false;\n }\n }\n }\n }\n // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint via ReactEditor.toSlateRange)\n if ((!type.startsWith('delete') || type.startsWith('deleteBy')) && !IS_NODE_MAP_DIRTY.get(editor)) {\n var [targetRange] = event.getTargetRanges();\n if (targetRange) {\n var _range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false\n });\n if (!selection || !Range.equals(selection, _range)) {\n native = false;\n var selectionRef = !isCompositionChange && editor.selection && Editor.rangeRef(editor, editor.selection);\n Transforms.select(editor, _range);\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef);\n }\n }\n }\n }\n // Composition change types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n if (isCompositionChange) {\n return;\n }\n if (!native) {\n event.preventDefault();\n }\n // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n if (selection && Range.isExpanded(selection) && type.startsWith('delete')) {\n var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n Editor.deleteFragment(editor, {\n direction\n });\n return;\n }\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag':\n {\n Editor.deleteFragment(editor);\n break;\n }\n case 'deleteContent':\n case 'deleteContentForward':\n {\n Editor.deleteForward(editor);\n break;\n }\n case 'deleteContentBackward':\n {\n Editor.deleteBackward(editor);\n break;\n }\n case 'deleteEntireSoftLine':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteHardLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n break;\n }\n case 'deleteSoftLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteHardLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'block'\n });\n break;\n }\n case 'deleteSoftLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n case 'deleteWordBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n break;\n }\n case 'deleteWordForward':\n {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n break;\n }\n case 'insertLineBreak':\n Editor.insertSoftBreak(editor);\n break;\n case 'insertParagraph':\n {\n Editor.insertBreak(editor);\n break;\n }\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n }\n }\n // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {\n ReactEditor.insertData(editor, data);\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() => Editor.insertText(editor, data));\n } else {\n Editor.insertText(editor, data);\n }\n }\n break;\n }\n }\n // Restore the actual user section if nothing manually set it.\n var toRestore = (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n if (toRestore && (!editor.selection || !Range.equals(editor.selection, toRestore))) {\n Transforms.select(editor, toRestore);\n }\n }\n }, [editor, onDOMSelectionChange, onUserInput, propsOnDOMBeforeInput, readOnly, scheduleOnDOMSelectionChange]);\n var callbackRef = useCallback(node => {\n if (node == null) {\n onDOMSelectionChange.cancel();\n scheduleOnDOMSelectionChange.cancel();\n EDITOR_TO_ELEMENT.delete(editor);\n NODE_TO_ELEMENT.delete(editor);\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput);\n }\n } else {\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n if (HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n node.addEventListener('beforeinput', onDOMBeforeInput);\n }\n }\n ref.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n }, [onDOMSelectionChange, scheduleOnDOMSelectionChange, editor, onDOMBeforeInput, forwardedRef]);\n useIsomorphicLayoutEffect(() => {\n var window = ReactEditor.getWindow(editor);\n // COMPAT: In Chrome, `selectionchange` events can fire when <input> and\n // <textarea> elements are appended to the DOM, causing\n // `editor.selection` to be overwritten in some circumstances.\n // (2025/01/16) https://issues.chromium.org/issues/389368412\n var onSelectionChange = _ref => {\n var {\n target\n } = _ref;\n var targetElement = target instanceof HTMLElement ? target : null;\n var targetTagName = targetElement === null || targetElement === void 0 ? void 0 : targetElement.tagName;\n if (targetTagName === 'INPUT' || targetTagName === 'TEXTAREA') {\n return;\n }\n scheduleOnDOMSelectionChange();\n };\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's\n // a leaky polyfill that only fires on keypresses or clicks. Instead, we\n // want to fire for any change to the selection inside the editor.\n // (2019/11/04) https://github.com/facebook/react/issues/5785\n window.document.addEventListener('selectionchange', onSelectionChange);\n // Listen for dragend and drop globally. In Firefox, if a drop handler\n // initiates an operation that causes the originally dragged element to\n // unmount, that element will not emit a dragend event. (2024/06/21)\n var stoppedDragging = () => {\n state.isDraggingInternally = false;\n };\n window.document.addEventListener('dragend', stoppedDragging);\n window.document.addEventListener('drop', stoppedDragging);\n return () => {\n window.document.removeEventListener('selectionchange', onSelectionChange);\n window.document.removeEventListener('dragend', stoppedDragging);\n window.document.removeEventListener('drop', stoppedDragging);\n };\n }, [scheduleOnDOMSelectionChange, state]);\n var decorations = decorate([editor, []]);\n var decorateContext = useDecorateContext(decorate);\n var showPlaceholder = placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing;\n var placeHolderResizeHandler = useCallback(placeholderEl => {\n if (placeholderEl && showPlaceholder) {\n var _placeholderEl$getBou;\n setPlaceholderHeight((_placeholderEl$getBou = placeholderEl.getBoundingClientRect()) === null || _placeholderEl$getBou === void 0 ? void 0 : _placeholderEl$getBou.height);\n } else {\n setPlaceholderHeight(undefined);\n }\n }, [showPlaceholder]);\n if (showPlaceholder) {\n var start = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n onPlaceholderResize: placeHolderResizeHandler,\n anchor: start,\n focus: start\n });\n }\n var {\n marks\n } = editor;\n state.hasMarkPlaceholder = false;\n if (editor.selection && Range.isCollapsed(editor.selection) && marks) {\n var {\n anchor\n } = editor.selection;\n var leaf = Node.leaf(editor, anchor.path);\n var rest = _objectWithoutProperties(leaf, _excluded2);\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (!Text$1.equals(leaf, marks, {\n loose: true\n })) {\n state.hasMarkPlaceholder = true;\n var unset = Object.fromEntries(Object.keys(rest).map(mark => [mark, null]));\n decorations.push(_objectSpread(_objectSpread(_objectSpread({\n [MARK_PLACEHOLDER_SYMBOL]: true\n }, unset), marks), {}, {\n anchor,\n focus: anchor\n }));\n }\n }\n // Update EDITOR_TO_MARK_PLACEHOLDER_MARKS in setTimeout useEffect to ensure we don't set it\n // before we receive the composition end event.\n useEffect(() => {\n setTimeout(() => {\n var {\n selection\n } = editor;\n if (selection) {\n var {\n anchor: _anchor\n } = selection;\n var _text = Node.leaf(editor, _anchor.path);\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (marks && !Text$1.equals(_text, marks, {\n loose: true\n })) {\n EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks);\n return;\n }\n }\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n });\n });\n useFlushDeferredSelectorsOnRender();\n return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /*#__PURE__*/React.createElement(ComposingContext.Provider, {\n value: isComposing\n }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n value: decorateContext\n }, /*#__PURE__*/React.createElement(RestoreDOM, {\n node: ref,\n receivedUserInput: receivedUserInput\n }, /*#__PURE__*/React.createElement(Component, _objectSpread(_objectSpread({\n role: readOnly ? undefined : 'textbox',\n \"aria-multiline\": readOnly ? undefined : true\n }, attributes), {}, {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n // have to use hacks to make these replacement-based features work.\n // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n // mismatch warning app moves to browser. Pass-through consumer props when\n // not CAN_USE_DOM (SSR) and default to falsy value\n spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',\n autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n // explicitly set this\n contentEditable: !readOnly,\n // in some cases, a decoration needs access to the range / selection to decorate a text node,\n // then you will select the whole text node when you select part the of text\n // this magic zIndex=\"-1\" will fix it\n zindex: -1,\n suppressContentEditableWarning: true,\n ref: callbackRef,\n style: _objectSpread(_objectSpread({}, disableDefaultStyles ? {} : _objectSpread({\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, placeholderHeight ? {\n minHeight: placeholderHeight\n } : {})), userStyle),\n onBeforeInput: useCallback(event => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && ReactEditor.hasSelectableTarget(editor, event.target)) {\n event.preventDefault();\n if (!ReactEditor.isComposing(editor)) {\n var _text2 = event.data;\n Editor.insertText(editor, _text2);\n }\n }\n }, [attributes.onBeforeInput, editor, readOnly]),\n onInput: useCallback(event => {\n if (isEventHandled(event, attributes.onInput)) {\n return;\n }\n if (androidInputManagerRef.current) {\n androidInputManagerRef.current.handleInput();\n return;\n }\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (var op of deferredOperations.current) {\n op();\n }\n deferredOperations.current = [];\n // COMPAT: Since `beforeinput` doesn't fully `preventDefault`,\n // there's a chance that content might be placed in the browser's undo stack.\n // This means undo can be triggered even when the div is not focused,\n // and it only triggers the input event for the node. (2024/10/09)\n if (!ReactEditor.isFocused(editor)) {\n handleNativeHistoryEvents(editor, event.nativeEvent);\n }\n }, [attributes.onInput, editor]),\n onBlur: useCallback(event => {\n if (readOnly || state.isUpdatingSelection || !ReactEditor.hasSelectableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n if (relatedTarget === el) {\n return;\n }\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n return;\n }\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element$1.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n if (IS_WEBKIT) {\n var domSelection = getSelection(root);\n domSelection === null || domSelection === void 0 || domSelection.removeAllRanges();\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, state.isUpdatingSelection, state.latestElement, editor, attributes.onBlur]),\n onClick: useCallback(event => {\n if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (!Editor.hasPath(editor, path) || Node.get(editor, path) !== node) {\n return;\n }\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n var blockPath = path;\n if (!(Element$1.isElement(node) && Editor.isBlock(editor, node))) {\n var _block$;\n var block = Editor.above(editor, {\n match: n => Element$1.isElement(n) && Editor.isBlock(editor, n),\n at: path\n });\n blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);\n }\n var range = Editor.range(editor, blockPath);\n Transforms.select(editor, range);\n return;\n }\n if (readOnly) {\n return;\n }\n var _start = Editor.start(editor, path);\n var end = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var _range2 = Editor.range(editor, _start);\n Transforms.select(editor, _range2);\n }\n }\n }, [editor, attributes.onClick, readOnly]),\n onCompositionEnd: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n var _androidInputManagerR3;\n if (ReactEditor.isComposing(editor)) {\n Promise.resolve().then(() => {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n });\n }\n (_androidInputManagerR3 = androidInputManagerRef.current) === null || _androidInputManagerR3 === void 0 || _androidInputManagerR3.handleCompositionEnd(event);\n if (isEventHandled(event, attributes.onCompositionEnd) || IS_ANDROID) {\n return;\n }\n // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n if (!IS_WEBKIT && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n var placeholderMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor);\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);\n // Ensure we insert text with the marks the user was actually seeing\n if (placeholderMarks !== undefined) {\n EDITOR_TO_USER_MARKS.set(editor, editor.marks);\n editor.marks = placeholderMarks;\n }\n Editor.insertText(editor, event.data);\n var userMarks = EDITOR_TO_USER_MARKS.get(editor);\n EDITOR_TO_USER_MARKS.delete(editor);\n if (userMarks !== undefined) {\n editor.marks = userMarks;\n }\n }\n }\n }, [attributes.onCompositionEnd, editor]),\n onCompositionUpdate: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true);\n IS_COMPOSING.set(editor, true);\n }\n }\n }, [attributes.onCompositionUpdate, editor]),\n onCompositionStart: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n var _androidInputManagerR4;\n (_androidInputManagerR4 = androidInputManagerRef.current) === null || _androidInputManagerR4 === void 0 || _androidInputManagerR4.handleCompositionStart(event);\n if (isEventHandled(event, attributes.onCompositionStart) || IS_ANDROID) {\n return;\n }\n setIsComposing(true);\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n return;\n }\n }\n }, [attributes.onCompositionStart, editor]),\n onCopy: useCallback(event => {\n if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy) && !isDOMEventTargetInput(event)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n }\n }, [attributes.onCopy, editor]),\n onCut: useCallback(event => {\n if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut) && !isDOMEventTargetInput(event)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, editor, attributes.onCut]),\n onDragOver: useCallback(event => {\n if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n var node = ReactEditor.toSlateNode(editor, event.target);\n if (Element$1.isElement(node) && Editor.isVoid(editor, node)) {\n event.preventDefault();\n }\n }\n }, [attributes.onDragOver, editor]),\n onDragStart: useCallback(event => {\n if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n var voidMatch = Element$1.isElement(node) && Editor.isVoid(editor, node) || Editor.void(editor, {\n at: path,\n voids: true\n });\n // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n if (voidMatch) {\n var range = Editor.range(editor, path);\n Transforms.select(editor, range);\n }\n state.isDraggingInternally = true;\n ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');\n }\n }, [readOnly, editor, attributes.onDragStart, state]),\n onDrop: useCallback(event => {\n if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n event.preventDefault();\n // Keep a reference to the dragged range before updating selection\n var draggedRange = editor.selection;\n // Find the range where the drop happened\n var range = ReactEditor.findEventRange(editor, event);\n var data = event.dataTransfer;\n Transforms.select(editor, range);\n if (state.isDraggingInternally) {\n if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n at: range,\n voids: true\n })) {\n Transforms.delete(editor, {\n at: draggedRange\n });\n }\n }\n ReactEditor.insertData(editor, data);\n // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n }\n }, [readOnly, editor, attributes.onDrop, state]),\n onDragEnd: useCallback(event => {\n if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && ReactEditor.hasTarget(editor, event.target)) {\n attributes.onDragEnd(event);\n }\n }, [readOnly, state, attributes, editor]),\n onFocus: useCallback(event => {\n if (!readOnly && !state.isUpdatingSelection && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root.activeElement;\n // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target !== el) {\n el.focus();\n return;\n }\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, state, editor, attributes.onFocus]),\n onKeyDown: useCallback(event => {\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target)) {\n var _androidInputManagerR5;\n (_androidInputManagerR5 = androidInputManagerRef.current) === null || _androidInputManagerR5 === void 0 || _androidInputManagerR5.handleKeyDown(event);\n var {\n nativeEvent\n } = event;\n // COMPAT: The composition end event isn't fired reliably in all browsers,\n // so we sometimes might end up stuck in a composition state even though we\n // aren't composing any more.\n if (ReactEditor.isComposing(editor) && nativeEvent.isComposing === false) {\n IS_COMPOSING.set(editor, false);\n setIsComposing(false);\n }\n if (isEventHandled(event, attributes.onKeyDown) || ReactEditor.isComposing(editor)) {\n return;\n }\n var {\n selection\n } = editor;\n var element = editor.children[selection !== null ? selection.focus.path[0] : 0];\n var isRTL = getDirection(Node.string(element)) === 'rtl';\n // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault();\n var maybeHistoryEditor = editor;\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo();\n }\n return;\n }\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault();\n var _maybeHistoryEditor = editor;\n if (typeof _maybeHistoryEditor.undo === 'function') {\n _maybeHistoryEditor.undo();\n }\n return;\n }\n // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n reverse: true\n });\n return;\n }\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line'\n });\n return;\n }\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true\n });\n return;\n }\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus'\n });\n return;\n }\n // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: !isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'end' : 'start'\n });\n }\n return;\n }\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'start' : 'end'\n });\n }\n return;\n }\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n Transforms.move(editor, {\n unit: 'word',\n reverse: !isRTL\n });\n return;\n }\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n Transforms.move(editor, {\n unit: 'word',\n reverse: isRTL\n });\n return;\n }\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n event.preventDefault();\n return;\n }\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault();\n Editor.insertSoftBreak(editor);\n return;\n }\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault();\n Editor.insertBreak(editor);\n return;\n }\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n }\n return;\n }\n } else {\n if (IS_CHROME || IS_WEBKIT) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n var currentNode = Node.parent(editor, selection.anchor.path);\n if (Element$1.isElement(currentNode) && Editor.isVoid(editor, currentNode) && (Editor.isInline(editor, currentNode) || Editor.isBlock(editor, currentNode))) {\n event.preventDefault();\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n return;\n }\n }\n }\n }\n }\n }, [readOnly, editor, attributes.onKeyDown]),\n onPaste: useCallback(event => {\n if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n // COMPAT: Safari InputEvents generated by pasting won't include\n // application/x-slate-fragment items, so use the\n // ClipboardEvent here. (2023/03/15)\n if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent) || IS_WEBKIT) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }\n }, [readOnly, editor, attributes.onPaste])\n }), /*#__PURE__*/React.createElement(Children, {\n decorations: decorations,\n node: editor,\n renderElement: renderElement,\n renderChunk: renderChunk,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n renderText: renderText\n }))))));\n});\n/**\n * The default placeholder element\n */\nvar DefaultPlaceholder = _ref2 => {\n var {\n attributes,\n children\n } = _ref2;\n return (\n /*#__PURE__*/\n // COMPAT: Artificially add a line-break to the end on the placeholder element\n // to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter\n React.createElement(\"span\", _objectSpread({}, attributes), children, IS_ANDROID && /*#__PURE__*/React.createElement(\"br\", null))\n );\n};\n/**\n * A default memoized decorate function.\n */\nvar defaultDecorate = () => [];\n/**\n * A default implement to scroll dom range into view.\n */\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (domRange.getBoundingClientRect && (!editor.selection || editor.selection && Range.isCollapsed(editor.selection))) {\n var leafEl = domRange.startContainer.parentElement;\n // COMPAT: In Chrome, domRange.getBoundingClientRect() can return zero dimensions for valid ranges (e.g. line breaks).\n // When this happens, do not scroll like most editors do.\n var domRect = domRange.getBoundingClientRect();\n var isZeroDimensionRect = domRect.width === 0 && domRect.height === 0 && domRect.x === 0 && domRect.y === 0;\n if (isZeroDimensionRect) {\n var leafRect = leafEl.getBoundingClientRect();\n var leafHasDimensions = leafRect.width > 0 || leafRect.height > 0;\n if (leafHasDimensions) {\n return;\n }\n }\n // Default behavior: use domRange's getBoundingClientRect\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed'\n });\n // @ts-expect-error an unorthodox delete D:\n delete leafEl.getBoundingClientRect;\n }\n};\n/**\n * Check if an event is overrided by a handler.\n */\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isDefaultPrevented() || event.isPropagationStopped();\n};\n/**\n * Check if the event's target is an input element\n */\nvar isDOMEventTargetInput = event => {\n return isDOMNode(event.target) && (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement);\n};\n/**\n * Check if a DOM event is overrided by a handler.\n */\nvar isDOMEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.defaultPrevented;\n};\nvar handleNativeHistoryEvents = (editor, event) => {\n var maybeHistoryEditor = editor;\n if (event.inputType === 'historyUndo' && typeof maybeHistoryEditor.undo === 'function') {\n maybeHistoryEditor.undo();\n return;\n }\n if (event.inputType === 'historyRedo' && typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo();\n return;\n }\n};\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\nvar FocusedContext = /*#__PURE__*/createContext(false);\n/**\n * Get the current `focused` state of the editor.\n */\nvar useFocused = () => {\n return useContext(FocusedContext);\n};\n\nvar REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10);\n\nvar _excluded = [\"editor\", \"children\", \"onChange\", \"onSelectionChange\", \"onValueChange\", \"initialValue\"];\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\nvar Slate = props => {\n var {\n editor,\n children,\n onChange,\n onSelectionChange,\n onValueChange,\n initialValue\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n // Run once on first mount, but before `useEffect` or render\n React.useState(() => {\n if (!Node.isNodeList(initialValue)) {\n throw new Error(\"[Slate] initialValue is invalid! Expected a list of elements but got: \".concat(Scrubber.stringify(initialValue)));\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\"[Slate] editor is invalid! You passed: \".concat(Scrubber.stringify(editor)));\n }\n editor.children = initialValue;\n Object.assign(editor, rest);\n });\n var {\n selectorContext,\n onChange: handleSelectorChange\n } = useSelectorContext();\n var onContextChange = useCallback(options => {\n var _options$operation;\n if (onChange) {\n onChange(editor.children);\n }\n switch (options === null || options === void 0 || (_options$operation = options.operation) === null || _options$operation === void 0 ? void 0 : _options$operation.type) {\n case 'set_selection':\n onSelectionChange === null || onSelectionChange === void 0 || onSelectionChange(editor.selection);\n break;\n default:\n onValueChange === null || onValueChange === void 0 || onValueChange(editor.children);\n }\n handleSelectorChange();\n }, [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange]);\n useEffect(() => {\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {});\n };\n }, [editor, onContextChange]);\n var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor));\n }, [editor]);\n useIsomorphicLayoutEffect(() => {\n var fn = () => setIsFocused(ReactEditor.isFocused(editor));\n if (REACT_MAJOR_VERSION >= 17) {\n // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n // Therefore in order for <Editable />'s handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n document.addEventListener('focusin', fn);\n document.addEventListener('focusout', fn);\n return () => {\n document.removeEventListener('focusin', fn);\n document.removeEventListener('focusout', fn);\n };\n } else {\n document.addEventListener('focus', fn, true);\n document.addEventListener('blur', fn, true);\n return () => {\n document.removeEventListener('focus', fn, true);\n document.removeEventListener('blur', fn, true);\n };\n }\n }, []);\n return /*#__PURE__*/React.createElement(SlateSelectorContext.Provider, {\n value: selectorContext\n }, /*#__PURE__*/React.createElement(EditorContext.Provider, {\n value: editor\n }, /*#__PURE__*/React.createElement(FocusedContext.Provider, {\n value: isFocused\n }, children)));\n};\n\n/**\n * Get the current editor object from the React context.\n * @deprecated Use useSlateStatic instead.\n */\nvar useEditor = () => {\n var editor = useContext(EditorContext);\n if (!editor) {\n throw new Error(\"The `useEditor` hook must be used inside the <Slate> component's context.\");\n }\n return editor;\n};\n\n/**\n * Get the current `selected` state of an element.\n */\nvar useSelected = () => {\n var element = useElementIf();\n // Breaking the rules of hooks is fine here since `!element` will remain true\n // or false for the entire lifetime of the component this hook is called from.\n // TODO: Decide if we want to throw an error instead when calling\n // `useSelected` outside of an element (potentially a breaking change).\n if (!element) return false;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var selector = useCallback(editor => {\n if (!editor.selection) return false;\n var path = ReactEditor.findPath(editor, element);\n var range = Editor.range(editor, path);\n return !!Range.intersection(range, editor.selection);\n }, [element]);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useSlateSelector(selector, undefined, {\n // Defer the selector until after `Editable` has rendered so that the path\n // will be accurate.\n deferred: true\n });\n};\n\n/**\n * Get the current slate selection.\n * Only triggers a rerender when the selection actually changes\n */\nvar useSlateSelection = () => {\n return useSlateSelector(editor => editor.selection, isSelectionEqual);\n};\nvar isSelectionEqual = (a, b) => {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return Range.equals(a, b);\n};\n\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\nvar withReact = function withReact(editor) {\n var clipboardFormatKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x-slate-fragment';\n var e = editor;\n e = withDOM(e, clipboardFormatKey);\n var {\n onChange,\n apply,\n insertText\n } = e;\n e.getChunkSize = () => null;\n if (IS_ANDROID) {\n e.insertText = (text, options) => {\n // COMPAT: Android devices, specifically Samsung devices, experience cursor jumping.\n // This issue occurs when the ⁠insertText function is called immediately after typing.\n // The problem arises because typing schedules a selection change.\n // However, this selection change is only executed after the ⁠insertText function.\n // As a result, the already obsolete selection is applied, leading to incorrect\n // final cursor position.\n EDITOR_TO_PENDING_SELECTION.delete(e);\n return insertText(text, options);\n };\n }\n e.onChange = options => {\n // COMPAT: React < 18 doesn't batch `setState` hook calls, which means\n // that the children and selection can get out of sync for one render\n // pass. So we have to use this unstable API to ensure it batches them.\n // (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n var maybeBatchUpdates = REACT_MAJOR_VERSION < 18 ? ReactDOM.unstable_batchedUpdates : callback => callback();\n maybeBatchUpdates(() => {\n onChange(options);\n });\n };\n // On move_node, if the chunking optimization is enabled for the parent of the\n // node being moved, add the moved node to the movedNodeKeys set of the\n // parent's chunk tree.\n e.apply = operation => {\n if (operation.type === 'move_node') {\n var parent = Node.parent(e, operation.path);\n var chunking = !!e.getChunkSize(parent);\n if (chunking) {\n var node = Node.get(e, operation.path);\n var chunkTree = getChunkTreeForNode(e, parent);\n var key = ReactEditor.findKey(e, node);\n chunkTree.movedNodeKeys.add(key);\n }\n }\n apply(operation);\n };\n return e;\n};\n\nexport { DefaultElement, DefaultLeaf, DefaultPlaceholder, DefaultText, Editable, ReactEditor, Slate, defaultScrollSelectionIntoView, useComposing, useEditor, useElement, useElementIf, useFocused, useReadOnly, useSelected, useSlate, useSlateSelection, useSlateSelector, useSlateStatic, useSlateWithV, withReact };\n//# sourceMappingURL=index.es.js.map\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import escapeHtml from \"escape-html\";\nimport {\n Text,\n Element as SlateElement,\n type Descendant,\n type Node as SlateNode,\n} from \"slate\";\nimport { BLOCK_TAGS, MARK_TAGS } from \"../constants\";\nimport type { CustomElement, CustomText } from \"./types\";\nimport { validSlateStateAdapter } from \"./slate-helpers\";\n\n// Soft line break placeholder character\nconst SOFT_BREAK_PLACEHOLDER = \"\\u200B\\n\";\n\n// Default empty state for the editor\nexport const createEmptyValue = (): Descendant[] => [\n {\n type: \"paragraph\",\n children: [{ text: \"\" }],\n } as CustomElement,\n];\n\n// Serialize Slate value to HTML\nexport const toHTML = (value: Descendant[]): string => {\n return value.map(serializeNode).join(\"\");\n};\n\nconst serializeNode = (node: SlateNode): string => {\n if (Text.isText(node)) {\n const textNode = node as CustomText;\n let string = escapeHtml(textNode.text);\n\n // Apply text formatting\n if (textNode.bold) {\n string = `<strong>${string}</strong>`;\n }\n if (textNode.code) {\n string = `<code>${string}</code>`;\n }\n if (textNode.italic) {\n string = `<em>${string}</em>`;\n }\n if (textNode.underline) {\n string = `<u>${string}</u>`;\n }\n if (textNode.superscript) {\n string = `<sup>${string}</sup>`;\n }\n if (textNode.subscript) {\n string = `<sub>${string}</sub>`;\n }\n if (textNode.strikethrough) {\n string = `<del>${string}</del>`;\n }\n\n // Replace soft line breaks with <br> tags\n string = string.replace(new RegExp(SOFT_BREAK_PLACEHOLDER, \"g\"), \"<br>\");\n\n return string;\n }\n\n const children = node.children.map(serializeNode).join(\"\");\n const element = node as CustomElement;\n\n switch (element.type) {\n case \"block-quote\":\n return `<blockquote>${children}</blockquote>`;\n case \"paragraph\":\n return `<p>${children}</p>`;\n case \"code\":\n return `<pre><code>${children}</code></pre>`;\n case \"bulleted-list\":\n return `<ul>${children}</ul>`;\n case \"numbered-list\":\n return `<ol>${children}</ol>`;\n case \"list-item\":\n return `<li>${children}</li>`;\n case \"heading-one\":\n return `<h1>${children}</h1>`;\n case \"heading-two\":\n return `<h2>${children}</h2>`;\n case \"heading-three\":\n return `<h3>${children}</h3>`;\n case \"heading-four\":\n return `<h4>${children}</h4>`;\n case \"heading-five\":\n return `<h5>${children}</h5>`;\n case \"link\": {\n let hrefAttr = \"\";\n if (element.url) {\n // Sanitize href to prevent XSS\n const sanitizedUrl = sanitizeUrl(element.url);\n hrefAttr = ` href=\"${escapeHtml(sanitizedUrl)}\"`;\n }\n\n let otherAttrsString = \"\";\n if (\n element.htmlAttributes &&\n typeof element.htmlAttributes === \"object\"\n ) {\n for (const [key, value] of Object.entries(element.htmlAttributes)) {\n // Filter out event handlers to prevent XSS\n if (!key.toLowerCase().startsWith(\"on\")) {\n otherAttrsString += ` ${escapeHtml(key)}=\"${escapeHtml(String(value))}\"`;\n }\n }\n }\n\n return `<a${hrefAttr}${otherAttrsString}>${children}</a>`;\n }\n default:\n return children;\n }\n};\n\n// Parse HTML string to Slate value\nexport const fromHTML = (html: string): Descendant[] => {\n if (!html || html.trim() === \"\") {\n return createEmptyValue();\n }\n\n try {\n // Simple HTML parsing - for now just handle basic cases\n if (\n html.includes(\"<p>\") ||\n html.includes(\"<h\") ||\n html.includes(\"<div>\") ||\n html.includes(\"<blockquote>\") ||\n html.includes(\"<ul>\") ||\n html.includes(\"<ol>\")\n ) {\n const document = new DOMParser().parseFromString(html, \"text/html\");\n const body = document.body;\n\n const nodes = Array.from(body.childNodes)\n .map(deserializeNode)\n .filter(Boolean) as Descendant[];\n\n // Use validSlateStateAdapter to ensure all nodes are valid Slate elements\n return validSlateStateAdapter(nodes);\n } else {\n // Simple text content\n return [\n {\n type: \"paragraph\",\n children: [{ text: html }],\n } as CustomElement,\n ];\n }\n } catch (error) {\n console.warn(\"Failed to parse HTML:\", error);\n return createEmptyValue();\n }\n};\n\nconst deserializeNode = (node: Node): Descendant | string | null => {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || \"\";\n // Replace <br> tags with soft line breaks\n return text.replace(/<br\\s*\\/?>/gi, SOFT_BREAK_PLACEHOLDER);\n }\n\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const element = node as Element;\n const tagName = element.tagName.toLowerCase();\n const children = Array.from(element.childNodes)\n .map(deserializeNode)\n .filter(Boolean);\n\n // Handle block elements\n if (tagName in BLOCK_TAGS) {\n const type = BLOCK_TAGS[tagName as keyof typeof BLOCK_TAGS];\n const slateElement: CustomElement = { type, children: [] };\n\n // Special handling for links\n if (type === \"link\") {\n const href = element.getAttribute(\"href\");\n if (href) {\n slateElement.url = href;\n }\n\n // Store other attributes\n const attrs: Record<string, string> = {};\n Array.from(element.attributes).forEach((attr) => {\n if (attr.name !== \"href\" && !attr.name.toLowerCase().startsWith(\"on\")) {\n attrs[attr.name] = attr.value;\n }\n });\n if (Object.keys(attrs).length > 0) {\n slateElement.htmlAttributes = attrs;\n }\n }\n\n // Process children\n slateElement.children = processChildren(children);\n return slateElement;\n }\n\n // Handle inline/mark elements - simplified without jsx\n if (tagName in MARK_TAGS) {\n const markType = MARK_TAGS[tagName as keyof typeof MARK_TAGS];\n const textContent = extractTextFromChildren(children);\n return { text: textContent, [markType]: true } as CustomText;\n }\n\n // Handle spans and other inline elements\n if (tagName === \"span\") {\n const textContent = extractTextFromChildren(children);\n return { text: textContent } as CustomText;\n }\n\n // For unknown elements, just return their text content\n const textContent = extractTextFromChildren(children);\n return { text: textContent } as CustomText;\n};\n\nconst processChildren = (\n children: (Descendant | string | null)[]\n): (CustomText | CustomElement)[] => {\n const processed: (CustomText | CustomElement)[] = [];\n\n for (const child of children) {\n if (typeof child === \"string\") {\n if (child.trim()) {\n processed.push({ text: child });\n }\n } else if (child && Text.isText(child)) {\n processed.push(child as CustomText);\n } else if (child && SlateElement.isElement(child)) {\n // Keep block elements (like li) as elements\n processed.push(child as CustomElement);\n }\n }\n\n // For list containers, ensure we have valid children\n // For other containers, ensure we always have at least one text node\n if (processed.length === 0) {\n processed.push({ text: \"\" });\n }\n\n return processed;\n};\n\nconst extractTextContent = (element: SlateElement): string => {\n return element.children\n .map((child) => {\n if (Text.isText(child)) {\n return child.text;\n } else if (SlateElement.isElement(child)) {\n return extractTextContent(child);\n }\n return \"\";\n })\n .join(\"\");\n};\n\nconst extractTextFromChildren = (\n children: (Descendant | string | null)[]\n): string => {\n return children\n .filter(Boolean)\n .map((child) => {\n if (typeof child === \"string\") {\n return child;\n } else if (child && typeof child === \"object\" && \"text\" in child) {\n return child.text;\n } else if (child && typeof child === \"object\" && \"children\" in child) {\n return extractTextContent(child as SlateElement);\n }\n return String(child || \"\");\n })\n .join(\"\");\n};\n\nconst sanitizeUrl = (url: string): string => {\n const trimmed = String(url).trim().toLowerCase();\n if (\n trimmed.startsWith(\"javascript:\") ||\n trimmed.startsWith(\"data:\") ||\n trimmed.startsWith(\"vbscript:\")\n ) {\n return \"#\";\n }\n return String(url);\n};\n","import { type ReactElement } from \"react\";\nimport {\n Editor,\n Transforms,\n Element as SlateElement,\n Range,\n Text,\n type Editor as SlateEditor,\n} from \"slate\";\nimport {\n ReactEditor,\n type RenderElementProps,\n type RenderLeafProps,\n} from \"slate-react\";\nimport type { CustomElement, CustomText, ElementFormat } from \"./types\";\nimport { fromHTML, createEmptyValue } from \"./html-serialization\";\nimport type { Descendant } from \"slate\";\n\n// Validate and normalize Slate state\nexport const validSlateStateAdapter = (value: unknown): Descendant[] => {\n if (!Array.isArray(value)) {\n return createEmptyValue();\n }\n\n if (value.length === 0) {\n return createEmptyValue();\n }\n\n return value.map((node) => {\n if (!SlateElement.isElement(node)) {\n return {\n type: \"paragraph\",\n children: [{ text: String(node) }],\n } as CustomElement;\n }\n\n if (!node.children || node.children.length === 0) {\n return { ...node, children: [{ text: \"\" }] } as CustomElement;\n }\n\n return node as CustomElement;\n });\n};\n\n// Simple URL validation function\nconst isUrl = (text: string): boolean => {\n try {\n const url = new URL(text);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n};\n\nconst LIST_TYPES = [\"bulleted-list\", \"numbered-list\"];\n\n// Define valid mark formats that can be checked\nconst VALID_MARK_FORMATS = [\n \"bold\",\n \"code\",\n \"italic\",\n \"underline\",\n \"superscript\",\n \"subscript\",\n \"strikethrough\",\n] as const;\n\ntype ValidMarkFormat = (typeof VALID_MARK_FORMATS)[number];\n\n// Type guard to check if a format is a valid mark format\nconst isValidMarkFormat = (format: string): format is ValidMarkFormat => {\n return VALID_MARK_FORMATS.includes(format as ValidMarkFormat);\n};\n\n// Type-safe function to check if a mark is active on a text node\nconst hasMarkFormat = (textNode: CustomText, format: string): boolean => {\n if (!isValidMarkFormat(format)) {\n return false;\n }\n return textNode[format] === true;\n};\n\n// Check if a mark is currently active\nexport const isMarkActive = (editor: SlateEditor, format: string): boolean => {\n const { selection } = editor;\n\n // For collapsed selection (cursor position), use the standard approach\n if (!selection || Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n if (marks && isValidMarkFormat(format)) {\n return (marks as CustomText)[format] === true;\n }\n\n // If no selection/marks (e.g., programmatically set content), check first text node\n if (!selection && editor.children.length > 0) {\n const firstNode = editor.children[0] as CustomElement;\n if (firstNode.children && firstNode.children.length > 0) {\n const firstText = firstNode.children[0];\n if (Text.isText(firstText) && isValidMarkFormat(format)) {\n return (firstText as CustomText)[format] === true;\n }\n }\n }\n\n return false;\n }\n\n // For text selection, check if any selected text has the mark\n // This provides better mixed formatting detection\n try {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: selection,\n match: (n) => Text.isText(n),\n })\n );\n\n if (textNodes.length === 0) {\n const marks = Editor.marks(editor);\n if (!marks || !isValidMarkFormat(format)) {\n return false;\n }\n return (marks as CustomText)[format] === true;\n }\n\n // Show as active only if all selected text has this mark\n // Prioritizes unformatted text - if any text is unformatted, button shows inactive\n return textNodes.every(([node]) => {\n const textNode = node as CustomText;\n return hasMarkFormat(textNode, format);\n });\n } catch {\n // Fallback to original approach if node traversal fails\n const marks = Editor.marks(editor);\n if (!marks || !isValidMarkFormat(format)) {\n return false;\n }\n return (marks as CustomText)[format] === true;\n }\n};\n\n// Check if a block type is currently active\nexport const isBlockActive = (\n editor: SlateEditor,\n format: ElementFormat\n): boolean => {\n const { selection } = editor;\n\n // If there's a selection, use it to determine active block\n if (selection) {\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n (n as CustomElement).type === format,\n })\n );\n return !!match;\n }\n\n // If no selection, check the first block in the editor\n // This handles cases where content is set programmatically without focus\n if (editor.children.length > 0) {\n const firstNode = editor.children[0] as CustomElement;\n return firstNode.type === format;\n }\n\n return false;\n};\n\n// Toggle a text mark (bold, italic, etc.)\nexport const toggleMark = (editor: SlateEditor, format: string): void => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\n// Toggle a block type (heading, list, etc.)\nexport const toggleBlock = (\n editor: SlateEditor,\n format: ElementFormat\n): void => {\n const isActive = isBlockActive(editor, format);\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes((n as CustomElement).type),\n split: true,\n });\n\n let newProperties: Partial<CustomElement>;\n if (isActive) {\n newProperties = { type: \"paragraph\" };\n } else if (isList) {\n newProperties = { type: \"list-item\" };\n } else {\n newProperties = { type: format };\n }\n\n Transforms.setNodes<CustomElement>(editor, newProperties);\n\n if (!isActive && isList) {\n const block: CustomElement = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n};\n\n// Focus the editor\nexport const focusEditor = (editor: SlateEditor): void => {\n ReactEditor.focus(editor);\n};\n\n// Reset the editor to a specific value\nexport const resetEditor = (editor: SlateEditor, value: string): void => {\n const newValue = fromHTML(value);\n\n // Clear current content\n Transforms.delete(editor, {\n at: {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n },\n });\n\n // Insert new content\n Transforms.insertNodes(editor, newValue);\n\n // Focus at the start\n Transforms.select(editor, Editor.start(editor, []));\n};\n\n// Link plugin\nexport const withLinks = (editor: SlateEditor): SlateEditor => {\n const { insertData, insertText, isInline } = editor;\n\n editor.isInline = (element: CustomElement) => {\n return element.type === \"link\" ? true : isInline(element);\n };\n\n editor.insertText = (text: string) => {\n if (text && isUrl(text)) {\n wrapLink(editor, text);\n } else {\n insertText(text);\n }\n };\n\n editor.insertData = (data: DataTransfer) => {\n const text = data.getData(\"text/plain\");\n\n if (text && isUrl(text)) {\n wrapLink(editor, text);\n } else {\n insertData(data);\n }\n };\n\n return editor;\n};\n\nconst unwrapLink = (editor: SlateEditor): void => {\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n (n as CustomElement).type === \"link\",\n });\n};\n\nconst wrapLink = (editor: SlateEditor, url: string): void => {\n if (isBlockActive(editor, \"link\")) {\n unwrapLink(editor);\n }\n\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const link: CustomElement = {\n type: \"link\",\n url,\n children: isCollapsed ? [{ text: url }] : [],\n };\n\n if (isCollapsed) {\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n Transforms.collapse(editor, { edge: \"end\" });\n }\n};\n\n// Render element component\nexport const Element = ({\n attributes,\n children,\n element,\n}: RenderElementProps): ReactElement => {\n const customElement = element as CustomElement;\n const style = { textAlign: customElement.align } as React.CSSProperties;\n\n switch (customElement.type) {\n case \"block-quote\":\n return (\n <blockquote style={style} {...attributes}>\n {children}\n </blockquote>\n );\n case \"bulleted-list\":\n return (\n <ul style={style} {...attributes}>\n {children}\n </ul>\n );\n case \"heading-one\":\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n case \"heading-two\":\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n case \"heading-three\":\n return (\n <h3 style={style} {...attributes}>\n {children}\n </h3>\n );\n case \"heading-four\":\n return (\n <h4 style={style} {...attributes}>\n {children}\n </h4>\n );\n case \"heading-five\":\n return (\n <h5 style={style} {...attributes}>\n {children}\n </h5>\n );\n case \"list-item\":\n return (\n <li style={style} {...attributes}>\n {children}\n </li>\n );\n case \"numbered-list\":\n return (\n <ol style={style} {...attributes}>\n {children}\n </ol>\n );\n case \"link\":\n return (\n <a\n {...attributes}\n href={customElement.url}\n rel=\"noopener noreferrer\"\n style={style}\n >\n {children}\n </a>\n );\n default:\n return (\n <p style={style} {...attributes}>\n {children}\n </p>\n );\n }\n};\n\n// Render leaf component\nexport const Leaf = ({\n attributes,\n children,\n leaf,\n}: RenderLeafProps): ReactElement => {\n const customLeaf = leaf as CustomText;\n if (customLeaf.bold) {\n children = <strong>{children}</strong>;\n }\n\n if (customLeaf.code) {\n children = <code>{children}</code>;\n }\n\n if (customLeaf.italic) {\n children = <em>{children}</em>;\n }\n\n if (customLeaf.underline) {\n children = <u>{children}</u>;\n }\n\n if (customLeaf.strikethrough) {\n children = <del>{children}</del>;\n }\n\n if (customLeaf.superscript) {\n children = <sup>{children}</sup>;\n }\n\n if (customLeaf.subscript) {\n children = <sub>{children}</sub>;\n }\n\n return <span {...attributes}>{children}</span>;\n};\n\n// Soft line break handling\nexport const Softbreaker = {\n placeholderCharacter: \"\\u200B\\n\",\n serialize: (string: string): string =>\n string.replace(new RegExp(Softbreaker.placeholderCharacter, \"g\"), \"<br>\"),\n deserialize: (string: string): string =>\n string.replace(/<br\\s*\\/?>/gi, Softbreaker.placeholderCharacter),\n};\n"],"names":["NOTHING","DRAFTABLE","DRAFT_STATE","errors","plugin","thing","data","die","error","args","e","msg","getPrototypeOf","isDraft","value","isDraftable","isPlainObject","isMap","isSet","objectCtorString","proto","Ctor","each","obj","iter","getArchtype","key","entry","index","state","has","prop","set","propOrOldValue","t","is","x","y","target","latest","shallowCopy","base","strict","isPlain","descriptors","keys","i","desc","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","scope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer2","draft","processResult","result","baseDraft","finalize","maybeFreeze","rootScope","path","childValue","finalizeProperty","resultEach","isSet2","parentState","targetObject","rootPath","targetIsSet","res","createProxyProxy","parent","isArray","traps","objectTraps","arrayTraps","revoke","proxy","source","readPropFromProto","peek","prepareCopy","createProxy","getDescriptorFromProto","current2","currentState","markChanged","owner","Immer2","config","recipe","defaultBase","self","base2","hasError","p","ip","patches","inversePatches","current","patch","applyPatchesImpl","currentImpl","copy","immer","produce","PathRef","ref","op","affinity","Path","PointRef","point","Point","RangeRef","Range","DIRTY_PATHS","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","options","reverse","paths","another","common","av","bv","min","as","bs","n","al","bl","list","last","operation","ancestor","_op","_op2","position","_op3","_position","_op4","onp","_typeof","o","_toPrimitive","input","hint","prim","_toPropertyKey","arg","_defineProperty","ownKeys$e","r","_objectSpread$e","insertChildren","xs","_len","newValues","_key","replaceChildren","removeCount","_len2","_key2","removeChildren","modifyDescendant","editor","f","node","Node","slicedPath","modifiedNode","_index","ancestorNode","modifyChildren","Text","Scrubber","modifyLeaf","GeneralTransforms","transformSelection","children","_path","offset","text","before","after","_path2","prevPath","prevIndex","prev","newNode","_path3","newPath","_index2","_node","truePath","newIndex","_path4","_index3","selection","next","preferNext","_path5","_offset","_text","_path6","properties","newProperties","_key3","_key4","_newProperties","_selection","_key5","_path7","_properties","_index4","nextNode","_before","_after","_selection2","_point","_key6","NodeTransforms","nodes","props","element","SelectionTransforms","isObject","isDeepEqual","a","b","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_excluded$4","ownKeys$d","_objectSpread$d","range","anchor","focus","end","intersectionRange","rs","re","ts","te","start","isAfterStart","isBeforeEnd","rest","s1","e1","s2","e2","affinityAnchor","affinityFocus","isCollapsed","isElement","isEditor","isChildrenValid","Element","val","elementVal","elementKey","_excluded$3","_excluded2$3","root","c","child","childPath","Editor","newRoot","nodeEntries","_ref","leaf","_leaf","pass","from","to","visited","nextIndex","_newPath","parentPath","ownKeys$c","_objectSpread$c","Operation","inversePath","inverseNewPath","at","unit","fragment","isNormalizing","fn","prevNode","curNode","Span","ownKeys$b","_objectSpread$b","_scrubber","scrubber","_excluded$2","_excluded2$2","ownKeys$a","_objectSpread$a","loose","omitText","decorations","leaves","dec","mergeDecoration","leafEnd","decorationStart","decorationEnd","merge","length","leafStart","middle","off","_off","currentOffset","item","_start","_end","getDefaultInsertLocation","matchPath","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","CodepointType","right","distance","gb11","gb12Or13","char","code","type","getCodepointType","intersects","endsWithEmojiZWJ","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","remaining","splitByCharacterDistance","isWordCharacter","nextChar","nextRemaining","char1","isLowSurrogate","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","NonBoundaryPairs","endingEmojiZWJ","endingRIs","match","numRIs","TextTransforms","voids","startRef","endRef","Transforms","startPoint","endPoint","ownKeys$9","_objectSpread$9","BATCHING_DIRTY_PATHS","isBatchingDirtyPaths","batchDirtyPaths","update","updateDirtyPaths","newDirtyPaths","transform","oldDirtyPaths","oldDirtyPathKeys","dirtyPaths","dirtyPathKeys","add","apply","_ref2","getDirtyPaths","levels","descendants","ancestors","previousPath","oldAncestors","newAncestors","_ancestor","_p","newParent","resultPath","_ancestors","_levels","nextPath","getFragment","normalizeNode","shouldHaveInlines","currentNode","_child","isLast","isInlineOrText","newChild","_newChild","elementChild","shouldNormalize","iteration","initialDirtyPathsLength","maxIterations","above","mode","firstMatch","ownKeys$8","_objectSpread$8","addMark","parentNode","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","marks","ownKeys$7","_objectSpread$7","d","ownKeys$6","_objectSpread$6","deleteBackward","deleteForward","deleteFragment","direction","edges","ownKeys$5","_objectSpread$5","elementReadOnly","first","ownKeys$4","_objectSpread$4","getVoid","hasBlocks","hasInlines","hasPath","hasTexts","insertBreak","insertNode","insertSoftBreak","ownKeys$3","_objectSpread$3","insertText","isBlock","isEdge","isEmpty","isEnd","isStart","_excluded$1","_excluded2$1","isBackward","_rest","markedVoid","block","blockPath","pointAfterLocation","span","universal","_pass","matches","hit","isLower","emit","normalize","force","getDirtyPathKeys","popDirtyPath","allPaths","allPathKeys","dirtyPath","_","_dirtyPath","_entry","pathRef","pathRefs","refs","depth","edge","firstPath","lastPath","pointRef","pointRefs","positions","isNewBlock","blockText","leafTextRemaining","leafTextOffset","skippedPaths","_loop","hasSkippedAncestor","maybeYield","s","isFirst","calcDistance","_ret","previous","pointBeforeLocation","rangeRef","rangeRefs","ownKeys$2","_objectSpread$2","removeMark","setNormalizing","string","unhangRange","endBlock","skip","withoutNormalizing","shouldMergeNodesRemovePrevNode","deleteText","_Editor$void","_Editor$void2","hanging","furthestVoid","voidPath","opts","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","_point2","_node2","startUnref","endUnref","insertFragment","batchDirty","inlineElementMatch","_inlinePath","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","firstLeafPath","lastLeafPath","shouldInsert","isRoot","starting","starts","middles","ends","inlineMatch","inlinePath","isInlineStart","isInlineEnd","middleRef","splitBlock","collapse","deselect","move","select","ownKeys$1","_objectSpread$1","setPoint","setSelection","oldProps","newProps","k","insertNodes","isAtEnd","batchedOps","liftNodes","parentNodeEntry","toPath","_toPath","splitPath","_toPath2","_excluded","_excluded2","hasSingleChildNest","mergeNodes","commonPath","isPreviousSibling","emptyAncestor","emptyRef","moveNodes","toRef","targets","removeNodes","depths","setNodes","compare","split","splitMode","endAtEndOfNode","startAtStartOfNode","nodeProp","hasChanges","deleteRange","splitNodes","height","always","beforeRef","afterRef","highest","voidMatch","nudge","voidNode","afterPath","siblingHeight","highestPath","lowestPath","_afterRef","unsetNodes","unwrapNodes","ownKeys","_objectSpread","wrapNodes","isAtBlockEdge","blockAbove","roots","commonNodeEntry","commonNode","wrapperPath","wrapper","createEditor","_len3","_len4","_len5","_len6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","_len15","_key15","_len16","_key16","_len17","_key17","_len18","_key18","_len19","_key19","_len20","_key20","_len21","_key21","_len22","_key22","_len23","_key23","_len24","_key24","_len25","_key25","_len26","_key26","_len27","_key27","_len28","_key28","_len29","_key29","_len30","_key30","_len31","_key31","_len32","_key32","_len33","_key33","_len34","_key34","_len35","_key35","_len36","_key36","_len37","_key37","_len38","_key38","_len39","_key39","_len40","_key40","_len41","_key41","_len42","_key42","_len43","_key43","_len44","_key44","_len45","_key45","_len46","_key46","_len47","_key47","_len48","_key48","_len49","_key49","_len50","_key50","_len51","_key51","_len52","_key52","_len53","_key53","_len54","_key54","_len55","_key55","_len56","_key56","_len57","_key57","_len58","_key58","_len59","_key59","_len60","_key60","_len61","_key61","_len62","_key62","_len63","_key63","_len64","_key64","_len65","_key65","_len66","_key66","_len67","_key67","_len68","_key68","_len69","_key69","_len70","_key70","_len71","_key71","_len72","_key72","_len73","_key73","_len74","_key74","_len75","_key75","_len76","_key76","_len77","_key77","direction_1","RTL","LTR","rtl","ltr","isObject_1","freeGlobal","global","_freeGlobal","require$$0","freeSelf","_root","now","now_1","reWhitespace","trimmedEndIndex","_trimmedEndIndex","reTrimStart","baseTrim","_baseTrim","Symbol","_Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","_getRawTag","objectToString","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObjectLike","isObjectLike_1","symbolTag","isSymbol","isSymbol_1","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","toNumber_1","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","debounce_1","throttle","throttle_1","l","h","u","g","m","w","W","H","M","v","E","C","R","T","B","F","V","D","L","S","X","Y","lib","IS_MAC","MODIFIERS","ALIASES","CODES","isHotkey","hotkey","event","array","parseHotkey","check","object","compareHotkey","ret","isCodeHotkey","isKeyHotkey","byKey","values","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","optional","name","toKeyName","modifier","toKeyCode","err","expected","actual","DOMNode","DOMText","getDefaultView","isDOMComment","isDOMNode","isDOMElement","window","isDOMSelection","isDOMText","isPlainTextOnlyPaste","normalizeDOMPoint","domPoint","getEditableChildAndIndex","getEditableChild","hasShadowRoot","childNodes","triedForward","triedBackward","getPlainText","domNode","childNode","display","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","getSelection","isTrackedMutation","mutation","batch","document","DOMEditor","parentMutation","addedNodes","removedNodes","getActiveElement","activeElement","_activeElement","_activeElement$shadow","_activeElement2","isBefore","otherNode","isAfter","_navigator$userAgent$","_navigator$userAgent$2","IS_IOS","IS_APPLE","IS_ANDROID","IS_FIREFOX","IS_WEBKIT","IS_EDGE_LEGACY","IS_CHROME","IS_CHROME_LEGACY","IS_ANDROID_CHROME_LEGACY","IS_FIREFOX_LEGACY","IS_UC_MOBILE","IS_WECHATBROWSER","CAN_USE_DOM","HAS_BEFORE_INPUT_SUPPORT","Key","IS_NODE_MAP_DIRTY","NODE_TO_INDEX","NODE_TO_PARENT","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","EDITOR_TO_PLACEHOLDER_ELEMENT","ELEMENT_TO_NODE","NODE_TO_ELEMENT","NODE_TO_KEY","EDITOR_TO_KEY_TO_ELEMENT","IS_READ_ONLY","IS_FOCUSED","IS_COMPOSING","EDITOR_TO_USER_SELECTION","EDITOR_TO_ON_CHANGE","EDITOR_TO_SCHEDULE_FLUSH","EDITOR_TO_PENDING_INSERTION_MARKS","EDITOR_TO_USER_MARKS","EDITOR_TO_PENDING_DIFFS","EDITOR_TO_PENDING_ACTION","EDITOR_TO_PENDING_SELECTION","EDITOR_TO_FORCE_RENDER","PLACEHOLDER_SYMBOL","MARK_PLACEHOLDER_SYMBOL","_EDITOR_TO_SCHEDULE_F","el","domSelection","rect","isPrev","_range","domRange","editable","editorEl","targetEl","slateNode","originEvent","KEY_TO_ELEMENT","selector","texts","attr","trueLength","nextText","_nextText$textContent","domText","domAnchor","domFocus","startNode","startOffset","endNode","endOffset","startEl","isStartAtZeroWidth","endEl","isEndAtZeroWidth","domEl","exactMatch","suppressThrow","searchDirection","nearestNode","nearestOffset","textNode","_domNode$textContent","_domNode$textContent2","potentialVoidNode","potentialNonEditableNode","nonEditableNode","leafNode","contents","removals","leafNodes","getLeafNodes","elementNode","_leafNodes$findLast","_leafNodes","_leafNodes2$find","_leafNodes2","_slateNode","_focusNode$textConten","anchorNode","anchorOffset","focusNode","focusOffset","firstRange","lastRange","getLastChildren","firstNodeRow","lastNodeRow","firstNode","lastNode","focusBeforeAnchor","verifyDiffState","textDiff","diff","applyStringDiff","diffs","longestCommonPrefixLength","longestCommonSuffixLength","max","normalizeStringDiff","targetText","prefixLength","suffixLength","normalized","mergeStringDiffs","overlap","applied","sliceEnd","targetRange","normalizePoint","parentBlock","normalizeRange","transformPendingPoint","pendingDiffs","_anchor","_transformed","transformed","transformPendingRange","transformTextDiff","id","doRectsIntersect","compareRect","areRangesSameLine","range1","range2","rect1","rect2","findCurrentLineRange","parentRange","parentRangeBoundary","withDOM","clipboardFormatKey","onChange","_EDITOR_TO_PENDING_DI","_EDITOR_TO_PENDING_DI2","parentBlockEntry","parentBlockPath","parentElementRange","currentLineRange","pathRefMatches","pendingSelection","pendingAction","getMatches","_EDITOR_TO_USER_SELEC","changedPath","changedNode","changedNodeKey","changedPathRef","startVoid","endVoid","attach","zw","isNewline","encoded","div","decoded","parsed","lines","line","onContextChange","TRIPLE_CLICK","HOTKEYS","APPLE_HOTKEYS","WINDOWS_HOTKEYS","create","generic","apple","windows","isGeneric","isApple","isWindows","hotkeys","shallowCompare","obj1","obj2","isDecorationFlagsEqual","rangeOwnProps","otherOwnProps","isElementDecorationsEqual","isTextDecorationsEqual","splitDecorationsByChild","decorationsByChild","level","ancestorRange","cachedChildRanges","getChildRange","cachedRange","childRange","decoration","decorationRange","startIndex","endIndex","ds","childDecorationRange","resizeObservers","hasActiveObservations","ro","hasSkippedObservations","deliverResizeLoopError","ResizeObserverBoxOptions","ResizeObserverSize","inlineSize","blockSize","DOMRectReadOnly","width","_a","top","bottom","rectangle","isSVG","isHidden","_b","offsetWidth","offsetHeight","isReplacedElement","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","size","switchSizes","zeroBoxes","calculateBoxSizes","forceRecalculation","cs","svg","removePadding","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderRight","borderBottom","borderLeft","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","ResizeObserverEntry","calculateDepthForNode","broadcastActiveObservations","shallowestDepth","callbacks","entries","ot","targetDepth","_i","callbacks_1","callback","gatherActiveObservationsAtDepth","process","trigger","notify","cb","queueMicroTask","toggle_1","el_1","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","events","timeout","scheduled","Scheduler","_this","until","elementsHaveResized","scheduler","updateCount","skipNotifyOnElement","ResizeObservation","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","observationTargets","ResizeObserverController","detail","firstObservation","lastObservation","ResizeObserver","EditorContext","createContext","useSlateStatic","useContext","ReactEditor","RESOLVE_DELAY","FLUSH_DELAY","debug","isDataTransfer","createAndroidInputManager","scheduleOnDOMSelectionChange","onDOMSelectionChange","flushing","compositionEndTimeoutId","flushTimeoutId","actionTimeoutId","idCounter","insertPositionHint","applyPendingSelection","performAction","action","_targetRange","hasPendingDiffs","hasPendingAction","selectionRef","scheduleSelectionChange","pendingMarks","userMarks","handleCompositionEnd","_event","handleCompositionStart","updatePlaceholderVisibility","forceHide","placeholderElement","storeDiff","_EDITOR_TO_PENDING_DI3","idx","change","merged","scheduleAction","run","handleDOMBeforeInput","_targetRange2","nativeTargetRange","canStoreDiff","Text$1","relevantPendingDiffs","handleUserSelect","targetNode","_nativeTargetRange","nativeCollapsed","parts","_diff","hintPosition","diffPosition","scheduleFlush","currentSelection","newPoint","_EDITOR_TO_PENDING_DI4","hasPendingChanges","isFlushing","pathChanged","parentPathChanged","handleInput","handleKeyDown","handleDomMutations","mutations","_EDITOR_TO_FORCE_REND","useIsMounted","isMountedRef","useRef","useEffect","useIsomorphicLayoutEffect","useLayoutEffect","useMutationObserver","mutationObserver","useState","MUTATION_OBSERVER_CONFIG$1","useAndroidInputManager","isMounted","inputManager","String$1","isMarkPlaceholder","React","ZeroWidthString","TextString","isTrailing","getTextContent","initialText","textWithTrailing","MemoizedText$1","memo","forwardRef","isLineBreak","attributes","PLACEHOLDER_DELAY","disconnectPlaceholderResizeObserver","placeholderResizeObserver","releaseObserver","clearTimeoutRef","timeoutRef","defaultRenderLeaf","DefaultLeaf","Leaf","renderPlaceholder","renderLeaf","leafPosition","placeholderRef","showPlaceholder","setShowPlaceholder","showPlaceholderTimeoutRef","callbackPlaceholderRef","useCallback","placeholderEl","_leaf$onPlaceholderRe","ResizeObserver$1","_leaf$onPlaceholderRe2","leafIsPlaceholder","placeholderProps","MemoizedLeaf","useGenericSelector","equalityFn","forceRender","useReducer","latestSubscriptionCallbackError","latestSelector","latestSelectedState","selectedState","selectorResult","isError","newSelectedState","DecorateContext","useDecorations","parentDecorations","decorate","addEventListener","unsubscribe","useMemo","useDecorateContext","decorateProp","eventListeners","latestDecorate","listener","defaultRenderText","DefaultText","renderText","decoratedLeaves","callbackRef","MemoizedText","defaultRenderElement","DefaultElement","renderElement","renderChunk","readOnly","useReadOnly","isInline","useChildren","dir","getDirection","Tag","MemoizedElement","ChunkTreeHelper","chunkTree","chunkSize","beforeDepth","afterDepth","remainingCapacity","toInsertCount","leavesToInsert","rawInsertPointer","finalPointer","_remainingCapacity","_toInsertCount","_leavesToInsert","minDepth","pointerNode","chunk","savedPointer","indexStack","_this$pointerNode","_this$pointerNode2","previousPointerChunk","groupIntoChunks","perChunk","chunks","chunkNodes","newTotal","depthForTotal","perTopLevelChunk","validateDescendant","actualIndexStack","ChildrenHelper","slicedChildren","maxChildren","elementResult","candidateNode","candidateKey","cachedKey","reconcileChildren","rerenderChildren","onInsert","onUpdate","onIndexChange","chunkTreeHelper","childrenHelper","treeLeaf","lookAhead","wasMoved","insertedChildrenStartIndex","insertedChildren","matchingChild","relativeIndex","matchingChildIndex","remainingChildren","KEY_TO_CHUNK_TREE","getChunkTreeForNode","defaultRenderChunk","ChunkAncestor","chunkNode","renderedChunk","MemoizedChunk","Fragment","ChunkTree","ElementContext","Element$1","isLeafBlock","chunking","childrenToRedecorate","useDecorationsByChild","renderElementComponent","renderTextComponent","mutableDecorationsByChild","_mutableDecorationsBy","_decorations","previousDecorations","ReadOnlyContext","SlateSelectorContext","useSelectorContext","deferredEventListeners","flushDeferred","callbackProp","deferred","selectorContext","useFlushDeferredSelectorsOnRender","useSlate","useTrackUserInput","receivedUserInput","animationFrameIdRef","onUserInput","createRestoreDomManager","bufferedMutations","clear","registerMutations","trackedMutations","restoreDOM","MUTATION_OBSERVER_CONFIG","RestoreDOMComponent","Component","_this$mutationObserve","_this$mutationObserve2","_this$mutationObserve3","_this$manager2","pendingMutations","_this$manager","_this$manager3","_this$mutationObserve4","RestoreDOM","ComposingContext","Children","Editable","forwardedRef","defaultRenderPlaceholder","DefaultPlaceholder","autoFocus","defaultDecorate","propsOnDOMBeforeInput","placeholder","scrollSelectionIntoView","defaultScrollSelectionIntoView","userStyle","disableDefaultStyles","isComposing","setIsComposing","deferredOperations","placeholderHeight","setPlaceholderHeight","processing","androidInputManagerRef","active","androidInputManager","_el","anchorNodeSelectable","focusNodeInEditor","_androidInputManagerR","_androidInputManagerR2","setDomSelection","forceChange","hasDomSelection","editorElement","hasDomSelectionInEditor","slateRange","_anchorNode","newDomRange","ensureSelection","timeoutId","animationFrameId","ensureDomSelection","onDOMBeforeInput","handleNativeHistoryEvents","ranges","newRange","isDOMEventHandled","isCompositionChange","native","_node$parentElement","_window$getComputedSt","_window","_lastText$textContent","lastText","toRestore","onSelectionChange","targetElement","targetTagName","stoppedDragging","decorateContext","placeHolderResizeHandler","_placeholderEl$getBou","unset","mark","isEventHandled","_text2","relatedTarget","_block$","_range2","_androidInputManagerR3","placeholderMarks","_androidInputManagerR4","isDOMEventTargetInput","draggedRange","_androidInputManagerR5","nativeEvent","Hotkeys","maybeHistoryEditor","_maybeHistoryEditor","leafEl","domRect","isZeroDimensionRect","leafRect","leafHasDimensions","scrollIntoView","handler","shouldTreatEventAsHandled","FocusedContext","REACT_MAJOR_VERSION","Slate","onValueChange","initialValue","handleSelectorChange","_options$operation","isFocused","setIsFocused","withReact","maybeBatchUpdates","ReactDOM","matchHtmlRegExp","escapeHtml_1","escapeHtml","escape","html","lastIndex","SOFT_BREAK_PLACEHOLDER","createEmptyValue","toHTML","serializeNode","hrefAttr","sanitizedUrl","sanitizeUrl","otherAttrsString","fromHTML","body","deserializeNode","validSlateStateAdapter","tagName","BLOCK_TAGS","slateElement","href","attrs","processChildren","MARK_TAGS","markType","extractTextFromChildren","textContent","processed","SlateElement","extractTextContent","url","trimmed","isUrl","LIST_TYPES","VALID_MARK_FORMATS","isValidMarkFormat","format","hasMarkFormat","isMarkActive","firstText","textNodes","isBlockActive","toggleMark","toggleBlock","isActive","isList","focusEditor","resetEditor","newValue","withLinks","insertData","wrapLink","unwrapLink","link","customElement","style","jsx","customLeaf","Softbreaker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]}