@aquera/nile-elements 1.9.6 → 1.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +3 -0
  2. package/dist/index-178e1e57.cjs.js +2 -0
  3. package/dist/index-178e1e57.cjs.js.map +1 -0
  4. package/dist/index-1faa963c.esm.js +1 -0
  5. package/dist/index-249de90a.esm.js +1 -0
  6. package/dist/index-353172ed.esm.js +1 -0
  7. package/dist/index-6f3fa4ab.esm.js +1 -0
  8. package/dist/index-89c520e9.cjs.js +5 -0
  9. package/dist/index-89c520e9.cjs.js.map +1 -0
  10. package/dist/index-920675c4.esm.js +1 -0
  11. package/dist/index-b387a9f4.cjs.js +2 -0
  12. package/dist/index-b387a9f4.cjs.js.map +1 -0
  13. package/dist/index-cc1385e0.cjs.js +2 -0
  14. package/dist/index-cc1385e0.cjs.js.map +1 -0
  15. package/dist/index-dedc38a6.esm.js +1 -0
  16. package/dist/index-df196058.cjs.js +2 -0
  17. package/dist/index-df196058.cjs.js.map +1 -0
  18. package/dist/index-f956f56d.cjs.js +7 -0
  19. package/dist/index-f956f56d.cjs.js.map +1 -0
  20. package/dist/index.cjs.js +1 -1
  21. package/dist/index.esm.js +1 -1
  22. package/dist/index.js +3595 -629
  23. package/dist/internal/glyph.cjs.js +2 -0
  24. package/dist/internal/glyph.cjs.js.map +1 -0
  25. package/dist/internal/glyph.esm.js +5 -0
  26. package/dist/nile-auto-complete/index.cjs.js +1 -1
  27. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  28. package/dist/nile-auto-complete/portal-manager.cjs.js +1 -1
  29. package/dist/nile-auto-complete/portal-utils.cjs.js +1 -1
  30. package/dist/nile-code-editor/extensionSetup.cjs.js +7 -7
  31. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  32. package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
  33. package/dist/nile-code-editor/index.cjs.js +1 -1
  34. package/dist/nile-code-editor/index.esm.js +1 -1
  35. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  36. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  37. package/dist/nile-code-editor/nile-code-editor.esm.js +1 -1
  38. package/dist/nile-color-picker/index.cjs.js +1 -1
  39. package/dist/nile-color-picker/nile-color-picker.cjs.js +1 -1
  40. package/dist/nile-combobox/index.cjs.js +1 -1
  41. package/dist/nile-combobox/index.esm.js +1 -1
  42. package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
  43. package/dist/nile-combobox/nile-combobox.esm.js +1 -1
  44. package/dist/nile-combobox/portal-manager.cjs.js +1 -1
  45. package/dist/nile-context-menu/index.cjs.js +1 -1
  46. package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
  47. package/dist/nile-context-submenu/index.cjs.js +1 -1
  48. package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
  49. package/dist/nile-detail/index.cjs.js +1 -1
  50. package/dist/nile-detail/index.esm.js +1 -1
  51. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  52. package/dist/nile-detail/nile-detail.esm.js +1 -1
  53. package/dist/nile-dropdown/index.cjs.js +1 -1
  54. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  55. package/dist/nile-dropdown/portal-manager.cjs.js +1 -1
  56. package/dist/nile-file-upload/index.cjs.js +1 -1
  57. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  58. package/dist/nile-file-upload/nile-file-upload.template.cjs.js +1 -1
  59. package/dist/nile-floating-panel/index.cjs.js +1 -1
  60. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  61. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  62. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  63. package/dist/nile-markdown-editor/index.cjs.js +1 -1
  64. package/dist/nile-markdown-editor/nile-markdown-editor.cjs.js +1 -1
  65. package/dist/nile-popover/index.cjs.js +1 -1
  66. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  67. package/dist/nile-popover/portal-manager.cjs.js +1 -1
  68. package/dist/nile-popup/index.cjs.js +1 -1
  69. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  70. package/dist/nile-select/index.cjs.js +1 -1
  71. package/dist/nile-select/nile-select.cjs.js +1 -1
  72. package/dist/nile-select/portal-manager.cjs.js +1 -1
  73. package/dist/nile-side-bar-action/index.cjs.js +1 -1
  74. package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js +1 -1
  75. package/dist/nile-side-bar-action/portal-manager.cjs.js +1 -1
  76. package/dist/nile-tooltip/index.cjs.js +1 -1
  77. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  78. package/dist/nile-virtual-select/index.cjs.js +1 -1
  79. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  80. package/dist/nile-virtual-select/portal-manager.cjs.js +1 -1
  81. package/dist/nile-virtual-select/renderer.cjs.js +1 -1
  82. package/dist/nile-wysiwyg-editor/emoji.cjs.js +2 -0
  83. package/dist/nile-wysiwyg-editor/emoji.cjs.js.map +1 -0
  84. package/dist/nile-wysiwyg-editor/emoji.esm.js +1 -0
  85. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js +2 -0
  86. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js.map +1 -0
  87. package/dist/nile-wysiwyg-editor/engine/commands.esm.js +1 -0
  88. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js +2 -0
  89. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js.map +1 -0
  90. package/dist/nile-wysiwyg-editor/engine/create-state.esm.js +1 -0
  91. package/dist/nile-wysiwyg-editor/engine/export.cjs.js +2 -0
  92. package/dist/nile-wysiwyg-editor/engine/export.cjs.js.map +1 -0
  93. package/dist/nile-wysiwyg-editor/engine/export.esm.js +1 -0
  94. package/dist/nile-wysiwyg-editor/engine/index.cjs.js +2 -0
  95. package/dist/nile-wysiwyg-editor/engine/index.cjs.js.map +1 -0
  96. package/dist/nile-wysiwyg-editor/engine/index.esm.js +1 -0
  97. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js +2 -0
  98. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js.map +1 -0
  99. package/dist/nile-wysiwyg-editor/engine/inputrules.esm.js +1 -0
  100. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js +2 -0
  101. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js.map +1 -0
  102. package/dist/nile-wysiwyg-editor/engine/keymap.esm.js +1 -0
  103. package/dist/nile-wysiwyg-editor/engine/markdown-parse.cjs.js +2 -0
  104. package/dist/nile-wysiwyg-editor/engine/markdown-parse.cjs.js.map +1 -0
  105. package/dist/nile-wysiwyg-editor/engine/markdown-parse.esm.js +1 -0
  106. package/dist/nile-wysiwyg-editor/engine/markdown.cjs.js +2 -0
  107. package/dist/nile-wysiwyg-editor/engine/markdown.cjs.js.map +1 -0
  108. package/dist/nile-wysiwyg-editor/engine/markdown.esm.js +1 -0
  109. package/dist/nile-wysiwyg-editor/engine/office-paste.cjs.js +2 -0
  110. package/dist/nile-wysiwyg-editor/engine/office-paste.cjs.js.map +1 -0
  111. package/dist/nile-wysiwyg-editor/engine/office-paste.esm.js +1 -0
  112. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js +2 -0
  113. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js.map +1 -0
  114. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.esm.js +1 -0
  115. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js +2 -0
  116. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js.map +1 -0
  117. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.esm.js +1 -0
  118. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js +2 -0
  119. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js.map +1 -0
  120. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.esm.js +1 -0
  121. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js +2 -0
  122. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js.map +1 -0
  123. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.esm.js +1 -0
  124. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js +2 -0
  125. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js.map +1 -0
  126. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.esm.js +1 -0
  127. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js +2 -0
  128. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js.map +1 -0
  129. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.esm.js +1 -0
  130. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js +2 -0
  131. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js.map +1 -0
  132. package/dist/nile-wysiwyg-editor/engine/plugins/image.esm.js +1 -0
  133. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js +2 -0
  134. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js.map +1 -0
  135. package/dist/nile-wysiwyg-editor/engine/plugins/link.esm.js +1 -0
  136. package/dist/nile-wysiwyg-editor/engine/plugins/math-view.cjs.js +2 -0
  137. package/dist/nile-wysiwyg-editor/engine/plugins/math-view.cjs.js.map +1 -0
  138. package/dist/nile-wysiwyg-editor/engine/plugins/math-view.esm.js +1 -0
  139. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js +2 -0
  140. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js.map +1 -0
  141. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.esm.js +1 -0
  142. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js +2 -0
  143. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js.map +1 -0
  144. package/dist/nile-wysiwyg-editor/engine/plugins/paste.esm.js +1 -0
  145. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js +2 -0
  146. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js.map +1 -0
  147. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.esm.js +1 -0
  148. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js +2 -0
  149. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js.map +1 -0
  150. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.esm.js +1 -0
  151. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js +2 -0
  152. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js.map +1 -0
  153. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.esm.js +1 -0
  154. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js +2 -0
  155. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js.map +1 -0
  156. package/dist/nile-wysiwyg-editor/engine/plugins/tables.esm.js +1 -0
  157. package/dist/nile-wysiwyg-editor/engine/plugins/task-list.cjs.js +2 -0
  158. package/dist/nile-wysiwyg-editor/engine/plugins/task-list.cjs.js.map +1 -0
  159. package/dist/nile-wysiwyg-editor/engine/plugins/task-list.esm.js +1 -0
  160. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js +2 -0
  161. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js.map +1 -0
  162. package/dist/nile-wysiwyg-editor/engine/sanitize.esm.js +1 -0
  163. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js +2 -0
  164. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js.map +1 -0
  165. package/dist/nile-wysiwyg-editor/engine/schema.esm.js +1 -0
  166. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js +2 -0
  167. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js.map +1 -0
  168. package/dist/nile-wysiwyg-editor/engine/selection-state.esm.js +1 -0
  169. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js +2 -0
  170. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js.map +1 -0
  171. package/dist/nile-wysiwyg-editor/engine/serializer.esm.js +1 -0
  172. package/dist/nile-wysiwyg-editor/index.cjs.js +2 -0
  173. package/dist/nile-wysiwyg-editor/index.cjs.js.map +1 -0
  174. package/dist/nile-wysiwyg-editor/index.esm.js +1 -0
  175. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +2 -0
  176. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js.map +1 -0
  177. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js +2 -0
  178. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js.map +1 -0
  179. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.esm.js +780 -0
  180. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +97 -0
  181. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +2 -0
  182. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js.map +1 -0
  183. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.esm.js +1 -0
  184. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +2 -0
  185. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js.map +1 -0
  186. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js +2 -0
  187. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js.map +1 -0
  188. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.esm.js +244 -0
  189. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.esm.js +137 -0
  190. package/dist/nile-wysiwyg-editor/types.cjs.js +2 -0
  191. package/dist/nile-wysiwyg-editor/types.cjs.js.map +1 -0
  192. package/dist/nile-wysiwyg-editor/types.esm.js +1 -0
  193. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js +2 -0
  194. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js.map +1 -0
  195. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.esm.js +97 -0
  196. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +2 -0
  197. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -0
  198. package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +67 -0
  199. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js +2 -0
  200. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js.map +1 -0
  201. package/dist/nile-wysiwyg-editor/ui/code-block-menu.esm.js +65 -0
  202. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +2 -0
  203. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -0
  204. package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +64 -0
  205. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js +2 -0
  206. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js.map +1 -0
  207. package/dist/nile-wysiwyg-editor/ui/embed-panel.esm.js +68 -0
  208. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js +2 -0
  209. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js.map +1 -0
  210. package/dist/nile-wysiwyg-editor/ui/emoji-picker.esm.js +96 -0
  211. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js +2 -0
  212. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js.map +1 -0
  213. package/dist/nile-wysiwyg-editor/ui/find-replace.esm.js +112 -0
  214. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +2 -0
  215. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -0
  216. package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +64 -0
  217. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js +2 -0
  218. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js.map +1 -0
  219. package/dist/nile-wysiwyg-editor/ui/image-panel.esm.js +171 -0
  220. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js +2 -0
  221. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js.map +1 -0
  222. package/dist/nile-wysiwyg-editor/ui/insert-menu.esm.js +90 -0
  223. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js +2 -0
  224. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js.map +1 -0
  225. package/dist/nile-wysiwyg-editor/ui/link-editor.esm.js +114 -0
  226. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js +2 -0
  227. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js.map +1 -0
  228. package/dist/nile-wysiwyg-editor/ui/markdown-panel.esm.js +80 -0
  229. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js +2 -0
  230. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js.map +1 -0
  231. package/dist/nile-wysiwyg-editor/ui/math-panel.esm.js +92 -0
  232. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js +2 -0
  233. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js.map +1 -0
  234. package/dist/nile-wysiwyg-editor/ui/shortcut-help.esm.js +147 -0
  235. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js +2 -0
  236. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js.map +1 -0
  237. package/dist/nile-wysiwyg-editor/ui/source-view.esm.js +79 -0
  238. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js +2 -0
  239. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js.map +1 -0
  240. package/dist/nile-wysiwyg-editor/ui/special-chars.esm.js +96 -0
  241. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js +2 -0
  242. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js.map +1 -0
  243. package/dist/nile-wysiwyg-editor/ui/suggest-list.esm.js +67 -0
  244. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js +2 -0
  245. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js.map +1 -0
  246. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.esm.js +100 -0
  247. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +2 -0
  248. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -0
  249. package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +58 -0
  250. package/dist/src/index.d.ts +24 -0
  251. package/dist/src/index.js +19 -0
  252. package/dist/src/index.js.map +1 -1
  253. package/dist/src/internal/glyph.d.ts +6 -0
  254. package/dist/src/internal/glyph.js +13 -0
  255. package/dist/src/internal/glyph.js.map +1 -0
  256. package/dist/src/nile-wysiwyg-editor/emoji.d.ts +5 -0
  257. package/dist/src/nile-wysiwyg-editor/emoji.js +138 -0
  258. package/dist/src/nile-wysiwyg-editor/emoji.js.map +1 -0
  259. package/dist/src/nile-wysiwyg-editor/engine/commands.d.ts +69 -0
  260. package/dist/src/nile-wysiwyg-editor/engine/commands.js +863 -0
  261. package/dist/src/nile-wysiwyg-editor/engine/commands.js.map +1 -0
  262. package/dist/src/nile-wysiwyg-editor/engine/create-state.d.ts +35 -0
  263. package/dist/src/nile-wysiwyg-editor/engine/create-state.js +67 -0
  264. package/dist/src/nile-wysiwyg-editor/engine/create-state.js.map +1 -0
  265. package/dist/src/nile-wysiwyg-editor/engine/export.d.ts +38 -0
  266. package/dist/src/nile-wysiwyg-editor/engine/export.js +208 -0
  267. package/dist/src/nile-wysiwyg-editor/engine/export.js.map +1 -0
  268. package/dist/src/nile-wysiwyg-editor/engine/export.test.d.ts +1 -0
  269. package/dist/src/nile-wysiwyg-editor/engine/export.test.js +96 -0
  270. package/dist/src/nile-wysiwyg-editor/engine/export.test.js.map +1 -0
  271. package/dist/src/nile-wysiwyg-editor/engine/index.d.ts +37 -0
  272. package/dist/src/nile-wysiwyg-editor/engine/index.js +29 -0
  273. package/dist/src/nile-wysiwyg-editor/engine/index.js.map +1 -0
  274. package/dist/src/nile-wysiwyg-editor/engine/inputrules.d.ts +12 -0
  275. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js +144 -0
  276. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js.map +1 -0
  277. package/dist/src/nile-wysiwyg-editor/engine/keymap.d.ts +15 -0
  278. package/dist/src/nile-wysiwyg-editor/engine/keymap.js +94 -0
  279. package/dist/src/nile-wysiwyg-editor/engine/keymap.js.map +1 -0
  280. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.d.ts +22 -0
  281. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.js +287 -0
  282. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.js.map +1 -0
  283. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.d.ts +1 -0
  284. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.js +106 -0
  285. package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.js.map +1 -0
  286. package/dist/src/nile-wysiwyg-editor/engine/markdown.d.ts +10 -0
  287. package/dist/src/nile-wysiwyg-editor/engine/markdown.js +162 -0
  288. package/dist/src/nile-wysiwyg-editor/engine/markdown.js.map +1 -0
  289. package/dist/src/nile-wysiwyg-editor/engine/office-paste.d.ts +13 -0
  290. package/dist/src/nile-wysiwyg-editor/engine/office-paste.js +182 -0
  291. package/dist/src/nile-wysiwyg-editor/engine/office-paste.js.map +1 -0
  292. package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.d.ts +10 -0
  293. package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.js +165 -0
  294. package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.js.map +1 -0
  295. package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.d.ts +17 -0
  296. package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.js +69 -0
  297. package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.js.map +1 -0
  298. package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.d.ts +17 -0
  299. package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.js +96 -0
  300. package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.js.map +1 -0
  301. package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.d.ts +26 -0
  302. package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.js +123 -0
  303. package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.js.map +1 -0
  304. package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.d.ts +28 -0
  305. package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.js +72 -0
  306. package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.js.map +1 -0
  307. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.d.ts +41 -0
  308. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js +176 -0
  309. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js.map +1 -0
  310. package/dist/src/nile-wysiwyg-editor/engine/plugins/image.d.ts +15 -0
  311. package/dist/src/nile-wysiwyg-editor/engine/plugins/image.js +64 -0
  312. package/dist/src/nile-wysiwyg-editor/engine/plugins/image.js.map +1 -0
  313. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.d.ts +11 -0
  314. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js +42 -0
  315. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js.map +1 -0
  316. package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.d.ts +18 -0
  317. package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.js +46 -0
  318. package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.js.map +1 -0
  319. package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.d.ts +7 -0
  320. package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.js +26 -0
  321. package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.js.map +1 -0
  322. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.d.ts +31 -0
  323. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js +55 -0
  324. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js.map +1 -0
  325. package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.d.ts +7 -0
  326. package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.js +25 -0
  327. package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.js.map +1 -0
  328. package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.d.ts +10 -0
  329. package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.js +48 -0
  330. package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.js.map +1 -0
  331. package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.d.ts +29 -0
  332. package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.js +87 -0
  333. package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.js.map +1 -0
  334. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.d.ts +8 -0
  335. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js +11 -0
  336. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js.map +1 -0
  337. package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.d.ts +16 -0
  338. package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.js +49 -0
  339. package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.js.map +1 -0
  340. package/dist/src/nile-wysiwyg-editor/engine/pm.test.d.ts +1 -0
  341. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js +883 -0
  342. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js.map +1 -0
  343. package/dist/src/nile-wysiwyg-editor/engine/productivity.test.d.ts +1 -0
  344. package/dist/src/nile-wysiwyg-editor/engine/productivity.test.js +129 -0
  345. package/dist/src/nile-wysiwyg-editor/engine/productivity.test.js.map +1 -0
  346. package/dist/src/nile-wysiwyg-editor/engine/sanitize.d.ts +13 -0
  347. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js +155 -0
  348. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js.map +1 -0
  349. package/dist/src/nile-wysiwyg-editor/engine/schema.d.ts +20 -0
  350. package/dist/src/nile-wysiwyg-editor/engine/schema.js +823 -0
  351. package/dist/src/nile-wysiwyg-editor/engine/schema.js.map +1 -0
  352. package/dist/src/nile-wysiwyg-editor/engine/selection-state.d.ts +70 -0
  353. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js +138 -0
  354. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js.map +1 -0
  355. package/dist/src/nile-wysiwyg-editor/engine/serializer.d.ts +18 -0
  356. package/dist/src/nile-wysiwyg-editor/engine/serializer.js +63 -0
  357. package/dist/src/nile-wysiwyg-editor/engine/serializer.js.map +1 -0
  358. package/dist/src/nile-wysiwyg-editor/index.d.ts +3 -0
  359. package/dist/src/nile-wysiwyg-editor/index.js +3 -0
  360. package/dist/src/nile-wysiwyg-editor/index.js.map +1 -0
  361. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.d.ts +1 -0
  362. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js +782 -0
  363. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js.map +1 -0
  364. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.d.ts +364 -0
  365. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js +2038 -0
  366. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js.map +1 -0
  367. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.d.ts +1 -0
  368. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js +636 -0
  369. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js.map +1 -0
  370. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.d.ts +1 -0
  371. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.js +2 -0
  372. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.js.map +1 -0
  373. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.d.ts +6 -0
  374. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js +251 -0
  375. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js.map +1 -0
  376. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.d.ts +41 -0
  377. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.js +700 -0
  378. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.js.map +1 -0
  379. package/dist/src/nile-wysiwyg-editor/types.d.ts +49 -0
  380. package/dist/src/nile-wysiwyg-editor/types.js +8 -0
  381. package/dist/src/nile-wysiwyg-editor/types.js.map +1 -0
  382. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.d.ts +20 -0
  383. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js +159 -0
  384. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js.map +1 -0
  385. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.d.ts +21 -0
  386. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js +125 -0
  387. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js.map +1 -0
  388. package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.d.ts +18 -0
  389. package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js +107 -0
  390. package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js.map +1 -0
  391. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.d.ts +19 -0
  392. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js +123 -0
  393. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js.map +1 -0
  394. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.d.ts +27 -0
  395. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js +146 -0
  396. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js.map +1 -0
  397. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.d.ts +21 -0
  398. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js +154 -0
  399. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js.map +1 -0
  400. package/dist/src/nile-wysiwyg-editor/ui/find-replace.d.ts +26 -0
  401. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js +178 -0
  402. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js.map +1 -0
  403. package/dist/src/nile-wysiwyg-editor/ui/image-menu.d.ts +18 -0
  404. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js +129 -0
  405. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js.map +1 -0
  406. package/dist/src/nile-wysiwyg-editor/ui/image-panel.d.ts +56 -0
  407. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js +349 -0
  408. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js.map +1 -0
  409. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.d.ts +25 -0
  410. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js +142 -0
  411. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js.map +1 -0
  412. package/dist/src/nile-wysiwyg-editor/ui/link-editor.d.ts +30 -0
  413. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js +189 -0
  414. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js.map +1 -0
  415. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.d.ts +24 -0
  416. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js +144 -0
  417. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js.map +1 -0
  418. package/dist/src/nile-wysiwyg-editor/ui/math-panel.d.ts +31 -0
  419. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js +172 -0
  420. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js.map +1 -0
  421. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.d.ts +30 -0
  422. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js +296 -0
  423. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js.map +1 -0
  424. package/dist/src/nile-wysiwyg-editor/ui/source-view.d.ts +19 -0
  425. package/dist/src/nile-wysiwyg-editor/ui/source-view.js +120 -0
  426. package/dist/src/nile-wysiwyg-editor/ui/source-view.js.map +1 -0
  427. package/dist/src/nile-wysiwyg-editor/ui/special-chars.d.ts +20 -0
  428. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js +199 -0
  429. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js.map +1 -0
  430. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.d.ts +31 -0
  431. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js +133 -0
  432. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js.map +1 -0
  433. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.d.ts +23 -0
  434. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js +177 -0
  435. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js.map +1 -0
  436. package/dist/src/nile-wysiwyg-editor/ui/table-menu.d.ts +16 -0
  437. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js +101 -0
  438. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js.map +1 -0
  439. package/dist/src/version.js +1 -1
  440. package/dist/src/version.js.map +1 -1
  441. package/dist/tsconfig.tsbuildinfo +1 -1
  442. package/package.json +18 -2
  443. package/src/index.ts +57 -1
  444. package/src/internal/glyph.ts +13 -0
  445. package/src/nile-wysiwyg-editor/emoji.ts +137 -0
  446. package/src/nile-wysiwyg-editor/engine/commands.ts +1035 -0
  447. package/src/nile-wysiwyg-editor/engine/create-state.ts +117 -0
  448. package/src/nile-wysiwyg-editor/engine/export.test.ts +113 -0
  449. package/src/nile-wysiwyg-editor/engine/export.ts +242 -0
  450. package/src/nile-wysiwyg-editor/engine/index.ts +69 -0
  451. package/src/nile-wysiwyg-editor/engine/inputrules.ts +169 -0
  452. package/src/nile-wysiwyg-editor/engine/keymap.ts +146 -0
  453. package/src/nile-wysiwyg-editor/engine/markdown-parse.test.ts +148 -0
  454. package/src/nile-wysiwyg-editor/engine/markdown-parse.ts +337 -0
  455. package/src/nile-wysiwyg-editor/engine/markdown.ts +165 -0
  456. package/src/nile-wysiwyg-editor/engine/office-paste.ts +199 -0
  457. package/src/nile-wysiwyg-editor/engine/plugins/code-highlight.ts +173 -0
  458. package/src/nile-wysiwyg-editor/engine/plugins/embed-view.ts +85 -0
  459. package/src/nile-wysiwyg-editor/engine/plugins/embeds.ts +99 -0
  460. package/src/nile-wysiwyg-editor/engine/plugins/find-replace.ts +155 -0
  461. package/src/nile-wysiwyg-editor/engine/plugins/format-painter.ts +80 -0
  462. package/src/nile-wysiwyg-editor/engine/plugins/image-view.ts +220 -0
  463. package/src/nile-wysiwyg-editor/engine/plugins/image.ts +80 -0
  464. package/src/nile-wysiwyg-editor/engine/plugins/link.ts +42 -0
  465. package/src/nile-wysiwyg-editor/engine/plugins/math-view.ts +56 -0
  466. package/src/nile-wysiwyg-editor/engine/plugins/max-length.ts +24 -0
  467. package/src/nile-wysiwyg-editor/engine/plugins/paste.ts +74 -0
  468. package/src/nile-wysiwyg-editor/engine/plugins/placeholder.ts +24 -0
  469. package/src/nile-wysiwyg-editor/engine/plugins/single-line.ts +47 -0
  470. package/src/nile-wysiwyg-editor/engine/plugins/suggestions.ts +110 -0
  471. package/src/nile-wysiwyg-editor/engine/plugins/tables.ts +12 -0
  472. package/src/nile-wysiwyg-editor/engine/plugins/task-list.ts +65 -0
  473. package/src/nile-wysiwyg-editor/engine/pm.test.ts +1088 -0
  474. package/src/nile-wysiwyg-editor/engine/productivity.test.ts +163 -0
  475. package/src/nile-wysiwyg-editor/engine/sanitize.ts +156 -0
  476. package/src/nile-wysiwyg-editor/engine/schema.ts +859 -0
  477. package/src/nile-wysiwyg-editor/engine/selection-state.ts +210 -0
  478. package/src/nile-wysiwyg-editor/engine/serializer.ts +78 -0
  479. package/src/nile-wysiwyg-editor/index.ts +3 -0
  480. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.ts +782 -0
  481. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.ts +750 -0
  482. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.ts +2155 -0
  483. package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.ts +1 -0
  484. package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.ts +251 -0
  485. package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.ts +772 -0
  486. package/src/nile-wysiwyg-editor/types.ts +83 -0
  487. package/src/nile-wysiwyg-editor/ui/bookmark-panel.ts +155 -0
  488. package/src/nile-wysiwyg-editor/ui/bubble-menu.ts +135 -0
  489. package/src/nile-wysiwyg-editor/ui/code-block-menu.ts +105 -0
  490. package/src/nile-wysiwyg-editor/ui/embed-menu.ts +133 -0
  491. package/src/nile-wysiwyg-editor/ui/embed-panel.ts +143 -0
  492. package/src/nile-wysiwyg-editor/ui/emoji-picker.ts +152 -0
  493. package/src/nile-wysiwyg-editor/ui/find-replace.ts +174 -0
  494. package/src/nile-wysiwyg-editor/ui/image-menu.ts +140 -0
  495. package/src/nile-wysiwyg-editor/ui/image-panel.ts +337 -0
  496. package/src/nile-wysiwyg-editor/ui/insert-menu.ts +142 -0
  497. package/src/nile-wysiwyg-editor/ui/link-editor.ts +180 -0
  498. package/src/nile-wysiwyg-editor/ui/markdown-panel.ts +143 -0
  499. package/src/nile-wysiwyg-editor/ui/math-panel.ts +169 -0
  500. package/src/nile-wysiwyg-editor/ui/shortcut-help.ts +311 -0
  501. package/src/nile-wysiwyg-editor/ui/source-view.ts +119 -0
  502. package/src/nile-wysiwyg-editor/ui/special-chars.ts +209 -0
  503. package/src/nile-wysiwyg-editor/ui/suggest-list.ts +138 -0
  504. package/src/nile-wysiwyg-editor/ui/table-grid-picker.ts +173 -0
  505. package/src/nile-wysiwyg-editor/ui/table-menu.ts +109 -0
  506. package/vscode-html-custom-data.json +450 -0
  507. package/web-dev-server.config.mjs +6 -2
  508. package/dist/index-5fef1a0d.esm.js +0 -1
  509. package/dist/index-8f38fae3.cjs.js +0 -2
  510. package/dist/index-8f38fae3.cjs.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-cc1385e0.cjs.js","sources":["../../../node_modules/prosemirror-view/dist/index.js"],"sourcesContent":["import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n var _a;\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n let child = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (child.nodeType == 1 && child.contentEditable == \"false\") {\n if ((_a = child.pmViewDesc) === null || _a === void 0 ? void 0 : _a.ignoreForSelection)\n off += dir;\n else\n return false;\n }\n else {\n node = child;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n // Clip the offset, because Chrome will return a text offset\n // into <input> nodes, which can't be treated as a regular DOM\n // offset\n if (pos)\n return { node: pos.offsetNode, offset: Math.min(nodeSize(pos.offsetNode), pos.offset) };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: Math.min(nodeSize(range.startContainer), range.startOffset) };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n // Skip empty rects with all sides at 0, for example, when the element has no CSS box (display: none)\n if (!nonZero(rect) && rect.left == 0)\n return;\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;;) {\n if (!parent)\n break;\n if (parent.nodeType != 1) {\n parent = parentNode(parent);\n continue;\n }\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n let pos = atTop ? \"fixed\" : getComputedStyle(parent).position;\n if (/^(fixed|sticky)$/.test(pos))\n break;\n parent = pos == \"absolute\" ? parent.offsetParent : parentNode(parent);\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange(), result;\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect)) {\n result = { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n break;\n }\n }\n range.detach();\n return result || { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true), rect;\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&\n // Ignore elements with zero-size bounding rectangles\n ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {\n if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <input> nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n if (!sel)\n return $head.pos == $head.start() || $head.pos == $head.end();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) {\n for (let i = 0; i < child.children.length; i++) {\n let inner = child.children[i];\n if (inner.size) {\n child = inner;\n break;\n }\n }\n }\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, view, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, view, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = view.root.getSelection();\n let selRange = view.domSelectionRange();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {\n let after = selRange.focusNode.childNodes[selRange.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n get ignoreForSelection() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get ignoreForSelection() { return !!this.widget.type.spec.relaxedSide; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM, spec) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n this.spec = spec;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom, spec);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n let spec = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);\n ({ dom, contentDOM } = spec);\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by <br contenteditable=false>\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view, i);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view, i);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view, i);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view, 0);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.draggable = true;\n }\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, _view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update && (this.node.type == node.type || this.spec.multiType)) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, view, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, view.root)\n : super.setSelection(anchor, head, view, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view, parentIndex) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1, scanTo = this.top.children.length;\n if (parentIndex < this.preMatch.index)\n scanTo = Math.min(this.index + 3, scanTo);\n for (let i = this.index; i < scanTo; i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n // When nothing matches, try to update the mark view at this position\n // in place, so a custom mark view can adapt to a changed mark without\n // re-creating its DOM.\n if (found < 0 && this.index < this.top.children.length) {\n let cur = this.top.children[this.index];\n if (cur instanceof MarkViewDesc && cur.dirty != NODE_DIRTY &&\n cur.mark.type == marks[depth].type && cur.spec.update &&\n !this.isLocked(cur.dom) && cur.spec.update(marks[depth])) {\n cur.mark = marks[depth];\n found = this.index;\n this.changed = true;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.destroyBetween(this.index, i);\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content) ||\n !sameOuterDeco(outerDeco, next.outerDeco) || !innerDeco.eq(next.innerDeco))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), anchor, selection;\n if (selectionCollapsed(domSel)) {\n anchor = head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {\n let min = head, max = head;\n for (let i = 0; i < domSel.rangeCount; i++) {\n let range = domSel.getRangeAt(i);\n min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));\n max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));\n }\n if (min < 0)\n return null;\n [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];\n $head = doc.resolve(head);\n }\n else {\n anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n }\n if (anchor < 0)\n return null;\n }\n let $anchor = doc.resolve(anchor);\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // Need to delay selection normalization during a native selection\n // drag on Chrome, or it will cause further dragging to glitch.\n let mouseDown = view.input.mouseDown;\n if (!force && chrome && mouseDown) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset) &&\n mouseDown.delaySelUpdate()) {\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection();\n if (!domSel)\n return;\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n domSel.collapse(node.parentNode, domIndex(node) + 1);\n else\n domSel.collapse(node, 0);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (!sel)\n return;\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = !!text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode) {\n slice = new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0);\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, true); });\n return slice;\n }\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, asText); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nfunction detachedDoc() {\n return document.implementation.createHTMLDocument(\"title\");\n}\nlet _policy = null;\nfunction maybeWrapTrusted(html) {\n let trustedTypes = window.trustedTypes;\n if (!trustedTypes)\n return html;\n // With the require-trusted-types-for CSP, Chrome will block\n // innerHTML, even on a detached document. This wraps the string in\n // a way that makes the browser allow us to use its parser again.\n if (!_policy)\n _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy(\"ProseMirrorClipboard\", { createHTML: (s) => s });\n return _policy.createHTML(html);\n}\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let doc = detachedDoc(), elt = doc.body;\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"</\" + n + \">\").reverse().join(\"\");\n elt.innerHTML = maybeWrapTrusted(html);\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n // Inline styles defined in the pasted content, so that parse rules pick them up\n for (let i = 0; i < doc.styleSheets.length; i++) {\n let style = doc.styleSheets[i];\n for (let j = 0; j < style.rules.length; j++) {\n let rule = style.rules[j];\n if (rule instanceof CSSStyleRule) {\n let matches = elt.querySelectorAll(rule.selectorText);\n for (let k = 0; k < matches.length; k++)\n matches[k].style.cssText += rule.style.cssText;\n }\n }\n }\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\", button: 0 };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastChromeDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n this.badSafariComposition = false;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n let deflt = () => view.state.tr.insertText(text).scrollIntoView();\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text, deflt)))\n view.dispatch(deflt());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n if (view.state.selection.eq(selection))\n return;\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let selection = selectionForTripleClick(view, inside, true), doc = view.state.doc;\n if (!selection)\n return false;\n updateSelection(view, selection, \"pointer\");\n if (selection instanceof TextSelection && doc.eq(view.state.doc))\n view.input.mouseDown = new TripleClickDrag(view, selection);\n return true;\n}\nfunction selectionForTripleClick(view, inside, selectNodes) {\n let doc = view.state.doc;\n if (inside == -1)\n return doc.inlineContent ? TextSelection.create(doc, 0, doc.content.size) : null;\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n return TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size);\n else if (selectNodes && NodeSelection.isSelectable(node))\n return NodeSelection.create(doc, nodePos);\n }\n return null;\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier] &&\n view.input.lastClick.button == event.button) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type, button: event.button };\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n view.input.mouseDown = new LeftMouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view) {\n this.view = view;\n this.mightDrag = null;\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n }\n up(event) {\n this.done();\n }\n move(event) {\n if (event.buttons == 0)\n this.done();\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.view.input.mouseDown == this)\n this.view.input.mouseDown = null;\n }\n delaySelUpdate() { return false; }\n}\nclass LeftMouseDown extends MouseDown {\n constructor(view, pos, event, flushed) {\n super(view);\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc && targetDesc.nodeDOM.nodeType == 1 ? targetDesc.nodeDOM : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos))\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n super.done();\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => {\n if (!this.view.isDestroyed)\n selectionToDOM(this.view);\n });\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n super.move(event);\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n delaySelUpdate() {\n if (!this.allowDefault)\n return false;\n this.delayedSelectionSync = true;\n return true;\n }\n}\nclass TripleClickDrag extends MouseDown {\n constructor(view, startSelection) {\n super(view);\n this.startSelection = startSelection;\n this.startDoc = view.state.doc;\n }\n move(event) {\n if (event.buttons == 0 || this.view.isDestroyed || !this.view.state.doc.eq(this.startDoc)) {\n this.done();\n return;\n }\n event.preventDefault();\n setSelectionOrigin(this.view, \"pointer\");\n let pos = this.view.posAtCoords(eventCoords(event));\n let target = pos && selectionForTripleClick(this.view, pos.inside, false);\n if (!target)\n return;\n let { doc } = this.view.state, start = this.startSelection;\n let [anchor, head] = target.from < start.from ? [start.to, target.from] : [start.from, target.to];\n updateSelection(this.view, TextSelection.create(doc, anchor, head), \"pointer\");\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(Date.now() - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$to;\n if (state.selection instanceof TextSelection &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||\n chrome && windows && selectionBeforeUneditable(view))) { // Issue #1500\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view, !state.selection.empty);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n let sel = view.domSelection();\n if (sel)\n sel.collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\nfunction selectionBeforeUneditable(view) {\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (!focusNode || focusNode.nodeType != 1 || focusOffset >= focusNode.childNodes.length)\n return false;\n let next = focusNode.childNodes[focusOffset];\n return next.nodeType == 1 && next.contentEditable == \"false\";\n}\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = Date.now();\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.badSafariComposition)\n view.domObserver.forceFlush();\n else if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = Date.now();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc, lastChanged = view.domObserver.lastChangedTextNode;\n if (textBefore == lastChanged || textAfter == lastChanged)\n return lastChanged;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore || textAfter;\n}\n/**\n@internal\n*/\nfunction endComposition(view, restarting = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (restarting || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view), cur = view.state.selection;\n if (sel && !sel.eq(cur))\n view.dispatch(view.state.tr.setSelection(sel));\n else if ((view.markCursor || restarting) && !cur.$from.node(cur.$from.sharedDepth(cur.to)).inlineContent)\n view.dispatch(view.state.tr.deleteSelection());\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nfunction dragMoves(view, event) {\n let copy;\n view.someProp(\"dragCopies\", test => { copy = copy || test(event); });\n return copy != null ? !copy : !event[dragCopyModifier];\n}\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let draggedSlice = (node || view.state.selection).content();\n let { dom, text, slice } = serializeForClipboard(view, draggedSlice);\n // Pre-120 Chrome versions clear files when calling `clearData` (#1472)\n if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://code.haverbeke.berlin/prosemirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, dragMoves(view, event), node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, event) => {\n try {\n handleDrop(view, event, view.dragging);\n }\n finally {\n view.dragging = null;\n }\n};\nfunction handleDrop(view, event, dragging) {\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, false); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && dragMoves(view, event));\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n}\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n forEachSet(f) { f(this); }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n forEachSet(f) {\n for (let i = 0; i < this.members.length; i++)\n this.members[i].forEachSet(f);\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.lastChangedTextNode = null;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length)) {\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n this.flushSoon();\n }\n else if (safari && view.composing && mutations.some(m => m.type == \"childList\" && m.target.nodeName == \"TR\")) {\n // Safari does weird stuff when finishing a composition in a\n // table cell, which tends to involve inserting inappropriate\n // nodes in the table row.\n view.input.badSafariComposition = true;\n this.flushSoon();\n }\n else {\n this.flush();\n }\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (added.some(n => n.nodeName == \"BR\") &&\n (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46 ||\n chrome && (view.composing || view.input.compositionEndedAt > Date.now() - 50) &&\n mutations.some(m => m.type == \"childList\" && m.removedNodes.length))) {\n // Browsers sometimes insert a bogus break node if you\n // backspace out the last bit of text before an inline-flex node (#1552)\n for (let node of added)\n if (node.nodeName == \"BR\" && node.parentNode) {\n let after = node.nextSibling;\n while (after && after.nodeType == 1) {\n if (after.contentEditable == \"false\") {\n node.parentNode.removeChild(node);\n break;\n }\n after = after.firstChild;\n }\n }\n }\n else if (gecko && added.length) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let [a, b] = brs;\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n else {\n let { focusNode } = this.currentSelection;\n for (let br of brs) {\n let parent = br.parentNode;\n if (parent && parent.nodeName == \"LI\" && (!focusNode || blockParent(view, focusNode) != parent))\n br.remove();\n }\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n if (view.input.badSafariComposition) {\n view.input.badSafariComposition = false;\n fixUpBadSafariComposition(view, added);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let node = mut.addedNodes[i];\n added.push(node);\n if (node.nodeType == 3)\n this.lastChangedTextNode = node;\n }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n this.lastChangedTextNode = mut.target;\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\nfunction blockParent(view, node) {\n for (let p = node.parentNode; p && p != view.dom; p = p.parentNode) {\n let desc = view.docView.nearestDesc(p, true);\n if (desc && desc.node.isBlock)\n return p;\n }\n return null;\n}\n// Kludge for a Safari bug where, on ending a composition in an\n// otherwise empty table cell, it randomly moves the composed text\n// into the table row around that cell, greatly confusing everything\n// (#188).\nfunction fixUpBadSafariComposition(view, addedNodes) {\n var _a;\n let { focusNode, focusOffset } = view.domSelectionRange();\n for (let node of addedNodes) {\n if (((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) == \"TR\") {\n let nextCell = node.nextSibling;\n while (nextCell && (nextCell.nodeName != \"TD\" && nextCell.nodeName != \"TH\"))\n nextCell = nextCell.nextSibling;\n if (nextCell) {\n let parent = nextCell;\n for (;;) {\n let first = parent.firstChild;\n if (!first || first.nodeType != 1 || first.contentEditable == \"false\" ||\n /^(BR|IMG)$/.test(first.nodeName))\n break;\n parent = first;\n }\n parent.insertBefore(node, parent.firstChild);\n if (focusNode == node)\n view.domSelection().collapse(node, focusOffset);\n }\n else {\n node.parentNode.removeChild(node);\n }\n }\n }\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (change)\n view.input.domChangeCount++;\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (!$from.sameParent($to) || !$from.parent.inlineContent) &&\n $from.pos < $to.pos && !/\\S/.test(parse.doc.textBetween($from.pos, $to.pos, \"\", \"\")))) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && change.endB == change.start)\n view.input.lastChromeDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let mkTr = (base) => {\n let tr = base || view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastChromeDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n return tr.scrollIntoView();\n };\n let markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n let tr = mkTr(view.state.tr.delete(chFrom, chTo));\n let marks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n if (marks)\n tr.ensureMarks(marks);\n view.dispatch(tr);\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n let tr = mkTr(view.state.tr);\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n view.dispatch(tr);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n let deflt = () => mkTr(view.state.tr.insertText(text, chFrom, chTo));\n if (!view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text, deflt)))\n view.dispatch(deflt());\n }\n else {\n view.dispatch(mkTr());\n }\n }\n else {\n view.dispatch(mkTr());\n }\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos), lenA = pos + a.size, lenB = pos + b.size;\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, lenA, lenB);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && lenA < lenB) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\n\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://code.haverbeke.berlin/prosemirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && (!this.trackWrites || !this.dom.contains(this.trackWrites)))\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n let mouseDown = this.input.mouseDown;\n if (forceSelUpdate ||\n !(mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this) && mouseDown.delaySelUpdate())) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (!startDOM || !this.dom.contains(startDOM.nodeType == 1 ? startDOM : startDOM.parentNode)) ;\n else if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (sel.from < this.state.doc.content.size && this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && movedPos < this.state.doc.content.size && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Serialize the given slice as it would be if it was copied from\n this editor. Returns a DOM element that contains a\n representation of the slice as its children, a textual\n representation, and the transformed slice (which can be\n different from the given input due to hooks like\n [`transformCopied`](https://prosemirror.net/docs/ref/#view.EditorProps.transformCopied)).\n */\n serializeForClipboard(slice) {\n return serializeForClipboard(this, slice);\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n if (!sel)\n return { focusNode: null, focusOffset: 0, anchorNode: null, anchorOffset: 0 };\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nEditorView.prototype.dispatch = function (tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n};\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.from, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard };\n"],"names":["scanFor","node","off","targetNode","targetOff","dir","_a","nodeSize","parent","parentNode","nodeType","hasBlockDesc","atomElements","test","nodeName","contentEditable","domIndex","child","childNodes","pmViewDesc","ignoreForSelection","nodeValue","length","dom","desc","cur","isBlock","contentDOM","keyEvent","keyCode","key","event","document","createEvent","initEvent","code","windowRect","doc","vp","defaultView","visualViewport","left","right","width","top","bottom","height","documentElement","clientWidth","clientHeight","getSide","value","side","clientRect","rect","getBoundingClientRect","scaleX","offsetWidth","scaleY","offsetHeight","scrollRectIntoView","view","startDOM","nonZero","scrollThreshold","someProp","scrollMargin","ownerDocument","elt","atTop","body","bounding","moveX","moveY","scrollBy","startX","scrollLeft","startY","scrollTop","dX","dY","pos","getComputedStyle","position","offsetParent","scrollStack","stack","push","restoreScrollStack","dTop","i","_t$_i","findOffsetInNode","coords","closest","coordsClosest","firstBelow","coordsBelow","dxClosest","offset","rowBot","rowTop","firstChild","childIndex","nextSibling","rects","getClientRects","textRange","Math","max","min","dx","result","len","range","createRange","setEnd","setStart","singleRect","inRect","detach","findOffsetInText","elementFromPoint","element","box","startI","floor","j","posAtCoords","caret","x","y","caretPositionFromPoint","offsetNode","_","caretRangeFromPoint","startContainer","startOffset","caretFromPoint","root","contains","safari","p","draggable","undefined","targetKludge","gecko","next","prev","webkit","lastChild","state","content","size","outsideBlock","sawBlock","docView","nearestDesc","posBefore","posAfter","isText","posFromDOM","posFromCaret","_U","bias","posFromElement","inside","posAtStart","border","target","first","Array","prototype","find","call","coordsAtPos","_t$docView$domFromPos","domFromPos","atom","supportEmptyRange","BIDI","from","to","takeSide","flattenV","rectBefore","rectAfter","resolve","inlineContent","before","flattenH","after","ignoreForCoords","withFlushedState","f","viewState","active","activeElement","updateState","focus","endOfTextblock","cachedState","cachedDir","cachedResult","sel","selection","$pos","$from","$to","_t$docView$domFromPos2","nearest","boxes","endOfTextblockVertical","$head","isTextblock","parentOffset","atStart","atEnd","domSelection","maybeRTL","textContent","modify","_t$domSelectionRange","domSelectionRange","oldNode","focusNode","oldOff","anchorNode","focusOffset","anchorOffset","oldBidiLevel","caretBidiLevel","parentDOM","depth","domAfterPos","newNode","newOff","collapse","extend","start","end","endOfTextblockHorizontal","docViewDesc","outerDeco","innerDeco","applyOuterDeco","NodeViewDesc","updateChildren","renderDescs","descs","written","childDOM","rm","insertBefore","MarkViewDesc","previousSibling","children","trackWrites","computeOuterDeco","needsWrap","noDeco","OuterDecoLevel","attrs","type","name","val","isInline","class","style","patchOuterDeco","outerDOM","nodeDOM","prevComputed","curComputed","curDOM","deco","toLowerCase","createElement","pmIsDeco","appendChild","patchAttributes","removeAttribute","setAttribute","prevList","split","filter","Boolean","curList","indexOf","classList","remove","add","m","prop","exec","removeProperty","cssText","sameOuterDeco","a","b","eq","removeChild","compareSide","replaceNodes","nodes","replacement","slice","selectionFromDOM","origin","domSel","inWidget","head","anchor","selectionCollapsed","nearestDescNode","isAtom","NodeSelection","isSelectable","index","isOnEdge","Selection","rangeCount","_ref2","_ref3","getRangeAt","endContainer","endOffset","$anchor","selectionBetween","editorOwnsSelection","editable","hasFocus","hasSelection","selectionToDOM","force","syncNodeSelection","mouseDown","input","chrome","curSel","domObserver","currentSelection","isEquivalentPosition","delaySelUpdate","setCurSelection","disconnectSelection","cursorWrapper","img","visible","ie","ie_version","disabled","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","TextSelection","temporarilyEditableNear","empty","setSelection","resetEditable","removeEventListener","hideSelectionGuard","addEventListener","setTimeout","removeClassOnSelectionChange","connectSelection","_t$docView$domFromPos3","setEditable","wasDraggable","descAt","lastSelectedViewDesc","clearNodeSelection","selectNode","deselectNode","between","hasFocusAndSelection","moveSelectionBlock","_t$selection","$side","$start","findFrom","apply","dispatch","tr","scrollIntoView","selectHorizontally","mods","textOffset","nodeBefore","nodeAfter","isLeaf","$newHead","mac","nodePos","nodeLen","isIgnorable","skipIgnoredNodes","moveNode","moveOffset","isBlockNode","setSelFocus","skipIgnoredNodesBefore","skipIgnoredNodesAfter","textNodeAfter","textNodeBefore","removeAllRanges","addRange","findDirection","windows","mid","abs","direction","selectVertically","beyond","AllSelection","near","stopNativeHorizontalDelete","_t$state$selection2","sameParent","nextNode","switchEditable","stop","captureKeyDown","ctrlKey","metaKey","altKey","shiftKey","getMods","_t$domSelectionRange3","safariDownArrowBug","serializeForClipboard","context","openStart","openEnd","childCount","defaultAttrs","serializer","DOMSerializer","fromSchema","schema","detachedDoc","wrap","serializeFragment","wrappers","wrapMap","wrapper","concat","JSON","stringify","text","textBetween","e","parseFromClipboard","html","plainText","$context","inCode","spec","asText","Slice","Fragment","replace","parsed","marks","forEach","block","serializeNode","metas","firstTag","map","n","join","reverse","innerHTML","trustedTypes","window","_policy","defaultPolicy","createPolicy","createHTML","s","maybeWrapTrusted","querySelector","styleSheets","rules","rule","CSSStyleRule","matches","querySelectorAll","selectorText","k","readHTML","replaceChild","createTextNode","restoreReplacedSpaces","contextNode","sliceData","getAttribute","parser","DOMParser","parseSlice","preserveWhitespace","ruleFromNode","inlineParents","ignore","array","parse","hasRequiredAttrs","create","addContext","closeSlice","maxOpen","fragment","_loop","lastWrap","match","d","contentMatchAt","inLast","findWrapping","addToSibling","closeRight","wrapped","withWrappers","matchType","_ret","normalizeSiblings","isolating","sibling","inner","copy","append","fill","fillBefore","closeRange","implementation","createHTMLDocument","setSelectionOrigin","lastSelectionOrigin","lastSelectionTime","Date","now","ensureListeners","currentHandlers","eventHandlers","runCustomHandler","handlers","handler","defaultPrevented","eventBelongsToView","bubbles","stopEvent","eventCoords","clientX","clientY","runHandlerOnContext","propName","_loop2","_r35","v","_ret2","updateSelection","focused","setMeta","handleSingleClick","selectedNode","selectAt","selectClickedNode","selectClickedLeaf","handleDoubleClick","handleTripleClick","button","selectionForTripleClick","TripleClickDrag","defaultTripleClick","selectNodes","forceDOMFlush","endComposition","inOrNearComposition","composing","compositionEndedAt","scheduleComposeEnd","delay","clearTimeout","composingTimeout","clearComposition","compositionNodes","pop","markParentsDirty","findCompositionNode","textBefore","textNodeBefore$1","textAfter","textNodeAfter$1","descAfter","lastChanged","lastChangedTextNode","compositionNode","descBefore","restarting","android","flushingSoon","forceFlush","dirty","markCursor","sharedDepth","deleteSelection","doPaste","preferPlain","singleNode","sliceSingleNode","replaceSelectionWith","replaceSelection","getText","clipboardData","getData","uris","dragMoves","dragCopyModifier","compareObjs","moveSpans","spans","span","Decoration","takeSpansForNode","found","withoutNulls","buildTree","options","hasNulls","childNode","localStart","subtree","locals","sort","byPos","valid","onRemove","splice","DecorationSet","removeOverlap","working","insertAhead","viewDecorations","DecorationGroup","rangeToSelectionRange","_ref6","currentAnchor","domAtPos","blockParent","parseRule","skip","t","readDOMChange","typeOver","addedNodes","compositionID","compositionPendingChanges","newSel","lastKeyCode","lastKeyCodeTime","$before","shared","preferredPos","preferredSide","from_","to_","parseRange","fromOffset","toOffset","startDoc","topNode","topMatch","topOpen","whitespace","findPositions","parseBetween","compare","change","findDiffStart","lenA","lenB","_t$findDiffEnd","findDiffEnd","endA","endB","findDiff","domChangeCount","ios","lastIOSEnter","some","resolveSelection","resolveNoCache","$fromA","inlineChange","old","$newStart","$newEnd","skipClosingAndOpening","$next","cut","looksLikeBackspace","suppressSelectionUpdates","lastChromeDelete","markChange","chFrom","chTo","mkTr","base","mapping","marksAcross","ensureMarks","mark","update","curMarks","prevMarks","added","removed","removeFromSet","addToSet","updated","isMarkChange","addMark","removeMark","deflt","insertText","parsedSel","fromEnd","mayOpen","indexAfter","maybeChild","computeDocDeco","Object","contenteditable","String","attr","translate","updateCursorWrapper","className","widget","raw","getEditable","buildNodeViews","obj","hasOwnProperty","checkStateComponent","plugin","filterTransaction","appendTransaction","RangeError","EditorView","u","c","assignedSlot","host","reusedRange","nav","navigator","agent","userAgent","ie_edge","ie_upto10","ie_11up","documentMode","_chrome","chrome_version","vendor","maxTouchPoints","platform","webkit_version","preventScrollSupported","ViewDesc","ft","this","_createClass","matchesWidget","matchesMark","matchesNode","matchesHack","get","destroy","posBeforeChild","posAtEnd","localPosFromDOM","domBefore","domAfter","compareDocumentPosition","search","onlyNodes","arguments","getDesc","scan","curPos","TrailingHackViewDesc","WidgetViewDesc","enter","domAtom","childBase","emptyChildAt","_this$domFromPos","anchorDOM","headDOM","getSelection","selRange","brKludge","_l5","domSelExtended","tmp","ignoreMutation","mutation","markDirty","startInside","endInside","contentLost","level","ut","self","toDOM","super","_this","_inherits","_ft","ignoreSelection","relaxedSide","CompositionViewDesc","ct","textDOM","_this2","_ft2","mut","oldValue","at","_this3","_ft3","reparseInView","contentElement","inline","custom","nodeViews","renderSpec","dt","_this4","_ft4","getContent","composition","localCompositionInfo","localComposition","compositionInChild","updater","ViewTreeUpdater","onWidget","onNode","forChild","decoIndex","restNode","parentIndex","widgets","cutAt","iterDeco","insideNode","syncToMarks","Mark","none","placeWidget","compIndex","findNodeMatch","findIndexWithChild","updateNodeAt","updateNextNode","addNode","addTextblockHacks","destroyRest","changed","protectLocalComposition","oldCSS","listStyle","iosHacks","_t$state$selection","textNode","textPos","frag","childStart","str","lastIndexOf","findTextInFragment","_ref","sameMarkup","updateInner","updateOuterDeco","oldDOM","descObj","hasAttribute","CustomNodeViewDesc","TextViewDesc","mt","_dt","inParent","_view","gt","_this7","_dt2","multiType","kt","Tt","lock","preMatch","parentDesc","curDesc","descI","fI","matched","Map","outer","set","destroyBetween","keep","maxKeep","spanning","scanTo","isLocked","markDesc","targetDesc","has","domNode","nextDOM","locked","recreateWrapper","_iterator","_createForOfIteratorHelper","_step","done","ch","err","requiresGeckoHackNode","addHackNode","alt","hack","thead","tbody","tfoot","caption","colgroup","col","td","th","editHandlers","passiveHandlers","touchstart","touchmove","InputState","me","lastClick","time","lastIOSEnterFallbackTimeout","lastFocus","lastTouch","badSafariComposition","keydown","_event","preventDefault","keyup","keypress","charCode","fromCharCode","selectNodeModifier","mousedown","flushed","click","dy","isNear","LeftMouseDown","MouseDown","Pe","mightDrag","up","bind","move","buttons","Ee","_this8","_classCallCheck","targetPos","delayedSelectionSync","allowDefault","nodeAt","selectable","addAttr","setUneditable","_Pe","isDestroyed","updateAllowDefault","_superPropGet","Ne","startSelection","_this10","_Pe2","contextmenu","timeoutComposition","compositionstart","compositionupdate","flush","storedMarks","inclusive","_t$domSelectionRange4","selectionBeforeUneditable","compositionend","pendingRecords","Promise","then","brokenClipboardAPI","data","clearData","setData","selectNodeContents","blur","captureCopy","paste","plain","capturePaste","Dragging","He","dragstart","dataTransfer","draggedSlice","files","effectAllowed","dragging","dragend","dragover","dragenter","drop","eventPos","$mouse","insertPos","dropPoint","isNode","beforeInsert","replaceRangeWith","replaceRange","maps","_from","_to","_newFrom","newTo","handleDrop","relatedTarget","clear","beforeinput","inputType","flushSoon","$cursor","WidgetType","ze","noSpec","oldOffset","_t$mapResult","mapResult","deleted","other","InlineType","Ge","inclusiveStart","inclusiveEnd","is","NodeType","Ue","findIndex","Je","Xe","local","predicate","findInner","childOff","mapInner","newLocal","mapped","oldChildren","_loop3","_e63","moved","oldStart","oldEnd","newStart","newEnd","dSize","baseOffset","_e62","mustRebuild","fromLocal","toLocal","childOffset","decorations","gather","mapAndGatherRemainingDecorations","built","mapChildren","addInner","_this11","removeInner","dec","localSet","localsInner","forEachSet","_e","members","mappedDecos","member","sorted","every","reduce","r","observeOptions","childList","characterData","characterDataOldValue","attributes","attributeOldValue","useCharData","SelectionState","ui","constructor","DOMObserver","ci","handleDOMChange","queue","observer","onCharData","suppressingSelectionUpdates","MutationObserver","mutations","removedNodes","prevValue","onSelectionChange","takeRecords","observe","take","disconnect","ignoreSelectionChange","container","ancestors","Set","_iterator2","_step2","registerMutation","_iterator3","_step3","brs","_e79","_slicedToArray","_iterator4","_step4","br","readSel","scrollToSelection","cssChecked","whiteSpace","cssCheckWarned","console","warn","checkCSS","_t$domSelectionRange5","_iterator5","_step5","nextCell","fixUpBadSafariComposition","attributeName","_t$addedNodes$_e","WeakMap","_export","yi","place","props","_root","mounted","prevDirectPlugins","pluginViews","_props","directPlugins","plugins","mount","_loop4","passive","initInput","updatePluginViews","handleDOMEvents","prevProps","updateStateInner","setProps","redraw","updateSel","pluginsChanged","nA","nB","scroll","updateDoc","oldScrollPos","overflowAnchor","refDOM","refTop","innerHeight","localRect","storeScrollPos","forceSelUpdate","sel1","sel2","selectionContextChanged","chromeKludge","anchorInRightPlace","updateDraggedNode","_ref7","newRefTop","resetScrollPos","destroyPluginViews","prevState","pluginView","movedPos","parentElement","setActive","stored","preventScroll","focusPreventScroll","_this18","cached","_loop5","_t102","getPrototypeOf","_ret3","updateRoot","posAtDOM","pasteHTML","ClipboardEvent","pasteText","destroyInput","dispatchEvent","shadowRoot","deepActiveElement","getComposedRanges","read","stopImmediatePropagation","getTargetRanges","execCommand","safariShadowSelectionRange","dispatchTransaction"],"mappings":"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","x_google_ignoreList":[0]}