@aquera/nile-elements 2.0.16 → 2.0.17

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 (354) hide show
  1. package/README.md +3 -0
  2. package/dist/{index-f6944844.cjs.js → index-0c0c869d.cjs.js} +2 -2
  3. package/dist/{index-f6944844.cjs.js.map → index-0c0c869d.cjs.js.map} +1 -1
  4. package/dist/{index-403841c7.cjs.js → index-129ef6fb.cjs.js} +3 -3
  5. package/dist/{index-403841c7.cjs.js.map → index-129ef6fb.cjs.js.map} +1 -1
  6. package/dist/{index-1faa963c.esm.js → index-36f2a6b5.esm.js} +1 -1
  7. package/dist/index-4df50481.esm.js +1 -0
  8. package/dist/index-5d34cff1.esm.js +1 -0
  9. package/dist/index-7ae95edd.cjs.js +2 -0
  10. package/dist/{index-3ca67627.cjs.js.map → index-7ae95edd.cjs.js.map} +1 -1
  11. package/dist/index-7ca72b78.esm.js +1 -0
  12. package/dist/index-bbe23ad8.cjs.js +2 -0
  13. package/dist/index-bbe23ad8.cjs.js.map +1 -0
  14. package/dist/index-ccc6a799.cjs.js +5 -0
  15. package/dist/index-ccc6a799.cjs.js.map +1 -0
  16. package/dist/index.cjs.js +1 -1
  17. package/dist/index.esm.js +1 -1
  18. package/dist/index.js +122 -70
  19. package/dist/nile-auto-complete/index.cjs.js +1 -1
  20. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  21. package/dist/nile-auto-complete/portal-manager.cjs.js +1 -1
  22. package/dist/nile-auto-complete/portal-utils.cjs.js +1 -1
  23. package/dist/nile-code-editor/extensionSetup.cjs.js +2 -2
  24. package/dist/nile-code-editor/index.cjs.js +1 -1
  25. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  26. package/dist/nile-code-editor/theme.cjs.js +1 -1
  27. package/dist/nile-color-picker/index.cjs.js +1 -1
  28. package/dist/nile-color-picker/nile-color-picker.cjs.js +1 -1
  29. package/dist/nile-combobox/index.cjs.js +1 -1
  30. package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
  31. package/dist/nile-combobox/portal-manager.cjs.js +1 -1
  32. package/dist/nile-context-menu/index.cjs.js +1 -1
  33. package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
  34. package/dist/nile-context-submenu/index.cjs.js +1 -1
  35. package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
  36. package/dist/nile-detail/index.cjs.js +1 -1
  37. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  38. package/dist/nile-dropdown/index.cjs.js +1 -1
  39. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  40. package/dist/nile-dropdown/portal-manager.cjs.js +1 -1
  41. package/dist/nile-file-upload/index.cjs.js +1 -1
  42. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  43. package/dist/nile-file-upload/nile-file-upload.template.cjs.js +1 -1
  44. package/dist/nile-floating-panel/index.cjs.js +1 -1
  45. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  46. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  47. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  48. package/dist/nile-markdown-editor/index.cjs.js +1 -1
  49. package/dist/nile-markdown-editor/nile-markdown-editor.cjs.js +1 -1
  50. package/dist/nile-popover/index.cjs.js +1 -1
  51. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  52. package/dist/nile-popover/portal-manager.cjs.js +1 -1
  53. package/dist/nile-popup/index.cjs.js +1 -1
  54. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  55. package/dist/nile-segmented-progress-bar/index.cjs.js +1 -1
  56. package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.cjs.js +1 -1
  57. package/dist/nile-select/index.cjs.js +1 -1
  58. package/dist/nile-select/nile-select.cjs.js +1 -1
  59. package/dist/nile-select/portal-manager.cjs.js +1 -1
  60. package/dist/nile-side-bar-action/index.cjs.js +1 -1
  61. package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js +1 -1
  62. package/dist/nile-side-bar-action/portal-manager.cjs.js +1 -1
  63. package/dist/nile-tooltip/index.cjs.js +1 -1
  64. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  65. package/dist/nile-virtual-select/index.cjs.js +1 -1
  66. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  67. package/dist/nile-virtual-select/portal-manager.cjs.js +1 -1
  68. package/dist/nile-virtual-select/renderer.cjs.js +1 -1
  69. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js +1 -1
  70. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js.map +1 -1
  71. package/dist/nile-wysiwyg-editor/engine/commands.esm.js +1 -1
  72. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js +1 -1
  73. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js.map +1 -1
  74. package/dist/nile-wysiwyg-editor/engine/create-state.esm.js +1 -1
  75. package/dist/nile-wysiwyg-editor/engine/email-css.cjs.js +2 -0
  76. package/dist/nile-wysiwyg-editor/engine/email-css.cjs.js.map +1 -0
  77. package/dist/nile-wysiwyg-editor/engine/email-css.esm.js +1 -0
  78. package/dist/nile-wysiwyg-editor/engine/email-render.cjs.js +2 -0
  79. package/dist/nile-wysiwyg-editor/engine/email-render.cjs.js.map +1 -0
  80. package/dist/nile-wysiwyg-editor/engine/email-render.esm.js +1 -0
  81. package/dist/nile-wysiwyg-editor/engine/html-detect.cjs.js +2 -0
  82. package/dist/nile-wysiwyg-editor/engine/html-detect.cjs.js.map +1 -0
  83. package/dist/nile-wysiwyg-editor/engine/html-detect.esm.js +1 -0
  84. package/dist/nile-wysiwyg-editor/engine/index.cjs.js +1 -1
  85. package/dist/nile-wysiwyg-editor/engine/index.esm.js +1 -1
  86. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js +1 -1
  87. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js.map +1 -1
  88. package/dist/nile-wysiwyg-editor/engine/inputrules.esm.js +1 -1
  89. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js +1 -1
  90. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js.map +1 -1
  91. package/dist/nile-wysiwyg-editor/engine/keymap.esm.js +1 -1
  92. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js +1 -1
  93. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js.map +1 -1
  94. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.esm.js +1 -1
  95. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js +1 -1
  96. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js.map +1 -1
  97. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.esm.js +1 -1
  98. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js +1 -1
  99. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js.map +1 -1
  100. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.esm.js +1 -1
  101. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js +1 -1
  102. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js.map +1 -1
  103. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.esm.js +1 -1
  104. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js +1 -1
  105. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js.map +1 -1
  106. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.esm.js +1 -1
  107. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js +1 -1
  108. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js.map +1 -1
  109. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.esm.js +1 -1
  110. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js +1 -1
  111. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js.map +1 -1
  112. package/dist/nile-wysiwyg-editor/engine/plugins/image.esm.js +1 -1
  113. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js +1 -1
  114. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js.map +1 -1
  115. package/dist/nile-wysiwyg-editor/engine/plugins/link.esm.js +1 -1
  116. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js +1 -1
  117. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js.map +1 -1
  118. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.esm.js +1 -1
  119. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js +1 -1
  120. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js.map +1 -1
  121. package/dist/nile-wysiwyg-editor/engine/plugins/paste.esm.js +1 -1
  122. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js +1 -1
  123. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js.map +1 -1
  124. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.esm.js +1 -1
  125. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js +1 -1
  126. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js.map +1 -1
  127. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.esm.js +1 -1
  128. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js +1 -1
  129. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js.map +1 -1
  130. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.esm.js +1 -1
  131. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js +1 -1
  132. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js.map +1 -1
  133. package/dist/nile-wysiwyg-editor/engine/plugins/tables.esm.js +1 -1
  134. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js +2 -1
  135. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js.map +1 -1
  136. package/dist/nile-wysiwyg-editor/engine/sanitize.esm.js +1 -1
  137. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js +1 -1
  138. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js.map +1 -1
  139. package/dist/nile-wysiwyg-editor/engine/schema.esm.js +1 -1
  140. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js +1 -1
  141. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js.map +1 -1
  142. package/dist/nile-wysiwyg-editor/engine/selection-state.esm.js +1 -1
  143. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js +1 -1
  144. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js.map +1 -1
  145. package/dist/nile-wysiwyg-editor/engine/serializer.esm.js +1 -1
  146. package/dist/nile-wysiwyg-editor/index.cjs.js +1 -1
  147. package/dist/nile-wysiwyg-editor/index.esm.js +1 -1
  148. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +1 -1
  149. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js.map +1 -1
  150. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js +1 -1
  151. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js.map +1 -1
  152. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.esm.js +45 -4
  153. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +2 -2
  154. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +1 -1
  155. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +1 -1
  156. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js +1 -1
  157. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js.map +1 -1
  158. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.esm.js +2 -2
  159. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +1 -1
  160. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -1
  161. package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +5 -5
  162. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js +1 -1
  163. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js.map +1 -1
  164. package/dist/nile-wysiwyg-editor/ui/code-block-menu.esm.js +1 -1
  165. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +1 -1
  166. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -1
  167. package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +1 -1
  168. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js +1 -1
  169. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js.map +1 -1
  170. package/dist/nile-wysiwyg-editor/ui/embed-panel.esm.js +2 -2
  171. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js +1 -1
  172. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js.map +1 -1
  173. package/dist/nile-wysiwyg-editor/ui/emoji-picker.esm.js +1 -1
  174. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js +1 -1
  175. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js.map +1 -1
  176. package/dist/nile-wysiwyg-editor/ui/find-replace.esm.js +3 -3
  177. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +1 -1
  178. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -1
  179. package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +3 -3
  180. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js +1 -1
  181. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js.map +1 -1
  182. package/dist/nile-wysiwyg-editor/ui/image-panel.esm.js +1 -1
  183. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js +1 -1
  184. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js.map +1 -1
  185. package/dist/nile-wysiwyg-editor/ui/insert-menu.esm.js +1 -1
  186. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js +1 -1
  187. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js.map +1 -1
  188. package/dist/nile-wysiwyg-editor/ui/link-editor.esm.js +9 -9
  189. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js +1 -1
  190. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js.map +1 -1
  191. package/dist/nile-wysiwyg-editor/ui/markdown-panel.esm.js +1 -1
  192. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js +1 -1
  193. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js.map +1 -1
  194. package/dist/nile-wysiwyg-editor/ui/math-panel.esm.js +1 -1
  195. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js +1 -1
  196. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js.map +1 -1
  197. package/dist/nile-wysiwyg-editor/ui/shortcut-help.esm.js +1 -1
  198. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js +1 -1
  199. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js.map +1 -1
  200. package/dist/nile-wysiwyg-editor/ui/source-view.esm.js +4 -4
  201. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js +1 -1
  202. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js.map +1 -1
  203. package/dist/nile-wysiwyg-editor/ui/special-chars.esm.js +1 -1
  204. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js +1 -1
  205. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js.map +1 -1
  206. package/dist/nile-wysiwyg-editor/ui/suggest-list.esm.js +23 -12
  207. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js +1 -1
  208. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js.map +1 -1
  209. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.esm.js +7 -7
  210. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +1 -1
  211. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -1
  212. package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +1 -1
  213. package/dist/src/nile-wysiwyg-editor/engine/create-state.d.ts +5 -0
  214. package/dist/src/nile-wysiwyg-editor/engine/create-state.js +2 -0
  215. package/dist/src/nile-wysiwyg-editor/engine/create-state.js.map +1 -1
  216. package/dist/src/nile-wysiwyg-editor/engine/email-css.d.ts +14 -0
  217. package/dist/src/nile-wysiwyg-editor/engine/email-css.js +140 -0
  218. package/dist/src/nile-wysiwyg-editor/engine/email-css.js.map +1 -0
  219. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.d.ts +1 -0
  220. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.js +1045 -0
  221. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.js.map +1 -0
  222. package/dist/src/nile-wysiwyg-editor/engine/email-render.d.ts +11 -0
  223. package/dist/src/nile-wysiwyg-editor/engine/email-render.js +93 -0
  224. package/dist/src/nile-wysiwyg-editor/engine/email-render.js.map +1 -0
  225. package/dist/src/nile-wysiwyg-editor/engine/html-detect.d.ts +2 -0
  226. package/dist/src/nile-wysiwyg-editor/engine/html-detect.js +24 -0
  227. package/dist/src/nile-wysiwyg-editor/engine/html-detect.js.map +1 -0
  228. package/dist/src/nile-wysiwyg-editor/engine/index.d.ts +4 -1
  229. package/dist/src/nile-wysiwyg-editor/engine/index.js +3 -1
  230. package/dist/src/nile-wysiwyg-editor/engine/index.js.map +1 -1
  231. package/dist/src/nile-wysiwyg-editor/engine/inputrules.d.ts +0 -5
  232. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js +19 -0
  233. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js.map +1 -1
  234. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js +3 -2
  235. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js.map +1 -1
  236. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.d.ts +4 -0
  237. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js +56 -1
  238. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js.map +1 -1
  239. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.d.ts +5 -0
  240. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js +27 -6
  241. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js.map +1 -1
  242. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js +30 -7
  243. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js.map +1 -1
  244. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js +46 -0
  245. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js.map +1 -1
  246. package/dist/src/nile-wysiwyg-editor/engine/sanitize.d.ts +9 -1
  247. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js +730 -7
  248. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js.map +1 -1
  249. package/dist/src/nile-wysiwyg-editor/engine/schema.d.ts +3 -0
  250. package/dist/src/nile-wysiwyg-editor/engine/schema.js +215 -34
  251. package/dist/src/nile-wysiwyg-editor/engine/schema.js.map +1 -1
  252. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js +3 -1
  253. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js.map +1 -1
  254. package/dist/src/nile-wysiwyg-editor/engine/serializer.d.ts +12 -4
  255. package/dist/src/nile-wysiwyg-editor/engine/serializer.js +18 -8
  256. package/dist/src/nile-wysiwyg-editor/engine/serializer.js.map +1 -1
  257. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.d.ts +1 -0
  258. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.js +287 -0
  259. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.js.map +1 -0
  260. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js +45 -4
  261. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js.map +1 -1
  262. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.d.ts +23 -0
  263. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js +113 -15
  264. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js.map +1 -1
  265. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js +213 -0
  266. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js.map +1 -1
  267. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js +2 -2
  268. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js.map +1 -1
  269. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js +1 -1
  270. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js.map +1 -1
  271. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js +1 -1
  272. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js.map +1 -1
  273. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js +1 -1
  274. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js.map +1 -1
  275. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js +1 -1
  276. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js.map +1 -1
  277. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js +1 -1
  278. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js.map +1 -1
  279. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js +1 -1
  280. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js.map +1 -1
  281. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js +1 -1
  282. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js.map +1 -1
  283. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js +1 -1
  284. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js.map +1 -1
  285. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js +2 -2
  286. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js.map +1 -1
  287. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js +1 -1
  288. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js.map +1 -1
  289. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js +1 -1
  290. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js.map +1 -1
  291. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js +1 -1
  292. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js.map +1 -1
  293. package/dist/src/nile-wysiwyg-editor/ui/source-view.js +2 -2
  294. package/dist/src/nile-wysiwyg-editor/ui/source-view.js.map +1 -1
  295. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js +1 -1
  296. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js.map +1 -1
  297. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js +14 -3
  298. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js.map +1 -1
  299. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js +2 -2
  300. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js.map +1 -1
  301. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js +1 -1
  302. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js.map +1 -1
  303. package/dist/src/version.js +1 -1
  304. package/dist/src/version.js.map +1 -1
  305. package/dist/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +1 -1
  307. package/src/nile-wysiwyg-editor/engine/create-state.ts +7 -0
  308. package/src/nile-wysiwyg-editor/engine/email-css.ts +136 -0
  309. package/src/nile-wysiwyg-editor/engine/email-fidelity.test.ts +1347 -0
  310. package/src/nile-wysiwyg-editor/engine/email-render.ts +99 -0
  311. package/src/nile-wysiwyg-editor/engine/html-detect.ts +26 -0
  312. package/src/nile-wysiwyg-editor/engine/index.ts +10 -1
  313. package/src/nile-wysiwyg-editor/engine/inputrules.ts +18 -1
  314. package/src/nile-wysiwyg-editor/engine/plugins/image-view.ts +3 -2
  315. package/src/nile-wysiwyg-editor/engine/plugins/link.ts +58 -2
  316. package/src/nile-wysiwyg-editor/engine/plugins/paste.ts +31 -8
  317. package/src/nile-wysiwyg-editor/engine/plugins/tables.ts +29 -7
  318. package/src/nile-wysiwyg-editor/engine/pm.test.ts +73 -0
  319. package/src/nile-wysiwyg-editor/engine/sanitize.ts +729 -7
  320. package/src/nile-wysiwyg-editor/engine/schema.ts +206 -33
  321. package/src/nile-wysiwyg-editor/engine/selection-state.ts +3 -1
  322. package/src/nile-wysiwyg-editor/engine/serializer.ts +30 -8
  323. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.ts +357 -0
  324. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.ts +45 -4
  325. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.ts +258 -0
  326. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.ts +119 -12
  327. package/src/nile-wysiwyg-editor/ui/bookmark-panel.ts +2 -2
  328. package/src/nile-wysiwyg-editor/ui/bubble-menu.ts +1 -1
  329. package/src/nile-wysiwyg-editor/ui/embed-menu.ts +1 -1
  330. package/src/nile-wysiwyg-editor/ui/embed-panel.ts +1 -1
  331. package/src/nile-wysiwyg-editor/ui/emoji-picker.ts +1 -1
  332. package/src/nile-wysiwyg-editor/ui/find-replace.ts +1 -1
  333. package/src/nile-wysiwyg-editor/ui/image-menu.ts +1 -1
  334. package/src/nile-wysiwyg-editor/ui/image-panel.ts +1 -1
  335. package/src/nile-wysiwyg-editor/ui/insert-menu.ts +1 -1
  336. package/src/nile-wysiwyg-editor/ui/link-editor.ts +2 -2
  337. package/src/nile-wysiwyg-editor/ui/markdown-panel.ts +1 -1
  338. package/src/nile-wysiwyg-editor/ui/math-panel.ts +1 -1
  339. package/src/nile-wysiwyg-editor/ui/shortcut-help.ts +1 -1
  340. package/src/nile-wysiwyg-editor/ui/source-view.ts +2 -2
  341. package/src/nile-wysiwyg-editor/ui/special-chars.ts +1 -1
  342. package/src/nile-wysiwyg-editor/ui/suggest-list.ts +14 -3
  343. package/src/nile-wysiwyg-editor/ui/table-grid-picker.ts +2 -2
  344. package/src/nile-wysiwyg-editor/ui/table-menu.ts +1 -1
  345. package/vscode-html-custom-data.json +15 -1
  346. package/web-test-runner.config.mjs +4 -0
  347. package/dist/index-3ca67627.cjs.js +0 -2
  348. package/dist/index-6f3fa4ab.esm.js +0 -1
  349. package/dist/index-7b1c9857.esm.js +0 -1
  350. package/dist/index-89c520e9.cjs.js +0 -5
  351. package/dist/index-89c520e9.cjs.js.map +0 -1
  352. package/dist/index-ba47645d.esm.js +0 -1
  353. package/dist/index-c3210a9c.cjs.js +0 -2
  354. package/dist/index-c3210a9c.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"link.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/link.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { isSafeUrl } from '../sanitize';\n\nconst URL_PATTERN = /^https?:\\/\\/\\S+$/i;\n\nexport interface LinkPluginOptions {\n /** Called with the href when a link is Mod/Ctrl-clicked. */\n onOpenLink?: (href: string) => void;\n}\n\n/**\n * Link behaviors that belong to the document, not the chrome:\n * - Mod/Ctrl-click opens the link.\n * - Pasting a bare URL over a text selection turns the selection into a link.\n */\nexport function linkPlugin(options: LinkPluginOptions = {}): Plugin {\n return new Plugin({\n props: {\n handleClick(view, _pos, event) {\n if (!(event.metaKey || event.ctrlKey)) return false;\n const target = (event.target as HTMLElement | null)?.closest?.('a[href]');\n if (!target) return false;\n const href = target.getAttribute('href')!;\n if (!isSafeUrl(href)) return false;\n if (options.onOpenLink) options.onOpenLink(href);\n else window.open(href, '_blank', 'noopener,noreferrer');\n return true;\n },\n\n handlePaste(view, event) {\n const { state } = view;\n const { empty, from, to } = state.selection;\n if (empty) return false;\n const text = event.clipboardData?.getData('text/plain')?.trim();\n if (!text || !URL_PATTERN.test(text) || !isSafeUrl(text)) return false;\n const linkMark = state.schema.marks.link.create({ href: text });\n view.dispatch(state.tr.addMark(from, to, linkMark));\n return true;\n },\n },\n });\n}\n"],"names":["linkPlugin","options","arguments","length","undefined","Plugin","props","handleClick","view","_pos","event","_s$target","_s$target$closest","metaKey","ctrlKey","target","closest","href","getAttribute","isSafeUrl","onOpenLink","window","open","handlePaste","_n$clipboardData","state","empty","selection","from","to","text","clipboardData","getData","trim","URL_PATTERN","test","linkMark","schema","marks","link","create","dispatch","tr","addMark"],"mappings":"4IAegB,QAAAA,CAAAA,CAAAA,CAAAA,CACd,IADyBC,CAAAA,CAA6B,CAAAC,SAAA,CAAAC,MAAA,IAAAD,SAAA,MAAAE,SAAA,CAAAF,SAAA,IAAA,EACtD,CAAA,MAAO,IAAIG,CAAAA,CAAO,CAAA,CAChBC,KAAO,CAAA,CACLC,WAAAA,SAAA,CAAAA,WAAAA,CAAYC,CAAMC,CAAAA,CAAAA,CAAMC,CACtB,CAAA,KAAAC,SAAA,CAAAC,iBAAA,CAAA,GAAA,CAAMF,CAAMG,CAAAA,OAAAA,EAAAA,CAAWH,CAAMI,CAAAA,OAAAA,CAAU,OAAO,CAC9C,CAAA,GAAMC,CAAAA,CAAUL,EAAAA,SAAAA,CAAAA,CAAAA,CAAMK,MAA+BC,UAAAA,SAAAA,YAAAA,iBAAAA,CAArCN,SAAAA,CAAqCM,OAAAA,UAAAA,iBAAAA,iBAArCN,iBAAAA,CAAAA,IAAAA,CAAAA,SAAAA,CAA+C,SAC/D,CAAA,CAAA,GAAA,CAAKK,CAAQ,CAAA,MAAA,CAAO,CACpB,CAAA,GAAME,CAAAA,CAAOF,CAAAA,CAAAA,CAAOG,aAAa,MACjC,CAAA,CAAA,MAAA,CAAA,CAAKC,CAAUF,CAAAA,CAAAA,CAAAA,GACXhB,CAAQmB,CAAAA,UAAAA,CAAYnB,CAAQmB,CAAAA,UAAAA,CAAWH,CACtCI,CAAAA,CAAAA,MAAAA,CAAOC,IAAKL,CAAAA,CAAAA,CAAM,QAAU,CAAA,qBAAA,CAAA,CAAA,CAC1B,EACR,EAED,CAAAM,WAAAA,SAAA,CAAAA,WAAAA,CAAYf,CAAAA,CAAME,CAChB,CAAA,KAAAc,gBAAA,CAAA,GAAQC,CAAAA,CAAAA,CAAUjB,CACZkB,CADAD,KAAEA,CAAAA,YAAAA,CACoBA,CAAME,CAAAA,SAAAA,CAA1BD,CAAKE,CAAAA,YAAAA,CAAPF,KAAAA,CAASE,CAAIC,CAAAA,YAAAA,CAAND,IAAAA,CAAQC,eAAFA,EAAAA,CACnB,GAAIH,CAAAA,CAAO,MAAO,CAAA,CAAA,CAClB,GAAMI,CAAAA,CAAAA,EAAAA,gBAAAA,CAAOpB,CAAMqB,CAAAA,aAAAA,UAAAA,gBAAAA,YAAAA,gBAAAA,CAANrB,gBAAAA,CAAqBsB,OAAQ,CAAA,YAAA,CAAA,UAAAR,gBAAA,iBAA7Bd,gBAAAA,CAA4CuB,IACzD,CAAA,CAAA,CAAA,GAAA,CAAKH,IAASI,CAAYC,CAAAA,IAAAA,CAAKL,CAAUX,CAAAA,EAAAA,CAAAA,CAAAA,CAAUW,CAAO,CAAA,CAAA,MAAA,CAAO,CACjE,CAAA,GAAMM,CAAAA,CAAWX,CAAAA,CAAAA,CAAMY,MAAOC,CAAAA,KAAAA,CAAMC,IAAKC,CAAAA,MAAAA,CAAO,CAAEvB,IAAAA,CAAMa,CAExD,CAAA,CAAA,CAAA,MADAtB,CAAAA,CAAKiC,CAAAA,QAAAA,CAAShB,CAAMiB,CAAAA,EAAAA,CAAGC,OAAQf,CAAAA,CAAAA,CAAMC,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAClC,CACR,EAAA,CAAA,CAAA,CAGP,kLAtCMF,CAAc,CAAA,mBAAA"}
