jodit-pro 4.12.21 → 4.12.23

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 (299) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +4 -4
  3. package/es2015/jodit.js +171 -34
  4. package/es2015/jodit.min.js +4 -4
  5. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  8. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  10. package/es2015/plugins/backup/backup.css +1 -1
  11. package/es2015/plugins/backup/backup.js +1 -1
  12. package/es2015/plugins/backup/backup.min.js +1 -1
  13. package/es2015/plugins/button-generator/button-generator.css +1 -1
  14. package/es2015/plugins/button-generator/button-generator.js +1 -1
  15. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  16. package/es2015/plugins/change-case/change-case.js +1 -1
  17. package/es2015/plugins/change-case/change-case.min.js +1 -1
  18. package/es2015/plugins/color-picker/color-picker.css +1 -1
  19. package/es2015/plugins/color-picker/color-picker.js +1 -1
  20. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  21. package/es2015/plugins/emoji/emoji.css +1 -1
  22. package/es2015/plugins/emoji/emoji.js +1 -1
  23. package/es2015/plugins/emoji/emoji.min.js +1 -1
  24. package/es2015/plugins/export-docs/export-docs.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  26. package/es2015/plugins/finder/finder.css +1 -1
  27. package/es2015/plugins/finder/finder.js +1 -1
  28. package/es2015/plugins/finder/finder.min.js +1 -1
  29. package/es2015/plugins/google-maps/google-maps.css +1 -1
  30. package/es2015/plugins/google-maps/google-maps.js +1 -1
  31. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  32. package/es2015/plugins/google-search/google-search.js +1 -1
  33. package/es2015/plugins/google-search/google-search.min.js +1 -1
  34. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  36. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  39. package/es2015/plugins/keyboard/keyboard.css +1 -1
  40. package/es2015/plugins/keyboard/keyboard.js +1 -1
  41. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  42. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  43. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  44. package/es2015/plugins/page-break/page-break.js +1 -1
  45. package/es2015/plugins/page-break/page-break.min.js +1 -1
  46. package/es2015/plugins/paste-code/paste-code.css +1 -1
  47. package/es2015/plugins/paste-code/paste-code.js +1 -1
  48. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  49. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  50. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  51. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  52. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  53. package/es2015/plugins/style/style.css +1 -1
  54. package/es2015/plugins/style/style.js +1 -1
  55. package/es2015/plugins/style/style.min.js +1 -1
  56. package/es2015/plugins/templates/templates.css +1 -1
  57. package/es2015/plugins/templates/templates.js +1 -1
  58. package/es2015/plugins/templates/templates.min.js +1 -1
  59. package/es2015/plugins/todo-list/todo-list.css +1 -1
  60. package/es2015/plugins/todo-list/todo-list.js +1 -1
  61. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  62. package/es2015/plugins/translate/translate.css +1 -1
  63. package/es2015/plugins/translate/translate.js +1 -1
  64. package/es2015/plugins/translate/translate.min.js +1 -1
  65. package/es2015/plugins/tune-block/tune-block.css +1 -1
  66. package/es2015/plugins/tune-block/tune-block.js +1 -1
  67. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  68. package/es2018/jodit.fat.min.js +6 -6
  69. package/es2018/jodit.min.js +4 -4
  70. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  71. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  72. package/es2018/plugins/backup/backup.min.js +1 -1
  73. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  74. package/es2018/plugins/change-case/change-case.min.js +1 -1
  75. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  76. package/es2018/plugins/emoji/emoji.min.js +1 -1
  77. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  78. package/es2018/plugins/finder/finder.min.js +1 -1
  79. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  80. package/es2018/plugins/google-search/google-search.min.js +1 -1
  81. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  82. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  83. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  84. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  85. package/es2018/plugins/page-break/page-break.min.js +1 -1
  86. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  87. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  88. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  89. package/es2018/plugins/style/style.min.js +1 -1
  90. package/es2018/plugins/templates/templates.min.js +1 -1
  91. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  92. package/es2018/plugins/translate/translate.min.js +1 -1
  93. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  94. package/es2021/jodit.css +1 -1
  95. package/es2021/jodit.fat.min.js +8 -8
  96. package/es2021/jodit.js +171 -34
  97. package/es2021/jodit.min.js +5 -5
  98. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  99. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  100. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  101. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  102. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  103. package/es2021/plugins/backup/backup.css +1 -1
  104. package/es2021/plugins/backup/backup.js +1 -1
  105. package/es2021/plugins/backup/backup.min.js +1 -1
  106. package/es2021/plugins/button-generator/button-generator.css +1 -1
  107. package/es2021/plugins/button-generator/button-generator.js +1 -1
  108. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  109. package/es2021/plugins/change-case/change-case.js +1 -1
  110. package/es2021/plugins/change-case/change-case.min.js +1 -1
  111. package/es2021/plugins/color-picker/color-picker.css +1 -1
  112. package/es2021/plugins/color-picker/color-picker.js +1 -1
  113. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  114. package/es2021/plugins/emoji/emoji.css +1 -1
  115. package/es2021/plugins/emoji/emoji.js +1 -1
  116. package/es2021/plugins/emoji/emoji.min.js +1 -1
  117. package/es2021/plugins/export-docs/export-docs.js +1 -1
  118. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  119. package/es2021/plugins/finder/finder.css +1 -1
  120. package/es2021/plugins/finder/finder.js +1 -1
  121. package/es2021/plugins/finder/finder.min.js +1 -1
  122. package/es2021/plugins/google-maps/google-maps.css +1 -1
  123. package/es2021/plugins/google-maps/google-maps.js +1 -1
  124. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  125. package/es2021/plugins/google-search/google-search.js +1 -1
  126. package/es2021/plugins/google-search/google-search.min.js +1 -1
  127. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  128. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  129. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  130. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  131. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  132. package/es2021/plugins/keyboard/keyboard.css +1 -1
  133. package/es2021/plugins/keyboard/keyboard.js +1 -1
  134. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  135. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  136. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  137. package/es2021/plugins/page-break/page-break.js +1 -1
  138. package/es2021/plugins/page-break/page-break.min.js +1 -1
  139. package/es2021/plugins/paste-code/paste-code.css +1 -1
  140. package/es2021/plugins/paste-code/paste-code.js +1 -1
  141. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  142. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  143. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  144. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  145. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  146. package/es2021/plugins/style/style.css +1 -1
  147. package/es2021/plugins/style/style.js +1 -1
  148. package/es2021/plugins/style/style.min.js +1 -1
  149. package/es2021/plugins/templates/templates.css +1 -1
  150. package/es2021/plugins/templates/templates.js +1 -1
  151. package/es2021/plugins/templates/templates.min.js +1 -1
  152. package/es2021/plugins/todo-list/todo-list.css +1 -1
  153. package/es2021/plugins/todo-list/todo-list.js +1 -1
  154. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  155. package/es2021/plugins/translate/translate.css +1 -1
  156. package/es2021/plugins/translate/translate.js +1 -1
  157. package/es2021/plugins/translate/translate.min.js +1 -1
  158. package/es2021/plugins/tune-block/tune-block.css +1 -1
  159. package/es2021/plugins/tune-block/tune-block.js +1 -1
  160. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  161. package/es2021.en/jodit.css +1 -1
  162. package/es2021.en/jodit.fat.min.js +5 -5
  163. package/es2021.en/jodit.js +171 -34
  164. package/es2021.en/jodit.min.js +5 -5
  165. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  166. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  167. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  168. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  169. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  170. package/es2021.en/plugins/backup/backup.css +1 -1
  171. package/es2021.en/plugins/backup/backup.js +1 -1
  172. package/es2021.en/plugins/backup/backup.min.js +1 -1
  173. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  174. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  175. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  176. package/es2021.en/plugins/change-case/change-case.js +1 -1
  177. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  178. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  179. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  180. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  181. package/es2021.en/plugins/emoji/emoji.css +1 -1
  182. package/es2021.en/plugins/emoji/emoji.js +1 -1
  183. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  184. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  185. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  186. package/es2021.en/plugins/finder/finder.css +1 -1
  187. package/es2021.en/plugins/finder/finder.js +1 -1
  188. package/es2021.en/plugins/finder/finder.min.js +1 -1
  189. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  190. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  191. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  192. package/es2021.en/plugins/google-search/google-search.js +1 -1
  193. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  194. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  195. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  196. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  197. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  198. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  199. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  200. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  201. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  202. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  203. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  204. package/es2021.en/plugins/page-break/page-break.js +1 -1
  205. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  206. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  207. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  208. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  209. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  210. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  211. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  212. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  213. package/es2021.en/plugins/style/style.css +1 -1
  214. package/es2021.en/plugins/style/style.js +1 -1
  215. package/es2021.en/plugins/style/style.min.js +1 -1
  216. package/es2021.en/plugins/templates/templates.css +1 -1
  217. package/es2021.en/plugins/templates/templates.js +1 -1
  218. package/es2021.en/plugins/templates/templates.min.js +1 -1
  219. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  220. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  221. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  222. package/es2021.en/plugins/translate/translate.css +1 -1
  223. package/es2021.en/plugins/translate/translate.js +1 -1
  224. package/es2021.en/plugins/translate/translate.min.js +1 -1
  225. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  226. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  227. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  228. package/es5/jodit.css +2 -2
  229. package/es5/jodit.fat.min.js +2 -2
  230. package/es5/jodit.js +184 -34
  231. package/es5/jodit.min.css +2 -2
  232. package/es5/jodit.min.js +2 -2
  233. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  234. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  235. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  236. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  237. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  238. package/es5/plugins/backup/backup.css +1 -1
  239. package/es5/plugins/backup/backup.js +1 -1
  240. package/es5/plugins/backup/backup.min.js +1 -1
  241. package/es5/plugins/button-generator/button-generator.css +1 -1
  242. package/es5/plugins/button-generator/button-generator.js +1 -1
  243. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  244. package/es5/plugins/change-case/change-case.js +1 -1
  245. package/es5/plugins/change-case/change-case.min.js +1 -1
  246. package/es5/plugins/color-picker/color-picker.css +1 -1
  247. package/es5/plugins/color-picker/color-picker.js +1 -1
  248. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  249. package/es5/plugins/emoji/emoji.css +1 -1
  250. package/es5/plugins/emoji/emoji.js +1 -1
  251. package/es5/plugins/emoji/emoji.min.js +1 -1
  252. package/es5/plugins/export-docs/export-docs.js +1 -1
  253. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  254. package/es5/plugins/finder/finder.css +1 -1
  255. package/es5/plugins/finder/finder.js +1 -1
  256. package/es5/plugins/finder/finder.min.js +1 -1
  257. package/es5/plugins/google-maps/google-maps.css +1 -1
  258. package/es5/plugins/google-maps/google-maps.js +1 -1
  259. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  260. package/es5/plugins/google-search/google-search.js +1 -1
  261. package/es5/plugins/google-search/google-search.min.js +1 -1
  262. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  263. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  264. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  265. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  266. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  267. package/es5/plugins/keyboard/keyboard.css +1 -1
  268. package/es5/plugins/keyboard/keyboard.js +1 -1
  269. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  270. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  271. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  272. package/es5/plugins/page-break/page-break.js +1 -1
  273. package/es5/plugins/page-break/page-break.min.js +1 -1
  274. package/es5/plugins/paste-code/paste-code.css +1 -1
  275. package/es5/plugins/paste-code/paste-code.js +1 -1
  276. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  277. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  278. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  279. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  280. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  281. package/es5/plugins/style/style.css +1 -1
  282. package/es5/plugins/style/style.js +1 -1
  283. package/es5/plugins/style/style.min.js +1 -1
  284. package/es5/plugins/templates/templates.css +1 -1
  285. package/es5/plugins/templates/templates.js +1 -1
  286. package/es5/plugins/templates/templates.min.js +1 -1
  287. package/es5/plugins/todo-list/todo-list.css +1 -1
  288. package/es5/plugins/todo-list/todo-list.js +1 -1
  289. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  290. package/es5/plugins/translate/translate.css +1 -1
  291. package/es5/plugins/translate/translate.js +1 -1
  292. package/es5/plugins/translate/translate.min.js +1 -1
  293. package/es5/plugins/tune-block/tune-block.css +1 -1
  294. package/es5/plugins/tune-block/tune-block.js +1 -1
  295. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  296. package/es5/polyfills.fat.min.js +1 -1
  297. package/es5/polyfills.js +1 -1
  298. package/es5/polyfills.min.js +1 -1
  299. package/package.json +1 -1
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.12.21
4
+ * Version: v4.12.23
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1746,7 +1746,7 @@ __webpack_require__.r(__webpack_exports__);
1746
1746
  * ```
1747
1747
  * @packageDocumentation
1748
1748
  * @module constants
1749
- */ const APP_VERSION = "4.12.21";
1749
+ */ const APP_VERSION = "4.12.23";
1750
1750
  // prettier-ignore
1751
1751
  const ES = "es2021";
1752
1752
  const IS_ES_MODERN = true;
@@ -7486,6 +7486,18 @@ const completeUrl = (url)=>{
7486
7486
 
7487
7487
 
7488
7488
 
7489
+ /**
7490
+ * Keys that must never be copied from a (potentially untrusted) config object —
7491
+ * assigning them during a recursive merge can reach and mutate
7492
+ * `Object.prototype` (prototype pollution, CWE-1321).
7493
+ */ const UNSAFE_PROTO_KEYS = [
7494
+ '__proto__',
7495
+ 'constructor',
7496
+ 'prototype'
7497
+ ];
7498
+ function isUnsafeProtoKey(key) {
7499
+ return UNSAFE_PROTO_KEYS.indexOf(key) !== -1;
7500
+ }
7489
7501
  /**
7490
7502
  * @example
7491
7503
  * ```js
