roosterjs-content-model-plugins 9.0.0 → 9.1.0

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 (160) hide show
  1. package/lib/autoFormat/AutoFormatPlugin.d.ts +5 -0
  2. package/lib/autoFormat/AutoFormatPlugin.js +24 -6
  3. package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
  4. package/lib/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  5. package/lib/autoFormat/hyphen/transformHyphen.js +35 -0
  6. package/lib/autoFormat/hyphen/transformHyphen.js.map +1 -0
  7. package/lib/autoFormat/link/createLink.js +6 -6
  8. package/lib/autoFormat/link/createLink.js.map +1 -1
  9. package/lib/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  10. package/lib/autoFormat/link/createLinkAfterSpace.js +17 -34
  11. package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  12. package/lib/autoFormat/link/unlink.js +4 -5
  13. package/lib/autoFormat/link/unlink.js.map +1 -1
  14. package/lib/autoFormat/list/getListTypeStyle.js +2 -2
  15. package/lib/autoFormat/list/getListTypeStyle.js.map +1 -1
  16. package/lib/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  17. package/lib/autoFormat/list/keyboardListTrigger.js +10 -18
  18. package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
  19. package/lib/edit/deleteSteps/deleteList.js +13 -7
  20. package/lib/edit/deleteSteps/deleteList.js.map +1 -1
  21. package/lib/edit/inputSteps/handleEnterOnList.js +1 -1
  22. package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
  23. package/lib/edit/keyboardDelete.js +2 -2
  24. package/lib/edit/keyboardDelete.js.map +1 -1
  25. package/lib/edit/keyboardTab.js +25 -9
  26. package/lib/edit/keyboardTab.js.map +1 -1
  27. package/lib/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  28. package/lib/edit/tabUtils/handleTabOnTable.js +25 -0
  29. package/lib/edit/tabUtils/handleTabOnTable.js.map +1 -0
  30. package/lib/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  31. package/lib/edit/tabUtils/handleTabOnTableCell.js +40 -0
  32. package/lib/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  33. package/lib/hyperlink/HyperlinkPlugin.d.ts +48 -0
  34. package/lib/hyperlink/HyperlinkPlugin.js +141 -0
  35. package/lib/hyperlink/HyperlinkPlugin.js.map +1 -0
  36. package/lib/hyperlink/HyperlinkToolTip.d.ts +7 -0
  37. package/lib/hyperlink/HyperlinkToolTip.js +3 -0
  38. package/lib/hyperlink/HyperlinkToolTip.js.map +1 -0
  39. package/lib/index.d.ts +2 -0
  40. package/lib/index.js +3 -1
  41. package/lib/index.js.map +1 -1
  42. package/lib/markdown/MarkdownPlugin.d.ts +13 -4
  43. package/lib/markdown/MarkdownPlugin.js +31 -12
  44. package/lib/markdown/MarkdownPlugin.js.map +1 -1
  45. package/lib/markdown/utils/setFormat.d.ts +2 -2
  46. package/lib/markdown/utils/setFormat.js +20 -30
  47. package/lib/markdown/utils/setFormat.js.map +1 -1
  48. package/lib/shortcut/shortcuts.d.ts +3 -3
  49. package/lib/shortcut/shortcuts.js +6 -3
  50. package/lib/shortcut/shortcuts.js.map +1 -1
  51. package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +5 -0
  52. package/lib-amd/autoFormat/AutoFormatPlugin.js +23 -7
  53. package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
  54. package/lib-amd/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  55. package/lib-amd/autoFormat/hyphen/transformHyphen.js +36 -0
  56. package/lib-amd/autoFormat/hyphen/transformHyphen.js.map +1 -0
  57. package/lib-amd/autoFormat/link/createLink.js +6 -6
  58. package/lib-amd/autoFormat/link/createLink.js.map +1 -1
  59. package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  60. package/lib-amd/autoFormat/link/createLinkAfterSpace.js +18 -34
  61. package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  62. package/lib-amd/autoFormat/link/unlink.js +4 -5
  63. package/lib-amd/autoFormat/link/unlink.js.map +1 -1
  64. package/lib-amd/autoFormat/list/getListTypeStyle.js +2 -2
  65. package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -1
  66. package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  67. package/lib-amd/autoFormat/list/keyboardListTrigger.js +11 -18
  68. package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
  69. package/lib-amd/edit/deleteSteps/deleteList.js +13 -7
  70. package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
  71. package/lib-amd/edit/inputSteps/handleEnterOnList.js +1 -1
  72. package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
  73. package/lib-amd/edit/keyboardDelete.js +2 -2
  74. package/lib-amd/edit/keyboardDelete.js.map +1 -1
  75. package/lib-amd/edit/keyboardTab.js +24 -10
  76. package/lib-amd/edit/keyboardTab.js.map +1 -1
  77. package/lib-amd/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  78. package/lib-amd/edit/tabUtils/handleTabOnTable.js +25 -0
  79. package/lib-amd/edit/tabUtils/handleTabOnTable.js.map +1 -0
  80. package/lib-amd/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  81. package/lib-amd/edit/tabUtils/handleTabOnTableCell.js +40 -0
  82. package/lib-amd/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  83. package/lib-amd/hyperlink/HyperlinkPlugin.d.ts +48 -0
  84. package/lib-amd/hyperlink/HyperlinkPlugin.js +142 -0
  85. package/lib-amd/hyperlink/HyperlinkPlugin.js.map +1 -0
  86. package/lib-amd/hyperlink/HyperlinkToolTip.d.ts +7 -0
  87. package/lib-amd/hyperlink/HyperlinkToolTip.js +5 -0
  88. package/lib-amd/hyperlink/HyperlinkToolTip.js.map +1 -0
  89. package/lib-amd/index.d.ts +2 -0
  90. package/lib-amd/index.js +3 -2
  91. package/lib-amd/index.js.map +1 -1
  92. package/lib-amd/markdown/MarkdownPlugin.d.ts +13 -4
  93. package/lib-amd/markdown/MarkdownPlugin.js +31 -12
  94. package/lib-amd/markdown/MarkdownPlugin.js.map +1 -1
  95. package/lib-amd/markdown/utils/setFormat.d.ts +2 -2
  96. package/lib-amd/markdown/utils/setFormat.js +20 -30
  97. package/lib-amd/markdown/utils/setFormat.js.map +1 -1
  98. package/lib-amd/shortcut/shortcuts.d.ts +3 -3
  99. package/lib-amd/shortcut/shortcuts.js +6 -3
  100. package/lib-amd/shortcut/shortcuts.js.map +1 -1
  101. package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +5 -0
  102. package/lib-mjs/autoFormat/AutoFormatPlugin.js +24 -6
  103. package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
  104. package/lib-mjs/autoFormat/hyphen/transformHyphen.d.ts +5 -0
  105. package/lib-mjs/autoFormat/hyphen/transformHyphen.js +31 -0
  106. package/lib-mjs/autoFormat/hyphen/transformHyphen.js.map +1 -0
  107. package/lib-mjs/autoFormat/link/createLink.js +6 -6
  108. package/lib-mjs/autoFormat/link/createLink.js.map +1 -1
  109. package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
  110. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +17 -34
  111. package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
  112. package/lib-mjs/autoFormat/link/unlink.js +4 -5
  113. package/lib-mjs/autoFormat/link/unlink.js.map +1 -1
  114. package/lib-mjs/autoFormat/list/getListTypeStyle.js +2 -2
  115. package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -1
  116. package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +2 -2
  117. package/lib-mjs/autoFormat/list/keyboardListTrigger.js +10 -18
  118. package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
  119. package/lib-mjs/edit/deleteSteps/deleteList.js +13 -7
  120. package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
  121. package/lib-mjs/edit/inputSteps/handleEnterOnList.js +1 -1
  122. package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
  123. package/lib-mjs/edit/keyboardDelete.js +2 -2
  124. package/lib-mjs/edit/keyboardDelete.js.map +1 -1
  125. package/lib-mjs/edit/keyboardTab.js +25 -9
  126. package/lib-mjs/edit/keyboardTab.js.map +1 -1
  127. package/lib-mjs/edit/tabUtils/handleTabOnTable.d.ts +6 -0
  128. package/lib-mjs/edit/tabUtils/handleTabOnTable.js +21 -0
  129. package/lib-mjs/edit/tabUtils/handleTabOnTable.js.map +1 -0
  130. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
  131. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js +36 -0
  132. package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
  133. package/lib-mjs/hyperlink/HyperlinkPlugin.d.ts +48 -0
  134. package/lib-mjs/hyperlink/HyperlinkPlugin.js +138 -0
  135. package/lib-mjs/hyperlink/HyperlinkPlugin.js.map +1 -0
  136. package/lib-mjs/hyperlink/HyperlinkToolTip.d.ts +7 -0
  137. package/lib-mjs/hyperlink/HyperlinkToolTip.js +2 -0
  138. package/lib-mjs/hyperlink/HyperlinkToolTip.js.map +1 -0
  139. package/lib-mjs/index.d.ts +2 -0
  140. package/lib-mjs/index.js +1 -0
  141. package/lib-mjs/index.js.map +1 -1
  142. package/lib-mjs/markdown/MarkdownPlugin.d.ts +13 -4
  143. package/lib-mjs/markdown/MarkdownPlugin.js +31 -12
  144. package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -1
  145. package/lib-mjs/markdown/utils/setFormat.d.ts +2 -2
  146. package/lib-mjs/markdown/utils/setFormat.js +20 -30
  147. package/lib-mjs/markdown/utils/setFormat.js.map +1 -1
  148. package/lib-mjs/shortcut/shortcuts.d.ts +3 -3
  149. package/lib-mjs/shortcut/shortcuts.js +6 -3
  150. package/lib-mjs/shortcut/shortcuts.js.map +1 -1
  151. package/package.json +5 -5
  152. package/lib/autoFormat/link/getLinkSegment.d.ts +0 -5
  153. package/lib/autoFormat/link/getLinkSegment.js +0 -27
  154. package/lib/autoFormat/link/getLinkSegment.js.map +0 -1
  155. package/lib-amd/autoFormat/link/getLinkSegment.d.ts +0 -5
  156. package/lib-amd/autoFormat/link/getLinkSegment.js +0 -27
  157. package/lib-amd/autoFormat/link/getLinkSegment.js.map +0 -1
  158. package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +0 -5
  159. package/lib-mjs/autoFormat/link/getLinkSegment.js +0 -23
  160. package/lib-mjs/autoFormat/link/getLinkSegment.js.map +0 -1