1
+ {"version":3,"file":"link.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/link.ts"],"sourcesContent":["import { Plugin, PluginKey, EditorState } from 'prosemirror-state';\nimport { Mark } from 'prosemirror-model';\nimport { isSafeUrl } from '../sanitize';\n\nconst URL_PATTERN = /^https?:\\/\\/\\S+$/i;\n\nexport interface LinkPluginOptions {\n /** Called with the href when a link is Mod/Ctrl-clicked. */\n onOpenLink?: (href: string) => void;\n}\n\n/** Where retyped link text continues: the caret position and the link it keeps. */\ninterface RetypeState {\n pos: number;\n mark: Mark;\n}\n\nconst retypeKey = new PluginKey<RetypeState | null>('nile-wysiwyg-link-retype');\n\n/** The link mark covering every text node in [from, to), or null. */\nfunction linkCovering(state: EditorState, from: number, to: number): Mark | null {\n const type = state.schema.marks.link;\n let mark: Mark | null = null;\n let covered = true;\n state.doc.nodesBetween(from, to, node => {\n if (!covered || !node.isText) return;\n const found = type.isInSet(node.marks);\n if (!found || (mark && !found.eq(mark))) covered = false;\n else mark = found;\n });\n return covered ? mark : null;\n}\n\n/**\n * Link behaviors that belong to the document, not the chrome:\n * - Mod/Ctrl-click opens the link.\n * - Pasting a bare URL over a text selection turns the selection into a link.\n * - Typing over a selection that is entirely one link keeps the link, for the\n * replaced text and for the characters typed straight after it (the link mark\n * is non-inclusive, so without this the new label drops out of the link — an\n * email button renamed by retyping lost its href).\n */\nexport function linkPlugin(options: LinkPluginOptions = {}): Plugin {\n return new Plugin<RetypeState | null>({\n key: retypeKey,\n state: {\n init: () => null,\n apply(tr, prev) {\n const meta = tr.getMeta(retypeKey) as RetypeState | null | undefined;\n if (meta !== undefined) return meta;\n if (!prev) return null;\n // Any caret move, or an edit elsewhere, ends the retype run.\n if (!tr.docChanged) return tr.selectionSet ? null : prev;\n const pos = tr.mapping.map(prev.pos);\n return tr.selection.empty && tr.selection.from === pos ? { ...prev, pos } : null;\n },\n },\n props: {\n handleTextInput(view, from, to, text) {\n const { state } = view;\n let mark: Mark | null = null;\n if (from < to) mark = linkCovering(state, from, to);\n else {\n const run = retypeKey.getState(state);\n if (run && run.pos === from) mark = run.mark;\n }\n if (!mark) return false;\n const end = from + text.length;\n const tr = state.tr.insertText(text, from, to).addMark(from, end, mark);\n tr.setMeta(retypeKey, { pos: end, mark });\n view.dispatch(tr);\n return true;\n },\n\n handleClick(view, _pos, event) {\n if (!(event.metaKey || event.ctrlKey)) return false;\n const target = (event.target as HTMLElement | null)?.closest?.('a[href]');\n if (!target) return false;\n const href = target.getAttribute('href')!;\n if (!isSafeUrl(href)) return false;\n if (options.onOpenLink) options.onOpenLink(href);\n else window.open(href, '_blank', 'noopener,noreferrer');\n return true;\n },\n\n handlePaste(view, event) {\n const { state } = view;\n const { empty, from, to } = state.selection;\n if (empty) return false;\n const text = event.clipboardData?.getData('text/plain')?.trim();\n if (!text || !URL_PATTERN.test(text) || !isSafeUrl(text)) return false;\n const linkMark = state.schema.marks.link.create({ href: text });\n view.dispatch(state.tr.addMark(from, to, linkMark));\n return true;\n },\n },\n });\n}\n"],"names":["linkPlugin","options","arguments","length","undefined","Plugin","key","retypeKey","state","init","apply","tr","prev","meta","getMeta","docChanged","selectionSet","pos","mapping","map","selection","empty","from","_objectSpread","props","handleTextInput","view","to","text","mark","type","schema","marks","link","covered","doc","nodesBetween","node","isText","found","isInSet","eq","linkCovering","run","getState","end","insertText","addMark","setMeta","dispatch","handleClick","_pos","event","metaKey","ctrlKey","target","closest","href","getAttribute","isSafeUrl","onOpenLink","window","open","handlePaste","_t$clipboardData","clipboardData","getData","trim","URL_PATTERN","test","linkMark","create","PluginKey"],"mappings":"mlDA0CgB,QAAAA,CAAAA,CAAAA,CAAAA,CACd,IADyBC,CAAAA,CAA6B,CAAAC,SAAA,CAAAC,MAAA,IAAAD,SAAA,MAAAE,SAAA,CAAAF,SAAA,IAAA,EACtD,CAAA,MAAO,IAAIG,CAAAA,CAAAA,CAA2B,CACpCC,GAAKC,CAAAA,CAAAA,CACLC,KAAO,CAAA,CACLC,KAAM,QAANA,CAAAA,aAAY,KAAA,GACZC,KAAAA,SAAA,CAAAA,KAAAA,CAAMC,EAAIC,CACR,CAAA,CAAA,GAAMC,CAAAA,CAAOF,CAAAA,CAAAA,CAAGG,OAAQP,CAAAA,CAAAA,CAAAA,CACxB,GAAaH,IAAAA,EAAAA,GAATS,EAAoB,MAAOA,CAAAA,CAAAA,CAC/B,GAAKD,CAAAA,CAAAA,CAAM,MAAO,KAAA,CAElB,GAAKD,CAAAA,CAAAA,CAAGI,WAAY,MAAOJ,CAAAA,CAAAA,CAAGK,YAAe,CAAA,IAAA,CAAOJ,CACpD,CAAA,GAAMK,CAAAA,CAAMN,CAAAA,CAAAA,CAAGO,QAAQC,GAAIP,CAAAA,CAAAA,CAAKK,GAChC,CAAA,CAAA,MAAON,CAAAA,EAAGS,SAAUC,CAAAA,KAAAA,EAASV,CAAGS,CAAAA,SAAAA,CAAUE,OAASL,CAAM,CAAAM,aAAA,CAAAA,aAAA,IAAKX,CAAMK,MAAAA,GAAAA,CAAAA,CAAAA,GAAQ,IAC7E,EAAA,CAAA,CAEHO,KAAO,CAAA,CACLC,eAAAA,SAAA,CAAAA,eAAAA,CAAgBC,CAAAA,CAAMJ,CAAMK,CAAAA,CAAAA,CAAIC,CAC9B,CAAA,CAAA,GAAQpB,CAAAA,CAAAA,CAAUkB,EAAZlB,KAAEA,CACR,GAAIqB,CAAAA,CAAAA,CAAoB,IACxB,CAAA,GAAIP,CAAOK,CAAAA,CAAAA,CAAIE,CAzCvB,CAAA,SAAsBrB,EAAoBc,CAAcK,CAAAA,CAAAA,CAAAA,CACtD,GAAMG,CAAAA,CAAAA,CAAOtB,EAAMuB,MAAOC,CAAAA,KAAAA,CAAMC,IAChC,CAAA,GAAIJ,CAAAA,EAAoB,IACpBK,CAAAA,CAAAA,CAAAA,CAAU,CAOd,CAAA,MANA1B,CAAAA,CAAM2B,CAAAA,GAAAA,CAAIC,YAAad,CAAAA,CAAAA,CAAMK,EAAIU,SAAAA,CAC/B,CAAA,CAAA,GAAA,CAAKH,CAAYG,EAAAA,CAAAA,CAAAA,CAAKC,MAAQ,CAAA,OAC9B,GAAMC,CAAAA,CAAAA,CAAQT,EAAKU,OAAQH,CAAAA,CAAAA,CAAKL,KAC3BO,CAAAA,CAAAA,CAAAA,CAAAA,EAAUV,CAASU,EAAAA,CAAAA,CAAAA,CAAME,EAAGZ,CAAAA,CAAAA,CAAAA,CAAQK,GAAU,CAC9CL,CAAAA,CAAAA,CAAOU,CAAK,EAAA,CAAA,CAEZL,EAAUL,CAAO,CAAA,IAC1B,EA8B8Ba,CAAalC,EAAOc,CAAMK,CAAAA,CAAAA,CAAAA,CAAAA,IAC3C,CACH,GAAMgB,CAAAA,EAAMpC,CAAAA,CAAAA,CAAUqC,QAASpC,CAAAA,CAAAA,CAAAA,CAC3BmC,IAAOA,EAAI1B,CAAAA,GAAAA,GAAQK,CAAMO,GAAAA,CAAAA,CAAOc,EAAId,CAAAA,IAAAA,CACzC,EACD,GAAA,CAAKA,EAAM,MAAO,CAAA,CAAA,CAClB,GAAMgB,CAAAA,CAAAA,CAAMvB,CAAOM,CAAAA,CAAAA,CAAKzB,MAClBQ,CAAAA,CAAAA,CAAKH,EAAMG,EAAGmC,CAAAA,UAAAA,CAAWlB,CAAMN,CAAAA,CAAAA,CAAMK,GAAIoB,OAAQzB,CAAAA,CAAAA,CAAMuB,CAAKhB,CAAAA,CAAAA,CAAAA,CAGlE,MAFAlB,CAAAA,CAAGqC,CAAAA,OAAAA,CAAQzC,CAAW,CAAA,CAAEU,GAAK4B,CAAAA,CAAAA,CAAKhB,IAClCH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuB,SAAStC,CACP,CAAA,CAAA,CAAA,CACR,EAED,CAAAuC,WAAAA,SAAA,CAAAA,WAAAA,CAAYxB,CAAAA,CAAMyB,CAAMC,CAAAA,CAAAA,CAAAA,KAAAA,SAAAA,CAAAA,iBAAAA,CACtB,IAAMA,CAAMC,CAAAA,OAAAA,EAAAA,CAAWD,CAAME,CAAAA,OAAAA,CAAU,MAAO,CAAA,CAAA,CAC9C,GAAMC,CAAAA,CAAAA,EAAAA,SAAAA,CAAUH,EAAMG,MAA+BC,UAAAA,SAAAA,YAAAA,iBAAAA,CAArCJ,SAAAA,CAAqCI,OAAAA,UAAAA,iBAAAA,iBAArCJ,iBAAAA,CAAAA,IAAAA,CAAAA,SAAAA,CAA+C,SAC/D,CAAA,CAAA,GAAA,CAAKG,EAAQ,MAAO,CAAA,CAAA,CACpB,GAAME,CAAAA,CAAAA,CAAOF,EAAOG,YAAa,CAAA,MAAA,CAAA,CACjC,MAAKC,CAAAA,CAAAA,CAAAA,CAAUF,CACXxD,CAAAA,GAAAA,CAAAA,CAAQ2D,UAAY3D,CAAAA,CAAAA,CAAQ2D,WAAWH,CACtCI,CAAAA,CAAAA,MAAAA,CAAOC,IAAKL,CAAAA,CAAAA,CAAM,QAAU,CAAA,qBAAA,CAAA,CAAA,CAC1B,CACR,CAAA,EAAA,CAEDM,WAAAA,SAAA,CAAAA,WAAAA,CAAYrC,CAAAA,CAAM0B,CAChB,CAAA,KAAAY,gBAAA,CAAA,GAAQxD,CAAAA,CAAAA,CAAUkB,CACZL,CADAb,KAAEA,CAAAA,YAAAA,CACoBA,EAAMY,SAClC,CADQC,eAAFA,KAAAA,CAASC,CAAAA,CAAAA,YAAAA,CAAFA,IAAEA,CAAMK,CAAAA,CAAAA,YAAAA,CAAFA,EAAEA,CACrB,GAAIN,CAAO,CAAA,MAAA,CAAO,EAClB,GAAMO,CAAAA,CAAAA,EAAAA,gBAAAA,CAAOwB,CAAMa,CAAAA,aAAAA,UAAAA,gBAAAA,YAAAA,gBAAAA,CAANb,gBAAAA,CAAqBc,OAAQ,CAAA,YAAA,CAAA,UAAAF,gBAAA,iBAA7BZ,gBAAAA,CAA4Ce,IACzD,CAAA,CAAA,CAAA,GAAA,CAAKvC,IAASwC,CAAYC,CAAAA,IAAAA,CAAKzC,CAAU+B,CAAAA,EAAAA,CAAAA,CAAAA,CAAU/B,CAAO,CAAA,CAAA,MAAA,CAAO,CACjE,CAAA,GAAM0C,CAAAA,EAAW9D,CAAMuB,CAAAA,MAAAA,CAAOC,KAAMC,CAAAA,IAAAA,CAAKsC,MAAO,CAAA,CAAEd,IAAM7B,CAAAA,CAAAA,CAAAA,CAAAA,CAExD,MADAF,CAAAA,CAAKuB,CAAAA,QAAAA,CAASzC,CAAMG,CAAAA,EAAAA,CAAGoC,QAAQzB,CAAMK,CAAAA,CAAAA,CAAI2C,CAClC,CAAA,CAAA,CAAA,CAAA,CACR,KAGP,2PA7FMF,CAAAA,CAAc,mBAad7D,CAAAA,CAAAA,CAAY,GAAIiE,CAAAA,CAAAA,CAA8B"}
@@ -1 +1 @@
1
- import{b as e}from"../../../index-6f3fa4ab.esm.js";import{i as r}from"../sanitize.esm.js";import"./embeds.esm.js";const t=/^https?:\/\/\S+$/i;function n(n={}){return new e({props:{handleClick(e,t,s){if(!s.metaKey&&!s.ctrlKey)return!1;const o=s.target?.closest?.("a[href]");if(!o)return!1;const i=o.getAttribute("href");return!!r(i)&&(n.onOpenLink?n.onOpenLink(i):window.open(i,"_blank","noopener,noreferrer"),!0)},handlePaste(e,n){const{state:s}=e,{empty:o,from:i,to:f}=s.selection;if(o)return!1;const a=n.clipboardData?.getData("text/plain")?.trim();if(!a||!t.test(a)||!r(a))return!1;const m=s.schema.marks.link.create({href:a});return e.dispatch(s.tr.addMark(i,f,m)),!0}}})}export{n as l};
1
+ import{P as n,a as t}from"../../../index-7ca72b78.esm.js";import{i as e}from"../sanitize.esm.js";import"../../../index-5d34cff1.esm.js";import"./embeds.esm.js";import"../email-css.esm.js";const r=/^https?:\/\/\S+$/i,s=new n("nile-wysiwyg-link-retype");function i(n={}){return new t({key:s,state:{init:()=>null,apply(n,t){const e=n.getMeta(s);if(void 0!==e)return e;if(!t)return null;if(!n.docChanged)return n.selectionSet?null:t;const r=n.mapping.map(t.pos);return n.selection.empty&&n.selection.from===r?{...t,pos:r}:null}},props:{handleTextInput(n,t,e,r){const{state:i}=n;let o=null;if(t<e)o=function(n,t,e){const r=n.schema.marks.link;let s=null,i=!0;return n.doc.nodesBetween(t,e,(n=>{if(!i||!n.isText)return;const t=r.isInSet(n.marks);!t||s&&!t.eq(s)?i=!1:s=t})),i?s:null}(i,t,e);else{const n=s.getState(i);n&&n.pos===t&&(o=n.mark)}if(!o)return!1;const l=t+r.length,u=i.tr.insertText(r,t,e).addMark(t,l,o);return u.setMeta(s,{pos:l,mark:o}),n.dispatch(u),!0},handleClick(t,r,s){if(!s.metaKey&&!s.ctrlKey)return!1;const i=s.target?.closest?.("a[href]");if(!i)return!1;const o=i.getAttribute("href");return!!e(o)&&(n.onOpenLink?n.onOpenLink(o):window.open(o,"_blank","noopener,noreferrer"),!0)},handlePaste(n,t){const{state:s}=n,{empty:i,from:o,to:l}=s.selection;if(i)return!1;const u=t.clipboardData?.getData("text/plain")?.trim();if(!u||!r.test(u)||!e(u))return!1;const a=s.schema.marks.link.create({href:u});return n.dispatch(s.tr.addMark(o,l,a)),!0}}})}export{i as l};
@@ -1,2 +1,2 @@
1
- System.register(["../../../index-89c520e9.cjs.js","../serializer.cjs.js","../sanitize.cjs.js","./embeds.cjs.js"],function(_export,_context){"use strict";var r,n;function s(r){return n(r).replace(/\n/g,"").length;}function t(n){return new r({filterTransaction:function filterTransaction(r,t){if(!r.docChanged)return!0;var i=n();if(!i||i<=0)return!0;var e=s(r.doc);return e<=i||e<s(t.doc);}});}_export("m",t);return{setters:[function(_index00bCjsJs){r=_index00bCjsJs.b;},function(_serializerCjsJs){n=_serializerCjsJs.d;},function(_sanitizeCjsJs){},function(_embedsCjsJs){}],execute:function execute(){}};});
1
+ System.register(["../../../index-bbe23ad8.cjs.js","../serializer.cjs.js","../../../index-ccc6a799.cjs.js","../sanitize.cjs.js","./embeds.cjs.js","../email-css.cjs.js","../email-render.cjs.js"],function(_export,_context){"use strict";var r,s;function i(r){return s(r).replace(/\n/g,"").length;}function t(s){return new r({filterTransaction:function filterTransaction(r,t){if(!r.docChanged)return!0;var e=s();if(!e||e<=0)return!0;var n=i(r.doc);return n<=e||n<i(t.doc);}});}_export("m",t);return{setters:[function(_index00aCjsJs){r=_index00aCjsJs.a;},function(_serializerCjsJs){s=_serializerCjsJs.d;},function(_index00bCjsJs){},function(_sanitizeCjsJs){},function(_embedsCjsJs){},function(_emailCssCjsJs){},function(_emailRenderCjsJs){}],execute:function execute(){}};});
2
2
  //# sourceMappingURL=max-length.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"max-length.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/max-length.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { docToText } from '../serializer';\n\nfunction charCount(doc: import('prosemirror-model').Node): number {\n return docToText(doc).replace(/\\n/g, '').length;\n}\n\n/**\n * Enforces a character limit by rejecting transactions that grow the\n * document past it. Shrinking edits are always allowed, even while over the\n * limit (e.g. after the limit was lowered), so users can recover.\n */\nexport function maxLengthPlugin(getMaxLength: () => number): Plugin {\n return new Plugin({\n filterTransaction(tr, state) {\n if (!tr.docChanged) return true;\n const max = getMaxLength();\n if (!max || max <= 0) return true;\n const after = charCount(tr.doc);\n if (after <= max) return true;\n return after < charCount(state.doc);\n },\n });\n}\n"],"names":["charCount","doc","docToText","replace","length","maxLengthPlugin","getMaxLength","Plugin","filterTransaction","tr","state","docChanged","max","after"],"mappings":"iKAGA,QAASA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CACjB,MAAOC,CAAAA,CAAAA,CAAUD,CAAKE,CAAAA,CAAAA,OAAAA,CAAQ,MAAO,EAAIC,CAAAA,CAAAA,MAC3C,EAOM,QAAUC,CAAAA,CAAgBC,CAAAA,CAAAA,CAAAA,CAC9B,MAAO,IAAIC,CAAAA,CAAO,CAAA,CAChBC,iBAAAA,SAAA,CAAAA,iBAAAA,CAAkBC,CAAIC,CAAAA,CAAAA,CAAAA,CACpB,IAAKD,CAAGE,CAAAA,UAAAA,CAAY,MAAO,CAAA,CAAA,CAC3B,GAAMC,CAAAA,CAAAA,CAAMN,IACZ,GAAKM,CAAAA,CAAAA,EAAOA,CAAO,EAAA,CAAA,CAAG,MAAO,CAAA,CAAA,CAC7B,GAAMC,CAAAA,CAAQb,CAAAA,CAAAA,CAAUS,CAAGR,CAAAA,GAAAA,CAAAA,CAC3B,MAAIY,CAAAA,CAAAA,EAASD,CACNC,EAAAA,CAAAA,CAAQb,CAAUU,CAAAA,CAAAA,CAAMT,GAChC,CAAA,EAAA,CAAA,CAEL"}