@@ -7534,6 +7546,9 @@ const completeUrl = (url)=>{
7534
7546
  }
7535
7547
  const newOpt = {};
7536
7548
  Object.keys(options).forEach((key)=>{
7549
+ if (isUnsafeProtoKey(key)) {
7550
+ return;
7551
+ }
7537
7552
  const opt = options[key], protoKey = proto ? proto[key] : null;
7538
7553
  if ((0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(opt) && (0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(protoKey) && !(0,_extend_js__WEBPACK_IMPORTED_MODULE_5__.isAtom)(opt)) {
7539
7554
  newOpt[key] = ConfigProto(opt, protoKey, deep + 1);
@@ -7595,6 +7610,9 @@ function ConfigFlatten(obj) {
7595
7610
  * @see {@link ConfigProto} for the prototype-chain variant used at editor creation time
7596
7611
  */ function ConfigMerge(target, source) {
7597
7612
  Object.keys(source).forEach((key)=>{
7613
+ if (isUnsafeProtoKey(key)) {
7614
+ return;
7615
+ }
7598
7616
  const srcVal = source[key];
7599
7617
  const tgtVal = target[key];
7600
7618
  if ((0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(srcVal) && (0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(tgtVal) && !(0,_extend_js__WEBPACK_IMPORTED_MODULE_5__.isAtom)(srcVal)) {
@@ -32864,7 +32882,11 @@ function filterStyleProperties(style, allowed) {
32864
32882
  if (!jodit.o.cleanHTML.removeEmptyElements) {
32865
32883
  return false;
32866
32884
  }
32867
- return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && node.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(node) && (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trimInv)(node.innerHTML).length === 0 && (current == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, current));
32885
+ // Never drop an empty inline element that currently holds the caret it is
32886
+ // a pending-format marker the user is about to type into (#1291). `current`
32887
+ // is captured before a click moves the caret, so also check the live caret.
32888
+ const liveCaret = jodit.s.isCollapsed() ? jodit.s.range.startContainer : null;
32889
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && node.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(node) && (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trimInv)(node.innerHTML).length === 0 && (current == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, current)) && (liveCaret == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, liveCaret));
32868
32890
  }
32869
32891
 
32870
32892
 
@@ -33997,11 +34019,33 @@ var DragState;
33997
34019
  */ class dragAndDropElement extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
33998
34020
  /** @override */ afterInit() {
33999
34021
  this.dragList = this.j.o.draggableTags ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.splitArray)(this.j.o.draggableTags).filter(Boolean).map((item)=>item.toLowerCase()) : [];
34022
+ // Allow another plugin (e.g. a drag handle/anchor) to start dragging
34023
+ // an element programmatically, regardless of the `draggableTags` list.
34024
+ this.j.e.on('startDragElement', this.onStartDragElement);
34000
34025
  if (!this.dragList.length) {
34001
34026
  return;
34002
34027
  }
34003
34028
  this.j.e.on('mousedown dragstart', this.onDragStart);
34004
34029
  }
34030
+ /**
34031
+ * Start dragging a specific element programmatically.
34032
+ *
34033
+ * Allows a separate UI element (for example a drag handle/anchor shown next
34034
+ * to a block) to initiate the drag without the user pressing directly on the
34035
+ * draggable element itself.
34036
+ *
34037
+ * @example
34038
+ * ```js
34039
+ * handle.addEventListener('mousedown', e => {
34040
+ * editor.e.fire('startDragElement', preBlock, e);
34041
+ * });
34042
+ * ```
34043
+ */ onStartDragElement(element, event) {
34044
+ if (this.isInDestruct || this.state > DragState.IDLE || !element) {
34045
+ return;
34046
+ }
34047
+ this.startDragging(element, event);
34048
+ }
34005
34049
  /**
34006
34050
  * Drag start handler
34007
34051
  */ onDragStart(event) {
@@ -34023,11 +34067,18 @@ var DragState;
34023
34067
  if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(lastTarget.parentElement, 'a') && lastTarget.parentElement.firstChild === lastTarget && lastTarget.parentElement.lastChild === lastTarget) {
34024
34068
  lastTarget = lastTarget.parentElement;
34025
34069
  }
34070
+ this.startDragging(lastTarget, event);
34071
+ }
34072
+ /**
34073
+ * Prepare the ghost element and switch to the waiting state.
34074
+ * Shared by the native mousedown handler and the programmatic
34075
+ * `startDragElement` event handler.
34076
+ */ startDragging(target, event) {
34026
34077
  this.startX = event.clientX;
34027
34078
  this.startY = event.clientY;
34028
34079
  this.isCopyMode = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ctrlKey)(event); // we can move only element from editor
34029
- this.draggable = lastTarget.cloneNode(true);
34030
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(this.draggable, 'target', lastTarget);
34080
+ this.draggable = target.cloneNode(true);
34081
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(this.draggable, 'target', target);
34031
34082
  this.state = DragState.WAIT_DRAGGING;
34032
34083
  this.addDragListeners();
34033
34084
  }
@@ -34097,6 +34148,18 @@ var DragState;
34097
34148
  }
34098
34149
  const { parentElement } = fragment;
34099
34150
  this.j.s.insertNode(fragment, true, false);
34151
+ // Dropping a non-editable block (e.g. a `<pre>` code sample) can leave an
34152
+ // invisible filler text node beside it. Remove it so the drop does not
34153
+ // introduce a stray empty line (which clean-html would otherwise strip
34154
+ // later, causing a flash).
34155
+ [
34156
+ fragment.previousSibling,
34157
+ fragment.nextSibling
34158
+ ].forEach((node)=>{
34159
+ if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmptyTextNode(node)) {
34160
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
34161
+ }
34162
+ });
34100
34163
  if (parentElement && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(parentElement) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell(parentElement)) {
34101
34164
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(parentElement);
34102
34165
  }
@@ -34123,7 +34186,7 @@ var DragState;
34123
34186
  }
34124
34187
  /** @override */ beforeDestruct() {
34125
34188
  this.onDragEnd();
34126
- this.j.e.off('mousedown dragstart', this.onDragStart);
34189
+ this.j.e.off('mousedown dragstart', this.onDragStart).off('startDragElement', this.onStartDragElement);
34127
34190
  this.removeDragListeners();
34128
34191
  }
34129
34192
  constructor(){
@@ -34139,6 +34202,9 @@ var DragState;
34139
34202
  this.state = DragState.IDLE;
34140
34203
  }
34141
34204
  }
34205
+ __decorate([
34206
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
34207
+ ], dragAndDropElement.prototype, "onStartDragElement", null);
34142
34208
  __decorate([
34143
34209
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
34144
34210
  ], dragAndDropElement.prototype, "onDragStart", null);
@@ -34625,12 +34691,17 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('dtd', dtd);
34625
34691
  if (beforeEnter !== undefined) {
34626
34692
  return beforeEnter;
34627
34693
  }
34628
- if (!editor.s.isCollapsed()) {
34629
- editor.execCommand('Delete');
34630
- }
34631
- editor.s.focus();
34632
- this.onEnter(event);
34633
- editor.e.fire('afterEnter', event);
34694
+ // Delete-of-selection + new block must be a single history step,
34695
+ // otherwise pressing Enter over a selection needs two Ctrl+Z to undo
34696
+ // (the first only reverts to the intermediate empty state). #1292
34697
+ editor.history.snapshot.transaction(()=>{
34698
+ if (!editor.s.isCollapsed()) {
34699
+ editor.execCommand('Delete');
34700
+ }
34701
+ editor.s.focus();
34702
+ this.onEnter(event);
34703
+ editor.e.fire('afterEnter', event);
34704
+ });
34634
34705
  editor.synchronizeValues(); // fire change
34635
34706
  return false;
34636
34707
  }
@@ -44033,13 +44104,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44033
44104
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
44034
44105
 
44035
44106
  /* unused harmony export select */
44036
- /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65478);
44037
- /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
44038
- /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
44039
- /* harmony import */ var _core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(87058);
44040
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
44041
- /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67510);
44042
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67215);
44107
+ /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
44108
+ /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
44109
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
44110
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
44111
+ /* harmony import */ var _core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87058);
44112
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
44113
+ /* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67510);
44114
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(67215);
44043
44115
  /*!
44044
44116
  * Jodit Editor (https://xdsoft.net/jodit/)
44045
44117
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -44057,6 +44129,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44057
44129
 
44058
44130
 
44059
44131
 
44132
+
44060
44133
  /**
44061
44134
  * A utility plugin that allows you to subscribe to a click/mousedown/touchstart/mouseup on an element in DOM order
44062
44135
  *
@@ -44067,7 +44140,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44067
44140
  * console.log(img.src);
44068
44141
  * })
44069
44142
  * ```
44070
- */ class select extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
44143
+ */ class select extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
44071
44144
  afterInit(jodit) {
44072
44145
  this.proxyEventsList.forEach((eventName)=>{
44073
44146
  jodit.e.on(eventName + '.select', this.onStartSelection);
@@ -44082,7 +44155,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44082
44155
  const { j } = this;
44083
44156
  let result, target = e.target;
44084
44157
  while(result === undefined && target && target !== j.editor){
44085
- result = j.e.fire((0,_core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_3__.camelCase)(e.type + '_' + target.nodeName.toLowerCase()), target, e);
44158
+ result = j.e.fire((0,_core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_4__.camelCase)(e.type + '_' + target.nodeName.toLowerCase()), target, e);
44086
44159
  target = target.parentElement;
44087
44160
  }
44088
44161
  if (e.type === 'click' && result === undefined && target === j.editor) {
@@ -44093,10 +44166,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44093
44166
  * @event outsideClick(e) - when user clicked on the outside of editor
44094
44167
  */ onOutsideClick(e) {
44095
44168
  const node = e.target;
44096
- if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(node, (elm)=>elm === this.j.editor)) {
44169
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.up(node, (elm)=>elm === this.j.editor)) {
44097
44170
  return;
44098
44171
  }
44099
- const box = _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.UIElement.closestElement(node, _core_ui_index_js__WEBPACK_IMPORTED_MODULE_5__.Popup);
44172
+ const box = _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(node, _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup);
44100
44173
  if (!box) {
44101
44174
  this.j.e.fire('outsideClick', e);
44102
44175
  }
@@ -44105,7 +44178,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44105
44178
  const { s } = this.j;
44106
44179
  if (!s.isCollapsed()) {
44107
44180
  const current = s.current();
44108
- if (current && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(this.j.editor, current)) {
44181
+ if (current && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(this.j.editor, current)) {
44109
44182
  this.onCopyNormalizeSelectionBound();
44110
44183
  }
44111
44184
  }
@@ -44117,6 +44190,60 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44117
44190
  s.expandSelection();
44118
44191
  return false;
44119
44192
  }
44193
+ /**
44194
+ * Fix caret position when clicking to the right of a list item that has a
44195
+ * nested list. Blink/WebKit place the caret at the start of the line instead
44196
+ * of the end (#1296); move it to the end of the item's own text.
44197
+ */ onClickRightOfNestedListItem(e) {
44198
+ const { s } = this.j;
44199
+ const range = s.range;
44200
+ if (!range.collapsed || range.startOffset !== 0 || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(range.startContainer)) {
44201
+ return;
44202
+ }
44203
+ const text = range.startContainer;
44204
+ const li = text.parentNode;
44205
+ // The text must be the direct content of a list item that has a nested
44206
+ // list (the last level has no nested list and behaves correctly).
44207
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(li, 'li') || !(li.querySelector('ul') || li.querySelector('ol'))) {
44208
+ return;
44209
+ }
44210
+ const measure = this.j.ed.createRange();
44211
+ measure.selectNodeContents(text);
44212
+ const rect = measure.getBoundingClientRect();
44213
+ // Only when the click happened to the right of the text.
44214
+ if (e.clientX > rect.right) {
44215
+ s.setCursorAfter(text);
44216
+ }
44217
+ }
44218
+ /**
44219
+ * Keep pending inline formatting after a click. Toggling Bold/Italic/etc. on
44220
+ * a collapsed cursor leaves empty marker elements with the caret inside; a
44221
+ * click puts the caret right before them (outside), so they get cleaned up
44222
+ * and the formatting is lost. Move the caret back into the innermost marker
44223
+ * so the next typed character keeps every pending format (#1291).
44224
+ */ onClickKeepPendingFormat() {
44225
+ var _a, _b;
44226
+ const { s } = this.j;
44227
+ const range = s.range;
44228
+ if (!range.collapsed || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(range.startContainer)) {
44229
+ return;
44230
+ }
44231
+ const text = range.startContainer;
44232
+ // Caret must sit at the very end of the text, right before the markers.
44233
+ if (range.startOffset !== ((_b = (_a = text.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0)) {
44234
+ return;
44235
+ }
44236
+ const marker = text.nextSibling;
44237
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(marker) || !marker.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isEmpty(marker)) {
44238
+ return;
44239
+ }
44240
+ let inner = marker;
44241
+ // Descend into the innermost empty formatting marker.
44242
+ while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(inner.firstElementChild) && inner.firstElementChild.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE)){
44243
+ inner = inner.firstElementChild;
44244
+ }
44245
+ s.setCursorIn(inner);
44246
+ }
44120
44247
  /**
44121
44248
  * Normalize selection after triple click
44122
44249
  */ onTripleClickNormalizeSelection(e) {
@@ -44125,8 +44252,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44125
44252
  }
44126
44253
  const { s } = this.j;
44127
44254
  const { startContainer, startOffset } = s.range;
44128
- if (startOffset === 0 && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(startContainer)) {
44129
- s.select(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(startContainer, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, this.j.editor) || startContainer, true);
44255
+ if (startOffset === 0 && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(startContainer)) {
44256
+ s.select(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(startContainer, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock, this.j.editor) || startContainer, true);
44130
44257
  }
44131
44258
  }
44132
44259
  onCopyNormalizeSelectionBound(e) {
@@ -44134,7 +44261,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44134
44261
  if (!o.select.normalizeSelectionBeforeCutAndCopy || s.isCollapsed()) {
44135
44262
  return;
44136
44263
  }
44137
- if (e && (!e.isTrusted || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isNode(e.target) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(editor, e.target))) {
44264
+ if (e && (!e.isTrusted || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isNode(e.target) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(editor, e.target))) {
44138
44265
  return;
44139
44266
  }
44140
44267
  this.jodit.s.expandSelection();
@@ -44151,33 +44278,43 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
44151
44278
  }
44152
44279
  }
44153
44280
  __decorate([
44154
- _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
44281
+ _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
44155
44282
  ], select.prototype, "onStartSelection", null);
44156
44283
  __decorate([
44157
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)('ow:click')
44284
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)('ow:click')
44158
44285
  ], select.prototype, "onOutsideClick", null);
