roosterjs-content-model-plugins 0.21.2 → 0.21.4

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 (280) hide show
  1. package/lib/edit/ContentModelEditPlugin.d.ts +35 -35
  2. package/lib/edit/ContentModelEditPlugin.js +75 -75
  3. package/lib/edit/ContentModelEditPlugin.js.map +1 -1
  4. package/lib/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  5. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js +19 -19
  6. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  7. package/lib/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  8. package/lib/edit/deleteSteps/deleteCollapsedSelection.js +90 -90
  9. package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  10. package/lib/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  11. package/lib/edit/deleteSteps/deleteWordSelection.js +170 -170
  12. package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  13. package/lib/edit/handleKeyboardEventCommon.d.ts +15 -15
  14. package/lib/edit/handleKeyboardEventCommon.js +54 -54
  15. package/lib/edit/handleKeyboardEventCommon.js.map +1 -1
  16. package/lib/edit/keyboardDelete.d.ts +8 -8
  17. package/lib/edit/keyboardDelete.js +67 -67
  18. package/lib/edit/keyboardDelete.js.map +1 -1
  19. package/lib/edit/keyboardInput.d.ts +5 -5
  20. package/lib/edit/keyboardInput.js +50 -49
  21. package/lib/edit/keyboardInput.js.map +1 -1
  22. package/lib/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  23. package/lib/edit/utils/getLeafSiblingBlock.js +75 -75
  24. package/lib/edit/utils/getLeafSiblingBlock.js.map +1 -1
  25. package/lib/entityDelimiter/EntityDelimiterPlugin.d.ts +35 -35
  26. package/lib/entityDelimiter/EntityDelimiterPlugin.js +256 -254
  27. package/lib/entityDelimiter/EntityDelimiterPlugin.js.map +1 -1
  28. package/lib/index.d.ts +3 -3
  29. package/lib/index.js +9 -9
  30. package/lib/index.js.map +1 -1
  31. package/lib/paste/ContentModelPastePlugin.d.ts +42 -42
  32. package/lib/paste/ContentModelPastePlugin.js +148 -148
  33. package/lib/paste/ContentModelPastePlugin.js.map +1 -1
  34. package/lib/paste/Excel/processPastedContentFromExcel.d.ts +13 -13
  35. package/lib/paste/Excel/processPastedContentFromExcel.js +82 -82
  36. package/lib/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  37. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  38. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js +19 -19
  39. package/lib/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  40. package/lib/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  41. package/lib/paste/WacComponents/processPastedContentWacComponents.js +207 -207
  42. package/lib/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  43. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +12 -12
  44. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js +69 -69
  45. package/lib/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  46. package/lib/paste/WordDesktop/processWordComments.d.ts +7 -7
  47. package/lib/paste/WordDesktop/processWordComments.js +21 -21
  48. package/lib/paste/WordDesktop/processWordComments.js.map +1 -1
  49. package/lib/paste/WordDesktop/processWordLists.d.ts +10 -10
  50. package/lib/paste/WordDesktop/processWordLists.js +154 -154
  51. package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
  52. package/lib/paste/pasteSourceValidations/constants.d.ts +17 -17
  53. package/lib/paste/pasteSourceValidations/constants.js +21 -21
  54. package/lib/paste/pasteSourceValidations/constants.js.map +1 -1
  55. package/lib/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  56. package/lib/paste/pasteSourceValidations/documentContainWacElements.js +24 -24
  57. package/lib/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  58. package/lib/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  59. package/lib/paste/pasteSourceValidations/getPasteSource.js +43 -43
  60. package/lib/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  61. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  62. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js +16 -16
  63. package/lib/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  64. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  65. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js +18 -18
  66. package/lib/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  67. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  68. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js +14 -14
  69. package/lib/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  70. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  71. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +14 -14
  72. package/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  73. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  74. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js +18 -18
  75. package/lib/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  76. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  77. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js +18 -18
  78. package/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  79. package/lib/paste/utils/addParser.d.ts +5 -5
  80. package/lib/paste/utils/addParser.js +16 -16
  81. package/lib/paste/utils/addParser.js.map +1 -1
  82. package/lib/paste/utils/deprecatedColorParser.d.ts +5 -5
  83. package/lib/paste/utils/deprecatedColorParser.js +19 -19
  84. package/lib/paste/utils/deprecatedColorParser.js.map +1 -1
  85. package/lib/paste/utils/getStyles.d.ts +6 -6
  86. package/lib/paste/utils/getStyles.js +22 -22
  87. package/lib/paste/utils/getStyles.js.map +1 -1
  88. package/lib/paste/utils/linkParser.d.ts +5 -5
  89. package/lib/paste/utils/linkParser.js +27 -27
  90. package/lib/paste/utils/linkParser.js.map +1 -1
  91. package/lib/paste/utils/setProcessor.d.ts +5 -5
  92. package/lib/paste/utils/setProcessor.js +13 -13
  93. package/lib/paste/utils/setProcessor.js.map +1 -1
  94. package/lib-amd/edit/ContentModelEditPlugin.d.ts +35 -35
  95. package/lib-amd/edit/ContentModelEditPlugin.js +75 -75
  96. package/lib-amd/edit/ContentModelEditPlugin.js.map +1 -1
  97. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  98. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js +20 -20
  99. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  100. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  101. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +89 -89
  102. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  103. package/lib-amd/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  104. package/lib-amd/edit/deleteSteps/deleteWordSelection.js +169 -169
  105. package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  106. package/lib-amd/edit/handleKeyboardEventCommon.d.ts +15 -15
  107. package/lib-amd/edit/handleKeyboardEventCommon.js +55 -55
  108. package/lib-amd/edit/handleKeyboardEventCommon.js.map +1 -1
  109. package/lib-amd/edit/keyboardDelete.d.ts +8 -8
  110. package/lib-amd/edit/keyboardDelete.js +63 -63
  111. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  112. package/lib-amd/edit/keyboardInput.d.ts +5 -5
  113. package/lib-amd/edit/keyboardInput.js +50 -49
  114. package/lib-amd/edit/keyboardInput.js.map +1 -1
  115. package/lib-amd/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  116. package/lib-amd/edit/utils/getLeafSiblingBlock.js +75 -75
  117. package/lib-amd/edit/utils/getLeafSiblingBlock.js.map +1 -1
  118. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.d.ts +35 -35
  119. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js +255 -253
  120. package/lib-amd/entityDelimiter/EntityDelimiterPlugin.js.map +1 -1
  121. package/lib-amd/index.d.ts +3 -3
  122. package/lib-amd/index.js +8 -8
  123. package/lib-amd/index.js.map +1 -1
  124. package/lib-amd/paste/ContentModelPastePlugin.d.ts +42 -42
  125. package/lib-amd/paste/ContentModelPastePlugin.js +140 -140
  126. package/lib-amd/paste/ContentModelPastePlugin.js.map +1 -1
  127. package/lib-amd/paste/Excel/processPastedContentFromExcel.d.ts +13 -13
  128. package/lib-amd/paste/Excel/processPastedContentFromExcel.js +80 -80
  129. package/lib-amd/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  130. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  131. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js +20 -20
  132. package/lib-amd/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  133. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  134. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js +206 -206
  135. package/lib-amd/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  136. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +12 -12
  137. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js +64 -64
  138. package/lib-amd/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  139. package/lib-amd/paste/WordDesktop/processWordComments.d.ts +7 -7
  140. package/lib-amd/paste/WordDesktop/processWordComments.js +22 -22
  141. package/lib-amd/paste/WordDesktop/processWordComments.js.map +1 -1
  142. package/lib-amd/paste/WordDesktop/processWordLists.d.ts +10 -10
  143. package/lib-amd/paste/WordDesktop/processWordLists.js +153 -153
  144. package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
  145. package/lib-amd/paste/pasteSourceValidations/constants.d.ts +17 -17
  146. package/lib-amd/paste/pasteSourceValidations/constants.js +23 -23
  147. package/lib-amd/paste/pasteSourceValidations/constants.js.map +1 -1
  148. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  149. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js +26 -26
  150. package/lib-amd/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  151. package/lib-amd/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  152. package/lib-amd/paste/pasteSourceValidations/getPasteSource.js +38 -38
  153. package/lib-amd/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  154. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  155. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js +18 -18
  156. package/lib-amd/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  157. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  158. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js +20 -20
  159. package/lib-amd/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  160. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  161. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js +16 -16
  162. package/lib-amd/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  163. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  164. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +16 -16
  165. package/lib-amd/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  166. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  167. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js +20 -20
  168. package/lib-amd/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  169. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  170. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js +20 -20
  171. package/lib-amd/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  172. package/lib-amd/paste/utils/addParser.d.ts +5 -5
  173. package/lib-amd/paste/utils/addParser.js +18 -18
  174. package/lib-amd/paste/utils/addParser.js.map +1 -1
  175. package/lib-amd/paste/utils/deprecatedColorParser.d.ts +5 -5
  176. package/lib-amd/paste/utils/deprecatedColorParser.js +20 -20
  177. package/lib-amd/paste/utils/deprecatedColorParser.js.map +1 -1
  178. package/lib-amd/paste/utils/getStyles.d.ts +6 -6
  179. package/lib-amd/paste/utils/getStyles.js +24 -24
  180. package/lib-amd/paste/utils/getStyles.js.map +1 -1
  181. package/lib-amd/paste/utils/linkParser.d.ts +5 -5
  182. package/lib-amd/paste/utils/linkParser.js +28 -28
  183. package/lib-amd/paste/utils/linkParser.js.map +1 -1
  184. package/lib-amd/paste/utils/setProcessor.d.ts +5 -5
  185. package/lib-amd/paste/utils/setProcessor.js +15 -15
  186. package/lib-amd/paste/utils/setProcessor.js.map +1 -1
  187. package/lib-mjs/edit/ContentModelEditPlugin.d.ts +35 -35
  188. package/lib-mjs/edit/ContentModelEditPlugin.js +72 -72
  189. package/lib-mjs/edit/ContentModelEditPlugin.js.map +1 -1
  190. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.d.ts +5 -5
  191. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js +15 -15
  192. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  193. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.d.ts +9 -9
  194. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +87 -87
  195. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  196. package/lib-mjs/edit/deleteSteps/deleteWordSelection.d.ts +9 -9
  197. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js +167 -167
  198. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  199. package/lib-mjs/edit/handleKeyboardEventCommon.d.ts +15 -15
  200. package/lib-mjs/edit/handleKeyboardEventCommon.js +48 -48
  201. package/lib-mjs/edit/handleKeyboardEventCommon.js.map +1 -1
  202. package/lib-mjs/edit/keyboardDelete.d.ts +8 -8
  203. package/lib-mjs/edit/keyboardDelete.js +63 -63
  204. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  205. package/lib-mjs/edit/keyboardInput.d.ts +5 -5
  206. package/lib-mjs/edit/keyboardInput.js +46 -45
  207. package/lib-mjs/edit/keyboardInput.js.map +1 -1
  208. package/lib-mjs/edit/utils/getLeafSiblingBlock.d.ts +23 -23
  209. package/lib-mjs/edit/utils/getLeafSiblingBlock.js +71 -71
  210. package/lib-mjs/edit/utils/getLeafSiblingBlock.js.map +1 -1
  211. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.d.ts +35 -35
  212. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js +252 -250
  213. package/lib-mjs/entityDelimiter/EntityDelimiterPlugin.js.map +1 -1
  214. package/lib-mjs/index.d.ts +3 -3
  215. package/lib-mjs/index.js +3 -3
  216. package/lib-mjs/index.js.map +1 -1
  217. package/lib-mjs/paste/ContentModelPastePlugin.d.ts +42 -42
  218. package/lib-mjs/paste/ContentModelPastePlugin.js +145 -145
  219. package/lib-mjs/paste/ContentModelPastePlugin.js.map +1 -1
  220. package/lib-mjs/paste/Excel/processPastedContentFromExcel.d.ts +13 -13
  221. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js +77 -77
  222. package/lib-mjs/paste/Excel/processPastedContentFromExcel.js.map +1 -1
  223. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.d.ts +7 -7
  224. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js +15 -15
  225. package/lib-mjs/paste/PowerPoint/processPastedContentFromPowerPoint.js.map +1 -1
  226. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.d.ts +9 -9
  227. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js +203 -203
  228. package/lib-mjs/paste/WacComponents/processPastedContentWacComponents.js.map +1 -1
  229. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.d.ts +12 -12
  230. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js +64 -64
  231. package/lib-mjs/paste/WordDesktop/processPastedContentFromWordDesktop.js.map +1 -1
  232. package/lib-mjs/paste/WordDesktop/processWordComments.d.ts +7 -7
  233. package/lib-mjs/paste/WordDesktop/processWordComments.js +17 -17
  234. package/lib-mjs/paste/WordDesktop/processWordComments.js.map +1 -1
  235. package/lib-mjs/paste/WordDesktop/processWordLists.d.ts +10 -10
  236. package/lib-mjs/paste/WordDesktop/processWordLists.js +150 -150
  237. package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
  238. package/lib-mjs/paste/pasteSourceValidations/constants.d.ts +17 -17
  239. package/lib-mjs/paste/pasteSourceValidations/constants.js +18 -18
  240. package/lib-mjs/paste/pasteSourceValidations/constants.js.map +1 -1
  241. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.d.ts +8 -8
  242. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js +20 -20
  243. package/lib-mjs/paste/pasteSourceValidations/documentContainWacElements.js.map +1 -1
  244. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.d.ts +27 -27
  245. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js +39 -39
  246. package/lib-mjs/paste/pasteSourceValidations/getPasteSource.js.map +1 -1
  247. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.d.ts +8 -8
  248. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js +12 -12
  249. package/lib-mjs/paste/pasteSourceValidations/isExcelDesktopDocument.js.map +1 -1
  250. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.d.ts +8 -8
  251. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js +14 -14
  252. package/lib-mjs/paste/pasteSourceValidations/isExcelOnlineDocument.js.map +1 -1
  253. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.d.ts +8 -8
  254. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js +10 -10
  255. package/lib-mjs/paste/pasteSourceValidations/isGoogleSheetDocument.js.map +1 -1
  256. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.d.ts +8 -8
  257. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js +10 -10
  258. package/lib-mjs/paste/pasteSourceValidations/isPowerPointDesktopDocument.js.map +1 -1
  259. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.d.ts +8 -8
  260. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js +14 -14
  261. package/lib-mjs/paste/pasteSourceValidations/isWordDesktopDocument.js.map +1 -1
  262. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.d.ts +9 -9
  263. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js +14 -14
  264. package/lib-mjs/paste/pasteSourceValidations/shouldConvertToSingleImage.js.map +1 -1
  265. package/lib-mjs/paste/utils/addParser.d.ts +5 -5
  266. package/lib-mjs/paste/utils/addParser.js +13 -13
  267. package/lib-mjs/paste/utils/addParser.js.map +1 -1
  268. package/lib-mjs/paste/utils/deprecatedColorParser.d.ts +5 -5
  269. package/lib-mjs/paste/utils/deprecatedColorParser.js +15 -15
  270. package/lib-mjs/paste/utils/deprecatedColorParser.js.map +1 -1
  271. package/lib-mjs/paste/utils/getStyles.d.ts +6 -6
  272. package/lib-mjs/paste/utils/getStyles.js +18 -18
  273. package/lib-mjs/paste/utils/getStyles.js.map +1 -1
  274. package/lib-mjs/paste/utils/linkParser.d.ts +5 -5
  275. package/lib-mjs/paste/utils/linkParser.js +23 -23
  276. package/lib-mjs/paste/utils/linkParser.js.map +1 -1
  277. package/lib-mjs/paste/utils/setProcessor.d.ts +5 -5
  278. package/lib-mjs/paste/utils/setProcessor.js +9 -9
  279. package/lib-mjs/paste/utils/setProcessor.js.map +1 -1
  280. package/package.json +1 -1