@@ -13,9 +13,10 @@ var DefaultOptions = {
13
13
  var MarkdownPlugin = /** @class */ (function () {
14
14
  /**
15
15
  * @param options An optional parameter that takes in an object of type MarkdownOptions, which includes the following properties:
16
- * - strikethrough: If true text between ~ will receive strikethrough format. Defaults to true.
17
- * - bold: If true text between * will receive bold format. Defaults to true.
18
- * - italic: If true text between _ will receive italic format. Defaults to true.
16
+ * - strikethrough: If true text between ~ will receive strikethrough format. Defaults to false.
17
+ * - bold: If true text between * will receive bold format. Defaults to false.
18
+ * - italic: If true text between _ will receive italic format. Defaults to false.
19
+ * - codeFormat: If provided, text between ` will receive code format. Defaults to undefined.
19
20
  */
20
21
  function MarkdownPlugin(options) {
21
22
  if (options === void 0) { options = DefaultOptions; }
@@ -24,6 +25,7 @@ var MarkdownPlugin = /** @class */ (function () {
24
25
  this.shouldBold = false;
25
26
  this.shouldItalic = false;
26
27
  this.shouldStrikethrough = false;
28
+ this.shouldCode = false;
27
29
  this.lastKeyTyped = null;
28
30
  }
29
31
  /**
@@ -48,9 +50,7 @@ var MarkdownPlugin = /** @class */ (function () {
48
50
  */
49
51
  MarkdownPlugin.prototype.dispose = function () {
50
52
  this.editor = null;
51
- this.shouldBold = false;
52
- this.shouldItalic = false;
53
- this.shouldStrikethrough = false;
53
+ this.disableAllFeatures();
54
54
  this.lastKeyTyped = null;
55
55
  };
56
56
  /**
@@ -116,6 +116,17 @@ var MarkdownPlugin = /** @class */ (function () {
116
116
  }
117
117
  }
118
118
  break;
119
+ case '`':
120
+ if (this.options.codeFormat) {
121
+ if (this.shouldCode) {
122
+ setFormat(editor, '`', {} /* format */, this.options.codeFormat);
123
+ this.shouldCode = false;
124
+ }
125
+ else {
126
+ this.shouldCode = true;
127
+ }
128
+ }
129
+ break;
119
130
  }
120
131
  }
121
132
  };
@@ -124,9 +135,7 @@ var MarkdownPlugin = /** @class */ (function () {
124
135
  if (!event.handledByEditFeature && !rawEvent.defaultPrevented) {
125
136
  switch (rawEvent.key) {
126
137
  case 'Enter':
127
- this.shouldBold = false;
128
- this.shouldItalic = false;
129
- this.shouldStrikethrough = false;
138
+ this.disableAllFeatures();
130
139
  this.lastKeyTyped = null;
131
140
  break;
132
141
  case ' ':
@@ -139,6 +148,9 @@ var MarkdownPlugin = /** @class */ (function () {
139
148
  else if (this.lastKeyTyped === '_' && this.shouldItalic) {
140
149
  this.shouldItalic = false;
141
150
  }
151
+ else if (this.lastKeyTyped === '`' && this.shouldCode) {
152
+ this.shouldCode = false;
153
+ }
142
154
  this.lastKeyTyped = null;
143
155
  break;
144
156
  default:
@@ -158,16 +170,23 @@ var MarkdownPlugin = /** @class */ (function () {
158
170
  else if (this.lastKeyTyped === '_' && this.shouldItalic) {
159
171
  this.shouldItalic = false;
160
172
  }
173
+ else if (this.lastKeyTyped === '`' && this.shouldCode) {
174
+ this.shouldCode = false;
175
+ }
161
176
  this.lastKeyTyped = null;
162
177
  }
163
178
  };
164
179
  MarkdownPlugin.prototype.handleContentChangedEvent = function (event) {
165
180
  if (event.source == 'Format') {
166
- this.shouldBold = false;
167
- this.shouldItalic = false;
168
- this.shouldStrikethrough = false;
181
+ this.disableAllFeatures();
169
182
  }
170
183
  };
184
+ MarkdownPlugin.prototype.disableAllFeatures = function () {
185
+ this.shouldBold = false;
186
+ this.shouldItalic = false;
187
+ this.shouldStrikethrough = false;
188
+ this.shouldCode = false;
189
+ };
171
190
  return MarkdownPlugin;
172
191
  }());
173
192
  export { MarkdownPlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { setFormat } from './utils/setFormat';\nimport type {\n ContentChangedEvent,\n EditorInputEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options for Markdown plugin\n */\nexport interface MarkdownOptions {\n strikethrough?: boolean;\n bold?: boolean;\n italic?: boolean;\n}\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<MarkdownOptions> = {\n strikethrough: false,\n bold: false,\n italic: false,\n};\n\n/**\n * Markdown plugin handles markdown formatting, such as transforming * characters into bold text.\n */\nexport class MarkdownPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private shouldBold = false;\n private shouldItalic = false;\n private shouldStrikethrough = false;\n private lastKeyTyped: string | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type MarkdownOptions, which includes the following properties:\n * - strikethrough: If true text between ~ will receive strikethrough format. Defaults to true.\n * - bold: If true text between * will receive bold format. Defaults to true.\n * - italic: If true text between _ will receive italic format. Defaults to true.\n */\n constructor(private options: MarkdownOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'Markdown';\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 this.shouldBold = false;\n this.shouldItalic = false;\n this.shouldStrikethrough = false;\n this.lastKeyTyped = 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.handleBackspaceEvent(event);\n this.handleKeyDownEvent(event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(event);\n break;\n }\n }\n }\n\n private handleEditorInputEvent(editor: IEditor, event: EditorInputEvent) {\n const rawEvent = event.rawEvent;\n const selection = editor.getDOMSelection();\n if (\n selection &&\n selection.type == 'range' &&\n selection.range.collapsed &&\n rawEvent.inputType == 'insertText'\n ) {\n switch (rawEvent.data) {\n case '*':\n if (this.options.bold) {\n if (this.shouldBold) {\n setFormat(editor, '*', { fontWeight: 'bold' });\n this.shouldBold = false;\n } else {\n this.shouldBold = true;\n }\n }\n\n break;\n case '~':\n if (this.options.strikethrough) {\n if (this.shouldStrikethrough) {\n setFormat(editor, '~', { strikethrough: true });\n this.shouldStrikethrough = false;\n } else {\n this.shouldStrikethrough = true;\n }\n }\n break;\n case '_':\n if (this.options.italic) {\n if (this.shouldItalic) {\n setFormat(editor, '_', { italic: true });\n this.shouldItalic = false;\n } else {\n this.shouldItalic = true;\n }\n }\n break;\n }\n }\n }\n\n private handleKeyDownEvent(event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!event.handledByEditFeature && !rawEvent.defaultPrevented) {\n switch (rawEvent.key) {\n case 'Enter':\n this.shouldBold = false;\n this.shouldItalic = false;\n this.shouldStrikethrough = false;\n this.lastKeyTyped = null;\n break;\n case ' ':\n if (this.lastKeyTyped === '*' && this.shouldBold) {\n this.shouldBold = false;\n } else if (this.lastKeyTyped === '~' && this.shouldStrikethrough) {\n this.shouldStrikethrough = false;\n } else if (this.lastKeyTyped === '_' && this.shouldItalic) {\n this.shouldItalic = false;\n }\n this.lastKeyTyped = null;\n break;\n default:\n this.lastKeyTyped = rawEvent.key;\n break;\n }\n }\n }\n\n private handleBackspaceEvent(event: KeyDownEvent) {\n if (!event.handledByEditFeature && event.rawEvent.key === 'Backspace') {\n if (this.lastKeyTyped === '*' && this.shouldBold) {\n this.shouldBold = false;\n } else if (this.lastKeyTyped === '~' && this.shouldStrikethrough) {\n this.shouldStrikethrough = false;\n } else if (this.lastKeyTyped === '_' && this.shouldItalic) {\n this.shouldItalic = false;\n }\n this.lastKeyTyped = null;\n }\n }\n\n private handleContentChangedEvent(event: ContentChangedEvent) {\n if (event.source == 'Format') {\n this.shouldBold = false;\n this.shouldItalic = false;\n this.shouldStrikethrough = false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MarkdownPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { setFormat } from './utils/setFormat';\nimport type {\n ContentChangedEvent,\n ContentModelCodeFormat,\n EditorInputEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n *\n * Options for Markdown plugin\n * - strikethrough: If true text between ~ will receive strikethrough format.\n * - bold: If true text between * will receive bold format.\n * - italic: If true text between _ will receive italic format.\n * - codeFormat: If provided, text between ` will receive code format. If equal to {}, it will set the default code format.\n */\nexport interface MarkdownOptions {\n strikethrough?: boolean;\n bold?: boolean;\n italic?: boolean;\n codeFormat?: ContentModelCodeFormat;\n}\n\n/**\n * @internal\n */\nconst DefaultOptions: Partial<MarkdownOptions> = {\n strikethrough: false,\n bold: false,\n italic: false,\n};\n\n/**\n * Markdown plugin handles markdown formatting, such as transforming * characters into bold text.\n */\nexport class MarkdownPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private shouldBold = false;\n private shouldItalic = false;\n private shouldStrikethrough = false;\n private shouldCode = false;\n private lastKeyTyped: string | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type MarkdownOptions, which includes the following properties:\n * - strikethrough: If true text between ~ will receive strikethrough format. Defaults to false.\n * - bold: If true text between * will receive bold format. Defaults to false.\n * - italic: If true text between _ will receive italic format. Defaults to false.\n * - codeFormat: If provided, text between ` will receive code format. Defaults to undefined.\n */\n constructor(private options: MarkdownOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'Markdown';\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 this.disableAllFeatures();\n this.lastKeyTyped = 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.handleBackspaceEvent(event);\n this.handleKeyDownEvent(event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(event);\n break;\n }\n }\n }\n\n private handleEditorInputEvent(editor: IEditor, event: EditorInputEvent) {\n const rawEvent = event.rawEvent;\n const selection = editor.getDOMSelection();\n if (\n selection &&\n selection.type == 'range' &&\n selection.range.collapsed &&\n rawEvent.inputType == 'insertText'\n ) {\n switch (rawEvent.data) {\n case '*':\n if (this.options.bold) {\n if (this.shouldBold) {\n setFormat(editor, '*', { fontWeight: 'bold' });\n this.shouldBold = false;\n } else {\n this.shouldBold = true;\n }\n }\n\n break;\n case '~':\n if (this.options.strikethrough) {\n if (this.shouldStrikethrough) {\n setFormat(editor, '~', { strikethrough: true });\n this.shouldStrikethrough = false;\n } else {\n this.shouldStrikethrough = true;\n }\n }\n break;\n case '_':\n if (this.options.italic) {\n if (this.shouldItalic) {\n setFormat(editor, '_', { italic: true });\n this.shouldItalic = false;\n } else {\n this.shouldItalic = true;\n }\n }\n break;\n case '`':\n if (this.options.codeFormat) {\n if (this.shouldCode) {\n setFormat(editor, '`', {} /* format */, this.options.codeFormat);\n this.shouldCode = false;\n } else {\n this.shouldCode = true;\n }\n }\n break;\n }\n }\n }\n\n private handleKeyDownEvent(event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!event.handledByEditFeature && !rawEvent.defaultPrevented) {\n switch (rawEvent.key) {\n case 'Enter':\n this.disableAllFeatures();\n this.lastKeyTyped = null;\n break;\n case ' ':\n if (this.lastKeyTyped === '*' && this.shouldBold) {\n this.shouldBold = false;\n } else if (this.lastKeyTyped === '~' && this.shouldStrikethrough) {\n this.shouldStrikethrough = false;\n } else if (this.lastKeyTyped === '_' && this.shouldItalic) {\n this.shouldItalic = false;\n } else if (this.lastKeyTyped === '`' && this.shouldCode) {\n this.shouldCode = false;\n }\n this.lastKeyTyped = null;\n break;\n default:\n this.lastKeyTyped = rawEvent.key;\n break;\n }\n }\n }\n\n private handleBackspaceEvent(event: KeyDownEvent) {\n if (!event.handledByEditFeature && event.rawEvent.key === 'Backspace') {\n if (this.lastKeyTyped === '*' && this.shouldBold) {\n this.shouldBold = false;\n } else if (this.lastKeyTyped === '~' && this.shouldStrikethrough) {\n this.shouldStrikethrough = false;\n } else if (this.lastKeyTyped === '_' && this.shouldItalic) {\n this.shouldItalic = false;\n } else if (this.lastKeyTyped === '`' && this.shouldCode) {\n this.shouldCode = false;\n }\n this.lastKeyTyped = null;\n }\n }\n\n private handleContentChangedEvent(event: ContentChangedEvent) {\n if (event.source == 'Format') {\n this.disableAllFeatures();\n }\n }\n\n private disableAllFeatures() {\n this.shouldBold = false;\n this.shouldItalic = false;\n this.shouldStrikethrough = false;\n this.shouldCode = false;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { ContentModelSegmentFormat, IEditor } from 'roosterjs-content-model-types';
1
+ import type { ContentModelCodeFormat, ContentModelSegmentFormat, IEditor } from 'roosterjs-content-model-types';
2
2
  /**
3
3
  * @internal
4
4
  */
5
- export declare function setFormat(editor: IEditor, character: string, format: ContentModelSegmentFormat): void;
5
+ export declare function setFormat(editor: IEditor, character: string, format: ContentModelSegmentFormat, codeFormat?: ContentModelCodeFormat): void;
@@ -1,39 +1,29 @@
1
1
  import { __assign } from "tslib";
2
- import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';
2
+ import { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';
3
3
  import { splitTextSegment } from '../../pluginUtils/splitTextSegment';
4
4
  /**
5
5
  * @internal
6
6
  */
7
- export function setFormat(editor, character, format) {
8
- editor.formatContentModel(function (model, context) {
9
- var _a;
10
- var selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false /*includeFormatHolder*/);
11
- if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {
12
- var marker = selectedSegmentsAndParagraphs[0][0];
13
- context.newPendingFormat = __assign(__assign({}, marker.format), { strikethrough: !!marker.format.strikethrough, italic: !!marker.format.italic, fontWeight: ((_a = marker.format) === null || _a === void 0 ? void 0 : _a.fontWeight) ? 'bold' : undefined });
14
- var paragraph = selectedSegmentsAndParagraphs[0][1];
15
- if (marker.segmentType == 'SelectionMarker') {
16
- var markerIndex = paragraph.segments.indexOf(marker);
17
- if (markerIndex > 0 && paragraph.segments[markerIndex - 1]) {
18
- var segmentBeforeMarker = paragraph.segments[markerIndex - 1];
19
- if (segmentBeforeMarker.segmentType == 'Text' &&
20
- segmentBeforeMarker.text[segmentBeforeMarker.text.length - 1] == character) {
21
- var textBeforeMarker = segmentBeforeMarker.text.slice(0, -1);
22
- if (textBeforeMarker.indexOf(character) > -1) {
23
- var lastCharIndex = segmentBeforeMarker.text.length;
24
- var firstCharIndex = segmentBeforeMarker.text
25
- .substring(0, lastCharIndex - 1)
26
- .lastIndexOf(character);
27
- var formattedText = splitTextSegment(segmentBeforeMarker, paragraph, firstCharIndex, lastCharIndex);
28
- formattedText.text = formattedText.text
29
- .replace(character, '')
30
- .slice(0, -1);
31
- formattedText.format = __assign(__assign({}, formattedText.format), format);
32
- context.canUndoByBackspace = true;
33
- return true;
34
- }
35
- }
7
+ export function setFormat(editor, character, format, codeFormat) {
8
+ formatTextSegmentBeforeSelectionMarker(editor, function (_model, previousSegment, paragraph, markerFormat, context) {
9
+ if (previousSegment.text[previousSegment.text.length - 1] == character) {
10
+ var textBeforeMarker = previousSegment.text.slice(0, -1);
11
+ context.newPendingFormat = __assign(__assign({}, markerFormat), { strikethrough: !!markerFormat.strikethrough, italic: !!markerFormat.italic, fontWeight: (markerFormat === null || markerFormat === void 0 ? void 0 : markerFormat.fontWeight) ? 'bold' : undefined });
12
+ if (textBeforeMarker.indexOf(character) > -1) {
13
+ var lastCharIndex = previousSegment.text.length;
14
+ var firstCharIndex = previousSegment.text
15
+ .substring(0, lastCharIndex - 1)
16
+ .lastIndexOf(character);
17
+ var formattedText = splitTextSegment(previousSegment, paragraph, firstCharIndex, lastCharIndex);
18
+ formattedText.text = formattedText.text.replace(character, '').slice(0, -1);
19
+ formattedText.format = __assign(__assign({}, formattedText.format), format);
20
+ if (codeFormat) {
21
+ formattedText.code = {
22
+ format: codeFormat,
23
+ };
36
24
  }
25
+ context.canUndoByBackspace = true;
26
+ return true;
37
27
  }
38
28
  }
39
29
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"setFormat.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAItE;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,SAAiB,EAAE,MAAiC;IAC3F,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,OAAO;;QACrC,IAAM,6BAA6B,GAAG,gCAAgC,CAClE,KAAK,EACL,KAAK,CAAC,uBAAuB,CAChC,CAAC;QAEF,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACjF,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,gBAAgB,yBACjB,MAAM,CAAC,MAAM,KAChB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAC9B,UAAU,EAAE,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAC7D,CAAC;YAEF,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,WAAW,IAAI,iBAAiB,EAAE;gBACzC,IAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;oBACxD,IAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;oBAEhE,IACI,mBAAmB,CAAC,WAAW,IAAI,MAAM;wBACzC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,EAC5E;wBACE,IAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC/D,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;4BAC1C,IAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;4BACtD,IAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI;iCAC1C,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC;iCAC/B,WAAW,CAAC,SAAS,CAAC,CAAC;4BAE5B,IAAM,aAAa,GAAG,gBAAgB,CAClC,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,aAAa,CAChB,CAAC;4BAEF,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;iCAClC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iCACtB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;4BAClB,aAAa,CAAC,MAAM,yBACb,aAAa,CAAC,MAAM,GACpB,MAAM,CACZ,CAAC;4BAEF,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;4BAClC,OAAO,IAAI,CAAC;yBACf;qBACJ;iBACJ;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport { splitTextSegment } from '../../pluginUtils/splitTextSegment';\n\nimport type { ContentModelSegmentFormat, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setFormat(editor: IEditor, character: string, format: ContentModelSegmentFormat) {\n editor.formatContentModel((model, context) => {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /*includeFormatHolder*/\n );\n\n if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {\n const marker = selectedSegmentsAndParagraphs[0][0];\n context.newPendingFormat = {\n ...marker.format,\n strikethrough: !!marker.format.strikethrough,\n italic: !!marker.format.italic,\n fontWeight: marker.format?.fontWeight ? 'bold' : undefined,\n };\n\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n if (marker.segmentType == 'SelectionMarker') {\n const markerIndex = paragraph.segments.indexOf(marker);\n if (markerIndex > 0 && paragraph.segments[markerIndex - 1]) {\n const segmentBeforeMarker = paragraph.segments[markerIndex - 1];\n\n if (\n segmentBeforeMarker.segmentType == 'Text' &&\n segmentBeforeMarker.text[segmentBeforeMarker.text.length - 1] == character\n ) {\n const textBeforeMarker = segmentBeforeMarker.text.slice(0, -1);\n if (textBeforeMarker.indexOf(character) > -1) {\n const lastCharIndex = segmentBeforeMarker.text.length;\n const firstCharIndex = segmentBeforeMarker.text\n .substring(0, lastCharIndex - 1)\n .lastIndexOf(character);\n\n const formattedText = splitTextSegment(\n segmentBeforeMarker,\n paragraph,\n firstCharIndex,\n lastCharIndex\n );\n\n formattedText.text = formattedText.text\n .replace(character, '')\n .slice(0, -1);\n formattedText.format = {\n ...formattedText.format,\n ...format,\n };\n\n context.canUndoByBackspace = true;\n return true;\n }\n }\n }\n }\n }\n return false;\n });\n}\n"]}
1
+ {"version":3,"file":"setFormat.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAQtE;;GAEG;AACH,MAAM,UAAU,SAAS,CACrB,MAAe,EACf,SAAiB,EACjB,MAAiC,EACjC,UAAmC;IAEnC,sCAAsC,CAClC,MAAM,EACN,UAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO;QACtD,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,EAAE;YACpE,IAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,gBAAgB,yBACjB,YAAY,KACf,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,EAC3C,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAC7B,UAAU,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAC5D,CAAC;YACF,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1C,IAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClD,IAAM,cAAc,GAAG,eAAe,CAAC,IAAI;qBACtC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC;qBAC/B,WAAW,CAAC,SAAS,CAAC,CAAC;gBAE5B,IAAM,aAAa,GAAG,gBAAgB,CAClC,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,CAChB,CAAC;gBAEF,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,aAAa,CAAC,MAAM,yBACb,aAAa,CAAC,MAAM,GACpB,MAAM,CACZ,CAAC;gBACF,IAAI,UAAU,EAAE;oBACZ,aAAa,CAAC,IAAI,GAAG;wBACjB,MAAM,EAAE,UAAU;qBACrB,CAAC;iBACL;gBAED,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAClC,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CACJ,CAAC;AACN,CAAC","sourcesContent":["import { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';\nimport { splitTextSegment } from '../../pluginUtils/splitTextSegment';\n\nimport type {\n ContentModelCodeFormat,\n ContentModelSegmentFormat,\n IEditor,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setFormat(\n editor: IEditor,\n character: string,\n format: ContentModelSegmentFormat,\n codeFormat?: ContentModelCodeFormat\n) {\n formatTextSegmentBeforeSelectionMarker(\n editor,\n (_model, previousSegment, paragraph, markerFormat, context) => {\n if (previousSegment.text[previousSegment.text.length - 1] == character) {\n const textBeforeMarker = previousSegment.text.slice(0, -1);\n context.newPendingFormat = {\n ...markerFormat,\n strikethrough: !!markerFormat.strikethrough,\n italic: !!markerFormat.italic,\n fontWeight: markerFormat?.fontWeight ? 'bold' : undefined,\n };\n if (textBeforeMarker.indexOf(character) > -1) {\n const lastCharIndex = previousSegment.text.length;\n const firstCharIndex = previousSegment.text\n .substring(0, lastCharIndex - 1)\n .lastIndexOf(character);\n\n const formattedText = splitTextSegment(\n previousSegment,\n paragraph,\n firstCharIndex,\n lastCharIndex\n );\n\n formattedText.text = formattedText.text.replace(character, '').slice(0, -1);\n formattedText.format = {\n ...formattedText.format,\n ...format,\n };\n if (codeFormat) {\n formattedText.code = {\n format: codeFormat,\n };\n }\n\n context.canUndoByBackspace = true;\n return true;\n }\n }\n return false;\n }\n );\n}\n"]}
@@ -20,7 +20,7 @@ export declare const ShortcutUnderline: ShortcutCommand;
20
20
  /**
21
21
  * Shortcut command for Clear Format
22
22
  * Windows: Ctrl + Space
23
- * MacOS: Meta + Space
23
+ * MacOS: N/A
24
24
  */
25
25
  export declare const ShortcutClearFormat: ShortcutCommand;
26
26
  /**
@@ -74,12 +74,12 @@ export declare const ShortcutDecreaseFont: ShortcutCommand;
74
74
  /**
75
75
  * Shortcut command for Intent list
76
76
  * Windows: Alt + Shift + Arrow Right
77
- * MacOS: Option + Shift+ Arrow Right
77
+ * MacOS: N/A
78
78
  */
79
79
  export declare const ShortcutIndentList: ShortcutCommand;
80
80
  /**
81
81
  * Shortcut command for Outdent list
82
82
  * Windows: Alt + Shift + Arrow Left
83
- * MacOS: Option + Shift+ Arrow Left
83
+ * MacOS: N/A
84
84
  */
85
85
  export declare const ShortcutOutdentList: ShortcutCommand;
@@ -58,7 +58,7 @@ export var ShortcutUnderline = {
58
58
  /**
59
59
  * Shortcut command for Clear Format
60
60
  * Windows: Ctrl + Space
61
- * MacOS: Meta + Space
61
+ * MacOS: N/A
62
62
  */
63
63
  export var ShortcutClearFormat = {
64
64
  shortcutKey: {
@@ -67,6 +67,7 @@ export var ShortcutClearFormat = {
67
67
  which: 32 /* SPACE */,
68
68
  },
69
69
  onClick: function (editor) { return clearFormat(editor); },
70
+ environment: 'nonMac',
70
71
  };
71
72
  /**
72
73
  * Shortcut command for Undo 1
@@ -178,7 +179,7 @@ export var ShortcutDecreaseFont = {
178
179
  /**
179
180
  * Shortcut command for Intent list
180
181
  * Windows: Alt + Shift + Arrow Right
181
- * MacOS: Option + Shift+ Arrow Right
182
+ * MacOS: N/A
182
183
  */
183
184
  export var ShortcutIndentList = {
184
185
  shortcutKey: {
@@ -189,11 +190,12 @@ export var ShortcutIndentList = {
189
190
  onClick: function (editor) {
190
191
  setShortcutIndentationCommand(editor, 'indent');
191
192
  },
193
+ environment: 'nonMac',
192
194
  };
193
195
  /**
194
196
  * Shortcut command for Outdent list
195
197
  * Windows: Alt + Shift + Arrow Left
196
- * MacOS: Option + Shift+ Arrow Left
198
+ * MacOS: N/A
197
199
  */
198
200
  export var ShortcutOutdentList = {
199
201
  shortcutKey: {
@@ -204,5 +206,6 @@ export var ShortcutOutdentList = {
204
206
  onClick: function (editor) {
205
207
  setShortcutIndentationCommand(editor, 'outdent');
206
208
  },
209
+ environment: 'nonMac',
207
210
  };
208
211
  //# sourceMappingURL=shortcuts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":"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","sourcesContent":["import { redo, undo } from 'roosterjs-content-model-core';\nimport { setShortcutIndentationCommand } from './utils/setShortcutIndentationCommand';\nimport {\n changeFontSize,\n clearFormat,\n toggleBold,\n toggleBullet,\n toggleItalic,\n toggleNumbering,\n toggleUnderline,\n} from 'roosterjs-content-model-api';\nimport type { ShortcutCommand } from './ShortcutCommand';\n\nconst enum Keys {\n BACKSPACE = 8,\n SPACE = 32,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n COMMA = 188,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n ArrowRight = 39,\n ArrowLeft = 37,\n}\n\n/**\n * Shortcut command for Bold\n * Windows: Ctrl + B\n * MacOS: Meta + B\n */\nexport const ShortcutBold: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.B,\n },\n onClick: editor => toggleBold(editor),\n};\n\n/**\n * Shortcut command for Italic\n * Windows: Ctrl + I\n * MacOS: Meta + I\n */\nexport const ShortcutItalic: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.I,\n },\n onClick: editor => toggleItalic(editor),\n};\n\n/**\n * Shortcut command for Underline\n * Windows: Ctrl + U\n * MacOS: Meta + U\n */\nexport const ShortcutUnderline: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.U,\n },\n onClick: editor => toggleUnderline(editor),\n};\n\n/**\n * Shortcut command for Clear Format\n * Windows: Ctrl + Space\n * MacOS: Meta + Space\n */\nexport const ShortcutClearFormat: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.SPACE,\n },\n onClick: editor => clearFormat(editor),\n};\n\n/**\n * Shortcut command for Undo 1\n * Windows: Ctrl + Z\n * MacOS: Meta + Z\n */\nexport const ShortcutUndo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Z,\n },\n onClick: editor => undo(editor),\n};\n\n/**\n * Shortcut command for Undo 2\n * Windows: Alt + Backspace\n * MacOS: N/A\n */\nexport const ShortcutUndo2: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: false,\n which: Keys.BACKSPACE,\n },\n onClick: editor => undo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 1\n * Windows: Ctrl + Y\n * MacOS: N/A\n */\nexport const ShortcutRedo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Y,\n },\n onClick: editor => redo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 2\n * Windows: N/A\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoMacOS: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n environment: 'mac',\n};\n\n/**\n * Shortcut command for Bullet List\n * Windows: Ctrl + . (Period)\n * MacOS: Meta + . (Period)\n */\nexport const ShortcutBullet: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.PERIOD,\n },\n onClick: editor => toggleBullet(editor),\n};\n\n/**\n * Shortcut command for Numbering List\n * Windows: Ctrl + / (Forward slash)\n * MacOS: Meta + / (Forward slash)\n */\nexport const ShortcutNumbering: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.FORWARD_SLASH,\n },\n onClick: editor => toggleNumbering(editor),\n};\n\n/**\n * Shortcut command for Increase Font\n * Windows: Ctrl + Shift + . (Period)\n * MacOS: Meta + Shift + . (Period)\n */\nexport const ShortcutIncreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.PERIOD,\n },\n onClick: editor => changeFontSize(editor, 'increase'),\n};\n\n/**\n * Shortcut command for Decrease Font\n * Windows: Ctrl + Shift + , (Comma)\n * MacOS: Meta + Shift + , (Comma)\n */\nexport const ShortcutDecreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.COMMA,\n },\n onClick: editor => changeFontSize(editor, 'decrease'),\n};\n\n/**\n * Shortcut command for Intent list\n * Windows: Alt + Shift + Arrow Right\n * MacOS: Option + Shift+ Arrow Right\n */\nexport const ShortcutIndentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowRight,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'indent');\n },\n};\n\n/**\n * Shortcut command for Outdent list\n * Windows: Alt + Shift + Arrow Left\n * MacOS: Option + Shift+ Arrow Left\n */\nexport const ShortcutOutdentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowLeft,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'outdent');\n },\n};\n"]}
1
+ {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts"],"names":[],"mappings":"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","sourcesContent":["import { redo, undo } from 'roosterjs-content-model-core';\nimport { setShortcutIndentationCommand } from './utils/setShortcutIndentationCommand';\nimport {\n changeFontSize,\n clearFormat,\n toggleBold,\n toggleBullet,\n toggleItalic,\n toggleNumbering,\n toggleUnderline,\n} from 'roosterjs-content-model-api';\nimport type { ShortcutCommand } from './ShortcutCommand';\n\nconst enum Keys {\n BACKSPACE = 8,\n SPACE = 32,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n COMMA = 188,\n PERIOD = 190,\n FORWARD_SLASH = 191,\n ArrowRight = 39,\n ArrowLeft = 37,\n}\n\n/**\n * Shortcut command for Bold\n * Windows: Ctrl + B\n * MacOS: Meta + B\n */\nexport const ShortcutBold: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.B,\n },\n onClick: editor => toggleBold(editor),\n};\n\n/**\n * Shortcut command for Italic\n * Windows: Ctrl + I\n * MacOS: Meta + I\n */\nexport const ShortcutItalic: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.I,\n },\n onClick: editor => toggleItalic(editor),\n};\n\n/**\n * Shortcut command for Underline\n * Windows: Ctrl + U\n * MacOS: Meta + U\n */\nexport const ShortcutUnderline: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.U,\n },\n onClick: editor => toggleUnderline(editor),\n};\n\n/**\n * Shortcut command for Clear Format\n * Windows: Ctrl + Space\n * MacOS: N/A\n */\nexport const ShortcutClearFormat: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.SPACE,\n },\n onClick: editor => clearFormat(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Undo 1\n * Windows: Ctrl + Z\n * MacOS: Meta + Z\n */\nexport const ShortcutUndo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Z,\n },\n onClick: editor => undo(editor),\n};\n\n/**\n * Shortcut command for Undo 2\n * Windows: Alt + Backspace\n * MacOS: N/A\n */\nexport const ShortcutUndo2: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: false,\n which: Keys.BACKSPACE,\n },\n onClick: editor => undo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 1\n * Windows: Ctrl + Y\n * MacOS: N/A\n */\nexport const ShortcutRedo: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.Y,\n },\n onClick: editor => redo(editor),\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Redo 2\n * Windows: N/A\n * MacOS: Meta + Shift + Z\n */\nexport const ShortcutRedoMacOS: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.Z,\n },\n onClick: editor => redo(editor),\n environment: 'mac',\n};\n\n/**\n * Shortcut command for Bullet List\n * Windows: Ctrl + . (Period)\n * MacOS: Meta + . (Period)\n */\nexport const ShortcutBullet: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.PERIOD,\n },\n onClick: editor => toggleBullet(editor),\n};\n\n/**\n * Shortcut command for Numbering List\n * Windows: Ctrl + / (Forward slash)\n * MacOS: Meta + / (Forward slash)\n */\nexport const ShortcutNumbering: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: false,\n which: Keys.FORWARD_SLASH,\n },\n onClick: editor => toggleNumbering(editor),\n};\n\n/**\n * Shortcut command for Increase Font\n * Windows: Ctrl + Shift + . (Period)\n * MacOS: Meta + Shift + . (Period)\n */\nexport const ShortcutIncreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.PERIOD,\n },\n onClick: editor => changeFontSize(editor, 'increase'),\n};\n\n/**\n * Shortcut command for Decrease Font\n * Windows: Ctrl + Shift + , (Comma)\n * MacOS: Meta + Shift + , (Comma)\n */\nexport const ShortcutDecreaseFont: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'ctrl',\n shiftKey: true,\n which: Keys.COMMA,\n },\n onClick: editor => changeFontSize(editor, 'decrease'),\n};\n\n/**\n * Shortcut command for Intent list\n * Windows: Alt + Shift + Arrow Right\n * MacOS: N/A\n */\nexport const ShortcutIndentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowRight,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'indent');\n },\n environment: 'nonMac',\n};\n\n/**\n * Shortcut command for Outdent list\n * Windows: Alt + Shift + Arrow Left\n * MacOS: N/A\n */\nexport const ShortcutOutdentList: ShortcutCommand = {\n shortcutKey: {\n modifierKey: 'alt',\n shiftKey: true,\n which: Keys.ArrowLeft,\n },\n onClick: editor => {\n setShortcutIndentationCommand(editor, 'outdent');\n },\n environment: 'nonMac',\n};\n"]}
package/package.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "description": "Plugins for roosterjs",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.1",
6
- "roosterjs-content-model-core": "^9.0.0",
7
- "roosterjs-content-model-dom": "^9.0.0",
8
- "roosterjs-content-model-types": "^9.0.0",
9
- "roosterjs-content-model-api": "^9.0.0"
6
+ "roosterjs-content-model-core": "^9.1.0",
7
+ "roosterjs-content-model-dom": "^9.1.0",
8
+ "roosterjs-content-model-types": "^9.1.0",
9
+ "roosterjs-content-model-api": "^9.1.0"
10
10
  },