1
+ {"version":3,"file":"max-length.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/max-length.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { docToText } from '../serializer';\n\nfunction charCount(doc: import('prosemirror-model').Node): number {\n return docToText(doc).replace(/\\n/g, '').length;\n}\n\n/**\n * Enforces a character limit by rejecting transactions that grow the\n * document past it. Shrinking edits are always allowed, even while over the\n * limit (e.g. after the limit was lowered), so users can recover.\n */\nexport function maxLengthPlugin(getMaxLength: () => number): Plugin {\n return new Plugin({\n filterTransaction(tr, state) {\n if (!tr.docChanged) return true;\n const max = getMaxLength();\n if (!max || max <= 0) return true;\n const after = charCount(tr.doc);\n if (after <= max) return true;\n return after < charCount(state.doc);\n },\n });\n}\n"],"names":["charCount","doc","docToText","replace","length","maxLengthPlugin","getMaxLength","Plugin","filterTransaction","tr","state","docChanged","max","after"],"mappings":"iPAGA,QAASA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CACjB,MAAOC,CAAAA,CAAAA,CAAUD,GAAKE,OAAQ,CAAA,KAAA,CAAO,EAAIC,CAAAA,CAAAA,MAC3C,EAOM,QAAUC,CAAAA,CAAgBC,CAAAA,CAAAA,CAAAA,CAC9B,MAAO,IAAIC,CAAAA,CAAO,CAAA,CAChBC,iBAAAA,SAAA,CAAAA,iBAAAA,CAAkBC,EAAIC,CACpB,CAAA,CAAA,GAAA,CAAKD,CAAGE,CAAAA,UAAAA,CAAY,MAAO,CAAA,CAAA,CAC3B,GAAMC,CAAAA,CAAAA,CAAMN,CACZ,CAAA,CAAA,CAAA,GAAA,CAAKM,CAAOA,EAAAA,CAAAA,EAAO,CAAG,CAAA,MAAA,CAAO,CAC7B,CAAA,GAAMC,CAAAA,CAAQb,CAAAA,CAAAA,CAAUS,CAAGR,CAAAA,GAAAA,CAAAA,CAC3B,MAAIY,CAAAA,CAAAA,EAASD,CACNC,EAAAA,CAAAA,CAAQb,CAAUU,CAAAA,CAAAA,CAAMT,GAChC,CAAA,EAAA,CAAA,CAEL"}
@@ -1 +1 @@
1
- import{b as r}from"../../../index-6f3fa4ab.esm.js";import{d as e}from"../serializer.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";function n(r){return e(r).replace(/\n/g,"").length}function s(e){return new r({filterTransaction(r,s){if(!r.docChanged)return!0;const t=e();if(!t||t<=0)return!0;const i=n(r.doc);return i<=t||i<n(s.doc)}})}export{s as m};
1
+ import{a as e}from"../../../index-7ca72b78.esm.js";import{d as r}from"../serializer.esm.js";import"../../../index-5d34cff1.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";import"../email-css.esm.js";import"../email-render.esm.js";function s(e){return r(e).replace(/\n/g,"").length}function i(r){return new e({filterTransaction(e,i){if(!e.docChanged)return!0;const m=r();if(!m||m<=0)return!0;const t=s(e.doc);return t<=m||t<s(i.doc)}})}export{i as m};
@@ -1,2 +1,2 @@
1
- System.register(["../../../index-89c520e9.cjs.js","../markdown-parse.cjs.js","../serializer.cjs.js","../sanitize.cjs.js","./embeds.cjs.js"],function(_export,_context){"use strict";var r,n,t,s,e,i;function a(r,s){var e=s.split(/\r\n?|\n/).map(function(n){return r.nodes.paragraph.create(null,n?r.text(n):null);});return new n(t.from(e),1,1);}function o(n){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return new r({props:{handlePaste:function handlePaste(r,a){var _t$getForcePlainText,_a$clipboardData$getD,_a$clipboardData,_a$clipboardData$getD2,_a$clipboardData2,_t$getSanitize,_t$getSanitize2;if((_t$getForcePlainText=t.getForcePlainText)!==null&&_t$getForcePlainText!==void 0&&_t$getForcePlainText.call(t))return!1;if(t.getMarkdownPaste&&!t.getMarkdownPaste())return!1;var o=(_a$clipboardData$getD=(_a$clipboardData=a.clipboardData)===null||_a$clipboardData===void 0?void 0:_a$clipboardData.getData("text/html"))!==null&&_a$clipboardData$getD!==void 0?_a$clipboardData$getD:"",u=(_a$clipboardData$getD2=(_a$clipboardData2=a.clipboardData)===null||_a$clipboardData2===void 0?void 0:_a$clipboardData2.getData("text/plain"))!==null&&_a$clipboardData$getD2!==void 0?_a$clipboardData$getD2:"";if(o.trim()||!u.trim())return!1;if(r.state.selection.$from.parent.type.spec.code)return!1;if(!s(u))return!1;var m=i(n,e(u),(_t$getSanitize=(_t$getSanitize2=t.getSanitize)===null||_t$getSanitize2===void 0?void 0:_t$getSanitize2.call(t))!==null&&_t$getSanitize!==void 0?_t$getSanitize:!0);return r.dispatch(r.state.tr.replaceSelection(m).scrollIntoView()),!0;},transformPasted:function transformPasted(r){var _t$getForcePlainText2;return(_t$getForcePlainText2=t.getForcePlainText)!==null&&_t$getForcePlainText2!==void 0&&_t$getForcePlainText2.call(t)?function(r,n){return a(r,n.content.textBetween(0,n.content.size,"\n","\n"));}(n,r):r;}}});}_export({a:o,p:a});return{setters:[function(_index00bCjsJs){r=_index00bCjsJs.b;n=_index00bCjsJs.d;t=_index00bCjsJs.F;},function(_markdownParseCjsJs){s=_markdownParseCjsJs.l;e=_markdownParseCjsJs.m;},function(_serializerCjsJs){i=_serializerCjsJs.h;},function(_sanitizeCjsJs){},function(_embedsCjsJs){}],execute:function execute(){}};});
1
+ System.register(["../../../index-bbe23ad8.cjs.js","../../../index-ccc6a799.cjs.js","../markdown-parse.cjs.js","../html-detect.cjs.js","../serializer.cjs.js","../sanitize.cjs.js","./embeds.cjs.js","../email-css.cjs.js","../email-render.cjs.js"],function(_export,_context){"use strict";var s,r,t,e,n,i,o,a;function m(s,e){var n=e.split(/\r\n?|\n/).map(function(r){return s.nodes.paragraph.create(null,r?s.text(r):null);});return new r(t.from(n),1,1);}function c(t){var c=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return new s({props:{handlePaste:function handlePaste(s,l){var _l$clipboardData$getD,_l$clipboardData,_l$clipboardData$getD2,_l$clipboardData2,_c$getForcePlainText,_c$getForcePlainText2,_c$getSanitize,_c$getSanitize2;var j=(_l$clipboardData$getD=(_l$clipboardData=l.clipboardData)===null||_l$clipboardData===void 0?void 0:_l$clipboardData.getData("text/html"))!==null&&_l$clipboardData$getD!==void 0?_l$clipboardData$getD:"",f=(_l$clipboardData$getD2=(_l$clipboardData2=l.clipboardData)===null||_l$clipboardData2===void 0?void 0:_l$clipboardData2.getData("text/plain"))!==null&&_l$clipboardData$getD2!==void 0?_l$clipboardData$getD2:"";if(j.trim()||!f.trim())return!1;if(s.state.selection.$from.parent.type.spec.code)return!1;var p=(_c$getForcePlainText=(_c$getForcePlainText2=c.getForcePlainText)===null||_c$getForcePlainText2===void 0?void 0:_c$getForcePlainText2.call(c))!==null&&_c$getForcePlainText!==void 0?_c$getForcePlainText:!1,u=(_c$getSanitize=(_c$getSanitize2=c.getSanitize)===null||_c$getSanitize2===void 0?void 0:_c$getSanitize2.call(c))!==null&&_c$getSanitize!==void 0?_c$getSanitize:!0;if(i(f)){var _c$getEmailFidelity;if((_c$getEmailFidelity=c.getEmailFidelity)!==null&&_c$getEmailFidelity!==void 0&&_c$getEmailFidelity.call(c)&&!p){var _c$getAllowedStyles;var _e=o(t,f,u,{emailFidelity:!0,allowedStyles:(_c$getAllowedStyles=c.getAllowedStyles)===null||_c$getAllowedStyles===void 0?void 0:_c$getAllowedStyles.call(c)}),_n=new r(_e.content,0,0);s.dispatch(s.state.tr.replaceSelection(_n).scrollIntoView());}else{var _r=m(t,f);s.dispatch(s.state.tr.replaceSelection(_r).scrollIntoView());}return!0;}if(p)return!1;if(c.getMarkdownPaste&&!c.getMarkdownPaste())return!1;if(!e(f))return!1;var d=a(t,n(f),u);return s.dispatch(s.state.tr.replaceSelection(d).scrollIntoView()),!0;},transformPasted:function transformPasted(s){var _c$getForcePlainText3;return(_c$getForcePlainText3=c.getForcePlainText)!==null&&_c$getForcePlainText3!==void 0&&_c$getForcePlainText3.call(c)?function(s,r){return m(s,r.content.textBetween(0,r.content.size,"\n","\n"));}(t,s):s;}}});}_export({a:c,p:m});return{setters:[function(_index00aCjsJs){s=_index00aCjsJs.a;},function(_index00bCjsJs){r=_index00bCjsJs.S;t=_index00bCjsJs.F;},function(_markdownParseCjsJs){e=_markdownParseCjsJs.l;n=_markdownParseCjsJs.m;},function(_htmlDetectCjsJs){i=_htmlDetectCjsJs.l;},function(_serializerCjsJs){o=_serializerCjsJs.h;a=_serializerCjsJs.a;},function(_sanitizeCjsJs){},function(_embedsCjsJs){},function(_emailCssCjsJs){},function(_emailRenderCjsJs){}],execute:function execute(){}};});
2
2
  //# sourceMappingURL=paste.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paste.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/paste.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Slice, Fragment, Node as PMNode, Schema } from 'prosemirror-model';\nimport { markdownToHtml, looksLikeMarkdown } from '../markdown-parse';\nimport { htmlToSlice } from '../serializer';\n\n/**\n * Builds a slice of plain paragraphs from text, splitting on newlines. Open\n * depth 1 on both ends lets the first/last block merge into the surrounding\n * paragraph, matching how a normal plain-text paste behaves.\n */\nexport function plainTextSlice(schema: Schema, text: string): Slice {\n const blocks = text.split(/\\r\\n?|\\n/);\n const nodes: PMNode[] = blocks.map(line =>\n schema.nodes.paragraph.create(null, line ? schema.text(line) : null)\n );\n return new Slice(Fragment.from(nodes), 1, 1);\n}\n\n/** Reduces a pasted slice to unstyled text, preserving block breaks. */\nexport function stripSliceFormatting(schema: Schema, slice: Slice): Slice {\n const text = slice.content.textBetween(0, slice.content.size, '\\n', '\\n');\n return plainTextSlice(schema, text);\n}\n\nexport interface PasteOptions {\n /**\n * Read live: when it returns true, every paste drops formatting (the\n * persistent \"paste as plain text\" toggle). The Ctrl+Shift+V shortcut is a\n * separate one-shot handled in the keymap.\n */\n getForcePlainText?: () => boolean;\n /**\n * Read live: when false, plain-text pastes are never parsed as Markdown.\n * Defaults to on.\n */\n getMarkdownPaste?: () => boolean;\n /** Read live: whether pasted HTML is sanitized. Defaults to on. */\n getSanitize?: () => boolean;\n}\n\n/**\n * Paste behavior: plain-text pastes that look like Markdown are parsed into\n * rich content (headings, lists, code fences, tables, inline marks), and all\n * pastes drop formatting while the host's plain-text toggle is on.\n */\nexport function pastePlugin(schema: Schema, options: PasteOptions = {}): Plugin {\n return new Plugin({\n props: {\n handlePaste(view, event) {\n if (options.getForcePlainText?.()) return false;\n if (options.getMarkdownPaste && !options.getMarkdownPaste()) return false;\n // Only plain-text pastes qualify: an HTML flavor means the source\n // was already rich, and code blocks take text verbatim.\n const html = event.clipboardData?.getData('text/html') ?? '';\n const text = event.clipboardData?.getData('text/plain') ?? '';\n if (html.trim() || !text.trim()) return false;\n if (view.state.selection.$from.parent.type.spec.code) return false;\n if (!looksLikeMarkdown(text)) return false;\n const slice = htmlToSlice(\n schema,\n markdownToHtml(text),\n options.getSanitize?.() ?? true\n );\n view.dispatch(view.state.tr.replaceSelection(slice).scrollIntoView());\n return true;\n },\n transformPasted(slice) {\n return options.getForcePlainText?.()\n ? stripSliceFormatting(schema, slice)\n : slice;\n },\n },\n });\n}\n"],"names":["plainTextSlice","schema","text","nodes","split","map","line","paragraph","create","Slice","Fragment","from","pastePlugin","options","arguments","length","undefined","Plugin","props","handlePaste","view","event","_t$getForcePlainText","_a$clipboardData$getD","_a$clipboardData","_a$clipboardData$getD2","_a$clipboardData2","_t$getSanitize","_t$getSanitize2","getForcePlainText","getMarkdownPaste","html","clipboardData","getData","trim","state","selection","$from","parent","type","spec","code","looksLikeMarkdown","slice","htmlToSlice","markdownToHtml","getSanitize","dispatch","tr","replaceSelection","scrollIntoView","transformPasted","content","textBetween","size","stripSliceFormatting"],"mappings":"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"}
