roosterjs-content-model-plugins 0.28.2 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -37
- package/lib/autoFormat/AutoFormatPlugin.d.ts +5 -2
- package/lib/autoFormat/AutoFormatPlugin.js +23 -11
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/link/createLinkAfterSpace.js +28 -22
- package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib/autoFormat/link/getLinkSegment.js +2 -2
- package/lib/autoFormat/link/getLinkSegment.js.map +1 -1
- package/lib/autoFormat/list/getListTypeStyle.js +14 -14
- package/lib/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib/autoFormat/list/getNumberingListStyle.js +29 -29
- package/lib/autoFormat/list/getNumberingListStyle.js.map +1 -1
- package/lib/autoFormat/list/keyboardListTrigger.d.ts +1 -1
- package/lib/autoFormat/list/keyboardListTrigger.js +10 -11
- package/lib/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.js +2 -2
- package/lib/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js +4 -5
- package/lib/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib/edit/deleteSteps/deleteEmptyQuote.js +2 -3
- package/lib/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
- package/lib/edit/deleteSteps/deleteList.js +3 -5
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/edit/deleteSteps/deleteWordSelection.js +3 -4
- package/lib/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib/edit/inputSteps/handleEnterOnList.js +2 -3
- package/lib/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib/edit/keyboardDelete.js +4 -5
- package/lib/edit/keyboardDelete.js.map +1 -1
- package/lib/edit/keyboardInput.js +3 -4
- package/lib/edit/keyboardInput.js.map +1 -1
- package/lib/edit/keyboardTab.js +3 -3
- package/lib/edit/keyboardTab.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/MarkdownPlugin.d.ts +55 -0
- package/lib/markdown/MarkdownPlugin.js +177 -0
- package/lib/markdown/MarkdownPlugin.js.map +1 -0
- package/lib/markdown/utils/setFormat.d.ts +5 -0
- package/lib/markdown/utils/setFormat.js +46 -0
- package/lib/markdown/utils/setFormat.js.map +1 -0
- package/lib/paste/WordDesktop/processWordLists.js +2 -3
- package/lib/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib/pluginUtils/splitTextSegment.d.ts +5 -0
- package/lib/pluginUtils/splitTextSegment.js +26 -0
- package/lib/pluginUtils/splitTextSegment.js.map +1 -0
- package/lib/shortcut/ShortcutPlugin.js +2 -2
- package/lib/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib/shortcut/utils/setShortcutIndentationCommand.js +2 -2
- package/lib/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib/tableEdit/editors/features/CellResizer.js +5 -6
- package/lib/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib/tableEdit/editors/features/TableResizer.js +2 -3
- package/lib/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/lib/watermark/WatermarkFormat.d.ts +5 -0
- package/lib/watermark/WatermarkFormat.js +3 -0
- package/lib/watermark/WatermarkFormat.js.map +1 -0
- package/lib/watermark/WatermarkPlugin.d.ts +37 -0
- package/lib/watermark/WatermarkPlugin.js +99 -0
- package/lib/watermark/WatermarkPlugin.js.map +1 -0
- package/lib/watermark/isModelEmptyFast.d.ts +6 -0
- package/lib/watermark/isModelEmptyFast.js +35 -0
- package/lib/watermark/isModelEmptyFast.js.map +1 -0
- package/lib-amd/autoFormat/AutoFormatPlugin.d.ts +5 -2
- package/lib-amd/autoFormat/AutoFormatPlugin.js +23 -11
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js +28 -22
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-amd/autoFormat/link/getLinkSegment.js +2 -2
- package/lib-amd/autoFormat/link/getLinkSegment.js.map +1 -1
- package/lib-amd/autoFormat/list/getListTypeStyle.js +14 -14
- package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib-amd/autoFormat/list/getNumberingListStyle.js +29 -29
- package/lib-amd/autoFormat/list/getNumberingListStyle.js.map +1 -1
- package/lib-amd/autoFormat/list/keyboardListTrigger.d.ts +1 -1
- package/lib-amd/autoFormat/list/keyboardListTrigger.js +11 -11
- package/lib-amd/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js +2 -2
- package/lib-amd/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js +5 -5
- package/lib-amd/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js +3 -3
- package/lib-amd/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteList.js +3 -5
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteWordSelection.js +4 -4
- package/lib-amd/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-amd/edit/inputSteps/handleEnterOnList.js +3 -3
- package/lib-amd/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-amd/edit/keyboardDelete.js +4 -4
- package/lib-amd/edit/keyboardDelete.js.map +1 -1
- package/lib-amd/edit/keyboardInput.js +3 -3
- package/lib-amd/edit/keyboardInput.js.map +1 -1
- package/lib-amd/edit/keyboardTab.js +3 -3
- package/lib-amd/edit/keyboardTab.js.map +1 -1
- package/lib-amd/index.d.ts +3 -0
- package/lib-amd/index.js +4 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/markdown/MarkdownPlugin.d.ts +55 -0
- package/lib-amd/markdown/MarkdownPlugin.js +178 -0
- package/lib-amd/markdown/MarkdownPlugin.js.map +1 -0
- package/lib-amd/markdown/utils/setFormat.d.ts +5 -0
- package/lib-amd/markdown/utils/setFormat.js +45 -0
- package/lib-amd/markdown/utils/setFormat.js.map +1 -0
- package/lib-amd/paste/WordDesktop/processWordLists.js +3 -3
- package/lib-amd/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-amd/pluginUtils/splitTextSegment.d.ts +5 -0
- package/lib-amd/pluginUtils/splitTextSegment.js +26 -0
- package/lib-amd/pluginUtils/splitTextSegment.js.map +1 -0
- package/lib-amd/shortcut/ShortcutPlugin.js +2 -2
- package/lib-amd/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js +2 -2
- package/lib-amd/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/CellResizer.js +6 -6
- package/lib-amd/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableResizer.js +3 -3
- package/lib-amd/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/lib-amd/watermark/WatermarkFormat.d.ts +5 -0
- package/lib-amd/watermark/WatermarkFormat.js +5 -0
- package/lib-amd/watermark/WatermarkFormat.js.map +1 -0
- package/lib-amd/watermark/WatermarkPlugin.d.ts +37 -0
- package/lib-amd/watermark/WatermarkPlugin.js +99 -0
- package/lib-amd/watermark/WatermarkPlugin.js.map +1 -0
- package/lib-amd/watermark/isModelEmptyFast.d.ts +6 -0
- package/lib-amd/watermark/isModelEmptyFast.js +37 -0
- package/lib-amd/watermark/isModelEmptyFast.js.map +1 -0
- package/lib-mjs/autoFormat/AutoFormatPlugin.d.ts +5 -2
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +23 -11
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +28 -22
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-mjs/autoFormat/link/getLinkSegment.js +1 -1
- package/lib-mjs/autoFormat/link/getLinkSegment.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/getNumberingListStyle.js +1 -1
- package/lib-mjs/autoFormat/list/getNumberingListStyle.js.map +1 -1
- package/lib-mjs/autoFormat/list/keyboardListTrigger.d.ts +1 -1
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js +11 -12
- package/lib-mjs/autoFormat/list/keyboardListTrigger.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js +1 -1
- package/lib-mjs/edit/deleteSteps/deleteAllSegmentBefore.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js +1 -2
- package/lib-mjs/edit/deleteSteps/deleteCollapsedSelection.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js +1 -2
- package/lib-mjs/edit/deleteSteps/deleteEmptyQuote.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteList.js +2 -4
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.js +1 -2
- package/lib-mjs/edit/deleteSteps/deleteWordSelection.js.map +1 -1
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js +1 -2
- package/lib-mjs/edit/inputSteps/handleEnterOnList.js.map +1 -1
- package/lib-mjs/edit/keyboardDelete.js +1 -2
- package/lib-mjs/edit/keyboardDelete.js.map +1 -1
- package/lib-mjs/edit/keyboardInput.js +1 -2
- package/lib-mjs/edit/keyboardInput.js.map +1 -1
- package/lib-mjs/edit/keyboardTab.js +1 -1
- package/lib-mjs/edit/keyboardTab.js.map +1 -1
- package/lib-mjs/index.d.ts +3 -0
- package/lib-mjs/index.js +2 -0
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/markdown/MarkdownPlugin.d.ts +55 -0
- package/lib-mjs/markdown/MarkdownPlugin.js +174 -0
- package/lib-mjs/markdown/MarkdownPlugin.js.map +1 -0
- package/lib-mjs/markdown/utils/setFormat.d.ts +5 -0
- package/lib-mjs/markdown/utils/setFormat.js +42 -0
- package/lib-mjs/markdown/utils/setFormat.js.map +1 -0
- package/lib-mjs/paste/WordDesktop/processWordLists.js +1 -2
- package/lib-mjs/paste/WordDesktop/processWordLists.js.map +1 -1
- package/lib-mjs/pluginUtils/splitTextSegment.d.ts +5 -0
- package/lib-mjs/pluginUtils/splitTextSegment.js +22 -0
- package/lib-mjs/pluginUtils/splitTextSegment.js.map +1 -0
- package/lib-mjs/shortcut/ShortcutPlugin.js +1 -1
- package/lib-mjs/shortcut/ShortcutPlugin.js.map +1 -1
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js +1 -1
- package/lib-mjs/shortcut/utils/setShortcutIndentationCommand.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/CellResizer.js +1 -2
- package/lib-mjs/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableResizer.js +1 -2
- package/lib-mjs/tableEdit/editors/features/TableResizer.js.map +1 -1
- package/lib-mjs/watermark/WatermarkFormat.d.ts +5 -0
- package/lib-mjs/watermark/WatermarkFormat.js +2 -0
- package/lib-mjs/watermark/WatermarkFormat.js.map +1 -0
- package/lib-mjs/watermark/WatermarkPlugin.d.ts +37 -0
- package/lib-mjs/watermark/WatermarkPlugin.js +96 -0
- package/lib-mjs/watermark/WatermarkPlugin.js.map +1 -0
- package/lib-mjs/watermark/isModelEmptyFast.d.ts +6 -0
- package/lib-mjs/watermark/isModelEmptyFast.js +31 -0
- package/lib-mjs/watermark/isModelEmptyFast.js.map +1 -0
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"AutoFormatPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts"],"names":[],"mappings":";;;;IAsCA;;OAEG;IACH,IAAM,cAAc,GAAgC;QAChD,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;KAClB,CAAC;IAEF;;;OAGG;IACH;QAGI;;;;;;WAMG;QACH,0BAAoB,OAA2C;YAA3C,wBAAA,EAAA,wBAA2C;YAA3C,YAAO,GAAP,OAAO,CAAoC;YATvD,WAAM,GAAmB,IAAI,CAAC;QAS4B,CAAC;QAEnE;;WAEG;QACH,kCAAO,GAAP;YACI,OAAO,YAAY,CAAC;QACxB,CAAC;QAED;;;;;WAKG;QACH,qCAAU,GAAV,UAAW,MAAe;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;QAED;;;;WAIG;QACH,kCAAO,GAAP;YACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED;;;;;WAKG;QACH,wCAAa,GAAb,UAAc,KAAkB;YAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,QAAQ,KAAK,CAAC,SAAS,EAAE;oBACrB,KAAK,OAAO;wBACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAChD,MAAM;oBACV,KAAK,SAAS;wBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC5C,MAAM;oBACV,KAAK,gBAAgB;wBACjB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBACnD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,iDAAsB,GAA9B,UAA+B,MAAe,EAAE,KAAuB;YACnE,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,QAAQ,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,QAAQ,QAAQ,CAAC,IAAI,EAAE;oBACnB,KAAK,GAAG;wBACE,IAAA,KAA0C,IAAI,CAAC,OAAO,EAApD,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,QAAQ,cAAiB,CAAC;wBAC7D,IAAA,yCAAmB,EAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;wBACvD,IAAI,QAAQ,EAAE;4BACV,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC;yBAChC;wBACD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,6CAAkB,GAA1B,UAA2B,MAAe,EAAE,KAAmB;YAC3D,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBAC3D,QAAQ,QAAQ,CAAC,GAAG,EAAE;oBAClB,KAAK,WAAW;wBACZ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;4BACzB,IAAA,eAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBAC5B;wBACD,MAAM;iBACb;aACJ;QACL,CAAC;QAEO,oDAAyB,GAAjC,UAAkC,MAAe,EAAE,KAA0B;YACjE,IAAA,QAAQ,GAAK,IAAI,CAAC,OAAO,SAAjB,CAAkB;YAClC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE;gBACrC,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;aACtB;QACL,CAAC;QACL,uBAAC;IAAD,CAAC,AA9FD,IA8FC;IA9FY,4CAAgB","sourcesContent":["import { createLink } from './link/createLink';\nimport { createLinkAfterSpace } from './link/createLinkAfterSpace';\nimport { keyboardListTrigger } from './list/keyboardListTrigger';\nimport { unlink } from './link/unlink';\nimport type {\n ContentChangedEvent,\n EditorInputEvent,\n EditorPlugin,\n IEditor,\n KeyDownEvent,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * Options to customize the Content Model Auto Format Plugin\n */\nexport type AutoFormatOptions = {\n /**\n * When true, after type *, ->, -, --, => , —, > and space key a type of bullet list will be triggered. @default true\n */\n autoBullet: boolean;\n\n /**\n * When true, after type 1, A, a, i, I followed by ., ), - or between () and space key a type of numbering list will be triggered. @default true\n */\n autoNumbering: boolean;\n\n /**\n * When press backspace before a link, remove the hyperlink\n */\n autoUnlink: boolean;\n\n /**\n * When paste content, create hyperlink for the pasted link\n */\n autoLink: boolean;\n};\n\n/**\n * @internal\n */\nconst DefaultOptions: Required<AutoFormatOptions> = {\n autoBullet: false,\n autoNumbering: false,\n autoUnlink: false,\n autoLink: false,\n};\n\n/**\n * Auto Format plugin handles auto formatting, such as transforming * characters into a bullet list.\n * It can be customized with options to enable or disable auto list features.\n */\nexport class AutoFormatPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * @param options An optional parameter that takes in an object of type AutoFormatOptions, which includes the following properties:\n * - autoBullet: A boolean that enables or disables automatic bullet list formatting. Defaults to false.\n * - autoNumbering: A boolean that enables or disables automatic numbering formatting. Defaults to false.\n * - autoLink: A boolean that enables or disables automatic hyperlink creation when pasting or typing content. Defaults to false.\n * - autoUnlink: A boolean that enables or disables automatic hyperlink removal when pressing backspace. Defaults to false.\n */\n constructor(private options: AutoFormatOptions = DefaultOptions) {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'AutoFormat';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case 'input':\n this.handleEditorInputEvent(this.editor, event);\n break;\n case 'keyDown':\n this.handleKeyDownEvent(this.editor, event);\n break;\n case 'contentChanged':\n this.handleContentChangedEvent(this.editor, event);\n break;\n }\n }\n }\n\n private handleEditorInputEvent(editor: IEditor, event: EditorInputEvent) {\n const rawEvent = event.rawEvent;\n if (rawEvent.inputType === 'insertText') {\n switch (rawEvent.data) {\n case ' ':\n const { autoBullet, autoNumbering, autoLink } = this.options;\n keyboardListTrigger(editor, autoBullet, autoNumbering);\n if (autoLink) {\n createLinkAfterSpace(editor);\n }\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IEditor, event: KeyDownEvent) {\n const rawEvent = event.rawEvent;\n if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {\n switch (rawEvent.key) {\n case 'Backspace':\n if (this.options.autoUnlink) {\n unlink(editor, rawEvent);\n }\n break;\n }\n }\n }\n\n private handleContentChangedEvent(editor: IEditor, event: ContentChangedEvent) {\n const { autoLink } = this.options;\n if (event.source == 'Paste' && autoLink) {\n createLink(editor);\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-api", "../../pluginUtils/splitTextSegment"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_api_1, splitTextSegment_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.createLinkAfterSpace = void 0;
|
|
@@ -6,27 +6,33 @@ define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
function createLinkAfterSpace(editor) {
|
|
9
|
-
editor.formatContentModel(function (model) {
|
|
10
|
-
var selectedSegmentsAndParagraphs = (0,
|
|
11
|
-
if (selectedSegmentsAndParagraphs
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
textSegment.
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
editor.formatContentModel(function (model, context) {
|
|
10
|
+
var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
|
|
11
|
+
if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {
|
|
12
|
+
var markerIndex = selectedSegmentsAndParagraphs[0][1].segments.findIndex(function (segment) { return segment.segmentType == 'SelectionMarker'; });
|
|
13
|
+
var paragraph = selectedSegmentsAndParagraphs[0][1];
|
|
14
|
+
if (markerIndex > 0) {
|
|
15
|
+
var textSegment = paragraph.segments[markerIndex - 1];
|
|
16
|
+
var marker = paragraph.segments[markerIndex];
|
|
17
|
+
if (marker.segmentType == 'SelectionMarker' &&
|
|
18
|
+
textSegment &&
|
|
19
|
+
textSegment.segmentType == 'Text' &&
|
|
20
|
+
!textSegment.link) {
|
|
21
|
+
var link = textSegment.text.split(' ').pop();
|
|
22
|
+
var url = link === null || link === void 0 ? void 0 : link.trim();
|
|
23
|
+
var linkData = null;
|
|
24
|
+
if (url && link && (linkData = (0, roosterjs_content_model_api_1.matchLink)(url))) {
|
|
25
|
+
var linkSegment = (0, splitTextSegment_1.splitTextSegment)(textSegment, paragraph, textSegment.text.length - link.trimLeft().length, textSegment.text.trimRight().length);
|
|
26
|
+
linkSegment.link = {
|
|
27
|
+
format: {
|
|
28
|
+
href: linkData.normalizedUrl,
|
|
29
|
+
underline: true,
|
|
30
|
+
},
|
|
31
|
+
dataset: {},
|
|
32
|
+
};
|
|
33
|
+
context.canUndoByBackspace = true;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
37
|
}
|
|
32
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLinkAfterSpace.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts"],"names":[],"mappings":";;;;IAKA;;OAEG;IACH,SAAgB,oBAAoB,CAAC,MAAe;QAChD,MAAM,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"createLinkAfterSpace.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts"],"names":[],"mappings":";;;;IAKA;;OAEG;IACH,SAAgB,oBAAoB,CAAC,MAAe;QAChD,MAAM,CAAC,kBAAkB,CAAC,UAAC,KAAK,EAAE,OAAO;YACrC,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;YACF,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjF,IAAM,WAAW,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CACtE,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,WAAW,IAAI,iBAAiB,EAAxC,CAAwC,CACtD,CAAC;gBACF,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,WAAW,GAAG,CAAC,EAAE;oBACjB,IAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;oBACxD,IAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAC/C,IACI,MAAM,CAAC,WAAW,IAAI,iBAAiB;wBACvC,WAAW;wBACX,WAAW,CAAC,WAAW,IAAI,MAAM;wBACjC,CAAC,WAAW,CAAC,IAAI,EACnB;wBACE,IAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBAC/C,IAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAC;wBACzB,IAAI,QAAQ,GAAoB,IAAI,CAAC;wBACrC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAA,uCAAS,EAAC,GAAG,CAAC,CAAC,EAAE;4BAC5C,IAAM,WAAW,GAAG,IAAA,mCAAgB,EAChC,WAAW,EACX,SAAS,EACT,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAChD,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CACtC,CAAC;4BACF,WAAW,CAAC,IAAI,GAAG;gCACf,MAAM,EAAE;oCACJ,IAAI,EAAE,QAAQ,CAAC,aAAa;oCAC5B,SAAS,EAAE,IAAI;iCAClB;gCACD,OAAO,EAAE,EAAE;6BACd,CAAC;4BAEF,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;4BAElC,OAAO,IAAI,CAAC;yBACf;qBACJ;iBACJ;aACJ;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAhDD,oDAgDC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport { splitTextSegment } from '../../pluginUtils/splitTextSegment';\nimport type { IEditor, LinkData } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createLinkAfterSpace(editor: IEditor) {\n editor.formatContentModel((model, context) => {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs.length > 0 && selectedSegmentsAndParagraphs[0][1]) {\n const markerIndex = selectedSegmentsAndParagraphs[0][1].segments.findIndex(\n segment => segment.segmentType == 'SelectionMarker'\n );\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n if (markerIndex > 0) {\n const textSegment = paragraph.segments[markerIndex - 1];\n const marker = paragraph.segments[markerIndex];\n if (\n marker.segmentType == 'SelectionMarker' &&\n textSegment &&\n textSegment.segmentType == 'Text' &&\n !textSegment.link\n ) {\n const link = textSegment.text.split(' ').pop();\n const url = link?.trim();\n let linkData: LinkData | null = null;\n if (url && link && (linkData = matchLink(url))) {\n const linkSegment = splitTextSegment(\n textSegment,\n paragraph,\n textSegment.text.length - link.trimLeft().length,\n textSegment.text.trimRight().length\n );\n linkSegment.link = {\n format: {\n href: linkData.normalizedUrl,\n underline: true,\n },\n dataset: {},\n };\n\n context.canUndoByBackspace = true;\n\n return true;\n }\n }\n }\n }\n\n return false;\n });\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.getLinkSegment = void 0;
|
|
@@ -6,7 +6,7 @@ define(["require", "exports", "roosterjs-content-model-core", "roosterjs-content
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
function getLinkSegment(model) {
|
|
9
|
-
var selectedSegmentsAndParagraphs = (0,
|
|
9
|
+
var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false /* includingFormatHolder */);
|
|
10
10
|
if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {
|
|
11
11
|
var selectedParagraph = selectedSegmentsAndParagraphs[0][1];
|
|
12
12
|
var marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,cAAc,CAAC,KAA2B;QACtD,IAAM,6BAA6B,GAAG,IAAA
|
|
1
|
+
{"version":3,"file":"getLinkSegment.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/link/getLinkSegment.ts"],"names":[],"mappings":";;;;IAIA;;OAEG;IACH,SAAgB,cAAc,CAAC,KAA2B;QACtD,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAClE,KAAK,EACL,KAAK,CAAC,2BAA2B,CACpC,CAAC;QACF,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAClF,IAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjF,IAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,IACI,MAAM;gBACN,IAAI;gBACJ,MAAM,CAAC,WAAW,KAAK,iBAAiB;gBACxC,MAAM,CAAC,UAAU;gBACjB,IAAI,CAAC,WAAW,KAAK,MAAM;gBAC3B,CAAC,IAAA,uCAAS,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EACrC;gBACE,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IArBD,wCAqBC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport { matchLink } from 'roosterjs-content-model-api';\nimport type { ContentModelDocument } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getLinkSegment(model: ContentModelDocument) {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(\n model,\n false /* includingFormatHolder */\n );\n if (selectedSegmentsAndParagraphs.length == 1 && selectedSegmentsAndParagraphs[0][1]) {\n const selectedParagraph = selectedSegmentsAndParagraphs[0][1];\n const marker = selectedParagraph.segments[selectedParagraph.segments.length - 1];\n const link = selectedParagraph.segments[selectedParagraph.segments.length - 2];\n if (\n marker &&\n link &&\n marker.segmentType === 'SelectionMarker' &&\n marker.isSelected &&\n link.segmentType === 'Text' &&\n (matchLink(link.text) || link.link)\n ) {\n return link;\n }\n }\n return undefined;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "roosterjs-content-model-api", "./getNumberingListStyle", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-api", "./getNumberingListStyle", "roosterjs-content-model-dom"], function (require, exports, roosterjs_content_model_api_1, getNumberingListStyle_1, roosterjs_content_model_dom_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.getListTypeStyle = void 0;
|
|
@@ -8,7 +8,7 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
8
8
|
function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNumbering) {
|
|
9
9
|
if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
|
|
10
10
|
if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
|
|
11
|
-
var selectedSegmentsAndParagraphs = (0,
|
|
11
|
+
var selectedSegmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, true);
|
|
12
12
|
if (!selectedSegmentsAndParagraphs[0]) {
|
|
13
13
|
return undefined;
|
|
14
14
|
}
|
|
@@ -19,7 +19,7 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
19
19
|
marker.segmentType == 'SelectionMarker' &&
|
|
20
20
|
listMarkerSegment &&
|
|
21
21
|
listMarkerSegment.segmentType == 'Text') {
|
|
22
|
-
var listMarker = listMarkerSegment.text;
|
|
22
|
+
var listMarker = listMarkerSegment.text.trim();
|
|
23
23
|
var bulletType = bulletListType[listMarker];
|
|
24
24
|
if (bulletType && shouldSearchForBullet) {
|
|
25
25
|
return { listType: 'UL', styleType: bulletType };
|
|
@@ -49,14 +49,14 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
49
49
|
return previousListItem ? (0, roosterjs_content_model_api_1.findListItemsInSameThread)(model, previousListItem).length : undefined;
|
|
50
50
|
};
|
|
51
51
|
var getPreviousListLevel = function (model, paragraph) {
|
|
52
|
-
var blocks = (0,
|
|
52
|
+
var blocks = (0, roosterjs_content_model_dom_1.getOperationalBlocks)(model, ['ListItem'], ['TableCell'])[0];
|
|
53
53
|
var listItem = undefined;
|
|
54
54
|
if (blocks) {
|
|
55
55
|
var listBlockIndex = blocks.parent.blocks.indexOf(paragraph);
|
|
56
56
|
if (listBlockIndex > -1) {
|
|
57
57
|
for (var i = listBlockIndex - 1; i > -1; i--) {
|
|
58
58
|
var item = blocks.parent.blocks[i];
|
|
59
|
-
if ((0,
|
|
59
|
+
if ((0, roosterjs_content_model_dom_1.isBlockGroupOfType)(item, 'ListItem')) {
|
|
60
60
|
listItem = item;
|
|
61
61
|
break;
|
|
62
62
|
}
|
|
@@ -68,18 +68,18 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
68
68
|
var getPreviousListStyle = function (list) {
|
|
69
69
|
var _a;
|
|
70
70
|
if (list === null || list === void 0 ? void 0 : list.levels[0].dataset) {
|
|
71
|
-
return (_a = (0,
|
|
71
|
+
return (_a = (0, roosterjs_content_model_dom_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
var bulletListType = {
|
|
75
|
-
'*':
|
|
76
|
-
'-':
|
|
77
|
-
'--':
|
|
78
|
-
'->':
|
|
79
|
-
'-->':
|
|
80
|
-
'=>':
|
|
81
|
-
'>':
|
|
82
|
-
'—':
|
|
75
|
+
'*': roosterjs_content_model_dom_1.BulletListType.Disc,
|
|
76
|
+
'-': roosterjs_content_model_dom_1.BulletListType.Dash,
|
|
77
|
+
'--': roosterjs_content_model_dom_1.BulletListType.Square,
|
|
78
|
+
'->': roosterjs_content_model_dom_1.BulletListType.LongArrow,
|
|
79
|
+
'-->': roosterjs_content_model_dom_1.BulletListType.DoubleLongArrow,
|
|
80
|
+
'=>': roosterjs_content_model_dom_1.BulletListType.UnfilledArrow,
|
|
81
|
+
'>': roosterjs_content_model_dom_1.BulletListType.ShortArrow,
|
|
82
|
+
'—': roosterjs_content_model_dom_1.BulletListType.Hyphen,
|
|
83
83
|
};
|
|
84
84
|
var isNewList = function (listMarker) {
|
|
85
85
|
var marker = listMarker.replace(/[^\w\s]/g, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":";;;;IAwBA;;OAEG;IACH,SAAgB,gBAAgB,CAC5B,KAA2B,EAC3B,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAM,6BAA6B,GAAG,IAAA
|
|
1
|
+
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { findListItemsInSameThread } from 'roosterjs-content-model-api';\nimport { getNumberingListStyle } from './getNumberingListStyle';\nimport type {\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n} from 'roosterjs-content-model-types';\nimport {\n BulletListType,\n isBlockGroupOfType,\n updateListMetadata,\n getOperationalBlocks,\n getSelectedSegmentsAndParagraphs,\n} from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\ninterface ListTypeStyle {\n listType: 'UL' | 'OL';\n styleType: number;\n index?: number;\n}\n\n/**\n * @internal\n */\nexport function getListTypeStyle(\n model: ContentModelDocument,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n): ListTypeStyle | undefined {\n const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, true);\n if (!selectedSegmentsAndParagraphs[0]) {\n return undefined;\n }\n const marker = selectedSegmentsAndParagraphs[0][0];\n const paragraph = selectedSegmentsAndParagraphs[0][1];\n const listMarkerSegment = paragraph?.segments[0];\n\n if (\n marker &&\n marker.segmentType == 'SelectionMarker' &&\n listMarkerSegment &&\n listMarkerSegment.segmentType == 'Text'\n ) {\n const listMarker = listMarkerSegment.text.trim();\n const bulletType = bulletListType[listMarker];\n\n if (bulletType && shouldSearchForBullet) {\n return { listType: 'UL', styleType: bulletType };\n } else if (shouldSearchForNumbering) {\n const previousList = getPreviousListLevel(model, paragraph);\n const previousIndex = getPreviousListIndex(model, previousList);\n const previousListStyle = getPreviousListStyle(previousList);\n const numberingType = getNumberingListStyle(\n listMarker,\n previousIndex,\n previousListStyle\n );\n\n if (numberingType) {\n return {\n listType: 'OL',\n styleType: numberingType,\n index:\n !isNewList(listMarker) &&\n previousListStyle === numberingType &&\n previousIndex\n ? previousIndex + 1\n : undefined,\n };\n }\n }\n }\n return undefined;\n}\n\nconst getPreviousListIndex = (\n model: ContentModelDocument,\n previousListItem?: ContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (model: ContentModelDocument, paragraph: ContentModelParagraph) => {\n const blocks = getOperationalBlocks<ContentModelListItem>(\n model,\n ['ListItem'],\n ['TableCell']\n )[0];\n let listItem: ContentModelListItem | undefined = undefined;\n if (blocks) {\n const listBlockIndex = blocks.parent.blocks.indexOf(paragraph);\n\n if (listBlockIndex > -1) {\n for (let i = listBlockIndex - 1; i > -1; i--) {\n const item = blocks.parent.blocks[i];\n if (isBlockGroupOfType<ContentModelListItem>(item, 'ListItem')) {\n listItem = item;\n break;\n }\n }\n }\n }\n\n return listItem;\n};\n\nconst getPreviousListStyle = (list?: ContentModelListItem) => {\n if (list?.levels[0].dataset) {\n return updateListMetadata(list.levels[0])?.orderedStyleType;\n }\n};\n\nconst bulletListType: Record<string, number> = {\n '*': BulletListType.Disc,\n '-': BulletListType.Dash,\n '--': BulletListType.Square,\n '->': BulletListType.LongArrow,\n '-->': BulletListType.DoubleLongArrow,\n '=>': BulletListType.UnfilledArrow,\n '>': BulletListType.ShortArrow,\n '—': BulletListType.Hyphen,\n};\n\nconst isNewList = (listMarker: string) => {\n const marker = listMarker.replace(/[^\\w\\s]/g, '');\n const pattern = /^[1aAiI]$/;\n return pattern.test(marker);\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "./getIndex", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "./getIndex", "roosterjs-content-model-dom"], function (require, exports, getIndex_1, roosterjs_content_model_dom_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
var _a, _b, _c, _d, _e, _f;
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -24,16 +24,16 @@ define(["require", "exports", "./getIndex", "roosterjs-content-model-core"], fun
|
|
|
24
24
|
')': 3 /* Parenthesis */,
|
|
25
25
|
};
|
|
26
26
|
var lowerRomanTypes = [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
roosterjs_content_model_dom_1.NumberingListType.LowerRoman,
|
|
28
|
+
roosterjs_content_model_dom_1.NumberingListType.LowerRomanDash,
|
|
29
|
+
roosterjs_content_model_dom_1.NumberingListType.LowerRomanDoubleParenthesis,
|
|
30
|
+
roosterjs_content_model_dom_1.NumberingListType.LowerRomanParenthesis,
|
|
31
31
|
];
|
|
32
32
|
var upperRomanTypes = [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
roosterjs_content_model_dom_1.NumberingListType.UpperRoman,
|
|
34
|
+
roosterjs_content_model_dom_1.NumberingListType.UpperRomanDash,
|
|
35
|
+
roosterjs_content_model_dom_1.NumberingListType.UpperRomanDoubleParenthesis,
|
|
36
|
+
roosterjs_content_model_dom_1.NumberingListType.UpperRomanParenthesis,
|
|
37
37
|
];
|
|
38
38
|
var numberingTriggers = ['1', 'a', 'A', 'I', 'i'];
|
|
39
39
|
var lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];
|
|
@@ -75,34 +75,34 @@ define(["require", "exports", "./getIndex", "roosterjs-content-model-core"], fun
|
|
|
75
75
|
_a[5 /* UpperRoman */] = function (char) { return UpperRomanTypes[char] || undefined; },
|
|
76
76
|
_a);
|
|
77
77
|
var UpperRomanTypes = (_b = {},
|
|
78
|
-
_b[1 /* Dot */] =
|
|
79
|
-
_b[2 /* Dash */] =
|
|
80
|
-
_b[3 /* Parenthesis */] =
|
|
81
|
-
_b[4 /* DoubleParenthesis */] =
|
|
78
|
+
_b[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.UpperRoman,
|
|
79
|
+
_b[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanDash,
|
|
80
|
+
_b[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanParenthesis,
|
|
81
|
+
_b[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperRomanDoubleParenthesis,
|
|
82
82
|
_b);
|
|
83
83
|
var LowerRomanTypes = (_c = {},
|
|
84
|
-
_c[1 /* Dot */] =
|
|
85
|
-
_c[2 /* Dash */] =
|
|
86
|
-
_c[3 /* Parenthesis */] =
|
|
87
|
-
_c[4 /* DoubleParenthesis */] =
|
|
84
|
+
_c[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.LowerRoman,
|
|
85
|
+
_c[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanDash,
|
|
86
|
+
_c[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanParenthesis,
|
|
87
|
+
_c[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerRomanDoubleParenthesis,
|
|
88
88
|
_c);
|
|
89
89
|
var UpperAlphaTypes = (_d = {},
|
|
90
|
-
_d[1 /* Dot */] =
|
|
91
|
-
_d[2 /* Dash */] =
|
|
92
|
-
_d[3 /* Parenthesis */] =
|
|
93
|
-
_d[4 /* DoubleParenthesis */] =
|
|
90
|
+
_d[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlpha,
|
|
91
|
+
_d[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaDash,
|
|
92
|
+
_d[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaParenthesis,
|
|
93
|
+
_d[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.UpperAlphaDoubleParenthesis,
|
|
94
94
|
_d);
|
|
95
95
|
var LowerAlphaTypes = (_e = {},
|
|
96
|
-
_e[1 /* Dot */] =
|
|
97
|
-
_e[2 /* Dash */] =
|
|
98
|
-
_e[3 /* Parenthesis */] =
|
|
99
|
-
_e[4 /* DoubleParenthesis */] =
|
|
96
|
+
_e[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlpha,
|
|
97
|
+
_e[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaDash,
|
|
98
|
+
_e[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaParenthesis,
|
|
99
|
+
_e[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.LowerAlphaDoubleParenthesis,
|
|
100
100
|
_e);
|
|
101
101
|
var DecimalsTypes = (_f = {},
|
|
102
|
-
_f[1 /* Dot */] =
|
|
103
|
-
_f[2 /* Dash */] =
|
|
104
|
-
_f[3 /* Parenthesis */] =
|
|
105
|
-
_f[4 /* DoubleParenthesis */] =
|
|
102
|
+
_f[1 /* Dot */] = roosterjs_content_model_dom_1.NumberingListType.Decimal,
|
|
103
|
+
_f[2 /* Dash */] = roosterjs_content_model_dom_1.NumberingListType.DecimalDash,
|
|
104
|
+
_f[3 /* Parenthesis */] = roosterjs_content_model_dom_1.NumberingListType.DecimalParenthesis,
|
|
105
|
+
_f[4 /* DoubleParenthesis */] = roosterjs_content_model_dom_1.NumberingListType.DecimalDoubleParenthesis,
|
|
106
106
|
_f);
|
|
107
107
|
var identifyNumberingListType = function (numbering, isDoubleParenthesis, previousListStyle) {
|
|
108
108
|
var separatorCharacter = isDoubleParenthesis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { getIndex } from './getIndex';\nimport { NumberingListType } from 'roosterjs-content-model-core';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record<string, number> = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle === NumberingTypes.LowerRoman &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (\n previousListStyle === NumberingTypes.LowerAlpha ||\n (!previousListStyle && text === 'a')\n ) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle == NumberingTypes.UpperRoman &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (\n previousListStyle == NumberingTypes.UpperAlpha ||\n (!previousListStyle && text === 'A')\n ) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\n};\n\nconst UpperRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: number\n): number | undefined => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\n }\n return undefined;\n};\n\n/**\n * @internal\n */\nexport function getNumberingListStyle(\n textBeforeCursor: string,\n previousListIndex?: number,\n previousListStyle?: number\n): number | undefined {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n const index = getIndex(listIndex);\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\n\n if (\n !index ||\n index < 1 ||\n (!previousListIndex && isContinuosList) ||\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\n ) {\n return undefined;\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(\n trigger,\n isDoubleParenthesis,\n isContinuosList ? previousListStyle : undefined\n )\n : undefined;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n\nfunction canAppendList(index?: number, previousListIndex?: number) {\n return previousListIndex && index && previousListIndex + 1 === index;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getNumberingListStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts"],"names":[],"mappings":"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","sourcesContent":["import { getIndex } from './getIndex';\nimport { NumberingListType } from 'roosterjs-content-model-dom';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record<string, number> = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: number) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle === NumberingTypes.LowerRoman &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (\n previousListStyle === NumberingTypes.LowerAlpha ||\n (!previousListStyle && text === 'a')\n ) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle == NumberingTypes.UpperRoman &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (\n previousListStyle == NumberingTypes.UpperAlpha ||\n (!previousListStyle && text === 'A')\n ) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record<number, (char: number) => number | undefined> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || undefined,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || undefined,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || undefined,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || undefined,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || undefined,\n};\n\nconst UpperRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record<number, number> = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: number\n): number | undefined => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : undefined;\n }\n return undefined;\n};\n\n/**\n * @internal\n */\nexport function getNumberingListStyle(\n textBeforeCursor: string,\n previousListIndex?: number,\n previousListStyle?: number\n): number | undefined {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n const index = getIndex(listIndex);\n const isContinuosList = numberingTriggers.indexOf(listIndex) < 0;\n\n if (\n !index ||\n index < 1 ||\n (!previousListIndex && isContinuosList) ||\n (previousListIndex && isContinuosList && !canAppendList(index, previousListIndex))\n ) {\n return undefined;\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(\n trigger,\n isDoubleParenthesis,\n isContinuosList ? previousListStyle : undefined\n )\n : undefined;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n\nfunction canAppendList(index?: number, previousListIndex?: number) {\n return previousListIndex && index && previousListIndex + 1 === index;\n}\n"]}
|
|
@@ -2,4 +2,4 @@ import type { IEditor } from 'roosterjs-content-model-types';
|
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
*/
|
|
5
|
-
export declare function keyboardListTrigger(editor: IEditor,
|
|
5
|
+
export declare function keyboardListTrigger(editor: IEditor, shouldSearchForBullet?: boolean, shouldSearchForNumbering?: boolean): void;
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
define(["require", "exports", "./getListTypeStyle", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "./getListTypeStyle", "roosterjs-content-model-dom", "roosterjs-content-model-api"], function (require, exports, getListTypeStyle_1, roosterjs_content_model_dom_1, roosterjs_content_model_api_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.keyboardListTrigger = void 0;
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
function keyboardListTrigger(editor,
|
|
8
|
+
function keyboardListTrigger(editor, shouldSearchForBullet, shouldSearchForNumbering) {
|
|
9
9
|
if (shouldSearchForBullet === void 0) { shouldSearchForBullet = true; }
|
|
10
10
|
if (shouldSearchForNumbering === void 0) { shouldSearchForNumbering = true; }
|
|
11
11
|
if (shouldSearchForBullet || shouldSearchForNumbering) {
|
|
12
|
-
editor.formatContentModel(function (model,
|
|
12
|
+
editor.formatContentModel(function (model, context) {
|
|
13
13
|
var listStyleType = (0, getListTypeStyle_1.getListTypeStyle)(model, shouldSearchForBullet, shouldSearchForNumbering);
|
|
14
14
|
if (listStyleType) {
|
|
15
|
-
var segmentsAndParagraphs = (0,
|
|
15
|
+
var segmentsAndParagraphs = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false);
|
|
16
16
|
if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {
|
|
17
17
|
segmentsAndParagraphs[0][1].segments.splice(0, 1);
|
|
18
18
|
}
|
|
19
19
|
var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
|
|
20
|
-
triggerList(
|
|
21
|
-
|
|
22
|
-
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
20
|
+
triggerList(model, listType, styleType, index);
|
|
21
|
+
context.canUndoByBackspace = true;
|
|
23
22
|
return true;
|
|
24
23
|
}
|
|
25
24
|
return false;
|
|
25
|
+
}, {
|
|
26
|
+
apiName: 'autoToggleList',
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
exports.keyboardListTrigger = keyboardListTrigger;
|
|
30
|
-
var triggerList = function (
|
|
31
|
+
var triggerList = function (model, listType, styleType, index) {
|
|
31
32
|
(0, roosterjs_content_model_api_1.setListType)(model, listType);
|
|
32
33
|
var isOrderedList = listType == 'OL';
|
|
33
|
-
// If the index < 1, it is a new list, so it will be starting by 1, then no need to set startNumber
|
|
34
34
|
if (index && index > 1 && isOrderedList) {
|
|
35
|
-
(0, roosterjs_content_model_api_1.
|
|
35
|
+
(0, roosterjs_content_model_api_1.setModelListStartNumber)(model, index);
|
|
36
36
|
}
|
|
37
|
-
(0, roosterjs_content_model_api_1.
|
|
37
|
+
(0, roosterjs_content_model_api_1.setModelListStyle)(model, isOrderedList
|
|
38
38
|
? {
|
|
39
39
|
orderedStyleType: styleType,
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"keyboardListTrigger.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts"],"names":[],"mappings":";;;;IASA;;OAEG;IACH,SAAgB,mBAAmB,CAC/B,MAAe,EACf,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAI,qBAAqB,IAAI,wBAAwB,EAAE;YACnD,MAAM,CAAC,kBAAkB,CACrB,UAAC,KAAK,EAAE,OAAO;gBACX,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAClC,KAAK,EACL,qBAAqB,EACrB,wBAAwB,CAC3B,CAAC;gBACF,IAAI,aAAa,EAAE;oBACf,IAAM,qBAAqB,GAAG,IAAA,8DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC7E,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACzD,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACrD;oBACO,IAAA,QAAQ,GAAuB,aAAa,SAApC,EAAE,SAAS,GAAY,aAAa,UAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;oBACrD,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC/C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAElC,OAAO,IAAI,CAAC;iBACf;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC,EACD;gBACI,OAAO,EAAE,gBAAgB;aAC5B,CACJ,CAAC;SACL;IACL,CAAC;IAhCD,kDAgCC;IAED,IAAM,WAAW,GAAG,UAChB,KAA2B,EAC3B,QAAqB,EACrB,SAAiB,EACjB,KAAc;QAEd,IAAA,yCAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,aAAa,EAAE;YACrC,IAAA,qDAAuB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACzC;QACD,IAAA,+CAAiB,EACb,KAAK,EACL,aAAa;YACT,CAAC,CAAC;gBACI,gBAAgB,EAAE,SAAS;aAC9B;YACH,CAAC,CAAC;gBACI,kBAAkB,EAAE,SAAS;aAChC,CACV,CAAC;IACN,CAAC,CAAC","sourcesContent":["import { getListTypeStyle } from './getListTypeStyle';\nimport { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport {\n setListType,\n setModelListStartNumber,\n setModelListStyle,\n} from 'roosterjs-content-model-api';\nimport type { ContentModelDocument, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function keyboardListTrigger(\n editor: IEditor,\n shouldSearchForBullet: boolean = true,\n shouldSearchForNumbering: boolean = true\n) {\n if (shouldSearchForBullet || shouldSearchForNumbering) {\n editor.formatContentModel(\n (model, context) => {\n const listStyleType = getListTypeStyle(\n model,\n shouldSearchForBullet,\n shouldSearchForNumbering\n );\n if (listStyleType) {\n const segmentsAndParagraphs = getSelectedSegmentsAndParagraphs(model, false);\n if (segmentsAndParagraphs[0] && segmentsAndParagraphs[0][1]) {\n segmentsAndParagraphs[0][1].segments.splice(0, 1);\n }\n const { listType, styleType, index } = listStyleType;\n triggerList(model, listType, styleType, index);\n context.canUndoByBackspace = true;\n\n return true;\n }\n\n return false;\n },\n {\n apiName: 'autoToggleList',\n }\n );\n }\n}\n\nconst triggerList = (\n model: ContentModelDocument,\n listType: 'OL' | 'UL',\n styleType: number,\n index?: number\n) => {\n setListType(model, listType);\n const isOrderedList = listType == 'OL';\n if (index && index > 1 && isOrderedList) {\n setModelListStartNumber(model, index);\n }\n setModelListStyle(\n model,\n isOrderedList\n ? {\n orderedStyleType: styleType,\n }\n : {\n unorderedStyleType: styleType,\n }\n );\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "roosterjs-content-model-
|
|
1
|
+
define(["require", "exports", "roosterjs-content-model-dom"], function (require, exports, roosterjs_content_model_dom_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.deleteAllSegmentBefore = void 0;
|
|
@@ -14,7 +14,7 @@ define(["require", "exports", "roosterjs-content-model-core"], function (require
|
|
|
14
14
|
for (var i = index - 1; i >= 0; i--) {
|
|
15
15
|
var segment = paragraph.segments[i];
|
|
16
16
|
segment.isSelected = true;
|
|
17
|
-
if ((0,
|
|
17
|
+
if ((0, roosterjs_content_model_dom_1.deleteSegment)(paragraph, segment, context.formatContext)) {
|
|
18
18
|
context.deleteResult = 'range';
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteAllSegmentBefore.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACI,IAAM,sBAAsB,GAAwB,UAAA,OAAO;QAC9D,IAAI,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE;YACtC,OAAO;SACV;QAEK,IAAA,KAAwB,OAAO,CAAC,WAAW,EAAzC,SAAS,eAAA,EAAE,MAAM,YAAwB,CAAC;QAClD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAE1B,IAAI,IAAA,
|
|
1
|
+
{"version":3,"file":"deleteAllSegmentBefore.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACI,IAAM,sBAAsB,GAAwB,UAAA,OAAO;QAC9D,IAAI,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE;YACtC,OAAO;SACV;QAEK,IAAA,KAAwB,OAAO,CAAC,WAAW,EAAzC,SAAS,eAAA,EAAE,MAAM,YAAwB,CAAC;QAClD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAE1B,IAAI,IAAA,2CAAa,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC1D,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aAClC;SACJ;IACL,CAAC,CAAC;IAjBW,QAAA,sBAAsB,0BAiBjC","sourcesContent":["import { deleteSegment } from 'roosterjs-content-model-dom';\nimport type { DeleteSelectionStep } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const deleteAllSegmentBefore: DeleteSelectionStep = context => {\n if (context.deleteResult != 'notDeleted') {\n return;\n }\n\n const { paragraph, marker } = context.insertPoint;\n const index = paragraph.segments.indexOf(marker);\n\n for (let i = index - 1; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n segment.isSelected = true;\n\n if (deleteSegment(paragraph, segment, context.formatContext)) {\n context.deleteResult = 'range';\n }\n }\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content-model-api", "roosterjs-content-model-dom"
|
|
1
|
+
define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content-model-api", "roosterjs-content-model-dom"], function (require, exports, getLeafSiblingBlock_1, roosterjs_content_model_api_1, roosterjs_content_model_dom_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.backwardDeleteCollapsedSelection = exports.forwardDeleteCollapsedSelection = void 0;
|
|
@@ -17,7 +17,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
|
|
|
17
17
|
var blockToDelete;
|
|
18
18
|
var root;
|
|
19
19
|
if (segmentToDelete) {
|
|
20
|
-
if ((0,
|
|
20
|
+
if ((0, roosterjs_content_model_dom_1.deleteSegment)(paragraph, segmentToDelete, context.formatContext, direction)) {
|
|
21
21
|
context.deleteResult = 'singleChar';
|
|
22
22
|
// It is possible that we have deleted everything from this paragraph, so we need to mark it as not implicit
|
|
23
23
|
// to avoid losing its format. See https://github.com/microsoft/roosterjs/issues/1953
|
|
@@ -34,7 +34,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
|
|
|
34
34
|
if (block.blockType == 'Paragraph') {
|
|
35
35
|
if (siblingSegment) {
|
|
36
36
|
// When selection is under general segment, need to check if it has a sibling sibling, and delete from it
|
|
37
|
-
if ((0,
|
|
37
|
+
if ((0, roosterjs_content_model_dom_1.deleteSegment)(block, siblingSegment, context.formatContext, direction)) {
|
|
38
38
|
context.deleteResult = 'range';
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -61,7 +61,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
|
|
|
61
61
|
context.lastTableContext = tableContext;
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
|
-
if ((0,
|
|
64
|
+
if ((0, roosterjs_content_model_dom_1.deleteBlock)(path_1[0].blocks, block, undefined /*replacement*/, context.formatContext, direction)) {
|
|
65
65
|
context.deleteResult = 'range';
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -84,7 +84,7 @@ define(["require", "exports", "../utils/getLeafSiblingBlock", "roosterjs-content
|
|
|
84
84
|
segments[0].segmentType == 'SelectionMarker' &&
|
|
85
85
|
paragraph.format.marginLeft &&
|
|
86
86
|
parseInt(paragraph.format.marginLeft) &&
|
|
87
|
-
(0,
|
|
87
|
+
(0, roosterjs_content_model_dom_1.getClosestAncestorBlockGroupIndex)(path, ['Document', 'TableCell'], ['ListItem']) > -1);
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* If the last segment is BR, remove it for now. We may add it back later when normalize model.
|