roosterjs-content-model-plugins 9.5.0 → 9.6.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/list/getListTypeStyle.js +11 -11
- package/lib/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib/autoFormat/numbers/transformFraction.js +8 -7
- package/lib/autoFormat/numbers/transformFraction.js.map +1 -1
- package/lib-amd/autoFormat/list/getListTypeStyle.js +11 -11
- package/lib-amd/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib-amd/autoFormat/numbers/transformFraction.js +8 -7
- package/lib-amd/autoFormat/numbers/transformFraction.js.map +1 -1
- package/lib-mjs/autoFormat/list/getListTypeStyle.js +11 -11
- package/lib-mjs/autoFormat/list/getListTypeStyle.js.map +1 -1
- package/lib-mjs/autoFormat/numbers/transformFraction.js +8 -7
- package/lib-mjs/autoFormat/numbers/transformFraction.js.map +1 -1
- package/package.json +5 -5
|
@@ -22,7 +22,7 @@ function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNumbering
|
|
|
22
22
|
listMarkerSegment &&
|
|
23
23
|
listMarkerSegment.segmentType == 'Text') {
|
|
24
24
|
var listMarker = listMarkerSegment.text.trim();
|
|
25
|
-
var bulletType = bulletListType
|
|
25
|
+
var bulletType = bulletListType.get(listMarker);
|
|
26
26
|
if (bulletType && shouldSearchForBullet) {
|
|
27
27
|
return { listType: 'UL', styleType: bulletType };
|
|
28
28
|
}
|
|
@@ -73,16 +73,16 @@ var getPreviousListStyle = function (list) {
|
|
|
73
73
|
return (_a = (0, roosterjs_content_model_dom_1.updateListMetadata)(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
|
-
var bulletListType =
|
|
77
|
-
'*'
|
|
78
|
-
'-'
|
|
79
|
-
'--'
|
|
80
|
-
'->'
|
|
81
|
-
'-->'
|
|
82
|
-
'=>'
|
|
83
|
-
'>'
|
|
84
|
-
'—'
|
|
85
|
-
|
|
76
|
+
var bulletListType = new Map([
|
|
77
|
+
['*', roosterjs_content_model_dom_1.BulletListType.Disc],
|
|
78
|
+
['-', roosterjs_content_model_dom_1.BulletListType.Dash],
|
|
79
|
+
['--', roosterjs_content_model_dom_1.BulletListType.Square],
|
|
80
|
+
['->', roosterjs_content_model_dom_1.BulletListType.LongArrow],
|
|
81
|
+
['-->', roosterjs_content_model_dom_1.BulletListType.DoubleLongArrow],
|
|
82
|
+
['=>', roosterjs_content_model_dom_1.BulletListType.UnfilledArrow],
|
|
83
|
+
['>', roosterjs_content_model_dom_1.BulletListType.ShortArrow],
|
|
84
|
+
['—', roosterjs_content_model_dom_1.BulletListType.Hyphen],
|
|
85
|
+
]);
|
|
86
86
|
var isNewList = function (listMarker) {
|
|
87
87
|
var marker = listMarker.replace(/[^\w\s]/g, '');
|
|
88
88
|
var pattern = /^[1aAiI]$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;AACxE,iEAAgE;AAOhE,2EAMqC;AAWrC;;GAEG;AACH,SAAgB,gBAAgB,CAC5B,KAAmC,EACnC,qBAAqC,EACrC,wBAAwC;IADxC,sCAAA,EAAA,4BAAqC;IACrC,yCAAA,EAAA,+BAAwC;IAExC,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpF,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE;QACnC,OAAO,SAAS,CAAC;KACpB;IACD,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAM,iBAAiB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjD,IACI,MAAM;QACN,MAAM,CAAC,WAAW,IAAI,iBAAiB;QACvC,iBAAiB;QACjB,iBAAiB,CAAC,WAAW,IAAI,MAAM,EACzC;QACE,IAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjD,IAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;
|
|
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 ContentModelListItem,\n ReadonlyContentModelDocument,\n ReadonlyContentModelListItem,\n ReadonlyContentModelParagraph,\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: ReadonlyContentModelDocument,\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.get(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: ReadonlyContentModelDocument,\n previousListItem?: ReadonlyContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (\n model: ReadonlyContentModelDocument,\n paragraph: ReadonlyContentModelParagraph\n) => {\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: Map<string, number> = new Map<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"]}
|
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformFraction = void 0;
|
|
4
4
|
var splitTextSegment_1 = require("../../pluginUtils/splitTextSegment");
|
|
5
|
-
var FRACTIONS =
|
|
6
|
-
'1/2'
|
|
7
|
-
'1/4'
|
|
8
|
-
'3/4'
|
|
9
|
-
|
|
5
|
+
var FRACTIONS = new Map([
|
|
6
|
+
['1/2', '½'],
|
|
7
|
+
['1/4', '¼'],
|
|
8
|
+
['3/4', '¾'],
|
|
9
|
+
]);
|
|
10
10
|
/**
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
13
|
function transformFraction(previousSegment, paragraph, context) {
|
|
14
14
|
var _a;
|
|
15
15
|
var fraction = (_a = previousSegment.text.split(' ').pop()) === null || _a === void 0 ? void 0 : _a.trim();
|
|
16
|
-
|
|
16
|
+
var text = fraction ? FRACTIONS.get(fraction) : undefined;
|
|
17
|
+
if (fraction && text) {
|
|
17
18
|
var textLength = previousSegment.text.length - 1;
|
|
18
19
|
var textIndex = textLength - fraction.length;
|
|
19
20
|
var textSegment = (0, splitTextSegment_1.splitTextSegment)(previousSegment, paragraph, textIndex, textLength);
|
|
20
|
-
textSegment.text =
|
|
21
|
+
textSegment.text = text;
|
|
21
22
|
context.canUndoByBackspace = true;
|
|
22
23
|
return true;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAOtE,IAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAOtE,IAAM,SAAS,GAAwB,IAAI,GAAG,CAAiB;IAC3D,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,KAAK,EAAE,GAAG,CAAC;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,iBAAiB,CAC7B,eAAiC,EACjC,SAA8C,EAC9C,OAAkC;;IAElC,IAAM,QAAQ,GAAG,MAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,IAAI,EAAE,CAAC;IAC/D,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,IAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/C,IAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACxF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;QAExB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAnBD,8CAmBC","sourcesContent":["import { splitTextSegment } from '../../pluginUtils/splitTextSegment';\nimport type {\n ContentModelText,\n FormatContentModelContext,\n ShallowMutableContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\nconst FRACTIONS: Map<string, string> = new Map<string, string>([\n ['1/2', '½'],\n ['1/4', '¼'],\n ['3/4', '¾'],\n]);\n\n/**\n * @internal\n */\nexport function transformFraction(\n previousSegment: ContentModelText,\n paragraph: ShallowMutableContentModelParagraph,\n context: FormatContentModelContext\n): boolean {\n const fraction = previousSegment.text.split(' ').pop()?.trim();\n const text = fraction ? FRACTIONS.get(fraction) : undefined;\n\n if (fraction && text) {\n const textLength = previousSegment.text.length - 1;\n const textIndex = textLength - fraction.length;\n const textSegment = splitTextSegment(previousSegment, paragraph, textIndex, textLength);\n textSegment.text = text;\n\n context.canUndoByBackspace = true;\n return true;\n }\n\n return false;\n}\n"]}
|
|
@@ -20,7 +20,7 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
20
20
|
listMarkerSegment &&
|
|
21
21
|
listMarkerSegment.segmentType == 'Text') {
|
|
22
22
|
var listMarker = listMarkerSegment.text.trim();
|
|
23
|
-
var bulletType = bulletListType
|
|
23
|
+
var bulletType = bulletListType.get(listMarker);
|
|
24
24
|
if (bulletType && shouldSearchForBullet) {
|
|
25
25
|
return { listType: 'UL', styleType: bulletType };
|
|
26
26
|
}
|
|
@@ -71,16 +71,16 @@ define(["require", "exports", "roosterjs-content-model-api", "./getNumberingList
|
|
|
71
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
|
-
var bulletListType =
|
|
75
|
-
'*'
|
|
76
|
-
'-'
|
|
77
|
-
'--'
|
|
78
|
-
'->'
|
|
79
|
-
'-->'
|
|
80
|
-
'=>'
|
|
81
|
-
'>'
|
|
82
|
-
'—'
|
|
83
|
-
|
|
74
|
+
var bulletListType = new Map([
|
|
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
|
+
]);
|
|
84
84
|
var isNewList = function (listMarker) {
|
|
85
85
|
var marker = listMarker.replace(/[^\w\s]/g, '');
|
|
86
86
|
var pattern = /^[1aAiI]$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":";;;;IAyBA;;OAEG;IACH,SAAgB,gBAAgB,CAC5B,KAAmC,EACnC,qBAAqC,EACrC,wBAAwC;QADxC,sCAAA,EAAA,4BAAqC;QACrC,yCAAA,EAAA,+BAAwC;QAExC,IAAM,6BAA6B,GAAG,IAAA,8DAAgC,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE;YACnC,OAAO,SAAS,CAAC;SACpB;QACD,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAM,iBAAiB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEjD,IACI,MAAM;YACN,MAAM,CAAC,WAAW,IAAI,iBAAiB;YACvC,iBAAiB;YACjB,iBAAiB,CAAC,WAAW,IAAI,MAAM,EACzC;YACE,IAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjD,IAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;
|
|
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 ContentModelListItem,\n ReadonlyContentModelDocument,\n ReadonlyContentModelListItem,\n ReadonlyContentModelParagraph,\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: ReadonlyContentModelDocument,\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.get(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: ReadonlyContentModelDocument,\n previousListItem?: ReadonlyContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (\n model: ReadonlyContentModelDocument,\n paragraph: ReadonlyContentModelParagraph\n) => {\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: Map<string, number> = new Map<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"]}
|
|
@@ -2,22 +2,23 @@ define(["require", "exports", "../../pluginUtils/splitTextSegment"], function (r
|
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.transformFraction = void 0;
|
|
5
|
-
var FRACTIONS =
|
|
6
|
-
'1/2'
|
|
7
|
-
'1/4'
|
|
8
|
-
'3/4'
|
|
9
|
-
|
|
5
|
+
var FRACTIONS = new Map([
|
|
6
|
+
['1/2', '½'],
|
|
7
|
+
['1/4', '¼'],
|
|
8
|
+
['3/4', '¾'],
|
|
9
|
+
]);
|
|
10
10
|
/**
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
13
|
function transformFraction(previousSegment, paragraph, context) {
|
|
14
14
|
var _a;
|
|
15
15
|
var fraction = (_a = previousSegment.text.split(' ').pop()) === null || _a === void 0 ? void 0 : _a.trim();
|
|
16
|
-
|
|
16
|
+
var text = fraction ? FRACTIONS.get(fraction) : undefined;
|
|
17
|
+
if (fraction && text) {
|
|
17
18
|
var textLength = previousSegment.text.length - 1;
|
|
18
19
|
var textIndex = textLength - fraction.length;
|
|
19
20
|
var textSegment = (0, splitTextSegment_1.splitTextSegment)(previousSegment, paragraph, textIndex, textLength);
|
|
20
|
-
textSegment.text =
|
|
21
|
+
textSegment.text = text;
|
|
21
22
|
context.canUndoByBackspace = true;
|
|
22
23
|
return true;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":";;;;IAOA,IAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":";;;;IAOA,IAAM,SAAS,GAAwB,IAAI,GAAG,CAAiB;QAC3D,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,KAAK,EAAE,GAAG,CAAC;KACf,CAAC,CAAC;IAEH;;OAEG;IACH,SAAgB,iBAAiB,CAC7B,eAAiC,EACjC,SAA8C,EAC9C,OAAkC;;QAElC,IAAM,QAAQ,GAAG,MAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,IAAI,EAAE,CAAC;QAC/D,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5D,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACnD,IAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/C,IAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACxF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YAExB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAClC,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAnBD,8CAmBC","sourcesContent":["import { splitTextSegment } from '../../pluginUtils/splitTextSegment';\nimport type {\n ContentModelText,\n FormatContentModelContext,\n ShallowMutableContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\nconst FRACTIONS: Map<string, string> = new Map<string, string>([\n ['1/2', '½'],\n ['1/4', '¼'],\n ['3/4', '¾'],\n]);\n\n/**\n * @internal\n */\nexport function transformFraction(\n previousSegment: ContentModelText,\n paragraph: ShallowMutableContentModelParagraph,\n context: FormatContentModelContext\n): boolean {\n const fraction = previousSegment.text.split(' ').pop()?.trim();\n const text = fraction ? FRACTIONS.get(fraction) : undefined;\n\n if (fraction && text) {\n const textLength = previousSegment.text.length - 1;\n const textIndex = textLength - fraction.length;\n const textSegment = splitTextSegment(previousSegment, paragraph, textIndex, textLength);\n textSegment.text = text;\n\n context.canUndoByBackspace = true;\n return true;\n }\n\n return false;\n}\n"]}
|
|
@@ -19,7 +19,7 @@ export function getListTypeStyle(model, shouldSearchForBullet, shouldSearchForNu
|
|
|
19
19
|
listMarkerSegment &&
|
|
20
20
|
listMarkerSegment.segmentType == 'Text') {
|
|
21
21
|
var listMarker = listMarkerSegment.text.trim();
|
|
22
|
-
var bulletType = bulletListType
|
|
22
|
+
var bulletType = bulletListType.get(listMarker);
|
|
23
23
|
if (bulletType && shouldSearchForBullet) {
|
|
24
24
|
return { listType: 'UL', styleType: bulletType };
|
|
25
25
|
}
|
|
@@ -69,16 +69,16 @@ var getPreviousListStyle = function (list) {
|
|
|
69
69
|
return (_a = updateListMetadata(list.levels[0])) === null || _a === void 0 ? void 0 : _a.orderedStyleType;
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
-
var bulletListType =
|
|
73
|
-
'*'
|
|
74
|
-
'-'
|
|
75
|
-
'--'
|
|
76
|
-
'->'
|
|
77
|
-
'-->'
|
|
78
|
-
'=>'
|
|
79
|
-
'>'
|
|
80
|
-
'—'
|
|
81
|
-
|
|
72
|
+
var bulletListType = new Map([
|
|
73
|
+
['*', BulletListType.Disc],
|
|
74
|
+
['-', BulletListType.Dash],
|
|
75
|
+
['--', BulletListType.Square],
|
|
76
|
+
['->', BulletListType.LongArrow],
|
|
77
|
+
['-->', BulletListType.DoubleLongArrow],
|
|
78
|
+
['=>', BulletListType.UnfilledArrow],
|
|
79
|
+
['>', BulletListType.ShortArrow],
|
|
80
|
+
['—', BulletListType.Hyphen],
|
|
81
|
+
]);
|
|
82
82
|
var isNewList = function (listMarker) {
|
|
83
83
|
var marker = listMarker.replace(/[^\w\s]/g, '');
|
|
84
84
|
var pattern = /^[1aAiI]$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getListTypeStyle.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,OAAO,EACH,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,gCAAgC,GACnC,MAAM,6BAA6B,CAAC;AAWrC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,KAAmC,EACnC,qBAAqC,EACrC,wBAAwC;IADxC,sCAAA,EAAA,4BAAqC;IACrC,yCAAA,EAAA,+BAAwC;IAExC,IAAM,6BAA6B,GAAG,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpF,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE;QACnC,OAAO,SAAS,CAAC;KACpB;IACD,IAAM,MAAM,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAM,SAAS,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAM,iBAAiB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjD,IACI,MAAM;QACN,MAAM,CAAC,WAAW,IAAI,iBAAiB;QACvC,iBAAiB;QACjB,iBAAiB,CAAC,WAAW,IAAI,MAAM,EACzC;QACE,IAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjD,IAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;
|
|
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 ContentModelListItem,\n ReadonlyContentModelDocument,\n ReadonlyContentModelListItem,\n ReadonlyContentModelParagraph,\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: ReadonlyContentModelDocument,\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.get(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: ReadonlyContentModelDocument,\n previousListItem?: ReadonlyContentModelListItem\n) => {\n return previousListItem ? findListItemsInSameThread(model, previousListItem).length : undefined;\n};\n\nconst getPreviousListLevel = (\n model: ReadonlyContentModelDocument,\n paragraph: ReadonlyContentModelParagraph\n) => {\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: Map<string, number> = new Map<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,20 +1,21 @@
|
|
|
1
1
|
import { splitTextSegment } from '../../pluginUtils/splitTextSegment';
|
|
2
|
-
var FRACTIONS =
|
|
3
|
-
'1/2'
|
|
4
|
-
'1/4'
|
|
5
|
-
'3/4'
|
|
6
|
-
|
|
2
|
+
var FRACTIONS = new Map([
|
|
3
|
+
['1/2', '½'],
|
|
4
|
+
['1/4', '¼'],
|
|
5
|
+
['3/4', '¾'],
|
|
6
|
+
]);
|
|
7
7
|
/**
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
10
|
export function transformFraction(previousSegment, paragraph, context) {
|
|
11
11
|
var _a;
|
|
12
12
|
var fraction = (_a = previousSegment.text.split(' ').pop()) === null || _a === void 0 ? void 0 : _a.trim();
|
|
13
|
-
|
|
13
|
+
var text = fraction ? FRACTIONS.get(fraction) : undefined;
|
|
14
|
+
if (fraction && text) {
|
|
14
15
|
var textLength = previousSegment.text.length - 1;
|
|
15
16
|
var textIndex = textLength - fraction.length;
|
|
16
17
|
var textSegment = splitTextSegment(previousSegment, paragraph, textIndex, textLength);
|
|
17
|
-
textSegment.text =
|
|
18
|
+
textSegment.text = text;
|
|
18
19
|
context.canUndoByBackspace = true;
|
|
19
20
|
return true;
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAOtE,IAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"transformFraction.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAOtE,IAAM,SAAS,GAAwB,IAAI,GAAG,CAAiB;IAC3D,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,KAAK,EAAE,GAAG,CAAC;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC7B,eAAiC,EACjC,SAA8C,EAC9C,OAAkC;;IAElC,IAAM,QAAQ,GAAG,MAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,IAAI,EAAE,CAAC;IAC/D,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,IAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/C,IAAM,WAAW,GAAG,gBAAgB,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACxF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;QAExB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { splitTextSegment } from '../../pluginUtils/splitTextSegment';\nimport type {\n ContentModelText,\n FormatContentModelContext,\n ShallowMutableContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\nconst FRACTIONS: Map<string, string> = new Map<string, string>([\n ['1/2', '½'],\n ['1/4', '¼'],\n ['3/4', '¾'],\n]);\n\n/**\n * @internal\n */\nexport function transformFraction(\n previousSegment: ContentModelText,\n paragraph: ShallowMutableContentModelParagraph,\n context: FormatContentModelContext\n): boolean {\n const fraction = previousSegment.text.split(' ').pop()?.trim();\n const text = fraction ? FRACTIONS.get(fraction) : undefined;\n\n if (fraction && text) {\n const textLength = previousSegment.text.length - 1;\n const textIndex = textLength - fraction.length;\n const textSegment = splitTextSegment(previousSegment, paragraph, textIndex, textLength);\n textSegment.text = text;\n\n context.canUndoByBackspace = true;\n return true;\n }\n\n return false;\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.6.0",
|
|
7
|
+
"roosterjs-content-model-dom": "^9.6.0",
|
|
8
|
+
"roosterjs-content-model-types": "^9.6.0",
|
|
9
|
+
"roosterjs-content-model-api": "^9.6.0"
|
|
10
10
|
},
|
|
11
|
-
"version": "9.
|
|
11
|
+
"version": "9.6.0",
|
|
12
12
|
"main": "./lib/index.js",
|
|
13
13
|
"typings": "./lib/index.d.ts",
|
|
14
14
|
"module": "./lib-mjs/index.js",
|