11
- "version": "9.0.0",
11
+ "version": "9.1.0",
12
12
  "main": "./lib/index.js",
13
13
  "typings": "./lib/index.d.ts",
14
14
  "module": "./lib-mjs/index.js",
@@ -1,5 +0,0 @@
1
- import type { ContentModelDocument } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- */
5
- export declare function getLinkSegment(model: ContentModelDocument): import("roosterjs-content-model-types").ContentModelText | undefined;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLinkSegment = void 0;
4
- var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
5
- var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
6
- /**
7
- * @internal
8
- */
9
- function getLinkSegment(model) {
10
- var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
11
- if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {
12
- var selectedParagraph = selectedSegmentsAndParagraphs[0][1];
13
- var marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];
14
- var link = selectedParagraph.segments[selectedParagraph.segments.length - 2];
15
- if (marker &&
16
- link &&
17
- marker.segmentType === 'SelectionMarker' &&
18
- marker.isSelected &&
19
- link.segmentType === 'Text' &&
20
- ((0, roosterjs_content_model_api_1.matchLink)(link.text) || link.link)) {
21
- return link;
22
- }
23
- }
24
- return undefined;
25
- }
26
- exports.getLinkSegment = getLinkSegment;
27
- //# sourceMappingURL=getLinkSegment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":";;;AAAA,2EAA+E;AAC/E,2EAAwD;AAGxD;;GAEG;AACH,SAAgB,cAAc,CAAC,KAA2B;IACtD,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;IACF,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAClF,IAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,IAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/E,IACI,MAAM;YACN,IAAI;YACJ,MAAM,CAAC,WAAW,KAAK,iBAAiB;YACxC,MAAM,CAAC,UAAU;YACjB,IAAI,CAAC,WAAW,KAAK,MAAM;YAC3B,CAAC,IAAA,uCAAS,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EACrC;YACE,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AArBD,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,5 +0,0 @@
1
- import type { ContentModelDocument } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- */
5
- export declare function getLinkSegment(model: ContentModelDocument): import("roosterjs-content-model-types").ContentModelText | undefined;
@@ -1,27 +0,0 @@
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
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getLinkSegment = void 0;
5
- /**
6
- * @internal
7
- */
8
- function getLinkSegment(model) {
9
- var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
10
- if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {
11
- var selectedParagraph = selectedSegmentsAndParagraphs[0][1];
12
- var marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];
13
- var link = selectedParagraph.segments[selectedParagraph.segments.length - 2];
14
- if (marker &&
15
- link &&
16
- marker.segmentType === 'SelectionMarker' &&
17
- marker.isSelected &&
18
- link.segmentType === 'Text' &&
19
- ((0, roosterjs_content_model_api_1.matchLink)(link.text) || link.link)) {
20
- return link;
21
- }
22
- }
23
- return undefined;
24
- }
25
- exports.getLinkSegment = getLinkSegment;
26
- });
27
- //# sourceMappingURL=getLinkSegment.js.map
@@ -1 +0,0 @@
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,5 +0,0 @@
1
- import type { ContentModelDocument } from 'roosterjs-content-model-types';
2
- /**
3
- * @internal
4
- */
5
- export declare function getLinkSegment(model: ContentModelDocument): import("roosterjs-content-model-types").ContentModelText | undefined;
@@ -1,23 +0,0 @@
1
- import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';
2
- import { matchLink } from 'roosterjs-content-model-api';
3
- /**
4
- * @internal
5
- */
6
- export function getLinkSegment(model) {
7
- var selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false /* includingFormatHolder */);
8
- if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {
9
- var selectedParagraph = selectedSegmentsAndParagraphs[0][1];
10
- var marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];
11
- var link = selectedParagraph.segments[selectedParagraph.segments.length - 2];
12
- if (marker &&
13
- link &&
14
- marker.segmentType === 'SelectionMarker' &&
15
- marker.isSelected &&
16
- link.segmentType === 'Text' &&
17
- (matchLink(link.text) || link.link)) {
18
- return link;
19
- }
20
- }
21
- return undefined;
22
- }
23
- //# sourceMappingURL=getLinkSegment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA2B;IACtD,IAAM,6BAA6B,GAAG,gCAAgC,CAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;IACF,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAClF,IAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,IAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/E,IACI,MAAM;YACN,IAAI;YACJ,MAAM,CAAC,WAAW,KAAK,iBAAiB;YACxC,MAAM,CAAC,UAAU;YACjB,IAAI,CAAC,WAAW,KAAK,MAAM;YAC3B,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EACrC;YACE,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC","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"]}