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.
- package/lib/autoFormat/AutoFormatPlugin.d.ts +5 -0
- package/lib/autoFormat/AutoFormatPlugin.js +24 -6
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib/autoFormat/hyphen/transformHyphen.js +35 -0
- package/lib/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib/autoFormat/link/createLink.js +6 -6
- package/lib/autoFormat/link/createLink.js.map +1 -1
- package/lib/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib/autoFormat/link/createLinkAfterSpace.js +17 -34
- package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib/autoFormat/link/unlink.js +4 -5
- package/lib/autoFormat/link/unlink.js.map +1 -1
- package/lib/autoFormat/list/getListTypeStyle.js +2 -2
- package/lib/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib/autoFormat/list/keyboardListTrigger.js +10 -18
- package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib/edit/deleteSteps/deleteList.js +13 -7
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.js +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib/edit/keyboardDelete.js +2 -2
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardTab.js +25 -9
- package/lib/edit/keyboardTab.js.map +1 -1
- package/lib/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib/edit/tabUtils/handleTabOnTable.js +25 -0
- package/lib/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.js +40 -0
- package/lib/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib/hyperlink/HyperlinkPlugin.js +141 -0
- package/lib/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib/hyperlink/HyperlinkToolTip.js +3 -0
- package/lib/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib/markdown/MarkdownPlugin.js +31 -12
- package/lib/markdown/MarkdownPlugin.js.map +1 -1
- package/lib/markdown/utils/setFormat.d.ts +2 -2
- package/lib/markdown/utils/setFormat.js +20 -30
- package/lib/markdown/utils/setFormat.js.map +1 -1
- package/lib/shortcut/shortcuts.d.ts +3 -3
- package/lib/shortcut/shortcuts.js +6 -3
- package/lib/shortcut/shortcuts.js.map +1 -1
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +5 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.js +23 -7
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib-amd/autoFormat/hyphen/transformHyphen.js +36 -0
- package/lib-amd/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib-amd/autoFormat/link/createLink.js +6 -6
- package/lib-amd/autoFormat/link/createLink.js.map +1 -1
- package/lib-amd/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js +18 -34
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-amd/autoFormat/link/unlink.js +4 -5
- package/lib-amd/autoFormat/link/unlink.js.map +1 -1
- package/lib-amd/autoFormat/list/getListTypeStyle.js +2 -2
- package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib-amd/autoFormat/list/keyboardListTrigger.js +11 -18
- package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteList.js +13 -7
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-amd/edit/keyboardDelete.js +2 -2
- package/lib-amd/edit/keyboardDelete.js.map +1 -1
- package/lib-amd/edit/keyboardTab.js +24 -10
- package/lib-amd/edit/keyboardTab.js.map +1 -1
- package/lib-amd/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib-amd/edit/tabUtils/handleTabOnTable.js +25 -0
- package/lib-amd/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.js +40 -0
- package/lib-amd/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.js +142 -0
- package/lib-amd/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.js +5 -0
- package/lib-amd/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib-amd/index.d.ts +2 -0
- package/lib-amd/index.js +3 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib-amd/markdown/MarkdownPlugin.js +31 -12
- package/lib-amd/markdown/MarkdownPlugin.js.map +1 -1
- package/lib-amd/markdown/utils/setFormat.d.ts +2 -2
- package/lib-amd/markdown/utils/setFormat.js +20 -30
- package/lib-amd/markdown/utils/setFormat.js.map +1 -1
- package/lib-amd/shortcut/shortcuts.d.ts +3 -3
- package/lib-amd/shortcut/shortcuts.js +6 -3
- package/lib-amd/shortcut/shortcuts.js.map +1 -1
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +5 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +24 -6
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/hyphen/transformHyphen.d.ts +5 -0
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js +31 -0
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js.map +1 -0
- package/lib-mjs/autoFormat/link/createLink.js +6 -6
- package/lib-mjs/autoFormat/link/createLink.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.d.ts +2 -2
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +17 -34
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-mjs/autoFormat/link/unlink.js +4 -5
- package/lib-mjs/autoFormat/link/unlink.js.map +1 -1
- package/lib-mjs/autoFormat/list/getListTypeStyle.js +2 -2
- package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +2 -2
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js +10 -18
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteList.js +13 -7
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-mjs/edit/keyboardDelete.js +2 -2
- package/lib-mjs/edit/keyboardDelete.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.js +25 -9
- package/lib-mjs/edit/keyboardTab.js.map +1 -1
- package/lib-mjs/edit/tabUtils/handleTabOnTable.d.ts +6 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTable.js +21 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTable.js.map +1 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.d.ts +6 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js +36 -0
- package/lib-mjs/edit/tabUtils/handleTabOnTableCell.js.map +1 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.d.ts +48 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.js +138 -0
- package/lib-mjs/hyperlink/HyperlinkPlugin.js.map +1 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.d.ts +7 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.js +2 -0
- package/lib-mjs/hyperlink/HyperlinkToolTip.js.map +1 -0
- package/lib-mjs/index.d.ts +2 -0
- package/lib-mjs/index.js +1 -0
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/markdown/MarkdownPlugin.d.ts +13 -4
- package/lib-mjs/markdown/MarkdownPlugin.js +31 -12
- package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -1
- package/lib-mjs/markdown/utils/setFormat.d.ts +2 -2
- package/lib-mjs/markdown/utils/setFormat.js +20 -30
- package/lib-mjs/markdown/utils/setFormat.js.map +1 -1
- package/lib-mjs/shortcut/shortcuts.d.ts +3 -3
- package/lib-mjs/shortcut/shortcuts.js +6 -3
- package/lib-mjs/shortcut/shortcuts.js.map +1 -1
- package/package.json +5 -5
- package/lib/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib/autoFormat/link/getLinkSegment.js +0 -27
- package/lib/autoFormat/link/getLinkSegment.js.map +0 -1
- package/lib-amd/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib-amd/autoFormat/link/getLinkSegment.js +0 -27
- package/lib-amd/autoFormat/link/getLinkSegment.js.map +0 -1
- package/lib-mjs/autoFormat/link/getLinkSegment.d.ts +0 -5
- package/lib-mjs/autoFormat/link/getLinkSegment.js +0 -23
- 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
|
|
17
|
-
* - bold: If true text between * will receive bold format. Defaults to
|
|
18
|
-
* - italic: If true text between _ will receive italic format. Defaults to
|
|
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.
|
|
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.
|
|
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.
|
|
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 {
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EACH,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,GAClB,MAAM,6BAA6B,CAAC;AAGrC,IAAW,IAaV;AAbD,WAAW,IAAI;IACX,yCAAa,CAAA;IACb,kCAAU,CAAA;IACV,0BAAM,CAAA;IACN,0BAAM,CAAA;IACN,0BAAM,CAAA;IACN,0BAAM,CAAA;IACN,0BAAM,CAAA;IACN,mCAAW,CAAA;IACX,qCAAY,CAAA;IACZ,mDAAmB,CAAA;IACnB,4CAAe,CAAA;IACf,0CAAc,CAAA;AAClB,CAAC,EAbU,IAAI,KAAJ,IAAI,QAad;AAED;;;;GAIG;AACH,MAAM,CAAC,IAAM,YAAY,GAAoB;IACzC,WAAW,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,KAAK;QACf,KAAK,YAAQ;KAChB;IACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,UAAU,CAAC,MAAM,CAAC,EAAlB,CAAkB;CACxC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,cAAc,GAAoB;IAC3C,WAAW,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,KAAK;QACf,KAAK,YAAQ;KAChB;IACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,YAAY,CAAC,MAAM,CAAC,EAApB,CAAoB;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAoB;IAC9C,WAAW,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,KAAK;QACf,KAAK,YAAQ;KAChB;IACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,eAAe,CAAC,MAAM,CAAC,EAAvB,CAAuB;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAoB;IAChD,WAAW,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,KAAK;QACf,KAAK,gBAAY;KACpB;IACD,OAAO,EAAE,UAAA,MAAM,IAAI,OAAA,WAAW,CAAC,MAAM,CAAC,EAAnB,CAAmB;
|
|
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.
|
|
7
|
-
"roosterjs-content-model-dom": "^9.
|
|
8
|
-
"roosterjs-content-model-types": "^9.
|
|
9
|
-
"roosterjs-content-model-api": "^9.
|
|
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.
|
|
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,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,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,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"]}
|