@@ -1,70 +1,70 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wordDesktopElementProcessor = exports.processPastedContentFromWordDesktop = void 0;
4
- var addParser_1 = require("../utils/addParser");
5
- var roosterjs_editor_dom_1 = require("roosterjs-editor-dom");
6
- var getStyles_1 = require("../utils/getStyles");
7
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
8
- var processWordComments_1 = require("./processWordComments");
9
- var processWordLists_1 = require("./processWordLists");
10
- var setProcessor_1 = require("../utils/setProcessor");
11
- var PERCENTAGE_REGEX = /%/;
12
- var DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;
13
- /**
14
- * @internal
15
- * Handles Pasted content when source is Word Desktop
16
- * @param ev ContentModelBeforePasteEvent
17
- */
18
- function processPastedContentFromWordDesktop(ev) {
19
- (0, setProcessor_1.setProcessor)(ev.domToModelOption, 'element', exports.wordDesktopElementProcessor);
20
- (0, addParser_1.default)(ev.domToModelOption, 'block', removeNonValidLineHeight);
21
- (0, addParser_1.default)(ev.domToModelOption, 'listLevel', listLevelParser);
22
- (0, addParser_1.default)(ev.domToModelOption, 'listItemElement', listItemElementParser);
23
- // Remove "border:none" for image to fix image resize behavior
24
- // We found a problem that when paste an image with "border:none" then the resize border will be
25
- // displayed incorrectly when resize it. So we need to drop this style
26
- (0, roosterjs_editor_dom_1.chainSanitizerCallback)(ev.sanitizingOption.cssStyleCallbacks, 'border', function (value, element) { return element.tagName != 'IMG' || value != 'none'; });
27
- // Preserve <o:p> when its innerHTML is "&nbsp;" to avoid dropping an empty line
28
- (0, roosterjs_editor_dom_1.chainSanitizerCallback)(ev.sanitizingOption.elementCallbacks, 'O:P', function (element) {
29
- (0, roosterjs_content_model_dom_1.moveChildNodes)(element);
30
- element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp;
31
- return true;
32
- });
33
- }
34
- exports.processPastedContentFromWordDesktop = processPastedContentFromWordDesktop;
35
- /**
36
- * @internal
37
- * Exported only for unit test
38
- */
39
- var wordDesktopElementProcessor = function (group, element, context) {
40
- var styles = (0, getStyles_1.getStyles)(element);
41
- // Process Word Lists or Word Commands, otherwise use the default processor on this element.
42
- if (!((0, processWordLists_1.processWordList)(styles, group, element, context) || (0, processWordComments_1.processWordComments)(styles, element))) {
43
- context.defaultElementProcessors.element(group, element, context);
44
- }
45
- };
46
- exports.wordDesktopElementProcessor = wordDesktopElementProcessor;
47
- function removeNonValidLineHeight(format, element, context, defaultStyle) {
48
- //If the line height is less than the browser default line height, line between the text is going to be too narrow
49
- var parsedLineHeight;
50
- if (PERCENTAGE_REGEX.test(element.style.lineHeight) &&
51
- !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&
52
- parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE) {
53
- format.lineHeight = defaultStyle.lineHeight;
54
- }
55
- }
56
- function listLevelParser(format, element, context, defaultStyle) {
57
- if (element.style.marginLeft != '') {
58
- format.marginLeft = defaultStyle.marginLeft;
59
- }
60
- format.marginBottom = undefined;
61
- }
62
- var listItemElementParser = function (format, element) {
63
- if (element.style.marginLeft) {
64
- format.marginLeft = undefined;
65
- }
66
- if (element.style.marginRight) {
67
- format.marginRight = undefined;
68
- }
69
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wordDesktopElementProcessor = exports.processPastedContentFromWordDesktop = void 0;
4
+ var addParser_1 = require("../utils/addParser");
5
+ var roosterjs_editor_dom_1 = require("roosterjs-editor-dom");
6
+ var getStyles_1 = require("../utils/getStyles");
7
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
8
+ var processWordComments_1 = require("./processWordComments");
9
+ var processWordLists_1 = require("./processWordLists");
10
+ var setProcessor_1 = require("../utils/setProcessor");
11
+ var PERCENTAGE_REGEX = /%/;
12
+ var DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;
13
+ /**
14
+ * @internal
15
+ * Handles Pasted content when source is Word Desktop
16
+ * @param ev ContentModelBeforePasteEvent
17
+ */
18
+ function processPastedContentFromWordDesktop(ev) {
19
+ (0, setProcessor_1.setProcessor)(ev.domToModelOption, 'element', exports.wordDesktopElementProcessor);
20
+ (0, addParser_1.default)(ev.domToModelOption, 'block', removeNonValidLineHeight);
21
+ (0, addParser_1.default)(ev.domToModelOption, 'listLevel', listLevelParser);
22
+ (0, addParser_1.default)(ev.domToModelOption, 'listItemElement', listItemElementParser);
23
+ // Remove "border:none" for image to fix image resize behavior
24
+ // We found a problem that when paste an image with "border:none" then the resize border will be
25
+ // displayed incorrectly when resize it. So we need to drop this style
26
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(ev.sanitizingOption.cssStyleCallbacks, 'border', function (value, element) { return element.tagName != 'IMG' || value != 'none'; });
27
+ // Preserve <o:p> when its innerHTML is "&nbsp;" to avoid dropping an empty line
28
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(ev.sanitizingOption.elementCallbacks, 'O:P', function (element) {
29
+ (0, roosterjs_content_model_dom_1.moveChildNodes)(element);
30
+ element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp;
31
+ return true;
32
+ });
33
+ }
34
+ exports.processPastedContentFromWordDesktop = processPastedContentFromWordDesktop;
35
+ /**
36
+ * @internal
37
+ * Exported only for unit test
38
+ */
39
+ var wordDesktopElementProcessor = function (group, element, context) {
40
+ var styles = (0, getStyles_1.getStyles)(element);
41
+ // Process Word Lists or Word Commands, otherwise use the default processor on this element.
42
+ if (!((0, processWordLists_1.processWordList)(styles, group, element, context) || (0, processWordComments_1.processWordComments)(styles, element))) {
43
+ context.defaultElementProcessors.element(group, element, context);
44
+ }
45
+ };
46
+ exports.wordDesktopElementProcessor = wordDesktopElementProcessor;
47
+ function removeNonValidLineHeight(format, element, context, defaultStyle) {
48
+ //If the line height is less than the browser default line height, line between the text is going to be too narrow
49
+ var parsedLineHeight;
50
+ if (PERCENTAGE_REGEX.test(element.style.lineHeight) &&
51
+ !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&
52
+ parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE) {
53
+ format.lineHeight = defaultStyle.lineHeight;
54
+ }
55
+ }
56
+ function listLevelParser(format, element, context, defaultStyle) {
57
+ if (element.style.marginLeft != '') {
58
+ format.marginLeft = defaultStyle.marginLeft;
59
+ }
60
+ format.marginBottom = undefined;
61
+ }
62
+ var listItemElementParser = function (format, element) {
63
+ if (element.style.marginLeft) {
64
+ format.marginLeft = undefined;
65
+ }
66
+ if (element.style.marginRight) {
67
+ format.marginRight = undefined;
68
+ }
69
+ };
70
70
  //# sourceMappingURL=processPastedContentFromWordDesktop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processPastedContentFromWordDesktop.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts"],"names":[],"mappings":"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","sourcesContent":["import addParser from '../utils/addParser';\nimport { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { getStyles } from '../utils/getStyles';\nimport { moveChildNodes } from 'roosterjs-content-model-dom';\nimport { processWordComments } from './processWordComments';\nimport { processWordList } from './processWordLists';\nimport { setProcessor } from '../utils/setProcessor';\nimport type {\n ContentModelBeforePasteEvent,\n ContentModelBlockFormat,\n ContentModelListItemFormat,\n ContentModelListItemLevelFormat,\n DomToModelContext,\n ElementProcessor,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\nconst PERCENTAGE_REGEX = /%/;\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\n\n/**\n * @internal\n * Handles Pasted content when source is Word Desktop\n * @param ev ContentModelBeforePasteEvent\n */\nexport function processPastedContentFromWordDesktop(ev: ContentModelBeforePasteEvent) {\n setProcessor(ev.domToModelOption, 'element', wordDesktopElementProcessor);\n addParser(ev.domToModelOption, 'block', removeNonValidLineHeight);\n addParser(ev.domToModelOption, 'listLevel', listLevelParser);\n addParser(ev.domToModelOption, 'listItemElement', listItemElementParser);\n\n // Remove \"border:none\" for image to fix image resize behavior\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\n // displayed incorrectly when resize it. So we need to drop this style\n chainSanitizerCallback(\n ev.sanitizingOption.cssStyleCallbacks,\n 'border',\n (value, element) => element.tagName != 'IMG' || value != 'none'\n );\n\n // Preserve <o:p> when its innerHTML is \"&nbsp;\" to avoid dropping an empty line\n chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => {\n moveChildNodes(element);\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); // &nbsp;\n return true;\n });\n}\n\n/**\n * @internal\n * Exported only for unit test\n */\nexport const wordDesktopElementProcessor: ElementProcessor<HTMLElement> = (\n group,\n element,\n context\n) => {\n const styles = getStyles(element);\n // Process Word Lists or Word Commands, otherwise use the default processor on this element.\n if (\n !(processWordList(styles, group, element, context) || processWordComments(styles, element))\n ) {\n context.defaultElementProcessors.element(group, element, context);\n }\n};\n\nfunction removeNonValidLineHeight(\n format: ContentModelBlockFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly<Partial<CSSStyleDeclaration>>\n): void {\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\n let parsedLineHeight: number;\n if (\n PERCENTAGE_REGEX.test(element.style.lineHeight) &&\n !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\n ) {\n format.lineHeight = defaultStyle.lineHeight;\n }\n}\n\nfunction listLevelParser(\n format: ContentModelListItemLevelFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly<Partial<CSSStyleDeclaration>>\n): void {\n if (element.style.marginLeft != '') {\n format.marginLeft = defaultStyle.marginLeft;\n }\n\n format.marginBottom = undefined;\n}\n\nconst listItemElementParser: FormatParser<ContentModelListItemFormat> = (\n format: ContentModelListItemFormat,\n element: HTMLElement\n): void => {\n if (element.style.marginLeft) {\n format.marginLeft = undefined;\n }\n if (element.style.marginRight) {\n format.marginRight = undefined;\n }\n};\n"]}
1
+ {"version":3,"file":"processPastedContentFromWordDesktop.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts"],"names":[],"mappings":"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","sourcesContent":["import addParser from '../utils/addParser';\r\nimport { chainSanitizerCallback } from 'roosterjs-editor-dom';\r\nimport { getStyles } from '../utils/getStyles';\r\nimport { moveChildNodes } from 'roosterjs-content-model-dom';\r\nimport { processWordComments } from './processWordComments';\r\nimport { processWordList } from './processWordLists';\r\nimport { setProcessor } from '../utils/setProcessor';\r\nimport type {\r\n ContentModelBeforePasteEvent,\r\n ContentModelBlockFormat,\r\n ContentModelListItemFormat,\r\n ContentModelListItemLevelFormat,\r\n DomToModelContext,\r\n ElementProcessor,\r\n FormatParser,\r\n} from 'roosterjs-content-model-types';\r\n\r\nconst PERCENTAGE_REGEX = /%/;\r\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\r\n\r\n/**\r\n * @internal\r\n * Handles Pasted content when source is Word Desktop\r\n * @param ev ContentModelBeforePasteEvent\r\n */\r\nexport function processPastedContentFromWordDesktop(ev: ContentModelBeforePasteEvent) {\r\n setProcessor(ev.domToModelOption, 'element', wordDesktopElementProcessor);\r\n addParser(ev.domToModelOption, 'block', removeNonValidLineHeight);\r\n addParser(ev.domToModelOption, 'listLevel', listLevelParser);\r\n addParser(ev.domToModelOption, 'listItemElement', listItemElementParser);\r\n\r\n // Remove \"border:none\" for image to fix image resize behavior\r\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\r\n // displayed incorrectly when resize it. So we need to drop this style\r\n chainSanitizerCallback(\r\n ev.sanitizingOption.cssStyleCallbacks,\r\n 'border',\r\n (value, element) => element.tagName != 'IMG' || value != 'none'\r\n );\r\n\r\n // Preserve <o:p> when its innerHTML is \"&nbsp;\" to avoid dropping an empty line\r\n chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => {\r\n moveChildNodes(element);\r\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); // &nbsp;\r\n return true;\r\n });\r\n}\r\n\r\n/**\r\n * @internal\r\n * Exported only for unit test\r\n */\r\nexport const wordDesktopElementProcessor: ElementProcessor<HTMLElement> = (\r\n group,\r\n element,\r\n context\r\n) => {\r\n const styles = getStyles(element);\r\n // Process Word Lists or Word Commands, otherwise use the default processor on this element.\r\n if (\r\n !(processWordList(styles, group, element, context) || processWordComments(styles, element))\r\n ) {\r\n context.defaultElementProcessors.element(group, element, context);\r\n }\r\n};\r\n\r\nfunction removeNonValidLineHeight(\r\n format: ContentModelBlockFormat,\r\n element: HTMLElement,\r\n context: DomToModelContext,\r\n defaultStyle: Readonly<Partial<CSSStyleDeclaration>>\r\n): void {\r\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\r\n let parsedLineHeight: number;\r\n if (\r\n PERCENTAGE_REGEX.test(element.style.lineHeight) &&\r\n !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&\r\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\r\n ) {\r\n format.lineHeight = defaultStyle.lineHeight;\r\n }\r\n}\r\n\r\nfunction listLevelParser(\r\n format: ContentModelListItemLevelFormat,\r\n element: HTMLElement,\r\n context: DomToModelContext,\r\n defaultStyle: Readonly<Partial<CSSStyleDeclaration>>\r\n): void {\r\n if (element.style.marginLeft != '') {\r\n format.marginLeft = defaultStyle.marginLeft;\r\n }\r\n\r\n format.marginBottom = undefined;\r\n}\r\n\r\nconst listItemElementParser: FormatParser<ContentModelListItemFormat> = (\r\n format: ContentModelListItemFormat,\r\n element: HTMLElement\r\n): void => {\r\n if (element.style.marginLeft) {\r\n format.marginLeft = undefined;\r\n }\r\n if (element.style.marginRight) {\r\n format.marginRight = undefined;\r\n }\r\n};\r\n"]}
@@ -1,7 +1,7 @@
1
- /**
2
- * @internal
3
- * Check whether the element contain Word attributes related to comments and if it does we should no process
4
- * this element.
5
- * @returns
6
- */
7
- export declare function processWordComments(styles: Record<string, string>, element: HTMLElement): boolean;
1
+ /**
2
+ * @internal
3
+ * Check whether the element contain Word attributes related to comments and if it does we should no process
4
+ * this element.
5
+ * @returns
6
+ */
7
+ export declare function processWordComments(styles: Record<string, string>, element: HTMLElement): boolean;
@@ -1,22 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processWordComments = void 0;
4
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
- var MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;
6
- var MSO_SPECIAL_CHARACTER = 'mso-special-character';
7
- var MSO_SPECIAL_CHARACTER_COMMENT = 'comment';
8
- var MSO_ELEMENT = 'mso-element';
9
- var MSO_ELEMENT_COMMENT_LIST = 'comment-list';
10
- /**
11
- * @internal
12
- * Check whether the element contain Word attributes related to comments and if it does we should no process
13
- * this element.
14
- * @returns
15
- */
16
- function processWordComments(styles, element) {
17
- return (styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||
18
- ((0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a') && MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||
19
- styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST);
20
- }
21
- exports.processWordComments = processWordComments;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processWordComments = void 0;
4
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
+ var MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;
6
+ var MSO_SPECIAL_CHARACTER = 'mso-special-character';
7
+ var MSO_SPECIAL_CHARACTER_COMMENT = 'comment';
8
+ var MSO_ELEMENT = 'mso-element';
9
+ var MSO_ELEMENT_COMMENT_LIST = 'comment-list';
10
+ /**
11
+ * @internal
12
+ * Check whether the element contain Word attributes related to comments and if it does we should no process
13
+ * this element.
14
+ * @returns
15
+ */
16
+ function processWordComments(styles, element) {
17
+ return (styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||
18
+ ((0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a') && MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||
19
+ styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST);
20
+ }
21
+ exports.processWordComments = processWordComments;
22
22
  //# sourceMappingURL=processWordComments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processWordComments.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts"],"names":[],"mappings":";;;AAAA,2EAA8D;AAE9D,IAAM,6BAA6B,GAAG,WAAW,CAAC;AAClD,IAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,IAAM,6BAA6B,GAAG,SAAS,CAAC;AAChD,IAAM,WAAW,GAAG,aAAa,CAAC;AAClC,IAAM,wBAAwB,GAAG,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAA8B,EAAE,OAAoB;IACpF,OAAO,CACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,6BAA6B;QAC9D,CAAC,IAAA,6CAAe,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,WAAW,CAAC,IAAI,wBAAwB,CAClD,CAAC;AACN,CAAC;AAND,kDAMC","sourcesContent":["import { isElementOfType } from 'roosterjs-content-model-dom';\n\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\nconst MSO_ELEMENT = 'mso-element';\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\n\n/**\n * @internal\n * Check whether the element contain Word attributes related to comments and if it does we should no process\n * this element.\n * @returns\n */\nexport function processWordComments(styles: Record<string, string>, element: HTMLElement) {\n return (\n styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||\n (isElementOfType(element, 'a') && MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||\n styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST\n );\n}\n"]}
1
+ {"version":3,"file":"processWordComments.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts"],"names":[],"mappings":";;;AAAA,2EAA8D;AAE9D,IAAM,6BAA6B,GAAG,WAAW,CAAC;AAClD,IAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,IAAM,6BAA6B,GAAG,SAAS,CAAC;AAChD,IAAM,WAAW,GAAG,aAAa,CAAC;AAClC,IAAM,wBAAwB,GAAG,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAA8B,EAAE,OAAoB;IACpF,OAAO,CACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,6BAA6B;QAC9D,CAAC,IAAA,6CAAe,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,WAAW,CAAC,IAAI,wBAAwB,CAClD,CAAC;AACN,CAAC;AAND,kDAMC","sourcesContent":["import { isElementOfType } from 'roosterjs-content-model-dom';\r\n\r\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\r\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\r\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\r\nconst MSO_ELEMENT = 'mso-element';\r\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\r\n\r\n/**\r\n * @internal\r\n * Check whether the element contain Word attributes related to comments and if it does we should no process\r\n * this element.\r\n * @returns\r\n */\r\nexport function processWordComments(styles: Record<string, string>, element: HTMLElement) {\r\n return (\r\n styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||\r\n (isElementOfType(element, 'a') && MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||\r\n styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST\r\n );\r\n}\r\n"]}
@@ -1,10 +1,10 @@
1
- import type { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- * @param styles
5
- * @param group
6
- * @param element
7
- * @param context
8
- * @returns
9
- */
10
- export declare function processWordList(styles: Record<string, string>, group: ContentModelBlockGroup, element: HTMLElement, context: DomToModelContext): boolean;
1
+ import type { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';
2
+ /**
3
+ * @internal
4
+ * @param styles
5
+ * @param group
6
+ * @param element
7
+ * @param context
8
+ * @returns
9
+ */
10
+ export declare function processWordList(styles: Record<string, string>, group: ContentModelBlockGroup, element: HTMLElement, context: DomToModelContext): boolean;
@@ -1,155 +1,155 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processWordList = void 0;
4
- var tslib_1 = require("tslib");
5
- var getStyles_1 = require("../utils/getStyles");
6
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
7
- /** Word list metadata style name */
8
- var MSO_LIST = 'mso-list';
9
- var MSO_LIST_IGNORE = 'ignore';
10
- var LOOKUP_DEPTH = 5;
11
- var WORD_FIRST_LIST = 'l0';
12
- /**
13
- * @internal
14
- * @param styles
15
- * @param group
16
- * @param element
17
- * @param context
18
- * @returns
19
- */
20
- function processWordList(styles, group, element, context) {
21
- var listFormat = context.listFormat;
22
- if (!listFormat.wordKnownLevels) {
23
- listFormat.wordKnownLevels = new Map();
24
- }
25
- var wordListStyle = styles[MSO_LIST] || '';
26
- // If the element contains Ignore style, do not process it,
27
- // Usually this element contains the fake bullet used in Word Desktop.
28
- if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {
29
- return true;
30
- }
31
- var listProps = wordListStyle.split(' ');
32
- // Try get the list metadata from word, which follows this format: l1 level1 lfo2
33
- // If we are able to get the level property means we can process this element to be a list
34
- listFormat.wordLevel = listProps[1] && parseInt(listProps[1].substr('level'.length));
35
- listFormat.wordList = listProps[0] || WORD_FIRST_LIST;
36
- if (listFormat.levels.length == 0) {
37
- listFormat.levels = listFormat.wordKnownLevels.get(listFormat.wordList) || [];
38
- }
39
- if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
40
- var wordLevel = listFormat.wordLevel;
41
- // Retrieve the Fake bullet on the element and also the list type
42
- var fakeBullet = getFakeBulletText(element);
43
- var listType = getFakeBulletTagName(fakeBullet);
44
- // Create the new level of the list item and parse the format
45
- var newLevel = (0, roosterjs_content_model_dom_1.createListLevel)(listType);
46
- (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listLevel, newLevel.format, context);
47
- // If the list format is in a different level, update the array so we get the new item
48
- // To be in the same level as the provided level metadata.
49
- if (wordLevel > listFormat.levels.length) {
50
- while (wordLevel != listFormat.levels.length) {
51
- listFormat.levels.push(newLevel);
52
- }
53
- }
54
- else {
55
- listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
56
- listFormat.levels[wordLevel - 1] = newLevel;
57
- }
58
- listFormat.listParent = group;
59
- processAsListItem(listFormat, context, element, group, fakeBullet);
60
- if (listFormat.levels.length > 0 &&
61
- listFormat.wordKnownLevels.get(listFormat.wordList) != listFormat.levels) {
62
- listFormat.wordKnownLevels.set(listFormat.wordList, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(listFormat.levels), false));
63
- }
64
- return true;
65
- }
66
- return false;
67
- }
68
- exports.processWordList = processWordList;
69
- function processAsListItem(listFormat, context, element, group, fakeBullet) {
70
- var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
71
- var lastLevel = listItem.levels[listItem.levels.length - 1];
72
- (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
73
- (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
74
- if ((lastLevel === null || lastLevel === void 0 ? void 0 : lastLevel.listType) == 'OL') {
75
- (0, roosterjs_content_model_dom_1.parseFormat)(element, [startNumberOverrideParser(fakeBullet)], listItem.levels[listItem.levels.length - 1].format, context);
76
- }
77
- context.elementProcessors.child(listItem, element, context);
78
- (0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
79
- }
80
- function startNumberOverrideParser(fakeBullet) {
81
- return function (format, _, context) {
82
- var _a = context.listFormat, wordKnownLevels = _a.wordKnownLevels, wordLevel = _a.wordLevel, wordList = _a.wordList;
83
- if (typeof wordLevel === 'number' && wordList) {
84
- var start = parseInt(fakeBullet);
85
- if (start != undefined && !isNaN(start) && !(wordKnownLevels === null || wordKnownLevels === void 0 ? void 0 : wordKnownLevels.has(wordList))) {
86
- format.startNumberOverride = start;
87
- }
88
- }
89
- };
90
- }
91
- /**
92
- * Check whether the string is a fake bullet from word Desktop
93
- */
94
- function isFakeBullet(fakeBullet) {
95
- return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;
96
- }
97
- /** Given a fake bullet text, returns the type of list that should be used for it */
98
- function getFakeBulletTagName(fakeBullet) {
99
- return isFakeBullet(fakeBullet) ? 'UL' : 'OL';
100
- }
101
- /**
102
- * Finds the fake bullet text out of the specified node and returns it. For images, it will return
103
- * a bullet string. If not found, it returns null...
104
- */
105
- function getFakeBulletText(node, levels) {
106
- var _a, _b;
107
- // Word uses the following format for their bullets:
108
- // &lt;p style="mso-list:l1 level1 lfo2"&gt;
109
- // &lt;span style="..."&gt;
110
- // &lt;span style="mso-list:Ignore"&gt;1.&lt;span style="..."&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/span&gt;&lt;/span&gt;
111
- // &lt;/span&gt;
112
- // Content here...
113
- // &lt;/p&gt;
114
- //
115
- // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That
116
- // text or image node will be the fake bullet we are looking for
117
- var result = '';
118
- levels = levels || LOOKUP_DEPTH;
119
- var child = node.firstChild;
120
- while (!result && child) {
121
- // Check if this is the node that holds the fake bullets (mso-list: Ignore)
122
- if (isIgnoreNode(child)) {
123
- // Yes... this is the node that holds either the text or image data
124
- result = (_b = (_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
125
- // This is the case for image case
126
- if (result.length == 0) {
127
- result = 'o';
128
- }
129
- }
130
- else if ((0, roosterjs_content_model_dom_1.isNodeOfType)(child, 'ELEMENT_NODE') && levels > 1) {
131
- // If this is an element and we are not in the last level, try to get the fake bullet
132
- // out of the child
133
- result = getFakeBulletText(child, levels - 1);
134
- }
135
- child = child.nextSibling;
136
- }
137
- return result;
138
- }
139
- /**
140
- * Checks if the specified node is marked as a mso-list: Ignore. These
141
- * nodes need to be ignored when a list item is converted into standard
142
- * HTML lists
143
- */
144
- function isIgnoreNode(node) {
145
- if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE')) {
146
- var listAttribute = (0, getStyles_1.getStyles)(node)[MSO_LIST];
147
- if (listAttribute &&
148
- listAttribute.length > 0 &&
149
- listAttribute.trim().toLowerCase() == MSO_LIST_IGNORE) {
150
- return true;
151
- }
152
- }
153
- return false;
154
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processWordList = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var getStyles_1 = require("../utils/getStyles");
6
+ var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
7
+ /** Word list metadata style name */
8
+ var MSO_LIST = 'mso-list';
9
+ var MSO_LIST_IGNORE = 'ignore';
10
+ var LOOKUP_DEPTH = 5;
11
+ var WORD_FIRST_LIST = 'l0';
12
+ /**
13
+ * @internal
14
+ * @param styles
15
+ * @param group
16
+ * @param element
17
+ * @param context
18
+ * @returns
19
+ */
20
+ function processWordList(styles, group, element, context) {
21
+ var listFormat = context.listFormat;
22
+ if (!listFormat.wordKnownLevels) {
23
+ listFormat.wordKnownLevels = new Map();
24
+ }
25
+ var wordListStyle = styles[MSO_LIST] || '';
26
+ // If the element contains Ignore style, do not process it,
27
+ // Usually this element contains the fake bullet used in Word Desktop.
28
+ if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {
29
+ return true;
30
+ }
31
+ var listProps = wordListStyle.split(' ');
32
+ // Try get the list metadata from word, which follows this format: l1 level1 lfo2
33
+ // If we are able to get the level property means we can process this element to be a list
34
+ listFormat.wordLevel = listProps[1] && parseInt(listProps[1].substr('level'.length));
35
+ listFormat.wordList = listProps[0] || WORD_FIRST_LIST;
36
+ if (listFormat.levels.length == 0) {
37
+ listFormat.levels = listFormat.wordKnownLevels.get(listFormat.wordList) || [];
38
+ }
39
+ if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
40
+ var wordLevel = listFormat.wordLevel;
41
+ // Retrieve the Fake bullet on the element and also the list type
42
+ var fakeBullet = getFakeBulletText(element);
43
+ var listType = getFakeBulletTagName(fakeBullet);
44
+ // Create the new level of the list item and parse the format
45
+ var newLevel = (0, roosterjs_content_model_dom_1.createListLevel)(listType);
46
+ (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listLevel, newLevel.format, context);
47
+ // If the list format is in a different level, update the array so we get the new item
48
+ // To be in the same level as the provided level metadata.
49
+ if (wordLevel > listFormat.levels.length) {
50
+ while (wordLevel != listFormat.levels.length) {
51
+ listFormat.levels.push(newLevel);
52
+ }
53
+ }
54
+ else {
55
+ listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
56
+ listFormat.levels[wordLevel - 1] = newLevel;
57
+ }
58
+ listFormat.listParent = group;
59
+ processAsListItem(listFormat, context, element, group, fakeBullet);
60
+ if (listFormat.levels.length > 0 &&
61
+ listFormat.wordKnownLevels.get(listFormat.wordList) != listFormat.levels) {
62
+ listFormat.wordKnownLevels.set(listFormat.wordList, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(listFormat.levels), false));
63
+ }
64
+ return true;
65
+ }
66
+ return false;
67
+ }
68
+ exports.processWordList = processWordList;
69
+ function processAsListItem(listFormat, context, element, group, fakeBullet) {
70
+ var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
71
+ var lastLevel = listItem.levels[listItem.levels.length - 1];
72
+ (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
73
+ (0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
74
+ if ((lastLevel === null || lastLevel === void 0 ? void 0 : lastLevel.listType) == 'OL') {
75
+ (0, roosterjs_content_model_dom_1.parseFormat)(element, [startNumberOverrideParser(fakeBullet)], listItem.levels[listItem.levels.length - 1].format, context);
76
+ }
77
+ context.elementProcessors.child(listItem, element, context);
78
+ (0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
79
+ }
80
+ function startNumberOverrideParser(fakeBullet) {
81
+ return function (format, _, context) {
82
+ var _a = context.listFormat, wordKnownLevels = _a.wordKnownLevels, wordLevel = _a.wordLevel, wordList = _a.wordList;
83
+ if (typeof wordLevel === 'number' && wordList) {
84
+ var start = parseInt(fakeBullet);
85
+ if (start != undefined && !isNaN(start) && !(wordKnownLevels === null || wordKnownLevels === void 0 ? void 0 : wordKnownLevels.has(wordList))) {
86
+ format.startNumberOverride = start;
87
+ }
88
+ }
89
+ };
90
+ }
91
+ /**
92
+ * Check whether the string is a fake bullet from word Desktop
93
+ */
94
+ function isFakeBullet(fakeBullet) {
95
+ return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;
96
+ }
97
+ /** Given a fake bullet text, returns the type of list that should be used for it */
98
+ function getFakeBulletTagName(fakeBullet) {
99
+ return isFakeBullet(fakeBullet) ? 'UL' : 'OL';
100
+ }
101
+ /**
102
+ * Finds the fake bullet text out of the specified node and returns it. For images, it will return
103
+ * a bullet string. If not found, it returns null...
104
+ */
105
+ function getFakeBulletText(node, levels) {
106
+ var _a, _b;
107
+ // Word uses the following format for their bullets:
108
+ // &lt;p style="mso-list:l1 level1 lfo2"&gt;
109
+ // &lt;span style="..."&gt;
110
+ // &lt;span style="mso-list:Ignore"&gt;1.&lt;span style="..."&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/span&gt;&lt;/span&gt;
111
+ // &lt;/span&gt;
112
+ // Content here...
113
+ // &lt;/p&gt;
114
+ //
115
+ // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That
116
+ // text or image node will be the fake bullet we are looking for
117
+ var result = '';
118
+ levels = levels || LOOKUP_DEPTH;
119
+ var child = node.firstChild;
120
+ while (!result && child) {
121
+ // Check if this is the node that holds the fake bullets (mso-list: Ignore)
122
+ if (isIgnoreNode(child)) {
123
+ // Yes... this is the node that holds either the text or image data
124
+ result = (_b = (_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
125
+ // This is the case for image case
126
+ if (result.length == 0) {
127
+ result = 'o';
128
+ }
129
+ }
130
+ else if ((0, roosterjs_content_model_dom_1.isNodeOfType)(child, 'ELEMENT_NODE') && levels > 1) {
131
+ // If this is an element and we are not in the last level, try to get the fake bullet
132
+ // out of the child
133
+ result = getFakeBulletText(child, levels - 1);
134
+ }
135
+ child = child.nextSibling;
136
+ }
137
+ return result;
138
+ }
139
+ /**
140
+ * Checks if the specified node is marked as a mso-list: Ignore. These
141
+ * nodes need to be ignored when a list item is converted into standard
142
+ * HTML lists
143
+ */
144
+ function isIgnoreNode(node) {
145
+ if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE')) {
146
+ var listAttribute = (0, getStyles_1.getStyles)(node)[MSO_LIST];
147
+ if (listAttribute &&
148
+ listAttribute.length > 0 &&
149
+ listAttribute.trim().toLowerCase() == MSO_LIST_IGNORE) {
150
+ return true;
151
+ }
152
+ }
153
+ return false;
154
+ }
155
155
  //# sourceMappingURL=processWordLists.js.map