44159
44286
  __decorate([
44160
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
44287
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44161
44288
  ':beforeCommandCut'
44162
44289
  ])
44163
44290
  ], select.prototype, "beforeCommandCut", null);
44164
44291
  __decorate([
44165
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
44292
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44166
44293
  ':beforeCommandSelectall'
44167
44294
  ])
44168
44295
  ], select.prototype, "beforeCommandSelectAll", null);
44169
44296
  __decorate([
44170
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
44297
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44298
+ ':click'
44299
+ ])
44300
+ ], select.prototype, "onClickRightOfNestedListItem", null);
44301
+ __decorate([
44302
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44303
+ ':click'
44304
+ ])
44305
+ ], select.prototype, "onClickKeepPendingFormat", null);
44306
+ __decorate([
44307
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44171
44308
  ':click'
44172
44309
  ])
44173
44310
  ], select.prototype, "onTripleClickNormalizeSelection", null);
44174
44311
  __decorate([
44175
- (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)([
44312
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
44176
44313
  ':copy',
44177
44314
  ':cut'
44178
44315
  ])
44179
44316
  ], select.prototype, "onCopyNormalizeSelectionBound", null);
44180
- _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('select', select);
44317
+ _core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('select', select);
44181
44318
 
44182
44319
 
44183
44320
  /***/ }),