1
+ {"version":3,"file":"paste.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/paste.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Slice, Fragment, Node as PMNode, Schema } from 'prosemirror-model';\nimport { markdownToHtml, looksLikeMarkdown } from '../markdown-parse';\nimport { looksLikeHtml } from '../html-detect';\nimport { htmlToDoc, htmlToSlice } from '../serializer';\nimport { NormalizedAllowedStyles } from '../email-css';\n\n/**\n * Builds a slice of plain paragraphs from text, splitting on newlines. Open\n * depth 1 on both ends lets the first/last block merge into the surrounding\n * paragraph, matching how a normal plain-text paste behaves.\n */\nexport function plainTextSlice(schema: Schema, text: string): Slice {\n const blocks = text.split(/\\r\\n?|\\n/);\n const nodes: PMNode[] = blocks.map(line =>\n schema.nodes.paragraph.create(null, line ? schema.text(line) : null)\n );\n return new Slice(Fragment.from(nodes), 1, 1);\n}\n\n/** Reduces a pasted slice to unstyled text, preserving block breaks. */\nexport function stripSliceFormatting(schema: Schema, slice: Slice): Slice {\n const text = slice.content.textBetween(0, slice.content.size, '\\n', '\\n');\n return plainTextSlice(schema, text);\n}\n\nexport interface PasteOptions {\n /**\n * Read live: when it returns true, every paste drops formatting (the\n * persistent \"paste as plain text\" toggle). The Ctrl+Shift+V shortcut is a\n * separate one-shot handled in the keymap.\n */\n getForcePlainText?: () => boolean;\n /**\n * Read live: when false, plain-text pastes are never parsed as Markdown.\n * Defaults to on.\n */\n getMarkdownPaste?: () => boolean;\n /** Read live: whether pasted HTML is sanitized. Defaults to on. */\n getSanitize?: () => boolean;\n /** Read live: when true, HTML-looking plain text is parsed as HTML (email fidelity). */\n getEmailFidelity?: () => boolean;\n /** Read live: the validated per-app email-fidelity style allowlist. */\n getAllowedStyles?: () => NormalizedAllowedStyles;\n}\n\n/**\n * Paste behavior: plain-text pastes that look like Markdown are parsed into\n * rich content (headings, lists, code fences, tables, inline marks), and all\n * pastes drop formatting while the host's plain-text toggle is on.\n */\nexport function pastePlugin(schema: Schema, options: PasteOptions = {}): Plugin {\n return new Plugin({\n props: {\n handlePaste(view, event) {\n // Only plain-text pastes qualify: an HTML flavor means the source\n // was already rich, and code blocks take text verbatim.\n const html = event.clipboardData?.getData('text/html') ?? '';\n const text = event.clipboardData?.getData('text/plain') ?? '';\n if (html.trim() || !text.trim()) return false;\n if (view.state.selection.$from.parent.type.spec.code) return false;\n const forcePlain = options.getForcePlainText?.() ?? false;\n const sanitize = options.getSanitize?.() ?? true;\n\n // Precedence: paste-as-plain-text → HTML detection (fidelity) → Markdown.\n if (looksLikeHtml(text)) {\n if (options.getEmailFidelity?.() && !forcePlain) {\n // Closed slice so the whole document (tables, blocks) lands intact\n // rather than being opened and merged into the target paragraph.\n const doc = htmlToDoc(schema, text, sanitize, {\n emailFidelity: true,\n allowedStyles: options.getAllowedStyles?.(),\n });\n const slice = new Slice(doc.content, 0, 0);\n view.dispatch(view.state.tr.replaceSelection(slice).scrollIntoView());\n } else {\n const slice = plainTextSlice(schema, text);\n view.dispatch(view.state.tr.replaceSelection(slice).scrollIntoView());\n }\n return true;\n }\n\n if (forcePlain) return false;\n if (options.getMarkdownPaste && !options.getMarkdownPaste()) return false;\n if (!looksLikeMarkdown(text)) return false;\n const slice = htmlToSlice(schema, markdownToHtml(text), sanitize);\n view.dispatch(view.state.tr.replaceSelection(slice).scrollIntoView());\n return true;\n },\n transformPasted(slice) {\n return options.getForcePlainText?.()\n ? stripSliceFormatting(schema, slice)\n : slice;\n },\n },\n });\n}\n"],"names":["plainTextSlice","schema","text","nodes","split","map","line","paragraph","create","Slice","Fragment","from","pastePlugin","options","arguments","length","undefined","Plugin","props","handlePaste","view","event","html","clipboardData","getData","_l$clipboardData$getD","trim","state","selection","$from","parent","type","spec","code","forcePlain","getForcePlainText","sanitize","getSanitize","looksLikeHtml","_c$getEmailFidelity","getEmailFidelity","_c$getAllowedStyles","doc","htmlToDoc","emailFidelity","allowedStyles","getAllowedStyles","slice","content","dispatch","tr","replaceSelection","scrollIntoView","getMarkdownPaste","looksLikeMarkdown","htmlToSlice","markdownToHtml","transformPasted","textBetween","size","stripSliceFormatting","_export","a"],"mappings":"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"}
@@ -1 +1 @@
1
- import{b as r,d as n,F as t}from"../../../index-6f3fa4ab.esm.js";import{l as e,m as s}from"../markdown-parse.esm.js";import{h as i}from"../serializer.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";function a(r,e){const s=e.split(/\r\n?|\n/).map((n=>r.nodes.paragraph.create(null,n?r.text(n):null)));return new n(t.from(s),1,1)}function m(n,t={}){return new r({props:{handlePaste(r,a){if(t.getForcePlainText?.())return!1;if(t.getMarkdownPaste&&!t.getMarkdownPaste())return!1;const m=a.clipboardData?.getData("text/html")??"",o=a.clipboardData?.getData("text/plain")??"";if(m.trim()||!o.trim())return!1;if(r.state.selection.$from.parent.type.spec.code)return!1;if(!e(o))return!1;const u=i(n,s(o),t.getSanitize?.()??!0);return r.dispatch(r.state.tr.replaceSelection(u).scrollIntoView()),!0},transformPasted:r=>t.getForcePlainText?.()?function(r,n){return a(r,n.content.textBetween(0,n.content.size,"\n","\n"))}(n,r):r}})}export{m as a,a as p};
1
+ import{a as e}from"../../../index-7ca72b78.esm.js";import{S as s,F as r}from"../../../index-5d34cff1.esm.js";import{l as t,m as n}from"../markdown-parse.esm.js";import{l as m}from"../html-detect.esm.js";import{h as i,a as o}from"../serializer.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";import"../email-css.esm.js";import"../email-render.esm.js";function a(e,t){const n=t.split(/\r\n?|\n/).map((s=>e.nodes.paragraph.create(null,s?e.text(s):null)));return new s(r.from(n),1,1)}function l(r,l={}){return new e({props:{handlePaste(e,f){const p=f.clipboardData?.getData("text/html")??"",u=f.clipboardData?.getData("text/plain")??"";if(p.trim()||!u.trim())return!1;if(e.state.selection.$from.parent.type.spec.code)return!1;const c=l.getForcePlainText?.()??!1,d=l.getSanitize?.()??!0;if(m(u)){if(l.getEmailFidelity?.()&&!c){const t=i(r,u,d,{emailFidelity:!0,allowedStyles:l.getAllowedStyles?.()}),n=new s(t.content,0,0);e.dispatch(e.state.tr.replaceSelection(n).scrollIntoView())}else{const s=a(r,u);e.dispatch(e.state.tr.replaceSelection(s).scrollIntoView())}return!0}if(c)return!1;if(l.getMarkdownPaste&&!l.getMarkdownPaste())return!1;if(!t(u))return!1;const j=o(r,n(u),d);return e.dispatch(e.state.tr.replaceSelection(j).scrollIntoView()),!0},transformPasted:e=>l.getForcePlainText?.()?function(e,s){return a(e,s.content.textBetween(0,s.content.size,"\n","\n"))}(r,e):e}})}export{l as a,a as p};
@@ -1,2 +1,2 @@
1
- System.register(["../../../index-89c520e9.cjs.js","../../../index-3ca67627.cjs.js","../serializer.cjs.js","../sanitize.cjs.js","./embeds.cjs.js"],function(_export,_context){"use strict";var s,r,e,i;function o(o){return new s({props:{decorations:function decorations(s){var t=o();if(!t||!i(s.doc))return null;var a=r.node(0,s.doc.firstChild.nodeSize,{"class":"nile-wysiwyg__empty","data-placeholder":t});return e.create(s.doc,[a]);}}});}_export("p",o);return{setters:[function(_index00bCjsJs){s=_index00bCjsJs.b;},function(_index00aCjsJs){r=_index00aCjsJs.a;e=_index00aCjsJs.D;},function(_serializerCjsJs){i=_serializerCjsJs.i;},function(_sanitizeCjsJs){},function(_embedsCjsJs){}],execute:function execute(){}};});
1
+ System.register(["../../../index-bbe23ad8.cjs.js","../../../index-7ae95edd.cjs.js","../serializer.cjs.js","../../../index-ccc6a799.cjs.js","../sanitize.cjs.js","./embeds.cjs.js","../email-css.cjs.js","../email-render.cjs.js"],function(_export,_context){"use strict";var s,r,i,e;function o(o){return new s({props:{decorations:function decorations(s){var t=o();if(!t||!e(s.doc))return null;var a=r.node(0,s.doc.firstChild.nodeSize,{"class":"nile-wysiwyg__empty","data-placeholder":t});return i.create(s.doc,[a]);}}});}_export("p",o);return{setters:[function(_index00aCjsJs){s=_index00aCjsJs.a;},function(_index009CjsJs){r=_index009CjsJs.a;i=_index009CjsJs.D;},function(_serializerCjsJs){e=_serializerCjsJs.i;},function(_index00bCjsJs){},function(_sanitizeCjsJs){},function(_embedsCjsJs){},function(_emailCssCjsJs){},function(_emailRenderCjsJs){}],execute:function execute(){}};});
2
2
  //# sourceMappingURL=placeholder.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"placeholder.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/placeholder.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { isDocEmpty } from '../serializer';\n\n/**\n * Shows placeholder text on the first paragraph while the document is empty.\n * The text itself is rendered by CSS (`content: attr(data-placeholder)`) so\n * it never enters the document.\n */\nexport function placeholderPlugin(getText: () => string): Plugin {\n return new Plugin({\n props: {\n decorations(state) {\n const text = getText();\n if (!text || !isDocEmpty(state.doc)) return null;\n const deco = Decoration.node(0, state.doc.firstChild!.nodeSize, {\n class: 'nile-wysiwyg__empty',\n 'data-placeholder': text,\n });\n return DecorationSet.create(state.doc, [deco]);\n },\n },\n });\n}\n"],"names":["placeholderPlugin","getText","Plugin","props","decorations","state","text","isDocEmpty","doc","deco","Decoration","node","firstChild","nodeSize","class","DecorationSet","create"],"mappings":"sMASM,QAAUA,CAAAA,CAAAA,CAAkBC,CAChC,CAAA,CAAA,MAAO,IAAIC,CAAAA,CAAO,CAAA,CAChBC,KAAO,CAAA,CACLC,WAAAA,SAAA,CAAAA,WAAAA,CAAYC,GACV,GAAMC,CAAAA,CAAAA,CAAOL,CACb,CAAA,CAAA,CAAA,GAAA,CAAKK,CAASC,EAAAA,CAAAA,CAAAA,CAAWF,EAAMG,GAAM,CAAA,CAAA,MAAO,KAC5C,CAAA,GAAMC,CAAAA,CAAOC,CAAAA,CAAAA,CAAWC,KAAK,CAAGN,CAAAA,CAAAA,CAAMG,GAAII,CAAAA,UAAAA,CAAYC,QAAU,CAAA,CAC9DC,QAAO,qBACP,CAAA,kBAAA,CAAoBR,CAEtB,CAAA,CAAA,CAAA,MAAOS,CAAAA,CAAcC,CAAAA,MAAAA,CAAOX,EAAMG,GAAK,CAAA,CAACC,CACzC,CAAA,CAAA,EAAA,CAAA,CAAA,CAGP"}
1
+ {"version":3,"file":"placeholder.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/placeholder.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { isDocEmpty } from '../serializer';\n\n/**\n * Shows placeholder text on the first paragraph while the document is empty.\n * The text itself is rendered by CSS (`content: attr(data-placeholder)`) so\n * it never enters the document.\n */\nexport function placeholderPlugin(getText: () => string): Plugin {\n return new Plugin({\n props: {\n decorations(state) {\n const text = getText();\n if (!text || !isDocEmpty(state.doc)) return null;\n const deco = Decoration.node(0, state.doc.firstChild!.nodeSize, {\n class: 'nile-wysiwyg__empty',\n 'data-placeholder': text,\n });\n return DecorationSet.create(state.doc, [deco]);\n },\n },\n });\n}\n"],"names":["placeholderPlugin","getText","Plugin","props","decorations","state","text","isDocEmpty","doc","deco","Decoration","node","firstChild","nodeSize","class","DecorationSet","create"],"mappings":"sRASM,QAAUA,CAAAA,EAAkBC,CAChC,CAAA,CAAA,MAAO,IAAIC,CAAAA,CAAAA,CAAO,CAChBC,KAAAA,CAAO,CACLC,WAAAA,SAAA,CAAAA,WAAAA,CAAYC,CAAAA,CAAAA,CACV,GAAMC,CAAAA,CAAAA,CAAOL,CACb,CAAA,CAAA,CAAA,GAAA,CAAKK,IAASC,CAAWF,CAAAA,CAAAA,CAAMG,GAAM,CAAA,CAAA,MAAO,KAC5C,CAAA,GAAMC,CAAAA,CAAOC,CAAAA,CAAAA,CAAWC,IAAK,CAAA,CAAA,CAAGN,CAAMG,CAAAA,GAAAA,CAAII,UAAYC,CAAAA,QAAAA,CAAU,CAC9DC,QAAO,qBAAA,CACP,kBAAoBR,CAAAA,CAAAA,CAAAA,CAAAA,CAEtB,MAAOS,CAAAA,CAAAA,CAAcC,MAAOX,CAAAA,CAAAA,CAAMG,GAAK,CAAA,CAACC,CACzC,CAAA,CAAA,EAAA,CAAA,CAAA,CAGP"}
@@ -1 +1 @@
1
- import{b as s}from"../../../index-6f3fa4ab.esm.js";import{a as e,D as r}from"../../../index-ba47645d.esm.js";import{i}from"../serializer.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";function o(o){return new s({props:{decorations(s){const t=o();if(!t||!i(s.doc))return null;const m=e.node(0,s.doc.firstChild.nodeSize,{class:"nile-wysiwyg__empty","data-placeholder":t});return r.create(s.doc,[m])}}})}export{o as p};
1
+ import{a as s}from"../../../index-7ca72b78.esm.js";import{a as e,D as r}from"../../../index-4df50481.esm.js";import{i}from"../serializer.esm.js";import"../../../index-5d34cff1.esm.js";import"../sanitize.esm.js";import"./embeds.esm.js";import"../email-css.esm.js";import"../email-render.esm.js";function m(m){return new s({props:{decorations(s){const o=m();if(!o||!i(s.doc))return null;const t=e.node(0,s.doc.firstChild.nodeSize,{class:"nile-wysiwyg__empty","data-placeholder":o});return r.create(s.doc,[t])}}})}export{m as p};
@@ -1,2 +1,2 @@
1
- System.register(["../../../index-89c520e9.cjs.js"],function(_export,_context){"use strict";var n,r,t;function s(n){if(n.childCount<=1)return n;var r=n.type.schema,t=[];return n.descendants(function(n){return!n.isInline||(n.type===r.nodes.hard_break||t.push(n),!1);}),r.nodes.doc.create(null,r.nodes.paragraph.create(null,t));}function e(){return new n({filterTransaction:function filterTransaction(n){return!n.docChanged||n.doc.childCount<=1;},props:{handleKeyDown:function handleKeyDown(n,r){return"Enter"===r.key;},transformPasted:function transformPasted(n){var s=[];return n.content.descendants(function(n){return!n.isInline||(s.push(n),!1);}),new r(t.from(s),0,0);}}});}_export({f:s,s:e});return{setters:[function(_index00bCjsJs){n=_index00bCjsJs.b;r=_index00bCjsJs.d;t=_index00bCjsJs.F;}],execute:function execute(){}};});
1
+ System.register(["../../../index-bbe23ad8.cjs.js","../../../index-ccc6a799.cjs.js"],function(_export,_context){"use strict";var n,r,s;function t(n){if(n.childCount<=1)return n;var r=n.type.schema,s=[];return n.descendants(function(n){return!n.isInline||(n.type===r.nodes.hard_break||s.push(n),!1);}),r.nodes.doc.create(null,r.nodes.paragraph.create(null,s));}function e(){return new n({filterTransaction:function filterTransaction(n){return!n.docChanged||n.doc.childCount<=1;},props:{handleKeyDown:function handleKeyDown(n,r){return"Enter"===r.key;},transformPasted:function transformPasted(n){var t=[];return n.content.descendants(function(n){return!n.isInline||(t.push(n),!1);}),new r(s.from(t),0,0);}}});}_export({f:t,s:e});return{setters:[function(_index00aCjsJs){n=_index00aCjsJs.a;},function(_index00bCjsJs){r=_index00bCjsJs.S;s=_index00bCjsJs.F;}],execute:function execute(){}};});
2
2
  //# sourceMappingURL=single-line.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-line.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/single-line.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Slice, Fragment, Node as PMNode } from 'prosemirror-model';\n\n/** Flattens a multi-block document into a single paragraph, keeping marks. */\nexport function flattenToSingleParagraph(doc: PMNode): PMNode {\n if (doc.childCount <= 1) return doc;\n const schema = doc.type.schema;\n const inline: PMNode[] = [];\n doc.descendants(node => {\n if (node.isInline) {\n if (node.type === schema.nodes.hard_break) return false;\n inline.push(node);\n return false;\n }\n return true;\n });\n return schema.nodes.doc.create(null, schema.nodes.paragraph.create(null, inline));\n}\n\n/**\n * Constrains the document to a single paragraph: Enter is inert, pasted\n * multi-block content is flattened to one line, and any transaction that\n * would still produce extra blocks is rejected.\n */\nexport function singleLinePlugin(): Plugin {\n return new Plugin({\n filterTransaction(tr) {\n return !tr.docChanged || tr.doc.childCount <= 1;\n },\n props: {\n handleKeyDown(_view, event) {\n return event.key === 'Enter';\n },\n transformPasted(slice) {\n const inline: PMNode[] = [];\n slice.content.descendants(node => {\n if (node.isInline) {\n inline.push(node);\n return false;\n }\n return true;\n });\n return new Slice(Fragment.from(inline), 0, 0);\n },\n },\n });\n}\n"],"names":["flattenToSingleParagraph","doc","childCount","schema","type","inline","descendants","node","isInline","nodes","hard_break","push","create","paragraph","singleLinePlugin","Plugin","filterTransaction","tr","docChanged","props","handleKeyDown","_view","event","key","transformPasted","slice","content","Slice","Fragment","from","_export","f"],"mappings":"qGAIM,QAAUA,CAAAA,EAAyBC,CACvC,CAAA,CAAA,GAAIA,EAAIC,UAAc,EAAA,CAAA,CAAG,MAAOD,CAAAA,CAChC,CAAA,GAAME,CAAAA,EAASF,CAAIG,CAAAA,IAAAA,CAAKD,OAClBE,CAAmB,CAAA,EAAA,CASzB,MARAJ,CAAAA,CAAIK,CAAAA,WAAAA,CAAYC,SAAAA,UACVA,CAAKC,CAAAA,QAAAA,GACHD,EAAKH,IAASD,GAAAA,CAAAA,CAAOM,MAAMC,UAC/BL,EAAAA,CAAAA,CAAOM,KAAKJ,CADsC,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAM/CJ,EAAOM,KAAMR,CAAAA,GAAAA,CAAIW,OAAO,IAAMT,CAAAA,CAAAA,CAAOM,MAAMI,SAAUD,CAAAA,MAAAA,CAAO,IAAMP,CAAAA,CAAAA,CAAAA,CAC3E,UAOgBS,CAAAA,IACd,MAAO,IAAIC,CAAAA,EAAO,CAChBC,iBAAAA,CAAkBC,QAAlBD,CAAAA,iBAAAA,CAAkBC,UACRA,CAAGC,CAAAA,UAAAA,EAAcD,EAAGhB,GAAIC,CAAAA,UAAAA,EAAc,IAEhDiB,KAAO,CAAA,CACLC,cAAa,QAAbA,CAAAA,cAAcC,CAAAA,CAAOC,SACE,OAAdA,GAAAA,CAAAA,CAAMC,GAEf,GAAAC,eAAAA,SAAA,CAAAA,eAAAA,CAAgBC,CAAAA,CAAAA,CACd,GAAMpB,CAAAA,CAAmB,CAAA,EAAA,CAQzB,MAPAoB,CAAAA,CAAMC,CAAAA,OAAAA,CAAQpB,YAAYC,SAAAA,CACpBA,QAAAA,CAAAA,CAAAA,CAAKC,WACPH,CAAOM,CAAAA,IAAAA,CAAKJ,IACL,CAIJ,CAAA,EAAA,CAAA,CAAA,GAAIoB,CAAAA,EAAMC,CAASC,CAAAA,IAAAA,CAAKxB,GAAS,CAAG,CAAA,CAAA,CAC5C,EAGP,CAAA,CAAA,CAAA,EAAAyB,OAAA,EAAAC,CAAA"}
