@syncfusion/ej2-richtexteditor 29.2.4-738301 → 29.2.4-760237

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 (365) hide show
  1. package/.eslintrc.json +262 -260
  2. package/aceconfig.js +17 -0
  3. package/blazorGlobalSrc/common/config.d.ts +63 -0
  4. package/blazorGlobalSrc/common/config.js +123 -0
  5. package/blazorGlobalSrc/common/constant.d.ts +117 -0
  6. package/blazorGlobalSrc/common/constant.js +23 -0
  7. package/blazorGlobalSrc/common/editor-styles.d.ts +1 -0
  8. package/blazorGlobalSrc/common/editor-styles.js +5 -0
  9. package/blazorGlobalSrc/common/index.d.ts +7 -0
  10. package/blazorGlobalSrc/common/index.js +9 -0
  11. package/blazorGlobalSrc/common/interface.d.ts +119 -0
  12. package/blazorGlobalSrc/common/interface.js +4 -0
  13. package/blazorGlobalSrc/common/types.d.ts +25 -0
  14. package/blazorGlobalSrc/common/types.js +4 -0
  15. package/blazorGlobalSrc/common/user-agent.d.ts +41 -0
  16. package/blazorGlobalSrc/common/user-agent.js +71 -0
  17. package/blazorGlobalSrc/common/util.d.ts +70 -0
  18. package/blazorGlobalSrc/common/util.js +222 -0
  19. package/blazorGlobalSrc/components.d.ts +8 -0
  20. package/blazorGlobalSrc/components.js +12 -0
  21. package/blazorGlobalSrc/editor-manager/base/classes.d.ts +31 -0
  22. package/blazorGlobalSrc/editor-manager/base/classes.js +28 -0
  23. package/blazorGlobalSrc/editor-manager/base/constant.d.ts +97 -0
  24. package/blazorGlobalSrc/editor-manager/base/constant.js +41 -0
  25. package/blazorGlobalSrc/editor-manager/base/editor-manager.d.ts +95 -0
  26. package/blazorGlobalSrc/editor-manager/base/editor-manager.js +339 -0
  27. package/blazorGlobalSrc/editor-manager/base/enum.d.ts +17 -0
  28. package/blazorGlobalSrc/editor-manager/base/enum.js +4 -0
  29. package/blazorGlobalSrc/editor-manager/base/interface.d.ts +263 -0
  30. package/blazorGlobalSrc/editor-manager/base/interface.js +4 -0
  31. package/blazorGlobalSrc/editor-manager/base/types.d.ts +7 -0
  32. package/blazorGlobalSrc/editor-manager/base/types.js +4 -0
  33. package/blazorGlobalSrc/editor-manager/base.d.ts +8 -0
  34. package/blazorGlobalSrc/editor-manager/base.js +10 -0
  35. package/blazorGlobalSrc/editor-manager/index.d.ts +5 -0
  36. package/blazorGlobalSrc/editor-manager/index.js +9 -0
  37. package/blazorGlobalSrc/editor-manager/plugin/alignments.d.ts +26 -0
  38. package/blazorGlobalSrc/editor-manager/plugin/alignments.js +105 -0
  39. package/blazorGlobalSrc/editor-manager/plugin/audio.d.ts +34 -0
  40. package/blazorGlobalSrc/editor-manager/plugin/audio.js +145 -0
  41. package/blazorGlobalSrc/editor-manager/plugin/clearformat-exec.d.ts +24 -0
  42. package/blazorGlobalSrc/editor-manager/plugin/clearformat-exec.js +47 -0
  43. package/blazorGlobalSrc/editor-manager/plugin/clearformat.d.ts +29 -0
  44. package/blazorGlobalSrc/editor-manager/plugin/clearformat.js +249 -0
  45. package/blazorGlobalSrc/editor-manager/plugin/dom-node.d.ts +351 -0
  46. package/blazorGlobalSrc/editor-manager/plugin/dom-node.js +737 -0
  47. package/blazorGlobalSrc/editor-manager/plugin/dom-tree.d.ts +84 -0
  48. package/blazorGlobalSrc/editor-manager/plugin/dom-tree.js +164 -0
  49. package/blazorGlobalSrc/editor-manager/plugin/emoji-picker-action.d.ts +10 -0
  50. package/blazorGlobalSrc/editor-manager/plugin/emoji-picker-action.js +86 -0
  51. package/blazorGlobalSrc/editor-manager/plugin/format-painter-actions.d.ts +47 -0
  52. package/blazorGlobalSrc/editor-manager/plugin/format-painter-actions.js +622 -0
  53. package/blazorGlobalSrc/editor-manager/plugin/formats.d.ts +43 -0
  54. package/blazorGlobalSrc/editor-manager/plugin/formats.js +597 -0
  55. package/blazorGlobalSrc/editor-manager/plugin/image.d.ts +48 -0
  56. package/blazorGlobalSrc/editor-manager/plugin/image.js +399 -0
  57. package/blazorGlobalSrc/editor-manager/plugin/indents.d.ts +24 -0
  58. package/blazorGlobalSrc/editor-manager/plugin/indents.js +106 -0
  59. package/blazorGlobalSrc/editor-manager/plugin/insert-methods.d.ts +48 -0
  60. package/blazorGlobalSrc/editor-manager/plugin/insert-methods.js +37 -0
  61. package/blazorGlobalSrc/editor-manager/plugin/insert-text.d.ts +22 -0
  62. package/blazorGlobalSrc/editor-manager/plugin/insert-text.js +36 -0
  63. package/blazorGlobalSrc/editor-manager/plugin/inserthtml-exec.d.ts +22 -0
  64. package/blazorGlobalSrc/editor-manager/plugin/inserthtml-exec.js +49 -0
  65. package/blazorGlobalSrc/editor-manager/plugin/inserthtml.d.ts +51 -0
  66. package/blazorGlobalSrc/editor-manager/plugin/inserthtml.js +985 -0
  67. package/blazorGlobalSrc/editor-manager/plugin/isformatted.d.ts +89 -0
  68. package/blazorGlobalSrc/editor-manager/plugin/isformatted.js +199 -0
  69. package/blazorGlobalSrc/editor-manager/plugin/link.d.ts +41 -0
  70. package/blazorGlobalSrc/editor-manager/plugin/link.js +550 -0
  71. package/blazorGlobalSrc/editor-manager/plugin/lists.d.ts +74 -0
  72. package/blazorGlobalSrc/editor-manager/plugin/lists.js +1503 -0
  73. package/blazorGlobalSrc/editor-manager/plugin/ms-word-clean-up.d.ts +61 -0
  74. package/blazorGlobalSrc/editor-manager/plugin/ms-word-clean-up.js +1136 -0
  75. package/blazorGlobalSrc/editor-manager/plugin/nodecutter.d.ts +64 -0
  76. package/blazorGlobalSrc/editor-manager/plugin/nodecutter.js +167 -0
  77. package/blazorGlobalSrc/editor-manager/plugin/selection-commands.d.ts +41 -0
  78. package/blazorGlobalSrc/editor-manager/plugin/selection-commands.js +1069 -0
  79. package/blazorGlobalSrc/editor-manager/plugin/selection-exec.d.ts +24 -0
  80. package/blazorGlobalSrc/editor-manager/plugin/selection-exec.js +49 -0
  81. package/blazorGlobalSrc/editor-manager/plugin/table-selection.d.ts +26 -0
  82. package/blazorGlobalSrc/editor-manager/plugin/table-selection.js +210 -0
  83. package/blazorGlobalSrc/editor-manager/plugin/table.d.ts +56 -0
  84. package/blazorGlobalSrc/editor-manager/plugin/table.js +1100 -0
  85. package/blazorGlobalSrc/editor-manager/plugin/toolbar-status.d.ts +39 -0
  86. package/blazorGlobalSrc/editor-manager/plugin/toolbar-status.js +384 -0
  87. package/blazorGlobalSrc/editor-manager/plugin/undo.d.ts +85 -0
  88. package/blazorGlobalSrc/editor-manager/plugin/undo.js +216 -0
  89. package/blazorGlobalSrc/editor-manager/plugin/video.d.ts +38 -0
  90. package/blazorGlobalSrc/editor-manager/plugin/video.js +311 -0
  91. package/blazorGlobalSrc/editor-manager/plugin.d.ts +27 -0
  92. package/blazorGlobalSrc/editor-manager/plugin.js +31 -0
  93. package/blazorGlobalSrc/global.d.ts +1 -0
  94. package/blazorGlobalSrc/global.js +3 -0
  95. package/blazorGlobalSrc/index.d.ts +8 -0
  96. package/blazorGlobalSrc/index.js +12 -0
  97. package/blazorGlobalSrc/markdown-parser/base/constant.d.ts +39 -0
  98. package/blazorGlobalSrc/markdown-parser/base/constant.js +10 -0
  99. package/blazorGlobalSrc/markdown-parser/base/interface.d.ts +169 -0
  100. package/blazorGlobalSrc/markdown-parser/base/interface.js +4 -0
  101. package/blazorGlobalSrc/markdown-parser/base/markdown-parser.d.ts +69 -0
  102. package/blazorGlobalSrc/markdown-parser/base/markdown-parser.js +87 -0
  103. package/blazorGlobalSrc/markdown-parser/base/types.d.ts +7 -0
  104. package/blazorGlobalSrc/markdown-parser/base/types.js +4 -0
  105. package/blazorGlobalSrc/markdown-parser/base.d.ts +7 -0
  106. package/blazorGlobalSrc/markdown-parser/base.js +9 -0
  107. package/blazorGlobalSrc/markdown-parser/index.d.ts +5 -0
  108. package/blazorGlobalSrc/markdown-parser/index.js +9 -0
  109. package/blazorGlobalSrc/markdown-parser/plugin/clearformat.d.ts +28 -0
  110. package/blazorGlobalSrc/markdown-parser/plugin/clearformat.js +110 -0
  111. package/blazorGlobalSrc/markdown-parser/plugin/formats.d.ts +32 -0
  112. package/blazorGlobalSrc/markdown-parser/plugin/formats.js +225 -0
  113. package/blazorGlobalSrc/markdown-parser/plugin/insert-text.d.ts +24 -0
  114. package/blazorGlobalSrc/markdown-parser/plugin/insert-text.js +49 -0
  115. package/blazorGlobalSrc/markdown-parser/plugin/link.d.ts +24 -0
  116. package/blazorGlobalSrc/markdown-parser/plugin/link.js +50 -0
  117. package/blazorGlobalSrc/markdown-parser/plugin/lists.d.ts +39 -0
  118. package/blazorGlobalSrc/markdown-parser/plugin/lists.js +462 -0
  119. package/blazorGlobalSrc/markdown-parser/plugin/markdown-selection.d.ts +140 -0
  120. package/blazorGlobalSrc/markdown-parser/plugin/markdown-selection.js +104 -0
  121. package/blazorGlobalSrc/markdown-parser/plugin/md-selection-formats.d.ts +31 -0
  122. package/blazorGlobalSrc/markdown-parser/plugin/md-selection-formats.js +335 -0
  123. package/blazorGlobalSrc/markdown-parser/plugin/table.d.ts +52 -0
  124. package/blazorGlobalSrc/markdown-parser/plugin/table.js +216 -0
  125. package/blazorGlobalSrc/markdown-parser/plugin/undo.d.ts +83 -0
  126. package/blazorGlobalSrc/markdown-parser/plugin/undo.js +147 -0
  127. package/blazorGlobalSrc/markdown-parser/plugin.d.ts +11 -0
  128. package/blazorGlobalSrc/markdown-parser/plugin.js +15 -0
  129. package/blazorGlobalSrc/rich-text-editor/actions/base-quick-toolbar.d.ts +114 -0
  130. package/blazorGlobalSrc/rich-text-editor/actions/base-quick-toolbar.js +465 -0
  131. package/blazorGlobalSrc/rich-text-editor/actions/base-toolbar.d.ts +58 -0
  132. package/blazorGlobalSrc/rich-text-editor/actions/base-toolbar.js +216 -0
  133. package/blazorGlobalSrc/rich-text-editor/actions/color-picker.d.ts +52 -0
  134. package/blazorGlobalSrc/rich-text-editor/actions/color-picker.js +241 -0
  135. package/blazorGlobalSrc/rich-text-editor/actions/count.d.ts +55 -0
  136. package/blazorGlobalSrc/rich-text-editor/actions/count.js +117 -0
  137. package/blazorGlobalSrc/rich-text-editor/actions/dropdown-buttons.d.ts +72 -0
  138. package/blazorGlobalSrc/rich-text-editor/actions/dropdown-buttons.js +552 -0
  139. package/blazorGlobalSrc/rich-text-editor/actions/emoji-picker.d.ts +51 -0
  140. package/blazorGlobalSrc/rich-text-editor/actions/emoji-picker.js +853 -0
  141. package/blazorGlobalSrc/rich-text-editor/actions/enter-key.d.ts +28 -0
  142. package/blazorGlobalSrc/rich-text-editor/actions/enter-key.js +821 -0
  143. package/blazorGlobalSrc/rich-text-editor/actions/execute-command-callback.d.ts +11 -0
  144. package/blazorGlobalSrc/rich-text-editor/actions/execute-command-callback.js +28 -0
  145. package/blazorGlobalSrc/rich-text-editor/actions/file-manager.d.ts +45 -0
  146. package/blazorGlobalSrc/rich-text-editor/actions/file-manager.js +249 -0
  147. package/blazorGlobalSrc/rich-text-editor/actions/format-painter.d.ts +25 -0
  148. package/blazorGlobalSrc/rich-text-editor/actions/format-painter.js +156 -0
  149. package/blazorGlobalSrc/rich-text-editor/actions/full-screen.d.ts +40 -0
  150. package/blazorGlobalSrc/rich-text-editor/actions/full-screen.js +148 -0
  151. package/blazorGlobalSrc/rich-text-editor/actions/html-attributes.d.ts +15 -0
  152. package/blazorGlobalSrc/rich-text-editor/actions/html-attributes.js +50 -0
  153. package/blazorGlobalSrc/rich-text-editor/actions/html-editor.d.ts +120 -0
  154. package/blazorGlobalSrc/rich-text-editor/actions/html-editor.js +1244 -0
  155. package/blazorGlobalSrc/rich-text-editor/actions/html-toolbar-status.d.ts +14 -0
  156. package/blazorGlobalSrc/rich-text-editor/actions/html-toolbar-status.js +47 -0
  157. package/blazorGlobalSrc/rich-text-editor/actions/import-export.d.ts +21 -0
  158. package/blazorGlobalSrc/rich-text-editor/actions/import-export.js +117 -0
  159. package/blazorGlobalSrc/rich-text-editor/actions/keyboard-model.d.ts +30 -0
  160. package/blazorGlobalSrc/rich-text-editor/actions/keyboard.d.ts +110 -0
  161. package/blazorGlobalSrc/rich-text-editor/actions/keyboard.js +163 -0
  162. package/blazorGlobalSrc/rich-text-editor/actions/markdown-editor.d.ts +66 -0
  163. package/blazorGlobalSrc/rich-text-editor/actions/markdown-editor.js +142 -0
  164. package/blazorGlobalSrc/rich-text-editor/actions/markdown-toolbar-status.d.ts +23 -0
  165. package/blazorGlobalSrc/rich-text-editor/actions/markdown-toolbar-status.js +124 -0
  166. package/blazorGlobalSrc/rich-text-editor/actions/paste-clean-up.d.ts +86 -0
  167. package/blazorGlobalSrc/rich-text-editor/actions/paste-clean-up.js +1071 -0
  168. package/blazorGlobalSrc/rich-text-editor/actions/quick-toolbar.d.ts +151 -0
  169. package/blazorGlobalSrc/rich-text-editor/actions/quick-toolbar.js +548 -0
  170. package/blazorGlobalSrc/rich-text-editor/actions/resize.d.ts +37 -0
  171. package/blazorGlobalSrc/rich-text-editor/actions/resize.js +188 -0
  172. package/blazorGlobalSrc/rich-text-editor/actions/sanitize-helper.d.ts +11 -0
  173. package/blazorGlobalSrc/rich-text-editor/actions/sanitize-helper.js +168 -0
  174. package/blazorGlobalSrc/rich-text-editor/actions/toolbar-action.d.ts +18 -0
  175. package/blazorGlobalSrc/rich-text-editor/actions/toolbar-action.js +76 -0
  176. package/blazorGlobalSrc/rich-text-editor/actions/toolbar.d.ts +185 -0
  177. package/blazorGlobalSrc/rich-text-editor/actions/toolbar.js +512 -0
  178. package/blazorGlobalSrc/rich-text-editor/actions/xhtml-validation.d.ts +25 -0
  179. package/blazorGlobalSrc/rich-text-editor/actions/xhtml-validation.js +166 -0
  180. package/blazorGlobalSrc/rich-text-editor/actions.d.ts +26 -0
  181. package/blazorGlobalSrc/rich-text-editor/actions.js +30 -0
  182. package/blazorGlobalSrc/rich-text-editor/audio.d.ts +4 -0
  183. package/blazorGlobalSrc/rich-text-editor/audio.js +8 -0
  184. package/blazorGlobalSrc/rich-text-editor/base/classes.d.ts +628 -0
  185. package/blazorGlobalSrc/rich-text-editor/base/classes.js +129 -0
  186. package/blazorGlobalSrc/rich-text-editor/base/constant.d.ts +808 -0
  187. package/blazorGlobalSrc/rich-text-editor/base/constant.js +334 -0
  188. package/blazorGlobalSrc/rich-text-editor/base/enum.d.ts +81 -0
  189. package/blazorGlobalSrc/rich-text-editor/base/enum.js +37 -0
  190. package/blazorGlobalSrc/rich-text-editor/base/interface.d.ts +1577 -0
  191. package/blazorGlobalSrc/rich-text-editor/base/interface.js +194 -0
  192. package/blazorGlobalSrc/rich-text-editor/base/rich-text-editor-model.d.ts +1032 -0
  193. package/blazorGlobalSrc/rich-text-editor/base/rich-text-editor.d.ts +1699 -0
  194. package/blazorGlobalSrc/rich-text-editor/base/rich-text-editor.js +2645 -0
  195. package/blazorGlobalSrc/rich-text-editor/base/util.d.ts +212 -0
  196. package/blazorGlobalSrc/rich-text-editor/base/util.js +610 -0
  197. package/blazorGlobalSrc/rich-text-editor/base.d.ts +10 -0
  198. package/blazorGlobalSrc/rich-text-editor/base.js +13 -0
  199. package/blazorGlobalSrc/rich-text-editor/formatter/formatter.d.ts +87 -0
  200. package/blazorGlobalSrc/rich-text-editor/formatter/formatter.js +223 -0
  201. package/blazorGlobalSrc/rich-text-editor/formatter/html-formatter.d.ts +34 -0
  202. package/blazorGlobalSrc/rich-text-editor/formatter/html-formatter.js +44 -0
  203. package/blazorGlobalSrc/rich-text-editor/formatter/markdown-formatter.d.ts +39 -0
  204. package/blazorGlobalSrc/rich-text-editor/formatter/markdown-formatter.js +48 -0
  205. package/blazorGlobalSrc/rich-text-editor/formatter.d.ts +6 -0
  206. package/blazorGlobalSrc/rich-text-editor/formatter.js +10 -0
  207. package/blazorGlobalSrc/rich-text-editor/html-editor.d.ts +4 -0
  208. package/blazorGlobalSrc/rich-text-editor/html-editor.js +8 -0
  209. package/blazorGlobalSrc/rich-text-editor/image.d.ts +4 -0
  210. package/blazorGlobalSrc/rich-text-editor/image.js +8 -0
  211. package/blazorGlobalSrc/rich-text-editor/index.d.ts +9 -0
  212. package/blazorGlobalSrc/rich-text-editor/index.js +12 -0
  213. package/blazorGlobalSrc/rich-text-editor/link.d.ts +4 -0
  214. package/blazorGlobalSrc/rich-text-editor/link.js +8 -0
  215. package/blazorGlobalSrc/rich-text-editor/markdown-editor.d.ts +4 -0
  216. package/blazorGlobalSrc/rich-text-editor/markdown-editor.js +8 -0
  217. package/blazorGlobalSrc/rich-text-editor/models/default-locale.d.ts +25 -0
  218. package/blazorGlobalSrc/rich-text-editor/models/default-locale.js +391 -0
  219. package/blazorGlobalSrc/rich-text-editor/models/iframe-settings-model.d.ts +68 -0
  220. package/blazorGlobalSrc/rich-text-editor/models/iframe-settings.d.ts +61 -0
  221. package/blazorGlobalSrc/rich-text-editor/models/iframe-settings.js +60 -0
  222. package/blazorGlobalSrc/rich-text-editor/models/inline-mode-model.d.ts +24 -0
  223. package/blazorGlobalSrc/rich-text-editor/models/inline-mode.d.ts +20 -0
  224. package/blazorGlobalSrc/rich-text-editor/models/inline-mode.js +37 -0
  225. package/blazorGlobalSrc/rich-text-editor/models/items.d.ts +36 -0
  226. package/blazorGlobalSrc/rich-text-editor/models/items.js +1011 -0
  227. package/blazorGlobalSrc/rich-text-editor/models/models.d.ts +7 -0
  228. package/blazorGlobalSrc/rich-text-editor/models/models.js +4 -0
  229. package/blazorGlobalSrc/rich-text-editor/models/slash-menu-settings-model.d.ts +40 -0
  230. package/blazorGlobalSrc/rich-text-editor/models/slash-menu-settings.d.ts +50 -0
  231. package/blazorGlobalSrc/rich-text-editor/models/slash-menu-settings.js +143 -0
  232. package/blazorGlobalSrc/rich-text-editor/models/toolbar-settings-model.d.ts +1130 -0
  233. package/blazorGlobalSrc/rich-text-editor/models/toolbar-settings.d.ts +992 -0
  234. package/blazorGlobalSrc/rich-text-editor/models/toolbar-settings.js +510 -0
  235. package/blazorGlobalSrc/rich-text-editor/models.d.ts +4 -0
  236. package/blazorGlobalSrc/rich-text-editor/models.js +4 -0
  237. package/blazorGlobalSrc/rich-text-editor/quick-toolbar.d.ts +4 -0
  238. package/blazorGlobalSrc/rich-text-editor/quick-toolbar.js +8 -0
  239. package/blazorGlobalSrc/rich-text-editor/renderer/audio-module.d.ts +82 -0
  240. package/blazorGlobalSrc/rich-text-editor/renderer/audio-module.js +886 -0
  241. package/blazorGlobalSrc/rich-text-editor/renderer/content-renderer.d.ts +65 -0
  242. package/blazorGlobalSrc/rich-text-editor/renderer/content-renderer.js +49 -0
  243. package/blazorGlobalSrc/rich-text-editor/renderer/dialog-renderer.d.ts +39 -0
  244. package/blazorGlobalSrc/rich-text-editor/renderer/dialog-renderer.js +111 -0
  245. package/blazorGlobalSrc/rich-text-editor/renderer/iframe-content-renderer.d.ts +33 -0
  246. package/blazorGlobalSrc/rich-text-editor/renderer/iframe-content-renderer.js +101 -0
  247. package/blazorGlobalSrc/rich-text-editor/renderer/image-module.d.ts +199 -0
  248. package/blazorGlobalSrc/rich-text-editor/renderer/image-module.js +2494 -0
  249. package/blazorGlobalSrc/rich-text-editor/renderer/link-module.d.ts +63 -0
  250. package/blazorGlobalSrc/rich-text-editor/renderer/link-module.js +596 -0
  251. package/blazorGlobalSrc/rich-text-editor/renderer/markdown-renderer.d.ts +65 -0
  252. package/blazorGlobalSrc/rich-text-editor/renderer/markdown-renderer.js +38 -0
  253. package/blazorGlobalSrc/rich-text-editor/renderer/popup-renderer.d.ts +54 -0
  254. package/blazorGlobalSrc/rich-text-editor/renderer/popup-renderer.js +35 -0
  255. package/blazorGlobalSrc/rich-text-editor/renderer/render.d.ts +46 -0
  256. package/blazorGlobalSrc/rich-text-editor/renderer/render.js +70 -0
  257. package/blazorGlobalSrc/rich-text-editor/renderer/slash-menu.d.ts +20 -0
  258. package/blazorGlobalSrc/rich-text-editor/renderer/slash-menu.js +224 -0
  259. package/blazorGlobalSrc/rich-text-editor/renderer/table-module.d.ts +155 -0
  260. package/blazorGlobalSrc/rich-text-editor/renderer/table-module.js +2206 -0
  261. package/blazorGlobalSrc/rich-text-editor/renderer/toolbar-renderer.d.ts +131 -0
  262. package/blazorGlobalSrc/rich-text-editor/renderer/toolbar-renderer.js +747 -0
  263. package/blazorGlobalSrc/rich-text-editor/renderer/video-module.d.ts +120 -0
  264. package/blazorGlobalSrc/rich-text-editor/renderer/video-module.js +1507 -0
  265. package/blazorGlobalSrc/rich-text-editor/renderer/view-source.d.ts +74 -0
  266. package/blazorGlobalSrc/rich-text-editor/renderer/view-source.js +225 -0
  267. package/blazorGlobalSrc/rich-text-editor/renderer.d.ts +17 -0
  268. package/blazorGlobalSrc/rich-text-editor/renderer.js +21 -0
  269. package/blazorGlobalSrc/rich-text-editor/services/renderer-factory.d.ts +33 -0
  270. package/blazorGlobalSrc/rich-text-editor/services/renderer-factory.js +29 -0
  271. package/blazorGlobalSrc/rich-text-editor/services/service-locator.d.ts +29 -0
  272. package/blazorGlobalSrc/rich-text-editor/services/service-locator.js +25 -0
  273. package/blazorGlobalSrc/rich-text-editor/services.d.ts +5 -0
  274. package/blazorGlobalSrc/rich-text-editor/services.js +9 -0
  275. package/blazorGlobalSrc/rich-text-editor/toolbar.d.ts +4 -0
  276. package/blazorGlobalSrc/rich-text-editor/toolbar.js +8 -0
  277. package/blazorGlobalSrc/rich-text-editor/video.d.ts +4 -0
  278. package/blazorGlobalSrc/rich-text-editor/video.js +8 -0
  279. package/blazorGlobalSrc/rich-text-editor.d.ts +4 -0
  280. package/blazorGlobalSrc/rich-text-editor.js +8 -0
  281. package/blazorGlobalSrc/selection/index.d.ts +4 -0
  282. package/blazorGlobalSrc/selection/index.js +8 -0
  283. package/blazorGlobalSrc/selection/selection.d.ts +244 -0
  284. package/blazorGlobalSrc/selection/selection.js +309 -0
  285. package/dist/ej2-richtexteditor.umd.min.js +1 -1
  286. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  287. package/dist/es6/ej2-richtexteditor.es2015.js +6 -4
  288. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  289. package/dist/es6/ej2-richtexteditor.es5.js +6 -4
  290. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  291. package/helpers/e2e/index.d.ts +1 -0
  292. package/helpers/e2e/index.js +8 -0
  293. package/helpers/e2e/rte-helper.d.ts +79 -0
  294. package/helpers/e2e/rte-helper.js +81 -0
  295. package/package.json +1 -1
  296. package/src/editor-manager/plugin/dom-tree.js +6 -4
  297. package/src/global.d.ts +1 -0
  298. package/styles/bds-lite.css +7 -17
  299. package/styles/bds.css +11 -22
  300. package/styles/bootstrap-dark-lite.css +3 -13
  301. package/styles/bootstrap-dark.css +3 -14
  302. package/styles/bootstrap-lite.css +3 -13
  303. package/styles/bootstrap.css +3 -14
  304. package/styles/bootstrap4-lite.css +3 -13
  305. package/styles/bootstrap4.css +3 -14
  306. package/styles/bootstrap5-dark-lite.css +3 -13
  307. package/styles/bootstrap5-dark.css +3 -14
  308. package/styles/bootstrap5-lite.css +3 -13
  309. package/styles/bootstrap5.3-lite.css +3 -13
  310. package/styles/bootstrap5.3.css +3 -14
  311. package/styles/bootstrap5.css +3 -14
  312. package/styles/fabric-dark-lite.css +3 -13
  313. package/styles/fabric-dark.css +3 -14
  314. package/styles/fabric-lite.css +3 -13
  315. package/styles/fabric.css +3 -14
  316. package/styles/fluent-dark-lite.css +3 -13
  317. package/styles/fluent-dark.css +3 -14
  318. package/styles/fluent-lite.css +3 -13
  319. package/styles/fluent.css +3 -14
  320. package/styles/fluent2-lite.css +3 -13
  321. package/styles/fluent2.css +3 -14
  322. package/styles/highcontrast-light-lite.css +3 -13
  323. package/styles/highcontrast-light.css +3 -14
  324. package/styles/highcontrast-lite.css +3 -13
  325. package/styles/highcontrast.css +3 -14
  326. package/styles/material-dark-lite.css +3 -13
  327. package/styles/material-dark.css +3 -14
  328. package/styles/material-lite.css +3 -13
  329. package/styles/material.css +3 -14
  330. package/styles/material3-dark-lite.css +3 -13
  331. package/styles/material3-dark.css +3 -14
  332. package/styles/material3-lite.css +3 -13
  333. package/styles/material3.css +3 -14
  334. package/styles/rich-text-editor/_bds-definition.scss +2 -2
  335. package/styles/rich-text-editor/_bigger.scss +0 -1
  336. package/styles/rich-text-editor/_layout.scss +0 -9
  337. package/styles/rich-text-editor/_theme.scss +3 -0
  338. package/styles/rich-text-editor/bds.css +11 -22
  339. package/styles/rich-text-editor/bootstrap-dark.css +3 -14
  340. package/styles/rich-text-editor/bootstrap.css +3 -14
  341. package/styles/rich-text-editor/bootstrap4.css +3 -14
  342. package/styles/rich-text-editor/bootstrap5-dark.css +3 -14
  343. package/styles/rich-text-editor/bootstrap5.3.css +3 -14
  344. package/styles/rich-text-editor/bootstrap5.css +3 -14
  345. package/styles/rich-text-editor/fabric-dark.css +3 -14
  346. package/styles/rich-text-editor/fabric.css +3 -14
  347. package/styles/rich-text-editor/fluent-dark.css +3 -14
  348. package/styles/rich-text-editor/fluent.css +3 -14
  349. package/styles/rich-text-editor/fluent2.css +3 -14
  350. package/styles/rich-text-editor/highcontrast-light.css +3 -14
  351. package/styles/rich-text-editor/highcontrast.css +3 -14
  352. package/styles/rich-text-editor/material-dark.css +3 -14
  353. package/styles/rich-text-editor/material.css +3 -14
  354. package/styles/rich-text-editor/material3-dark.css +3 -14
  355. package/styles/rich-text-editor/material3.css +3 -14
  356. package/styles/rich-text-editor/tailwind-dark.css +3 -14
  357. package/styles/rich-text-editor/tailwind.css +3 -14
  358. package/styles/rich-text-editor/tailwind3.css +3 -14
  359. package/styles/tailwind-dark-lite.css +3 -13
  360. package/styles/tailwind-dark.css +3 -14
  361. package/styles/tailwind-lite.css +3 -13
  362. package/styles/tailwind.css +3 -14
  363. package/styles/tailwind3-lite.css +3 -13
  364. package/styles/tailwind3.css +3 -14
  365. package/tslint.json +111 -0
