@syncfusion/ej2-richtexteditor 21.2.10 → 22.1.34

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 (147) hide show
  1. package/.eslintrc.json +1 -0
  2. package/CHANGELOG.md +18 -0
  3. package/dist/ej2-richtexteditor.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  5. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es2015.js +1558 -186
  7. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  8. package/dist/es6/ej2-richtexteditor.es5.js +1571 -189
  9. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  10. package/dist/global/ej2-richtexteditor.min.js +2 -2
  11. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +12 -12
  14. package/src/common/config.js +2 -2
  15. package/src/common/constant.d.ts +6 -0
  16. package/src/common/constant.js +6 -0
  17. package/src/common/interface.d.ts +2 -2
  18. package/src/common/util.js +2 -0
  19. package/src/editor-manager/base/editor-manager.d.ts +4 -3
  20. package/src/editor-manager/base/editor-manager.js +6 -1
  21. package/src/editor-manager/base/interface.d.ts +44 -9
  22. package/src/editor-manager/plugin/clearformat.d.ts +1 -0
  23. package/src/editor-manager/plugin/clearformat.js +1 -0
  24. package/src/editor-manager/plugin/dom-node.js +10 -6
  25. package/src/editor-manager/plugin/emoji-picker-action.d.ts +8 -0
  26. package/src/editor-manager/plugin/emoji-picker-action.js +62 -0
  27. package/src/editor-manager/plugin/format-painter-actions.d.ts +19 -36
  28. package/src/editor-manager/plugin/format-painter-actions.js +224 -81
  29. package/src/editor-manager/plugin/inserthtml.js +6 -1
  30. package/src/editor-manager/plugin/link.js +1 -1
  31. package/src/editor-manager/plugin/ms-word-clean-up.d.ts +3 -0
  32. package/src/editor-manager/plugin/ms-word-clean-up.js +40 -7
  33. package/src/editor-manager/plugin/selection-commands.d.ts +2 -1
  34. package/src/editor-manager/plugin/selection-commands.js +48 -23
  35. package/src/editor-manager/plugin/table.js +2 -2
  36. package/src/editor-manager/plugin/toolbar-status.js +6 -0
  37. package/src/editor-manager/plugin/undo.d.ts +1 -0
  38. package/src/editor-manager/plugin/undo.js +26 -5
  39. package/src/editor-manager/plugin.d.ts +1 -0
  40. package/src/editor-manager/plugin.js +1 -0
  41. package/src/global.js +1 -1
  42. package/src/rich-text-editor/actions/base-quick-toolbar.js +8 -1
  43. package/src/rich-text-editor/actions/base-toolbar.js +3 -2
  44. package/src/rich-text-editor/actions/emoji-picker.d.ts +48 -0
  45. package/src/rich-text-editor/actions/emoji-picker.js +778 -0
  46. package/src/rich-text-editor/actions/enter-key.js +2 -2
  47. package/src/rich-text-editor/actions/execute-command-callback.js +3 -1
  48. package/src/rich-text-editor/actions/file-manager.js +1 -0
  49. package/src/rich-text-editor/actions/format-painter.d.ts +2 -2
  50. package/src/rich-text-editor/actions/format-painter.js +11 -9
  51. package/src/rich-text-editor/actions/full-screen.js +6 -0
  52. package/src/rich-text-editor/actions/html-editor.js +11 -2
  53. package/src/rich-text-editor/actions/paste-clean-up.js +1 -0
  54. package/src/rich-text-editor/actions/resize.js +1 -1
  55. package/src/rich-text-editor/actions.d.ts +1 -0
  56. package/src/rich-text-editor/actions.js +1 -0
  57. package/src/rich-text-editor/base/constant.d.ts +10 -0
  58. package/src/rich-text-editor/base/constant.js +10 -0
  59. package/src/rich-text-editor/base/enum.d.ts +0 -4
  60. package/src/rich-text-editor/base/interface.d.ts +44 -6
  61. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +13 -7
  62. package/src/rich-text-editor/base/rich-text-editor.d.ts +27 -7
  63. package/src/rich-text-editor/base/rich-text-editor.js +42 -12
  64. package/src/rich-text-editor/base/util.js +2 -2
  65. package/src/rich-text-editor/formatter/formatter.js +7 -5
  66. package/src/rich-text-editor/models/default-locale.js +14 -2
  67. package/src/rich-text-editor/models/items.d.ts +2 -1
  68. package/src/rich-text-editor/models/items.js +188 -1
  69. package/src/rich-text-editor/models/toolbar-settings-model.d.ts +212 -9
  70. package/src/rich-text-editor/models/toolbar-settings.d.ts +209 -11
  71. package/src/rich-text-editor/models/toolbar-settings.js +23 -6
  72. package/src/rich-text-editor/renderer/audio-module.js +3 -3
  73. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  74. package/src/rich-text-editor/renderer/image-module.js +11 -6
  75. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +2 -0
  76. package/src/rich-text-editor/renderer/toolbar-renderer.js +7 -2
  77. package/src/rich-text-editor/renderer/video-module.js +14 -9
  78. package/styles/bootstrap-dark.css +299 -137
  79. package/styles/bootstrap.css +305 -140
  80. package/styles/bootstrap4.css +304 -133
  81. package/styles/bootstrap5-dark.css +310 -165
  82. package/styles/bootstrap5.css +310 -165
  83. package/styles/fabric-dark.css +297 -136
  84. package/styles/fabric.css +294 -133
  85. package/styles/fluent-dark.css +311 -170
  86. package/styles/fluent.css +311 -170
  87. package/styles/highcontrast-light.css +289 -128
  88. package/styles/highcontrast.css +296 -135
  89. package/styles/material-dark.css +295 -129
  90. package/styles/material.css +300 -134
  91. package/styles/material3-dark.css +3082 -0
  92. package/styles/material3-dark.scss +3 -0
  93. package/styles/material3.css +3138 -0
  94. package/styles/material3.scss +3 -0
  95. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +54 -12
  96. package/styles/rich-text-editor/_bootstrap-definition.scss +57 -13
  97. package/styles/rich-text-editor/_bootstrap4-definition.scss +50 -7
  98. package/styles/rich-text-editor/_bootstrap5-definition.scss +56 -13
  99. package/styles/rich-text-editor/_fabric-dark-definition.scss +53 -10
  100. package/styles/rich-text-editor/_fabric-definition.scss +52 -9
  101. package/styles/rich-text-editor/_fluent-definition.scss +56 -15
  102. package/styles/rich-text-editor/_fusionnew-definition.scss +46 -4
  103. package/styles/rich-text-editor/_highcontrast-definition.scss +52 -9
  104. package/styles/rich-text-editor/_highcontrast-light-definition.scss +48 -5
  105. package/styles/rich-text-editor/_layout.scss +280 -68
  106. package/styles/rich-text-editor/_material-dark-definition.scss +48 -5
  107. package/styles/rich-text-editor/_material-definition.scss +50 -6
  108. package/styles/rich-text-editor/_material3-dark-definition.scss +1 -0
  109. package/styles/rich-text-editor/_material3-definition.scss +262 -0
  110. package/styles/rich-text-editor/_tailwind-definition.scss +63 -23
  111. package/styles/rich-text-editor/_theme.scss +103 -19
  112. package/styles/rich-text-editor/bootstrap-dark.css +299 -137
  113. package/styles/rich-text-editor/bootstrap.css +305 -140
  114. package/styles/rich-text-editor/bootstrap4.css +304 -133
  115. package/styles/rich-text-editor/bootstrap5-dark.css +310 -165
  116. package/styles/rich-text-editor/bootstrap5.css +310 -165
  117. package/styles/rich-text-editor/fabric-dark.css +297 -136
  118. package/styles/rich-text-editor/fabric.css +294 -133
  119. package/styles/rich-text-editor/fluent-dark.css +311 -170
  120. package/styles/rich-text-editor/fluent.css +311 -170
  121. package/styles/rich-text-editor/highcontrast-light.css +289 -128
  122. package/styles/rich-text-editor/highcontrast.css +296 -135
  123. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +1 -1
  124. package/styles/rich-text-editor/icons/_bootstrap.scss +1 -1
  125. package/styles/rich-text-editor/icons/_bootstrap4.scss +1 -1
  126. package/styles/rich-text-editor/icons/_bootstrap5.scss +1 -1
  127. package/styles/rich-text-editor/icons/_fabric-dark.scss +1 -1
  128. package/styles/rich-text-editor/icons/_fabric.scss +1 -1
  129. package/styles/rich-text-editor/icons/_fluent.scss +1 -1
  130. package/styles/rich-text-editor/icons/_fusionnew.scss +1 -1
  131. package/styles/rich-text-editor/icons/_highcontrast-light.scss +1 -1
  132. package/styles/rich-text-editor/icons/_highcontrast.scss +1 -1
  133. package/styles/rich-text-editor/icons/_material-dark.scss +1 -1
  134. package/styles/rich-text-editor/icons/_material.scss +1 -1
  135. package/styles/rich-text-editor/icons/_material3-dark.scss +1 -0
  136. package/styles/rich-text-editor/icons/_material3.scss +1 -1
  137. package/styles/rich-text-editor/icons/_tailwind.scss +1 -1
  138. package/styles/rich-text-editor/material-dark.css +295 -129
  139. package/styles/rich-text-editor/material.css +300 -134
  140. package/styles/rich-text-editor/material3-dark.css +3082 -0
  141. package/styles/rich-text-editor/material3-dark.scss +5 -0
  142. package/styles/rich-text-editor/material3.css +3138 -0
  143. package/styles/rich-text-editor/material3.scss +5 -0
  144. package/styles/rich-text-editor/tailwind-dark.css +313 -157
  145. package/styles/rich-text-editor/tailwind.css +313 -157
  146. package/styles/tailwind-dark.css +313 -157
  147. package/styles/tailwind.css +313 -157
@@ -729,6 +729,16 @@ var formatPainterClick = 'formatPainterClick';
729
729
  * @deprecated
730
730
  */
731
731
  var formatPainterDoubleClick = 'formatPainterDoubleClick';
732
+ /**
733
+ * @hidden
734
+ * @deprecated
735
+ */
736
+ var emojiPicker = 'emojiPicker';
737
+ /**
738
+ * @hidden
739
+ * @deprecated
740
+ */
741
+ var maximizeMinimizeClick = 'maximizeMinimizeClick';
732
742
  /**
733
743
  * @hidden
734
744
  * @deprecated
@@ -1963,6 +1973,13 @@ var tools = {
1963
1973
  'tooltip': 'Format Painter',
1964
1974
  'command': 'FormatPainter',
1965
1975
  'subCommand': 'FormatPainter'
1976
+ },
1977
+ 'emojipicker': {
1978
+ 'id': 'EmojiPicker',
1979
+ 'icon': 'e-emoji',
1980
+ 'tooltip': 'Emoji Icon',
1981
+ 'command': 'EmojiPicker',
1982
+ 'subCommand': 'EmojiPicker'
1966
1983
  }
1967
1984
  };
1968
1985
  var alignmentLocale = [
@@ -2175,8 +2192,188 @@ var windowKeys = {
2175
2192
  'Clear Format': 'Ctrl + Shift + R',
2176
2193
  'Numbered List': 'Ctrl + Shift + O',
2177
2194
  'Bulleted List': 'Ctrl + Alt + O',
2178
- 'Format Painter': 'Ctrl + Shift + C, Ctrl + Shift + V'
2195
+ 'Format Painter': 'Alt + Shift + C, Alt + Shift + V'
2179
2196
  };
2197
+ var defaultEmojiIcons = [{
2198
+ name: 'Smilies & People', code: '1F600', iconCss: 'e-emoji', icons: [{ code: '1F600', desc: 'Grinning face' },
2199
+ { code: '1F603', desc: 'Grinning face with big eyes' },
2200
+ { code: '1F604', desc: 'Grinning face with smiling eyes' },
2201
+ { code: '1F606', desc: 'Grinning squinting face' },
2202
+ { code: '1F605', desc: 'Grinning face with sweat' },
2203
+ { code: '1F602', desc: 'Face with tears of joy' },
2204
+ { code: '1F923', desc: 'Rolling on the floor laughing' },
2205
+ { code: '1F60A', desc: 'Smiling face with smiling eyes' },
2206
+ { code: '1F607', desc: 'Smiling face with halo' },
2207
+ { code: '1F642', desc: 'Slightly smiling face' },
2208
+ { code: '1F643', desc: 'Upside-down face' },
2209
+ { code: '1F60D', desc: 'Smiling face with heart-eyes' },
2210
+ { code: '1F618', desc: 'Face blowing a kiss' },
2211
+ { code: '1F61B', desc: 'Face with tongue' },
2212
+ { code: '1F61C', desc: 'Winking face with tongue' },
2213
+ { code: '1F604', desc: 'Grinning face with smiling eyes' },
2214
+ { code: '1F469', desc: 'Woman' },
2215
+ { code: '1F468', desc: 'Man' },
2216
+ { code: '1F467', desc: 'Girl' },
2217
+ { code: '1F466', desc: 'Boy' },
2218
+ { code: '1F476', desc: 'Baby' },
2219
+ { code: '1F475', desc: 'Old woman' },
2220
+ { code: '1F474', desc: 'Old man' },
2221
+ { code: '1F46E', desc: 'Police officer' },
2222
+ { code: '1F477', desc: 'Construction worker' },
2223
+ { code: '1F482', desc: 'Guard' },
2224
+ { code: '1F575', desc: 'Detective' },
2225
+ { code: '1F9D1', desc: 'Cook' }]
2226
+ }, {
2227
+ name: 'Animals & Nature', code: '1F435', iconCss: 'e-animals', icons: [{ code: '1F436', desc: 'Dog face' },
2228
+ { code: '1F431', desc: 'Cat face' },
2229
+ { code: '1F42D', desc: 'Mouse face' },
2230
+ { code: '1F439', desc: 'Hamster face' },
2231
+ { code: '1F430', desc: 'Rabbit face' },
2232
+ { code: '1F98A', desc: 'Fox face' },
2233
+ { code: '1F43B', desc: 'Bear face' },
2234
+ { code: '1F43C', desc: 'Panda face' },
2235
+ { code: '1F428', desc: 'Koala' },
2236
+ { code: '1F42F', desc: 'Tiger face' },
2237
+ { code: '1F981', desc: 'Lion face' },
2238
+ { code: '1F42E', desc: 'Cow face' },
2239
+ { code: '1F437', desc: 'Pig face' },
2240
+ { code: '1F43D', desc: 'Pig nose' },
2241
+ { code: '1F438', desc: 'Frog face' },
2242
+ { code: '1F435', desc: 'Monkey face' },
2243
+ { code: '1F649', desc: 'Hear-no-evil monkey' },
2244
+ { code: '1F64A', desc: 'Speak-no-evil monkey' },
2245
+ { code: '1F412', desc: 'Monkey' },
2246
+ { code: '1F414', desc: 'Chicken' },
2247
+ { code: '1F427', desc: 'Penguin' },
2248
+ { code: '1F426', desc: 'Bird' },
2249
+ { code: '1F424', desc: 'Baby chick' },
2250
+ { code: '1F986', desc: 'Duck' },
2251
+ { code: '1F985', desc: 'Eagle' }]
2252
+ }, {
2253
+ name: 'Food & Drink', code: '1F347', iconCss: 'e-food-and-drinks', icons: [{ code: '1F34E', desc: 'Red apple' },
2254
+ { code: '1F34C', desc: 'Banana' },
2255
+ { code: '1F347', desc: 'Grapes' },
2256
+ { code: '1F353', desc: 'Strawberry' },
2257
+ { code: '1F35E', desc: 'Bread' },
2258
+ { code: '1F950', desc: 'Croissant' },
2259
+ { code: '1F955', desc: 'Carrot' },
2260
+ { code: '1F354', desc: 'Hamburger' },
2261
+ { code: '1F355', desc: 'Pizza' },
2262
+ { code: '1F32D', desc: 'Hot dog' },
2263
+ { code: '1F35F', desc: 'French fries' },
2264
+ { code: '1F37F', desc: 'Popcorn' },
2265
+ { code: '1F366', desc: 'Soft ice cream' },
2266
+ { code: '1F367', desc: 'Shaved ice' },
2267
+ { code: '1F36A', desc: 'Cookie' },
2268
+ { code: '1F382', desc: 'Birthday cake' },
2269
+ { code: '1F370', desc: 'Shortcake' },
2270
+ { code: '1F36B', desc: 'Chocolate bar' },
2271
+ { code: '1F369', desc: 'Donut' },
2272
+ { code: '1F36E', desc: 'Custard' },
2273
+ { code: '1F36D', desc: 'Lollipop' },
2274
+ { code: '1F36C', desc: 'Candy' },
2275
+ { code: '1F377', desc: 'Wine glass' },
2276
+ { code: '1F37A', desc: 'Beer mug' },
2277
+ { code: '1F37E', desc: 'Bottle with popping cork' }]
2278
+ }, {
2279
+ name: 'Activities', code: '1F383', iconCss: 'e-activities', icons: [{ code: '26BD', desc: 'Soccer ball' },
2280
+ { code: '1F3C0', desc: 'Basketball' },
2281
+ { code: '1F3C8', desc: 'American football' },
2282
+ { code: '26BE', desc: 'Baseball' },
2283
+ { code: '1F3BE', desc: 'Tennis' },
2284
+ { code: '1F3D0', desc: 'Volleyball' },
2285
+ { code: '1F3C9', desc: 'Rugby football' },
2286
+ { code: '1F3B1', desc: 'Pool 8 ball' },
2287
+ { code: '1F3D3', desc: 'Ping pong' },
2288
+ { code: '1F3F8', desc: 'Badminton' },
2289
+ { code: '1F94A', desc: 'Boxing glove' },
2290
+ { code: '1F3CA', desc: 'Swimmer' },
2291
+ { code: '1F3CB', desc: 'Weightlifter' },
2292
+ { code: '1F6B4', desc: 'Bicyclist' },
2293
+ { code: '1F6F9', desc: 'Skateboard' },
2294
+ { code: '1F3AE', desc: 'Video game' },
2295
+ { code: '1F579', desc: 'Joystick' },
2296
+ { code: '1F3CF', desc: 'Cricket' },
2297
+ { code: '1F3C7', desc: 'Horse racing' },
2298
+ { code: '1F3AF', desc: 'Direct hit' },
2299
+ { code: '1F3D1', desc: 'Field hockey' },
2300
+ { code: '1F3B0', desc: 'Slot machine' },
2301
+ { code: '1F3B3', desc: 'Bowling' },
2302
+ { code: '1F3B2', desc: 'Game die' },
2303
+ { code: '265F', desc: 'Chess pawn' }]
2304
+ }, {
2305
+ name: 'Travel & Places', code: '1F30D', iconCss: 'e-travel-and-places', icons: [{ code: '2708', desc: 'Airplane' },
2306
+ { code: '1F697', desc: 'Automobile' },
2307
+ { code: '1F695', desc: 'Taxi' },
2308
+ { code: '1F6B2', desc: 'Bicycle' },
2309
+ { code: '1F68C', desc: 'Bus' },
2310
+ { code: '1F682', desc: 'Locomotive' },
2311
+ { code: '1F6F3', desc: 'Passenger ship' },
2312
+ { code: '1F680', desc: 'Rocket' },
2313
+ { code: '1F681', desc: 'Helicopter' },
2314
+ { code: '1F6A2', desc: 'Ship' },
2315
+ { code: '1F3DF', desc: 'Stadium' },
2316
+ { code: '1F54C', desc: 'Mosque' },
2317
+ { code: '26EA', desc: 'Church' },
2318
+ { code: '1F6D5', desc: 'Hindu Temple' },
2319
+ { code: '1F3D4', desc: 'Snow-capped mountain' },
2320
+ { code: '1F3EB', desc: 'School' },
2321
+ { code: '1F30B', desc: 'Volcano' },
2322
+ { code: '1F3D6', desc: 'Beach with umbrella' },
2323
+ { code: '1F3DD', desc: 'Desert island' },
2324
+ { code: '1F3DE', desc: 'National park' },
2325
+ { code: '1F3F0', desc: 'Castle' },
2326
+ { code: '1F5FC', desc: 'Tokyo tower' },
2327
+ { code: '1F5FD', desc: 'Statue of liberty' },
2328
+ { code: '26E9', desc: 'Shinto shrine' },
2329
+ { code: '1F3EF', desc: 'Japanese castle' },
2330
+ { code: '1F3A2', desc: 'Roller coaster' }]
2331
+ }, {
2332
+ name: 'Objects', code: '1F507', iconCss: 'e-objects', icons: [{ code: '1F4A1', desc: 'Light bulb' },
2333
+ { code: '1F526', desc: 'Flashlight' },
2334
+ { code: '1F4BB', desc: 'Laptop computer' },
2335
+ { code: '1F5A5', desc: 'Desktop computer' },
2336
+ { code: '1F5A8', desc: 'Printer' },
2337
+ { code: '1F4F7', desc: 'Camera' },
2338
+ { code: '1F4F8', desc: 'Camera with flash' },
2339
+ { code: '1F4FD', desc: 'Film projector' },
2340
+ { code: '1F3A5', desc: 'Movie camera' },
2341
+ { code: '1F4FA', desc: 'Television' },
2342
+ { code: '1F4FB', desc: 'Radio' },
2343
+ { code: '1F50B', desc: 'Battery' },
2344
+ { code: '231A', desc: 'Watch' },
2345
+ { code: '1F4F1', desc: 'Mobile phone' },
2346
+ { code: '260E', desc: 'Telephone' },
2347
+ { code: '1F4BE', desc: 'Floppy disk' },
2348
+ { code: '1F4BF', desc: 'Optical disk' },
2349
+ { code: '1F4C0', desc: 'Digital versatile disc' },
2350
+ { code: '1F4BD', desc: 'Computer disk' },
2351
+ { code: '1F3A7', desc: 'Headphone' },
2352
+ { code: '1F3A4', desc: 'Microphone' },
2353
+ { code: '1F3B6', desc: 'Multiple musical notes' },
2354
+ { code: '1F4DA', desc: 'Books' }]
2355
+ }, {
2356
+ name: 'Symbols', code: '1F3E7', iconCss: 'e-symbols', icons: [{ code: '274C', desc: 'Cross mark' },
2357
+ { code: '2714', desc: 'Check mark' },
2358
+ { code: '26A0', desc: 'Warning sign' },
2359
+ { code: '1F6AB', desc: 'Prohibited' },
2360
+ { code: '2139', desc: 'Information' },
2361
+ { code: '267B', desc: 'Recycling symbol' },
2362
+ { code: '1F6AD', desc: 'No smoking' },
2363
+ { code: '1F4F5', desc: 'No mobile phones' },
2364
+ { code: '1F6AF', desc: 'No littering' },
2365
+ { code: '1F6B3', desc: 'No bicycles' },
2366
+ { code: '1F6B7', desc: 'No pedestrians' },
2367
+ { code: '2795', desc: 'Plus' },
2368
+ { code: '2796', desc: 'Minus' },
2369
+ { code: '2797', desc: 'Divide' },
2370
+ { code: '2716', desc: 'Multiplication' },
2371
+ { code: '1F4B2', desc: 'Dollar banknote' },
2372
+ { code: '1F4AC', desc: 'Speech balloon' },
2373
+ { code: '2755', desc: 'White exclamation mark' },
2374
+ { code: '2754', desc: 'White question mark' },
2375
+ { code: '2764', desc: 'Red heart' }]
2376
+ }];
2180
2377
 
2181
2378
  /* eslint-disable */