1
+ {"version":3,"file":"single-line.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/single-line.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Slice, Fragment, Node as PMNode } from 'prosemirror-model';\n\n/** Flattens a multi-block document into a single paragraph, keeping marks. */\nexport function flattenToSingleParagraph(doc: PMNode): PMNode {\n if (doc.childCount <= 1) return doc;\n const schema = doc.type.schema;\n const inline: PMNode[] = [];\n doc.descendants(node => {\n if (node.isInline) {\n if (node.type === schema.nodes.hard_break) return false;\n inline.push(node);\n return false;\n }\n return true;\n });\n return schema.nodes.doc.create(null, schema.nodes.paragraph.create(null, inline));\n}\n\n/**\n * Constrains the document to a single paragraph: Enter is inert, pasted\n * multi-block content is flattened to one line, and any transaction that\n * would still produce extra blocks is rejected.\n */\nexport function singleLinePlugin(): Plugin {\n return new Plugin({\n filterTransaction(tr) {\n return !tr.docChanged || tr.doc.childCount <= 1;\n },\n props: {\n handleKeyDown(_view, event) {\n return event.key === 'Enter';\n },\n transformPasted(slice) {\n const inline: PMNode[] = [];\n slice.content.descendants(node => {\n if (node.isInline) {\n inline.push(node);\n return false;\n }\n return true;\n });\n return new Slice(Fragment.from(inline), 0, 0);\n },\n },\n });\n}\n"],"names":["flattenToSingleParagraph","doc","childCount","schema","type","inline","descendants","node","isInline","nodes","hard_break","push","create","paragraph","singleLinePlugin","Plugin","filterTransaction","tr","docChanged","props","handleKeyDown","_view","event","key","transformPasted","slice","content","Slice","Fragment","from","_export","f"],"mappings":"sIAIM,QAAUA,CAAAA,CAAyBC,CAAAA,CAAAA,CAAAA,CACvC,GAAIA,CAAIC,CAAAA,UAAAA,EAAc,EAAG,MAAOD,CAAAA,CAAAA,CAChC,GAAME,CAAAA,CAASF,CAAAA,CAAAA,CAAIG,KAAKD,MAClBE,CAAAA,CAAAA,CAAmB,EASzB,CAAA,MARAJ,CAAAA,CAAIK,CAAAA,WAAAA,CAAYC,SAAAA,UACVA,CAAKC,CAAAA,QAAAA,GACHD,EAAKH,IAASD,GAAAA,CAAAA,CAAOM,MAAMC,UAC/BL,EAAAA,CAAAA,CAAOM,KAAKJ,CADsC,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAM/CJ,EAAOM,KAAMR,CAAAA,GAAAA,CAAIW,OAAO,IAAMT,CAAAA,CAAAA,CAAOM,MAAMI,SAAUD,CAAAA,MAAAA,CAAO,IAAMP,CAAAA,CAAAA,CAAAA,CAC3E,UAOgBS,CAAAA,IACd,MAAO,IAAIC,CAAAA,EAAO,CAChBC,iBAAAA,CAAkBC,QAAlBD,CAAAA,iBAAAA,CAAkBC,UACRA,CAAGC,CAAAA,UAAAA,EAAcD,EAAGhB,GAAIC,CAAAA,UAAAA,EAAc,IAEhDiB,KAAO,CAAA,CACLC,cAAa,QAAbA,CAAAA,cAAcC,CAAAA,CAAOC,SACE,OAAdA,GAAAA,CAAAA,CAAMC,GAEf,GAAAC,eAAAA,SAAA,CAAAA,eAAAA,CAAgBC,CAAAA,CAAAA,CACd,GAAMpB,CAAAA,CAAmB,CAAA,EAAA,CAQzB,MAPAoB,CAAAA,CAAMC,CAAAA,OAAAA,CAAQpB,YAAYC,SAAAA,CACpBA,QAAAA,CAAAA,CAAAA,CAAKC,WACPH,CAAOM,CAAAA,IAAAA,CAAKJ,IACL,CAIJ,CAAA,EAAA,CAAA,CAAA,GAAIoB,CAAAA,EAAMC,CAASC,CAAAA,IAAAA,CAAKxB,GAAS,CAAG,CAAA,CAAA,CAC5C,EAGP,CAAA,CAAA,CAAA,EAAAyB,OAAA,EAAAC,CAAA"}
@@ -1 +1 @@
1
- import{b as n,d as r,F as t}from"../../../index-6f3fa4ab.esm.js";function e(n){if(n.childCount<=1)return n;const r=n.type.schema,t=[];return n.descendants((n=>!n.isInline||(n.type===r.nodes.hard_break||t.push(n),!1))),r.nodes.doc.create(null,r.nodes.paragraph.create(null,t))}function s(){return new n({filterTransaction:n=>!n.docChanged||n.doc.childCount<=1,props:{handleKeyDown:(n,r)=>"Enter"===r.key,transformPasted(n){const e=[];return n.content.descendants((n=>!n.isInline||(e.push(n),!1))),new r(t.from(e),0,0)}}})}export{e as f,s};
1
+ import{a as n}from"../../../index-7ca72b78.esm.js";import{S as r,F as e}from"../../../index-5d34cff1.esm.js";function s(n){if(n.childCount<=1)return n;const r=n.type.schema,e=[];return n.descendants((n=>!n.isInline||(n.type===r.nodes.hard_break||e.push(n),!1))),r.nodes.doc.create(null,r.nodes.paragraph.create(null,e))}function t(){return new n({filterTransaction:n=>!n.docChanged||n.doc.childCount<=1,props:{handleKeyDown:(n,r)=>"Enter"===r.key,transformPasted(n){const s=[];return n.content.descendants((n=>!n.isInline||(s.push(n),!1))),new r(e.from(s),0,0)}}})}export{s as f,t as s};
@@ -1,2 +1,2 @@
1
- System.register(["../../../index-89c520e9.cjs.js","../../../index-3ca67627.cjs.js"],function(_export,_context){"use strict";var n,t,o,r;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n2){function n(){return _n2.apply(this,arguments);}n.toString=function(){return _n2.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function e(e,s){return new n({key:e,state:{init:function init(){return r;},apply:function apply(n,t,o,e){var i=function(n,t){var _n$selection=n.selection,o=_n$selection.$from,e=_n$selection.empty;if(!e||!o.parent.isTextblock||o.parent.type.spec.code)return r;var s=o.parent.textBetween(0,o.parentOffset,"\0","\0"),i=_toConsumableArray(t.getTriggers()).sort(function(n,t){return t.length-n.length;});var _iterator=_createForOfIteratorHelper(i),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t$minQueryLength;var _n=_step.value;if(!_n)continue;var _r=s.lastIndexOf(_n);if(-1===_r)continue;if(t.startOfLine&&0!==_r)continue;var _e=s[_r-1];if(void 0!==_e&&!/\s/.test(_e))continue;var _i=s.slice(_r+_n.length);if(!(_i.length>50||/\s/.test(_i)||_i.length<((_t$minQueryLength=t.minQueryLength)!==null&&_t$minQueryLength!==void 0?_t$minQueryLength:0)))return{active:!0,trigger:_n,query:_i,from:o.start()+_r,to:o.pos};}}catch(err){_iterator.e(err);}finally{_iterator.f();}return r;}(e,s);return i.active===t.active&&i.query===t.query&&i.trigger===t.trigger&&i.from===t.from||s.onChange(i),i;}},props:{decorations:function decorations(n){var r=e.getState(n);return r.active?t.create(n.doc,[o.inline(r.from,r.to,{"class":"nile-wysiwyg__suggestion"})]):null;},handleKeyDown:function handleKeyDown(n,t){var o=e.getState(n.state);return!(!o.active||!s.onKeyDown)&&s.onKeyDown(t,o);}}});}_export("s",e);return{setters:[function(_index00bCjsJs){n=_index00bCjsJs.b;},function(_index00aCjsJs){t=_index00aCjsJs.D;o=_index00aCjsJs.a;}],execute:function execute(){r={active:!1,trigger:"",query:"",from:0,to:0};}};});
1
+ System.register(["../../../index-bbe23ad8.cjs.js","../../../index-7ae95edd.cjs.js","../../../index-ccc6a799.cjs.js"],function(_export,_context){"use strict";var n,t,o,r;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n2){function n(){return _n2.apply(this,arguments);}n.toString=function(){return _n2.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function s(s,e){return new n({key:s,state:{init:function init(){return r;},apply:function apply(n,t,o,s){var i=function(n,t){var _n$selection=n.selection,o=_n$selection.$from,s=_n$selection.empty;if(!s||!o.parent.isTextblock||o.parent.type.spec.code)return r;var e=o.parent.textBetween(0,o.parentOffset,"\0","\0"),i=_toConsumableArray(t.getTriggers()).sort(function(n,t){return t.length-n.length;});var _iterator=_createForOfIteratorHelper(i),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t$minQueryLength;var _n=_step.value;if(!_n)continue;var _r=e.lastIndexOf(_n);if(-1===_r)continue;if(t.startOfLine&&0!==_r)continue;var _s=e[_r-1];if(void 0!==_s&&!/\s/.test(_s))continue;var _i=e.slice(_r+_n.length);if(!(_i.length>50||/\s/.test(_i)||_i.length<((_t$minQueryLength=t.minQueryLength)!==null&&_t$minQueryLength!==void 0?_t$minQueryLength:0)))return{active:!0,trigger:_n,query:_i,from:o.start()+_r,to:o.pos};}}catch(err){_iterator.e(err);}finally{_iterator.f();}return r;}(s,e);return i.active===t.active&&i.query===t.query&&i.trigger===t.trigger&&i.from===t.from||e.onChange(i),i;}},props:{decorations:function decorations(n){var r=s.getState(n);return r.active?t.create(n.doc,[o.inline(r.from,r.to,{"class":"nile-wysiwyg__suggestion"})]):null;},handleKeyDown:function handleKeyDown(n,t){var o=s.getState(n.state);return!(!o.active||!e.onKeyDown)&&e.onKeyDown(t,o);}}});}_export("s",s);return{setters:[function(_index00aCjsJs){n=_index00aCjsJs.a;},function(_index009CjsJs){t=_index009CjsJs.D;o=_index009CjsJs.a;},function(_index00bCjsJs){}],execute:function execute(){r={active:!1,trigger:"",query:"",from:0,to:0};}};});
2
2
  //# sourceMappingURL=suggestions.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/suggestions.ts"],"sourcesContent":["import { Plugin, PluginKey, EditorState } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\n/** Live state of a trigger-character suggestion (mention or slash command). */\nexport interface SuggestionMatch {\n active: boolean;\n trigger: string;\n query: string;\n /** Doc range spanning trigger + query, to replace on selection. */\n from: number;\n to: number;\n}\n\nexport const INACTIVE_SUGGESTION: SuggestionMatch = {\n active: false,\n trigger: '',\n query: '',\n from: 0,\n to: 0,\n};\n\nexport interface SuggestionOptions {\n /** Read live so trigger config can change without rebuilding state. */\n getTriggers: () => string[];\n /** Restrict to the start of an empty-ish textblock (slash commands). */\n startOfLine?: boolean;\n /** Stay inactive until the query reaches this length (emoji \":\" noise). */\n minQueryLength?: number;\n /** Notified on every state change (including becoming inactive). */\n onChange: (match: SuggestionMatch) => void;\n /** Intercept keys (arrows/Enter/Escape) while a suggestion is active. */\n onKeyDown?: (event: KeyboardEvent, match: SuggestionMatch) => boolean;\n}\n\nconst MAX_QUERY_LENGTH = 50;\n\nfunction findSuggestion(state: EditorState, options: SuggestionOptions): SuggestionMatch {\n const { $from, empty } = state.selection;\n if (!empty || !$from.parent.isTextblock || $from.parent.type.spec.code) {\n return INACTIVE_SUGGESTION;\n }\n const textBefore = $from.parent.textBetween(0, $from.parentOffset, '\\0', '\\0');\n // Longest triggers first so '{{' wins over '{'.\n const triggers = [...options.getTriggers()].sort((a, b) => b.length - a.length);\n for (const trigger of triggers) {\n if (!trigger) continue;\n const index = textBefore.lastIndexOf(trigger);\n if (index === -1) continue;\n if (options.startOfLine && index !== 0) continue;\n // Trigger must start a word: preceded by nothing or whitespace.\n const before = textBefore[index - 1];\n if (before !== undefined && !/\\s/.test(before)) continue;\n const query = textBefore.slice(index + trigger.length);\n if (query.length > MAX_QUERY_LENGTH || /\\s/.test(query)) continue;\n if (query.length < (options.minQueryLength ?? 0)) continue;\n return {\n active: true,\n trigger,\n query,\n from: $from.start() + index,\n to: $from.pos,\n };\n }\n return INACTIVE_SUGGESTION;\n}\n\n/**\n * Generic trigger-character suggestion tracker. Recomputes the active\n * trigger/query from the selection on every transaction, notifies the host,\n * and softly highlights the query text. Insertion/UI is the host's job.\n */\nexport function suggestionPlugin(key: PluginKey, options: SuggestionOptions): Plugin {\n return new Plugin<SuggestionMatch>({\n key,\n\n state: {\n init: () => INACTIVE_SUGGESTION,\n apply(tr, prev, _old, newState) {\n const next = findSuggestion(newState, options);\n if (\n next.active !== prev.active ||\n next.query !== prev.query ||\n next.trigger !== prev.trigger ||\n next.from !== prev.from\n ) {\n options.onChange(next);\n }\n return next;\n },\n },\n\n props: {\n decorations(state) {\n const match = key.getState(state) as SuggestionMatch;\n if (!match.active) return null;\n return DecorationSet.create(state.doc, [\n Decoration.inline(match.from, match.to, {\n class: 'nile-wysiwyg__suggestion',\n }),\n ]);\n },\n\n handleKeyDown(view, event) {\n const match = key.getState(view.state) as SuggestionMatch;\n if (!match.active || !options.onKeyDown) return false;\n return options.onKeyDown(event, match);\n },\n },\n });\n}\n"],"names":["suggestionPlugin","key","options","Plugin","state","init","INACTIVE_SUGGESTION","apply","tr","prev","_old","newState","next","_n$selection","selection","$from","empty","parent","isTextblock","type","spec","code","textBefore","textBetween","parentOffset","triggers","_toConsumableArray","getTriggers","sort","a","b","length","_iterator","_createForOfIteratorHelper","_step","s","n","done","_t$minQueryLength","trigger","index","lastIndexOf","startOfLine","before","undefined","test","query","slice","minQueryLength","active","from","start","to","pos","err","e","f","findSuggestion","onChange","props","decorations","match","getState","DecorationSet","create","doc","Decoration","inline","class","handleKeyDown","view","event","onKeyDown"],"mappings":"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"}