@@ -0,0 +1,1503 @@
1
+ define(["require", "exports", "./../base/constant", "@syncfusion/ej2-base", "./dom-node", "./../../common/constant", "@syncfusion/ej2-base", "../../common/util", "@syncfusion/ej2-base", "./inserthtml", "./dom-tree"], function (require, exports, CONSTANT, ej2_base_1, dom_node_1, EVENTS, ej2_base_2, util_1, ej2_base_3, inserthtml_1, dom_tree_1) {
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ var Lists = (function () {
5
+ function Lists(parent) {
6
+ this.listTabIndentation = false;
7
+ this.parent = parent;
8
+ this.domNode = this.parent.domNode;
9
+ this.addEventListener();
10
+ }
11
+ Lists.prototype.addEventListener = function () {
12
+ this.parent.observer.on(EVENTS.LIST_TYPE, this.applyListsHandler, this);
13
+ this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);
14
+ this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);
15
+ this.parent.observer.on(EVENTS.SPACE_ACTION, this.spaceKeyAction, this);
16
+ this.parent.observer.on(EVENTS.INTERNAL_DESTROY, this.destroy, this);
17
+ };
18
+ Lists.prototype.removeEventListener = function () {
19
+ this.parent.observer.off(EVENTS.LIST_TYPE, this.applyListsHandler);
20
+ this.parent.observer.off(EVENTS.KEY_UP_HANDLER, this.onKeyUp);
21
+ this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler);
22
+ this.parent.observer.off(EVENTS.SPACE_ACTION, this.spaceKeyAction);
23
+ this.parent.observer.off(EVENTS.INTERNAL_DESTROY, this.destroy);
24
+ };
25
+ Lists.prototype.testList = function (elem) {
26
+ var olListRegex = [/^[\d]+[.]+$/,
27
+ /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,
28
+ /^[a-zA-Z][.]+$/];
29
+ var elementStart = !ej2_base_3.isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;
30
+ if (!ej2_base_3.isNullOrUndefined(elementStart)) {
31
+ for (var i = 0; i < olListRegex.length; i++) {
32
+ if (olListRegex[i].test(elementStart)) {
33
+ return true;
34
+ }
35
+ }
36
+ }
37
+ return false;
38
+ };
39
+ Lists.prototype.testCurrentList = function (range) {
40
+ var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];
41
+ if (!ej2_base_3.isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {
42
+ var currentContent = range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim();
43
+ for (var i = 0; i < olListStartRegex.length; i++) {
44
+ if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {
45
+ return true;
46
+ }
47
+ }
48
+ }
49
+ return false;
50
+ };
51
+ Lists.prototype.createAutoList = function (enterKey, shiftEnterKey) {
52
+ var autoListRules = {
53
+ BR: { BR: true, P: true, DIV: true },
54
+ P: { BR: false, P: true, DIV: true },
55
+ DIV: { BR: false, P: true, DIV: true }
56
+ };
57
+ if (autoListRules[enterKey] && autoListRules[enterKey][shiftEnterKey] !== undefined) {
58
+ return autoListRules[enterKey][shiftEnterKey];
59
+ }
60
+ return false;
61
+ };
62
+ Lists.prototype.isInsideSameListType = function (startNode, startElementOLTest) {
63
+ if (!startNode) {
64
+ return false;
65
+ }
66
+ var listItem = startNode.closest('li');
67
+ if (!listItem) {
68
+ return false;
69
+ }
70
+ var parentList = listItem.closest('ul, ol');
71
+ if (!parentList) {
72
+ return false;
73
+ }
74
+ return (parentList.tagName === 'OL' && startElementOLTest) || (parentList.tagName === 'UL' && !startElementOLTest);
75
+ };
76
+ Lists.prototype.spaceList = function (e) {
77
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
78
+ this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
79
+ var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
80
+ var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
81
+ var preElement = startNode.previousElementSibling;
82
+ var nextElement = startNode.nextElementSibling;
83
+ var preElemULStart = !ej2_base_3.isNullOrUndefined(preElement) ?
84
+ preElement.innerText.trim().substring(0, 1) : null;
85
+ var nextElemULStart = !ej2_base_3.isNullOrUndefined(nextElement) ?
86
+ nextElement.innerText.trim().substring(0, 1) : null;
87
+ var startElementOLTest = this.testCurrentList(range);
88
+ var preElementOLTest = this.testList(preElement);
89
+ var nextElementOLTest = this.testList(nextElement);
90
+ var isInsideSameListType = this.isInsideSameListType(startNode, startElementOLTest);
91
+ var nextElementBRTest = range.startContainer.previousElementSibling && range.startContainer.previousElementSibling.tagName === 'BR';
92
+ if (!isInsideSameListType && !preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*' && (this.createAutoList(e.enterKey, e.shiftEnterKey) || !nextElementBRTest)) {
93
+ var brElement = ej2_base_1.createElement('br');
94
+ if (startElementOLTest) {
95
+ range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
96
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
97
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
98
+ }
99
+ this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
100
+ e.event.preventDefault();
101
+ }
102
+ else if (range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||
103
+ range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '-') {
104
+ range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
105
+ if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
106
+ this.parent.domNode.insertAfter(brElement, range.startContainer);
107
+ }
108
+ this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
109
+ e.event.preventDefault();
110
+ }
111
+ }
112
+ };
113
+ Lists.prototype.enterList = function (e) {
114
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
115
+ var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :
116
+ range.startContainer.parentElement.closest('LI');
117
+ var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :
118
+ range.endContainer.parentElement.closest('LI');
119
+ var hasMediaElem = false;
120
+ if (!ej2_base_3.isNullOrUndefined(startNode)) {
121
+ var videoElemList = startNode.querySelectorAll('.e-video-clickelem');
122
+ var embedVideoElem = videoElemList.length > 0 && videoElemList[0].childNodes[0].nodeName === 'IFRAME';
123
+ hasMediaElem = startNode.querySelectorAll('IMG').length > 0 || startNode.querySelectorAll('AUDIO').length > 0 || startNode.querySelectorAll('VIDEO').length > 0 || embedVideoElem;
124
+ }
125
+ var startNodeParent;
126
+ var parentOfCurrentOLUL;
127
+ if (startNode) {
128
+ startNodeParent = startNode.parentElement;
129
+ if (startNodeParent) {
130
+ parentOfCurrentOLUL = startNodeParent.parentElement;
131
+ }
132
+ }
133
+ var tableElement = !ej2_base_3.isNullOrUndefined(startNode) ? startNode.querySelector('TABLE') : null;
134
+ if (!ej2_base_3.isNullOrUndefined(startNode) && !ej2_base_3.isNullOrUndefined(endNode) && startNode === endNode && startNode.tagName === 'LI' &&
135
+ startNode.textContent.trim() === '' && !hasMediaElem && ej2_base_3.isNullOrUndefined(tableElement)) {
136
+ if (startNode.innerHTML.indexOf('&nbsp;') >= 0) {
137
+ return;
138
+ }
139
+ if (startNode.textContent.charCodeAt(0) === 65279) {
140
+ startNode.textContent = '';
141
+ }
142
+ if (ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('UL')) && ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('OL'))) {
143
+ if (!ej2_base_3.isNullOrUndefined(startNode.nextElementSibling)) {
144
+ var nearBlockNode = this.parent.domNode.blockParentNode(startNode);
145
+ this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);
146
+ }
147
+ var insertTag = void 0;
148
+ if (e.enterAction === 'DIV') {
149
+ insertTag = ej2_base_1.createElement('div');
150
+ insertTag.innerHTML = '<br>';
151
+ }
152
+ else if (e.enterAction === 'P') {
153
+ insertTag = ej2_base_1.createElement('p');
154
+ insertTag.innerHTML = '<br>';
155
+ }
156
+ else {
157
+ insertTag = ej2_base_1.createElement('br');
158
+ }
159
+ var immediateBlock = this.domNode.getImmediateBlockNode(range.startContainer);
160
+ var _a = this.applyFormattingFromRange(insertTag, range, immediateBlock, e.enterAction), formattedElement = _a.formattedElement, cursorTarget = _a.cursorTarget;
161
+ insertTag = formattedElement;
162
+ if (!ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL) && parentOfCurrentOLUL.nodeName === 'BLOCKQUOTE') {
163
+ this.parent.observer.notify('blockquote_list_handled', {});
164
+ }
165
+ this.parent.domNode.insertAfter(insertTag, startNodeParent);
166
+ e.event.preventDefault();
167
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, cursorTarget, 0);
168
+ if (startNodeParent.textContent === '' && (startNodeParent.querySelectorAll('audio,video,table').length === 0)) {
169
+ ej2_base_1.detach(startNodeParent);
170
+ }
171
+ else {
172
+ ej2_base_1.detach(startNode);
173
+ }
174
+ }
175
+ if (!ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL) && (!ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('UL')) || !ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('OL'))) &&
176
+ parentOfCurrentOLUL.nodeName === 'LI' && parentOfCurrentOLUL.style.listStyleType === 'none' &&
177
+ parentOfCurrentOLUL.textContent === '' && startNode.textContent === '' && startNode === startNodeParent.firstElementChild &&
178
+ ej2_base_3.isNullOrUndefined(startNode.nextSibling)) {
179
+ ej2_base_1.detach(startNodeParent);
180
+ parentOfCurrentOLUL.style.removeProperty('list-style-type');
181
+ e.event.preventDefault();
182
+ }
183
+ }
184
+ this.handleNestedEnterKeyForLists(e, parentOfCurrentOLUL, startNode, startNodeParent);
185
+ };
186
+ Lists.prototype.applyFormattingFromRange = function (element, range, blockNode, enterAction) {
187
+ var cursorTarget = element;
188
+ var formatTags = [];
189
+ if (blockNode) {
190
+ var currentNode = range.startContainer;
191
+ var blockElements = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'ul', 'ol', 'table', 'tr', 'td', 'th'];
192
+ while (currentNode && currentNode !== blockNode) {
193
+ var nodeName = currentNode.nodeName.toLowerCase();
194
+ if (blockElements.indexOf(nodeName) === -1 && currentNode.nodeType === Node.ELEMENT_NODE) {
195
+ formatTags.push({
196
+ tag: nodeName,
197
+ element: currentNode
198
+ });
199
+ }
200
+ currentNode = currentNode.parentNode;
201
+ }
202
+ if (formatTags.length > 0) {
203
+ element = (enterAction === 'BR') ? ej2_base_1.createElement('DIV') : element;
204
+ element.innerHTML = '';
205
+ var currentElement_1 = element;
206
+ formatTags.reverse().forEach(function (format) {
207
+ var newElement = ej2_base_1.createElement(format.tag);
208
+ Array.from(format.element.attributes).forEach(function (attr) {
209
+ newElement.setAttribute(attr.name, attr.value);
210
+ });
211
+ currentElement_1.appendChild(newElement);
212
+ currentElement_1 = newElement;
213
+ });
214
+ var brElement = ej2_base_1.createElement('br');
215
+ currentElement_1.appendChild(brElement);
216
+ cursorTarget = currentElement_1;
217
+ }
218
+ }
219
+ return { formattedElement: (enterAction === 'BR' && formatTags.length > 0) ? element.firstChild : element, cursorTarget: cursorTarget };
220
+ };
221
+ Lists.prototype.handleNestedEnterKeyForLists = function (e, parentOfCurrentOLUL, startNode, startNodeParent) {
222
+ var hasIgnoredElement = false;
223
+ if (!ej2_base_3.isNullOrUndefined(startNode) && startNode.querySelectorAll('audio,video,table,img').length > 0) {
224
+ hasIgnoredElement = true;
225
+ }
226
+ if (!ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL) && (!ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('UL')) || !ej2_base_3.isNullOrUndefined(parentOfCurrentOLUL.closest('OL')) || startNodeParent.nodeName === 'UL' || startNodeParent.nodeName === 'OL') &&
227
+ (parentOfCurrentOLUL.nodeName === 'LI' || startNode.nodeName === 'LI') && (parentOfCurrentOLUL.style.listStyleType === 'none' || parentOfCurrentOLUL.style.listStyleType === '') &&
228
+ parentOfCurrentOLUL.textContent !== '' && (!ej2_base_3.isNullOrUndefined(startNode.lastElementChild) && startNode.lastElementChild.textContent !== '') && startNode.firstElementChild && (startNode.firstElementChild.textContent === '' && !hasIgnoredElement) && (startNode === startNodeParent.firstElementChild || startNode.nodeName === 'LI')) {
229
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
230
+ this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
231
+ this.domNode.setMarker(this.saveSelection);
232
+ e.event.preventDefault();
233
+ var nodes = [];
234
+ if (startNode === startNodeParent.firstElementChild) {
235
+ nodes.push(startNodeParent.firstElementChild);
236
+ }
237
+ else if (startNode.nodeName === 'LI') {
238
+ nodes.push(startNode);
239
+ }
240
+ this.revertList(nodes, e);
241
+ this.revertClean();
242
+ this.saveSelection = this.domNode.saveMarker(this.saveSelection);
243
+ this.saveSelection.restore();
244
+ }
245
+ };
246
+ Lists.prototype.backspaceList = function (e) {
247
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
248
+ var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
249
+ var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
250
+ startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;
251
+ endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
252
+ if (!ej2_base_3.isNullOrUndefined(startNode) && startNode.closest('li')) {
253
+ var listCursorInfo = this.getListCursorInfo(range);
254
+ var isFirst = startNode.previousElementSibling === null;
255
+ var allowedCursorSelections = ['StartParent'];
256
+ var allowedSelections = ['SingleFull', 'MultipleFull'];
257
+ var blockNodes = this.parent.domNode.blockNodes();
258
+ var isAllListSelected = this.isAllListNodesSelected(startNode.closest('li').parentElement);
259
+ var hasIndent = listCursorInfo.position === 'StartNested' && startNode && startNode.parentElement &&
260
+ startNode.parentElement.closest('li') && startNode.parentElement.closest('li').getAttribute('style')
261
+ && startNode.parentElement.closest('li').getAttribute('style').indexOf('list-style-type: none;') !== -1;
262
+ if (isFirst && (allowedCursorSelections.indexOf(listCursorInfo.position) > -1 || hasIndent)) {
263
+ e.event.preventDefault();
264
+ var saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
265
+ this.domNode.setMarker(saveSelection);
266
+ this.revertList([blockNodes[0]], e);
267
+ this.revertClean();
268
+ saveSelection = this.domNode.saveMarker(saveSelection);
269
+ saveSelection.restore();
270
+ return;
271
+ }
272
+ else if (allowedSelections.indexOf(listCursorInfo.selectionState) > -1 && isAllListSelected) {
273
+ e.event.preventDefault();
274
+ blockNodes[0].innerHTML = '';
275
+ range.deleteContents();
276
+ if (blockNodes.length > 1) {
277
+ for (var i = 0; i < blockNodes.length; i++) {
278
+ if (i === 0) {
279
+ continue;
280
+ }
281
+ var list = blockNodes[i];
282
+ ej2_base_1.detach(list);
283
+ }
284
+ }
285
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, blockNodes[0], 0);
286
+ return;
287
+ }
288
+ }
289
+ if (startNode === endNode && !ej2_base_3.isNullOrUndefined(ej2_base_3.closest(startNode, 'li')) &&
290
+ ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||
291
+ (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {
292
+ startNode.textContent = '';
293
+ }
294
+ if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&
295
+ ej2_base_3.isNullOrUndefined(startNode.previousElementSibling)) {
296
+ startNode.removeAttribute('style');
297
+ }
298
+ if (startNode === endNode && startNode.textContent === '') {
299
+ if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {
300
+ ej2_base_1.detach(startNode);
301
+ }
302
+ else if (startNode.closest('ul') || startNode.closest('ol')) {
303
+ var parentList = !ej2_base_3.isNullOrUndefined(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');
304
+ if (parentList.firstElementChild === startNode && !ej2_base_3.isNullOrUndefined(parentList.children[1]) &&
305
+ (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {
306
+ if (parentList.tagName === parentList.children[1].tagName) {
307
+ while (parentList.children[1].lastChild) {
308
+ this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);
309
+ }
310
+ ej2_base_1.detach(parentList.children[1]);
311
+ }
312
+ else {
313
+ parentList.parentElement.insertBefore(parentList.children[1], parentList);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ else if (!ej2_base_3.isNullOrUndefined(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&
319
+ (!ej2_base_3.isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||
320
+ startNode.childNodes[1].nodeName === 'OL'))) {
321
+ var parentList = !ej2_base_3.isNullOrUndefined(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');
322
+ if (parentList.tagName === startNode.childNodes[1].nodeName) {
323
+ while (startNode.childNodes[1].lastChild) {
324
+ this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);
325
+ }
326
+ ej2_base_1.detach(startNode.childNodes[1]);
327
+ }
328
+ else {
329
+ parentList.parentElement.insertBefore(startNode.children[1], parentList);
330
+ }
331
+ }
332
+ if (startNode === endNode && startNode.tagName === 'LI' && this.isAtListStart(startNode, range) && !ej2_base_3.isNullOrUndefined(startNode.closest('ul, ol'))) {
333
+ var currentList = startNode.closest('ul, ol');
334
+ var parentListItem = currentList.parentElement;
335
+ var prevSibling = startNode.previousElementSibling;
336
+ var nestedList = startNode.querySelector('ol, ul');
337
+ if ((!ej2_base_3.isNullOrUndefined(parentListItem) && parentListItem.tagName === 'LI' && !ej2_base_3.isNullOrUndefined(currentList.previousSibling)) || (!ej2_base_3.isNullOrUndefined(prevSibling) && prevSibling.nodeName === 'LI')) {
338
+ if (!ej2_base_3.isNullOrUndefined(nestedList) && (ej2_base_3.isNullOrUndefined(prevSibling) || !ej2_base_3.isNullOrUndefined(prevSibling))) {
339
+ e.event.preventDefault();
340
+ this.handleNestedListRearrangement(startNode, currentList, parentListItem, prevSibling, nestedList);
341
+ }
342
+ }
343
+ }
344
+ this.removeList(range, e);
345
+ this.firstListBackSpace(range, e);
346
+ };
347
+ Lists.prototype.handleNestedListRearrangement = function (startNode, currentList, parentListItem, prevSibling, nestedList) {
348
+ var cursorOffset = this.parent.nodeSelection.findLastTextPosition(!ej2_base_3.isNullOrUndefined(prevSibling) ? prevSibling : currentList.previousSibling);
349
+ var childNodes = Array.from(startNode.childNodes);
350
+ for (var i = 0; i < childNodes.length; i++) {
351
+ var child = childNodes[i];
352
+ if (child === nestedList && nestedList) {
353
+ while (nestedList.firstChild) {
354
+ currentList.insertBefore(nestedList.firstChild, startNode);
355
+ var emptyOL = startNode.querySelector('OL:empty,UL:empty');
356
+ if (emptyOL) {
357
+ startNode.remove();
358
+ }
359
+ }
360
+ }
361
+ else {
362
+ if (!ej2_base_3.isNullOrUndefined(prevSibling)) {
363
+ cursorOffset.node.parentElement.closest('li').appendChild(child);
364
+ }
365
+ else {
366
+ parentListItem.insertBefore(child, currentList);
367
+ }
368
+ }
369
+ }
370
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, cursorOffset.node, cursorOffset.offset);
371
+ };
372
+ Lists.prototype.findPreviousElementForCursor = function (currentElement) {
373
+ var previousNode = null;
374
+ if (currentElement.previousElementSibling) {
375
+ previousNode = currentElement.previousElementSibling;
376
+ }
377
+ else if (currentElement.parentElement && currentElement.parentElement !== this.parent.editableElement) {
378
+ previousNode = currentElement.parentElement;
379
+ }
380
+ return previousNode;
381
+ };
382
+ Lists.prototype.handleCursorPositioningAfterListRemoval = function (previousNode) {
383
+ if (!previousNode) {
384
+ return;
385
+ }
386
+ if (this.parent.userAgentData.isSafari()) {
387
+ var cursorPosition = this.parent.nodeSelection.findLastTextPosition(previousNode);
388
+ if (cursorPosition) {
389
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, cursorPosition.node, cursorPosition.offset);
390
+ }
391
+ else {
392
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, previousNode, previousNode.childNodes.length);
393
+ }
394
+ }
395
+ };
396
+ Lists.prototype.removeList = function (range, e) {
397
+ var _this = this;
398
+ var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
399
+ var endNode = (!ej2_base_3.isNullOrUndefined(range.endContainer.parentElement.closest('li')) && range.endContainer.parentElement.closest('li').childElementCount > 1 && range.endContainer.nodeName === '#text') ? range.endContainer : this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
400
+ var parentList = (range.startContainer.nodeName === '#text') ? range.startContainer.parentElement.closest('li') : range.startContainer.closest('li');
401
+ var endParentList = (range.endContainer.nodeName === '#text') ? range.endContainer.parentElement.closest('li') : range.endContainer.closest('li');
402
+ var fullContent = '';
403
+ if (!ej2_base_3.isNullOrUndefined(parentList) && !ej2_base_3.isNullOrUndefined(parentList.firstChild)) {
404
+ parentList.childNodes.forEach(function (e) {
405
+ fullContent = fullContent + e.textContent;
406
+ });
407
+ }
408
+ startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;
409
+ endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
410
+ startNode = startNode.nodeName !== 'LI' && !ej2_base_3.isNullOrUndefined(startNode.closest('LI')) ? startNode.closest('LI') : startNode;
411
+ endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !ej2_base_3.isNullOrUndefined(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
412
+ if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&
413
+ ej2_base_3.isNullOrUndefined(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&
414
+ ej2_base_3.isNullOrUndefined(startNode.previousElementSibling) && range.startOffset === 0) ||
415
+ (ej2_base_1.Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&
416
+ range.startOffset === 0 && range.endOffset === 1)) {
417
+ var previousNode_1;
418
+ if (ej2_base_1.Browser.userAgent.indexOf('Firefox') !== -1) {
419
+ previousNode_1 = this.findPreviousElementForCursor(range.commonAncestorContainer.childNodes[0]);
420
+ ej2_base_1.detach(range.commonAncestorContainer.childNodes[0]);
421
+ }
422
+ else if (range.commonAncestorContainer.nodeName === 'LI') {
423
+ previousNode_1 = this.findPreviousElementForCursor(range.commonAncestorContainer.parentElement);
424
+ ej2_base_1.detach(range.commonAncestorContainer.parentElement);
425
+ }
426
+ else {
427
+ previousNode_1 = this.findPreviousElementForCursor(range.commonAncestorContainer);
428
+ ej2_base_1.detach(range.commonAncestorContainer);
429
+ }
430
+ e.event.preventDefault();
431
+ this.handleCursorPositioningAfterListRemoval(previousNode_1);
432
+ parentList = (range.startContainer.nodeName === '#text') ? range.startContainer.parentElement.closest('li') : range.startContainer.closest('li');
433
+ }
434
+ var previousNode;
435
+ if ((!ej2_base_3.isNullOrUndefined(endParentList) && range.commonAncestorContainer === this.parent.editableElement) || (!ej2_base_3.isNullOrUndefined(parentList) && (!range.collapsed || (parentList.textContent.trim() === '' && ej2_base_3.isNullOrUndefined(parentList.previousElementSibling) && ej2_base_3.isNullOrUndefined(parentList.nextElementSibling))) && parentList.textContent === fullContent)) {
436
+ range.deleteContents();
437
+ var listItems_1 = this.parent.editableElement.querySelectorAll('li');
438
+ var _loop_1 = function (i) {
439
+ if (!ej2_base_3.isNullOrUndefined(listItems_1[i].childNodes)) {
440
+ listItems_1[i].childNodes.forEach(function (child) {
441
+ if (child.nodeName === 'A' && child.textContent === '') {
442
+ listItems_1[i].removeChild(child);
443
+ }
444
+ });
445
+ }
446
+ if ((!listItems_1[i].firstChild || listItems_1[i].textContent.trim() === '') && (listItems_1[i] === startNode || listItems_1[i] === endNode)) {
447
+ previousNode = this_1.findPreviousElementForCursor(listItems_1[i]);
448
+ listItems_1[i].parentNode.removeChild(listItems_1[i]);
449
+ }
450
+ };
451
+ var this_1 = this;
452
+ for (var i = 0; i < listItems_1.length; i++) {
453
+ _loop_1(i);
454
+ }
455
+ this.parent.editableElement.querySelectorAll('ol').forEach(function (ol) {
456
+ if (!ol.firstChild || ol.textContent.trim() === '') {
457
+ previousNode = _this.findPreviousElementForCursor(ol);
458
+ ol.parentNode.removeChild(ol);
459
+ }
460
+ });
461
+ this.parent.editableElement.querySelectorAll('ul').forEach(function (ul) {
462
+ if (!ul.firstChild || ul.textContent.trim() === '') {
463
+ previousNode = _this.findPreviousElementForCursor(ul);
464
+ ul.parentNode.removeChild(ul);
465
+ }
466
+ });
467
+ e.event.preventDefault();
468
+ this.handleCursorPositioningAfterListRemoval(previousNode);
469
+ }
470
+ };
471
+ Lists.prototype.onKeyUp = function (e) {
472
+ if (!ej2_base_3.isNullOrUndefined(this.commonLIParent) && !ej2_base_3.isNullOrUndefined(this.commonLIParent.querySelector('.removeList'))) {
473
+ var currentLIElem = this.commonLIParent.querySelector('.removeList');
474
+ while (!ej2_base_3.isNullOrUndefined(currentLIElem.firstChild)) {
475
+ this.parent.domNode.insertAfter(currentLIElem.firstChild, currentLIElem);
476
+ }
477
+ ej2_base_1.detach(currentLIElem);
478
+ }
479
+ if (e.event.keyCode === 13) {
480
+ var listElements = this.parent.editableElement.querySelectorAll('UL, OL');
481
+ for (var i = 0; i < listElements.length; i++) {
482
+ if (!ej2_base_3.isNullOrUndefined(listElements[i]) && !ej2_base_3.isNullOrUndefined(listElements[i].parentElement) && !ej2_base_3.isNullOrUndefined(listElements[i].previousElementSibling) && (listElements[i].parentElement.nodeName === 'UL' || listElements[i].parentElement.nodeName === 'OL')) {
483
+ listElements[i].previousElementSibling.appendChild(listElements[i]);
484
+ }
485
+ }
486
+ }
487
+ };
488
+ Lists.prototype.firstListBackSpace = function (range, _e) {
489
+ var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
490
+ var listItem = startNode.closest('LI');
491
+ if (!ej2_base_3.isNullOrUndefined(listItem) && !this.isAtListStart(listItem, range)) {
492
+ return;
493
+ }
494
+ if (!ej2_base_3.isNullOrUndefined(startNode.closest('OL'))) {
495
+ this.commonLIParent = startNode.closest('OL');
496
+ }
497
+ else if (!ej2_base_3.isNullOrUndefined(startNode.closest('UL'))) {
498
+ this.commonLIParent = startNode.closest('UL');
499
+ }
500
+ if (!ej2_base_3.isNullOrUndefined(listItem) && range.startOffset === 0 && range.endOffset === 0 &&
501
+ ej2_base_3.isNullOrUndefined(startNode.previousSibling) && !ej2_base_3.isNullOrUndefined(this.commonLIParent) && ej2_base_3.isNullOrUndefined(this.commonLIParent.previousSibling) &&
502
+ (ej2_base_3.isNullOrUndefined(this.commonLIParent.parentElement.closest('OL')) && ej2_base_3.isNullOrUndefined(this.commonLIParent.parentElement.closest('UL')) &&
503
+ ej2_base_3.isNullOrUndefined(this.commonLIParent.parentElement.closest('LI')))) {
504
+ var currentElem = ej2_base_1.createElement('P');
505
+ currentElem.innerHTML = '&#8203;';
506
+ startNode.classList.add('removeList');
507
+ this.commonLIParent.parentElement.insertBefore(currentElem, this.commonLIParent);
508
+ }
509
+ };
510
+ Lists.prototype.isAtListStart = function (startNode, range) {
511
+ if (startNode.nodeName !== 'LI') {
512
+ return false;
513
+ }
514
+ var listItem = startNode;
515
+ var firstTextNode = this.getFirstTextNode(listItem);
516
+ return firstTextNode === range.startContainer && range.startOffset === 0;
517
+ };
518
+ Lists.prototype.getFirstTextNode = function (element) {
519
+ if (element.nodeType === Node.TEXT_NODE) {
520
+ return element;
521
+ }
522
+ for (var i = 0; i < element.childNodes.length; i++) {
523
+ var firstTextNode = this.getFirstTextNode(element.childNodes[i]);
524
+ if (firstTextNode) {
525
+ return firstTextNode;
526
+ }
527
+ }
528
+ return null;
529
+ };
530
+ Lists.prototype.keyDownHandler = function (e) {
531
+ if (e.event.which === 13) {
532
+ this.enterList(e);
533
+ }
534
+ if (e.event.which === 32) {
535
+ this.spaceList(e);
536
+ }
537
+ if (e.event.which === 8) {
538
+ this.backspaceList(e);
539
+ }
540
+ if ((e.event.which === 46 && e.event.action === 'delete')) {
541
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
542
+ var commonAncestor = range.commonAncestorContainer;
543
+ var startEle = range.startContainer;
544
+ var endEle = range.endContainer;
545
+ var startNode = startEle.nodeType === 3 ? this.domNode.blockParentNode(startEle) : startEle;
546
+ var endNode = endEle.nodeType === 3 ? this.domNode.blockParentNode(endEle) : endEle;
547
+ if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode
548
+ && (!ej2_base_3.isNullOrUndefined(ej2_base_3.closest(startNode, 'ul')) || !ej2_base_3.isNullOrUndefined(ej2_base_3.closest(startNode, 'ol')))
549
+ && (!ej2_base_3.isNullOrUndefined(ej2_base_3.closest(endNode, 'ul')) || !ej2_base_3.isNullOrUndefined(ej2_base_3.closest(endNode, 'ol')))
550
+ && ((commonAncestor.lastElementChild === ej2_base_3.closest(endNode, 'li') && commonAncestor.lastChild !== endNode)) && !range.collapsed) {
551
+ if (this.areAllListItemsSelected(commonAncestor, range)) {
552
+ ej2_base_1.detach(commonAncestor);
553
+ }
554
+ }
555
+ this.removeList(range, e);
556
+ }
557
+ if (e.event.which === 9) {
558
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
559
+ if (!(e.event.action && e.event.action === 'indent')) {
560
+ this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
561
+ }
562
+ if (e.enableTabKey) {
563
+ this.handleListIndentation();
564
+ }
565
+ var blockNodes = void 0;
566
+ var startOffset = range.startOffset;
567
+ var endOffset = range.endOffset;
568
+ var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
569
+ var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
570
+ if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&
571
+ CONSTANT.IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {
572
+ return;
573
+ }
574
+ else {
575
+ if (!(e.event.action && (e.event.action === 'indent')) && !this.listTabIndentation) {
576
+ this.domNode.setMarker(this.saveSelection);
577
+ }
578
+ blockNodes = this.domNode.blockNodes();
579
+ }
580
+ var nodes = [];
581
+ var isNested = true;
582
+ for (var i = 0; i < blockNodes.length; i++) {
583
+ if (blockNodes[i].parentNode.tagName === 'LI') {
584
+ nodes.push(blockNodes[i].parentNode);
585
+ }
586
+ else if (!ej2_base_3.closest(blockNodes[i], 'OL') && !ej2_base_3.closest(blockNodes[i], 'UL') && ej2_base_3.closest(blockNodes[i], 'LI')) {
587
+ nodes.push(ej2_base_3.closest(blockNodes[i], 'LI'));
588
+ }
589
+ else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&
590
+ (blockNodes[i].childNodes[0].tagName !== 'OL' &&
591
+ blockNodes[i].childNodes[0].tagName !== 'UL')) {
592
+ nodes.push(blockNodes[i]);
593
+ }
594
+ }
595
+ if (nodes.length > 1 || nodes.length === 1) {
596
+ e.event.preventDefault();
597
+ e.event.stopPropagation();
598
+ this.currentAction = this.getAction(nodes[0]);
599
+ if (e.event.shiftKey && (!e.enableTabKey || (e.enableTabKey && !this.listTabIndentation))) {
600
+ this.revertList(nodes, e);
601
+ this.revertClean();
602
+ }
603
+ else if (!e.enableTabKey || (e.enableTabKey && !this.listTabIndentation)) {
604
+ isNested = this.nestedList(nodes);
605
+ }
606
+ if (isNested) {
607
+ this.cleanNode();
608
+ this.parent.editableElement.focus({ preventScroll: true });
609
+ }
610
+ if (!(e.event.action && (e.event.action === 'indent')) && !this.listTabIndentation) {
611
+ this.saveSelection = this.domNode.saveMarker(this.saveSelection);
612
+ this.saveSelection.restore();
613
+ if (e.callBack) {
614
+ e.callBack({
615
+ requestType: this.currentAction,
616
+ editorMode: 'HTML',
617
+ range: this.parent.nodeSelection.getRange(this.parent.currentDocument),
618
+ elements: this.parent.domNode.blockNodes(),
619
+ event: e.event
620
+ });
621
+ }
622
+ }
623
+ }
624
+ else {
625
+ if (!(e.event.action && (e.event.action === 'indent')) && !this.listTabIndentation) {
626
+ if (e.event && e.event.shiftKey && e.event.key === 'Tab') {
627
+ e.event.action = 'tab';
628
+ }
629
+ this.saveSelection = this.domNode.saveMarker(this.saveSelection);
630
+ this.saveSelection.restore();
631
+ }
632
+ }
633
+ this.listTabIndentation = false;
634
+ }
635
+ else {
636
+ switch (e.event.action) {
637
+ case 'ordered-list':
638
+ this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
639
+ e.event.preventDefault();
640
+ break;
641
+ case 'unordered-list':
642
+ this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
643
+ e.event.preventDefault();
644
+ break;
645
+ }
646
+ }
647
+ };
648
+ Lists.prototype.handleListIndentation = function () {
649
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
650
+ var parentNodeList = this.saveSelection.getParentNodeCollection(range);
651
+ if ((parentNodeList[0].nodeName === 'LI' || ej2_base_3.closest(parentNodeList[0], 'li'))
652
+ && !this.isCursorAtStartOfLI(range)) {
653
+ var startParentNode = parentNodeList[parentNodeList.length - 1];
654
+ var endParentNode = parentNodeList[0];
655
+ var startElementTextNode = range.startContainer;
656
+ if (startParentNode && endParentNode) {
657
+ range.deleteContents();
658
+ if (startParentNode !== endParentNode) {
659
+ var currentBlockNode = startElementTextNode;
660
+ while (currentBlockNode.parentElement) {
661
+ if (this.parent.domNode.isBlockNode(currentBlockNode.parentElement)) {
662
+ currentBlockNode = currentBlockNode.parentElement;
663
+ break;
664
+ }
665
+ currentBlockNode = currentBlockNode.parentElement;
666
+ }
667
+ var cursorPosition = void 0;
668
+ var tabSpaceHTML = '&nbsp;&nbsp;&nbsp;&nbsp;<span class="rte-tab-space"></span>';
669
+ if (this.parent.domNode.isBlockNode(startParentNode.lastChild)) {
670
+ startElementTextNode.nodeValue += '\u00A0\u00A0\u00A0\u00A0';
671
+ cursorPosition = startElementTextNode.nodeValue.length;
672
+ }
673
+ else {
674
+ startParentNode.innerHTML += tabSpaceHTML;
675
+ }
676
+ var listItemFirstChild = endParentNode.firstChild;
677
+ if (listItemFirstChild && this.parent.domNode.isBlockNode(listItemFirstChild)) {
678
+ while (listItemFirstChild.firstChild) {
679
+ currentBlockNode.appendChild(listItemFirstChild.firstChild);
680
+ }
681
+ listItemFirstChild.remove();
682
+ }
683
+ while (endParentNode.firstChild) {
684
+ if (this.parent.domNode.isBlockNode(endParentNode.firstChild)) {
685
+ this.parent.domNode.insertAfter(endParentNode.firstChild, currentBlockNode);
686
+ }
687
+ else {
688
+ startParentNode.appendChild(endParentNode.firstChild);
689
+ }
690
+ }
691
+ endParentNode.remove();
692
+ var tabSpanElement = startParentNode.querySelector('.rte-tab-space');
693
+ if (tabSpanElement && tabSpanElement.previousSibling) {
694
+ this.saveSelection.setCursorPoint(this.parent.currentDocument, tabSpanElement.previousSibling, tabSpanElement.previousSibling.textContent.length);
695
+ tabSpanElement.parentNode.removeChild(tabSpanElement);
696
+ }
697
+ else {
698
+ this.saveSelection.setCursorPoint(this.parent.currentDocument, startElementTextNode, cursorPosition);
699
+ }
700
+ }
701
+ else {
702
+ inserthtml_1.InsertHtml.Insert(this.parent.currentDocument, '&nbsp;&nbsp;&nbsp;&nbsp;');
703
+ }
704
+ this.listTabIndentation = true;
705
+ }
706
+ }
707
+ };
708
+ Lists.prototype.isCursorAtStartOfLI = function (range) {
709
+ var node = range.startContainer;
710
+ while (node && node.nodeName !== 'LI') {
711
+ node = node.parentNode;
712
+ }
713
+ if (!node) {
714
+ return false;
715
+ }
716
+ var tempRange = range.cloneRange();
717
+ tempRange.selectNodeContents(node);
718
+ tempRange.setEnd(range.startContainer, range.startOffset);
719
+ return tempRange.toString().trim() === '';
720
+ };
721
+ Lists.prototype.spaceKeyAction = function (e) {
722
+ if (e.event.which === 32) {
723
+ this.spaceList(e);
724
+ }
725
+ };
726
+ Lists.prototype.getAction = function (element) {
727
+ var parentNode = element.parentNode;
728
+ return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');
729
+ };
730
+ Lists.prototype.revertClean = function () {
731
+ var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');
732
+ for (var i = 0; i < collectionNodes.length; i++) {
733
+ var listNodes = collectionNodes[i].querySelectorAll('ul, ol');
734
+ if (listNodes.length > 0) {
735
+ for (var j = 0; j < listNodes.length; j++) {
736
+ var prevSibling = listNodes[j].previousSibling;
737
+ if (prevSibling && prevSibling.tagName === 'LI') {
738
+ prevSibling.appendChild(listNodes[j]);
739
+ }
740
+ }
741
+ }
742
+ }
743
+ };
744
+ Lists.prototype.noPreviousElement = function (elements) {
745
+ var firstNode;
746
+ var firstNodeOL;
747
+ var siblingListOL = elements.querySelectorAll('ol, ul');
748
+ var siblingListLI = elements
749
+ .querySelectorAll('li');
750
+ var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];
751
+ if (siblingListLI.length > 0 && (siblingListOL.length <= 1 || siblingListOL[0].childNodes.length > 1) && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {
752
+ firstNode = siblingListLI[0];
753
+ }
754
+ else {
755
+ firstNodeOL = siblingListOL[0];
756
+ }
757
+ if (firstNode) {
758
+ for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {
759
+ var nextSibling = h.nextSibling;
760
+ ej2_base_1.prepend([h], firstNode);
761
+ ej2_base_2.setStyleAttribute(elements, { 'list-style-type': 'none' });
762
+ ej2_base_2.setStyleAttribute(firstNode, { 'list-style-type': '' });
763
+ h = nextSibling;
764
+ }
765
+ }
766
+ else if (firstNodeOL) {
767
+ var nestedElement = ej2_base_1.createElement('li');
768
+ ej2_base_1.prepend([nestedElement], firstNodeOL);
769
+ for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {
770
+ var nextSibling = h.nextSibling;
771
+ nestedElement.appendChild(h);
772
+ h = nextSibling;
773
+ }
774
+ ej2_base_1.prepend([firstNodeOL], elements.parentNode);
775
+ ej2_base_1.detach(elements);
776
+ var nestedElementLI = ej2_base_1.createElement('li', { styles: 'list-style-type: none;' });
777
+ ej2_base_1.prepend([nestedElementLI], firstNodeOL.parentNode);
778
+ ej2_base_1.append([firstNodeOL], nestedElementLI);
779
+ }
780
+ else {
781
+ var nestedElementLI = ej2_base_1.createElement('li', { styles: 'list-style-type: none;' });
782
+ ej2_base_1.prepend([nestedElementLI], elements.parentNode);
783
+ var nestedElement = ej2_base_1.createElement(elements.parentNode.tagName);
784
+ ej2_base_1.prepend([nestedElement], nestedElementLI);
785
+ ej2_base_1.append([elements], nestedElement);
786
+ }
787
+ };
788
+ Lists.prototype.nestedList = function (elements) {
789
+ var isNested = false;
790
+ for (var i = 0; i < elements.length; i++) {
791
+ var prevSibling = this.domNode.getPreviousNode(elements[i]);
792
+ if (prevSibling) {
793
+ isNested = true;
794
+ var firstNode = void 0;
795
+ var firstNodeLI = void 0;
796
+ var siblingListOL = elements[i].querySelectorAll('ol, ul');
797
+ var siblingListLI = elements[i]
798
+ .querySelectorAll('li');
799
+ var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];
800
+ if (siblingListLI.length > 0 && (siblingListOL.length <= 1 || siblingListOL[0].childNodes.length > 1) && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {
801
+ firstNodeLI = siblingListLI[0];
802
+ }
803
+ else {
804
+ firstNode = siblingListOL[0];
805
+ }
806
+ if (firstNode) {
807
+ var nestedElement = ej2_base_1.createElement('li');
808
+ ej2_base_1.prepend([nestedElement], firstNode);
809
+ for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {
810
+ var nextSibling = h.nextSibling;
811
+ nestedElement.appendChild(h);
812
+ h = nextSibling;
813
+ }
814
+ ej2_base_1.append([firstNode], prevSibling);
815
+ ej2_base_1.detach(elements[i]);
816
+ }
817
+ else if (firstNodeLI) {
818
+ if (prevSibling.tagName === 'LI') {
819
+ for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {
820
+ var nextSibling = h.nextSibling;
821
+ ej2_base_1.prepend([h], firstNodeLI);
822
+ ej2_base_2.setStyleAttribute(elements[i], { 'list-style-type': 'none' });
823
+ ej2_base_2.setStyleAttribute(firstNodeLI, { 'list-style-type': '' });
824
+ h = nextSibling;
825
+ }
826
+ ej2_base_1.append([firstNodeLI.parentNode], prevSibling);
827
+ ej2_base_1.detach(elements[i]);
828
+ }
829
+ }
830
+ else {
831
+ if (prevSibling.tagName === 'LI') {
832
+ var nestedElement = ej2_base_1.createElement(elements[i].parentNode.tagName);
833
+ nestedElement.style.listStyleType =
834
+ elements[i].parentNode.style.listStyleType;
835
+ ej2_base_1.append([nestedElement], prevSibling);
836
+ ej2_base_1.append([elements[i]], nestedElement);
837
+ }
838
+ else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {
839
+ ej2_base_1.append([elements[i]], prevSibling);
840
+ }
841
+ }
842
+ }
843
+ else {
844
+ var element = elements[i];
845
+ isNested = true;
846
+ this.noPreviousElement(element);
847
+ }
848
+ }
849
+ return isNested;
850
+ };
851
+ Lists.prototype.isCursorBeforeTable = function (range) {
852
+ return range.startOffset === range.endOffset &&
853
+ range.startContainer.childNodes.length > 0 && !ej2_base_3.isNullOrUndefined(range.startContainer.childNodes[range.startOffset]) &&
854
+ range.startContainer.childNodes[range.startOffset].nodeName === 'TABLE';
855
+ };
856
+ Lists.prototype.isCursorAtEndOfTable = function (range) {
857
+ return (range.startOffset === range.endOffset &&
858
+ range.startContainer.childNodes.length > 0 && !ej2_base_3.isNullOrUndefined(range.startContainer.childNodes[range.startOffset - 1]) &&
859
+ range.startContainer.childNodes[range.startOffset - 1].nodeName === 'TABLE');
860
+ };
861
+ Lists.prototype.isListItemWithTableChild = function (node) {
862
+ return node.nodeName === 'LI' && !ej2_base_3.isNullOrUndefined(node.firstChild) &&
863
+ node.firstChild.nodeName === 'TABLE';
864
+ };
865
+ Lists.prototype.applyListsHandler = function (e) {
866
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
867
+ if (ej2_base_1.Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement) {
868
+ var startChildNodes = range.startContainer.childNodes;
869
+ var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :
870
+ range.startOffset]) || range.startContainer);
871
+ var endNode = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :
872
+ range.endOffset] || range.endContainer);
873
+ var lastSelectionNode = endNode.lastChild.nodeName === 'BR' ? (ej2_base_3.isNullOrUndefined(endNode.lastChild.previousSibling) ? endNode
874
+ : endNode.lastChild.previousSibling) : endNode.lastChild;
875
+ while (!ej2_base_3.isNullOrUndefined(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&
876
+ lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {
877
+ lastSelectionNode = lastSelectionNode.lastChild;
878
+ }
879
+ this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, lastSelectionNode, 0, lastSelectionNode.textContent.length);
880
+ range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
881
+ }
882
+ if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&
883
+ range.startOffset === range.endOffset && range.startOffset === 0 &&
884
+ this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName !== 'TABLE' &&
885
+ this.parent.editableElement.childNodes[0].nodeName !== 'IMG')) {
886
+ var focusNode = range.startContainer.childNodes[0];
887
+ this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);
888
+ range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
889
+ }
890
+ this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);
891
+ this.currentAction = e.subCommand;
892
+ this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;
893
+ this.domNode.setMarker(this.saveSelection);
894
+ var listsNodes = this.domNode.blockNodes(true);
895
+ if (e.enterAction === 'BR') {
896
+ if (this.isCursorBeforeTable(range)) {
897
+ listsNodes = [range.startContainer.childNodes[range.startOffset]];
898
+ }
899
+ else if (this.isCursorAtEndOfTable(range)) {
900
+ listsNodes = [range.startContainer.childNodes[range.startOffset - 1]];
901
+ }
902
+ else if (listsNodes.length === 1 && this.isListItemWithTableChild(listsNodes[0])) {
903
+ listsNodes[0] = listsNodes[0].firstChild;
904
+ }
905
+ else {
906
+ this.setSelectionBRConfig();
907
+ this.parent.domNode.convertToBlockNodes(this.parent.domNode.blockNodes(), true);
908
+ this.setSelectionBRConfig();
909
+ listsNodes = this.parent.domNode.blockNodes();
910
+ }
911
+ }
912
+ for (var i = 0; i < listsNodes.length; i++) {
913
+ if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {
914
+ listsNodes.splice(i, 1);
915
+ }
916
+ if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'
917
+ && 'LI' === listsNodes[i].parentNode.tagName) {
918
+ listsNodes[i] = listsNodes[i].parentNode;
919
+ }
920
+ }
921
+ this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);
922
+ if (e.callBack) {
923
+ e.callBack({
924
+ requestType: this.currentAction,
925
+ event: e.event,
926
+ editorMode: 'HTML',
927
+ range: this.parent.nodeSelection.getRange(this.parent.currentDocument),
928
+ elements: this.parent.domNode.blockNodes()
929
+ });
930
+ }
931
+ };
932
+ Lists.prototype.setSelectionBRConfig = function () {
933
+ var startElem = this.parent.editableElement.querySelector('.' + dom_node_1.markerClassName.startSelection);
934
+ var endElem = this.parent.editableElement.querySelector('.' + dom_node_1.markerClassName.endSelection);
935
+ if (ej2_base_3.isNullOrUndefined(endElem)) {
936
+ this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);
937
+ }
938
+ else {
939
+ this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);
940
+ }
941
+ };
942
+ Lists.prototype.applyLists = function (elements, type, selector, item, e) {
943
+ var isReverse = true;
944
+ if (this.isRevert(elements, type, item) && ej2_base_3.isNullOrUndefined(item)) {
945
+ this.revertList(elements, e);
946
+ this.removeEmptyListElements();
947
+ }
948
+ else {
949
+ this.checkLists(elements, type, item);
950
+ var marginLeftAttribute = '';
951
+ if (elements[0].style.marginLeft !== '') {
952
+ marginLeftAttribute = ' style = "margin-left: ' + elements[0].style.marginLeft + ';"';
953
+ }
954
+ for (var i = 0; i < elements.length; i++) {
955
+ if (!ej2_base_3.isNullOrUndefined(item) && !ej2_base_3.isNullOrUndefined(item.listStyle)) {
956
+ if (item.listStyle === 'listImage') {
957
+ ej2_base_2.setStyleAttribute(elements[i], { 'list-style-image': item.listImage });
958
+ }
959
+ else {
960
+ ej2_base_2.setStyleAttribute(elements[i], { 'list-style-image': 'none' });
961
+ ej2_base_2.setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });
962
+ }
963
+ }
964
+ elements[i].style.removeProperty('margin-left');
965
+ var elemAtt = elements[i].tagName === 'IMG' || elements[i].classList.contains('e-editor-select-start') ? '' : this.domNode.attributes(elements[i]);
966
+ if (elements[i].getAttribute('contenteditable') === 'true'
967
+ && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {
968
+ var listEle = document.createElement(type);
969
+ listEle.innerHTML = '<li><br/></li>';
970
+ elements[i].appendChild(listEle);
971
+ }
972
+ else if ('LI' !== elements[i].tagName && ej2_base_3.isNullOrUndefined(item) &&
973
+ elements[i].nodeName === 'BLOCKQUOTE') {
974
+ isReverse = false;
975
+ var openTag = '<' + type + marginLeftAttribute + '>';
976
+ var closeTag = '</' + type + '>';
977
+ var newTag = 'li' + elemAtt;
978
+ var replaceHTML = elements[i].innerHTML;
979
+ var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);
980
+ var collectionString = openTag + innerHTML + closeTag;
981
+ elements[i].innerHTML = collectionString;
982
+ }
983
+ else if ('LI' !== elements[i].tagName && ej2_base_3.isNullOrUndefined(item)) {
984
+ isReverse = false;
985
+ var openTag = '<' + type + marginLeftAttribute + '>';
986
+ var closeTag = '</' + type + '>';
987
+ var newTag = 'li' + elemAtt;
988
+ var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?
989
+ elements[i].innerHTML : elements[i].outerHTML);
990
+ var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);
991
+ innerHTML = this.setStyle(innerHTML);
992
+ var collectionString = openTag + innerHTML + closeTag;
993
+ this.domNode.replaceWith(elements[i], collectionString);
994
+ }
995
+ else if (!ej2_base_3.isNullOrUndefined(item) && 'LI' !== elements[i].tagName) {
996
+ isReverse = false;
997
+ var currentElemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);
998
+ var openTag = '<' + type + currentElemAtt + '>';
999
+ var closeTag = '</' + type + '>';
1000
+ var newTag = 'li';
1001
+ var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?
1002
+ elements[i].innerHTML : elements[i].outerHTML);
1003
+ var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);
1004
+ var collectionString = openTag + innerHTML + closeTag;
1005
+ this.domNode.replaceWith(elements[i], collectionString);
1006
+ }
1007
+ }
1008
+ }
1009
+ this.cleanNode();
1010
+ if (e.enterAction === 'BR') {
1011
+ var spansToRemove = document.querySelectorAll('span#removeSpan');
1012
+ spansToRemove.forEach(function (span) {
1013
+ var fragment = document.createDocumentFragment();
1014
+ while (span.firstChild) {
1015
+ fragment.appendChild(span.firstChild);
1016
+ }
1017
+ span.parentNode.replaceChild(fragment, span);
1018
+ });
1019
+ }
1020
+ this.parent.editableElement.focus({ preventScroll: true });
1021
+ if (util_1.isIDevice()) {
1022
+ util_1.setEditFrameFocus(this.parent.editableElement, selector);
1023
+ }
1024
+ this.saveSelection = this.domNode.saveMarker(this.saveSelection);
1025
+ this.saveSelection.restore();
1026
+ };
1027
+ Lists.prototype.setStyle = function (innerHTML) {
1028
+ var tempDiv = document.createElement('div');
1029
+ tempDiv.innerHTML = innerHTML.trim();
1030
+ var liElement = tempDiv.querySelector('li');
1031
+ var styleElement = liElement;
1032
+ if (liElement && liElement.children.length === 1) {
1033
+ var _loop_2 = function () {
1034
+ var childElement = liElement.firstChild;
1035
+ if (childElement && (childElement.style.cssText || childElement.tagName.toUpperCase() === 'B' || childElement.tagName.toUpperCase() === 'STRONG' || childElement.tagName.toUpperCase() === 'I' || childElement.tagName.toUpperCase() === 'EM')) {
1036
+ var allowedStyles_1 = ['font-size', 'font-family', 'color', 'font-weight'];
1037
+ var filteredStyles = childElement.style.cssText.split(';')
1038
+ .map(function (style) { return style.trim(); })
1039
+ .filter(function (style) {
1040
+ var styleName = !ej2_base_3.isNullOrUndefined(style.split(':')[0]) ? style.split(':')[0].trim() : '';
1041
+ return styleName && allowedStyles_1.indexOf(styleName) !== -1;
1042
+ })
1043
+ .join(';');
1044
+ if (filteredStyles) {
1045
+ styleElement.style.cssText += (styleElement.style.cssText ? ';' : '') + filteredStyles;
1046
+ }
1047
+ else if (childElement.tagName.toUpperCase() === 'B' || childElement.tagName.toUpperCase() === 'STRONG') {
1048
+ filteredStyles = 'font-weight: bold;';
1049
+ styleElement.style.cssText += (styleElement.style.cssText ? ';' : '') + filteredStyles;
1050
+ }
1051
+ else if (childElement.tagName.toUpperCase() === 'I' || childElement.tagName.toUpperCase() === 'EM') {
1052
+ filteredStyles = 'font-style: italic;';
1053
+ styleElement.style.cssText += (styleElement.style.cssText ? ';' : '') + filteredStyles;
1054
+ }
1055
+ }
1056
+ liElement = childElement;
1057
+ };
1058
+ while (liElement && liElement.children.length === 1 && liElement.firstChild &&
1059
+ liElement.firstChild.nodeType !== Node.TEXT_NODE) {
1060
+ _loop_2();
1061
+ }
1062
+ innerHTML = tempDiv.innerHTML;
1063
+ }
1064
+ return innerHTML;
1065
+ };
1066
+ Lists.prototype.removeEmptyListElements = function () {
1067
+ var listElem = this.parent.editableElement.querySelectorAll('ol, ul');
1068
+ for (var i = 0; i < listElem.length; i++) {
1069
+ if (listElem[i].textContent.trim() === '') {
1070
+ ej2_base_1.detach(listElem[i]);
1071
+ }
1072
+ }
1073
+ };
1074
+ Lists.prototype.isRevert = function (nodes, tagName, item) {
1075
+ var isRevert = true;
1076
+ for (var i = 0; i < nodes.length; i++) {
1077
+ if (nodes[i].tagName !== 'LI') {
1078
+ return false;
1079
+ }
1080
+ if (nodes[i].parentNode.tagName !== tagName ||
1081
+ ej2_base_3.isNullOrUndefined(item) && nodes[i].parentNode.style.listStyleType !== '') {
1082
+ isRevert = false;
1083
+ }
1084
+ if (nodes[i].parentNode.tagName === tagName && nodes[i].parentNode.style.listStyleType !== '') {
1085
+ isRevert = true;
1086
+ }
1087
+ }
1088
+ return isRevert;
1089
+ };
1090
+ Lists.prototype.checkLists = function (nodes, tagName, item) {
1091
+ var nodesTemp = [];
1092
+ for (var i = 0; i < nodes.length; i++) {
1093
+ var node = nodes[i].parentNode;
1094
+ if (!ej2_base_3.isNullOrUndefined(item) && 'LI' === nodes[i].tagName && !ej2_base_3.isNullOrUndefined(item.listStyle)) {
1095
+ if (item.listStyle === 'listImage') {
1096
+ ej2_base_2.setStyleAttribute(node, { 'list-style-image': item.listImage });
1097
+ }
1098
+ else {
1099
+ ej2_base_2.setStyleAttribute(node, { 'list-style-image': 'none' });
1100
+ ej2_base_2.setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });
1101
+ }
1102
+ }
1103
+ if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||
1104
+ (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {
1105
+ nodesTemp.push(node);
1106
+ }
1107
+ if (ej2_base_3.isNullOrUndefined(item) && (node.tagName === tagName ||
1108
+ ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {
1109
+ if (node.hasAttribute('style')) {
1110
+ node.removeAttribute('style');
1111
+ }
1112
+ }
1113
+ }
1114
+ for (var j = nodesTemp.length - 1; j >= 0; j--) {
1115
+ var h = nodesTemp[j];
1116
+ var replace = '<' + tagName.toLowerCase() + ' '
1117
+ + this.domNode.attributes(h) + '>' + h.innerHTML + '</' + tagName.toLowerCase() + '>';
1118
+ this.domNode.replaceWith(nodesTemp[j], replace);
1119
+ }
1120
+ };
1121
+ Lists.prototype.cleanNode = function () {
1122
+ var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');
1123
+ var listStyleType;
1124
+ var firstNodeOL;
1125
+ for (var c = 0; c < liParents.length; c++) {
1126
+ var node = liParents[c];
1127
+ var toFindtopOlUl = true;
1128
+ var containsListElements = node;
1129
+ while (containsListElements.parentElement) {
1130
+ if (containsListElements.parentElement && containsListElements.parentElement.tagName !== 'LI' && containsListElements.parentElement.tagName !== 'OL' && containsListElements.parentElement.tagName !== 'UL') {
1131
+ break;
1132
+ }
1133
+ containsListElements = containsListElements.parentElement;
1134
+ }
1135
+ if (toFindtopOlUl && (liParents[c].parentElement.parentElement.nodeName === 'OL' || liParents[c].parentElement.parentElement.nodeName === 'UL')) {
1136
+ toFindtopOlUl = false;
1137
+ var preElement = liParents[c].parentElement.parentElement;
1138
+ listStyleType = preElement.style.listStyleType;
1139
+ firstNodeOL = node.previousElementSibling;
1140
+ }
1141
+ if (this.domNode.isList(node.previousElementSibling) &&
1142
+ this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {
1143
+ var contentNodes = this.domNode.contents(node);
1144
+ for (var f = 0; f < contentNodes.length; f++) {
1145
+ node.previousElementSibling.appendChild(contentNodes[f]);
1146
+ }
1147
+ node.parentNode.removeChild(node);
1148
+ }
1149
+ else if (!ej2_base_3.isNullOrUndefined(node.getAttribute('level'))) {
1150
+ if (node.tagName === node.previousElementSibling.tagName) {
1151
+ node.previousElementSibling.lastChild.append(node);
1152
+ }
1153
+ }
1154
+ else if (this.domNode.isList(node.previousElementSibling) && containsListElements.contains(node.previousElementSibling) && ((node.tagName === 'OL' || node.tagName === 'UL') && (node.previousElementSibling.nodeName === 'OL' || node.previousElementSibling.nodeName === 'UL'))) {
1155
+ var contentNodes = this.domNode.contents(node);
1156
+ for (var f = 0; f < contentNodes.length; f++) {
1157
+ node.previousElementSibling.appendChild(contentNodes[f]);
1158
+ }
1159
+ node.parentNode.removeChild(node);
1160
+ }
1161
+ }
1162
+ if (firstNodeOL) {
1163
+ firstNodeOL.style.listStyleType = listStyleType;
1164
+ var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
1165
+ var listOlUlElements = [];
1166
+ if (range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'OL') {
1167
+ if (range.commonAncestorContainer instanceof Element) {
1168
+ listOlUlElements.push(range.commonAncestorContainer);
1169
+ }
1170
+ listOlUlElements = listOlUlElements.concat(Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul')));
1171
+ }
1172
+ else {
1173
+ listOlUlElements = Array.from(range.commonAncestorContainer.querySelectorAll('ol, ul'));
1174
+ }
1175
+ for (var k = 0; k < listOlUlElements.length; k++) {
1176
+ var listStyle = void 0;
1177
+ var listElements = listOlUlElements[k];
1178
+ while (listElements) {
1179
+ if (listElements.nodeName === 'OL' || listElements.nodeName === 'OL') {
1180
+ if (listElements.style.listStyleType !== '' && listElements.style.listStyleType !== 'none' && listElements.nodeName !== 'LI') {
1181
+ listStyle = listElements.style.listStyleType;
1182
+ }
1183
+ else if (!ej2_base_3.isNullOrUndefined(listStyle) && (listElements.style.listStyleType === '' || listElements.style.listStyleType === 'none') &&
1184
+ listElements.nodeName !== 'LI' && (listElements.nodeName === 'UL' || listElements.nodeName === 'OL')) {
1185
+ listElements.style.listStyleType = listStyle;
1186
+ }
1187
+ }
1188
+ listElements = listElements.querySelector('UL,OL');
1189
+ }
1190
+ }
1191
+ }
1192
+ };
1193
+ Lists.prototype.findUnSelected = function (temp, elements) {
1194
+ temp = temp.slice().reverse();
1195
+ if (temp.length > 0) {
1196
+ var rightIndent = [];
1197
+ var indentElements = [];
1198
+ var lastElement = elements[elements.length - 1];
1199
+ var lastElementChild = [];
1200
+ var childElements = [];
1201
+ lastElementChild = (lastElement.childNodes);
1202
+ for (var z = 0; z < lastElementChild.length; z++) {
1203
+ if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {
1204
+ var childLI = lastElementChild[z]
1205
+ .querySelectorAll('li');
1206
+ if (childLI.length > 0) {
1207
+ for (var y = 0; y < childLI.length; y++) {
1208
+ childElements.push(childLI[y]);
1209
+ }
1210
+ }
1211
+ }
1212
+ }
1213
+ for (var i = 0; i < childElements.length; i++) {
1214
+ var count = 0;
1215
+ for (var j = 0; j < temp.length; j++) {
1216
+ if (!childElements[i].contains((temp[j]))) {
1217
+ count = count + 1;
1218
+ }
1219
+ }
1220
+ if (count === temp.length) {
1221
+ indentElements.push(childElements[i]);
1222
+ }
1223
+ }
1224
+ if (indentElements.length > 0) {
1225
+ for (var x = 0; x < indentElements.length; x++) {
1226
+ if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&
1227
+ this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {
1228
+ rightIndent.push(indentElements[x]);
1229
+ }
1230
+ }
1231
+ }
1232
+ if (rightIndent.length > 0) {
1233
+ this.nestedList(rightIndent);
1234
+ }
1235
+ }
1236
+ };
1237
+ Lists.prototype.revertList = function (elements, e) {
1238
+ var temp = [];
1239
+ for (var i = elements.length - 1; i >= 0; i--) {
1240
+ for (var j = i - 1; j >= 0; j--) {
1241
+ if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {
1242
+ temp.push(elements[i]);
1243
+ elements.splice(i, 1);
1244
+ break;
1245
+ }
1246
+ }
1247
+ }
1248
+ this.findUnSelected(temp, elements);
1249
+ var viewNode = [];
1250
+ for (var i = 0; i < elements.length; i++) {
1251
+ var element = elements[i];
1252
+ if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
1253
+ ej2_base_1.detach(this.domNode.contents(element)[0]);
1254
+ }
1255
+ var parentNode = elements[i].parentNode;
1256
+ var className = element.getAttribute('class');
1257
+ if (temp.length === 0) {
1258
+ var siblingList = elements[i].querySelectorAll('ul, ol');
1259
+ var firstNode = siblingList[0];
1260
+ if (firstNode) {
1261
+ var child = firstNode
1262
+ .querySelectorAll('li');
1263
+ if (child) {
1264
+ var nestedElement = ej2_base_1.createElement(firstNode.tagName);
1265
+ ej2_base_1.append([nestedElement], firstNode.parentNode);
1266
+ var nestedElementLI = ej2_base_1.createElement('li', { styles: 'list-style-type: none;' });
1267
+ ej2_base_1.append([nestedElementLI], nestedElement);
1268
+ ej2_base_1.append([firstNode], nestedElementLI);
1269
+ }
1270
+ }
1271
+ }
1272
+ if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),
1273
+ 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
1274
+ 'UL' === parentNode.parentNode.tagName) {
1275
+ element.parentNode.insertBefore(this.closeTag('LI'), element);
1276
+ }
1277
+ else {
1278
+ var classAttr = '';
1279
+ if (className) {
1280
+ classAttr += ' class="' + className + '"';
1281
+ }
1282
+ var closestListMargin = this.getClosestListParentMargin(element);
1283
+ if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {
1284
+ var wrapperclass = ej2_base_3.isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
1285
+ ' class="' + className + ' e-rte-wrap-inner"';
1286
+ var parentElement = parentNode;
1287
+ if (elements.length === parentElement.querySelectorAll('li').length) {
1288
+ if (!ej2_base_3.isNullOrUndefined(parentElement.style.listStyleType)) {
1289
+ parentNode.style.removeProperty('list-style-type');
1290
+ }
1291
+ if (!ej2_base_3.isNullOrUndefined(parentElement.style.listStyleImage)) {
1292
+ parentNode.style.removeProperty('list-style-image');
1293
+ }
1294
+ if (parentElement.style.length === 0) {
1295
+ parentNode.removeAttribute('style');
1296
+ }
1297
+ }
1298
+ var wrapperTag = ej2_base_3.isNullOrUndefined(e.enterAction) ? CONSTANT.DEFAULT_TAG : e.enterAction;
1299
+ var wrapper = '<' + wrapperTag + wrapperclass + this.domNode.attributes(element) + '></' + wrapperTag + '>';
1300
+ var tempElement = document.createElement('div');
1301
+ tempElement.innerHTML = wrapper;
1302
+ if (closestListMargin !== '') {
1303
+ tempElement.firstElementChild.style.marginLeft = closestListMargin;
1304
+ }
1305
+ if (e.enterAction !== 'BR') {
1306
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(tempElement.innerHTML));
1307
+ }
1308
+ else {
1309
+ var wrapperSpan = '<span class=e-rte-wrap-inner id=removeSpan></span>';
1310
+ var br = document.createElement('br');
1311
+ this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapperSpan));
1312
+ element.appendChild(br);
1313
+ }
1314
+ }
1315
+ else if (this.domNode.contents(element)[0].nodeType === 3) {
1316
+ var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
1317
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
1318
+ }
1319
+ else if (this.domNode.contents(element)[0].classList.contains(dom_node_1.markerClassName.startSelection) ||
1320
+ this.domNode.contents(element)[0].classList.contains(dom_node_1.markerClassName.endSelection)) {
1321
+ var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, '<br>' + this.domNode.contents(element)[0].outerHTML);
1322
+ if (this.domNode.contents(element)[1] && this.domNode.contents(element)[1].tagName === 'BR') {
1323
+ this.domNode.contents(element)[1].remove();
1324
+ replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, '<br>' + this.domNode.contents(element)[0].outerHTML);
1325
+ }
1326
+ else {
1327
+ replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
1328
+ }
1329
+ this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
1330
+ }
1331
+ else {
1332
+ var childNode = element.firstChild;
1333
+ if (childNode) {
1334
+ var attributes_1 = element.parentElement.attributes;
1335
+ if (attributes_1.length > 0) {
1336
+ for (var d = 0; d < attributes_1.length; d++) {
1337
+ var e_1 = attributes_1[d];
1338
+ var clean = function (v) {
1339
+ return v ? v.split(';').filter(function (s) { return !/list-style-(image|type):/.test(s.trim()); }).join(';').trim() : '';
1340
+ };
1341
+ var existingValue = clean(childNode.getAttribute(e_1.nodeName));
1342
+ var parentValue = clean(element.parentElement.getAttribute(e_1.nodeName));
1343
+ if (existingValue && existingValue !== parentValue) {
1344
+ childNode.setAttribute(e_1.nodeName, existingValue ? parentValue + ' ' + existingValue : parentValue);
1345
+ }
1346
+ else {
1347
+ childNode.setAttribute(e_1.nodeName, parentValue);
1348
+ }
1349
+ if (childNode.style.length === 0) {
1350
+ childNode.removeAttribute('style');
1351
+ }
1352
+ }
1353
+ }
1354
+ }
1355
+ className = childNode.getAttribute('class');
1356
+ if (className && childNode.getAttribute('class') && className !== childNode.getAttribute('class')) {
1357
+ ej2_base_1.attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
1358
+ }
1359
+ }
1360
+ ej2_base_1.append([this.openTag('LI')], element);
1361
+ ej2_base_1.prepend([this.closeTag('LI')], element);
1362
+ }
1363
+ this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
1364
+ if (parentNode.parentNode.tagName === 'LI') {
1365
+ parentNode = parentNode.parentNode.parentNode;
1366
+ }
1367
+ if (viewNode.indexOf(parentNode) < 0) {
1368
+ viewNode.push(parentNode);
1369
+ }
1370
+ }
1371
+ for (var i = 0; i < viewNode.length; i++) {
1372
+ var node = viewNode[i];
1373
+ var nodeInnerHtml = node.innerHTML;
1374
+ var closeTag = /<span class="e-rte-list-close-([a-z]*)"><\/span>/g;
1375
+ var openTag = /<span class="e-rte-list-open-([a-z]*)"><\/span>/g;
1376
+ nodeInnerHtml = nodeInnerHtml.replace(closeTag, '</$1>');
1377
+ nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');
1378
+ this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));
1379
+ }
1380
+ var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');
1381
+ for (var i = 0; i < emptyUl.length; i++) {
1382
+ ej2_base_1.detach(emptyUl[i]);
1383
+ }
1384
+ var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');
1385
+ for (var i = 0; i < emptyLi.length; i++) {
1386
+ ej2_base_1.detach(emptyLi[i]);
1387
+ }
1388
+ };
1389
+ Lists.prototype.getClosestListParentMargin = function (element) {
1390
+ var current = element;
1391
+ while (current && current !== this.parent.editableElement) {
1392
+ if (current.nodeName === 'UL' || current.nodeName === 'OL') {
1393
+ return current.style.marginLeft;
1394
+ }
1395
+ current = current.parentElement;
1396
+ }
1397
+ return '';
1398
+ };
1399
+ Lists.prototype.openTag = function (type) {
1400
+ return this.domNode.parseHTMLFragment('<span class="e-rte-list-open-' + type.toLowerCase() + '"></span>');
1401
+ };
1402
+ Lists.prototype.closeTag = function (type) {
1403
+ return this.domNode.parseHTMLFragment('<span class="e-rte-list-close-' + type.toLowerCase() + '"></span>');
1404
+ };
1405
+ Lists.prototype.destroy = function () {
1406
+ this.removeEventListener();
1407
+ if (this.domNode) {
1408
+ this.domNode = null;
1409
+ }
1410
+ };
1411
+ Lists.prototype.areAllListItemsSelected = function (list, range) {
1412
+ var listItems = list.querySelectorAll('li');
1413
+ for (var i = 0; i < listItems.length; i++) {
1414
+ var listItem = listItems[i];
1415
+ var listItemRange = this.parent.currentDocument.createRange();
1416
+ listItemRange.selectNodeContents(listItem);
1417
+ if (!range.intersectsNode(listItem)) {
1418
+ return false;
1419
+ }
1420
+ }
1421
+ return true;
1422
+ };
1423
+ Lists.prototype.getListCursorInfo = function (range) {
1424
+ var position;
1425
+ var selectionState;
1426
+ var domMethods = new dom_tree_1.DOMMethods(this.parent.editableElement);
1427
+ var startNode = range.startContainer.nodeType === Node.TEXT_NODE ?
1428
+ domMethods.getTopMostNode(range.startContainer) : range.startContainer;
1429
+ var endNode = range.endContainer.nodeType === Node.TEXT_NODE ?
1430
+ domMethods.getTopMostNode(range.endContainer) : range.endContainer;
1431
+ var isSelection = !range.collapsed;
1432
+ var startList = startNode.nodeType === Node.TEXT_NODE ? startNode.parentElement.closest('li') :
1433
+ startNode.closest('li');
1434
+ var endList = endNode.nodeType === Node.TEXT_NODE ? endNode.parentElement.closest('li') :
1435
+ endNode.closest('li');
1436
+ var isNestedStart = startList && startList.closest('ol, ul') ? this.checkIsNestedList(startList.closest('ol, ul')) : false;
1437
+ var isNestedEnd = endList && endList.closest('ol, ul') ? this.checkIsNestedList(endList.closest('ol, ul')) : false;
1438
+ var blockNodes = this.parent.domNode.blockNodes();
1439
+ var length = blockNodes.length;
1440
+ var itemType = this.getListSelectionType(isNestedStart ? 'Nested' : 'Parent', isNestedEnd ? 'Nested' : 'Parent');
1441
+ if (isSelection) {
1442
+ if (blockNodes.length === 1) {
1443
+ selectionState = range.startOffset === 0 && range.endOffset === startList.textContent.length ? 'SingleFull' : 'SinglePartial';
1444
+ }
1445
+ else {
1446
+ selectionState = range.startOffset === 0 && range.endOffset === blockNodes[length - 1].textContent.length ? 'MultipleFull' : 'MultiplePartial';
1447
+ }
1448
+ position = 'None';
1449
+ }
1450
+ else {
1451
+ if (range.startOffset === 0 && startNode.previousSibling === null) {
1452
+ position = isNestedStart ? 'StartNested' : 'StartParent';
1453
+ }
1454
+ else if (range.startOffset === startList.textContent.length && startNode.nextSibling === null) {
1455
+ position = isNestedStart ? 'EndNested' : 'EndParent';
1456
+ }
1457
+ else {
1458
+ position = isNestedStart ? 'MiddleNested' : 'MiddleParent';
1459
+ }
1460
+ selectionState = 'None';
1461
+ }
1462
+ return { position: position, selectionState: selectionState, itemType: itemType };
1463
+ };
1464
+ Lists.prototype.checkIsNestedList = function (listParent) {
1465
+ var isDirectParent = listParent.parentElement === this.parent.editableElement;
1466
+ if (isDirectParent) {
1467
+ return false;
1468
+ }
1469
+ if (listParent.closest('li')) {
1470
+ return true;
1471
+ }
1472
+ return false;
1473
+ };
1474
+ Lists.prototype.getListSelectionType = function (start, end) {
1475
+ if (start === 'Nested' && end === 'Nested') {
1476
+ return 'Nested';
1477
+ }
1478
+ else if (start === 'Parent' && end === 'Parent') {
1479
+ return 'Parent';
1480
+ }
1481
+ else {
1482
+ return 'Mixed';
1483
+ }
1484
+ };
1485
+ Lists.prototype.isAllListNodesSelected = function (list) {
1486
+ var selection = this.parent.currentDocument.getSelection();
1487
+ var isAllSelected = false;
1488
+ var liNodes = list.querySelectorAll('li');
1489
+ for (var i = 0; i < liNodes.length; i++) {
1490
+ if (selection.containsNode(liNodes[i], false)) {
1491
+ isAllSelected = true;
1492
+ }
1493
+ else {
1494
+ isAllSelected = false;
1495
+ break;
1496
+ }
1497
+ }
1498
+ return isAllSelected;
1499
+ };
1500
+ return Lists;
1501
+ }());
1502
+ exports.Lists = Lists;
1503
+ });