2182
2379
  /**
@@ -2371,7 +2568,13 @@ var defaultLocale = {
2371
2568
  'bulletFormatListSquare': 'Square',
2372
2569
  'numberFormatListNone': 'None',
2373
2570
  'bulletFormatListNone': 'None',
2374
- 'formatPainter': 'Format Painter'
2571
+ 'formatPainter': 'Format Painter',
2572
+ 'emojiPicker': 'Emoji Picker',
2573
+ 'embeddedCode': 'Embedded Code',
2574
+ 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
2575
+ 'emojiPickerTypeToFind': 'Type to find',
2576
+ 'emojiPickerNoResultFound': 'No results found',
2577
+ 'emojiPickerTrySomethingElse': 'Try something else',
2375
2578
  };
2376
2579
  var toolsLocale = {
2377
2580
  'alignments': 'alignments',
@@ -2459,7 +2662,13 @@ var toolsLocale = {
2459
2662
  'insertrowbefore': 'insertRowBefore',
2460
2663
  'insertrowafter': 'insertRowAfter',
2461
2664
  'deleterow': 'deleteRow',
2462
- 'formatpainter': 'formatPainter'
2665
+ 'formatpainter': 'formatPainter',
2666
+ 'emojipicker': 'emojiPicker',
2667
+ 'embeddedCode': 'Embedded Code',
2668
+ 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',
2669
+ 'emojiPickerTypeToFind': 'Type to find',
2670
+ 'emojiPickerNoResultFound': 'No results found',
2671
+ 'emojiPickerTrySomethingElse': 'Try something else',
2463
2672
  };
2464
2673
  var fontNameLocale = [
2465
2674
  { locale: 'fontNameSegoeUI', value: 'Segoe UI' },
@@ -2643,7 +2852,8 @@ function setToolbarStatus(e, isPopToolbar, self) {
2643
2852
  var item = e.tbItems[j].subCommand;
2644
2853
  var itemStr = item && item.toLocaleLowerCase();
2645
2854
  if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||
2646
- (itemStr === 'pre' && key === 'insertcode')) {
2855
+ (itemStr === 'pre' && key === 'insertcode') || (item === 'NumberFormatList' && key === 'numberFormatList' ||
2856
+ item === 'BulletFormatList' && key === 'bulletFormatList')) {
2647
2857
  if (typeof data["" + key] === 'boolean') {
2648
2858
  if (data["" + key] === true) {
2649
2859
  addClass([e.tbElements[j]], [CLS_ACTIVE]);
@@ -2695,7 +2905,6 @@ function setToolbarStatus(e, isPopToolbar, self) {
2695
2905
  var fontNameContent = isNullOrUndefined(e.parent.fontFamily.default) ? fontNameItems[0].text :
2696
2906
  e.parent.fontFamily.default;
2697
2907
  var name_1 = (isNullOrUndefined(result) ? fontNameContent : result);
2698
- e.tbElements[j].title = name_1;
2699
2908
  dropDown.fontNameDropDown.content = ('<span style="display: inline-flex;' +
2700
2909
  'width:' + e.parent.fontFamily.width + '" >' +
2701
2910
  '<span class="e-rte-dropdown-btn-text' + (isNullOrUndefined(e.parent.cssClass) ? '' : ' ' + e.parent.cssClass) + '">'
@@ -3091,6 +3300,10 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
3091
3300
  }
3092
3301
  ToolbarRenderer.prototype.wireEvent = function () {
3093
3302
  this.parent.on(destroy, this.unWireEvent, this);
3303
+ this.parent.on(maximizeMinimizeClick, this.destroyTooltip, this);
3304
+ };
3305
+ ToolbarRenderer.prototype.destroyTooltip = function () {
3306
+ this.tooltip.close();
3094
3307
  };
3095
3308
  ToolbarRenderer.prototype.unWireEvent = function () {
3096
3309
  this.parent.off(destroy, this.unWireEvent);
@@ -3187,12 +3400,13 @@ var ToolbarRenderer = /** @__PURE__ @class */ (function () {
3187
3400
  args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;
3188
3401
  args.rteToolbarObj.toolbarObj.appendTo(args.target);
3189
3402
  if (this.parent.showTooltip) {
3190
- var tooltip = new Tooltip({
3403
+ this.tooltip = new Tooltip({
3191
3404
  target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',
3192
3405
  showTipPointer: true,
3406
+ openDelay: 400,
3193
3407
  cssClass: this.parent.cssClass
3194
3408
  });
3195
- tooltip.appendTo(args.target);
3409
+ this.tooltip.appendTo(args.target);
3196
3410
  }
3197
3411
  };
3198
3412
  /**
@@ -3796,8 +4010,9 @@ var BaseToolbar = /** @__PURE__ @class */ (function () {
3796
4010
  _this.parent.formatter.saveData();
3797
4011
  }
3798
4012
  callback_1.call(_this);
3799
- if ((_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text.trim()
3800
- === _this.parent.inputElement.innerHTML.trim())) {
4013
+ var currentContentElem = _this.parent.createElement('div');
4014
+ currentContentElem.appendChild(_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text);
4015
+ if (currentContentElem.innerHTML.trim() === _this.parent.inputElement.innerHTML.trim()) {
3801
4016
  return;
3802
4017
  }
3803
4018
  if (proxy_1.undo) {
@@ -5891,7 +6106,8 @@ var BaseQuickToolbar = /** @__PURE__ @class */ (function () {
5891
6106
  */
5892
6107
  BaseQuickToolbar.prototype.showPopup = function (x, y, target) {
5893
6108
  var _this = this;
5894
- var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target, positionX: x, positionY: y };
6109
+ var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target,
6110
+ positionX: x, positionY: y };
5895
6111
  this.parent.trigger(beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {
5896
6112
  if (!beforeQuickToolbarArgs.cancel) {
5897
6113
  var editPanelTop = void 0;
@@ -5927,6 +6143,7 @@ var BaseQuickToolbar = /** @__PURE__ @class */ (function () {
5927
6143
  if (_this.parent.showTooltip) {
5928
6144
  _this.tooltip = new Tooltip({
5929
6145
  target: '#' + _this.element.id + ' [title]',
6146
+ openDelay: 400,
5930
6147
  showTipPointer: true
5931
6148
  });
5932
6149
  _this.tooltip.appendTo(_this.element);
@@ -6007,6 +6224,11 @@ var BaseQuickToolbar = /** @__PURE__ @class */ (function () {
6007
6224
  }
6008
6225
  this.tooltip.destroy();
6009
6226
  }
6227
+ else {
6228
+ if (!isNullOrUndefined(this.tooltip)) {
6229
+ this.tooltip.destroy();
6230
+ }
6231
+ }
6010
6232
  if (!isNullOrUndefined(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {
6011
6233
  if (isNullOrUndefined(viewSourcePanel) || viewSourcePanel.style.display === 'none') {
6012
6234
  this.parent.enableToolbarItem(this.parent.toolbarSettings.items);
@@ -7232,6 +7454,8 @@ function getDefaultHtmlTbStatus() {
7232
7454
  strikethrough: false,
7233
7455
  orderedlist: false,
7234
7456
  unorderedlist: false,
7457
+ numberFormatList: false,
7458
+ bulletFormatList: false,
7235
7459
  underline: false,
7236
7460
  alignments: null,
7237
7461
  backgroundcolor: null,
@@ -7399,7 +7623,8 @@ var ExecCommandCallBack = /** @__PURE__ @class */ (function () {
7399
7623
  this.parent.on(destroy, this.removeEventListener, this);
7400
7624
  };
7401
7625
  ExecCommandCallBack.prototype.commandCallBack = function (args) {
7402
- if (args.requestType !== 'Undo' && args.requestType !== 'Redo') {
7626
+ var formatPainterCopy = !isNullOrUndefined(args.requestType) && args.requestType === 'FormatPainter' && args.action === 'format-copy';
7627
+ if (!isNullOrUndefined(args) && !isNullOrUndefined(args.requestType) && args.requestType !== 'Undo' && args.requestType !== 'Redo' && !formatPainterCopy) {
7403
7628
  this.parent.formatter.saveData();
7404
7629
  }
7405
7630
  this.parent.notify(toolbarRefresh, { args: args });
@@ -7499,6 +7724,12 @@ var SPACE_ACTION = 'actionBegin';
7499
7724
  * @hidden
7500
7725
  */
7501
7726
  var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';
7727
+ /**
7728
+ * Emoji picker event constant
7729
+ *
7730
+ * @hidden
7731
+ */
7732
+ var EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';
7502
7733
 
7503
7734
  /**
7504
7735
  * Formatter
@@ -7543,6 +7774,7 @@ var Formatter = /** @__PURE__ @class */ (function () {
7543
7774
  && args.item.command !== 'Files'
7544
7775
  && args.item.command !== 'Audios'
7545
7776
  && args.item.command !== 'Videos'
7777
+ && args.item.command !== 'EmojiPicker'
7546
7778
  && range
7547
7779
  && !(self.contentModule.getEditPanel().contains(this.getAncestorNode(range.commonAncestorContainer))
7548
7780
  || self.contentModule.getEditPanel() === range.commonAncestorContainer
@@ -7608,13 +7840,14 @@ var Formatter = /** @__PURE__ @class */ (function () {
7608
7840
  && args.item.command !== 'Font')
7609
7841
  || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')
7610
7842
  || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')
7611
- && args.name === 'colorPickerChanged') || args.item.subCommand === 'FormatPainter')) {
7843
+ && args.name === 'colorPickerChanged') || args.item.subCommand === 'FormatPainter' || args.item.subCommand === 'EmojiPicker')) {
7612
7844
  extend(args, args, { requestType: args.item.subCommand, cancel: false, itemCollection: value, selectType: args.name }, true);
7613
7845
  self.trigger(actionBegin, args, function (actionBeginArgs) {
7614
7846
  if (!actionBeginArgs.cancel) {
7615
- var formatPainterCopyAction = !isNullOrUndefined(actionBeginArgs.name) && actionBeginArgs.name === 'format-copy';
7616
- if (_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links'
7617
- && actionBeginArgs.item.command !== 'Images' && !formatPainterCopyAction) {
7847
+ var formatPainterCopy = !isNullOrUndefined(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-copy';
7848
+ var formatPainterPaste = !isNullOrUndefined(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-paste';
7849
+ if ((_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links' && actionBeginArgs.item.command !== 'Images' && !formatPainterCopy)
7850
+ || formatPainterPaste) {
7618
7851
  _this.saveData();
7619
7852
  }
7620
7853
  self.isBlur = false;
@@ -7636,7 +7869,7 @@ var Formatter = /** @__PURE__ @class */ (function () {
7636
7869
  }
7637
7870
  });
7638
7871
  }
7639
- if (isNullOrUndefined(event) || event && event.action !== 'copy') {
7872
+ if ((isNullOrUndefined(event) || event && event.action !== 'copy')) {
7640
7873
  this.enableUndo(self);
7641
7874
  }
7642
7875
  };
@@ -8897,8 +9130,8 @@ var htmlKeyConfig = {
8897
9130
  'enter': '13',
8898
9131
  'tab': 'tab',
8899
9132
  'delete': '46',
8900
- 'format-copy': 'ctrl+shift+c',
8901
- 'format-paste': 'ctrl+shift+v'
9133
+ 'format-copy': 'alt+shift+c',
9134
+ 'format-paste': 'alt+shift+v'
8902
9135
  };
8903
9136
  /**
8904
9137
  * Default markdown key config for adapter
@@ -11002,7 +11235,11 @@ var DOMNode = /** @__PURE__ @class */ (function () {
11002
11235
  var startTextNode;
11003
11236
  var endTextNode;
11004
11237
  if (start.textContent === '' && isNullOrUndefined(end) && action !== 'tab') {
11005
- if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {
11238
+ if (isNullOrUndefined(action) && save.range.startContainer.nodeType === 1 &&
11239
+ save.range.startContainer.querySelectorAll('audio,video,image').length === 0) {
11240
+ start.innerHTML = '<br>';
11241
+ }
11242
+ else if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {
11006
11243
  start.innerHTML = '&#65279;&#65279;<br>';
11007
11244
  }
11008
11245
  else {
@@ -11091,7 +11328,7 @@ var DOMNode = /** @__PURE__ @class */ (function () {
11091
11328
  markerStart.appendChild(start);
11092
11329
  }
11093
11330
  else {
11094
- if (start.nodeType !== 3 && start.nodeName !== '#text') {
11331
+ if (start.nodeType !== 3 && start.nodeName !== '#text' && start.nodeName !== 'BR') {
11095
11332
  var marker = this.marker(markerClassName.startSelection, '');
11096
11333
  append([this.parseHTMLFragment(marker)], start);
11097
11334
  }
@@ -13326,7 +13563,12 @@ var InsertHtml = /** @__PURE__ @class */ (function () {
13326
13563
  InsertHtml.removeEmptyElements = function (element) {
13327
13564
  var emptyElements = element.querySelectorAll(':empty');
13328
13565
  for (var i = 0; i < emptyElements.length; i++) {
13329
- if (SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0) {
13566
+ var lineWithDiv = true;
13567
+ if (emptyElements[i].tagName === 'DIV') {
13568
+ lineWithDiv = emptyElements[i].style.borderBottom === 'none' ||
13569
+ emptyElements[i].style.borderBottom === '' ? true : false;
13570
+ }
13571
+ if (SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0 && lineWithDiv) {
13330
13572
  var detachableElement = this.findDetachEmptyElem(emptyElements[i]);
13331
13573
  if (!isNullOrUndefined(detachableElement)) {
13332
13574
  detach(detachableElement);
@@ -13433,7 +13675,7 @@ var LinkCommand = /** @__PURE__ @class */ (function () {
13433
13675
  var domSelection = new NodeSelection();
13434
13676
  var range = domSelection.getRange(this.parent.currentDocument);
13435
13677
  if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&
13436
- range.endContainer.textContent.charAt(range.endOffset) === ' ' && range.endContainer.nextSibling.nodeName === 'A') {
13678
+ range.endContainer.textContent.charAt(range.endOffset) === ' ' && (!isNullOrUndefined(range.endContainer.nextSibling) && range.endContainer.nextSibling.nodeName === 'A')) {
13437
13679
  domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);
13438
13680
  range = domSelection.getRange(this.parent.currentDocument);
13439
13681
  }
@@ -15158,10 +15400,10 @@ var TableCommand = /** @__PURE__ @class */ (function () {
15158
15400
  this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());
15159
15401
  this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());
15160
15402
  e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);
15161
- if (this.parent.nodeSelection.range) {
15403
+ if (this.parent.nodeSelection && firstCell) {
15162
15404
  this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument,
15163
15405
  // eslint-disable-next-line
15164
- this.parent.nodeSelection.range.endContainer, 0);
15406
+ firstCell, 0);
15165
15407
  }
15166
15408
  if (e.callBack) {
15167
15409
  e.callBack({
@@ -16297,8 +16539,10 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
16297
16539
  while (currentFormatNode) {
16298
16540
  var isSameTextContent = currentFormatNode.parentElement.textContent.trim()
16299
16541
  === nodes[index].textContent.trim();
16300
- if (!domNode.isBlockNode(currentFormatNode.parentElement) && isSameTextContent) {
16301
- currentFormatNode = currentFormatNode.parentElement;
16542
+ var parent_1 = currentFormatNode.parentElement;
16543
+ if (!domNode.isBlockNode(parent_1) && isSameTextContent &&
16544
+ !(parent_1.nodeName === 'SPAN' && parent_1.classList.contains('e-img-inner'))) {
16545
+ currentFormatNode = parent_1;
16302
16546
  }
16303
16547
  else {
16304
16548
  break;
@@ -16479,33 +16723,19 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
16479
16723
  };
16480
16724
  // Below function is used to insert the element created by the format painter plugin.
16481
16725
  SelectionCommands.insertFormatPainterElem = function (nodes, index, range, nodeCutter, painterValues, domNode) {
16482
- var parent = nodes[index].parentElement;
16726
+ var parent = !domNode.isBlockNode(nodes[index].parentElement) ?
16727
+ nodes[index].parentElement : nodes[index];
16483
16728
  if (!domNode.isBlockNode(parent)) {
16484
- // The below code is used to remove the already present inline style from the text node.
16485
16729
  while (parent.textContent.trim() === parent.parentElement.textContent.trim() && !domNode.isBlockNode(parent.parentElement)) {
16486
16730
  parent = parent.parentElement;
16487
16731
  }
16488
- if (parent.textContent.trim() !== nodes[index].textContent.trim()) {
16489
- nodeCutter.SplitNode(range, parent, true);
16490
- var childELemList = nodes[index].parentElement.childNodes;
16491
- for (var i = 0; i < childELemList.length; i++) {
16492
- if (childELemList[i].textContent.trim() === nodes[i].textContent.trim()) {
16493
- parent.parentNode.insertBefore(childELemList[i], parent);
16494
- break;
16495
- }
16496
- }
16497
- var blockChildNodes = parent.parentElement.childNodes;
16498
- for (var k = 0; k < blockChildNodes.length; k++) {
16499
- if (blockChildNodes[k].textContent.trim() === '' || blockChildNodes[k].textContent.length === 0) {
16500
- detach(blockChildNodes[k]);
16501
- }
16502
- }
16503
- }
16504
- else {
16505
- InsertMethods.unwrap(parent);
16506
- }
16732
+ }
16733
+ // The below code is used to remove the already present inline style from the text node.
16734
+ if (!isNullOrUndefined(parent) && parent.nodeType === 1 && !(parent.classList.contains('e-rte-img-caption') || parent.classList.contains('e-img-inner'))) {
16735
+ this.formatPainterCleanup(index, nodes, parent, range, nodeCutter, domNode);
16507
16736
  }
16508
16737
  var elem = painterValues.element;
16738
+ // The below code is used to apply the inline format copied.
16509
16739
  if (!isNullOrUndefined(elem)) {
16510
16740
  // Step 1: Cloning the element that is created by format painter.
16511
16741
  // Step 2: Finding the last child of the nested elememt using the paintervalues.lastchild nodename
@@ -16530,6 +16760,43 @@ var SelectionCommands = /** @__PURE__ @class */ (function () {
16530
16760
  }
16531
16761
  return nodes[index];
16532
16762
  };
16763
+ SelectionCommands.formatPainterCleanup = function (index, nodes, parent, range, nodeCutter, domNode) {
16764
+ var INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];
16765
+ if (index === 0 && parent.textContent.trim() !== nodes[index].textContent.trim()) {
16766
+ nodeCutter.SplitNode(range, parent, true);
16767
+ var childELemList = nodes[index].parentElement.childNodes;
16768
+ for (var i = 0; i < childELemList.length; i++) {
16769
+ if (childELemList[i].textContent.trim() === nodes[i].textContent.trim()) {
16770
+ parent.parentNode.insertBefore(childELemList[i], parent);
16771
+ break;
16772
+ }
16773
+ }
16774
+ var blockChildNodes = parent.parentElement.childNodes;
16775
+ for (var k = 0; k < blockChildNodes.length; k++) {
16776
+ if (blockChildNodes[k].textContent.trim() === '' || blockChildNodes[k].textContent.length === 0) {
16777
+ detach(blockChildNodes[k]);
16778
+ }
16779
+ }
16780
+ }
16781
+ else if (parent.textContent.trim() !== nodes[index].textContent.trim()) {
16782
+ parent.parentElement.insertBefore(nodes[index], parent);
16783
+ }
16784
+ else {
16785
+ while (!isNullOrUndefined(parent) && parent.nodeType !== 3 && !domNode.isBlockNode(parent)) {
16786
+ var temp = void 0;
16787
+ for (var i = 0; i < parent.childNodes.length; i++) {
16788
+ var currentChild = parent.childNodes[i];
16789
+ if (currentChild.textContent.trim().length !== 0 && currentChild.nodeType !== 3) {
16790
+ temp = parent.childNodes[i];
16791
+ }
16792
+ }
16793
+ if (INVALID_TAGS.indexOf(parent.tagName) === -1) {
16794
+ InsertMethods.unwrap(parent);
16795
+ }
16796
+ parent = temp;
16797
+ }
16798
+ }
16799
+ };
16533
16800
  SelectionCommands.enterAction = 'P';
16534
16801
  return SelectionCommands;
16535
16802
  }());
@@ -16646,6 +16913,7 @@ var ClearFormat$1 = /** @__PURE__ @class */ (function () {
16646
16913
  * @param {Node} endNode - specifies the end node
16647
16914
  * @param {string} enterAction - specifies the enter key action
16648
16915
  * @param {string} selector - specifies the string value
16916
+ * @param {string} command - specifies the command value
16649
16917
  * @returns {void}
16650
16918
  * @hidden
16651
16919
  * @deprecated
@@ -17013,6 +17281,19 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17013
17281
  this.saveData(e);
17014
17282
  }
17015
17283
  };
17284
+ UndoRedoManager.prototype.getTextContentFromFragment = function (fragment) {
17285
+ var textContent = '';
17286
+ for (var i = 0; i < fragment.childNodes.length; i++) {
17287
+ var childNode = fragment.childNodes[i];
17288
+ if (childNode.nodeType === Node.TEXT_NODE) {
17289
+ textContent += childNode.textContent;
17290
+ }
17291
+ else if (childNode.nodeType === Node.ELEMENT_NODE) {
17292
+ textContent += this.getTextContentFromFragment(childNode);
17293
+ }
17294
+ }
17295
+ return textContent;
17296
+ };
17016
17297
  /**
17017
17298
  * RTE collection stored html format.
17018
17299
  *
@@ -17035,8 +17316,12 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17035
17316
  }
17036
17317
  range = new NodeSelection().getRange(this.parent.currentDocument);
17037
17318
  var save = new NodeSelection().save(range, this.parent.currentDocument);
17038
- var htmlText = this.parent.editableElement.innerHTML;
17039
- var changEle = { text: htmlText, range: save };
17319
+ var clonedElement = this.parent.editableElement.cloneNode(true);
17320
+ var fragment = document.createDocumentFragment();
17321
+ while (clonedElement.firstChild) {
17322
+ fragment.appendChild(clonedElement.firstChild);
17323
+ }
17324
+ var changEle = { text: fragment, range: save };
17040
17325
  if (this.undoRedoStack.length >= this.steps) {
17041
17326
  this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);
17042
17327
  }
@@ -17044,7 +17329,8 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17044
17329
  && (this.undoRedoStack[this.undoRedoStack.length - 1].range.startOffset === save.range.startOffset) &&
17045
17330
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&
17046
17331
  (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&
17047
- (this.undoRedoStack[this.undoRedoStack.length - 1].text.trim() === changEle.text.trim())) {
17332
+ (this.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===
17333
+ this.getTextContentFromFragment(changEle.text).trim())) {
17048
17334
  return;
17049
17335
  }
17050
17336
  this.undoRedoStack.push(changEle);
@@ -17070,7 +17356,8 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17070
17356
  if (this.steps > 0) {
17071
17357
  var range = this.undoRedoStack[this.steps - 1].range;
17072
17358
  var removedContent = this.undoRedoStack[this.steps - 1].text;
17073
- this.parent.editableElement.innerHTML = removedContent;
17359
+ this.parent.editableElement.innerHTML = '';
17360
+ this.parent.editableElement.appendChild(removedContent.cloneNode(true));
17074
17361
  this.parent.editableElement.focus();
17075
17362
  if (isIDevice$1()) {
17076
17363
  setEditFrameFocus(this.parent.editableElement, e.selector);
@@ -17100,7 +17387,9 @@ var UndoRedoManager = /** @__PURE__ @class */ (function () {
17100
17387
  UndoRedoManager.prototype.redo = function (e) {
17101
17388
  if (this.undoRedoStack[this.steps + 1] != null) {
17102
17389
  var range = this.undoRedoStack[this.steps + 1].range;
17103
- this.parent.editableElement.innerHTML = this.undoRedoStack[this.steps + 1].text;
17390
+ var addedContent = this.undoRedoStack[this.steps + 1].text;
17391
+ this.parent.editableElement.innerHTML = '';
17392
+ this.parent.editableElement.appendChild(addedContent.cloneNode(true));
17104
17393
  this.parent.editableElement.focus();
17105
17394
  if (isIDevice$1()) {
17106
17395
  setEditFrameFocus(this.parent.editableElement, e.selector);
@@ -17211,6 +17500,8 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17211
17500
  listNodes[0].parentElement.tagName !== 'OL') {
17212
17501
  this.listConverter(listNodes);
17213
17502
  }
17503
+ this.cleanList(elm, 'UL');
17504
+ this.cleanList(elm, 'OL');
17214
17505
  this.styleCorrection(elm, wordPasteStyleConfig);
17215
17506
  this.removingComments(elm);
17216
17507
  this.removeUnwantedElements(elm);
@@ -17236,11 +17527,38 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17236
17527
  e.callBack(elm.innerHTML);
17237
17528
  }
17238
17529
  };
17530
+ MsWordPaste.prototype.cleanList = function (elm, listTag) {
17531
+ var replacableElem = elm.querySelectorAll(listTag + ' div');
17532
+ for (var j = replacableElem.length - 1; j >= 0; j--) {
17533
+ var parentElem = replacableElem[j].parentNode;
17534
+ while (replacableElem[j].firstChild) {
17535
+ parentElem.insertBefore(replacableElem[j].firstChild, replacableElem[j]);
17536
+ }
17537
+ var closestListElem = this.findClosestListElem(replacableElem[j]);
17538
+ if (closestListElem) {
17539
+ this.insertAfter(replacableElem[j], closestListElem);
17540
+ }
17541
+ }
17542
+ };
17543
+ MsWordPaste.prototype.insertAfter = function (newNode, referenceNode) {
17544
+ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
17545
+ };
17546
+ MsWordPaste.prototype.findClosestListElem = function (listElem) {
17547
+ var closestListElem;
17548
+ while (!isNullOrUndefined(listElem)) {
17549
+ listElem = !isNullOrUndefined(listElem.closest('ul')) && listElem.tagName !== 'UL' ?
17550
+ listElem.closest('ul') : (listElem.tagName !== 'OL' ? listElem.closest('ol') : null);
17551
+ closestListElem = !isNullOrUndefined(listElem) ? listElem : closestListElem;
17552
+ }
17553
+ return closestListElem;
17554
+ };
17239
17555
  MsWordPaste.prototype.addListClass = function (elm) {
17240
17556
  var allNodes = elm.querySelectorAll('*');
17241
17557
  for (var index = 0; index < allNodes.length; index++) {
17242
17558
  if (!isNullOrUndefined(allNodes[index].getAttribute('style')) && allNodes[index].getAttribute('style').replace(/ /g, '').replace('\n', '').indexOf('mso-list:l') >= 0 &&
17243
- allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 && allNodes[index].tagName.charAt(0) !== 'H') {
17559
+ allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 &&
17560
+ allNodes[index].tagName.charAt(0) !== 'H' && allNodes[index].tagName !== 'LI' &&
17561
+ allNodes[index].tagName !== 'OL' && allNodes[index].tagName !== 'UL') {
17244
17562
  allNodes[index].classList.add('msolistparagraph');
17245
17563
  }
17246
17564
  }
@@ -17364,7 +17682,7 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17364
17682
  MsWordPaste.prototype.hexConversion = function (rtfData) {
17365
17683
  // eslint-disable-next-line
17366
17684
  var picHead = /\{\\pict[\s\S]+?\\bliptag\-?\d+(\\blipupi\-?\d+)?(\{\\\*\\blipuid\s?[\da-fA-F]+)?[\s\}]*?/;
17367
- // eslint-disable-next-line
17685
+ // eslint-disable-next-line security/detect-non-literal-regexp
17368
17686
  var pic = new RegExp('(?:(' + picHead.source + '))([\\da-fA-F\\s]+)\\}', 'g');
17369
17687
  var fullImg = rtfData.match(pic);
17370
17688
  var imgType;
@@ -17428,9 +17746,9 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17428
17746
  MsWordPaste.prototype.removeUnwantedElements = function (elm) {
17429
17747
  var innerElement = elm.innerHTML;
17430
17748
  for (var i = 0; i < this.removableElements.length; i++) {
17431
- // eslint-disable-next-line
17749
+ // eslint-disable-next-line security/detect-non-literal-regexp
17432
17750
  var regExpStartElem = new RegExp('<' + this.removableElements[i] + '>', 'g');
17433
- // eslint-disable-next-line
17751
+ // eslint-disable-next-line security/detect-non-literal-regexp
17434
17752
  var regExpEndElem = new RegExp('</' + this.removableElements[i] + '>', 'g');
17435
17753
  innerElement = innerElement.replace(regExpStartElem, '');
17436
17754
  innerElement = innerElement.replace(regExpEndElem, '');
@@ -17473,9 +17791,14 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17473
17791
  !isNullOrUndefined(emptyElements[i].closest('td').querySelector('.MsoNormal'))) {
17474
17792
  emptyElements[i].innerHTML = '-';
17475
17793
  }
17794
+ var lineWithDiv = true;
17795
+ if (emptyElements[i].tagName === 'DIV') {
17796
+ lineWithDiv = emptyElements[i].style.borderBottom === 'none' ||
17797
+ emptyElements[i].style.borderBottom === '' ? true : false;
17798
+ }
17476
17799
  if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&
17477
17800
  emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&
17478
- emptyElements[i].tagName !== 'HR') {
17801
+ emptyElements[i].tagName !== 'HR' && lineWithDiv) {
17479
17802
  var detachableElement = this.findDetachEmptyElem(emptyElements[i]);
17480
17803
  if (!isNullOrUndefined(detachableElement)) {
17481
17804
  detach(detachableElement);
@@ -17604,7 +17927,6 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17604
17927
  elm.innerHTML = innerElement;
17605
17928
  };
17606
17929
  MsWordPaste.prototype.cleanUp = function (node, listNodes) {
17607
- // eslint-disable-next-line
17608
17930
  var tempCleaner = [];
17609
17931
  var prevflagState;
17610
17932
  var allNodes = node.querySelectorAll('*');
@@ -17805,7 +18127,7 @@ var MsWordPaste = /** @__PURE__ @class */ (function () {
17805
18127
  break;
17806
18128
  }
17807
18129
  }
17808
- if (!isNullOrUndefined(prevList) && index != 0 &&
18130
+ if (!isNullOrUndefined(prevList) && index !== 0 &&
17809
18131
  collection[index - 1].listType !== collection[index].listType &&
17810
18132
  !isNormalList) {
17811
18133
  prevList = null;
@@ -18323,6 +18645,9 @@ var ToolbarStatus = /** @__PURE__ @class */ (function () {
18323
18645
  else if (list === 'none') {
18324
18646
  return 'None';
18325
18647
  }
18648
+ else if (this.isOrderedList(node)) {
18649
+ return true;
18650
+ }
18326
18651
  else {
18327
18652
  return null;
18328
18653
  }
@@ -18341,6 +18666,9 @@ var ToolbarStatus = /** @__PURE__ @class */ (function () {
18341
18666
  else if (list === 'disc') {
18342
18667
  return 'Disc';
18343
18668
  }
18669
+ else if (this.isUnorderedList(node)) {
18670
+ return true;
18671
+ }
18344
18672
  else {
18345
18673
  return null;
18346
18674
  }
@@ -18348,12 +18676,73 @@ var ToolbarStatus = /** @__PURE__ @class */ (function () {
18348
18676
  return ToolbarStatus;
18349
18677
  }());
18350
18678
 
18679
+ var EmojiPickerAction = /** @__PURE__ @class */ (function () {
18680
+ function EmojiPickerAction(parent) {
18681
+ this.parent = parent;
18682
+ this.addEventListener();
18683
+ }
18684
+ EmojiPickerAction.prototype.addEventListener = function () {
18685
+ this.parent.observer.on(EMOJI_PICKER_ACTIONS, this.emojiInsert, this);
18686
+ };
18687
+ EmojiPickerAction.prototype.emojiInsert = function (args) {
18688
+ var node = document.createTextNode(args.value);
18689
+ var selection = window.getSelection();
18690
+ var range = selection.getRangeAt(0);
18691
+ var cursorPos = range.startOffset;
18692
+ for (var i = cursorPos - 1; i >= cursorPos - 15; i--) {
18693
+ var prevChar_1 = selection.focusNode.textContent.substring(i - 1, i);
18694
+ var isPrevSpace_1 = /:$/.test(prevChar_1);
18695
+ if (isPrevSpace_1) {
18696
+ this.beforeApplyFormat(true);
18697
+ break;
18698
+ }
18699
+ }
18700
+ var colon = /:$/.test(selection.focusNode.textContent.charAt(cursorPos - 1));
18701
+ var prevChar = selection.focusNode.textContent.charAt(cursorPos - 2);
18702
+ var isPrevSpace = /\s/.test(prevChar);
18703
+ if (colon && (isPrevSpace || selection.focusOffset === 1)) {
18704
+ this.beforeApplyFormat(true);
18705
+ }
18706
+ InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);
18707
+ if (args.callBack) {
18708
+ args.callBack({
18709
+ requestType: args.subCommand,
18710
+ editorMode: 'HTML',
18711
+ event: args.event,
18712
+ range: this.parent.nodeSelection.getRange(this.parent.currentDocument),
18713
+ elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)
18714
+ });
18715
+ }
18716
+ };
18717
+ EmojiPickerAction.prototype.beforeApplyFormat = function (isBlockFormat) {
18718
+ var range1 = this.parent.nodeSelection.getRange(this.parent.currentDocument);
18719
+ var node = this.parent.nodeSelection.getNodeCollection(range1)[0];
18720
+ var blockNewLine = !(node.parentElement.innerHTML.replace(/&nbsp;|<br>/g, '').trim() === ':' || node.textContent.trim().indexOf('/') === 0);
18721
+ var startNode = node;
18722
+ if (blockNewLine && isBlockFormat) {
18723
+ while (startNode !== this.parent.editableElement) {
18724
+ startNode = startNode.parentElement;
18725
+ }
18726
+ }
18727
+ var startPoint = range1.startOffset;
18728
+ while (this.parent.nodeSelection.getRange(document).toString().indexOf(':') === -1) {
18729
+ this.parent.nodeSelection.setSelectionText(document, node, node, startPoint, range1.endOffset);
18730
+ startPoint--;
18731
+ }
18732
+ var range2 = this.parent.nodeSelection.getRange(this.parent.currentDocument);
18733
+ var node2 = this.parent.nodeCutter.GetSpliceNode(range2, node);
18734
+ node2.parentNode.removeChild(node2);
18735
+ };
18736
+ return EmojiPickerAction;
18737
+ }());
18738
+
18351
18739
  /**
18352
18740
  * Base export
18353
18741
  */
18354
18742
 
18355
18743
  var FormatPainterActions = /** @__PURE__ @class */ (function () {
18356
18744
  function FormatPainterActions(parent, options) {
18745
+ this.INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];
18357
18746
  this.parent = parent;
18358
18747
  this.settings = options;
18359
18748
  this.addEventListener();
@@ -18361,8 +18750,43 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18361
18750
  }
18362
18751
  FormatPainterActions.prototype.addEventListener = function () {
18363
18752
  this.parent.observer.on(FORMAT_PAINTER_ACTIONS, this.actionHandler, this);
18753
+ this.parent.observer.on(MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);
18754
+ };
18755
+ FormatPainterActions.prototype.onPropertyChanged = function (prop) {
18756
+ if (prop && prop.module === 'formatPainter') {
18757
+ if (!isNullOrUndefined(prop.newProp.formatPainterSettings.allowedFormats)) {
18758
+ this.settings.allowedFormats = prop.newProp.formatPainterSettings.allowedFormats;
18759
+ }
18760
+ if (!isNullOrUndefined(prop.newProp.formatPainterSettings.deniedFormats)) {
18761
+ this.settings.deniedFormats = prop.newProp.formatPainterSettings.deniedFormats;
18762
+ this.setDeniedFormats();
18763
+ }
18764
+ }
18765
+ };
18766
+ FormatPainterActions.prototype.removeEventListener = function () {
18767
+ this.parent.observer.off(FORMAT_PAINTER_ACTIONS, this.actionHandler);
18768
+ this.parent.observer.off(MODEL_CHANGED_PLUGIN, this.onPropertyChanged);
18769
+ };
18770
+ /**
18771
+ * Destroys the format painter.
18772
+ *
18773
+ * @function destroy
18774
+ * @returns {void}
18775
+ * @hidden
18776
+ * @deprecated
18777
+ */
18778
+ FormatPainterActions.prototype.destroy = function () {
18779
+ this.removeEventListener();
18780
+ this.INVALID_TAGS = null;
18781
+ this.copyCollection = null;
18782
+ this.deniedFormatsCollection = null;
18783
+ this.newElem = null;
18784
+ this.newElemLastChild = null;
18785
+ this.settings = null;
18786
+ this.parent = null;
18364
18787
  };
18365
18788
  FormatPainterActions.prototype.actionHandler = function (args) {
18789
+ this.settings.allowedContext = ['Text', 'List', 'Table'];
18366
18790
  if (!isNullOrUndefined(args) && !isNullOrUndefined(args.item) && !isNullOrUndefined(args.item.formatPainterAction)) {
18367
18791
  switch (args.item.formatPainterAction) {
18368
18792
  case 'format-copy':
@@ -18375,6 +18799,19 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18375
18799
  this.escapeAction();
18376
18800
  break;
18377
18801
  }
18802
+ this.callBack(args);
18803
+ }
18804
+ };
18805
+ FormatPainterActions.prototype.callBack = function (event) {
18806
+ if (event.callBack) {
18807
+ event.callBack({
18808
+ requestType: 'FormatPainter',
18809
+ action: event.item.formatPainterAction,
18810
+ event: event.event,
18811
+ editorMode: 'HTML',
18812
+ range: this.parent.nodeSelection.getRange(this.parent.currentDocument),
18813
+ elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)
18814
+ });
18378
18815
  }
18379
18816
  };
18380
18817
  FormatPainterActions.prototype.generateElement = function () {
@@ -18429,7 +18866,6 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18429
18866
  return;
18430
18867
  }
18431
18868
  this.insertFormatNode(this.newElem, this.newElemLastChild);
18432
- this.parent.undoRedoManager.saveData();
18433
18869
  };
18434
18870
  FormatPainterActions.prototype.removeDeniedFormats = function (parentElement) {
18435
18871
  if (!isNullOrUndefined(this.deniedFormatsCollection) && this.deniedFormatsCollection.length > 0) {
@@ -18478,13 +18914,23 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18478
18914
  FormatPainterActions.prototype.copyAction = function () {
18479
18915
  var copyCollection = [];
18480
18916
  var range = this.parent.nodeSelection.getRange(document);
18481
- var parentElem = range.startContainer.parentElement;
18917
+ var domSelection = this.parent.nodeSelection;
18918
+ var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
18919
+ domSelection.getSelectionNodeCollectionBr(range);
18920
+ if (nodes.length === 0 && domSelection.getSelectionNodeCollectionBr(range).length === 0) {
18921
+ return;
18922
+ }
18923
+ else {
18924
+ nodes = nodes.length === 0 ? domSelection.getSelectionNodeCollectionBr(range) : nodes;
18925
+ }
18926
+ var parentElem = nodes[0].parentElement;
18482
18927
  var currentContext = this.findCurrentContext(parentElem);
18483
- var allowedRulesArray = this.settings.allowedFormats.split(';');
18928
+ var allowedRulesArray = this.settings.allowedFormats.indexOf(';') > -1 ? this.settings.allowedFormats.split(';') :
18929
+ [this.settings.allowedFormats];
18484
18930
  for (var i = 0; i < allowedRulesArray.length; i++) {
18485
18931
  allowedRulesArray[i] = allowedRulesArray[i].trim();
18486
18932
  }
18487
- var _a = this.getRangeParentElem(currentContext, range), rangeParentElem = _a[0], context = _a[1];
18933
+ var _a = this.getRangeParentElem(currentContext, parentElem), rangeParentElem = _a[0], context = _a[1];
18488
18934
  if (currentContext === null) {
18489
18935
  currentContext = context;
18490
18936
  }
@@ -18529,8 +18975,8 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18529
18975
  }
18530
18976
  this.generateElement();
18531
18977
  };
18532
- FormatPainterActions.prototype.getRangeParentElem = function (currentContext, range) {
18533
- var startContainer = range.startContainer;
18978
+ FormatPainterActions.prototype.getRangeParentElem = function (currentContext, rangeParent) {
18979
+ var startContainer = rangeParent;
18534
18980
  var rangeParentELem;
18535
18981
  if (startContainer.nodeType === 3) {
18536
18982
  startContainer = startContainer.parentElement;
@@ -18550,7 +18996,7 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18550
18996
  break;
18551
18997
  }
18552
18998
  if (isNullOrUndefined(rangeParentELem)) {
18553
- var nearBlockParentName = this.getNearestBlockParentElement(range);
18999
+ var nearBlockParentName = this.getNearestBlockParentElement(rangeParent);
18554
19000
  if (!isNullOrUndefined(nearBlockParentName) && nearBlockParentName !== 'UL' &&
18555
19001
  nearBlockParentName !== 'OL' && nearBlockParentName !== 'LI') {
18556
19002
  rangeParentELem = closest(startContainer, nearBlockParentName);
@@ -18562,8 +19008,8 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18562
19008
  }
18563
19009
  return [rangeParentELem, currentContext];
18564
19010
  };
18565
- FormatPainterActions.prototype.getNearestBlockParentElement = function (range) {
18566
- var node = range.commonAncestorContainer;
19011
+ FormatPainterActions.prototype.getNearestBlockParentElement = function (rangeParent) {
19012
+ var node = rangeParent;
18567
19013
  if (node.nodeType === 3) {
18568
19014
  node = node.parentNode;
18569
19015
  }
@@ -18606,29 +19052,32 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18606
19052
  }
18607
19053
  };
18608
19054
  FormatPainterActions.prototype.validateELementTag = function (node) {
18609
- var INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];
18610
19055
  if (node.nodeType === 3) {
18611
19056
  node = node.parentElement;
18612
19057
  }
18613
- return INVALID_TAGS.indexOf(node.tagName) > -1;
19058
+ return this.INVALID_TAGS.indexOf(node.tagName) > -1;
18614
19059
  };
18615
19060
  FormatPainterActions.prototype.findCurrentContext = function (parentElem) {
18616
- if (closest(parentElem, 'td') || closest(parentElem, 'tr') || closest(parentElem, 'tbody')) {
18617
- return 'Table';
19061
+ if (closest(parentElem, 'p')) {
19062
+ return 'Text';
18618
19063
  }
18619
19064
  else if (closest(parentElem, 'li')) {
18620
19065
  return 'List';
18621
19066
  }
18622
- else if (closest(parentElem, 'p')) {
18623
- return 'Text';
19067
+ else if (closest(parentElem, 'td') || closest(parentElem, 'tr') || closest(parentElem, 'th')) {
19068
+ return 'Table';
18624
19069
  }
18625
19070
  return null;
18626
19071
  };
18627
19072
  FormatPainterActions.prototype.insertFormatNode = function (elem, lastChild) {
19073
+ var clonedElem = elem.cloneNode(true);
19074
+ if (!this.isBlockElement(elem)) {
19075
+ var newBlockElem = createElement('P');
19076
+ newBlockElem.appendChild(elem);
19077
+ clonedElem = newBlockElem.cloneNode(true);
19078
+ }
18628
19079
  var endNode = this.parent.editableElement;
18629
19080
  var docElement = this.parent.currentDocument;
18630
- var domSelection = this.parent.nodeSelection;
18631
- var clonedElem = elem.cloneNode(true);
18632
19081
  var childElem = clonedElem.firstChild;
18633
19082
  var inlineElement;
18634
19083
  while (childElem) {
@@ -18645,107 +19094,183 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18645
19094
  lastChild: lastChild
18646
19095
  };
18647
19096
  SelectionCommands.applyFormat(docElement, null, endNode, 'P', 'formatPainter', null, formatValues);
18648
- var isFullNodeSelected;
18649
19097
  var range = this.parent.nodeSelection.getRange(docElement);
18650
19098
  var isCollapsed = range.collapsed;
18651
- var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :
18652
- domSelection.getSelectionNodeCollectionBr(range);
18653
- if (nodes.length === 1) {
18654
- while (!this.isBlockElement(nodes[0])) {
18655
- nodes[0] = nodes[0].parentElement;
18656
- }
18657
- isFullNodeSelected = nodes[0].textContent.trim() === range.commonAncestorContainer.wholeText.trim();
19099
+ var blockNodes = this.parent.domNode.blockNodes();
19100
+ var isFullNodeSelected = false;
19101
+ if (blockNodes.length === 1) {
19102
+ isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();
18658
19103
  }
18659
- if (this.isBlockElement(elem) && isCollapsed || nodes.length > 1 || isFullNodeSelected) {
18660
- this.insertBlockNode(elem, range, docElement, endNode, nodes);
19104
+ if (this.isBlockElement(clonedElem) && isCollapsed || blockNodes.length > 1 || isFullNodeSelected) {
19105
+ this.insertBlockNode(clonedElem, range, docElement, blockNodes);
18661
19106
  }
18662
19107
  };
18663
- FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, endNode, nodes) {
19108
+ FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, nodes) {
18664
19109
  var domSelection = this.parent.nodeSelection;
19110
+ var saveSelection = domSelection.save(range, docElement);
19111
+ this.parent.domNode.setMarker(saveSelection);
18665
19112
  var listElement; // To clone to multiple list elements
18666
19113
  var cloneListParentNode;
19114
+ var sameListType = false;
18667
19115
  if (element.nodeName === 'UL' || element.nodeName === 'OL') {
18668
19116
  cloneListParentNode = element.cloneNode(true);
18669
19117
  listElement = cloneListParentNode.firstChild;
18670
19118
  }
18671
- var textNode = range.startContainer; // To set cursor position
19119
+ var cloneElementNode = isNullOrUndefined(cloneListParentNode) ? element : element.firstChild;
18672
19120
  for (var index = 0; index < nodes.length; index++) {
18673
- var lastTextNode = nodes[index];
18674
- if (nodes[index].nodeType === 3) {
18675
- nodes[index] = nodes[index].parentElement;
18676
- }
18677
- while (!this.isBlockElement(nodes[index])) {
18678
- nodes[index] = nodes[index].parentElement;
18679
- }
18680
- var cloneParentNode = void 0;
18681
- if (!isNullOrUndefined(cloneListParentNode)) {
18682
- cloneParentNode = listElement.cloneNode(true);
18683
- }
18684
- else {
18685
- cloneParentNode = element.cloneNode(true);
19121
+ if (this.INVALID_TAGS.indexOf(nodes[index].nodeName) > -1 ||
19122
+ nodes[index].querySelectorAll('a,img,audio,video,iframe').length > 0) {
19123
+ continue;
18686
19124
  }
19125
+ var cloneParentNode = cloneElementNode.cloneNode(false);
18687
19126
  // Appending all the child elements
18688
19127
  while (nodes[index].firstChild) {
18689
- if (cloneParentNode.nodeName === 'LI') {
19128
+ if (nodes[index].textContent.trim().length !== 0) {
18690
19129
  cloneParentNode.appendChild(nodes[index].firstChild);
18691
19130
  }
18692
19131
  else {
18693
- // Except list nodes other block nodes replaced here
18694
- if (nodes[index].nodeType === 3) {
18695
- cloneParentNode.appendChild(nodes[index].firstChild);
18696
- }
18697
- else {
18698
- cloneParentNode.innerHTML = nodes[index].innerHTML;
18699
- nodes[index].innerHTML = '';
18700
- }
18701
- nodes[index] = nodes[index].parentNode.replaceChild(cloneParentNode, nodes[index]);
19132
+ nodes[index].removeChild(nodes[index].firstChild);
18702
19133
  }
18703
19134
  }
18704
- if (cloneParentNode.nodeName === 'LI') {
18705
- // Appending the li nodes to the ol or ul node
18706
- cloneListParentNode.append(cloneParentNode);
18707
- if (index === 0) {
18708
- var nodeName = nodes[index].nodeName;
18709
- nodes[index] = nodes[index].parentNode.replaceChild(cloneListParentNode, nodes[index]);
18710
- var parent_1 = nodeName === 'LI' ? cloneListParentNode.parentElement
18711
- : cloneListParentNode;
18712
- // Splicing and then inserting the node to previous element sibling of the Listparent.parent
18713
- this.parent.nodeCutter.SplitNode(range, parent_1, true);
18714
- if (!isNullOrUndefined(parent_1.previousElementSibling)) {
18715
- parent_1.parentNode.insertBefore(cloneListParentNode, parent_1.nextElementSibling);
18716
- }
18717
- else {
18718
- parent_1.parentElement.insertBefore(cloneListParentNode, parent_1);
18719
- }
19135
+ if (nodes[index].nodeName === 'TD' || nodes[index].nodeName === 'TH') {
19136
+ if (isNullOrUndefined(cloneListParentNode)) {
19137
+ nodes[index].appendChild(cloneParentNode);
19138
+ continue;
19139
+ }
19140
+ else if (index === 0 && !isNullOrUndefined(cloneListParentNode)) {
19141
+ nodes[index].appendChild(cloneListParentNode);
19142
+ cloneListParentNode.appendChild(cloneParentNode);
19143
+ continue;
18720
19144
  }
18721
- detach(nodes[index]);
19145
+ else {
19146
+ nodes[index].appendChild(cloneParentNode);
19147
+ continue;
19148
+ }
19149
+ }
19150
+ if (!isNullOrUndefined(cloneListParentNode)) {
19151
+ sameListType = this.isSameListType(element, nodes[index]);
19152
+ }
19153
+ if (cloneParentNode.nodeName === 'LI' && !sameListType) {
19154
+ this.insertNewList(range, nodes, index, cloneListParentNode, cloneParentNode);
19155
+ }
19156
+ else if (sameListType) {
19157
+ this.insertSameList(nodes, index, cloneListParentNode, cloneParentNode);
19158
+ }
19159
+ else {
19160
+ nodes[index].parentNode.replaceChild(cloneParentNode, nodes[index]);
18722
19161
  }
18723
19162
  /**Removing the inserted block node in list and appending to previous element sibling */
18724
19163
  if (cloneParentNode.nodeName !== 'LI' && (cloneParentNode.parentElement.nodeName === 'OL' ||
18725
19164
  cloneParentNode.parentElement.nodeName === 'UL')) {
18726
- var parent_2 = cloneParentNode.parentElement;
19165
+ var parent_1 = cloneParentNode.parentElement;
18727
19166
  // Cutting single ul or ol to two ul or ol based on the range
18728
- this.parent.nodeCutter.SplitNode(range, parent_2, true);
18729
- if (!isNullOrUndefined(parent_2.previousElementSibling)) {
18730
- parent_2.previousElementSibling.after(cloneParentNode);
19167
+ this.parent.nodeCutter.SplitNode(range, parent_1, true);
19168
+ if (!isNullOrUndefined(parent_1.previousElementSibling)) {
19169
+ parent_1.previousElementSibling.after(cloneParentNode);
19170
+ // To remove the nested list items out of the block element
19171
+ if (cloneParentNode.childNodes.length > 1) {
19172
+ for (var j = 0; j < cloneParentNode.childNodes.length; j++) {
19173
+ var currentChild = cloneParentNode.childNodes[j];
19174
+ if (currentChild.nodeName === 'OL' || currentChild.nodeName === 'UL') {
19175
+ cloneParentNode.after(currentChild);
19176
+ }
19177
+ }
19178
+ }
18731
19179
  }
18732
19180
  else {
18733
- parent_2.parentElement.prepend(cloneParentNode);
19181
+ parent_1.parentElement.prepend(cloneParentNode);
18734
19182
  }
18735
19183
  }
18736
- nodes[index] = lastTextNode;
18737
19184
  }
18738
19185
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
18739
19186
  !isNullOrUndefined(listElement) ? detach(listElement) : false;
18740
19187
  this.cleanEmptyLists();
18741
- if (nodes.length > 1) {
18742
- var startSelectNode = nodes[0];
18743
- var endSelectNode = nodes[nodes.length - 1];
18744
- domSelection.setSelectionText(docElement, startSelectNode, endSelectNode, 0, endSelectNode.textContent.length);
19188
+ var save = this.parent.domNode.saveMarker(saveSelection, null);
19189
+ save.restore();
19190
+ };
19191
+ FormatPainterActions.prototype.insertNewList = function (range, nodes, index, cloneListParentNode, cloneParentNode) {
19192
+ // Appending the li nodes to the ol or ul node
19193
+ if (index === 0) {
19194
+ var nodeName = nodes[index].nodeName;
19195
+ nodes[index] = nodes[index].parentNode.replaceChild(cloneListParentNode, nodes[index]);
19196
+ var parent_2 = nodeName === 'LI' ? cloneListParentNode.parentElement
19197
+ : cloneListParentNode;
19198
+ // Splicing and then inserting the node to previous element sibling of the Listparent.parent
19199
+ this.parent.nodeCutter.SplitNode(range, parent_2, true);
19200
+ if (nodes[index].nodeName === 'LI' && !isNullOrUndefined(parent_2)) {
19201
+ cloneListParentNode.append(cloneParentNode);
19202
+ if (!isNullOrUndefined(parent_2.parentNode)) {
19203
+ parent_2.parentNode.insertBefore(cloneListParentNode, parent_2);
19204
+ }
19205
+ }
19206
+ else {
19207
+ if (!isNullOrUndefined(parent_2)) {
19208
+ if (!isNullOrUndefined(parent_2.previousElementSibling) && parent_2.previousElementSibling.nodeName === cloneListParentNode.nodeName) {
19209
+ var currentParent = parent_2.previousElementSibling;
19210
+ currentParent.append(cloneParentNode);
19211
+ while (currentParent.firstChild) {
19212
+ cloneListParentNode.append(currentParent.firstChild);
19213
+ }
19214
+ }
19215
+ else if (!isNullOrUndefined(parent_2.nextElementSibling) && parent_2.nextElementSibling.nodeName === cloneListParentNode.nodeName) {
19216
+ var currentParent = parent_2.nextElementSibling;
19217
+ currentParent.prepend(cloneParentNode);
19218
+ while (currentParent.firstChild) {
19219
+ cloneListParentNode.append(currentParent.firstChild);
19220
+ }
19221
+ }
19222
+ else {
19223
+ cloneListParentNode.append(cloneParentNode);
19224
+ }
19225
+ }
19226
+ else {
19227
+ cloneListParentNode.append(cloneParentNode);
19228
+ }
19229
+ }
19230
+ }
19231
+ else {
19232
+ cloneListParentNode.append(cloneParentNode);
19233
+ }
19234
+ this.detachEmptyBlockNodes(nodes[index]);
19235
+ };
19236
+ FormatPainterActions.prototype.insertSameList = function (nodes, index, cloneListParentNode, cloneParentNode) {
19237
+ if (index === 0) {
19238
+ if (!isNullOrUndefined(nodes[index].parentNode) && (nodes[index].parentNode.nodeName === 'UL' || nodes[index].parentNode.nodeName === 'OL')) {
19239
+ // append the nodes[index].parentNode.childNodes to the clonelistparentnode
19240
+ if (nodes.length === 1) {
19241
+ // When clicked with cursor in the single list item
19242
+ while (cloneParentNode.firstChild) {
19243
+ nodes[index].append(cloneParentNode.firstChild);
19244
+ }
19245
+ for (var i = 0; i < nodes[index].parentNode.childNodes.length; i++) {
19246
+ var currentChild = nodes[index].parentNode.childNodes[i];
19247
+ cloneListParentNode.append(currentChild.cloneNode(true));
19248
+ }
19249
+ }
19250
+ else {
19251
+ cloneListParentNode.append(cloneParentNode);
19252
+ }
19253
+ // replace the older ol and ul with new ol and ul of clonelistparentnode
19254
+ nodes[index].parentNode.parentNode.replaceChild(cloneListParentNode, nodes[index].parentNode);
19255
+ }
18745
19256
  }
18746
19257
  else {
18747
- domSelection.setCursorPoint(docElement, textNode, textNode.textContent.length);
19258
+ cloneListParentNode.append(cloneParentNode);
18748
19259
  }
19260
+ this.detachEmptyBlockNodes(nodes[index]);
19261
+ };
19262
+ FormatPainterActions.prototype.isSameListType = function (element, node) {
19263
+ var isSameListType = false;
19264
+ var nearestListNode = closest(node, 'ol, ul');
19265
+ if (!isNullOrUndefined(nearestListNode) && nearestListNode.querySelectorAll('li').length > 0) {
19266
+ if (nearestListNode.nodeName === element.nodeName) {
19267
+ isSameListType = true;
19268
+ }
19269
+ else {
19270
+ isSameListType = false;
19271
+ }
19272
+ }
19273
+ return isSameListType;
18749
19274
  };
18750
19275
  FormatPainterActions.prototype.cleanEmptyLists = function () {
18751
19276
  var listElem = this.parent.editableElement.querySelectorAll('ol, ul');
@@ -18760,7 +19285,8 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18760
19285
  if (isNullOrUndefined(this.settings) || isNullOrUndefined(this.settings.deniedFormats)) {
18761
19286
  return;
18762
19287
  }
18763
- var deniedFormats = this.settings.deniedFormats.split(';');
19288
+ var deniedFormats = this.settings.deniedFormats.indexOf(';') > -1 ? this.settings.deniedFormats.split(';') :
19289
+ [this.settings.deniedFormats];
18764
19290
  var length = deniedFormats.length;
18765
19291
  for (var i = 0; i < length; i++) {
18766
19292
  var formatString = deniedFormats[i];
@@ -18774,6 +19300,11 @@ var FormatPainterActions = /** @__PURE__ @class */ (function () {
18774
19300
  }
18775
19301
  this.deniedFormatsCollection = deniedFormatsCollection;
18776
19302
  };
19303
+ FormatPainterActions.prototype.detachEmptyBlockNodes = function (node) {
19304
+ if (!isNullOrUndefined(node) && node.textContent.trim() === '') {
19305
+ detach(node);
19306
+ }
19307
+ };
18777
19308
  FormatPainterActions.prototype.makeDeniedFormatsCollection = function (value) {
18778
19309
  var openParenIndex = value.indexOf('(');
18779
19310
  var closeParenIndex = value.indexOf(')');
@@ -18859,7 +19390,8 @@ var EditorManager = /** @__PURE__ @class */ (function () {
18859
19390
  this.tableObj = new TableCommand(this);
18860
19391
  this.undoRedoManager = new UndoRedoManager(this, options.options);
18861
19392
  this.msWordPaste = new MsWordPaste(this);
18862
- this.formatPaintetrObj = new FormatPainterActions(this, options.formatPainterSettings);
19393
+ this.formatPainterEditor = new FormatPainterActions(this, options.formatPainterSettings);
19394
+ this.emojiPickerObj = new EmojiPickerAction(this);
18863
19395
  this.wireEvents();
18864
19396
  }
18865
19397
  EditorManager.prototype.wireEvents = function () {
@@ -19007,6 +19539,9 @@ var EditorManager = /** @__PURE__ @class */ (function () {
19007
19539
  case 'formatpainter':
19008
19540
  this.observer.notify(FORMAT_PAINTER_ACTIONS, { item: exeValue, subCommand: value, event: event, callBack: callBack });
19009
19541
  break;
19542
+ case 'emojipicker':
19543
+ this.observer.notify(EMOJI_PICKER_ACTIONS, { item: exeValue, subCommand: value, value: text,
19544
+ event: event, callBack: callBack });
19010
19545
  }
19011
19546
  };
19012
19547
  return EditorManager;
@@ -19220,7 +19755,7 @@ var __extends$3 = (undefined && undefined.__extends) || (function () {
19220
19755
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19221
19756
  };
19222
19757
  })();
19223
- var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-audio, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-img-caption .e-rte-image.e-imgright, .e-img-caption .e-rte-image.e-imgleft { float: none; margin: 0;}\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden;\n padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n </style>\n </head>";
19758
+ var IFRAMEHEADER = "\n<!DOCTYPE html> \n <html>\n <head>\n <meta charset='utf-8' /> \n <style>\n @charset \"UTF-8\";\n body {\n font-family: \"Roboto\", sans-serif;\n font-size: 14px;\n }\n html, body{height: 100%;margin: 0;}\n body.e-cursor{cursor:default}\n span.e-selected-node\t{background-color: #939393;color: white;}\n span.e-selected-node.e-highlight {background-color: #1d9dd8;}\n body{color:#333;word-wrap:break-word;padding: 8px;box-sizing: border-box;}\n .e-rte-image, .e-rte-audio, .e-rte-video {border: 0;cursor: pointer;display:\n block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imginline, .e-rte-audio.e-audio-inline, .e-rte-video.e-video-inline {display: inline-block;float: none;max-width: calc(100% - (2 * 5px));padding: 1px;vertical-align: bottom;}\n .e-rte-image.e-imgcenter, .e-rte-video.e-video-center {cursor: pointer;display: block;float: none;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-imgright, .e-rte-video.e-video-right { float: right; margin: 0 auto;margin-left: 5px;text-align: right;}\n .e-rte-image.e-imgleft, .e-rte-video.e-video-left {float: left;margin: 0 auto;margin-right: 5px;text-align: left;}\n .e-img-caption { display: inline-block; float: none; margin: 5px auto; max-width: 100%;position: relative;}\n .e-img-caption.e-caption-inline {display: inline-block;float: none;\n margin: 5px auto;margin-left: 5px;margin-right: 5px;max-width: calc(100% - (2 * 5px));\n position: relativetext-align: center;vertical-align: bottom;}\n .e-img-inner {box-sizing: border-box;display: block;font-size: 16px;font-weight: initial;\n margin: auto;opacity: .9;text-align: center;width: 100%;}\n .e-img-wrap {display: inline-block;margin: auto;padding: 0;text-align: center;width: 100%;}\n .e-imgleft, .e-video-left {float: left;margin: 0 5px 0 0;text-align: left;}\n .e-imgright, .e-video-right {float: right;margin: 0 0 0 5px;text-align: right;}\n .e-imgcenter, .e-video-center {cursor: pointer;display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-control img:not(.e-resize) {border: 2px solid transparent; z-index: 1000}\n .e-imginline , .e-audio-inline, .e-video-inline {display: inline-block;float: none;margin-left: 5px;margin-right: 5px;\n max-width: calc(100% - (2 * 5px));vertical-align: bottom;}\n .e-imgbreak, .e-audio-break, .e-video-break {border: 0;cursor: pointer;\n display: block;float: none;height: auto;margin: 5px auto;max-width: 100%;position: relative;}\n .e-rte-image.e-img-focus:not(.e-resize), .e-audio-focus:not(.e-resize), .e-video-focus:not(.e-resize) {border: solid 2px #4a90e2;}\n img.e-img-focus::selection, audio.e-audio-focus::selection, .e-video-focus::selection { background: transparent;color: transparent;}\n span.e-rte-imageboxmark { width: 10px; height: 10px; position: absolute; display: block;\n background: #4a90e2; border: 1px solid #fff; z-index: 1000;}\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-mob-rte span.e-rte-imageboxmark { background: #fff; border: 1px solid #4a90e2;\n border-radius: 15px; height: 20px; width: 20px; }\n .e-mob-rte.e-mob-span span.e-rte-imageboxmark { background: #4a90e2; border: 1px solid #fff; }\n .e-rte-content .e-content img.e-resize, .e-rte-content .e-content video.e-resize { z-index: 1000; }\n .e-img-caption .e-img-inner { outline: 0; }\n .e-img-caption a:focus-visible { outline: none; }\n .e-img-caption .e-rte-image.e-imgright, .e-img-caption .e-rte-image.e-imgleft { float: none; margin: 0;}\n body{box-sizing: border-box;min-height: 100px;outline: 0 solid transparent;\n overflow-x: auto;padding: 16px;position: relative;text-align: inherit;z-index: 2;}\n p{margin: 0 0 10px;margin-bottom: 10px;}\n li{margin-bottom: 10px;}\n h1{font-size: 2.17em;font-weight: 400;line-height: 1;margin: 10px 0;}\n h2{font-size: 1.74em;font-weight: 400;margin: 10px 0;}\n h3{font-size: 1.31em;font-weight: 400;margin: 10px 0;}\n h4{font-size: 16px;font-weight: 400;line-height: 1.5;margin: 0;}\n h5{font-size: 00.8em;font-weight: 400;margin: 0;}\n h6{font-size: 00.65em;font-weight: 400;margin: 0;}\n blockquote{margin: 10px 0;margin-left: 0;padding-left: 5px;border-left: solid 2px #5c5c5c;}\n pre{background-color: inherit;border: 0;border-radius: 0;color: #333;\n font-size: inherit;line-height: inherit;margin: 0 0 10px;overflow: visible;padding: 0;\n white-space: pre-wrap;word-break: inherit;word-wrap: break-word;}\n strong, b{font-weight: 700;}\n a{text-decoration: none;user-select: auto;}\n a:hover{text-decoration: underline;};\n p:last-child, pre:last-child, blockquote:last-child{margin-bottom: 0;}\n h3+h4, h4+h5, h5+h6{margin-top: 00.6em;}\n ul:last-child{margin-bottom: 0;}\n table { border-collapse: collapse; empty-cells: show;}\n table td,table th {border: 1px solid #BDBDBD; height: 20px; padding: 2px 5px; vertical-align: middle;}\n table.e-alternate-border tbody tr:nth-child(2n) {background-color: #F5F5F5;}\n table th {background-color: #E0E0E0;}\n table.e-dashed-border td,table.e-dashed-border th { border: 1px dashed #BDBDBD} \n table .e-cell-select {border: 1px double #4a90e2;}\n span.e-table-box { cursor: nwse-resize; display: block; height: 10px; position: absolute; width: 10px; }\n span.e-table-box.e-rmob {height: 14px;width: 14px;}\n .e-row-resize, .e-column-resize { background-color: transparent; background-repeat: repeat;\n bottom: 0;cursor: col-resize;height: 1px;overflow: visible;position: absolute;width: 1px; }\n .e-row-resize { cursor: row-resize; height: 1px;}\n .e-table-rhelper { cursor: col-resize; opacity: .87;position: absolute;}\n .e-table-rhelper.e-column-helper { width: 1px; }\n .e-table-rhelper.e-row-helper {height: 1px;}\n .e-reicon::before { border-bottom: 6px solid transparent; border-right: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block; height: 0;\n position: absolute; right: 4px; top: 4px; width: 20px; }\n .e-reicon::after { border-bottom: 6px solid transparent; border-left: 6px solid;\n border-top: 6px solid transparent; content: ''; display: block;\n height: 0; left: 4px; position: absolute; top: 4px; width: 20px; z-index: 3; }\n .e-row-helper.e-reicon::after { top: 10px; transform: rotate(90deg); }\n .e-row-helper.e-reicon::before { left: 4px; top: -20px; transform: rotate(90deg); }\n span.e-table-box { background-color: #ffffff; border: 1px solid #BDBDBD; }\n span.e-table-box.e-rbox-select { background-color: #BDBDBD; border: 1px solid #BDBDBD; }\n .e-table-rhelper { background-color: #4a90e2;}\n .e-rtl { direction: rtl; }\n .e-rte-placeholder::before { content: attr(placeholder); opacity: 0.54; overflow: hidden; padding-top: 16px; position: absolute; text-align: start; top: 0; z-index: 1; }\n </style>\n </head>";
19224
19759
  /**
19225
19760
  * Content module is used to render Rich Text Editor content
19226
19761
  *
@@ -19746,9 +20281,15 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
19746
20281
  };
19747
20282
  HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {
19748
20283
  var isLiElement = false;
20284
+ var isPreviousNotContentEditable = true;
20285
+ if (!isNullOrUndefined(currentRange.startContainer.previousSibling) &&
20286
+ currentRange.startContainer.previousSibling.nodeName === 'SPAN') {
20287
+ isPreviousNotContentEditable = currentRange.startContainer.previousSibling.contentEditable === 'false' ? false : true;
20288
+ }
19749
20289
  if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&
19750
20290
  currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&
19751
- currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {
20291
+ currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH' &&
20292
+ isPreviousNotContentEditable) {
19752
20293
  var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;
19753
20294
  if (!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&
19754
20295
  !isNullOrUndefined(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') {
@@ -19976,7 +20517,7 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
19976
20517
  var resultSplitContent = '';
19977
20518
  for (var j = 0; j < splitTextContent.length; j++) {
19978
20519
  if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {
19979
- resultSplitContent += '<a className="e-rte-anchor" href="' + splitTextContent[j] +
20520
+ resultSplitContent += '<a class="e-rte-anchor" href="' + splitTextContent[j] +
19980
20521
  '" title="' + splitTextContent[j] + '"target="_blank">' + splitTextContent[j] + ' </a>';
19981
20522
  }
19982
20523
  else {
@@ -20133,6 +20674,9 @@ var HtmlEditor = /** @__PURE__ @class */ (function () {
20133
20674
  member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle
20134
20675
  });
20135
20676
  break;
20677
+ case 'EmojiPicker':
20678
+ this.parent.notify(emojiPicker, { member: 'emojiPicker', args: args });
20679
+ break;
20136
20680
  default:
20137
20681
  this.parent.formatter.process(this.parent, args, args.originalEvent, null);
20138
20682
  break;
@@ -20425,6 +20969,7 @@ var PasteCleanup = /** @__PURE__ @class */ (function () {
20425
20969
  if (Browser.userAgent.indexOf('Firefox') !== -1) {
20426
20970
  var currentFocusNode = _this.nodeSelectionObj.getRange(_this.contentRenderer.getDocument()).startContainer;
20427
20971
  if (currentFocusNode.nodeName !== '#text') {
20972
+ // eslint-disable-next-line
20428
20973
  currentFocusNode = currentFocusNode.childNodes[_this.nodeSelectionObj.getRange(_this.contentRenderer.getDocument()).startOffset];
20429
20974
  }
20430
20975
  if (currentFocusNode.previousSibling.nodeName === 'IMG') {
@@ -21337,7 +21882,7 @@ var Resize = /** @__PURE__ @class */ (function () {
21337
21882
  else {
21338
21883
  var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;
21339
21884
  this.parent.element.style.height = eventType.clientY - boundRect.top + 'px';
21340
- this.parent.element.style.width = (!this.parent.enableRtl) ? e.clientX - boundRect.left + 'px' : boundRect.right - e.clientX + 'px';
21885
+ this.parent.element.style.width = (!this.parent.enableRtl) ? eventType.clientX - boundRect.left + 'px' : boundRect.right - eventType.clientX + 'px';
21341
21886
  }
21342
21887
  if (!this.parent.toolbarSettings.enable) {
21343
21888
  this.parent.setContentHeight('', false);
@@ -21514,6 +22059,7 @@ var FileManager$1 = /** @__PURE__ @class */ (function () {
21514
22059
  detailsViewSettings: this.parent.fileManagerSettings.detailsViewSettings,
21515
22060
  contextMenuSettings: this.parent.fileManagerSettings.contextMenuSettings,
21516
22061
  navigationPaneSettings: this.parent.fileManagerSettings.navigationPaneSettings,
22062
+ beforeSend: this.parent.fileManagerSettings.beforeSend,
21517
22063
  fileSelect: function (e) {
21518
22064
  var selectedFile = e.fileDetails;
21519
22065
  if (selectedFile.isFile && proxy.parent.insertImageSettings.allowedTypes.indexOf(selectedFile.type) > -1) {
@@ -21674,6 +22220,9 @@ var FullScreen = /** @__PURE__ @class */ (function () {
21674
22220
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
21675
22221
  this.parent.quickToolbarModule.hideQuickToolbars();
21676
22222
  }
22223
+ if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
22224
+ this.parent.notify(maximizeMinimizeClick, { args: event });
22225
+ }
21677
22226
  this.scrollableParent = getScrollableParent(this.parent.element);
21678
22227
  if (!this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
21679
22228
  var evenArgs = {
@@ -21726,6 +22275,9 @@ var FullScreen = /** @__PURE__ @class */ (function () {
21726
22275
  && !isNullOrUndefined(this.parent.quickToolbarModule)) {
21727
22276
  this.parent.quickToolbarModule.hideQuickToolbars();
21728
22277
  }
22278
+ if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {
22279
+ this.parent.notify(maximizeMinimizeClick, { args: event });
22280
+ }
21729
22281
  if (this.parent.element.classList.contains(CLS_FULL_SCREEN)) {
21730
22282
  var evenArgs = {
21731
22283
  cancel: false,
@@ -21903,14 +22455,10 @@ var FormatPainter = /** @__PURE__ @class */ (function () {
21903
22455
  };
21904
22456
  FormatPainter.prototype.onKeyDown = function (event) {
21905
22457
  var originalEvent = event.args;
21906
- if ((originalEvent.ctrlKey && originalEvent.shiftKey && (originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste'))
22458
+ if ((originalEvent.altKey && originalEvent.shiftKey && (originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste'))
21907
22459
  || (originalEvent.action === 'escape' && (this.previousAction === 'format-copy' || this.previousAction === 'format-paste'))) {
21908
- if (!isNullOrUndefined(originalEvent.key) && originalEvent.key.toLowerCase() === 'c') {
21909
- originalEvent.preventDefault();
21910
- }
21911
- if (!isNullOrUndefined(originalEvent.key) && originalEvent.key.toLowerCase() === 'v' &&
21912
- this.previousAction === 'format-copy' || this.previousAction === 'format-paste' || this.isSticky) {
21913
- originalEvent.preventDefault();
22460
+ if ((originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste')) {
22461
+ originalEvent.stopPropagation();
21914
22462
  }
21915
22463
  this.actionHandler(event, 'keyBoard');
21916
22464
  }
@@ -21994,8 +22542,7 @@ var FormatPainter = /** @__PURE__ @class */ (function () {
21994
22542
  }
21995
22543
  };
21996
22544
  FormatPainter.prototype.destroy = function () {
21997
- /**Removeeventlistener */
21998
- if (this.parent.isDestroyed) {
22545
+ if (isNullOrUndefined(this.parent) || this.parent.isDestroyed) {
21999
22546
  return;
22000
22547
  }
22001
22548
  this.parent.off(formatPainterClick, this.toolbarClick);
@@ -22003,6 +22550,13 @@ var FormatPainter = /** @__PURE__ @class */ (function () {
22003
22550
  this.parent.off(formatPainterDoubleClick, this.toolbarDoubleClick);
22004
22551
  this.parent.off(keyDown, this.onKeyDown);
22005
22552
  this.parent.off(destroy, this.destroy);
22553
+ if (!isNullOrUndefined(this.parent.formatter.editorManager.formatPainterEditor)) {
22554
+ this.parent.formatter.editorManager.formatPainterEditor.destroy();
22555
+ }
22556
+ this.parent = undefined;
22557
+ this.isSticky = undefined;
22558
+ this.isActive = undefined;
22559
+ this.previousAction = undefined;
22006
22560
  };
22007
22561
  /**
22008
22562
  * For internal use only - Get the module name.
@@ -22016,6 +22570,778 @@ var FormatPainter = /** @__PURE__ @class */ (function () {
22016
22570
  return FormatPainter;
22017
22571
  }());
22018
22572
 
22573
+ var EmojiPicker = /** @__PURE__ @class */ (function () {
22574
+ function EmojiPicker(parent, serviceLocator) {
22575
+ this.parent = parent;
22576
+ this.locator = serviceLocator;
22577
+ this.i10n = serviceLocator.getService('rteLocale');
22578
+ this.renderFactory = this.locator.getService('rendererFactory');
22579
+ this.baseToolbar = new BaseToolbar(this.parent, this.locator);
22580
+ this.addEventListener();
22581
+ }
22582
+ /**
22583
+ * Destroys the Count.
22584
+ *
22585
+ * @function destroy
22586
+ * @returns {void}
22587
+ * @hidden
22588
+ * @deprecated
22589
+ */
22590
+ EmojiPicker.prototype.destroy = function () {
22591
+ this.removeEventListener();
22592
+ };
22593
+ EmojiPicker.prototype.addEventListener = function () {
22594
+ this.parent.on(emojiPicker, this.toolbarClick, this);
22595
+ this.parent.on(docClick, this.docClick, this);
22596
+ this.parent.on(keyDown, this.onkeyPress, this);
22597
+ this.parent.on(keyUp, this.onkeyUp, this);
22598
+ this.parent.on(contentscroll, this.contentscroll, this);
22599
+ this.parent.on(scroll, this.contentscroll, this);
22600
+ };
22601
+ // eslint-disable-next-line
22602
+ EmojiPicker.prototype.toolbarClick = function (args) {
22603
+ var _this = this;
22604
+ var _a, _b;
22605
+ var spanElement = this.parent.element.querySelector('.e-emoji');
22606
+ this.divElement = spanElement.closest('div');
22607
+ var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());
22608
+ this.save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());
22609
+ this.clickEvent = args.args;
22610
+ var emojiPicker$$1 = this.parent.emojiPickerSettings.iconsSet;
22611
+ if (this.popupObj) {
22612
+ removeClass([this.divElement], 'e-active');
22613
+ if (this.popupObj.element.querySelector('.e-rte-emoji-search') || !this.parent.emojiPickerSettings.showSearchBox) {
22614
+ this.popupObj.hide();
22615
+ return;
22616
+ }
22617
+ this.popupObj.hide();
22618
+ }
22619
+ this.popDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-popup', id: this.parent.getID() + '_emojiPicker' });
22620
+ this.parent.getToolbar().appendChild(this.popDiv);
22621
+ EventHandler.add(this.popDiv, 'keydown', this.onKeyDown, this);
22622
+ EventHandler.add(this.popDiv, 'keyup', this.searchFilter, this);
22623
+ var extendEle = this.parent.element.querySelector('.e-toolbar-extended');
22624
+ var zIndex;
22625
+ if (!isNullOrUndefined(extendEle)) {
22626
+ var computedStyle = window.getComputedStyle(extendEle);
22627
+ zIndex = computedStyle.getPropertyValue('z-index');
22628
+ }
22629
+ else {
22630
+ zIndex = '10001';
22631
+ }
22632
+ var target;
22633
+ var xValue;
22634
+ var yValue;
22635
+ if (!isNullOrUndefined(args.args)) {
22636
+ target = args.args.originalEvent.target;
22637
+ target = target.classList.contains('e-toolbar-item') ? target.firstChild : target.parentElement;
22638
+ xValue = 'left';
22639
+ yValue = 'bottom';
22640
+ }
22641
+ else if (isNullOrUndefined(args.x) && isNullOrUndefined(args.y)) {
22642
+ target = this.parent.inputElement;
22643
+ if (window.getSelection().rangeCount > 0) {
22644
+ var coordinates = this.getCoordinates();
22645
+ xValue = coordinates.left;
22646
+ yValue = coordinates.top;
22647
+ }
22648
+ }
22649
+ else {
22650
+ target = this.parent.inputElement;
22651
+ xValue = args.x;
22652
+ yValue = args.y;
22653
+ }
22654
+ this.popupObj = new Popup(this.popDiv, {
22655
+ targetType: 'relative',
22656
+ relateTo: target,
22657
+ collision: { X: 'fit', Y: 'none' },
22658
+ offsetY: 8,
22659
+ viewPortElement: this.parent.element,
22660
+ position: { X: xValue, Y: yValue },
22661
+ enableRtl: this.parent.enableRtl,
22662
+ zIndex: parseInt(zIndex, 10) + 1,
22663
+ actionOnScroll: 'hide',
22664
+ // eslint-disable-next-line
22665
+ close: function (event) {
22666
+ _this.parent.isBlur = false;
22667
+ _this.popupObj.destroy();
22668
+ detach(_this.popupObj.element);
22669
+ _this.popupObj = null;
22670
+ }
22671
+ });
22672
+ addClass([this.popupObj.element], 'e-popup-open');
22673
+ this.popupObj.refreshPosition(target);
22674
+ // header search element
22675
+ if ((!isNullOrUndefined(args.args) || (isNullOrUndefined(args.x) && isNullOrUndefined(args.y))) && this.parent.emojiPickerSettings.showSearchBox) {
22676
+ var inputEle = createElement('input', { id: 'e-rte-emoji-search', className: 'e-rte-emoji-search' });
22677
+ this.popDiv.append(inputEle);
22678
+ var inputobj = new TextBox({
22679
+ placeholder: this.i10n.getConstant('emojiPickerTypeToFind'),
22680
+ showClearButton: true
22681
+ });
22682
+ inputobj.appendTo(inputEle);
22683
+ inputEle.focus();
22684
+ }
22685
+ var closeIcon = this.popupObj.element.querySelector('.e-clear-icon');
22686
+ if (!isNullOrUndefined(closeIcon)) {
22687
+ EventHandler.add(closeIcon, 'mousedown', this.searchFilter, this);
22688
+ }
22689
+ // Header emoji toolbar div
22690
+ var emojiToolBar = this.parent.createElement('div', { className: 'e-rte-emojipicker-toolbar' });
22691
+ this.popDiv.appendChild(emojiToolBar);
22692
+ var pushToolBar = [];
22693
+ for (var i = 0; i < this.parent.emojiPickerSettings.iconsSet.length; i++) {
22694
+ if (!isNullOrUndefined(this.parent.emojiPickerSettings.iconsSet[i].iconCss)) {
22695
+ pushToolBar.push({ prefixIcon: this.parent.emojiPickerSettings.iconsSet[i].iconCss, htmlAttributes: (_a = {}, _a['title'] = this.parent.emojiPickerSettings.iconsSet[i].name, _a) });
22696
+ }
22697
+ else {
22698
+ pushToolBar.push({ text: '&#x' + this.parent.emojiPickerSettings.iconsSet[i].code + ';', htmlAttributes: (_b = {}, _b['title'] = this.parent.emojiPickerSettings.iconsSet[i].name, _b) });
22699
+ }
22700
+ }
22701
+ var toolbarObj = new Toolbar({
22702
+ items: pushToolBar,
22703
+ clicked: this.emojiToolbarClick.bind(this)
22704
+ });
22705
+ toolbarObj.appendTo(emojiToolBar);
22706
+ // emoji btn div
22707
+ var emojiBtnDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-btn' });
22708
+ this.popDiv.appendChild(emojiBtnDiv);
22709
+ var height;
22710
+ var popupBorder = window.getComputedStyle(this.popDiv);
22711
+ if ((isNullOrUndefined(args.args) && !(isNullOrUndefined(args.x) && isNullOrUndefined(args.y))) || !this.parent.emojiPickerSettings.showSearchBox) {
22712
+ height = (this.popDiv.getBoundingClientRect().height - emojiToolBar.getBoundingClientRect().height - (2 * parseFloat(popupBorder.borderWidth))) + 'px';
22713
+ emojiBtnDiv.style.setProperty('height', height, 'important');
22714
+ }
22715
+ else {
22716
+ var inputELe = this.parent.element.querySelector('.e-rte-emoji-search').parentElement;
22717
+ var getComputedStyle_1 = window.getComputedStyle(inputELe);
22718
+ height = (this.popDiv.getBoundingClientRect().height - emojiToolBar.getBoundingClientRect().height
22719
+ - inputELe.getBoundingClientRect().height
22720
+ - parseFloat(getComputedStyle_1.marginTop) - parseFloat(getComputedStyle_1.marginBottom)
22721
+ - (2 * parseFloat(popupBorder.borderWidth))) + 'px';
22722
+ emojiBtnDiv.style.setProperty('height', height, 'important');
22723
+ }
22724
+ for (var i = 0; i < emojiPicker$$1.length; i++) {
22725
+ var emojiGroupDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-group' });
22726
+ emojiBtnDiv.appendChild(emojiGroupDiv);
22727
+ var emojiName = this.parent.createElement('div', { className: 'e-rte-emojipicker-name' });
22728
+ emojiName.innerText = this.parent.emojiPickerSettings.iconsSet[i].name;
22729
+ emojiName.setAttribute('aria-label', this.parent.emojiPickerSettings.iconsSet[i].name);
22730
+ emojiGroupDiv.appendChild(emojiName);
22731
+ var emojiBtn = this.parent.createElement('div', { className: 'e-rte-emojipickerbtn-group' });
22732
+ emojiGroupDiv.appendChild(emojiBtn);
22733
+ for (var j = 0; j < emojiPicker$$1[i].icons.length; j++) {
22734
+ var button = this.parent.createElement('button', { className: 'e-btn ' + ' ' + 'e-control' });
22735
+ button.innerHTML = this.buttoncode(this.parent.emojiPickerSettings.iconsSet[i].icons[j].code);
22736
+ button.setAttribute('aria-label', (this.parent.emojiPickerSettings.iconsSet[i].icons[j].desc));
22737
+ button.setAttribute('title', (this.parent.emojiPickerSettings.iconsSet[i].icons[j].desc));
22738
+ emojiBtn.appendChild(button);
22739
+ if (button.innerHTML.length > 2) {
22740
+ button.style.fontSize = '17px';
22741
+ }
22742
+ }
22743
+ }
22744
+ EventHandler.add(emojiBtnDiv, 'scroll', this.scrollEvent, this);
22745
+ EventHandler.add(emojiBtnDiv, 'click', this.emojiBtnClick, this);
22746
+ var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');
22747
+ if (isNullOrUndefined(this.parent.element.querySelector('.e-rte-emoji-search')) && !isNullOrUndefined(args.args)) {
22748
+ emojiButtons[0].focus();
22749
+ addClass([emojiButtons[0]], 'e-focus');
22750
+ }
22751
+ var popup = this.parent.element.querySelector('.e-rte-emojipicker-btn');
22752
+ var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');
22753
+ var scrollTop;
22754
+ if (!isNullOrUndefined(popup)) {
22755
+ scrollTop = Math.round(popup.scrollTop);
22756
+ }
22757
+ for (var i = 0; i < toolbarName.length; i++) {
22758
+ /* eslint-disable */
22759
+ if (toolbarName[i].classList.contains('e-selected')) {
22760
+ removeClass([toolbarName[i]], 'e-selected');
22761
+ }
22762
+ /* eslint-enable */
22763
+ }
22764
+ if (scrollTop < toolbarName[0].offsetHeight) {
22765
+ addClass([toolbarName[0]], 'e-selected');
22766
+ }
22767
+ if (this.popupObj) {
22768
+ addClass([this.divElement], 'e-active');
22769
+ }
22770
+ };
22771
+ EmojiPicker.prototype.buttoncode = function (value) {
22772
+ var valueLength = value.split('-');
22773
+ // eslint-disable-next-line
22774
+ var joinedEmoji = valueLength.map(function (cp) { return String.fromCodePoint(parseInt(cp, 16)); }).join('\u200D');
22775
+ return joinedEmoji;
22776
+ };
22777
+ EmojiPicker.prototype.docClick = function (e) {
22778
+ var target = e.args.target;
22779
+ if (target && target.classList && ((this.popupObj && !closest(target, '[id=' + '\'' + this.popupObj.element.id + '\'' + ']')))
22780
+ && (!target.classList.contains('e-emoji') && !target.classList.contains('e-toolbar-item'))) {
22781
+ if (this.popupObj) {
22782
+ removeClass([this.divElement], 'e-active');
22783
+ this.popupObj.hide();
22784
+ }
22785
+ }
22786
+ };
22787
+ EmojiPicker.prototype.scrollEvent = function () {
22788
+ var popup = this.parent.element.querySelector('.e-rte-emojipicker-btn');
22789
+ var emojiSet = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');
22790
+ var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');
22791
+ var scrollTop;
22792
+ if (!isNullOrUndefined(popup)) {
22793
+ scrollTop = Math.round(popup.scrollTop);
22794
+ }
22795
+ var firstSetWidth = 0;
22796
+ for (var j = 0; j < toolbarName.length; j++) {
22797
+ if (scrollTop < toolbarName[0].offsetHeight) {
22798
+ if (!isNullOrUndefined(toolbarName[j + 1])) {
22799
+ removeClass([toolbarName[j + 1]], 'e-selected');
22800
+ }
22801
+ addClass([toolbarName[0]], 'e-selected');
22802
+ }
22803
+ }
22804
+ for (var i = 0; i < emojiSet.length; i++) {
22805
+ // eslint-disable-next-line
22806
+ firstSetWidth += Math.round(emojiSet[i].offsetHeight);
22807
+ if (scrollTop >= firstSetWidth) {
22808
+ for (var k = 0; k < toolbarName.length; k++) {
22809
+ /* eslint-disable */
22810
+ if (toolbarName[k].classList.contains('e-selected')) {
22811
+ removeClass([toolbarName[k]], 'e-selected');
22812
+ }
22813
+ /* eslint-enable */
22814
+ }
22815
+ if (!isNullOrUndefined(toolbarName[i + 1])) {
22816
+ addClass([toolbarName[i + 1]], 'e-selected');
22817
+ }
22818
+ }
22819
+ }
22820
+ };
22821
+ EmojiPicker.prototype.contentscroll = function () {
22822
+ if (isNullOrUndefined(this.clickEvent) && this.popupObj) {
22823
+ removeClass([this.divElement], 'e-active');
22824
+ this.popupObj.hide();
22825
+ return;
22826
+ }
22827
+ };
22828
+ EmojiPicker.prototype.emojiToolbarClick = function (e) {
22829
+ var args = {
22830
+ // eslint-disable-next-line
22831
+ text: e.item.htmlAttributes.title,
22832
+ };
22833
+ var currentEleName = args.text;
22834
+ var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');
22835
+ var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');
22836
+ var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');
22837
+ for (var i = 0; i < toolbarName.length; i++) {
22838
+ /* eslint-disable */
22839
+ if (toolbarName[i].classList.contains('e-selected')) {
22840
+ removeClass([toolbarName[i]], 'e-selected');
22841
+ }
22842
+ /* eslint-enable */
22843
+ }
22844
+ for (var i = 0; i < emojiButtons.length; i++) {
22845
+ if (emojiButtons[i].classList.contains('e-focus')) {
22846
+ removeClass([emojiButtons[i]], 'e-focus');
22847
+ }
22848
+ }
22849
+ // Loop through the selected elements and perform the same operation on each element
22850
+ var emojiGroupsheight = this.parent.element.querySelector('.e-rte-emojipicker-btn');
22851
+ var emojiHeight = 0;
22852
+ // eslint-disable-next-line
22853
+ emojiGroups.forEach(function (group) {
22854
+ var childNodes = group.childNodes[0];
22855
+ var focusBtn = group.childNodes[1].childNodes[0];
22856
+ var ariaLabel = childNodes.getAttribute('aria-label');
22857
+ if (currentEleName === ariaLabel) {
22858
+ if (childNodes) {
22859
+ emojiGroupsheight.scrollTop = emojiHeight + 10;
22860
+ addClass([focusBtn], 'e-focus');
22861
+ focusBtn.focus();
22862
+ }
22863
+ }
22864
+ else {
22865
+ emojiHeight += group.scrollHeight;
22866
+ removeClass([focusBtn], 'e-focus');
22867
+ }
22868
+ });
22869
+ };
22870
+ EmojiPicker.prototype.onKeyDown = function (e) {
22871
+ // Select all emoji buttons
22872
+ var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');
22873
+ var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipickerbtn-group');
22874
+ var searchKeyHandler = this.parent.element.querySelector('.e-rte-emojisearch-btn button');
22875
+ if (e.keyCode === 27) {
22876
+ if (this.popupObj) {
22877
+ removeClass([this.divElement], 'e-active');
22878
+ this.popupObj.hide();
22879
+ }
22880
+ }
22881
+ if (e.keyCode === 13) {
22882
+ var activeEle = document.activeElement;
22883
+ if (activeEle.classList.contains('e-btn')) {
22884
+ this.emojiBtnClick(e);
22885
+ e.preventDefault();
22886
+ }
22887
+ }
22888
+ var srcElement = e.srcElement;
22889
+ if (!isNullOrUndefined(srcElement)) {
22890
+ if (srcElement.classList.contains('e-rte-emoji-search') && e.keyCode === 40) {
22891
+ for (var i = 0; i < emojiButtons.length; i++) {
22892
+ if (emojiButtons[i].classList.contains('e-focus')) {
22893
+ removeClass([emojiButtons[i]], 'e-focus');
22894
+ }
22895
+ }
22896
+ }
22897
+ }
22898
+ if (!isNullOrUndefined(searchKeyHandler)) {
22899
+ this.filterKeyHandler(e);
22900
+ }
22901
+ else {
22902
+ for (var i = 0; i < emojiButtons.length; i++) {
22903
+ var focusIndex = i;
22904
+ if (emojiButtons[i].classList.contains('e-focus')) {
22905
+ if (e.keyCode === 40) {
22906
+ // Move focus to next row if there is one
22907
+ if (emojiButtons.length - 4 > i) {
22908
+ var count$$1 = 0;
22909
+ for (var j = 0; j < emojiGroups.length; j++) {
22910
+ for (var k = 0; k < emojiGroups[j].childNodes.length; k++) {
22911
+ // eslint-disable-next-line
22912
+ var childNodes = emojiGroups[j].childNodes[k];
22913
+ if (childNodes.classList.contains('e-focus') && count$$1 !== 1) {
22914
+ var currentIndex = k;
22915
+ var lastChild = emojiGroups[j].lastChild;
22916
+ var lastRowIndex = Math.floor((k) % 6);
22917
+ var lastEleLength = emojiGroups[j].childNodes.length - 1;
22918
+ var lastEleIndex = Math.floor((lastEleLength) % 6);
22919
+ if (currentIndex !== -1) {
22920
+ var nextRowIndex = currentIndex + 6;
22921
+ if (!isNullOrUndefined(emojiGroups[j].childNodes[nextRowIndex])) {
22922
+ // next row has six buttons
22923
+ // handle focus change here
22924
+ var firstFocusEle = emojiButtons[i];
22925
+ removeClass([firstFocusEle], 'e-focus');
22926
+ var focusEle = emojiButtons[focusIndex += 6];
22927
+ addClass([focusEle], 'e-focus');
22928
+ focusEle.focus();
22929
+ break;
22930
+ }
22931
+ else if (isNullOrUndefined(emojiGroups[j].childNodes[nextRowIndex]) && !lastChild.classList.contains('e-focus') && lastEleIndex < lastRowIndex) {
22932
+ var firstFocusEle = emojiButtons[i];
22933
+ removeClass([firstFocusEle], 'e-focus');
22934
+ var focusEle = emojiGroups[j].lastChild;
22935
+ addClass([focusEle], 'e-focus');
22936
+ focusEle.focus();
22937
+ count$$1 = 1;
22938
+ break;
22939
+ }
22940
+ else {
22941
+ var firstFocusEle = emojiButtons[i];
22942
+ removeClass([firstFocusEle], 'e-focus');
22943
+ var focusEle = emojiGroups[j + 1]
22944
+ .childNodes[lastRowIndex];
22945
+ addClass([focusEle], 'e-focus');
22946
+ focusEle.focus();
22947
+ count$$1 = 1;
22948
+ break;
22949
+ }
22950
+ }
22951
+ }
22952
+ }
22953
+ }
22954
+ break;
22955
+ }
22956
+ }
22957
+ else if (e.keyCode === 38) {
22958
+ // Move focus to previous row if there is one
22959
+ if (i >= 6) {
22960
+ var count$$1 = 0;
22961
+ for (var j = 0; j < emojiGroups.length; j++) {
22962
+ for (var k = 0; k < emojiGroups[j].childNodes.length; k++) {
22963
+ var childNodes = emojiGroups[j].childNodes[k];
22964
+ if (childNodes.classList.contains('e-focus') && count$$1 !== 1) {
22965
+ // eslint-disable-next-line
22966
+ var currentIndex = k;
22967
+ var previousRowLength = isNullOrUndefined(emojiGroups[j - 1]) ? null :
22968
+ emojiGroups[j - 1].childNodes.length % 6 || 6;
22969
+ if (currentIndex !== -1) {
22970
+ var previousRowIndex = currentIndex - 6;
22971
+ if (!isNullOrUndefined(emojiGroups[j].childNodes[previousRowIndex])) {
22972
+ // previous row has six buttons
22973
+ // handle focus change here
22974
+ var firstFocusEle = emojiButtons[i];
22975
+ removeClass([firstFocusEle], 'e-focus');
22976
+ var focusEle = emojiButtons[focusIndex -= 6];
22977
+ addClass([focusEle], 'e-focus');
22978
+ focusEle.focus();
22979
+ break;
22980
+ }
22981
+ else if (isNullOrUndefined(emojiGroups[j - 1].childNodes[emojiGroups[j - 1]
22982
+ .childNodes.length - (previousRowLength - k)])) {
22983
+ var firstFocusEle = emojiButtons[i];
22984
+ removeClass([firstFocusEle], 'e-focus');
22985
+ var focusEle = emojiGroups[j - 1].lastChild;
22986
+ addClass([focusEle], 'e-focus');
22987
+ focusEle.focus();
22988
+ count$$1 = 1;
22989
+ break;
22990
+ }
22991
+ else {
22992
+ // previous row has less than six buttons
22993
+ // handle focus change here
22994
+ var firstFocusEle = emojiButtons[i];
22995
+ removeClass([firstFocusEle], 'e-focus');
22996
+ var focusEle = emojiGroups[j - 1].childNodes[emojiGroups[j - 1].
22997
+ childNodes.length - (previousRowLength - k)];
22998
+ addClass([focusEle], 'e-focus');
22999
+ focusEle.focus();
23000
+ count$$1 = 1;
23001
+ break;
23002
+ }
23003
+ }
23004
+ }
23005
+ }
23006
+ }
23007
+ }
23008
+ else {
23009
+ var firstFocusEle = emojiButtons[i];
23010
+ removeClass([firstFocusEle], 'e-focus');
23011
+ var focusEle = emojiButtons[focusIndex -= 1];
23012
+ var inputELe = this.popupObj.element.querySelector('.e-rte-emoji-search');
23013
+ if (isNullOrUndefined(focusEle) && !isNullOrUndefined(inputELe)) {
23014
+ inputELe.focus();
23015
+ break;
23016
+ }
23017
+ addClass([focusEle], 'e-focus');
23018
+ focusEle.focus();
23019
+ }
23020
+ break;
23021
+ }
23022
+ else if (e.keyCode === 39) {
23023
+ // Move focus to next button in current row
23024
+ if (emojiButtons.length !== i + 1) {
23025
+ var firstFocusEle = emojiButtons[i];
23026
+ removeClass([firstFocusEle], 'e-focus');
23027
+ var focusEle = emojiButtons[focusIndex += 1];
23028
+ addClass([focusEle], 'e-focus');
23029
+ emojiButtons[focusIndex].focus();
23030
+ }
23031
+ break;
23032
+ }
23033
+ else if (e.keyCode === 37) {
23034
+ // Move focus to previous button in current row
23035
+ if (i > 0) {
23036
+ var firstFocusEle = emojiButtons[i];
23037
+ removeClass([firstFocusEle], 'e-focus');
23038
+ var focusEle = emojiButtons[focusIndex -= 1];
23039
+ addClass([focusEle], 'e-focus');
23040
+ emojiButtons[focusIndex].focus();
23041
+ }
23042
+ break;
23043
+ }
23044
+ }
23045
+ }
23046
+ }
23047
+ if (e.keyCode === 40) {
23048
+ var firstFocusEle = this.parent.element.querySelector('.e-focus');
23049
+ if (isNullOrUndefined(firstFocusEle)) {
23050
+ var focusEle = emojiButtons[0];
23051
+ addClass([focusEle], 'e-focus');
23052
+ emojiButtons[0].focus();
23053
+ }
23054
+ }
23055
+ };
23056
+ EmojiPicker.prototype.filterKeyHandler = function (e) {
23057
+ var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojisearch-btn button');
23058
+ var firstFocusEle = this.parent.element.querySelector('.e-focus');
23059
+ if (isNullOrUndefined(firstFocusEle) && e.keyCode === 40) {
23060
+ var focusEle = emojiButtons[0];
23061
+ addClass([focusEle], 'e-focus');
23062
+ emojiButtons[0].focus();
23063
+ }
23064
+ else {
23065
+ for (var i = 0; i < emojiButtons.length; i++) {
23066
+ var focusIndex = i;
23067
+ // eslint-disable-next-line
23068
+ var childNodes = emojiButtons[i];
23069
+ if (childNodes.classList.contains('e-focus')) {
23070
+ if (e.keyCode === 38) {
23071
+ if (i >= 6) {
23072
+ var firstFocusEle_1 = emojiButtons[i];
23073
+ removeClass([firstFocusEle_1], 'e-focus');
23074
+ var focusEle = emojiButtons[focusIndex -= 6];
23075
+ addClass([focusEle], 'e-focus');
23076
+ focusEle.focus();
23077
+ break;
23078
+ }
23079
+ else {
23080
+ var firstFocusEle_2 = emojiButtons[i];
23081
+ removeClass([firstFocusEle_2], 'e-focus');
23082
+ var focusEle = emojiButtons[focusIndex -= 1];
23083
+ var inputELe = this.popupObj.element.querySelector('.e-rte-emoji-search');
23084
+ if (isNullOrUndefined(focusEle) && !isNullOrUndefined(inputELe)) {
23085
+ inputELe.focus();
23086
+ break;
23087
+ }
23088
+ addClass([focusEle], 'e-focus');
23089
+ focusEle.focus();
23090
+ }
23091
+ }
23092
+ else if (e.keyCode === 40) {
23093
+ if (emojiButtons.length - 6 > i) {
23094
+ var firstFocusEle_3 = emojiButtons[i];
23095
+ removeClass([firstFocusEle_3], 'e-focus');
23096
+ var focusEle = emojiButtons[focusIndex += 6];
23097
+ addClass([focusEle], 'e-focus');
23098
+ focusEle.focus();
23099
+ break;
23100
+ }
23101
+ }
23102
+ else if (e.keyCode === 39) {
23103
+ if (emojiButtons.length !== i + 1) {
23104
+ var firstFocusEle_4 = emojiButtons[i];
23105
+ removeClass([firstFocusEle_4], 'e-focus');
23106
+ var focusEle = emojiButtons[focusIndex += 1];
23107
+ addClass([focusEle], 'e-focus');
23108
+ emojiButtons[focusIndex].focus();
23109
+ }
23110
+ break;
23111
+ }
23112
+ else if (e.keyCode === 37) {
23113
+ if (i > 0) {
23114
+ var firstFocusEle_5 = emojiButtons[i];
23115
+ removeClass([firstFocusEle_5], 'e-focus');
23116
+ var focusEle = emojiButtons[focusIndex -= 1];
23117
+ addClass([focusEle], 'e-focus');
23118
+ emojiButtons[focusIndex].focus();
23119
+ break;
23120
+ }
23121
+ }
23122
+ }
23123
+ }
23124
+ }
23125
+ };
23126
+ EmojiPicker.prototype.searchFilter = function (e, value) {
23127
+ var inputElement = this.parent.element.querySelector('.e-rte-emoji-search');
23128
+ var contentELe = this.parent.element.querySelector('.e-content');
23129
+ if (document.activeElement === inputElement || document.activeElement === contentELe) {
23130
+ var trimmedStr = void 0;
23131
+ if (value !== ':' && !isNullOrUndefined(value)) {
23132
+ trimmedStr = value.replace(/^:/, '');
23133
+ }
23134
+ else if (!isNullOrUndefined(value)) {
23135
+ trimmedStr = value;
23136
+ }
23137
+ var inputValue = isNullOrUndefined(inputElement) ? trimmedStr : inputElement.value;
23138
+ var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');
23139
+ var emojipickerAll = this.parent.element.querySelector('.e-rte-emojipicker-btn');
23140
+ var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');
23141
+ var toolbarGroup = this.parent.element.querySelector('.e-rte-emojipicker-toolbar');
23142
+ var excludedDiv_1 = this.parent.element.querySelector('.e-rte-emojisearch-btn');
23143
+ var firstChild = this.popDiv.childNodes[0];
23144
+ var getComputedStyle_2 = window.getComputedStyle(firstChild);
23145
+ var inputHeight = firstChild.nodeName === 'SPAN' ? (firstChild.getBoundingClientRect().height + parseFloat(getComputedStyle_2.marginTop) +
23146
+ parseFloat(getComputedStyle_2.marginBottom)) : 0;
23147
+ var popupBorder = window.getComputedStyle(this.popDiv);
23148
+ // eslint-disable-next-line @typescript-eslint/tslint/config
23149
+ var filteredButtons = isNullOrUndefined(excludedDiv_1) ? emojiButtons :
23150
+ // eslint-disable-next-line @typescript-eslint/tslint/config
23151
+ Array.from(emojiButtons).filter(function (button) { return !excludedDiv_1.contains(button); });
23152
+ if (inputValue === '' || value === ':') {
23153
+ toolbarGroup.style.display = '';
23154
+ emojipickerAll.style.height = (this.popDiv.getBoundingClientRect().height - toolbarGroup.getBoundingClientRect().height - inputHeight - (2 * parseFloat(popupBorder.borderWidth))) + 'px';
23155
+ // eslint-disable-next-line @typescript-eslint/tslint/config
23156
+ emojiGroups.forEach(function (element) {
23157
+ element.style.display = '';
23158
+ });
23159
+ }
23160
+ else {
23161
+ // eslint-disable-next-line @typescript-eslint/tslint/config
23162
+ emojiGroups.forEach(function (element) {
23163
+ element.style.display = 'none';
23164
+ });
23165
+ toolbarGroup.style.display = 'none';
23166
+ emojipickerAll.style.height = (this.popDiv.getBoundingClientRect().height - inputHeight - (2 * parseFloat(popupBorder.borderWidth))) + 'px';
23167
+ }
23168
+ var emojiBtnDiv = this.parent.createElement('div', { className: 'e-rte-emojisearch-btn' });
23169
+ var emojis = this.parent.element.querySelector('.e-rte-emojisearch-btn');
23170
+ if (emojis) {
23171
+ emojis.remove();
23172
+ }
23173
+ var noEmojiObj = this.parent.createElement('div', { className: 'e-rte-emojiSearch-noEmoji' });
23174
+ var noEMoji = true;
23175
+ for (var i = 0; i < filteredButtons.length; i++) {
23176
+ if (!isNullOrUndefined(filteredButtons[i].getAttribute('title'))) {
23177
+ var title = filteredButtons[i].getAttribute('title').toLowerCase();
23178
+ var titleLength = title.split(' ');
23179
+ for (var j = 0; j < titleLength.length; j++) {
23180
+ if (titleLength[j].startsWith(inputValue.toLowerCase()) && inputValue !== '') {
23181
+ var emoji = filteredButtons[i].cloneNode(true);
23182
+ emojiBtnDiv.appendChild(emoji);
23183
+ noEMoji = false;
23184
+ break;
23185
+ }
23186
+ }
23187
+ }
23188
+ }
23189
+ if (noEMoji && !this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') && (inputValue !== '' && value !== ':')) {
23190
+ noEmojiObj.innerHTML = '<span style="color: rgba(0, 0, 0, 0.75); font-weight: 500; font-size: 16px;">' + this.i10n.getConstant('emojiPickerNoResultFound') + ' 😥 </span>' + '<br>' + '<span style="color: rgba(0, 0, 0, 0.75);"> ' + this.i10n.getConstant('emojiPickerTrySomethingElse') + ' ? </span>';
23191
+ noEmojiObj.style.margin = '55px';
23192
+ emojipickerAll.appendChild(noEmojiObj);
23193
+ }
23194
+ else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {
23195
+ emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));
23196
+ }
23197
+ emojipickerAll.appendChild(emojiBtnDiv);
23198
+ }
23199
+ else {
23200
+ return;
23201
+ }
23202
+ };
23203
+ EmojiPicker.prototype.emojiBtnClick = function (e) {
23204
+ var event = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });
23205
+ // Includes the emote button element tooltip and toolbar tooltip
23206
+ var emotePickerTooltips = this.parent.element.querySelectorAll('.e-rte-emojipicker-popup [data-tooltip-id]');
23207
+ for (var i = 0; i < emotePickerTooltips.length; i++) {
23208
+ emotePickerTooltips[i].dispatchEvent(event);
23209
+ }
23210
+ var targetEle = e.target;
23211
+ if (targetEle.tagName !== 'BUTTON') {
23212
+ return;
23213
+ }
23214
+ targetEle.focus();
23215
+ if (!isNullOrUndefined(this.clickEvent)) {
23216
+ this.save.restore();
23217
+ }
23218
+ if (this.popupObj) {
23219
+ removeClass([this.divElement], 'e-active');
23220
+ this.popupObj.hide();
23221
+ }
23222
+ var originalEvent = e;
23223
+ this.parent.formatter.process(this.parent, {
23224
+ item: {
23225
+ 'command': 'EmojiPicker',
23226
+ 'subCommand': 'EmojiPicker',
23227
+ value: targetEle.innerHTML
23228
+ }
23229
+ }, e, originalEvent);
23230
+ };
23231
+ EmojiPicker.prototype.onkeyPress = function (e) {
23232
+ var originalEvent = e.args;
23233
+ var selection = window.getSelection();
23234
+ if (selection.rangeCount <= 0) {
23235
+ return;
23236
+ }
23237
+ var range = selection.getRangeAt(0);
23238
+ var cursorPos = range.startOffset;
23239
+ var prevChar = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos);
23240
+ var isPrevSpace = /\s/.test(prevChar);
23241
+ var isPrevColon = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos) === ':';
23242
+ var colon = selection.focusNode.textContent.charAt(cursorPos - 1) === ':';
23243
+ if (originalEvent.keyCode === 186 && originalEvent.shiftKey && (isPrevSpace || selection.focusOffset === 0)) {
23244
+ var coordinates = this.getCoordinates();
23245
+ this.parent.showEmojiPicker(coordinates.left, coordinates.top);
23246
+ }
23247
+ if (originalEvent.keyCode === 8 && colon && this.popupObj) {
23248
+ removeClass([this.divElement], 'e-active');
23249
+ this.popupObj.hide();
23250
+ }
23251
+ if (originalEvent.keyCode === 32 && isPrevColon && this.popupObj) {
23252
+ removeClass([this.divElement], 'e-active');
23253
+ this.popupObj.hide();
23254
+ }
23255
+ if (this.popupObj && (originalEvent.keyCode === 37 || originalEvent.keyCode === 38 || originalEvent.keyCode === 39
23256
+ || originalEvent.keyCode === 27 || originalEvent.keyCode === 40)) {
23257
+ this.onKeyDown(originalEvent);
23258
+ originalEvent.preventDefault();
23259
+ }
23260
+ };
23261
+ EmojiPicker.prototype.onkeyUp = function (e) {
23262
+ var originalEvent = e.args;
23263
+ var selection = window.getSelection();
23264
+ var range = selection.getRangeAt(0);
23265
+ var cursorPos = range.startOffset;
23266
+ // eslint-disable-next-line
23267
+ var selectedValue;
23268
+ var count$$1 = 0;
23269
+ for (var i = cursorPos - 1; i >= cursorPos - 15; i--) {
23270
+ var prevChar = selection.focusNode.textContent.substring(i - 1, i);
23271
+ var isPrevSpace = /:$/.test(prevChar);
23272
+ if (isPrevSpace && !isNullOrUndefined(this.popDiv) && count$$1 === 0) {
23273
+ selectedValue = range.startContainer.textContent.substring(i - 1, cursorPos);
23274
+ this.searchFilter(originalEvent, selectedValue);
23275
+ count$$1 = 1;
23276
+ }
23277
+ }
23278
+ var colon = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos);
23279
+ if (colon === ':' && !isNullOrUndefined(this.popupObj)) {
23280
+ selectedValue = colon;
23281
+ this.searchFilter(originalEvent, selectedValue);
23282
+ }
23283
+ };
23284
+ EmojiPicker.prototype.getCoordinates = function () {
23285
+ var coordinates;
23286
+ var selection = window.getSelection();
23287
+ var range = selection.getRangeAt(0);
23288
+ var firstChild;
23289
+ if (range.startContainer.nodeName === 'P' || range.startContainer.nodeName === 'DIV') {
23290
+ if (range.startContainer.childNodes[0].nodeName !== '#text') {
23291
+ firstChild = range.startContainer.childNodes[0];
23292
+ }
23293
+ }
23294
+ // eslint-disable-next-line
23295
+ var rect = isNullOrUndefined(firstChild) ? range.getBoundingClientRect() : firstChild.getBoundingClientRect();
23296
+ var rteContent = this.parent.element.querySelector('.e-rte-content');
23297
+ var rteEle = this.parent.element;
23298
+ var toolbarHeight = rteEle.offsetHeight - rteContent.offsetHeight;
23299
+ var cursorTop = rect.top - this.parent.inputElement.getBoundingClientRect().top;
23300
+ var cursorLeft = rect.left - this.parent.inputElement.getBoundingClientRect().left;
23301
+ var screenHeight = window.innerHeight;
23302
+ var popupHeight = 330;
23303
+ var popupTop = cursorTop;
23304
+ var popupLeft = cursorLeft + rect.width;
23305
+ if (rteEle.getBoundingClientRect().top < 0) {
23306
+ popupTop = popupTop + rteContent.getBoundingClientRect().top - toolbarHeight;
23307
+ }
23308
+ if (rect.top < popupHeight) {
23309
+ // eslint-disable-next-line
23310
+ popupTop = popupTop;
23311
+ }
23312
+ else if (rect.top + popupHeight > screenHeight) {
23313
+ popupTop -= popupHeight + 20;
23314
+ }
23315
+ if (this.parent.inputElement) {
23316
+ coordinates = {
23317
+ top: popupTop + 60,
23318
+ left: popupLeft + 8
23319
+ };
23320
+ }
23321
+ return coordinates;
23322
+ };
23323
+ EmojiPicker.prototype.removeEventListener = function () {
23324
+ if (this.parent.isDestroyed) {
23325
+ return;
23326
+ }
23327
+ this.parent.off(emojiPicker, this.toolbarClick);
23328
+ this.parent.off(docClick, this.docClick);
23329
+ this.parent.off(keyDown, this.onkeyPress);
23330
+ this.parent.off(keyUp, this.onkeyUp);
23331
+ this.parent.off(contentscroll, this.contentscroll);
23332
+ this.parent.off(scroll, this.contentscroll);
23333
+ };
23334
+ /**
23335
+ * For internal use only - Get the module name.
23336
+ *
23337
+ * @returns {string} - returns the string value
23338
+ */
23339
+ EmojiPicker.prototype.getModuleName = function () {
23340
+ return 'emojiPicker';
23341
+ };
23342
+ return EmojiPicker;
23343
+ }());
23344
+
22019
23345
  /**
22020
23346
  * Action export
22021
23347
  */
@@ -22796,15 +24122,20 @@ var Image = /** @__PURE__ @class */ (function () {
22796
24122
  if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {
22797
24123
  for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {
22798
24124
  var temp = this.parent.createElement('div');
22799
- var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);
22800
- temp.appendChild(contentElem);
24125
+ var contentElem = this.parent.formatter.getUndoRedoStack()[i].text;
24126
+ temp.appendChild(contentElem.cloneNode(true));
22801
24127
  var img = temp.querySelectorAll('img');
22802
24128
  if (temp.querySelector('.e-img-resize') && img.length > 0) {
22803
24129
  for (var j = 0; j < img.length; j++) {
22804
24130
  img[j].style.outline = '';
22805
24131
  }
22806
24132
  detach(temp.querySelector('.e-img-resize'));
22807
- this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;
24133
+ var clonedElement = temp.cloneNode(true);
24134
+ var fragment = document.createDocumentFragment();
24135
+ while (clonedElement.firstChild) {
24136
+ fragment.appendChild(clonedElement.firstChild);
24137
+ }
24138
+ this.parent.formatter.getUndoRedoStack()[i].text = fragment;
22808
24139
  }
22809
24140
  }
22810
24141
  }
@@ -22997,7 +24328,7 @@ var Image = /** @__PURE__ @class */ (function () {
22997
24328
  if (isNullOrUndefined(img.width)) {
22998
24329
  return;
22999
24330
  }
23000
- // eslint-disable-next-line
24331
+ // eslint-disable-next-line security/detect-unsafe-regex
23001
24332
  var width = img.style.width !== '' ? img.style.width.match(/^\d+(\.\d*)?%$/g) ? parseFloat(img.style.width) :
23002
24333
  parseInt(img.style.width, 10) : img.width;
23003
24334
  var height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;
@@ -23276,7 +24607,7 @@ var Image = /** @__PURE__ @class */ (function () {
23276
24607
  selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);
23277
24608
  selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
23278
24609
  if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
23279
- (selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {
24610
+ (!isNullOrUndefined(selectParentEle[0]) && selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {
23280
24611
  var prev = selectParentEle[0].parentElement.childNodes[0];
23281
24612
  if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {
23282
24613
  this.removeResizeEle();
@@ -23925,7 +25256,7 @@ var Image = /** @__PURE__ @class */ (function () {
23925
25256
  var dialogContent = this.imgsizeInput(e);
23926
25257
  var selectObj_1 = { args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode };
23927
25258
  this.dialogObj.setProperties({
23928
- height: 'inherit', width: '290px', header: imgSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },
25259
+ height: (Browser.isDevice) ? '300px' : 'inherit', width: '290px', header: imgSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },
23929
25260
  buttons: [{
23930
25261
  // eslint-disable-next-line
23931
25262
  click: function (e) {
@@ -25071,8 +26402,8 @@ var Audio = /** @__PURE__ @class */ (function () {
25071
26402
  if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {
25072
26403
  for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {
25073
26404
  var temp = this.parent.createElement('div');
25074
- var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);
25075
- temp.appendChild(contentElem);
26405
+ var contentElem = this.parent.formatter.getUndoRedoStack()[i].text;
26406
+ temp.appendChild(contentElem.cloneNode(true));
25076
26407
  }
25077
26408
  }
25078
26409
  };
@@ -25958,15 +27289,20 @@ var Video = /** @__PURE__ @class */ (function () {
25958
27289
  if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {
25959
27290
  for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {
25960
27291
  var temp = this.parent.createElement('div');
25961
- var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);
25962
- temp.appendChild(contentElem);
27292
+ var contentElem = this.parent.formatter.getUndoRedoStack()[i].text;
27293
+ temp.appendChild(contentElem.cloneNode(true));
25963
27294
  var vid = temp.querySelectorAll('video');
25964
27295
  if (temp.querySelector('.e-vid-resize') && vid.length > 0) {
25965
27296
  for (var j = 0; j < vid.length; j++) {
25966
27297
  vid[j].style.outline = '';
25967
27298
  }
25968
27299
  detach(temp.querySelector('.e-vid-resize'));
25969
- this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;
27300
+ var clonedElement = temp.cloneNode(true);
27301
+ var fragment = document.createDocumentFragment();
27302
+ while (clonedElement.firstChild) {
27303
+ fragment.appendChild(clonedElement.firstChild);
27304
+ }
27305
+ this.parent.formatter.getUndoRedoStack()[i].text = fragment;
25970
27306
  }
25971
27307
  }
25972
27308
  }
@@ -26262,8 +27598,8 @@ var Video = /** @__PURE__ @class */ (function () {
26262
27598
  parseInt(vidEleStyle.width, 10) : vid.style.width !== '' ? vid.style.width : vid.width;
26263
27599
  var height = vidEleStyle.height !== '' ? parseInt(vidEleStyle.height, 10) : vid.style.height !== '' ? vid.style.height : vid.height;
26264
27600
  if (width > height) {
26265
- vid.style.minWidth = this.parent.insertVideoSettings.minWidth === 0 ? '140px' : formatUnit(this.parent.insertVideoSettings.minWidth);
26266
- vid.style.minHeight = this.parent.insertVideoSettings.minHeight === 0 ? '60px' : formatUnit(this.parent.insertVideoSettings.minHeight);
27601
+ vid.style.minWidth = this.parent.insertVideoSettings.minWidth === 0 ? '200px' : formatUnit(this.parent.insertVideoSettings.minWidth);
27602
+ vid.style.minHeight = this.parent.insertVideoSettings.minHeight === 0 ? '90px' : formatUnit(this.parent.insertVideoSettings.minHeight);
26267
27603
  if (this.parent.insertVideoSettings.resizeByPercent) {
26268
27604
  if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {
26269
27605
  var percentageValue = this.pixToPerc((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY), (vid.previousElementSibling || vid.parentElement));
@@ -26459,7 +27795,7 @@ var Video = /** @__PURE__ @class */ (function () {
26459
27795
  selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);
26460
27796
  selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);
26461
27797
  if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&
26462
- ((selectParentEle[0].tagName === 'VIDEO' || this.isEmbedVidElem(selectParentEle[0]))) &&
27798
+ ((!isNullOrUndefined(selectParentEle[0]) && selectParentEle[0].tagName === 'VIDEO' || this.isEmbedVidElem(selectParentEle[0]))) &&
26463
27799
  selectParentEle[0].parentElement) {
26464
27800
  var prev = selectParentEle[0].parentElement.childNodes[0];
26465
27801
  if (this.contentModule.getEditPanel().querySelector('.e-vid-resize')) {
@@ -26975,7 +28311,7 @@ var Video = /** @__PURE__ @class */ (function () {
26975
28311
  videoUrl.appendChild(urlContent);
26976
28312
  this.embedInputUrl = this.parent.createElement('textarea', {
26977
28313
  className: 'e-input e-embed-video-url',
26978
- attrs: { placeholder: 'Paste Embedded Code here', type: 'text', tabindex: '-1', 'aria-label': this.i10n.getConstant('embedVideoLinkHeader') }
28314
+ attrs: { placeholder: this.i10n.getConstant('pasteEmbeddedCodeHere'), type: 'text', tabindex: '-1', 'aria-label': this.i10n.getConstant('embedVideoLinkHeader') }
26979
28315
  });
26980
28316
  this.embedInputUrl.addEventListener('keyup', function () {
26981
28317
  if (!isNullOrUndefined(_this.embedInputUrl)) {
@@ -27002,7 +28338,7 @@ var Video = /** @__PURE__ @class */ (function () {
27002
28338
  }
27003
28339
  });
27004
28340
  var embedUrlBtn = new RadioButton({
27005
- label: 'Embedded Code',
28341
+ label: this.i10n.getConstant('embeddedCode'),
27006
28342
  checked: true,
27007
28343
  name: 'URL',
27008
28344
  created: function () {
@@ -27016,7 +28352,7 @@ var Video = /** @__PURE__ @class */ (function () {
27016
28352
  });
27017
28353
  embedUrlBtn.appendTo(videoUrl.querySelector('#embedURL'));
27018
28354
  var webUrlBtn = new RadioButton({
27019
- label: 'Web URL',
28355
+ label: this.i10n.getConstant('webUrl'),
27020
28356
  name: 'URL',
27021
28357
  change: function () {
27022
28358
  urlContent.innerHTML = '';
@@ -29449,6 +30785,9 @@ var FileManagerSettings = /** @__PURE__ @class */ (function (_super) {
29449
30785
  function FileManagerSettings() {
29450
30786
  return _super !== null && _super.apply(this, arguments) || this;
29451
30787
  }
30788
+ __decorate$2([
30789
+ Event()
30790
+ ], FileManagerSettings.prototype, "beforeSend", void 0);
29452
30791
  __decorate$2([
29453
30792
  Complex({ getImageUrl: null, url: null, uploadUrl: null }, AjaxSettings)
29454
30793
  ], FileManagerSettings.prototype, "ajaxSettings", void 0);
@@ -29570,16 +30909,29 @@ var FormatPainterSettings = /** @__PURE__ @class */ (function (_super) {
29570
30909
  return _super !== null && _super.apply(this, arguments) || this;
29571
30910
  }
29572
30911
  __decorate$2([
29573
- Property(['Text', 'List', 'Table'])
29574
- ], FormatPainterSettings.prototype, "allowedContext", void 0);
29575
- __decorate$2([
29576
- Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; table; thead; tbody; tr; td; th; ol; ul; li; pre;')
30912
+ Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; ol; ul; li; pre;')
29577
30913
  ], FormatPainterSettings.prototype, "allowedFormats", void 0);
29578
30914
  __decorate$2([
29579
30915
  Property(null)
29580
30916
  ], FormatPainterSettings.prototype, "deniedFormats", void 0);
29581
30917
  return FormatPainterSettings;
29582
30918
  }(ChildProperty));
30919
+ /**
30920
+ * Specifies the emoji picker options in Rich Text Editor with the following properties.
30921
+ */
30922
+ var EmojiSettings = /** @__PURE__ @class */ (function (_super) {
30923
+ __extends$5(EmojiSettings, _super);
30924
+ function EmojiSettings() {
30925
+ return _super !== null && _super.apply(this, arguments) || this;
30926
+ }
30927
+ __decorate$2([
30928
+ Property(defaultEmojiIcons)
30929
+ ], EmojiSettings.prototype, "iconsSet", void 0);
30930
+ __decorate$2([
30931
+ Property(true)
30932
+ ], EmojiSettings.prototype, "showSearchBox", void 0);
30933
+ return EmojiSettings;
30934
+ }(ChildProperty));
29583
30935
  /**
29584
30936
  * Configures the Paste Cleanup settings of the RichTextEditor.
29585
30937
  */
@@ -29879,7 +31231,7 @@ var EnterKeyAction = /** @__PURE__ @class */ (function () {
29879
31231
  }
29880
31232
  isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;
29881
31233
  }
29882
- if (e.args.which === 13 && e.args.code === 'Enter') {
31234
+ if (e.args.which === 13 && (!Browser.isDevice ? e.args.code === 'Enter' : e.args.key === 'Enter')) {
29883
31235
  if (isNullOrUndefined(this.startNode.closest('LI, UL, OL')) && isNullOrUndefined(this.endNode.closest('LI, UL, OL')) && isTableEnter &&
29884
31236
  isNullOrUndefined(this.startNode.closest('PRE')) && isNullOrUndefined(this.endNode.closest('PRE'))) {
29885
31237
  var shiftKey_1 = e.args.shiftKey;
@@ -29985,7 +31337,7 @@ var EnterKeyAction = /** @__PURE__ @class */ (function () {
29985
31337
  var isFocusedFirst = false;
29986
31338
  if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&
29987
31339
  _this.range.startContainer === _this.range.endContainer && !(!isNullOrUndefined(nearBlockNode.childNodes[0])
29988
- && nearBlockNode.childNodes[0].nodeName === 'IMG' && nearBlockNode.querySelectorAll('img, audio, video').length > 0)) {
31340
+ && (nearBlockNode.childNodes[0].nodeName === 'IMG' || nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {
29989
31341
  var startNodeText = _this.range.startContainer.textContent;
29990
31342
  var splitFirstText = startNodeText.substring(0, _this.range.startOffset);
29991
31343
  // eslint-disable-next-line max-len
@@ -30407,6 +31759,10 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
30407
31759
  member: 'formatPainter',
30408
31760
  args: [this]
30409
31761
  });
31762
+ modules.push({
31763
+ member: 'emojiPicker',
31764
+ args: [this, this.serviceLocator]
31765
+ });
30410
31766
  }
30411
31767
  if (this.fileManagerSettings.enable) {
30412
31768
  modules.push({ member: 'fileManager', args: [this, this.serviceLocator] });
@@ -30606,6 +31962,20 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
30606
31962
  });
30607
31963
  return str;
30608
31964
  };
31965
+ /**
31966
+ * Shows the emoji picker
31967
+ *
31968
+ * @param {number} x - specifies the number value.
31969
+ * @param {number} y - specifies the number value.
31970
+ * @returns {void}
31971
+ * @public
31972
+ */
31973
+ RichTextEditor.prototype.showEmojiPicker = function (x, y) {
31974
+ if (this.readonly) {
31975
+ return;
31976
+ }
31977
+ this.notify(emojiPicker, { x: x, y: y });
31978
+ };
30609
31979
  /**
30610
31980
  * Executes the commands
30611
31981
  *
@@ -30841,7 +32211,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
30841
32211
  this.valueContainer.defaultValue = this.value;
30842
32212
  }
30843
32213
  // eslint-disable-next-line
30844
- (!this.enabled) ? this.unWireEvents() : this.eventInitializer();
32214
+ (this.enabled && !this.readonly) ? this.eventInitializer() : this.unWireEvents();
30845
32215
  this.notify(bindCssClass, { cssClass: this.cssClass });
30846
32216
  this.addAudioVideoWrapper();
30847
32217
  this.notify(tableclass, {});
@@ -30927,6 +32297,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
30927
32297
  var currentEndContainer = range.endContainer;
30928
32298
  var currentStartOffset = range.startOffset;
30929
32299
  var isSameContainer = currentStartContainer === currentEndContainer ? true : false;
32300
+ // eslint-disable-next-line
30930
32301
  var currentEndOffset = currentEndContainer.textContent.length;
30931
32302
  var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :
30932
32303
  range.endContainer;
@@ -31009,7 +32380,8 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31009
32380
  this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, range.startOffset);
31010
32381
  }
31011
32382
  }
31012
- if (this.formatter.getUndoRedoStack().length === 0) {
32383
+ var notFormatPainterCopy = !isNullOrUndefined(e.action) && e.action !== 'format-copy';
32384
+ if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy) {
31013
32385
  this.formatter.saveData();
31014
32386
  }
31015
32387
  if (e.action !== 'insert-link' &&
@@ -31041,8 +32413,8 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31041
32413
  if ((!isNullOrUndefined(this.placeHolderWrapper)) && (this.inputElement.textContent.length !== 1)) {
31042
32414
  this.placeHolderWrapper.style.display = 'none';
31043
32415
  }
31044
- else if (this.iframeSettings.enable && this.inputElement.classList.contains("e-rte-placeholder")) {
31045
- removeClass([this.inputElement], "e-rte-placeholder");
32416
+ else if (this.iframeSettings.enable && this.inputElement.classList.contains('e-rte-placeholder')) {
32417
+ removeClass([this.inputElement], 'e-rte-placeholder');
31046
32418
  }
31047
32419
  else {
31048
32420
  this.setPlaceHolder();
@@ -31071,7 +32443,9 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31071
32443
  this.inputElement.innerHTML = getEditValue(getDefaultValue(this), this);
31072
32444
  }
31073
32445
  var allowedKeys = e.which === 32 || e.which === 13 || e.which === 8 || e.which === 46;
31074
- if (((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'
32446
+ var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;
32447
+ var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;
32448
+ if ((!formatPainterCopy && !formatPainterPaste) && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'
31075
32449
  && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {
31076
32450
  this.formatter.onKeyHandler(this, e);
31077
32451
  }
@@ -31622,6 +32996,9 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31622
32996
  newProp.quickToolbarSettings.showOnRightClick ? this.wireContextEvent() : this.unWireContextEvent();
31623
32997
  this.notify(modelChanged, { newProp: newProp, oldProp: oldProp });
31624
32998
  break;
32999
+ case 'formatPainterSettings':
33000
+ this.formatter.editorManager.observer.notify(MODEL_CHANGED, { module: 'formatPainter', newProp: newProp });
33001
+ break;
31625
33002
  default:
31626
33003
  this.notify(modelChanged, { newProp: newProp, oldProp: oldProp });
31627
33004
  break;
@@ -31751,11 +33128,11 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31751
33128
  if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !isNullOrUndefined(this.inputElement.firstChild) && (this.inputElement.firstChild.nodeName === 'BR' ||
31752
33129
  ((this.inputElement.firstChild.nodeName === 'P' || this.inputElement.firstChild.nodeName === 'DIV') && !isNullOrUndefined(this.inputElement.firstChild.firstChild) &&
31753
33130
  this.inputElement.firstChild.firstChild.nodeName === 'BR'))) {
31754
- addClass([this.inputElement], "e-rte-placeholder");
33131
+ addClass([this.inputElement], 'e-rte-placeholder');
31755
33132
  this.inputElement.setAttribute('placeholder', this.placeholder);
31756
33133
  }
31757
33134
  else {
31758
- removeClass([this.inputElement], "e-rte-placeholder");
33135
+ removeClass([this.inputElement], 'e-rte-placeholder');
31759
33136
  }
31760
33137
  }
31761
33138
  };
@@ -31985,7 +33362,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
31985
33362
  var _this = this;
31986
33363
  if (this.valueTemplate) {
31987
33364
  var regEx = new RegExp(/<(?=.*? .*?\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\/\1>/i);
31988
- if (regEx.test(this.valueTemplate)) {
33365
+ if (typeof this.valueTemplate === 'string' && regEx.test(this.valueTemplate)) {
31989
33366
  this.setProperties({ value: this.valueTemplate });
31990
33367
  }
31991
33368
  else {
@@ -32484,7 +33861,7 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32484
33861
  this.timeInterval = null;
32485
33862
  }
32486
33863
  if (!isNullOrUndefined(this.placeHolderWrapper) && this.element.querySelector('[title = Preview]')) {
32487
- this.placeHolderWrapper.style.display = "none";
33864
+ this.placeHolderWrapper.style.display = 'none';
32488
33865
  }
32489
33866
  EventHandler.remove(document, 'mousedown', this.onDocumentClick);
32490
33867
  }
@@ -32543,7 +33920,8 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32543
33920
  EventHandler.add(element, 'scroll', this.scrollHandler, this);
32544
33921
  }
32545
33922
  if (!this.iframeSettings.enable) {
32546
- EventHandler.add(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler, this);
33923
+ // Add the scroll event handler from the inputElement
33924
+ EventHandler.add(this.inputElement, 'scroll', this.contentScrollHandler, this);
32547
33925
  }
32548
33926
  };
32549
33927
  RichTextEditor.prototype.wireContextEvent = function () {
@@ -32572,7 +33950,8 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32572
33950
  EventHandler.remove(element, 'scroll', this.scrollHandler);
32573
33951
  }
32574
33952
  if (!this.iframeSettings.enable) {
32575
- EventHandler.remove(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler);
33953
+ // Remove the scroll event handler from the inputElement
33954
+ EventHandler.remove(this.inputElement, 'scroll', this.contentScrollHandler);
32576
33955
  }
32577
33956
  };
32578
33957
  RichTextEditor.prototype.touchHandler = function (e) {
@@ -32755,6 +34134,9 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
32755
34134
  __decorate$1([
32756
34135
  Complex({}, FormatPainterSettings)
32757
34136
  ], RichTextEditor.prototype, "formatPainterSettings", void 0);
34137
+ __decorate$1([
34138
+ Complex({}, EmojiSettings)
34139
+ ], RichTextEditor.prototype, "emojiPickerSettings", void 0);
32758
34140
  __decorate$1([
32759
34141
  Complex({}, IFrameSettings)
32760
34142
  ], RichTextEditor.prototype, "iframeSettings", void 0);
@@ -33044,5 +34426,5 @@ var RichTextEditor = /** @__PURE__ @class */ (function (_super) {
33044
34426
  * Rich Text Editor component exported items
33045
34427
  */
33046
34428
 
33047
- export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, blockEmptyNodes, inlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS };
34429
+ export { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, FormatPainter, EmojiPicker, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, formatPainterClick, formatPainterDoubleClick, emojiPicker, maximizeMinimizeClick, blockEmptyNodes, inlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, FormatPainterActions, EmojiPickerAction, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS };
33048
34430
  //# sourceMappingURL=ej2-richtexteditor.es5.js.map