1
+ {"version":3,"file":"suggestions.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/suggestions.ts"],"sourcesContent":["import { Plugin, PluginKey, EditorState } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\n/** Live state of a trigger-character suggestion (mention or slash command). */\nexport interface SuggestionMatch {\n active: boolean;\n trigger: string;\n query: string;\n /** Doc range spanning trigger + query, to replace on selection. */\n from: number;\n to: number;\n}\n\nexport const INACTIVE_SUGGESTION: SuggestionMatch = {\n active: false,\n trigger: '',\n query: '',\n from: 0,\n to: 0,\n};\n\nexport interface SuggestionOptions {\n /** Read live so trigger config can change without rebuilding state. */\n getTriggers: () => string[];\n /** Restrict to the start of an empty-ish textblock (slash commands). */\n startOfLine?: boolean;\n /** Stay inactive until the query reaches this length (emoji \":\" noise). */\n minQueryLength?: number;\n /** Notified on every state change (including becoming inactive). */\n onChange: (match: SuggestionMatch) => void;\n /** Intercept keys (arrows/Enter/Escape) while a suggestion is active. */\n onKeyDown?: (event: KeyboardEvent, match: SuggestionMatch) => boolean;\n}\n\nconst MAX_QUERY_LENGTH = 50;\n\nfunction findSuggestion(state: EditorState, options: SuggestionOptions): SuggestionMatch {\n const { $from, empty } = state.selection;\n if (!empty || !$from.parent.isTextblock || $from.parent.type.spec.code) {\n return INACTIVE_SUGGESTION;\n }\n const textBefore = $from.parent.textBetween(0, $from.parentOffset, '\\0', '\\0');\n // Longest triggers first so '{{' wins over '{'.\n const triggers = [...options.getTriggers()].sort((a, b) => b.length - a.length);\n for (const trigger of triggers) {\n if (!trigger) continue;\n const index = textBefore.lastIndexOf(trigger);\n if (index === -1) continue;\n if (options.startOfLine && index !== 0) continue;\n // Trigger must start a word: preceded by nothing or whitespace.\n const before = textBefore[index - 1];\n if (before !== undefined && !/\\s/.test(before)) continue;\n const query = textBefore.slice(index + trigger.length);\n if (query.length > MAX_QUERY_LENGTH || /\\s/.test(query)) continue;\n if (query.length < (options.minQueryLength ?? 0)) continue;\n return {\n active: true,\n trigger,\n query,\n from: $from.start() + index,\n to: $from.pos,\n };\n }\n return INACTIVE_SUGGESTION;\n}\n\n/**\n * Generic trigger-character suggestion tracker. Recomputes the active\n * trigger/query from the selection on every transaction, notifies the host,\n * and softly highlights the query text. Insertion/UI is the host's job.\n */\nexport function suggestionPlugin(key: PluginKey, options: SuggestionOptions): Plugin {\n return new Plugin<SuggestionMatch>({\n key,\n\n state: {\n init: () => INACTIVE_SUGGESTION,\n apply(tr, prev, _old, newState) {\n const next = findSuggestion(newState, options);\n if (\n next.active !== prev.active ||\n next.query !== prev.query ||\n next.trigger !== prev.trigger ||\n next.from !== prev.from\n ) {\n options.onChange(next);\n }\n return next;\n },\n },\n\n props: {\n decorations(state) {\n const match = key.getState(state) as SuggestionMatch;\n if (!match.active) return null;\n return DecorationSet.create(state.doc, [\n Decoration.inline(match.from, match.to, {\n class: 'nile-wysiwyg__suggestion',\n }),\n ]);\n },\n\n handleKeyDown(view, event) {\n const match = key.getState(view.state) as SuggestionMatch;\n if (!match.active || !options.onKeyDown) return false;\n return options.onKeyDown(event, match);\n },\n },\n });\n}\n"],"names":["suggestionPlugin","key","options","Plugin","state","init","INACTIVE_SUGGESTION","apply","tr","prev","_old","newState","next","_n$selection","selection","$from","empty","parent","isTextblock","type","spec","code","textBefore","textBetween","parentOffset","triggers","_toConsumableArray","getTriggers","sort","a","b","length","_iterator","_createForOfIteratorHelper","s","_step","n","done","_t$minQueryLength","trigger","index","lastIndexOf","startOfLine","before","undefined","test","query","slice","minQueryLength","active","from","start","to","pos","err","e","f","findSuggestion","onChange","props","decorations","match","getState","DecorationSet","create","doc","Decoration","inline","class","handleKeyDown","view","event","onKeyDown"],"mappings":"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"}
@@ -1 +1 @@
1
- import{b as n}from"../../../index-6f3fa4ab.esm.js";import{D as t,a as o}from"../../../index-ba47645d.esm.js";const e={active:!1,trigger:"",query:"",from:0,to:0};function r(r,s){return new n({key:r,state:{init:()=>e,apply(n,t,o,r){const i=function(n,t){const{$from:o,empty:r}=n.selection;if(!r||!o.parent.isTextblock||o.parent.type.spec.code)return e;const s=o.parent.textBetween(0,o.parentOffset,"\0","\0"),i=[...t.getTriggers()].sort(((n,t)=>t.length-n.length));for(const n of i){if(!n)continue;const e=s.lastIndexOf(n);if(-1===e)continue;if(t.startOfLine&&0!==e)continue;const r=s[e-1];if(void 0!==r&&!/\s/.test(r))continue;const i=s.slice(e+n.length);if(!(i.length>50||/\s/.test(i)||i.length<(t.minQueryLength??0)))return{active:!0,trigger:n,query:i,from:o.start()+e,to:o.pos}}return e}(r,s);return i.active===t.active&&i.query===t.query&&i.trigger===t.trigger&&i.from===t.from||s.onChange(i),i}},props:{decorations(n){const e=r.getState(n);return e.active?t.create(n.doc,[o.inline(e.from,e.to,{class:"nile-wysiwyg__suggestion"})]):null},handleKeyDown(n,t){const o=r.getState(n.state);return!(!o.active||!s.onKeyDown)&&s.onKeyDown(t,o)}}})}export{r as s};
1
+ import{a as n}from"../../../index-7ca72b78.esm.js";import{D as t,a as o}from"../../../index-4df50481.esm.js";import"../../../index-5d34cff1.esm.js";const e={active:!1,trigger:"",query:"",from:0,to:0};function r(r,s){return new n({key:r,state:{init:()=>e,apply(n,t,o,r){const i=function(n,t){const{$from:o,empty:r}=n.selection;if(!r||!o.parent.isTextblock||o.parent.type.spec.code)return e;const s=o.parent.textBetween(0,o.parentOffset,"\0","\0"),i=[...t.getTriggers()].sort(((n,t)=>t.length-n.length));for(const n of i){if(!n)continue;const e=s.lastIndexOf(n);if(-1===e)continue;if(t.startOfLine&&0!==e)continue;const r=s[e-1];if(void 0!==r&&!/\s/.test(r))continue;const i=s.slice(e+n.length);if(!(i.length>50||/\s/.test(i)||i.length<(t.minQueryLength??0)))return{active:!0,trigger:n,query:i,from:o.start()+e,to:o.pos}}return e}(r,s);return i.active===t.active&&i.query===t.query&&i.trigger===t.trigger&&i.from===t.from||s.onChange(i),i}},props:{decorations(n){const e=r.getState(n);return e.active?t.create(n.doc,[o.inline(e.from,e.to,{class:"nile-wysiwyg__suggestion"})]):null},handleKeyDown(n,t){const o=r.getState(n.state);return!(!o.active||!s.onKeyDown)&&s.onKeyDown(t,o)}}})}export{r as s};
@@ -1,2 +1,2 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["../../../index-c3210a9c.cjs.js","../../../index-89c520e9.cjs.js","../../../index-3ca67627.cjs.js","../../../index-178e1e57.cjs.js"],function(_export,_context){"use strict";var s,t,e,i;function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}function r(){return[s({View:i}),t({allowTableNodeSelection:!0})];}_export("t",r);return{setters:[function(_index001CjsJs){s=_index001CjsJs.c;t=_index001CjsJs.t;e=_index001CjsJs.T;},function(_index00bCjsJs){},function(_index00aCjsJs){},function(_index008CjsJs){}],execute:function execute(){i=/*#__PURE__*/function(_e){function i(s,t){var _this;_classCallCheck(this,i);_this=_callSuper(this,i,[s,t]),_this.applyHtmlAttrs(s);return _this;}_inherits(i,_e);return _createClass(i,[{key:"applyHtmlAttrs",value:function applyHtmlAttrs(s){var t=s.attrs.htmlClass,e=s.attrs.htmlId;this.table.className=t!==null&&t!==void 0?t:"",e?this.table.id=e:this.table.removeAttribute("id");}},{key:"update",value:function update(s){var t=_superPropGet(i,"update",this,3)([s]);return t&&this.applyHtmlAttrs(s),t;}}]);}(e);}};});
1
+ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["../schema.cjs.js","../../../index-ccc6a799.cjs.js","../../../index-bbe23ad8.cjs.js","../../../index-7ae95edd.cjs.js","../../../index-178e1e57.cjs.js","./embeds.cjs.js","../email-css.cjs.js","../sanitize.cjs.js"],function(_export,_context){"use strict";var t,s,o,i,e;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]};},e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}function r(){return[t({View:e}),s({allowTableNodeSelection:!0})];}_export("t",r);return{setters:[function(_schemaCjsJs){t=_schemaCjsJs.c;s=_schemaCjsJs.t;o=_schemaCjsJs.T;i=_schemaCjsJs.b;},function(_index00bCjsJs){},function(_index00aCjsJs){},function(_index009CjsJs){},function(_index007CjsJs){},function(_embedsCjsJs){},function(_emailCssCjsJs){},function(_sanitizeCjsJs){}],execute:function execute(){e=/*#__PURE__*/function(_o){function e(t,s){var _this;_classCallCheck(this,e);_this=_callSuper(this,e,[t,s]),_this.applyHtmlAttrs(t);return _this;}_inherits(e,_o);return _createClass(e,[{key:"applyHtmlAttrs",value:function applyHtmlAttrs(t){var s=t.attrs.htmlClass,o=t.attrs.htmlId;this.table.className=s!==null&&s!==void 0?s:"",o?this.table.id=o:this.table.removeAttribute("id");var _e=this.table.style,r=i(t.attrs).flatMap(function(t){return t.split(";");}).map(function(t){return t.trim();}).filter(function(t){return t.includes(":");});for(var _i=0,_arr=["max-width","background-color","border","margin-left","margin-right","color","font-family","font-size","font-weight","line-height"];_i<_arr.length;_i++){var _t=_arr[_i];_e.removeProperty(_t);}var _iterator=_createForOfIteratorHelper(r),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t2=_step.value;_e.removeProperty(_t2.slice(0,_t2.indexOf(":")).trim());}}catch(err){_iterator.e(err);}finally{_iterator.f();}var _iterator2=_createForOfIteratorHelper(r),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var _t3=_step2.value;var _s=_t3.indexOf(":");_e.setProperty(_t3.slice(0,_s).trim(),_t3.slice(_s+1).trim());}}catch(err){_iterator2.e(err);}finally{_iterator2.f();}this.table.toggleAttribute("data-autowidth",Boolean(t.attrs.layout&&!t.attrs.width)),this.table.toggleAttribute("data-layout-table",Boolean(t.attrs.layout));}},{key:"update",value:function update(t){var s=_superPropGet(e,"update",this,3)([t]);return s&&this.applyHtmlAttrs(t),s;}}]);}(o);}};});
2
2
  //# sourceMappingURL=tables.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tables.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/tables.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Node as PMNode } from 'prosemirror-model';\nimport { tableEditing, columnResizing, TableView } from 'prosemirror-tables';\n\n/**\n * TableView that also reflects the author's `class`/`id` onto the inner\n * `<table>` element (the base TableView leaves it bare and puts its own class on\n * the wrapper div). The attributes round-trip via the schema's toDOM on export;\n * this makes `table.grid …` style rules match in the live editor too. Passed to\n * `columnResizing` as its `View`, so column resizing keeps working.\n */\nclass HtmlAttrTableView extends TableView {\n constructor(node: PMNode, defaultCellMinWidth: number) {\n super(node, defaultCellMinWidth);\n this.applyHtmlAttrs(node);\n }\n\n private applyHtmlAttrs(node: PMNode): void {\n const htmlClass = node.attrs.htmlClass as string | null;\n const htmlId = node.attrs.htmlId as string | null;\n this.table.className = htmlClass ?? '';\n if (htmlId) this.table.id = htmlId;\n else this.table.removeAttribute('id');\n }\n\n update(node: PMNode): boolean {\n const updated = super.update(node);\n if (updated) this.applyHtmlAttrs(node);\n return updated;\n }\n}\n\n/**\n * prosemirror-tables wiring: cell selections, fix-tables normalization, and\n * draggable column resizing (widths persist as `data-colwidth`). The CSS\n * these plugins rely on (.selectedCell, .column-resize-handle, .resize-cursor)\n * is inlined in nile-wysiwyg-editor.css.ts.\n */\nexport function tablePlugins(): Plugin[] {\n return [\n columnResizing({ View: HtmlAttrTableView }),\n tableEditing({ allowTableNodeSelection: true }),\n ];\n}\n"],"names":["tablePlugins","columnResizing","View","HtmlAttrTableView","tableEditing","allowTableNodeSelection","TableView","i","node","defaultCellMinWidth","super","this","applyHtmlAttrs","_this","_inherits","_e","_createClass","key","value","htmlClass","attrs","htmlId","table","className","id","removeAttribute","update","updated"],"mappings":"qsGAsCgBA,CAAAA,IACd,MAAO,CACLC,CAAe,CAAA,CAAEC,KAAMC,CACvBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAEC,uBAAAA,CAAAA,CAAyB,IAE5C,kOAhCMF,CAA0BG,uBAAAA,EAAAA,EAC9B,SAAAC,EAAYC,CAAAA,CAAcC,CACxBC,CAAAA,KAAAA,KAAAA,CAAAA,eAAAA,MAAAA,CAAAA,EAAAA,KAAAA,CAAAA,UAAAA,MAAAA,CAAAA,EAAMF,EAAMC,CACZE,GAAAA,KAAAA,CAAKC,cAAeJ,CAAAA,CAAAA,CACrB,QAAAK,KAAA,EAEOC,SAAA,CAAAP,CAAA,CAAAQ,EAAA,SAAAC,YAAA,CAAAT,CAAA,GAAAU,GAAA,kBAAAC,KAAA,UAAAN,cAAAA,CAAeJ,CACrB,CAAA,CAAA,GAAMW,CAAAA,EAAYX,CAAKY,CAAAA,KAAAA,CAAMD,SACvBE,CAAAA,CAAAA,CAASb,EAAKY,KAAMC,CAAAA,MAAAA,CAC1BV,IAAKW,CAAAA,KAAAA,CAAMC,UAAYJ,CAAa,SAAbA,CAAa,UAAbA,CAAa,CAAA,EAAA,CAChCE,CAAQV,CAAAA,IAAAA,CAAKW,KAAME,CAAAA,EAAAA,CAAKH,CACvBV,CAAAA,IAAAA,CAAKW,MAAMG,eAAgB,CAAA,IAAA,CACjC,EAED,GAAAR,GAAA,UAAAC,KAAA,UAAAQ,MAAAA,CAAOlB,CACL,CAAA,CAAA,GAAMmB,CAAAA,CAAUjB,CAAAA,aAAAA,CAAAA,CAAAA,mBAAaF,CAE7B,EAAA,CAAA,MADImB,CAAAA,CAAShB,EAAAA,IAAAA,CAAKC,eAAeJ,CAC1BmB,CAAAA,CAAAA,CACR,QAlB6BrB,CAAAA"}
