roosterjs-content-model-plugins 0.28.2 → 9.0.1

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 (191) hide show
  1. package/README.md +47 -37
  2. package/lib/autoFormat/AutoFormatPlugin.d.ts +5 -2
  3. package/lib/autoFormat/AutoFormatPlugin.js +23 -11
  4. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
  5. package/lib/autoFormat/link/createLinkAfterSpace.js +28 -22
  6. package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  7. package/lib/autoFormat/link/getLinkSegment.js +2 -2
  8. package/lib/autoFormat/link/getLinkSegment.js.map +1 -1
  9. package/lib/autoFormat/list/getListTypeStyle.js +14 -14
  10. package/lib/autoFormat/list/getListTypeStyle.js.map +1 -1
  11. package/lib/autoFormat/list/getNumberingListStyle.js +29 -29
  12. package/lib/autoFormat/list/getNumberingListStyle.js.map +1 -1
  13. package/lib/autoFormat/list/keyboardListTrigger.d.ts +1 -1
  14. package/lib/autoFormat/list/keyboardListTrigger.js +10 -11
  15. package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
  16. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js +2 -2
  17. package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  18. package/lib/edit/deleteSteps/deleteCollapsedSelection.js +4 -5
  19. package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  20. package/lib/edit/deleteSteps/deleteEmptyQuote.js +2 -3
  21. package/lib/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
  22. package/lib/edit/deleteSteps/deleteList.js +3 -5
  23. package/lib/edit/deleteSteps/deleteList.js.map +1 -1
  24. package/lib/edit/deleteSteps/deleteWordSelection.js +3 -4
  25. package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  26. package/lib/edit/inputSteps/handleEnterOnList.js +2 -3
  27. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
  28. package/lib/edit/keyboardDelete.js +4 -5
  29. package/lib/edit/keyboardDelete.js.map +1 -1
  30. package/lib/edit/keyboardInput.js +3 -4
  31. package/lib/edit/keyboardInput.js.map +1 -1
  32. package/lib/edit/keyboardTab.js +3 -3
  33. package/lib/edit/keyboardTab.js.map +1 -1
  34. package/lib/index.d.ts +3 -0
  35. package/lib/index.js +5 -1
  36. package/lib/index.js.map +1 -1
  37. package/lib/markdown/MarkdownPlugin.d.ts +55 -0
  38. package/lib/markdown/MarkdownPlugin.js +177 -0
  39. package/lib/markdown/MarkdownPlugin.js.map +1 -0
  40. package/lib/markdown/utils/setFormat.d.ts +5 -0
  41. package/lib/markdown/utils/setFormat.js +46 -0
  42. package/lib/markdown/utils/setFormat.js.map +1 -0
  43. package/lib/paste/WordDesktop/processWordLists.js +2 -3
  44. package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
  45. package/lib/pluginUtils/splitTextSegment.d.ts +5 -0
  46. package/lib/pluginUtils/splitTextSegment.js +26 -0
  47. package/lib/pluginUtils/splitTextSegment.js.map +1 -0
  48. package/lib/shortcut/ShortcutPlugin.js +2 -2
  49. package/lib/shortcut/ShortcutPlugin.js.map +1 -1
  50. package/lib/shortcut/utils/setShortcutIndentationCommand.js +2 -2
  51. package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  52. package/lib/tableEdit/editors/features/CellResizer.js +5 -6
  53. package/lib/tableEdit/editors/features/CellResizer.js.map +1 -1
  54. package/lib/tableEdit/editors/features/TableResizer.js +2 -3
  55. package/lib/tableEdit/editors/features/TableResizer.js.map +1 -1
  56. package/lib/watermark/WatermarkFormat.d.ts +5 -0
  57. package/lib/watermark/WatermarkFormat.js +3 -0
  58. package/lib/watermark/WatermarkFormat.js.map +1 -0
  59. package/lib/watermark/WatermarkPlugin.d.ts +37 -0
  60. package/lib/watermark/WatermarkPlugin.js +99 -0
  61. package/lib/watermark/WatermarkPlugin.js.map +1 -0
  62. package/lib/watermark/isModelEmptyFast.d.ts +6 -0
  63. package/lib/watermark/isModelEmptyFast.js +35 -0
  64. package/lib/watermark/isModelEmptyFast.js.map +1 -0
  65. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +5 -2
  66. package/lib-amd/autoFormat/AutoFormatPlugin.js +23 -11
  67. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
  68. package/lib-amd/autoFormat/link/createLinkAfterSpace.js +28 -22
  69. package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  70. package/lib-amd/autoFormat/link/getLinkSegment.js +2 -2
  71. package/lib-amd/autoFormat/link/getLinkSegment.js.map +1 -1
  72. package/lib-amd/autoFormat/list/getListTypeStyle.js +14 -14
  73. package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -1
  74. package/lib-amd/autoFormat/list/getNumberingListStyle.js +29 -29
  75. package/lib-amd/autoFormat/list/getNumberingListStyle.js.map +1 -1
  76. package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +1 -1
  77. package/lib-amd/autoFormat/list/keyboardListTrigger.js +11 -11
  78. package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
  79. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js +2 -2
  80. package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  81. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +5 -5
  82. package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  83. package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js +3 -3
  84. package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
  85. package/lib-amd/edit/deleteSteps/deleteList.js +3 -5
  86. package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
  87. package/lib-amd/edit/deleteSteps/deleteWordSelection.js +4 -4
  88. package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  89. package/lib-amd/edit/inputSteps/handleEnterOnList.js +3 -3
  90. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
  91. package/lib-amd/edit/keyboardDelete.js +4 -4
  92. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  93. package/lib-amd/edit/keyboardInput.js +3 -3
  94. package/lib-amd/edit/keyboardInput.js.map +1 -1
  95. package/lib-amd/edit/keyboardTab.js +3 -3
  96. package/lib-amd/edit/keyboardTab.js.map +1 -1
  97. package/lib-amd/index.d.ts +3 -0
  98. package/lib-amd/index.js +4 -2
  99. package/lib-amd/index.js.map +1 -1
  100. package/lib-amd/markdown/MarkdownPlugin.d.ts +55 -0
  101. package/lib-amd/markdown/MarkdownPlugin.js +178 -0
  102. package/lib-amd/markdown/MarkdownPlugin.js.map +1 -0
  103. package/lib-amd/markdown/utils/setFormat.d.ts +5 -0
  104. package/lib-amd/markdown/utils/setFormat.js +45 -0
  105. package/lib-amd/markdown/utils/setFormat.js.map +1 -0
  106. package/lib-amd/paste/WordDesktop/processWordLists.js +3 -3
  107. package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
  108. package/lib-amd/pluginUtils/splitTextSegment.d.ts +5 -0
  109. package/lib-amd/pluginUtils/splitTextSegment.js +26 -0
  110. package/lib-amd/pluginUtils/splitTextSegment.js.map +1 -0
  111. package/lib-amd/shortcut/ShortcutPlugin.js +2 -2
  112. package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -1
  113. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +2 -2
  114. package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  115. package/lib-amd/tableEdit/editors/features/CellResizer.js +6 -6
  116. package/lib-amd/tableEdit/editors/features/CellResizer.js.map +1 -1
  117. package/lib-amd/tableEdit/editors/features/TableResizer.js +3 -3
  118. package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -1
  119. package/lib-amd/watermark/WatermarkFormat.d.ts +5 -0
  120. package/lib-amd/watermark/WatermarkFormat.js +5 -0
  121. package/lib-amd/watermark/WatermarkFormat.js.map +1 -0
  122. package/lib-amd/watermark/WatermarkPlugin.d.ts +37 -0
  123. package/lib-amd/watermark/WatermarkPlugin.js +99 -0
  124. package/lib-amd/watermark/WatermarkPlugin.js.map +1 -0
  125. package/lib-amd/watermark/isModelEmptyFast.d.ts +6 -0
  126. package/lib-amd/watermark/isModelEmptyFast.js +37 -0
  127. package/lib-amd/watermark/isModelEmptyFast.js.map +1 -0
  128. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +5 -2
  129. package/lib-mjs/autoFormat/AutoFormatPlugin.js +23 -11
  130. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
  131. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +28 -22
  132. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  133. package/lib-mjs/autoFormat/link/getLinkSegment.js +1 -1
  134. package/lib-mjs/autoFormat/link/getLinkSegment.js.map +1 -1
  135. package/lib-mjs/autoFormat/list/getListTypeStyle.js +2 -2
  136. package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -1
  137. package/lib-mjs/autoFormat/list/getNumberingListStyle.js +1 -1
  138. package/lib-mjs/autoFormat/list/getNumberingListStyle.js.map +1 -1
  139. package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +1 -1
  140. package/lib-mjs/autoFormat/list/keyboardListTrigger.js +11 -12
  141. package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
  142. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js +1 -1
  143. package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
  144. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +1 -2
  145. package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
  146. package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js +1 -2
  147. package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
  148. package/lib-mjs/edit/deleteSteps/deleteList.js +2 -4
  149. package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
  150. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js +1 -2
  151. package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
  152. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +1 -2
  153. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
  154. package/lib-mjs/edit/keyboardDelete.js +1 -2
  155. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  156. package/lib-mjs/edit/keyboardInput.js +1 -2
  157. package/lib-mjs/edit/keyboardInput.js.map +1 -1
  158. package/lib-mjs/edit/keyboardTab.js +1 -1
  159. package/lib-mjs/edit/keyboardTab.js.map +1 -1
  160. package/lib-mjs/index.d.ts +3 -0
  161. package/lib-mjs/index.js +2 -0
  162. package/lib-mjs/index.js.map +1 -1
  163. package/lib-mjs/markdown/MarkdownPlugin.d.ts +55 -0
  164. package/lib-mjs/markdown/MarkdownPlugin.js +174 -0
  165. package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -0
  166. package/lib-mjs/markdown/utils/setFormat.d.ts +5 -0
  167. package/lib-mjs/markdown/utils/setFormat.js +42 -0
  168. package/lib-mjs/markdown/utils/setFormat.js.map +1 -0
  169. package/lib-mjs/paste/WordDesktop/processWordLists.js +1 -2
  170. package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
  171. package/lib-mjs/pluginUtils/splitTextSegment.d.ts +5 -0
  172. package/lib-mjs/pluginUtils/splitTextSegment.js +22 -0
  173. package/lib-mjs/pluginUtils/splitTextSegment.js.map +1 -0
  174. package/lib-mjs/shortcut/ShortcutPlugin.js +1 -1
  175. package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -1
  176. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +1 -1
  177. package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
  178. package/lib-mjs/tableEdit/editors/features/CellResizer.js +1 -2
  179. package/lib-mjs/tableEdit/editors/features/CellResizer.js.map +1 -1
  180. package/lib-mjs/tableEdit/editors/features/TableResizer.js +1 -2
  181. package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -1
  182. package/lib-mjs/watermark/WatermarkFormat.d.ts +5 -0
  183. package/lib-mjs/watermark/WatermarkFormat.js +2 -0
  184. package/lib-mjs/watermark/WatermarkFormat.js.map +1 -0
  185. package/lib-mjs/watermark/WatermarkPlugin.d.ts +37 -0
  186. package/lib-mjs/watermark/WatermarkPlugin.js +96 -0
  187. package/lib-mjs/watermark/WatermarkPlugin.js.map +1 -0
  188. package/lib-mjs/watermark/isModelEmptyFast.d.ts +6 -0
  189. package/lib-mjs/watermark/isModelEmptyFast.js +31 -0
  190. package/lib-mjs/watermark/isModelEmptyFast.js.map +1 -0
  191. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;;IAqCA;;OAEG;IACH,IAAM,cAAc,GAAgC;QAChD,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,IAAI;KACjB,CAAC;IAEF;;;OAGG;IACH;QAGI;;;;WAIG;QACH,0BAAoB,OAA2C;YAA3C,wBAAA,EAAA,wBAA2C;YAA3C,YAAO,GAAP,OAAO,CAAoC;YAPvD,WAAM,GAAmB,IAAI,CAAC;QAO4B,CAAC;QAEnE;;WAEG;QACH,kCAAO,GAAP;YACI,OAAO,YAAY,CAAC;QACxB,CAAC;QAED;;;;;WAKG;QACH,qCAAU,GAAV,UAAW,MAAe;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;QAED;;;;WAIG;QACH,kCAAO,GAAP;YACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED;;;;;WAKG;QACH,wCAAa,GAAb,UAAc,KAAkB;YAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,QAAQ,KAAK,CAAC,SAAS,EAAE;oBACrB,KAAK,SAAS;wBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC5C,MAAM;oBACV,KAAK,gBAAgB;wBACjB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBACnD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,6CAAkB,GAA1B,UAA2B,MAAe,EAAE,KAAmB;YAC3D,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBACrD,IAAA,KAAsD,IAAI,CAAC,OAAO,EAAhE,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,UAAU,gBAAA,EAAE,QAAQ,cAAiB,CAAC;gBACzE,QAAQ,QAAQ,CAAC,GAAG,EAAE;oBAClB,KAAK,GAAG;wBACJ,IAAA,yCAAmB,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;wBACjE,IAAI,QAAQ,EAAE;4BACV,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC;yBAChC;wBACD,MAAM;oBACV,KAAK,WAAW;wBACZ,IAAI,UAAU,EAAE;4BACZ,IAAA,eAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBAC5B;wBACD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,oDAAyB,GAAjC,UAAkC,MAAe,EAAE,KAA0B;YACjE,IAAA,QAAQ,GAAK,IAAI,CAAC,OAAO,SAAjB,CAAkB;YAClC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE;gBACrC,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;aACtB;QACL,CAAC;QACL,uBAAC;IAAD,CAAC,AAjFD,IAiFC;IAjFY,4CAAgB","sourcesContent":["import { createLink } from './link/createLink';\nimport { createLinkAfterSpace } from './link/createLinkAfterSpace';\nimport { keyboardListTrigger } from './list/keyboardListTrigger';\nimport { unlink } from './link/unlink';\nimport type {\n ContentChangedEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options to customize the Content Model Auto Format Plugin\n */\nexport type AutoFormatOptions = {\n /**\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\n */\n autoBullet: boolean;\n\n /**\n * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true\n */\n autoNumbering: boolean;\n\n /**\n * When press backspace before a link, remove the hyperlink\n */\n autoUnlink: boolean;\n\n /**\n * When paste content, create hyperlink for the pasted link\n */\n autoLink: boolean;\n};\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<AutoFormatOptions> = {\n autoBullet: true,\n autoNumbering: true,\n autoUnlink: false,\n autoLink: true,\n};\n\n/**\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\n * It can be customized with options to enable or disable auto list features.\n */\nexport class AutoFormatPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to true.\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to true.\n */\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'AutoFormat';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case 'keyDown':\n this.handleKeyDownEvent(this.editor, event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(this.editor, event);\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IEditor, event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\n const { autoBullet, autoNumbering, autoUnlink, autoLink } = this.options;\n switch (rawEvent.key) {\n case ' ':\n keyboardListTrigger(editor, rawEvent, autoBullet, autoNumbering);\n if (autoLink) {\n createLinkAfterSpace(editor);\n }\n break;\n case 'Backspace':\n if (autoUnlink) {\n unlink(editor, rawEvent);\n }\n break;\n }\n }\n }\n\n private handleContentChangedEvent(editor: IEditor, event: ContentChangedEvent) {\n const { autoLink } = this.options;\n if (event.source == 'Paste' && autoLink) {\n createLink(editor);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;;IAsCA;;OAEG;IACH,IAAM,cAAc,GAAgC;QAChD,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;KAClB,CAAC;IAEF;;;OAGG;IACH;QAGI;;;;;;WAMG;QACH,0BAAoB,OAA2C;YAA3C,wBAAA,EAAA,wBAA2C;YAA3C,YAAO,GAAP,OAAO,CAAoC;YATvD,WAAM,GAAmB,IAAI,CAAC;QAS4B,CAAC;QAEnE;;WAEG;QACH,kCAAO,GAAP;YACI,OAAO,YAAY,CAAC;QACxB,CAAC;QAED;;;;;WAKG;QACH,qCAAU,GAAV,UAAW,MAAe;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;QAED;;;;WAIG;QACH,kCAAO,GAAP;YACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED;;;;;WAKG;QACH,wCAAa,GAAb,UAAc,KAAkB;YAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,QAAQ,KAAK,CAAC,SAAS,EAAE;oBACrB,KAAK,OAAO;wBACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAChD,MAAM;oBACV,KAAK,SAAS;wBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC5C,MAAM;oBACV,KAAK,gBAAgB;wBACjB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBACnD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,iDAAsB,GAA9B,UAA+B,MAAe,EAAE,KAAuB;YACnE,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,QAAQ,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,QAAQ,QAAQ,CAAC,IAAI,EAAE;oBACnB,KAAK,GAAG;wBACE,IAAA,KAA0C,IAAI,CAAC,OAAO,EAApD,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,QAAQ,cAAiB,CAAC;wBAC7D,IAAA,yCAAmB,EAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;wBACvD,IAAI,QAAQ,EAAE;4BACV,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC;yBAChC;wBACD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,6CAAkB,GAA1B,UAA2B,MAAe,EAAE,KAAmB;YAC3D,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBAC3D,QAAQ,QAAQ,CAAC,GAAG,EAAE;oBAClB,KAAK,WAAW;wBACZ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;4BACzB,IAAA,eAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBAC5B;wBACD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,oDAAyB,GAAjC,UAAkC,MAAe,EAAE,KAA0B;YACjE,IAAA,QAAQ,GAAK,IAAI,CAAC,OAAO,SAAjB,CAAkB;YAClC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE;gBACrC,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;aACtB;QACL,CAAC;QACL,uBAAC;IAAD,CAAC,AA9FD,IA8FC;IA9FY,4CAAgB","sourcesContent":["import { createLink } from './link/createLink';\nimport { createLinkAfterSpace } from './link/createLinkAfterSpace';\nimport { keyboardListTrigger } from './list/keyboardListTrigger';\nimport { unlink } from './link/unlink';\nimport type {\n ContentChangedEvent,\n EditorInputEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options to customize the Content Model Auto Format Plugin\n */\nexport type AutoFormatOptions = {\n /**\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\n */\n autoBullet: boolean;\n\n /**\n * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true\n */\n autoNumbering: boolean;\n\n /**\n * When press backspace before a link, remove the hyperlink\n */\n autoUnlink: boolean;\n\n /**\n * When paste content, create hyperlink for the pasted link\n */\n autoLink: boolean;\n};\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<AutoFormatOptions> = {\n autoBullet: false,\n autoNumbering: false,\n autoUnlink: false,\n autoLink: false,\n};\n\n/**\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\n * It can be customized with options to enable or disable auto list features.\n */\nexport class AutoFormatPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to false.\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to false.\n * - autoLink: A boolean that enables or disables automatic hyperlink creation when pasting or typing content. Defaults to false.\n * - autoUnlink: A boolean that enables or disables automatic hyperlink removal when pressing backspace. Defaults to false.\n */\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'AutoFormat';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case 'input':\n this.handleEditorInputEvent(this.editor, event);\n break;\n case 'keyDown':\n this.handleKeyDownEvent(this.editor, event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(this.editor, event);\n break;\n }\n }\n }\n\n private handleEditorInputEvent(editor: IEditor, event: EditorInputEvent) {\n const rawEvent = event.rawEvent;\n if (rawEvent.inputType === 'insertText') {\n switch (rawEvent.data) {\n case ' ':\n const { autoBullet, autoNumbering, autoLink } = this.options;\n keyboardListTrigger(editor, autoBullet, autoNumbering);\n if (autoLink) {\n createLinkAfterSpace(editor);\n }\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IEditor, event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\n switch (rawEvent.key) {\n case 'Backspace':\n if (this.options.autoUnlink) {\n unlink(editor, rawEvent);\n }\n break;\n }\n }\n }\n\n private handleContentChangedEvent(editor: IEditor, event: ContentChangedEvent) {\n const { autoLink } = this.options;\n if (event.source == 'Paste' && autoLink) {\n createLink(editor);\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-core", "roosterjs-content-model-api"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_core_1, roosterjs_content_model_api_1) {
1
+ define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-api", "../../pluginUtils/splitTextSegment"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_api_1, splitTextSegment_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createLinkAfterSpace = void 0;
@@ -6,27 +6,33 @@ define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-
6
6
  * @internal
7
7
  */
8
8
  function createLinkAfterSpace(editor) {
9
- editor.formatContentModel(function (model) {
10
- var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
11
- if (selectedSegmentsAndParagraphs[0] && selectedSegmentsAndParagraphs[0][1]) {
12
- var length_1 = selectedSegmentsAndParagraphs[0][1].segments.length;
13
- var marker = selectedSegmentsAndParagraphs[0][1].segments[length_1 - 1];
14
- var textSegment = selectedSegmentsAndParagraphs[0][1].segments[length_1 - 2];
15
- if (marker.segmentType == 'SelectionMarker' &&
16
- textSegment.segmentType == 'Text' &&
17
- !textSegment.link) {
18
- var link = textSegment.text.split(' ').pop();
19
- if (link && (0, roosterjs_content_model_api_1.matchLink)(link)) {
20
- textSegment.text = textSegment.text.replace(link, '');
21
- var linkSegment = (0, roosterjs_content_model_dom_1.createText)(link, marker.format, {
22
- format: {
23
- href: link,
24
- underline: true,
25
- },
26
- dataset: {},
27
- });
28
- selectedSegmentsAndParagraphs[0][1].segments.splice(length_1 - 1, 0, linkSegment);
29
- return true;
9
+ editor.formatContentModel(function (model, context) {
10
+ var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
11
+ if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {
12
+ var markerIndex = selectedSegmentsAndParagraphs[0][1].segments.findIndex(function (segment) { return segment.segmentType == 'SelectionMarker'; });
13
+ var paragraph = selectedSegmentsAndParagraphs[0][1];
14
+ if (markerIndex > 0) {
15
+ var textSegment = paragraph.segments[markerIndex - 1];
16
+ var marker = paragraph.segments[markerIndex];
17
+ if (marker.segmentType == 'SelectionMarker' &&
18
+ textSegment &&
19
+ textSegment.segmentType == 'Text' &&
20
+ !textSegment.link) {
21
+ var link = textSegment.text.split(' ').pop();
22
+ var url = link === null || link === void 0 ? void 0 : link.trim();
23
+ var linkData = null;
24
+ if (url && link && (linkData = (0, roosterjs_content_model_api_1.matchLink)(url))) {
25
+ var linkSegment = (0, splitTextSegment_1.splitTextSegment)(textSegment, paragraph, textSegment.text.length - link.trimLeft().length, textSegment.text.trimRight().length);
26
+ linkSegment.link = {
27
+ format: {
28
+ href: linkData.normalizedUrl,
29
+ underline: true,
30
+ },
31
+ dataset: {},
32
+ };
33
+ context.canUndoByBackspace = true;
34
+ return true;
35
+ }
30
36
  }
31
37
  }
32
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createLinkAfterSpace.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts"],"names":[],"mappings":";;;;IAKA;;OAEG;IACH,SAAgB,oBAAoB,CAAC,MAAe;QAChD,MAAM,CAAC,kBAAkB,CAAC,UAAA,KAAK;YAC3B,IAAM,6BAA6B,GAAG,IAAA,+DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;YACF,IAAI,6BAA6B,CAAC,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzE,IAAM,QAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnE,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAM,GAAG,CAAC,CAAC,CAAC;gBACxE,IAAM,WAAW,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAM,GAAG,CAAC,CAAC,CAAC;gBAC7E,IACI,MAAM,CAAC,WAAW,IAAI,iBAAiB;oBACvC,WAAW,CAAC,WAAW,IAAI,MAAM;oBACjC,CAAC,WAAW,CAAC,IAAI,EACnB;oBACE,IAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC/C,IAAI,IAAI,IAAI,IAAA,uCAAS,EAAC,IAAI,CAAC,EAAE;wBACzB,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACtD,IAAM,WAAW,GAAG,IAAA,wCAAU,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;4BAChD,MAAM,EAAE;gCACJ,IAAI,EAAE,IAAI;gCACV,SAAS,EAAE,IAAI;6BAClB;4BACD,OAAO,EAAE,EAAE;yBACd,CAAC,CAAC;wBACH,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;wBAChF,OAAO,IAAI,CAAC;qBACf;iBACJ;aACJ;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAjCD,oDAiCC","sourcesContent":["import { createText } from 'roosterjs-content-model-dom';\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-core';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport type { IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createLinkAfterSpace(editor: IEditor) {\n editor.formatContentModel(model => {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs[0] && selectedSegmentsAndParagraphs[0][1]) {\n const length = selectedSegmentsAndParagraphs[0][1].segments.length;\n const marker = selectedSegmentsAndParagraphs[0][1].segments[length - 1];\n const textSegment = selectedSegmentsAndParagraphs[0][1].segments[length - 2];\n if (\n marker.segmentType == 'SelectionMarker' &&\n textSegment.segmentType == 'Text' &&\n !textSegment.link\n ) {\n const link = textSegment.text.split(' ').pop();\n if (link && matchLink(link)) {\n textSegment.text = textSegment.text.replace(link, '');\n const linkSegment = createText(link, marker.format, {\n format: {\n href: link,\n underline: true,\n },\n dataset: {},\n });\n selectedSegmentsAndParagraphs[0][1].segments.splice(length - 1, 0, linkSegment);\n return true;\n }\n }\n }\n\n return false;\n });\n}\n"]}
1
+ {"version":3,"file":"createLinkAfterSpace.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts"],"names":[],"mappings":";;;;IAKA;;OAEG;IACH,SAAgB,oBAAoB,CAAC,MAAe;QAChD,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,OAAO;YACrC,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;YACF,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjF,IAAM,WAAW,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CACtE,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,WAAW,IAAI,iBAAiB,EAAxC,CAAwC,CACtD,CAAC;gBACF,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,WAAW,GAAG,CAAC,EAAE;oBACjB,IAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;oBACxD,IAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAC/C,IACI,MAAM,CAAC,WAAW,IAAI,iBAAiB;wBACvC,WAAW;wBACX,WAAW,CAAC,WAAW,IAAI,MAAM;wBACjC,CAAC,WAAW,CAAC,IAAI,EACnB;wBACE,IAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBAC/C,IAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAC;wBACzB,IAAI,QAAQ,GAAoB,IAAI,CAAC;wBACrC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAA,uCAAS,EAAC,GAAG,CAAC,CAAC,EAAE;4BAC5C,IAAM,WAAW,GAAG,IAAA,mCAAgB,EAChC,WAAW,EACX,SAAS,EACT,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAChD,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CACtC,CAAC;4BACF,WAAW,CAAC,IAAI,GAAG;gCACf,MAAM,EAAE;oCACJ,IAAI,EAAE,QAAQ,CAAC,aAAa;oCAC5B,SAAS,EAAE,IAAI;iCAClB;gCACD,OAAO,EAAE,EAAE;6BACd,CAAC;4BAEF,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;4BAElC,OAAO,IAAI,CAAC;yBACf;qBACJ;iBACJ;aACJ;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAhDD,oDAgDC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport { splitTextSegment } from '../../pluginUtils/splitTextSegment';\nimport type { IEditor, LinkData } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createLinkAfterSpace(editor: IEditor) {\n editor.formatContentModel((model, context) => {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {\n const markerIndex = selectedSegmentsAndParagraphs[0][1].segments.findIndex(\n segment => segment.segmentType == 'SelectionMarker'\n );\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n if (markerIndex > 0) {\n const textSegment = paragraph.segments[markerIndex - 1];\n const marker = paragraph.segments[markerIndex];\n if (\n marker.segmentType == 'SelectionMarker' &&\n textSegment &&\n textSegment.segmentType == 'Text' &&\n !textSegment.link\n ) {\n const link = textSegment.text.split(' ').pop();\n const url = link?.trim();\n let linkData: LinkData | null = null;\n if (url && link && (linkData = matchLink(url))) {\n const linkSegment = splitTextSegment(\n textSegment,\n paragraph,\n textSegment.text.length - link.trimLeft().length,\n textSegment.text.trimRight().length\n );\n linkSegment.link = {\n format: {\n href: linkData.normalizedUrl,\n underline: true,\n },\n dataset: {},\n };\n\n context.canUndoByBackspace = true;\n\n return true;\n }\n }\n }\n }\n\n return false;\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "roosterjs-content-model-core", "roosterjs-content-model-api"], function (require, exports, roosterjs_content_model_core_1, roosterjs_content_model_api_1) {
1
+ define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getLinkSegment = void 0;
@@ -6,7 +6,7 @@ define(["require", "exports", "roosterjs-content-model-core", "roosterjs-content
6
6
  * @internal
7
7
  */
8
8
  function getLinkSegment(model) {
9
- var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
9
+ var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
10
10
  if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {
11
11
  var selectedParagraph = selectedSegmentsAndParagraphs[0][1];
12
12
  var marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];
@@ -1 +1 @@
1
- {"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,cAAc,CAAC,KAA2B;QACtD,IAAM,6BAA6B,GAAG,IAAA,+DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;QACF,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAClF,IAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjF,IAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,IACI,MAAM;gBACN,IAAI;gBACJ,MAAM,CAAC,WAAW,KAAK,iBAAiB;gBACxC,MAAM,CAAC,UAAU;gBACjB,IAAI,CAAC,WAAW,KAAK,MAAM;gBAC3B,CAAC,IAAA,uCAAS,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EACrC;gBACE,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IArBD,wCAqBC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-core';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport type { ContentModelDocument } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getLinkSegment(model: ContentModelDocument) {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {\n const selectedParagraph = selectedSegmentsAndParagraphs[0][1];\n const marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];\n const link = selectedParagraph.segments[selectedParagraph.segments.length - 2];\n if (\n marker &&\n link &&\n marker.segmentType === 'SelectionMarker' &&\n marker.isSelected &&\n link.segmentType === 'Text' &&\n (matchLink(link.text) || link.link)\n ) {\n return link;\n }\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,cAAc,CAAC,KAA2B;QACtD,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;QACF,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAClF,IAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjF,IAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,IACI,MAAM;gBACN,IAAI;gBACJ,MAAM,CAAC,WAAW,KAAK,iBAAiB;gBACxC,MAAM,CAAC,UAAU;gBACjB,IAAI,CAAC,WAAW,KAAK,MAAM;gBAC3B,CAAC,IAAA,uCAAS,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EACrC;gBACE,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IArBD,wCAqBC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport type { ContentModelDocument } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getLinkSegment(model: ContentModelDocument) {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {\n const selectedParagraph = selectedSegmentsAndParagraphs[0][1];\n const marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];\n const link = selectedParagraph.segments[selectedParagraph.segments.length - 2];\n if (\n marker &&\n link &&\n marker.segmentType === 'SelectionMarker' &&\n marker.isSelected &&\n link.segmentType === 'Text' &&\n (matchLink(link.text) || link.link)\n ) {\n return link;\n }\n }\n return undefined;\n}\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "roosterjs-content-model-api", "./getNumberingListStyle", "roosterjs-content-model-core"], function (require, exports, roosterjs_content_model_api_1, getNumberingListStyle_1, roosterjs_content_model_core_1) {
1
+ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingListStyle", "roosterjs-content-model-dom"], function (require, exports, roosterjs_content_model_api_1, getNumberingListStyle_1, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getListTypeStyle = void 0;
@@ -8,7 +8,7 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
8
8
  function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNumbering) {
9
9
  if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
10
10
  if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
11
- var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, true);
11
+ var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, true);
12
12
  if (!selectedSegmentsAndParagraphs[0]) {
13
13
  return undefined;
14
14
  }
@@ -19,7 +19,7 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
19
19
  marker.segmentType == 'SelectionMarker' &&
20
20
  listMarkerSegment &&
21
21
  listMarkerSegment.segmentType == 'Text') {
22
- var listMarker = listMarkerSegment.text;
22
+ var listMarker = listMarkerSegment.text.trim();
23
23
  var bulletType = bulletListType[listMarker];
24
24
  if (bulletType && shouldSearchForBullet) {
25
25
  return { listType: 'UL', styleType: bulletType };
@@ -49,14 +49,14 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
49
49
  return previousListItem ? (0, roosterjs_content_model_api_1.findListItemsInSameThread)(model, previousListItem).length : undefined;
50
50
  };
51
51
  var getPreviousListLevel = function (model, paragraph) {
52
- var blocks = (0, roosterjs_content_model_core_1.getOperationalBlocks)(model, ['ListItem'], ['TableCell'])[0];
52
+ var blocks = (0, roosterjs_content_model_dom_1.getOperationalBlocks)(model, ['ListItem'], ['TableCell'])[0];
53
53
  var listItem = undefined;
54
54
  if (blocks) {
55
55
  var listBlockIndex = blocks.parent.blocks.indexOf(paragraph);
56
56
  if (listBlockIndex > -1) {
57
57
  for (var i = listBlockIndex - 1; i > -1; i--) {
58
58
  var item = blocks.parent.blocks[i];
59
- if ((0, roosterjs_content_model_core_1.isBlockGroupOfType)(item, 'ListItem')) {
59
+ if ((0, roosterjs_content_model_dom_1.isBlockGroupOfType)(item, 'ListItem')) {
60
60
  listItem = item;
61
61
  break;
62
62
  }
@@ -68,18 +68,18 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
68
68
  var getPreviousListStyle = function (list) {
69
69
  var _a;
70
70
  if (list === null || list === void 0 ? void 0 : list.levels[0].dataset) {
71
- return (_a = (0, roosterjs_content_model_core_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
71
+ return (_a = (0, roosterjs_content_model_dom_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
72
72
  }
73
73
  };
74
74
  var bulletListType = {
75
- '*': roosterjs_content_model_core_1.BulletListType.Disc,
76
- '-': roosterjs_content_model_core_1.BulletListType.Dash,
77
- '--': roosterjs_content_model_core_1.BulletListType.Square,
78
- '->': roosterjs_content_model_core_1.BulletListType.LongArrow,
79
- '-->': roosterjs_content_model_core_1.BulletListType.DoubleLongArrow,
80
- '=>': roosterjs_content_model_core_1.BulletListType.UnfilledArrow,
81
- '>': roosterjs_content_model_core_1.BulletListType.ShortArrow,
82
- '—': roosterjs_content_model_core_1.BulletListType.Hyphen,
75
+ '*': roosterjs_content_model_dom_1.BulletListType.Disc,
76
+ '-': roosterjs_content_model_dom_1.BulletListType.Dash,
77
+ '--': roosterjs_content_model_dom_1.BulletListType.Square,
78
+ '->': roosterjs_content_model_dom_1.BulletListType.LongArrow,
79
+ '-->': roosterjs_content_model_dom_1.BulletListType.DoubleLongArrow,
80
+ '=>': roosterjs_content_model_dom_1.BulletListType.UnfilledArrow,
81
+ '>': roosterjs_content_model_dom_1.BulletListType.ShortArrow,
82
+ '—': roosterjs_content_model_dom_1.BulletListType.Hyphen,
83
83
  };
84
84
  var isNewList = function (listMarker) {
85
85
  var marker = listMarker.replace(/[^\w\s]/g, '');
@@ -1 +1 @@
1
- {"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":";;;;IAwBA;;OAEG;IACH,SAAgB,gBAAgB,CAC5B,KAA2B,EAC3B,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAM,6BAA6B,GAAG,IAAA,+DAAgC,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE;YACnC,OAAO,SAAS,CAAC;SACpB;QACD,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAM,iBAAiB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEjD,IACI,MAAM;YACN,MAAM,CAAC,WAAW,IAAI,iBAAiB;YACvC,iBAAiB;YACjB,iBAAiB,CAAC,WAAW,IAAI,MAAM,EACzC;YACE,IAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC;YAC1C,IAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAE9C,IAAI,UAAU,IAAI,qBAAqB,EAAE;gBACrC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;aACpD;iBAAM,IAAI,wBAAwB,EAAE;gBACjC,IAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAChE,IAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAM,aAAa,GAAG,IAAA,6CAAqB,EACvC,UAAU,EACV,aAAa,EACb,iBAAiB,CACpB,CAAC;gBACF,IAAI,aAAa,EAAE;oBACf,OAAO;wBACH,QAAQ,EAAE,IAAI;wBACd,SAAS,EAAE,aAAa;wBACxB,KAAK,EACD,CAAC,SAAS,CAAC,UAAU,CAAC;4BACtB,iBAAiB,KAAK,aAAa;4BACnC,aAAa;4BACT,CAAC,CAAC,aAAa,GAAG,CAAC;4BACnB,CAAC,CAAC,SAAS;qBACtB,CAAC;iBACL;aACJ;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAhDD,4CAgDC;IAED,IAAM,oBAAoB,GAAG,UACzB,KAA2B,EAC3B,gBAAuC;QAEvC,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAA,uDAAyB,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACpG,CAAC,CAAC;IAEF,IAAM,oBAAoB,GAAG,UAAC,KAA2B,EAAE,SAAgC;QACvF,IAAM,MAAM,GAAG,IAAA,mDAAoB,EAC/B,KAAK,EACL,CAAC,UAAU,CAAC,EACZ,CAAC,WAAW,CAAC,CAChB,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,QAAQ,GAAqC,SAAS,CAAC;QAC3D,IAAI,MAAM,EAAE;YACR,IAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE/D,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE;gBACrB,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1C,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrC,IAAI,IAAA,iDAAkB,EAAuB,IAAI,EAAE,UAAU,CAAC,EAAE;wBAC5D,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACT;iBACJ;aACJ;SACJ;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IAEF,IAAM,oBAAoB,GAAG,UAAC,IAA2B;;QACrD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;YACzB,OAAO,MAAA,IAAA,iDAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,0CAAE,gBAAgB,CAAC;SAC/D;IACL,CAAC,CAAC;IAEF,IAAM,cAAc,GAA2B;QAC3C,GAAG,EAAE,6CAAc,CAAC,IAAI;QACxB,GAAG,EAAE,6CAAc,CAAC,IAAI;QACxB,IAAI,EAAE,6CAAc,CAAC,MAAM;QAC3B,IAAI,EAAE,6CAAc,CAAC,SAAS;QAC9B,KAAK,EAAE,6CAAc,CAAC,eAAe;QACrC,IAAI,EAAE,6CAAc,CAAC,aAAa;QAClC,GAAG,EAAE,6CAAc,CAAC,UAAU;QAC9B,GAAG,EAAE,6CAAc,CAAC,MAAM;KAC7B,CAAC;IAEF,IAAM,SAAS,GAAG,UAAC,UAAkB;QACjC,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClD,IAAM,OAAO,GAAG,WAAW,CAAC;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC","sourcesContent":["import { findListItemsInSameThread } from 'roosterjs-content-model-api';\nimport { getNumberingListStyle } from './getNumberingListStyle';\nimport type {\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n} from 'roosterjs-content-model-types';\nimport {\n BulletListType,\n isBlockGroupOfType,\n updateListMetadata,\n getOperationalBlocks,\n getSelectedSegmentsAndParagraphs,\n} from 'roosterjs-content-model-core';\n\n/**\n * @internal\n */\ninterface ListTypeStyle {\n listType: 'UL' | 'OL';\n styleType: number;\n index?: number;\n}\n\n/**\n * @internal\n */\nexport function getListTypeStyle(\n model: ContentModelDocument,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n): ListTypeStyle | undefined {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, true);\n if (!selectedSegmentsAndParagraphs[0]) {\n return undefined;\n }\n const marker = selectedSegmentsAndParagraphs[0][0];\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n const listMarkerSegment = paragraph?.segments[0];\n\n if (\n marker &&\n marker.segmentType == 'SelectionMarker' &&\n listMarkerSegment &&\n listMarkerSegment.segmentType == 'Text'\n ) {\n const listMarker = listMarkerSegment.text;\n const bulletType = bulletListType[listMarker];\n\n if (bulletType && shouldSearchForBullet) {\n return { listType: 'UL', styleType: bulletType };\n } else if (shouldSearchForNumbering) {\n const previousList = getPreviousListLevel(model, paragraph);\n const previousIndex = getPreviousListIndex(model, previousList);\n const previousListStyle = getPreviousListStyle(previousList);\n const numberingType = getNumberingListStyle(\n listMarker,\n previousIndex,\n previousListStyle\n );\n if (numberingType) {\n return {\n listType: 'OL',\n styleType: numberingType,\n index:\n !isNewList(listMarker) &&\n previousListStyle === numberingType &&\n previousIndex\n ? previousIndex + 1\n : undefined,\n };\n }\n }\n }\n return undefined;\n}\n\nconst getPreviousListIndex = (\n model: ContentModelDocument,\n previousListItem?: ContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (model: ContentModelDocument, paragraph: ContentModelParagraph) => {\n const blocks = getOperationalBlocks<ContentModelListItem>(\n model,\n ['ListItem'],\n ['TableCell']\n )[0];\n let listItem: ContentModelListItem | undefined = undefined;\n if (blocks) {\n const listBlockIndex = blocks.parent.blocks.indexOf(paragraph);\n\n if (listBlockIndex > -1) {\n for (let i = listBlockIndex - 1; i > -1; i--) {\n const item = blocks.parent.blocks[i];\n if (isBlockGroupOfType<ContentModelListItem>(item, 'ListItem')) {\n listItem = item;\n break;\n }\n }\n }\n }\n\n return listItem;\n};\n\nconst getPreviousListStyle = (list?: ContentModelListItem) => {\n if (list?.levels[0].dataset) {\n return updateListMetadata(list.levels[0])?.orderedStyleType;\n }\n};\n\nconst bulletListType: Record<string, number> = {\n '*': BulletListType.Disc,\n '-': BulletListType.Dash,\n '--': BulletListType.Square,\n '->': BulletListType.LongArrow,\n '-->': BulletListType.DoubleLongArrow,\n '=>': BulletListType.UnfilledArrow,\n '>': BulletListType.ShortArrow,\n '—': BulletListType.Hyphen,\n};\n\nconst isNewList = (listMarker: string) => {\n const marker = listMarker.replace(/[^\\w\\s]/g, '');\n const pattern = /^[1aAiI]$/;\n return pattern.test(marker);\n};\n"]}
1
+ {"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { findListItemsInSameThread } from 'roosterjs-content-model-api';\nimport { getNumberingListStyle } from './getNumberingListStyle';\nimport type {\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n} from 'roosterjs-content-model-types';\nimport {\n BulletListType,\n isBlockGroupOfType,\n updateListMetadata,\n getOperationalBlocks,\n getSelectedSegmentsAndParagraphs,\n} from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\ninterface ListTypeStyle {\n listType: 'UL' | 'OL';\n styleType: number;\n index?: number;\n}\n\n/**\n * @internal\n */\nexport function getListTypeStyle(\n model: ContentModelDocument,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n): ListTypeStyle | undefined {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, true);\n if (!selectedSegmentsAndParagraphs[0]) {\n return undefined;\n }\n const marker = selectedSegmentsAndParagraphs[0][0];\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n const listMarkerSegment = paragraph?.segments[0];\n\n if (\n marker &&\n marker.segmentType == 'SelectionMarker' &&\n listMarkerSegment &&\n listMarkerSegment.segmentType == 'Text'\n ) {\n const listMarker = listMarkerSegment.text.trim();\n const bulletType = bulletListType[listMarker];\n\n if (bulletType && shouldSearchForBullet) {\n return { listType: 'UL', styleType: bulletType };\n } else if (shouldSearchForNumbering) {\n const previousList = getPreviousListLevel(model, paragraph);\n const previousIndex = getPreviousListIndex(model, previousList);\n const previousListStyle = getPreviousListStyle(previousList);\n const numberingType = getNumberingListStyle(\n listMarker,\n previousIndex,\n previousListStyle\n );\n\n if (numberingType) {\n return {\n listType: 'OL',\n styleType: numberingType,\n index:\n !isNewList(listMarker) &&\n previousListStyle === numberingType &&\n previousIndex\n ? previousIndex + 1\n : undefined,\n };\n }\n }\n }\n return undefined;\n}\n\nconst getPreviousListIndex = (\n model: ContentModelDocument,\n previousListItem?: ContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (model: ContentModelDocument, paragraph: ContentModelParagraph) => {\n const blocks = getOperationalBlocks<ContentModelListItem>(\n model,\n ['ListItem'],\n ['TableCell']\n )[0];\n let listItem: ContentModelListItem | undefined = undefined;\n if (blocks) {\n const listBlockIndex = blocks.parent.blocks.indexOf(paragraph);\n\n if (listBlockIndex > -1) {\n for (let i = listBlockIndex - 1; i > -1; i--) {\n const item = blocks.parent.blocks[i];\n if (isBlockGroupOfType<ContentModelListItem>(item, 'ListItem')) {\n listItem = item;\n break;\n }\n }\n }\n }\n\n return listItem;\n};\n\nconst getPreviousListStyle = (list?: ContentModelListItem) => {\n if (list?.levels[0].dataset) {\n return updateListMetadata(list.levels[0])?.orderedStyleType;\n }\n};\n\nconst bulletListType: Record<string, number> = {\n '*': BulletListType.Disc,\n '-': BulletListType.Dash,\n '--': BulletListType.Square,\n '->': BulletListType.LongArrow,\n '-->': BulletListType.DoubleLongArrow,\n '=>': BulletListType.UnfilledArrow,\n '>': BulletListType.ShortArrow,\n '—': BulletListType.Hyphen,\n};\n\nconst isNewList = (listMarker: string) => {\n const marker = listMarker.replace(/[^\\w\\s]/g, '');\n const pattern = /^[1aAiI]$/;\n return pattern.test(marker);\n};\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "./getIndex", "roosterjs-content-model-core"], function (require, exports, getIndex_1, roosterjs_content_model_core_1) {
1
+ define(["require", "exports", "./getIndex", "roosterjs-content-model-dom"], function (require, exports, getIndex_1, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  var _a, _b, _c, _d, _e, _f;
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -24,16 +24,16 @@ define(["require", "exports", "./getIndex", "roosterjs-content-model-core"], fun
24
24
  ')': 3 /* Parenthesis */,
25
25
  };
26
26
  var lowerRomanTypes = [
27
- roosterjs_content_model_core_1.NumberingListType.LowerRoman,
28
- roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
29
- roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
30
- roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
27
+ roosterjs_content_model_dom_1.NumberingListType.LowerRoman,
28
+ roosterjs_content_model_dom_1.NumberingListType.LowerRomanDash,
29
+ roosterjs_content_model_dom_1.NumberingListType.LowerRomanDoubleParenthesis,
30
+ roosterjs_content_model_dom_1.NumberingListType.LowerRomanParenthesis,
31
31
  ];
32
32
  var upperRomanTypes = [
33
- roosterjs_content_model_core_1.NumberingListType.UpperRoman,
34
- roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
35
- roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
36
- roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
33
+ roosterjs_content_model_dom_1.NumberingListType.UpperRoman,
34
+ roosterjs_content_model_dom_1.NumberingListType.UpperRomanDash,
35
+ roosterjs_content_model_dom_1.NumberingListType.UpperRomanDoubleParenthesis,
36
+ roosterjs_content_model_dom_1.NumberingListType.UpperRomanParenthesis,
37
37
  ];
38
38
  var numberingTriggers = ['1', 'a', 'A', 'I', 'i'];
39
39
  var lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];
@@ -75,34 +75,34 @@ define(["require", "exports", "./getIndex", "roosterjs-content-model-core"], fun
75
75
  _a[5 /* UpperRoman */] = function (char) { return UpperRomanTypes[char] || undefined; },
76
76
  _a);
77
77
  var UpperRomanTypes = (_b = {},
78
- _b[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperRoman,
79
- _b[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDash,
80
- _b[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanParenthesis,
81
- _b[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperRomanDoubleParenthesis,
78
+ _b[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.UpperRoman,
79
+ _b[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanDash,
80
+ _b[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanParenthesis,
81
+ _b[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanDoubleParenthesis,
82
82
  _b);
83
83
  var LowerRomanTypes = (_c = {},
84
- _c[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerRoman,
85
- _c[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDash,
86
- _c[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanParenthesis,
87
- _c[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerRomanDoubleParenthesis,
84
+ _c[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.LowerRoman,
85
+ _c[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanDash,
86
+ _c[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanParenthesis,
87
+ _c[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanDoubleParenthesis,
88
88
  _c);
89
89
  var UpperAlphaTypes = (_d = {},
90
- _d[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.UpperAlpha,
91
- _d[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDash,
92
- _d[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaParenthesis,
93
- _d[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.UpperAlphaDoubleParenthesis,
90
+ _d[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlpha,
91
+ _d[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaDash,
92
+ _d[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaParenthesis,
93
+ _d[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaDoubleParenthesis,
94
94
  _d);
95
95
  var LowerAlphaTypes = (_e = {},
96
- _e[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.LowerAlpha,
97
- _e[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDash,
98
- _e[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaParenthesis,
99
- _e[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.LowerAlphaDoubleParenthesis,
96
+ _e[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlpha,
97
+ _e[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaDash,
98
+ _e[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaParenthesis,
99
+ _e[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaDoubleParenthesis,
100
100
  _e);
101
101
  var DecimalsTypes = (_f = {},
102
- _f[1 /* Dot */] = roosterjs_content_model_core_1.NumberingListType.Decimal,
103
- _f[2 /* Dash */] = roosterjs_content_model_core_1.NumberingListType.DecimalDash,
104
- _f[3 /* Parenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalParenthesis,
105
- _f[4 /* DoubleParenthesis */] = roosterjs_content_model_core_1.NumberingListType.DecimalDoubleParenthesis,
102
+ _f[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.Decimal,
103
+ _f[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.DecimalDash,
104
+ _f[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.DecimalParenthesis,
105
+ _f[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.DecimalDoubleParenthesis,
106
106
  _f);
107
107
  var identifyNumberingListType = function (numbering, isDoubleParenthesis, previousListStyle) {
108
108
  var separatorCharacter = isDoubleParenthesis
@@ -1 +1 @@
1
- {"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts"],"names":[],"mappings":";;;;;IAGA,IAAW,cAMV;IAND,WAAW,cAAc;QACrB,yDAAW,CAAA;QACX,+DAAc,CAAA;QACd,+DAAc,CAAA;QACd,+DAAc,CAAA;QACd,+DAAc,CAAA;IAClB,CAAC,EANU,cAAc,KAAd,cAAc,QAMxB;IAED,IAAW,SAKV;IALD,WAAW,SAAS;QAChB,uCAAO,CAAA;QACP,yCAAQ,CAAA;QACR,uDAAe,CAAA;QACf,mEAAqB,CAAA;IACzB,CAAC,EALU,SAAS,KAAT,SAAS,QAKnB;IAED,IAAM,UAAU,GAA2B;QACvC,GAAG,aAAe;QAClB,GAAG,cAAgB;QACnB,GAAG,qBAAuB;KAC7B,CAAC;IAEF,IAAM,eAAe,GAAG;QACpB,gDAAiB,CAAC,UAAU;QAC5B,gDAAiB,CAAC,cAAc;QAChC,gDAAiB,CAAC,2BAA2B;QAC7C,gDAAiB,CAAC,qBAAqB;KAC1C,CAAC;IACF,IAAM,eAAe,GAAG;QACpB,gDAAiB,CAAC,UAAU;QAC5B,gDAAiB,CAAC,cAAc;QAChC,gDAAiB,CAAC,2BAA2B;QAC7C,gDAAiB,CAAC,qBAAqB;KAC1C,CAAC;IACF,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE9D,IAAM,qBAAqB,GAAG,UAAC,IAAY,EAAE,iBAA0B;QACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;YACxB,uBAA8B;SACjC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,IACI,CAAC,iBAAiB,uBAA8B;gBAC5C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;iBAAM,IACH,iBAAiB,uBAA8B;gBAC/C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;SACJ;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,IACI,CAAC,iBAAiB,sBAA6B;gBAC3C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;iBAAM,IACH,iBAAiB,sBAA6B;gBAC9C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,kBAAkB;QACpB,sBAA0B,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,IAAI,CAAC,IAAI,SAAS,EAAhC,CAAgC;QAClE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;WAC1E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,gDAAiB,CAAC,UAAU;QAC7C,mBAAkB,gDAAiB,CAAC,cAAc;QAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;QAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,gDAAiB,CAAC,UAAU;QAC7C,mBAAkB,gDAAiB,CAAC,cAAc;QAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;QAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,gDAAiB,CAAC,UAAU;QAC7C,mBAAkB,gDAAiB,CAAC,cAAc;QAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;QAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,gDAAiB,CAAC,UAAU;QAC7C,mBAAkB,gDAAiB,CAAC,cAAc;QAClD,0BAAyB,gDAAiB,CAAC,qBAAqB;QAChE,gCAA+B,gDAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,aAAa;QACf,kBAAiB,gDAAiB,CAAC,OAAO;QAC1C,mBAAkB,gDAAiB,CAAC,WAAW;QAC/C,0BAAyB,gDAAiB,CAAC,kBAAkB;QAC7D,gCAA+B,gDAAiB,CAAC,wBAAwB;WAC5E,CAAC;IAEF,IAAM,yBAAyB,GAAG,UAC9B,SAAiB,EACjB,mBAA4B,EAC5B,iBAA0B;QAE1B,IAAM,kBAAkB,GAAG,mBAAmB;YAC1C,CAAC;YACD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,sEAAsE;QACtE,IAAI,kBAAkB,EAAE;YACpB,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrF,IAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACvE,OAAO,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5F;QACD,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEF;;OAEG;IACH,SAAgB,qBAAqB,CACjC,gBAAwB,EACxB,iBAA0B,EAC1B,iBAA0B;QAE1B,IAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACxC,IAAM,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;QACtF,kIAAkI;QAClI,8DAA8D;QAC9D,IAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,IAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,SAAS,CAAC,CAAC;QAClC,IAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjE,IACI,CAAC,KAAK;YACN,KAAK,GAAG,CAAC;YACT,CAAC,CAAC,iBAAiB,IAAI,eAAe,CAAC;YACvC,CAAC,iBAAiB,IAAI,eAAe,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EACpF;YACE,OAAO,SAAS,CAAC;SACpB;QAED,IAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,yBAAyB,CACrB,OAAO,EACP,mBAAmB,EACnB,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAClD;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO,aAAa,CAAC;IACzB,CAAC;IA9BD,sDA8BC;IAED;;;;OAIG;IACH,SAAS,gBAAgB,CAAC,KAAa;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,aAAa,CAAC,KAAc,EAAE,iBAA0B;QAC7D,OAAO,iBAAiB,IAAI,KAAK,IAAI,iBAAiB,GAAG,CAAC,KAAK,KAAK,CAAC;IACzE,CAAC","sourcesContent":["import { getIndex } from './getIndex';\nimport { NumberingListType } from 'roosterjs-content-model-core';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record<string, number> = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle === NumberingTypes.LowerRoman &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (\n previousListStyle === NumberingTypes.LowerAlpha ||\n (!previousListStyle && text === 'a')\n ) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle == NumberingTypes.UpperRoman &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (\n previousListStyle == NumberingTypes.UpperAlpha ||\n (!previousListStyle && text === 'A')\n ) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\n};\n\nconst UpperRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: number\n): number | undefined => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\n }\n return undefined;\n};\n\n/**\n * @internal\n */\nexport function getNumberingListStyle(\n textBeforeCursor: string,\n previousListIndex?: number,\n previousListStyle?: number\n): number | undefined {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n const index = getIndex(listIndex);\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\n\n if (\n !index ||\n index < 1 ||\n (!previousListIndex && isContinuosList) ||\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\n ) {\n return undefined;\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(\n trigger,\n isDoubleParenthesis,\n isContinuosList ? previousListStyle : undefined\n )\n : undefined;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n\nfunction canAppendList(index?: number, previousListIndex?: number) {\n return previousListIndex && index && previousListIndex + 1 === index;\n}\n"]}
1
+ {"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts"],"names":[],"mappings":";;;;;IAGA,IAAW,cAMV;IAND,WAAW,cAAc;QACrB,yDAAW,CAAA;QACX,+DAAc,CAAA;QACd,+DAAc,CAAA;QACd,+DAAc,CAAA;QACd,+DAAc,CAAA;IAClB,CAAC,EANU,cAAc,KAAd,cAAc,QAMxB;IAED,IAAW,SAKV;IALD,WAAW,SAAS;QAChB,uCAAO,CAAA;QACP,yCAAQ,CAAA;QACR,uDAAe,CAAA;QACf,mEAAqB,CAAA;IACzB,CAAC,EALU,SAAS,KAAT,SAAS,QAKnB;IAED,IAAM,UAAU,GAA2B;QACvC,GAAG,aAAe;QAClB,GAAG,cAAgB;QACnB,GAAG,qBAAuB;KAC7B,CAAC;IAEF,IAAM,eAAe,GAAG;QACpB,+CAAiB,CAAC,UAAU;QAC5B,+CAAiB,CAAC,cAAc;QAChC,+CAAiB,CAAC,2BAA2B;QAC7C,+CAAiB,CAAC,qBAAqB;KAC1C,CAAC;IACF,IAAM,eAAe,GAAG;QACpB,+CAAiB,CAAC,UAAU;QAC5B,+CAAiB,CAAC,cAAc;QAChC,+CAAiB,CAAC,2BAA2B;QAC7C,+CAAiB,CAAC,qBAAqB;KAC1C,CAAC;IACF,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE9D,IAAM,qBAAqB,GAAG,UAAC,IAAY,EAAE,iBAA0B;QACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;YACxB,uBAA8B;SACjC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,IACI,CAAC,iBAAiB,uBAA8B;gBAC5C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;iBAAM,IACH,iBAAiB,uBAA8B;gBAC/C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;SACJ;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,IACI,CAAC,iBAAiB,sBAA6B;gBAC3C,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;iBAAM,IACH,iBAAiB,sBAA6B;gBAC9C,CAAC,CAAC,iBAAiB,IAAI,IAAI,KAAK,GAAG,CAAC,EACtC;gBACE,0BAAiC;aACpC;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,kBAAkB;QACpB,sBAA0B,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,IAAI,CAAC,IAAI,SAAS,EAAhC,CAAgC;QAClE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;QACvE,yBAA6B,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,EAAlC,CAAkC;WAC1E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,+CAAiB,CAAC,UAAU;QAC7C,mBAAkB,+CAAiB,CAAC,cAAc;QAClD,0BAAyB,+CAAiB,CAAC,qBAAqB;QAChE,gCAA+B,+CAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,+CAAiB,CAAC,UAAU;QAC7C,mBAAkB,+CAAiB,CAAC,cAAc;QAClD,0BAAyB,+CAAiB,CAAC,qBAAqB;QAChE,gCAA+B,+CAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,+CAAiB,CAAC,UAAU;QAC7C,mBAAkB,+CAAiB,CAAC,cAAc;QAClD,0BAAyB,+CAAiB,CAAC,qBAAqB;QAChE,gCAA+B,+CAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,eAAe;QACjB,kBAAiB,+CAAiB,CAAC,UAAU;QAC7C,mBAAkB,+CAAiB,CAAC,cAAc;QAClD,0BAAyB,+CAAiB,CAAC,qBAAqB;QAChE,gCAA+B,+CAAiB,CAAC,2BAA2B;WAC/E,CAAC;IAEF,IAAM,aAAa;QACf,kBAAiB,+CAAiB,CAAC,OAAO;QAC1C,mBAAkB,+CAAiB,CAAC,WAAW;QAC/C,0BAAyB,+CAAiB,CAAC,kBAAkB;QAC7D,gCAA+B,+CAAiB,CAAC,wBAAwB;WAC5E,CAAC;IAEF,IAAM,yBAAyB,GAAG,UAC9B,SAAiB,EACjB,mBAA4B,EAC5B,iBAA0B;QAE1B,IAAM,kBAAkB,GAAG,mBAAmB;YAC1C,CAAC;YACD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,sEAAsE;QACtE,IAAI,kBAAkB,EAAE;YACpB,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrF,IAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACvE,OAAO,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5F;QACD,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEF;;OAEG;IACH,SAAgB,qBAAqB,CACjC,gBAAwB,EACxB,iBAA0B,EAC1B,iBAA0B;QAE1B,IAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACxC,IAAM,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;QACtF,kIAAkI;QAClI,8DAA8D;QAC9D,IAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,IAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,SAAS,CAAC,CAAC;QAClC,IAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjE,IACI,CAAC,KAAK;YACN,KAAK,GAAG,CAAC;YACT,CAAC,CAAC,iBAAiB,IAAI,eAAe,CAAC;YACvC,CAAC,iBAAiB,IAAI,eAAe,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EACpF;YACE,OAAO,SAAS,CAAC;SACpB;QAED,IAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,yBAAyB,CACrB,OAAO,EACP,mBAAmB,EACnB,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAClD;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO,aAAa,CAAC;IACzB,CAAC;IA9BD,sDA8BC;IAED;;;;OAIG;IACH,SAAS,gBAAgB,CAAC,KAAa;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,aAAa,CAAC,KAAc,EAAE,iBAA0B;QAC7D,OAAO,iBAAiB,IAAI,KAAK,IAAI,iBAAiB,GAAG,CAAC,KAAK,KAAK,CAAC;IACzE,CAAC","sourcesContent":["import { getIndex } from './getIndex';\nimport { NumberingListType } from 'roosterjs-content-model-dom';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record<string, number> = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle === NumberingTypes.LowerRoman &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (\n previousListStyle === NumberingTypes.LowerAlpha ||\n (!previousListStyle && text === 'a')\n ) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle == NumberingTypes.UpperRoman &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (\n previousListStyle == NumberingTypes.UpperAlpha ||\n (!previousListStyle && text === 'A')\n ) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\n};\n\nconst UpperRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: number\n): number | undefined => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\n }\n return undefined;\n};\n\n/**\n * @internal\n */\nexport function getNumberingListStyle(\n textBeforeCursor: string,\n previousListIndex?: number,\n previousListStyle?: number\n): number | undefined {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n const index = getIndex(listIndex);\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\n\n if (\n !index ||\n index < 1 ||\n (!previousListIndex && isContinuosList) ||\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\n ) {\n return undefined;\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(\n trigger,\n isDoubleParenthesis,\n isContinuosList ? previousListStyle : undefined\n )\n : undefined;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n\nfunction canAppendList(index?: number, previousListIndex?: number) {\n return previousListIndex && index && previousListIndex + 1 === index;\n}\n"]}
@@ -2,4 +2,4 @@ import type { IEditor } from 'roosterjs-content-model-types';
2
2
  /**
3
3
  * @internal
4
4
  */
5
- export declare function keyboardListTrigger(editor: IEditor, rawEvent: KeyboardEvent, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): void;
5
+ export declare function keyboardListTrigger(editor: IEditor, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): void;
@@ -1,40 +1,40 @@
1
- define(["require", "exports", "./getListTypeStyle", "roosterjs-content-model-core", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, getListTypeStyle_1, roosterjs_content_model_core_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
1
+ define(["require", "exports", "./getListTypeStyle", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, getListTypeStyle_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.keyboardListTrigger = void 0;
5
5
  /**
6
6
  * @internal
7
7
  */
8
- function keyboardListTrigger(editor, rawEvent, shouldSearchForBullet, shouldSearchForNumbering) {
8
+ function keyboardListTrigger(editor, shouldSearchForBullet, shouldSearchForNumbering) {
9
9
  if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
10
10
  if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
11
11
  if (shouldSearchForBullet || shouldSearchForNumbering) {
12
- editor.formatContentModel(function (model, _context) {
12
+ editor.formatContentModel(function (model, context) {
13
13
  var listStyleType = (0, getListTypeStyle_1.getListTypeStyle)(model, shouldSearchForBullet, shouldSearchForNumbering);
14
14
  if (listStyleType) {
15
- var segmentsAndParagraphs = (0, roosterjs_content_model_core_1.getSelectedSegmentsAndParagraphs)(model, false);
15
+ var segmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false);
16
16
  if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {
17
17
  segmentsAndParagraphs[0][1].segments.splice(0, 1);
18
18
  }
19
19
  var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
20
- triggerList(editor, model, listType, styleType, index);
21
- rawEvent.preventDefault();
22
- (0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
20
+ triggerList(model, listType, styleType, index);
21
+ context.canUndoByBackspace = true;
23
22
  return true;
24
23
  }
25
24
  return false;
25
+ }, {
26
+ apiName: 'autoToggleList',
26
27
  });
27
28
  }
28
29
  }
29
30
  exports.keyboardListTrigger = keyboardListTrigger;
30
- var triggerList = function (editor, model, listType, styleType, index) {
31
+ var triggerList = function (model, listType, styleType, index) {
31
32
  (0, roosterjs_content_model_api_1.setListType)(model, listType);
32
33
  var isOrderedList = listType == 'OL';
33
- // If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber
34
34
  if (index && index > 1 && isOrderedList) {
35
- (0, roosterjs_content_model_api_1.setListStartNumber)(editor, index);
35
+ (0, roosterjs_content_model_api_1.setModelListStartNumber)(model, index);
36
36
  }
37
- (0, roosterjs_content_model_api_1.setListStyle)(editor, isOrderedList
37
+ (0, roosterjs_content_model_api_1.setModelListStyle)(model, isOrderedList
38
38
  ? {
39
39
  orderedStyleType: styleType,
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts"],"names":[],"mappings":";;;;IAMA;;OAEG;IACH,SAAgB,mBAAmB,CAC/B,MAAe,EACf,QAAuB,EACvB,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAI,qBAAqB,IAAI,wBAAwB,EAAE;YACnD,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,QAAQ;gBACtC,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAClC,KAAK,EACL,qBAAqB,EACrB,wBAAwB,CAC3B,CAAC;gBACF,IAAI,aAAa,EAAE;oBACf,IAAM,qBAAqB,GAAG,IAAA,+DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC7E,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACzD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACrD;oBACO,IAAA,QAAQ,GAAuB,aAAa,SAApC,EAAE,SAAS,GAAY,aAAa,UAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;oBACrD,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;oBACvD,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,IAAA,mDAAqB,EAAC,KAAK,CAAC,CAAC;oBAE7B,OAAO,IAAI,CAAC;iBACf;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IA5BD,kDA4BC;IAED,IAAM,WAAW,GAAG,UAChB,MAAe,EACf,KAA2B,EAC3B,QAAqB,EACrB,SAAiB,EACjB,KAAc;QAEd,IAAA,yCAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;QACvC,mGAAmG;QACnG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,aAAa,EAAE;YACrC,IAAA,gDAAkB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACrC;QACD,IAAA,0CAAY,EACR,MAAM,EACN,aAAa;YACT,CAAC,CAAC;gBACI,gBAAgB,EAAE,SAAS;aAC9B;YACH,CAAC,CAAC;gBACI,kBAAkB,EAAE,SAAS;aAChC,CACV,CAAC;IACN,CAAC,CAAC","sourcesContent":["import { getListTypeStyle } from './getListTypeStyle';\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-core';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { setListStartNumber, setListStyle, setListType } from 'roosterjs-content-model-api';\nimport type { ContentModelDocument, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function keyboardListTrigger(\n editor: IEditor,\n rawEvent: KeyboardEvent,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n) {\n if (shouldSearchForBullet || shouldSearchForNumbering) {\n editor.formatContentModel((model, _context) => {\n const listStyleType = getListTypeStyle(\n model,\n shouldSearchForBullet,\n shouldSearchForNumbering\n );\n if (listStyleType) {\n const segmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false);\n if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {\n segmentsAndParagraphs[0][1].segments.splice(0, 1);\n }\n const { listType, styleType, index } = listStyleType;\n triggerList(editor, model, listType, styleType, index);\n rawEvent.preventDefault();\n normalizeContentModel(model);\n\n return true;\n }\n return false;\n });\n }\n}\n\nconst triggerList = (\n editor: IEditor,\n model: ContentModelDocument,\n listType: 'OL' | 'UL',\n styleType: number,\n index?: number\n) => {\n setListType(model, listType);\n const isOrderedList = listType == 'OL';\n // If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber\n if (index && index > 1 && isOrderedList) {\n setListStartNumber(editor, index);\n }\n setListStyle(\n editor,\n isOrderedList\n ? {\n orderedStyleType: styleType,\n }\n : {\n unorderedStyleType: styleType,\n }\n );\n};\n"]}
1
+ {"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts"],"names":[],"mappings":";;;;IASA;;OAEG;IACH,SAAgB,mBAAmB,CAC/B,MAAe,EACf,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAI,qBAAqB,IAAI,wBAAwB,EAAE;YACnD,MAAM,CAAC,kBAAkB,CACrB,UAAC,KAAK,EAAE,OAAO;gBACX,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAClC,KAAK,EACL,qBAAqB,EACrB,wBAAwB,CAC3B,CAAC;gBACF,IAAI,aAAa,EAAE;oBACf,IAAM,qBAAqB,GAAG,IAAA,8DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC7E,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACzD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACrD;oBACO,IAAA,QAAQ,GAAuB,aAAa,SAApC,EAAE,SAAS,GAAY,aAAa,UAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;oBACrD,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC/C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAElC,OAAO,IAAI,CAAC;iBACf;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC,EACD;gBACI,OAAO,EAAE,gBAAgB;aAC5B,CACJ,CAAC;SACL;IACL,CAAC;IAhCD,kDAgCC;IAED,IAAM,WAAW,GAAG,UAChB,KAA2B,EAC3B,QAAqB,EACrB,SAAiB,EACjB,KAAc;QAEd,IAAA,yCAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,aAAa,EAAE;YACrC,IAAA,qDAAuB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACzC;QACD,IAAA,+CAAiB,EACb,KAAK,EACL,aAAa;YACT,CAAC,CAAC;gBACI,gBAAgB,EAAE,SAAS;aAC9B;YACH,CAAC,CAAC;gBACI,kBAAkB,EAAE,SAAS;aAChC,CACV,CAAC;IACN,CAAC,CAAC","sourcesContent":["import { getListTypeStyle } from './getListTypeStyle';\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport {\n setListType,\n setModelListStartNumber,\n setModelListStyle,\n} from 'roosterjs-content-model-api';\nimport type { ContentModelDocument, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function keyboardListTrigger(\n editor: IEditor,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n) {\n if (shouldSearchForBullet || shouldSearchForNumbering) {\n editor.formatContentModel(\n (model, context) => {\n const listStyleType = getListTypeStyle(\n model,\n shouldSearchForBullet,\n shouldSearchForNumbering\n );\n if (listStyleType) {\n const segmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false);\n if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {\n segmentsAndParagraphs[0][1].segments.splice(0, 1);\n }\n const { listType, styleType, index } = listStyleType;\n triggerList(model, listType, styleType, index);\n context.canUndoByBackspace = true;\n\n return true;\n }\n\n return false;\n },\n {\n apiName: 'autoToggleList',\n }\n );\n }\n}\n\nconst triggerList = (\n model: ContentModelDocument,\n listType: 'OL' | 'UL',\n styleType: number,\n index?: number\n) => {\n setListType(model, listType);\n const isOrderedList = listType == 'OL';\n if (index && index > 1 && isOrderedList) {\n setModelListStartNumber(model, index);\n }\n setModelListStyle(\n model,\n isOrderedList\n ? {\n orderedStyleType: styleType,\n }\n : {\n unorderedStyleType: styleType,\n }\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "roosterjs-content-model-core"], function (require, exports, roosterjs_content_model_core_1) {
1
+ define(["require", "exports", "roosterjs-content-model-dom"], function (require, exports, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.deleteAllSegmentBefore = void 0;
@@ -14,7 +14,7 @@ define(["require", "exports", "roosterjs-content-model-core"], function (require
14
14
  for (var i = index - 1; i >= 0; i--) {
15
15
  var segment = paragraph.segments[i];
16
16
  segment.isSelected = true;
17
- if ((0, roosterjs_content_model_core_1.deleteSegment)(paragraph, segment, context.formatContext)) {
17
+ if ((0, roosterjs_content_model_dom_1.deleteSegment)(paragraph, segment, context.formatContext)) {
18
18
  context.deleteResult = 'range';
19
19
  }
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deleteAllSegmentBefore.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACI,IAAM,sBAAsB,GAAwB,UAAA,OAAO;QAC9D,IAAI,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE;YACtC,OAAO;SACV;QAEK,IAAA,KAAwB,OAAO,CAAC,WAAW,EAAzC,SAAS,eAAA,EAAE,MAAM,YAAwB,CAAC;QAClD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAE1B,IAAI,IAAA,4CAAa,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC1D,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aAClC;SACJ;IACL,CAAC,CAAC;IAjBW,QAAA,sBAAsB,0BAiBjC","sourcesContent":["import { deleteSegment } from 'roosterjs-content-model-core';\nimport type { DeleteSelectionStep } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const deleteAllSegmentBefore: DeleteSelectionStep = context => {\n if (context.deleteResult != 'notDeleted') {\n return;\n }\n\n const { paragraph, marker } = context.insertPoint;\n const index = paragraph.segments.indexOf(marker);\n\n for (let i = index - 1; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n segment.isSelected = true;\n\n if (deleteSegment(paragraph, segment, context.formatContext)) {\n context.deleteResult = 'range';\n }\n }\n};\n"]}
1
+ {"version":3,"file":"deleteAllSegmentBefore.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACI,IAAM,sBAAsB,GAAwB,UAAA,OAAO;QAC9D,IAAI,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE;YACtC,OAAO;SACV;QAEK,IAAA,KAAwB,OAAO,CAAC,WAAW,EAAzC,SAAS,eAAA,EAAE,MAAM,YAAwB,CAAC;QAClD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAE1B,IAAI,IAAA,2CAAa,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC1D,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aAClC;SACJ;IACL,CAAC,CAAC;IAjBW,QAAA,sBAAsB,0BAiBjC","sourcesContent":["import { deleteSegment } from 'roosterjs-content-model-dom';\nimport type { DeleteSelectionStep } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const deleteAllSegmentBefore: DeleteSelectionStep = context => {\n if (context.deleteResult != 'notDeleted') {\n return;\n }\n\n const { paragraph, marker } = context.insertPoint;\n const index = paragraph.segments.indexOf(marker);\n\n for (let i = index - 1; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n segment.isSelected = true;\n\n if (deleteSegment(paragraph, segment, context.formatContext)) {\n context.deleteResult = 'range';\n }\n }\n};\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content-model-api", "roosterjs-content-model-dom", "roosterjs-content-model-core"], function (require, exports, getLeafSiblingBlock_1, roosterjs_content_model_api_1, roosterjs_content_model_dom_1, roosterjs_content_model_core_1) {
1
+ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content-model-api", "roosterjs-content-model-dom"], function (require, exports, getLeafSiblingBlock_1, roosterjs_content_model_api_1, roosterjs_content_model_dom_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.backwardDeleteCollapsedSelection = exports.forwardDeleteCollapsedSelection = void 0;
@@ -17,7 +17,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
17
17
  var blockToDelete;
18
18
  var root;
19
19
  if (segmentToDelete) {
20
- if ((0, roosterjs_content_model_core_1.deleteSegment)(paragraph, segmentToDelete, context.formatContext, direction)) {
20
+ if ((0, roosterjs_content_model_dom_1.deleteSegment)(paragraph, segmentToDelete, context.formatContext, direction)) {
21
21
  context.deleteResult = 'singleChar';
22
22
  // It is possible that we have deleted everything from this paragraph, so we need to mark it as not implicit
23
23
  // to avoid losing its format. See https://github.com/microsoft/roosterjs/issues/1953
@@ -34,7 +34,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
34
34
  if (block.blockType == 'Paragraph') {
35
35
  if (siblingSegment) {
36
36
  // When selection is under general segment, need to check if it has a sibling sibling, and delete from it
37
- if ((0, roosterjs_content_model_core_1.deleteSegment)(block, siblingSegment, context.formatContext, direction)) {
37
+ if ((0, roosterjs_content_model_dom_1.deleteSegment)(block, siblingSegment, context.formatContext, direction)) {
38
38
  context.deleteResult = 'range';
39
39
  }
40
40
  }
@@ -61,7 +61,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
61
61
  context.lastTableContext = tableContext;
62
62
  }
63
63
  else {
64
- if ((0, roosterjs_content_model_core_1.deleteBlock)(path_1[0].blocks, block, undefined /*replacement*/, context.formatContext, direction)) {
64
+ if ((0, roosterjs_content_model_dom_1.deleteBlock)(path_1[0].blocks, block, undefined /*replacement*/, context.formatContext, direction)) {
65
65
  context.deleteResult = 'range';
66
66
  }
67
67
  }
@@ -84,7 +84,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
84
84
  segments[0].segmentType == 'SelectionMarker' &&
85
85
  paragraph.format.marginLeft &&
86
86
  parseInt(paragraph.format.marginLeft) &&
87
- (0, roosterjs_content_model_core_1.getClosestAncestorBlockGroupIndex)(path, ['Document', 'TableCell'], ['ListItem']) > -1);
87
+ (0, roosterjs_content_model_dom_1.getClosestAncestorBlockGroupIndex)(path, ['Document', 'TableCell'], ['ListItem']) > -1);
88
88
  }
89
89
  /**
90
90
  * If the last segment is BR, remove it for now. We may add it back later when normalize model.