1
+ {"version":3,"file":"tables.cjs.js","sources":["../../../../../src/nile-wysiwyg-editor/engine/plugins/tables.ts"],"sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Node as PMNode } from 'prosemirror-model';\nimport { tableEditing, columnResizing, TableView } from 'prosemirror-tables';\nimport { tableStyles } from '../schema';\n\n/** TableView that also puts the author's class/id and fidelity table styles on the inner `<table>`. */\nclass HtmlAttrTableView extends TableView {\n constructor(node: PMNode, defaultCellMinWidth: number) {\n super(node, defaultCellMinWidth);\n this.applyHtmlAttrs(node);\n }\n\n private applyHtmlAttrs(node: PMNode): void {\n const htmlClass = node.attrs.htmlClass as string | null;\n const htmlId = node.attrs.htmlId as string | null;\n this.table.className = htmlClass ?? '';\n if (htmlId) this.table.id = htmlId;\n else this.table.removeAttribute('id');\n // Email-fidelity attrs (width, max-width, background, border, centring).\n // Width is only overridden when set, so column-resize sizing still applies.\n const style = this.table.style;\n // tableStyles() entries can hold several declarations ('color: x; font-family: y'\n // for the table text style or an allowedStyles extension), so flatten them first.\n const decls = tableStyles(node.attrs)\n .flatMap(entry => entry.split(';'))\n .map(decl => decl.trim())\n .filter(decl => decl.includes(':'));\n for (const prop of [\n 'max-width', 'background-color', 'border', 'margin-left', 'margin-right',\n 'color', 'font-family', 'font-size', 'font-weight', 'line-height',\n ]) {\n style.removeProperty(prop);\n }\n // Clear any per-app extension properties first so a value that changed (or an\n // entry that was removed) doesn't linger from the previous application.\n for (const decl of decls) style.removeProperty(decl.slice(0, decl.indexOf(':')).trim());\n for (const decl of decls) {\n const idx = decl.indexOf(':');\n style.setProperty(decl.slice(0, idx).trim(), decl.slice(idx + 1).trim());\n }\n // A layout table with no width of its own (an email button) shrinks to fit\n // under email-fidelity; the host CSS keys off this hook.\n this.table.toggleAttribute('data-autowidth', Boolean(node.attrs.layout && !node.attrs.width));\n // Lets the host CSS drop column resizing's min-width on layout tables.\n this.table.toggleAttribute('data-layout-table', Boolean(node.attrs.layout));\n }\n\n update(node: PMNode): boolean {\n const updated = super.update(node);\n if (updated) this.applyHtmlAttrs(node);\n return updated;\n }\n}\n\n/**\n * prosemirror-tables wiring: cell selections, fix-tables normalization, and\n * draggable column resizing (widths persist as `data-colwidth`). The CSS\n * these plugins rely on (.selectedCell, .column-resize-handle, .resize-cursor)\n * is inlined in nile-wysiwyg-editor.css.ts.\n */\nexport function tablePlugins(): Plugin[] {\n return [\n columnResizing({ View: HtmlAttrTableView }),\n tableEditing({ allowTableNodeSelection: true }),\n ];\n}\n"],"names":["tablePlugins","columnResizing","View","HtmlAttrTableView","tableEditing","allowTableNodeSelection","TableView","e","node","defaultCellMinWidth","super","this","applyHtmlAttrs","_this","_inherits","_o","_createClass","key","value","htmlClass","attrs","htmlId","table","className","id","removeAttribute","style","decls","tableStyles","flatMap","entry","split","map","decl","trim","filter","includes","_i","_arr","prop","removeProperty","_iterator","_createForOfIteratorHelper","s","_step","n","done","slice","indexOf","err","f","_iterator2","_step2","idx","setProperty","toggleAttribute","Boolean","layout","width","update","updated"],"mappings":"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"}
@@ -1 +1 @@
1
- import{c as s,t,T as e}from"../../../index-7b1c9857.esm.js";import"../../../index-6f3fa4ab.esm.js";import"../../../index-ba47645d.esm.js";import"../../../index-920675c4.esm.js";class i extends e{constructor(s,t){super(s,t),this.applyHtmlAttrs(s)}applyHtmlAttrs(s){const t=s.attrs.htmlClass,e=s.attrs.htmlId;this.table.className=t??"",e?this.table.id=e:this.table.removeAttribute("id")}update(s){const t=super.update(s);return t&&this.applyHtmlAttrs(s),t}}function r(){return[s({View:i}),t({allowTableNodeSelection:!0})]}export{r as t};
1
+ import{c as t,t as s,T as o,b as e}from"../schema.esm.js";import"../../../index-5d34cff1.esm.js";import"../../../index-7ca72b78.esm.js";import"../../../index-4df50481.esm.js";import"../../../index-920675c4.esm.js";import"./embeds.esm.js";import"../email-css.esm.js";import"../sanitize.esm.js";class i extends o{constructor(t,s){super(t,s),this.applyHtmlAttrs(t)}applyHtmlAttrs(t){const s=t.attrs.htmlClass,o=t.attrs.htmlId;this.table.className=s??"",o?this.table.id=o:this.table.removeAttribute("id");const i=this.table.style,r=e(t.attrs).flatMap((t=>t.split(";"))).map((t=>t.trim())).filter((t=>t.includes(":")));for(const t of["max-width","background-color","border","margin-left","margin-right","color","font-family","font-size","font-weight","line-height"])i.removeProperty(t);for(const t of r)i.removeProperty(t.slice(0,t.indexOf(":")).trim());for(const t of r){const s=t.indexOf(":");i.setProperty(t.slice(0,s).trim(),t.slice(s+1).trim())}this.table.toggleAttribute("data-autowidth",Boolean(t.attrs.layout&&!t.attrs.width)),this.table.toggleAttribute("data-layout-table",Boolean(t.attrs.layout))}update(t){const s=super.update(t);return s&&this.applyHtmlAttrs(t),s}}function r(){return[t({View:i}),s({allowTableNodeSelection:!0})]}export{r as t};
@@ -1,2 +1,3 @@
1
- System.register(["./plugins/embeds.cjs.js","../../index-89c520e9.cjs.js"],function(_export,_context){"use strict";var t,e,a,i,n,r,o,s,l,d,f;function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function c(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var a=t.trim();if(""===a)return!1;if(/^(#|\/|\.\/|\.\.\/)/.test(a))return!0;var i=/^([a-z][a-z0-9+.-]*):/i.exec(a);if(!i)return!0;var n="".concat(i[1].toLowerCase(),":");return!!d.includes(n)||!(!e||"data:"!==n)&&/^data:image\/(png|gif|jpe?g|webp|avif|bmp);/i.test(a);}function g(t,e){var a=f[e];return t.split(";").map(function(t){return t.trim();}).filter(function(t){var e=t.slice(0,t.indexOf(":")).trim().toLowerCase();return!!(l.has(e)||a&&a.has(e))&&!/url\s*\(|expression\s*\(/i.test(t);}).join("; ");}function p(t){var e=t.tagName.toLowerCase(),a=r[e];for(var _i=0,_Array$from=Array.from(t.attributes);_i<_Array$from.length;_i++){var _i2=_Array$from[_i];var _n=_i2.name.toLowerCase();if((o.has(_n)||void 0!==a&&a.has(_n))&&!_n.startsWith("on")){if("style"===_n){var _a=g(_i2.value,e);_a?t.setAttribute("style",_a):t.removeAttribute("style");}else if("class"===_n){var _e=_i2.value.split(/\s+/).filter(function(t){return t&&!s.test(t);}).join(" ");_e?t.setAttribute("class",_e):t.removeAttribute("class");}else"id"===_n?s.test(_i2.value)&&t.removeAttribute("id"):"href"===_n||"src"===_n?c(_i2.value,"img"===e)||t.removeAttribute(_i2.name):"target"===_n&&("_blank"===_i2.value?t.setAttribute("rel","noopener noreferrer"):t.removeAttribute("target"));}else t.removeAttribute(_i2.name);}}function m(r){for(var _i3=0,_Array$from2=Array.from(r.children);_i3<_Array$from2.length;_i3++){var _o=_Array$from2[_i3];var _r=_o.tagName.toLowerCase();if(i.has(_r))_o.remove();else{if("iframe"===_r){var _o$getAttribute;if(!t((_o$getAttribute=_o.getAttribute("src"))!==null&&_o$getAttribute!==void 0?_o$getAttribute:"")){_o.remove();continue;}_o.setAttribute("sandbox",e),_o.setAttribute("referrerpolicy",a);}if("style"!==_r)n.has(_r)?(p(_o),m(_o)):(m(_o),_o.replaceWith.apply(_o,_toConsumableArray(Array.from(_o.childNodes))));else{var _o$textContent;_o.textContent=((_o$textContent=_o.textContent)!==null&&_o$textContent!==void 0?_o$textContent:"").replace(/<\/style/gi,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/@import[^;]*;?/gi,"").replace(/expression\s*\(/gi,"blocked(").replace(/(behavior|-moz-binding)(\s*):/gi,"blocked-prop$2:").replace(/url\(\s*(['"]?)([^)]*?)\1\s*\)/gi,function(t,e,a){var i=String(a).trim();return /^#/.test(i)||/^data:image\/(png|gif|jpe?g|webp|avif|bmp);/i.test(i)?t:"url(#)";}).trim();for(var _i4=0,_Array$from3=Array.from(_o.attributes);_i4<_Array$from3.length;_i4++){var _t=_Array$from3[_i4];_o.removeAttribute(_t.name);}}}}}function w(t){var e=new DOMParser().parseFromString("<body>".concat(t,"</body>"),"text/html");return m(e.body),e.body.innerHTML;}_export({i:c,s:w});return{setters:[function(_pluginsEmbedsCjsJs){t=_pluginsEmbedsCjsJs.i;e=_pluginsEmbedsCjsJs.E;a=_pluginsEmbedsCjsJs.a;},function(_index00bCjsJs){}],execute:function execute(){i=new Set(["script","frame","frameset","object","embed","applet","form","input","textarea","select","button","meta","link","base","title","noscript","template","svg","math","canvas","audio","video","dialog","slot"]),n=new Set(["p","h1","h2","h3","h4","h5","h6","blockquote","ul","ol","li","br","hr","a","b","strong","i","em","u","s","strike","del","span","code","sub","sup","div","font","pre","figure","figcaption","img","iframe","table","thead","tbody","tfoot","tr","td","th","colgroup","col"]),r={a:new Set(["href","title","target","rel","id","name","data-bookmark"]),table:new Set(["role","data-layout"]),ol:new Set(["start","type","data-list-style"]),ul:new Set(["data-task-list"]),figure:new Set(["data-align"]),li:new Set(["data-task-item","data-checked"]),span:new Set(["data-mention-trigger","data-mention-key","data-mention-label","data-merge-field","data-merge-label","data-math","data-math-display"]),pre:new Set(["data-language"]),img:new Set(["src","alt","title","width","height"]),td:new Set(["colspan","rowspan","data-colwidth"]),th:new Set(["colspan","rowspan","data-colwidth"]),col:new Set(["span","width"]),div:new Set(["data-embed-provider","data-width","data-align"]),iframe:new Set(["src","title","frameborder","allowfullscreen","allow","sandbox","referrerpolicy"])},o=new Set(["style","align","class","id"]),s=/^(?:nile-wysiwyg|ProseMirror)/;l=new Set(["color","background-color","font-family","font-size","font-style","font-weight","text-align","text-decoration","text-decoration-line","vertical-align","margin-left","margin-inline-start","list-style-type","line-height"]),d=["http:","https:","mailto:","tel:","ftp:"];f={img:new Set(["width","height"]),figure:new Set(["width","margin-right"]),div:new Set(["width","max-width"])};}};});
1
+ System.register(["./plugins/embeds.cjs.js","./email-css.cjs.js","../../index-bbe23ad8.cjs.js","../../index-ccc6a799.cjs.js"],function(_export,_context){"use strict";var t,n,e,o,r,i,s,a,l,c,f,u,h,b,p,m,y,w,$,x,S,M,P,E,N,K,T,U,V,tt;function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1;}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r;}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return;}finally{if(o)throw n;}}return a;}}function _arrayWithHoles(r){if(Array.isArray(r))return r;}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n18){function n(){return _n18.apply(this,arguments);}n.toString=function(){return _n18.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function d(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var e=t.trim();if(""===e)return!1;if(/^(#|\/|\.\/|\.\.\/)/.test(e))return!0;var o=/^([a-z][a-z0-9+.-]*):/i.exec(e);if(!o)return!0;var r="".concat(o[1].toLowerCase(),":");return!!f.includes(r)||!(!n||"data:"!==r)&&/^data:image\/(png|gif|jpe?g|webp|avif|bmp);/i.test(e);}function g(t,n){var e=u[n];return t.split(";").map(function(t){return t.trim();}).filter(function(t){var n=t.slice(0,t.indexOf(":")).trim().toLowerCase();return!!(c.has(n)||e&&e.has(n))&&!/url\s*\(|expression\s*\(/i.test(t);}).join("; ");}function v(t){return!/[^\x00-\x7f]/.test(t);}function k(t){return /[\\/(]|url|var|calc|expression/i.test(t);}function A(t){return"0"===t||"auto"===t||S.test(t);}function z(t){if(!v(t)||k(t))return!1;var n=t.trim().split(/\s+/);return n.length>=1&&n.length<=4&&n.every(A);}function j(t){if(!v(t))return!1;var n=t.trim();return!!/^[a-z]+$/i.test(n)||!!/^#[0-9a-f]{3,8}$/i.test(n)||!!/^rgba?\(\s*[\d.]+%?(?:\s*,\s*[\d.]+%?){2,3}\s*\)$/i.test(n)||/^hsla?\(\s*[\d.]+%?(?:\s*,\s*[\d.]+%?){2,3}\s*\)$/i.test(n);}function q(t){if(!v(t)||k(t))return!1;var n=t.trim();return!!/^\d+(?:\.\d+)?$/.test(n)||A(n);}function D(t){var _t$trim$match;if(!v(t))return!1;if(/[\\/]|url|var|calc|expression/i.test(t))return!1;var n=(_t$trim$match=t.trim().match(/rgba?\([^)]*\)|\S+/gi))!==null&&_t$trim$match!==void 0?_t$trim$match:[];if(!n.length)return!1;var e=!1;var _iterator=_createForOfIteratorHelper(n),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t=_step.value;if($.has(_t.toLowerCase()))e=!0;else if(!A(_t)&&!j(_t))return!1;}}catch(err){_iterator.e(err);}finally{_iterator.f();}return e;}function I(t){var n=t.trim().toLowerCase();return x.has(n)||A(n);}function O(t,n){return"vertical-align"===t?I(n):"border-radius"===t?z(n):t.startsWith("border")?D(n):z(n);}function B(t,n){return!(!v(n)||/url|expression|var|calc/i.test(n))&&("color"===t?j(n):"font-size"===t?A(n):"font-weight"===t?/^(normal|bold|bolder|lighter|[1-9]00)$/i.test(n.trim()):!/[(){}<>;\\]/.test(n));}function _(t,n){if("td"===n||"th"===n){var _n=t.style.backgroundColor;_n&&(t.setAttribute("data-cell-bg",_n),t.style.removeProperty("background-color"));var _e=[];var _iterator2=_createForOfIteratorHelper(E),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var _n2=_step2.value;var _o2=t.style.getPropertyValue(_n2);_o2&&(_e.push("".concat(_n2,": ").concat(_o2)),t.style.removeProperty(_n2));}}catch(err){_iterator2.e(err);}finally{_iterator2.f();}_e.length&&t.setAttribute("data-cell-text-style",_e.join("; "));var _o=t.style.textAlign;_o&&(t.setAttribute("data-cell-align",_o),t.style.removeProperty("text-align")),t.getAttribute("style")||t.removeAttribute("style");}else if("table"===n){var _t$parentElement,_t$getAttribute,_o3$getAttribute;var _n3=t.style.backgroundColor;_n3&&(t.setAttribute("data-table-bg",_n3),t.style.removeProperty("background-color"));var _e2=[];var _iterator3=_createForOfIteratorHelper(N),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var _n4=_step3.value;var _o4=t.style.getPropertyValue(_n4);_o4&&(_e2.push("".concat(_n4,": ").concat(_o4)),t.style.removeProperty(_n4));}}catch(err){_iterator3.e(err);}finally{_iterator3.f();}_e2.length&&t.setAttribute("data-table-text-style",_e2.join("; "));var _o3=(_t$parentElement=t.parentElement)===null||_t$parentElement===void 0?void 0:_t$parentElement.closest("td, th");"center"!==((_t$getAttribute=t.getAttribute("align"))===null||_t$getAttribute===void 0?void 0:_t$getAttribute.toLowerCase())&&"center"!==(_o3===null||_o3===void 0||(_o3$getAttribute=_o3.getAttribute("align"))===null||_o3$getAttribute===void 0?void 0:_o3$getAttribute.toLowerCase())||t.setAttribute("data-table-align","center"),t.getAttribute("style")||t.removeAttribute("style");}}function C(t){for(var _i=0,_Array$from=Array.from(t.children);_i<_Array$from.length;_i++){var _n5=_Array$from[_i];_(_n5,_n5.tagName.toLowerCase()),C(_n5);}}function F(t){var _exec,_t$getAttribute2;var n=(_exec=/width\s*:\s*([^;]+)/i.exec((_t$getAttribute2=t.getAttribute("style"))!==null&&_t$getAttribute2!==void 0?_t$getAttribute2:""))===null||_exec===void 0||(_exec=_exec[1])===null||_exec===void 0?void 0:_exec.trim(),e=(n||t.getAttribute("width")||"").trim();return e?/^\d+$/.test(e)?"".concat(e,"px"):S.test(e)&&/(?:px|%)$/.test(e)?e:null:null;}function G(t){var n=[];for(var _i2=0,_Array$from2=Array.from(t.children);_i2<_Array$from2.length;_i2++){var _e3=_Array$from2[_i2];var _t2=_e3.tagName.toLowerCase();if("tr"===_t2)n.push(_e3);else if("thead"===_t2||"tbody"===_t2||"tfoot"===_t2)for(var _i3=0,_Array$from3=Array.from(_e3.children);_i3<_Array$from3.length;_i3++){var _t3=_Array$from3[_i3];"tr"===_t3.tagName.toLowerCase()&&n.push(_t3);}}return n;}function H(t){var n=function(t){var n=[];for(var _i4=0,_Array$from4=Array.from(t.querySelectorAll(":scope > colgroup > col, :scope > col"));_i4<_Array$from4.length;_i4++){var _e4$getAttribute;var _e4=_Array$from4[_i4];var _t4=parseInt((_e4$getAttribute=_e4.getAttribute("span"))!==null&&_e4$getAttribute!==void 0?_e4$getAttribute:"1",10),_o5=Number.isFinite(_t4)&&_t4>0?_t4:1,_r=F(_e4);for(var _t5=0;_t5<_o5;_t5+=1)n.push(_r);}return n;}(t);if(n.some(Boolean)){var _iterator4=_createForOfIteratorHelper(G(t)),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _e5=_step4.value;var _t6=Array.from(_e5.children).filter(function(t){return /^t[dh]$/.test(t.tagName.toLowerCase());});_t6.some(function(t){var _t$getAttribute3;return parseInt((_t$getAttribute3=t.getAttribute("colspan"))!==null&&_t$getAttribute3!==void 0?_t$getAttribute3:"1",10)>1;})||_t6.forEach(function(t,e){var _t$getAttribute4,_t$getAttribute5;var o=n[e];if(!o)return;if(/(?:^|;)\s*width\s*:/i.test((_t$getAttribute4=t.getAttribute("style"))!==null&&_t$getAttribute4!==void 0?_t$getAttribute4:"")||t.hasAttribute("width"))return;var r=(_t$getAttribute5=t.getAttribute("style"))!==null&&_t$getAttribute5!==void 0?_t$getAttribute5:"";t.setAttribute("style",r?"".concat(r,"; width: ").concat(o):"width: ".concat(o));});}}catch(err){_iterator4.e(err);}finally{_iterator4.f();}}}function J(t){var n=new DOMParser().parseFromString("<body>".concat(t,"</body>"),"text/html");return C(n.body),n.body.innerHTML;}function L(t){var n=[];var _iterator5=_createForOfIteratorHelper(String(t!==null&&t!==void 0?t:"").split(";")),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var _e6=_step5.value;var _t7=_e6.indexOf(":");if(-1===_t7)continue;var _o6=_e6.slice(0,_t7).trim().toLowerCase(),_r2=_e6.slice(_t7+1).trim();if(!_r2)continue;("line-height"===_o6?q(_r2):N.includes(_o6)&&B(_o6,_r2))&&n.push("".concat(_o6,": ").concat(_r2));}}catch(err){_iterator5.e(err);}finally{_iterator5.f();}return n.join("; ");}function Q(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var e=arguments.length>2?arguments[2]:undefined;var r=t.tagName.toLowerCase();n&&"table"===r&&H(t);var i=n&&h.has(r)?function(t,n,_t$getAttribute6){var e="td"===n||"th"===n,o="table"===n,r=/^(?:p|h[1-6])$/.test(n),i=u[n],s=[];var _iterator6=_createForOfIteratorHelper(((_t$getAttribute6=t.getAttribute("style"))!==null&&_t$getAttribute6!==void 0?_t$getAttribute6:"").split(";")),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var _n8=_step6.value;var _t9=_n8.indexOf(":");if(-1===_t9)continue;var _a=_n8.slice(0,_t9).trim().toLowerCase(),_l=_n8.slice(_t9+1).trim();if(_l&&!/url\s*\(|expression\s*\(/i.test(_n8))if("background-color"!==_a){if("color"!==_a&&"font-family"!==_a&&"font-size"!==_a&&"font-weight"!==_a){if("text-align"===_a&&e&&M.has(_l.toLowerCase()))s.push("text-align: ".concat(_l.toLowerCase()));else if("line-height"===_a&&o)q(_l)&&s.push("line-height: ".concat(_l));else if("margin"===_a&&o){if(z(_l)){var _t10=_l.trim().split(/\s+/),_ref=1===_t10.length?[_t10[0],_t10[0]]:[_t10[0],_t10[1]],_ref2=_slicedToArray(_ref,2),_n9=_ref2[1],_e7=_t10.length>=4?_t10[3]:_n9;s.push("margin-left: ".concat(_e7),"margin-right: ".concat(_n9));}}else b.has(_a)||e&&m.test(_a)||(e&&p.has(_a)&&O(_a,_l)||o&&y.has(_a)&&O(_a,_l)||r&&w.has(_a)&&z(_l)||c.has(_a)||i&&i.has(_a))&&s.push("".concat(_a,": ").concat(_l));}else(e||r||o)&&B(_a,_l)&&s.push("".concat(_a,": ").concat(_l));}else(e||o)&&j(_l)&&s.push("".concat(_a,": ").concat(_l));}}catch(err){_iterator6.e(err);}finally{_iterator6.f();}if(e&&!s.some(function(t){return t.startsWith("border:");})){var _n6=t.style;var _loop=function _loop(){var t=_arr[_i5];var e="border-".concat(t);if(s.some(function(t){return t.startsWith("".concat(e,":"));}))return 1;// continue
2
+ var o=_n6===null||_n6===void 0?void 0:_n6.getPropertyValue(e);o&&D(o)&&s.push("".concat(e,": ").concat(o));};for(var _i5=0,_arr=["top","right","bottom","left"];_i5<_arr.length;_i5++){if(_loop())continue;}}if(e||o){var _n7=t.getAttribute("bgcolor");_n7&&j(_n7)&&!s.some(function(t){return t.startsWith("background-color");})&&s.push("background-color: ".concat(_n7));var _o7=t.getAttribute("width");if(_o7&&!s.some(function(t){return t.startsWith("width");})){var _t8=/^\d+$/.test(_o7)?"".concat(_o7,"px"):/^\d+%$/.test(_o7)?_o7:null;_t8&&s.push("width: ".concat(_t8));}var _r3=t.getAttribute("valign");e&&_r3&&I(_r3)&&!s.some(function(t){return t.startsWith("vertical-align");})&&s.push("vertical-align: ".concat(_r3));var _i6=t.getAttribute("align");e&&_i6&&P.has(_i6.toLowerCase())&&!s.some(function(t){return t.startsWith("text-align");})&&s.push("text-align: ".concat(_i6.toLowerCase()));}return s.join("; ");}(t,r):null,f=n&&K.has(r)?function(t,n,_t$getAttribute7){if(!n)return"";var e=[];var _iterator7=_createForOfIteratorHelper(((_t$getAttribute7=t.getAttribute("style"))!==null&&_t$getAttribute7!==void 0?_t$getAttribute7:"").split(";")),_step7;try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var _r4=_step7.value;var _t11=_r4.indexOf(":");if(-1===_t11)continue;var _i7=_r4.slice(0,_t11).trim().toLowerCase(),_s=_r4.slice(_t11+1).trim();n.has(_i7)&&o(_s)&&e.push("".concat(_i7,": ").concat(_s));}}catch(err){_iterator7.e(err);}finally{_iterator7.f();}return e.join("; ");}(t,e===null||e===void 0?void 0:e.get(r)):"",$=s[r];for(var _i8=0,_Array$from5=Array.from(t.attributes);_i8<_Array$from5.length;_i8++){var _n10=_Array$from5[_i8];var _e8=_n10.name.toLowerCase();if((a.has(_e8)||void 0!==$&&$.has(_e8))&&!_e8.startsWith("on")){if("style"===_e8){var _e9=g(_n10.value,r);_e9?t.setAttribute("style",_e9):t.removeAttribute("style");}else if("class"===_e8){var _e10=_n10.value.split(/\s+/).filter(function(t){return t&&!l.test(t);}).join(" ");_e10?t.setAttribute("class",_e10):t.removeAttribute("class");}else"id"===_e8?l.test(_n10.value)&&t.removeAttribute("id"):"href"===_e8||"src"===_e8?d(_n10.value,"img"===r)||t.removeAttribute(_n10.name):"target"===_e8&&("_blank"===_n10.value?t.setAttribute("rel","noopener noreferrer"):t.removeAttribute("target"));}else t.removeAttribute(_n10.name);}null!==i&&(i?t.setAttribute("style",i):t.removeAttribute("style")),f&&t.setAttribute("data-extra-style",f);}function R(o){var s=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var a=arguments.length>2?arguments[2]:undefined;for(var _i9=0,_Array$from6=Array.from(o.children);_i9<_Array$from6.length;_i9++){var _l2=_Array$from6[_i9];var _o8=_l2.tagName.toLowerCase();if(r.has(_o8))_l2.remove();else{if(s){var _l2$getAttribute;var _t12=(_l2$getAttribute=_l2.getAttribute("style"))!==null&&_l2$getAttribute!==void 0?_l2$getAttribute:"";if(/display\s*:\s*none/i.test(_t12)||/mso-hide\s*:\s*all/i.test(_t12)){_l2.remove();continue;}}if("iframe"===_o8){var _l2$getAttribute2;if(!t((_l2$getAttribute2=_l2.getAttribute("src"))!==null&&_l2$getAttribute2!==void 0?_l2$getAttribute2:"")){_l2.remove();continue;}_l2.setAttribute("sandbox",n),_l2.setAttribute("referrerpolicy",e);}if("style"!==_o8)i.has(_o8)?(Q(_l2,s,a),R(_l2,s,a)):(R(_l2,s,a),_l2.replaceWith.apply(_l2,_toConsumableArray(Array.from(_l2.childNodes))));else{var _l2$textContent;_l2.textContent=((_l2$textContent=_l2.textContent)!==null&&_l2$textContent!==void 0?_l2$textContent:"").replace(/<\/style/gi,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/@import[^;]*;?/gi,"").replace(/expression\s*\(/gi,"blocked(").replace(/(behavior|-moz-binding)(\s*):/gi,"blocked-prop$2:").replace(/url\(\s*(['"]?)([^)]*?)\1\s*\)/gi,function(t,n,e){var o=String(e).trim();return /^#/.test(o)||/^data:image\/(png|gif|jpe?g|webp|avif|bmp);/i.test(o)?t:"url(#)";}).trim();for(var _i10=0,_Array$from7=Array.from(_l2.attributes);_i10<_Array$from7.length;_i10++){var _t13=_Array$from7[_i10];_l2.removeAttribute(_t13.name);}}}}}function W(t){var n=[];var _iterator8=_createForOfIteratorHelper(t.split(";")),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var _e11=_step8.value;var _t14=_e11.indexOf(":");if(-1===_t14)continue;var _o9=_e11.slice(0,_t14).trim().toLowerCase(),_r5=_e11.slice(_t14+1).trim();_o9&&_r5&&n.push({name:_o9,value:_r5});}}catch(err){_iterator8.e(err);}finally{_iterator8.f();}return n;}function X(t){var _t$find;var n=(_t$find=t.find(function(t){return"display"===t.name;}))===null||_t$find===void 0?void 0:_t$find.value.toLowerCase();return("inline-block"===n||"block"===n)&&t.some(function(t){return"background-color"===t.name||t.name.startsWith("padding");});}function Y(t){var _t$find2,_t$find3,_t$find4;var n=(_t$find2=t.find(function(t){return"margin-left"===t.name;}))===null||_t$find2===void 0?void 0:_t$find2.value.toLowerCase(),e=(_t$find3=t.find(function(t){return"margin-right"===t.name;}))===null||_t$find3===void 0?void 0:_t$find3.value.toLowerCase();if("auto"===n||"auto"===e)return!0;var o=(_t$find4=t.find(function(t){return"margin"===t.name;}))===null||_t$find4===void 0?void 0:_t$find4.value;if(!o)return!1;var r=o.trim().split(/\s+/),i=r.length>=2?r[1]:r[0];return"auto"===(r.length>=4?r[3]:i).toLowerCase()||"auto"===i.toLowerCase();}function Z(t,n){for(var _i11=0,_Array$from8=Array.from(t.childNodes);_i11<_Array$from8.length;_i11++){var _e12=_Array$from8[_i11];if(_e12!==n){var _e12$textContent;if(3!==_e12.nodeType)return!1;if(""!==((_e12$textContent=_e12.textContent)!==null&&_e12$textContent!==void 0?_e12$textContent:"").trim())return!1;}}return!0;}function nt(t){return 3===t.nodeType||1===t.nodeType&&tt.has(t.tagName.toLowerCase());}function et(t){var _exec2,_t$getAttribute8;var n=(_exec2=/text-align\s*:\s*([a-z-]+)/i.exec((_t$getAttribute8=t.getAttribute("style"))!==null&&_t$getAttribute8!==void 0?_t$getAttribute8:""))===null||_exec2===void 0?void 0:_exec2[1];if(n&&M.has(n.toLowerCase()))return!0;var e=t.getAttribute("align");return!(!e||!P.has(e.toLowerCase()));}function ot(t,n){var _t$getAttribute9;var e=((_t$getAttribute9=t.getAttribute("style"))!==null&&_t$getAttribute9!==void 0?_t$getAttribute9:"").trim();t.setAttribute("style",e?"".concat(e,"; text-align: ").concat(n):"text-align: ".concat(n));}function rt(t){var n=[];var _iterator9=_createForOfIteratorHelper(G(t)),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var _e13=_step9.value;for(var _i12=0,_Array$from9=Array.from(_e13.children);_i12<_Array$from9.length;_i12++){var _t15=_Array$from9[_i12];/^t[dh]$/.test(_t15.tagName.toLowerCase())&&n.push(_t15);}}}catch(err){_iterator9.e(err);}finally{_iterator9.f();}return n;}function it(t,n){var e=t.parentElement;for(;e&&e!==n;){if("table"===e.tagName.toLowerCase())return!0;e=e.parentElement;}return!1;}function st(t,n,e){!function(t,n){var e=t.ownerDocument;var o=[];var r=function r(){for(;o.length&&3===o[o.length-1].nodeType&&""===((_o$textContent=o[o.length-1].textContent)!==null&&_o$textContent!==void 0?_o$textContent:"").trim();){var _o$textContent;o.pop();}if(!o.length)return;var t=e.createElement("p");t.setAttribute("style","text-align: ".concat(n)),o[0].before(t);for(var _i13=0,_o10=o;_i13<_o10.length;_i13++){var _n11=_o10[_i13];t.appendChild(_n11);}o=[];};for(var _i14=0,_Array$from10=Array.from(t.childNodes);_i14<_Array$from10.length;_i14++){var _n12=_Array$from10[_i14];if(nt(_n12)){var _n12$textContent;if(3===_n12.nodeType&&""===((_n12$textContent=_n12.textContent)!==null&&_n12$textContent!==void 0?_n12$textContent:"").trim()&&!o.length)continue;o.push(_n12);}else r();}r();}(t,n);var _iterator10=_createForOfIteratorHelper(function(t){return Array.from(t.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li")).filter(function(n){return!it(n,t);});}(t)),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var _e15=_step10.value;et(_e15)||ot(_e15,n);}}catch(err){_iterator10.e(err);}finally{_iterator10.f();}if(e)for(var _i15=0,_Array$from11=Array.from(t.querySelectorAll("table"));_i15<_Array$from11.length;_i15++){var _e14=_Array$from11[_i15];it(_e14,t)||_e14.getAttribute("align")||_e14.setAttribute("align",n);}}function at(t,n){var _n$emailFidelity;var e=new DOMParser().parseFromString("<body>".concat(t,"</body>"),"text/html");return n!==null&&n!==void 0&&n.emailFidelity&&(function(t){var n=t.ownerDocument;for(var _i16=0,_Array$from12=Array.from(t.querySelectorAll("a[href]"));_i16<_Array$from12.length;_i16++){var _o11$getAttribute,_e$getAttribute,_e$getAttribute2;var _o11=_Array$from12[_i16];var _t16=W((_o11$getAttribute=_o11.getAttribute("style"))!==null&&_o11$getAttribute!==void 0?_o11$getAttribute:"");if(!X(_t16))continue;var _r6=_o11.parentElement;if(!_r6)continue;if(!V.has(_r6.tagName.toLowerCase()))continue;if(!Z(_r6,_o11))continue;var _i17=_t16.filter(function(t){return T.has(t.name);});_i17.some(function(t){return"text-align"===t.name;})||_i17.push({name:"text-align",value:"center"});var _s2=_t16.filter(function(t){return U.has(t.name);}).map(function(t){return"".concat(t.name,": ").concat(t.value);}).join("; "),_a2=Y(_t16)||!!/text-align\s*:\s*center/i.test((_e$getAttribute=(e=_r6).getAttribute("style"))!==null&&_e$getAttribute!==void 0?_e$getAttribute:"")||"center"===((_e$getAttribute2=e.getAttribute("align"))===null||_e$getAttribute2===void 0?void 0:_e$getAttribute2.toLowerCase()),_l3=n.createElement("table");_l3.setAttribute("role","presentation"),_a2&&_l3.setAttribute("align","center");var _c=n.createElement("tbody"),_f=n.createElement("tr"),_d=n.createElement("td");_d.setAttribute("style",_i17.map(function(t){return"".concat(t.name,": ").concat(t.value);}).join("; ")),_s2?_o11.setAttribute("style",_s2):_o11.removeAttribute("style"),_d.appendChild(_o11),_f.appendChild(_d),_c.appendChild(_f),_l3.appendChild(_c);var _u=_r6.tagName.toLowerCase();"p"===_u||"div"===_u?_r6.replaceWith(_l3):_r6.appendChild(_l3);}var e;}(e.body),function(t){for(var _i18=0,_Array$from13=Array.from(t.querySelectorAll("center, div"));_i18<_Array$from13.length;_i18++){var _n13$getAttribute,_exec3,_n13$getAttribute2;var _n13=_Array$from13[_i18];if("center"===_n13.tagName.toLowerCase()){st(_n13,"center",!0);continue;}var _t17=(_n13$getAttribute=_n13.getAttribute("align"))===null||_n13$getAttribute===void 0?void 0:_n13$getAttribute.toLowerCase();if(_t17&&P.has(_t17)){st(_n13,_t17,!0);continue;}var _e16=(_exec3=/text-align\s*:\s*([a-z-]+)/i.exec((_n13$getAttribute2=_n13.getAttribute("style"))!==null&&_n13$getAttribute2!==void 0?_n13$getAttribute2:""))===null||_exec3===void 0||(_exec3=_exec3[1])===null||_exec3===void 0?void 0:_exec3.toLowerCase();_e16&&M.has(_e16)&&st(_n13,_e16,!1);}for(var _i19=0,_Array$from14=Array.from(t.querySelectorAll("td[align], th[align]"));_i19<_Array$from14.length;_i19++){var _n14$getAttribute;var _n14=_Array$from14[_i19];var _t18=(_n14$getAttribute=_n14.getAttribute("align"))===null||_n14$getAttribute===void 0?void 0:_n14$getAttribute.toLowerCase();if(_t18&&P.has(_t18))for(var _i20=0,_Array$from15=Array.from(_n14.querySelectorAll("table"));_i20<_Array$from15.length;_i20++){var _t19=_Array$from15[_i20];if(_t19.closest("td, th")===_n14){var _iterator11=_createForOfIteratorHelper(rt(_t19)),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var _n15=_step11.value;et(_n15)||ot(_n15,"left");}}catch(err){_iterator11.e(err);}finally{_iterator11.f();}}}}for(var _i21=0,_Array$from16=Array.from(t.querySelectorAll("table"));_i21<_Array$from16.length;_i21++){var _exec4,_n16$getAttribute;var _n16=_Array$from16[_i21];var _t20=(_exec4=/text-align\s*:\s*([a-z-]+)/i.exec((_n16$getAttribute=_n16.getAttribute("style"))!==null&&_n16$getAttribute!==void 0?_n16$getAttribute:""))===null||_exec4===void 0||(_exec4=_exec4[1])===null||_exec4===void 0?void 0:_exec4.toLowerCase();if(_t20&&M.has(_t20)){var _iterator12=_createForOfIteratorHelper(rt(_n16)),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var _e17=_step12.value;et(_e17)||ot(_e17,_t20);}}catch(err){_iterator12.e(err);}finally{_iterator12.f();}}}for(var _i22=0,_Array$from17=Array.from(t.querySelectorAll("tr[align]"));_i22<_Array$from17.length;_i22++){var _n17$getAttribute;var _n17=_Array$from17[_i22];var _t21=(_n17$getAttribute=_n17.getAttribute("align"))===null||_n17$getAttribute===void 0?void 0:_n17$getAttribute.toLowerCase();if(_t21&&P.has(_t21))for(var _i23=0,_Array$from18=Array.from(_n17.children);_i23<_Array$from18.length;_i23++){var _e18=_Array$from18[_i23];/^t[dh]$/.test(_e18.tagName.toLowerCase())&&(et(_e18)||ot(_e18,_t21));}}}(e.body)),R(e.body,(_n$emailFidelity=n===null||n===void 0?void 0:n.emailFidelity)!==null&&_n$emailFidelity!==void 0?_n$emailFidelity:!1,n===null||n===void 0?void 0:n.allowedStyles),e.body.innerHTML;}_export({a:L,i:d,r:J,s:at});return{setters:[function(_pluginsEmbedsCjsJs){t=_pluginsEmbedsCjsJs.i;n=_pluginsEmbedsCjsJs.E;e=_pluginsEmbedsCjsJs.a;},function(_emailCssCjsJs){o=_emailCssCjsJs.i;},function(_index00aCjsJs){},function(_index00bCjsJs){}],execute:function execute(){r=new Set(["script","frame","frameset","object","embed","applet","form","input","textarea","select","button","meta","link","base","title","noscript","template","svg","math","canvas","audio","video","dialog","slot"]),i=new Set(["p","h1","h2","h3","h4","h5","h6","blockquote","ul","ol","li","br","hr","a","b","strong","i","em","u","s","strike","del","span","code","sub","sup","div","font","pre","figure","figcaption","img","iframe","table","thead","tbody","tfoot","tr","td","th","colgroup","col"]),s={a:new Set(["href","title","target","rel","id","name","data-bookmark"]),table:new Set(["role","data-layout"]),ol:new Set(["start","type","data-list-style"]),ul:new Set(["data-task-list"]),figure:new Set(["data-align"]),li:new Set(["data-task-item","data-checked"]),span:new Set(["data-mention-trigger","data-mention-key","data-mention-label","data-merge-field","data-merge-label","data-math","data-math-display"]),pre:new Set(["data-language"]),img:new Set(["src","alt","title","width","height"]),td:new Set(["colspan","rowspan","data-colwidth"]),th:new Set(["colspan","rowspan","data-colwidth"]),col:new Set(["span","width"]),div:new Set(["data-embed-provider","data-width","data-align"]),iframe:new Set(["src","title","frameborder","allowfullscreen","allow","sandbox","referrerpolicy"])},a=new Set(["style","align","class","id"]),l=/^(?:nile-wysiwyg|ProseMirror)/;c=new Set(["color","background-color","font-family","font-size","font-style","font-weight","text-align","text-decoration","text-decoration-line","vertical-align","margin-left","margin-inline-start","list-style-type","line-height"]),f=["http:","https:","mailto:","tel:","ftp:"];u={img:new Set(["width","height"]),figure:new Set(["width","margin-right"]),div:new Set(["width","max-width"])};h=new Set(["table","td","th","p","h1","h2","h3","h4","h5","h6","div","li","blockquote","tr","tbody"]),b=new Set(["color","background-color","font-family","font-size","font-weight","font-style","text-decoration","text-decoration-line","text-decoration-style","text-decoration-color"]),p=new Set(["padding","padding-top","padding-right","padding-bottom","padding-left","width","vertical-align","border","border-top","border-right","border-bottom","border-left","border-radius"]),m=/^border-(?:(?:top|right|bottom|left)-)?(?:width|style|color)$/,y=new Set(["width","max-width","border","margin-left","margin-right"]),w=new Set(["margin","margin-top","margin-bottom"]),$=new Set(["solid","dashed","dotted","double","none"]),x=new Set(["top","middle","bottom","baseline","sub","super","text-top","text-bottom"]),S=/^-?(?:\d+\.?\d*|\.\d+)(?:px|%|em|rem|pt)$/;M=new Set(["left","center","right","justify","start","end"]),P=new Set(["left","center","right","justify"]);E=["color","font-family","font-size","font-weight"],N=["color","font-family","font-size","font-weight","line-height"];K=new Set(["td","th","table","p","h1","h2","h3","h4","h5","h6"]);T=new Set(["background-color","padding","padding-top","padding-right","padding-bottom","padding-left","border-radius","width","border","border-top","border-right","border-bottom","border-left","text-align"]),U=new Set(["color","font-size","font-weight","font-family","font-style","text-decoration","text-decoration-line","line-height"]),V=new Set(["td","th","div","p"]);tt=new Set(["a","b","strong","i","em","u","s","strike","del","span","code","sub","sup","font","br","img","small","big","mark","abbr","q","cite","label","bdi","bdo","wbr","time","kbd","samp","var"]);}};});
2
3
  //# sourceMappingURL=sanitize.cjs.js.map