roosterjs-content-model-dom 0.25.0 → 0.26.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/lib/config/defaultHTMLStyleMap.js +3 -2
- package/lib/config/defaultHTMLStyleMap.js.map +1 -1
- package/lib/domToModel/processors/entityProcessor.js +2 -1
- package/lib/domToModel/processors/entityProcessor.js.map +1 -1
- package/lib/domToModel/processors/generalProcessor.js +3 -0
- package/lib/domToModel/processors/generalProcessor.js.map +1 -1
- package/lib/domUtils/entityUtils.d.ts +7 -3
- package/lib/domUtils/entityUtils.js +13 -2
- package/lib/domUtils/entityUtils.js.map +1 -1
- package/lib/formatHandlers/block/paddingFormatHandler.d.ts +2 -2
- package/lib/formatHandlers/block/paddingFormatHandler.js +27 -6
- package/lib/formatHandlers/block/paddingFormatHandler.js.map +1 -1
- package/lib/formatHandlers/defaultFormatHandlers.js +1 -0
- package/lib/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib/formatHandlers/segment/fontSizeFormatHandler.js +5 -4
- package/lib/formatHandlers/segment/fontSizeFormatHandler.js.map +1 -1
- package/lib/formatHandlers/utils/parseValueWithUnit.js +4 -1
- package/lib/formatHandlers/utils/parseValueWithUnit.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +7 -2
- package/lib/index.js.map +1 -1
- package/lib/modelApi/common/normalizeParagraph.d.ts +2 -1
- package/lib/modelApi/common/normalizeParagraph.js +2 -1
- package/lib/modelApi/common/normalizeParagraph.js.map +1 -1
- package/lib/modelToDom/handlers/handleEntity.js +22 -5
- package/lib/modelToDom/handlers/handleEntity.js.map +1 -1
- package/lib/modelToDom/handlers/handleGeneralModel.js +3 -0
- package/lib/modelToDom/handlers/handleGeneralModel.js.map +1 -1
- package/lib/modelToText/contentModelToText.d.ts +7 -0
- package/lib/modelToText/contentModelToText.js +60 -0
- package/lib/modelToText/contentModelToText.js.map +1 -0
- package/lib-amd/config/defaultHTMLStyleMap.js +3 -3
- package/lib-amd/config/defaultHTMLStyleMap.js.map +1 -1
- package/lib-amd/domToModel/processors/entityProcessor.js +2 -1
- package/lib-amd/domToModel/processors/entityProcessor.js.map +1 -1
- package/lib-amd/domToModel/processors/generalProcessor.js +3 -1
- package/lib-amd/domToModel/processors/generalProcessor.js.map +1 -1
- package/lib-amd/domUtils/entityUtils.d.ts +7 -3
- package/lib-amd/domUtils/entityUtils.js +13 -3
- package/lib-amd/domUtils/entityUtils.js.map +1 -1
- package/lib-amd/formatHandlers/block/paddingFormatHandler.d.ts +2 -2
- package/lib-amd/formatHandlers/block/paddingFormatHandler.js +27 -7
- package/lib-amd/formatHandlers/block/paddingFormatHandler.js.map +1 -1
- package/lib-amd/formatHandlers/defaultFormatHandlers.js +1 -0
- package/lib-amd/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib-amd/formatHandlers/segment/fontSizeFormatHandler.js +5 -4
- package/lib-amd/formatHandlers/segment/fontSizeFormatHandler.js.map +1 -1
- package/lib-amd/formatHandlers/utils/parseValueWithUnit.js +4 -1
- package/lib-amd/formatHandlers/utils/parseValueWithUnit.js.map +1 -1
- package/lib-amd/index.d.ts +3 -1
- package/lib-amd/index.js +5 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/modelApi/common/normalizeParagraph.d.ts +2 -1
- package/lib-amd/modelApi/common/normalizeParagraph.js +2 -1
- package/lib-amd/modelApi/common/normalizeParagraph.js.map +1 -1
- package/lib-amd/modelToDom/handlers/handleEntity.js +22 -5
- package/lib-amd/modelToDom/handlers/handleEntity.js.map +1 -1
- package/lib-amd/modelToDom/handlers/handleGeneralModel.js +3 -1
- package/lib-amd/modelToDom/handlers/handleGeneralModel.js.map +1 -1
- package/lib-amd/modelToText/contentModelToText.d.ts +7 -0
- package/lib-amd/modelToText/contentModelToText.js +62 -0
- package/lib-amd/modelToText/contentModelToText.js.map +1 -0
- package/lib-mjs/config/defaultHTMLStyleMap.js +3 -2
- package/lib-mjs/config/defaultHTMLStyleMap.js.map +1 -1
- package/lib-mjs/domToModel/processors/entityProcessor.js +2 -1
- package/lib-mjs/domToModel/processors/entityProcessor.js.map +1 -1
- package/lib-mjs/domToModel/processors/generalProcessor.js +3 -0
- package/lib-mjs/domToModel/processors/generalProcessor.js.map +1 -1
- package/lib-mjs/domUtils/entityUtils.d.ts +7 -3
- package/lib-mjs/domUtils/entityUtils.js +13 -2
- package/lib-mjs/domUtils/entityUtils.js.map +1 -1
- package/lib-mjs/formatHandlers/block/paddingFormatHandler.d.ts +2 -2
- package/lib-mjs/formatHandlers/block/paddingFormatHandler.js +27 -6
- package/lib-mjs/formatHandlers/block/paddingFormatHandler.js.map +1 -1
- package/lib-mjs/formatHandlers/defaultFormatHandlers.js +1 -0
- package/lib-mjs/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib-mjs/formatHandlers/segment/fontSizeFormatHandler.js +5 -4
- package/lib-mjs/formatHandlers/segment/fontSizeFormatHandler.js.map +1 -1
- package/lib-mjs/formatHandlers/utils/parseValueWithUnit.js +4 -1
- package/lib-mjs/formatHandlers/utils/parseValueWithUnit.js.map +1 -1
- package/lib-mjs/index.d.ts +3 -1
- package/lib-mjs/index.js +3 -1
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/modelApi/common/normalizeParagraph.d.ts +2 -1
- package/lib-mjs/modelApi/common/normalizeParagraph.js +2 -1
- package/lib-mjs/modelApi/common/normalizeParagraph.js.map +1 -1
- package/lib-mjs/modelToDom/handlers/handleEntity.js +23 -6
- package/lib-mjs/modelToDom/handlers/handleEntity.js.map +1 -1
- package/lib-mjs/modelToDom/handlers/handleGeneralModel.js +3 -0
- package/lib-mjs/modelToDom/handlers/handleGeneralModel.js.map +1 -1
- package/lib-mjs/modelToText/contentModelToText.d.ts +7 -0
- package/lib-mjs/modelToText/contentModelToText.js +56 -0
- package/lib-mjs/modelToText/contentModelToText.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultHTMLStyleMap = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
4
5
|
var blockElement = {
|
|
5
6
|
display: 'block',
|
|
6
7
|
};
|
|
@@ -77,7 +78,7 @@ exports.defaultHTMLStyleMap = {
|
|
|
77
78
|
},
|
|
78
79
|
main: blockElement,
|
|
79
80
|
nav: blockElement,
|
|
80
|
-
ol: blockElement,
|
|
81
|
+
ol: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, blockElement), { paddingInlineStart: '40px' }),
|
|
81
82
|
p: {
|
|
82
83
|
display: 'block',
|
|
83
84
|
marginTop: '1em',
|
|
@@ -121,6 +122,6 @@ exports.defaultHTMLStyleMap = {
|
|
|
121
122
|
u: {
|
|
122
123
|
textDecoration: 'underline',
|
|
123
124
|
},
|
|
124
|
-
ul: blockElement,
|
|
125
|
+
ul: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, blockElement), { paddingInlineStart: '40px' }),
|
|
125
126
|
};
|
|
126
127
|
//# sourceMappingURL=defaultHTMLStyleMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultHTMLStyleMap.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaultHTMLStyleMap.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DefaultStyleMap } from 'roosterjs-content-model-types';\n\nconst blockElement: Partial<CSSStyleDeclaration> = {\n display: 'block',\n};\n\n/**\n * @internal\n */\nexport const defaultHTMLStyleMap: DefaultStyleMap = {\n address: blockElement,\n article: blockElement,\n aside: blockElement,\n b: {\n fontWeight: 'bold',\n },\n blockquote: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n },\n br: blockElement,\n center: {\n display: 'block',\n textAlign: 'center',\n },\n dd: blockElement,\n div: blockElement,\n dl: blockElement,\n dt: blockElement,\n em: {\n fontStyle: 'italic',\n },\n fieldset: blockElement,\n figcaption: blockElement,\n figure: blockElement,\n footer: blockElement,\n form: blockElement,\n h1: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '2em',\n },\n h2: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.5em',\n },\n h3: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.17em',\n },\n h4: {\n display: 'block',\n fontWeight: 'bold',\n },\n h5: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.83em',\n },\n h6: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.67em',\n },\n header: blockElement,\n hr: blockElement,\n i: {\n fontStyle: 'italic',\n },\n li: {\n display: 'list-item',\n },\n main: blockElement,\n nav: blockElement,\n ol: { ...blockElement, paddingInlineStart: '40px' },\n p: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n },\n pre: {\n display: 'block',\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n s: {\n textDecoration: 'line-through',\n },\n section: blockElement,\n strike: {\n textDecoration: 'line-through',\n },\n strong: {\n fontWeight: 'bold',\n },\n sub: {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n sup: {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n table: {\n display: 'table',\n boxSizing: 'border-box',\n },\n td: {\n display: 'table-cell',\n },\n th: {\n display: 'table-cell',\n },\n u: {\n textDecoration: 'underline',\n },\n ul: { ...blockElement, paddingInlineStart: '40px' },\n};\n"]}
|
|
@@ -14,7 +14,8 @@ var stackFormat_1 = require("../utils/stackFormat");
|
|
|
14
14
|
* @param context DOM to Content Model context
|
|
15
15
|
*/
|
|
16
16
|
var entityProcessor = function (group, element, context) {
|
|
17
|
-
var isBlockEntity = (0, isBlockElement_1.isBlockElement)(element)
|
|
17
|
+
var isBlockEntity = (0, isBlockElement_1.isBlockElement)(element) ||
|
|
18
|
+
(element.style.display == 'inline-block' && element.style.width == '100%');
|
|
18
19
|
(0, stackFormat_1.stackFormat)(context, { segment: isBlockEntity ? 'empty' : undefined, paragraph: 'empty' }, function () {
|
|
19
20
|
var _a;
|
|
20
21
|
var entityModel = (0, createEntity_1.createEntity)(element, true /*isReadonly*/, context.segmentFormat);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityProcessor.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,+DAA8D;AAC9D,qEAAoE;AACpE,0DAAyD;AACzD,oDAAmD;AACnD,oDAAmD;AAGnD;;;;;GAKG;AACI,IAAM,eAAe,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IAClF,IAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"entityProcessor.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,+DAA8D;AAC9D,qEAAoE;AACpE,0DAAyD;AACzD,oDAAmD;AACnD,oDAAmD;AAGnD;;;;;GAKG;AACI,IAAM,eAAe,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IAClF,IAAM,aAAa,GACf,IAAA,+BAAc,EAAC,OAAO,CAAC;QACvB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAE/E,IAAA,yBAAW,EACP,OAAO,EACP,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EACpE;;QACI,IAAM,WAAW,GAAG,IAAA,2BAAY,EAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtF,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEtF,IAAI,OAAO,CAAC,aAAa,EAAE;YACvB,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;SACjC;QAED,IAAI,aAAa,EAAE;YACf,IAAA,mBAAQ,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAChC;aAAM;YACH,IAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACjD,MAAA,OAAO,CAAC,UAAU,0CAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;SACpE;IACL,CAAC,CACJ,CAAC;AACN,CAAC,CAAC;AAzBW,QAAA,eAAe,mBAyB1B","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createEntity } from '../../modelApi/creators/createEntity';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport type { ElementProcessor } from 'roosterjs-content-model-types';\n\n/**\n * Content Model Element Processor for entity\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const entityProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const isBlockEntity =\n isBlockElement(element) ||\n (element.style.display == 'inline-block' && element.style.width == '100%');\n\n stackFormat(\n context,\n { segment: isBlockEntity ? 'empty' : undefined, paragraph: 'empty' },\n () => {\n const entityModel = createEntity(element, true /*isReadonly*/, context.segmentFormat);\n\n parseFormat(element, context.formatParsers.entity, entityModel.entityFormat, context);\n\n if (context.isInSelection) {\n entityModel.isSelected = true;\n }\n\n if (isBlockEntity) {\n addBlock(group, entityModel);\n } else {\n const paragraph = addSegment(group, entityModel);\n context.domIndexer?.onSegment(element, paragraph, [entityModel]);\n }\n }\n );\n};\n"]}
|
|
@@ -7,6 +7,7 @@ var addSegment_1 = require("../../modelApi/common/addSegment");
|
|
|
7
7
|
var createGeneralBlock_1 = require("../../modelApi/creators/createGeneralBlock");
|
|
8
8
|
var createGeneralSegment_1 = require("../../modelApi/creators/createGeneralSegment");
|
|
9
9
|
var isBlockElement_1 = require("../utils/isBlockElement");
|
|
10
|
+
var parseFormat_1 = require("../utils/parseFormat");
|
|
10
11
|
var stackFormat_1 = require("../utils/stackFormat");
|
|
11
12
|
var generalBlockProcessor = function (group, element, context) {
|
|
12
13
|
var block = (0, createGeneralBlock_1.createGeneralBlock)(element);
|
|
@@ -17,6 +18,7 @@ var generalBlockProcessor = function (group, element, context) {
|
|
|
17
18
|
link: 'empty',
|
|
18
19
|
}, function () {
|
|
19
20
|
(0, addBlock_1.addBlock)(group, block);
|
|
21
|
+
(0, parseFormat_1.parseFormat)(element, context.formatParsers.general, block.format, context);
|
|
20
22
|
context.elementProcessors.child(block, element, context);
|
|
21
23
|
});
|
|
22
24
|
if (isSelectedBefore && context.isInSelection) {
|
|
@@ -33,6 +35,7 @@ var generalSegmentProcessor = function (group, element, context) {
|
|
|
33
35
|
(0, stackFormat_1.stackFormat)(context, {
|
|
34
36
|
segment: 'empty' /*clearFormat, General segment will include all properties and styles when generate back to HTML, so no need to carry over existing segment format*/,
|
|
35
37
|
}, function () {
|
|
38
|
+
(0, parseFormat_1.parseFormat)(element, context.formatParsers.general, segment.format, context);
|
|
36
39
|
context.elementProcessors.child(segment, element, context);
|
|
37
40
|
});
|
|
38
41
|
if (isSelectedBefore && context.isInSelection) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generalProcessor.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,qEAAoE;AACpE,+DAA8D;AAC9D,iFAAgF;AAChF,qFAAoF;AACpF,0DAAyD;AACzD,oDAAmD;AAGnD,IAAM,qBAAqB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IACjF,IAAM,KAAK,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,CAAC;IAC1C,IAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/C,IAAA,yBAAW,EACP,OAAO,EACP;QACI,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,OAAO;KAChB,EACD;QACI,IAAA,mBAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEvB,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,CACJ,CAAC;IAEF,IAAI,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE;QAC3C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;KAC3B;AACL,CAAC,CAAC;AAEF,IAAM,uBAAuB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;;IACnF,IAAM,OAAO,GAAG,IAAA,2CAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,IAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/C,IAAA,6BAAa,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,IAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAA,OAAO,CAAC,UAAU,0CAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7D,IAAA,yBAAW,EACP,OAAO,EACP;QACI,OAAO,EACH,OAAO,CAAC,oJAAoJ;KACnK,EACD;QACI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC,CACJ,CAAC;IAEF,IAAI,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE;QAC3C,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;KAC7B;AACL,CAAC,CAAC;AAEF;;GAEG;AACI,IAAM,gBAAgB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IACnF,IAAM,SAAS,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAE5F,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createGeneralBlock } from '../../modelApi/creators/createGeneralBlock';\nimport { createGeneralSegment } from '../../modelApi/creators/createGeneralSegment';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { stackFormat } from '../utils/stackFormat';\nimport type { ElementProcessor } from 'roosterjs-content-model-types';\n\nconst generalBlockProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const block = createGeneralBlock(element);\n const isSelectedBefore = context.isInSelection;\n\n stackFormat(\n context,\n {\n segment: 'empty',\n paragraph: 'empty',\n link: 'empty',\n },\n () => {\n addBlock(group, block);\n\n context.elementProcessors.child(block, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n block.isSelected = true;\n }\n};\n\nconst generalSegmentProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const segment = createGeneralSegment(element, context.segmentFormat);\n const isSelectedBefore = context.isInSelection;\n\n addDecorators(segment, context);\n const paragraph = addSegment(group, segment);\n context.domIndexer?.onSegment(element, paragraph, [segment]);\n\n stackFormat(\n context,\n {\n segment:\n 'empty' /*clearFormat, General segment will include all properties and styles when generate back to HTML, so no need to carry over existing segment format*/,\n },\n () => {\n context.elementProcessors.child(segment, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n segment.isSelected = true;\n }\n};\n\n/**\n * @internal\n */\nexport const generalProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const processor = isBlockElement(element) ? generalBlockProcessor : generalSegmentProcessor;\n\n processor(group, element, context);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"generalProcessor.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,qEAAoE;AACpE,+DAA8D;AAC9D,iFAAgF;AAChF,qFAAoF;AACpF,0DAAyD;AACzD,oDAAmD;AACnD,oDAAmD;AAGnD,IAAM,qBAAqB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IACjF,IAAM,KAAK,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,CAAC;IAC1C,IAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/C,IAAA,yBAAW,EACP,OAAO,EACP;QACI,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,OAAO;KAChB,EACD;QACI,IAAA,mBAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEvB,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,CACJ,CAAC;IAEF,IAAI,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE;QAC3C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;KAC3B;AACL,CAAC,CAAC;AAEF,IAAM,uBAAuB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;;IACnF,IAAM,OAAO,GAAG,IAAA,2CAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,IAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/C,IAAA,6BAAa,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,IAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAA,OAAO,CAAC,UAAU,0CAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7D,IAAA,yBAAW,EACP,OAAO,EACP;QACI,OAAO,EACH,OAAO,CAAC,oJAAoJ;KACnK,EACD;QACI,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE7E,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC,CACJ,CAAC;IAEF,IAAI,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE;QAC3C,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;KAC7B;AACL,CAAC,CAAC;AAEF;;GAEG;AACI,IAAM,gBAAgB,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IACnF,IAAM,SAAS,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAE5F,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createGeneralBlock } from '../../modelApi/creators/createGeneralBlock';\nimport { createGeneralSegment } from '../../modelApi/creators/createGeneralSegment';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport type { ElementProcessor } from 'roosterjs-content-model-types';\n\nconst generalBlockProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const block = createGeneralBlock(element);\n const isSelectedBefore = context.isInSelection;\n\n stackFormat(\n context,\n {\n segment: 'empty',\n paragraph: 'empty',\n link: 'empty',\n },\n () => {\n addBlock(group, block);\n\n parseFormat(element, context.formatParsers.general, block.format, context);\n\n context.elementProcessors.child(block, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n block.isSelected = true;\n }\n};\n\nconst generalSegmentProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const segment = createGeneralSegment(element, context.segmentFormat);\n const isSelectedBefore = context.isInSelection;\n\n addDecorators(segment, context);\n const paragraph = addSegment(group, segment);\n context.domIndexer?.onSegment(element, paragraph, [segment]);\n\n stackFormat(\n context,\n {\n segment:\n 'empty' /*clearFormat, General segment will include all properties and styles when generate back to HTML, so no need to carry over existing segment format*/,\n },\n () => {\n parseFormat(element, context.formatParsers.general, segment.format, context);\n\n context.elementProcessors.child(segment, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n segment.isSelected = true;\n }\n};\n\n/**\n * @internal\n */\nexport const generalProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const processor = isBlockElement(element) ? generalBlockProcessor : generalSegmentProcessor;\n\n processor(group, element, context);\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContentModelEntityFormat } from 'roosterjs-content-model-types';
|
|
1
|
+
import type { ContentModelEntityFormat, ContentModelSegmentFormat, ModelToDomContext } from 'roosterjs-content-model-types';
|
|
2
2
|
/**
|
|
3
3
|
* Check if the given DOM Node is an entity wrapper element
|
|
4
4
|
*/
|
|
@@ -22,11 +22,15 @@ export declare function parseEntityClassName(className: string, format: ContentM
|
|
|
22
22
|
*/
|
|
23
23
|
export declare function generateEntityClassNames(format: ContentModelEntityFormat): string;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* Checks whether the node provided is a Entity delimiter
|
|
26
|
+
* @param node the node to check
|
|
27
|
+
* @return true if it is a delimiter
|
|
26
28
|
*/
|
|
27
29
|
export declare function isEntityDelimiter(element: HTMLElement): boolean;
|
|
28
30
|
/**
|
|
29
31
|
* Adds delimiters to the element provided. If the delimiters already exists, will not be added
|
|
30
32
|
* @param element the node to add the delimiters
|
|
33
|
+
* @param format format to set to the delimiters, so when typing inside of one the format is not lost
|
|
34
|
+
* @param context Model to Dom context to use.
|
|
31
35
|
*/
|
|
32
|
-
export declare function addDelimiters(doc: Document, element: HTMLElement): HTMLElement[];
|
|
36
|
+
export declare function addDelimiters(doc: Document, element: HTMLElement, format?: ContentModelSegmentFormat | null, context?: ModelToDomContext): HTMLElement[];
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.addDelimiters = exports.isEntityDelimiter = exports.generateEntityClassNames = exports.parseEntityClassName = exports.getAllEntityWrappers = exports.isEntityElement = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var toArray_1 = require("./toArray");
|
|
6
|
+
var applyFormat_1 = require("../modelToDom/utils/applyFormat");
|
|
6
7
|
var isElementOfType_1 = require("./isElementOfType");
|
|
7
8
|
var isNodeOfType_1 = require("./isNodeOfType");
|
|
8
9
|
var ENTITY_INFO_NAME = '_Entity';
|
|
@@ -61,7 +62,9 @@ function generateEntityClassNames(format) {
|
|
|
61
62
|
}
|
|
62
63
|
exports.generateEntityClassNames = generateEntityClassNames;
|
|
63
64
|
/**
|
|
64
|
-
*
|
|
65
|
+
* Checks whether the node provided is a Entity delimiter
|
|
66
|
+
* @param node the node to check
|
|
67
|
+
* @return true if it is a delimiter
|
|
65
68
|
*/
|
|
66
69
|
function isEntityDelimiter(element) {
|
|
67
70
|
return ((0, isElementOfType_1.isElementOfType)(element, 'span') &&
|
|
@@ -73,14 +76,22 @@ exports.isEntityDelimiter = isEntityDelimiter;
|
|
|
73
76
|
/**
|
|
74
77
|
* Adds delimiters to the element provided. If the delimiters already exists, will not be added
|
|
75
78
|
* @param element the node to add the delimiters
|
|
79
|
+
* @param format format to set to the delimiters, so when typing inside of one the format is not lost
|
|
80
|
+
* @param context Model to Dom context to use.
|
|
76
81
|
*/
|
|
77
|
-
function addDelimiters(doc, element) {
|
|
82
|
+
function addDelimiters(doc, element, format, context) {
|
|
78
83
|
var _a = (0, tslib_1.__read)(getDelimiters(element), 2), delimiterAfter = _a[0], delimiterBefore = _a[1];
|
|
79
84
|
if (!delimiterAfter) {
|
|
80
85
|
delimiterAfter = insertDelimiter(doc, element, true /*isAfter*/);
|
|
86
|
+
if (context && format) {
|
|
87
|
+
(0, applyFormat_1.applyFormat)(delimiterAfter, context.formatAppliers.segment, format, context);
|
|
88
|
+
}
|
|
81
89
|
}
|
|
82
90
|
if (!delimiterBefore) {
|
|
83
91
|
delimiterBefore = insertDelimiter(doc, element, false /*isAfter*/);
|
|
92
|
+
if (context && format) {
|
|
93
|
+
(0, applyFormat_1.applyFormat)(delimiterBefore, context.formatAppliers.segment, format, context);
|
|
94
|
+
}
|
|
84
95
|
}
|
|
85
96
|
return [delimiterAfter, delimiterBefore];
|
|
86
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityUtils.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts"],"names":[],"mappings":";;;;AAAA,qCAAgC;AAChC,qDAAoD;AACpD,+CAA8C;
|
|
1
|
+
{"version":3,"file":"entityUtils.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import toArray from './toArray';\nimport { applyFormat } from '../modelToDom/utils/applyFormat';\nimport { isElementOfType } from './isElementOfType';\nimport { isNodeOfType } from './isNodeOfType';\nimport type {\n ContentModelEntityFormat,\n ContentModelSegmentFormat,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\nconst ENTITY_INFO_NAME = '_Entity';\nconst ENTITY_TYPE_PREFIX = '_EType_';\nconst ENTITY_ID_PREFIX = '_EId_';\nconst ENTITY_READONLY_PREFIX = '_EReadonly_';\nconst ZERO_WIDTH_SPACE = '\\u200B';\nconst DELIMITER_BEFORE = 'entityDelimiterBefore';\nconst DELIMITER_AFTER = 'entityDelimiterAfter';\n\n/**\n * Check if the given DOM Node is an entity wrapper element\n */\nexport function isEntityElement(node: Node): boolean {\n return isNodeOfType(node, 'ELEMENT_NODE') && node.classList.contains(ENTITY_INFO_NAME);\n}\n\n/**\n * Get all entity wrapper elements under the given root element\n * @param root The root element to query from\n * @returns An array of entity wrapper elements\n */\nexport function getAllEntityWrappers(root: HTMLElement): HTMLElement[] {\n return toArray(root.querySelectorAll('.' + ENTITY_INFO_NAME)) as HTMLElement[];\n}\n\n/**\n * Parse entity class names from entity wrapper element\n * @param className Class names of entity\n * @param format The output entity format object\n */\nexport function parseEntityClassName(\n className: string,\n format: ContentModelEntityFormat\n): boolean | undefined {\n if (className == ENTITY_INFO_NAME) {\n return true;\n } else if (className.indexOf(ENTITY_TYPE_PREFIX) == 0) {\n format.entityType = className.substring(ENTITY_TYPE_PREFIX.length);\n } else if (className.indexOf(ENTITY_ID_PREFIX) == 0) {\n format.id = className.substring(ENTITY_ID_PREFIX.length);\n } else if (className.indexOf(ENTITY_READONLY_PREFIX) == 0) {\n format.isReadonly = className.substring(ENTITY_READONLY_PREFIX.length) == '1';\n }\n}\n\n/**\n * Generate Entity class names for an entity wrapper\n * @param format The source entity format object\n * @returns A combined CSS class name string for entity wrapper\n */\nexport function generateEntityClassNames(format: ContentModelEntityFormat): string {\n return format.isFakeEntity\n ? ''\n : `${ENTITY_INFO_NAME} ${ENTITY_TYPE_PREFIX}${format.entityType ?? ''} ${\n format.id ? `${ENTITY_ID_PREFIX}${format.id} ` : ''\n }${ENTITY_READONLY_PREFIX}${format.isReadonly ? '1' : '0'}`;\n}\n\n/**\n * Checks whether the node provided is a Entity delimiter\n * @param node the node to check\n * @return true if it is a delimiter\n */\nexport function isEntityDelimiter(element: HTMLElement): boolean {\n return (\n isElementOfType(element, 'span') &&\n (element.classList.contains(DELIMITER_AFTER) ||\n element.classList.contains(DELIMITER_BEFORE)) &&\n element.textContent === ZERO_WIDTH_SPACE\n );\n}\n\n/**\n * Adds delimiters to the element provided. If the delimiters already exists, will not be added\n * @param element the node to add the delimiters\n * @param format format to set to the delimiters, so when typing inside of one the format is not lost\n * @param context Model to Dom context to use.\n */\nexport function addDelimiters(\n doc: Document,\n element: HTMLElement,\n format?: ContentModelSegmentFormat | null,\n context?: ModelToDomContext\n): HTMLElement[] {\n let [delimiterAfter, delimiterBefore] = getDelimiters(element);\n\n if (!delimiterAfter) {\n delimiterAfter = insertDelimiter(doc, element, true /*isAfter*/);\n if (context && format) {\n applyFormat(delimiterAfter, context.formatAppliers.segment, format, context);\n }\n }\n\n if (!delimiterBefore) {\n delimiterBefore = insertDelimiter(doc, element, false /*isAfter*/);\n if (context && format) {\n applyFormat(delimiterBefore, context.formatAppliers.segment, format, context);\n }\n }\n\n return [delimiterAfter, delimiterBefore];\n}\n\nfunction getDelimiters(entityWrapper: HTMLElement): (HTMLElement | undefined)[] {\n const result: (HTMLElement | undefined)[] = [];\n const { nextElementSibling, previousElementSibling } = entityWrapper;\n result.push(\n isDelimiter(nextElementSibling, DELIMITER_AFTER),\n isDelimiter(previousElementSibling, DELIMITER_BEFORE)\n );\n\n return result;\n}\n\nfunction isDelimiter(el: Element | null, className: string): HTMLElement | undefined {\n return el?.classList.contains(className) && el.textContent == ZERO_WIDTH_SPACE\n ? (el as HTMLElement)\n : undefined;\n}\n\nfunction insertDelimiter(doc: Document, element: Element, isAfter: boolean) {\n const span = doc.createElement('span');\n\n span.className = isAfter ? DELIMITER_AFTER : DELIMITER_BEFORE;\n span.appendChild(doc.createTextNode(ZERO_WIDTH_SPACE));\n element.parentNode?.insertBefore(span, isAfter ? element.nextSibling : element);\n\n return span;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FormatHandler } from '../FormatHandler';
|
|
2
|
-
import type { PaddingFormat } from 'roosterjs-content-model-types';
|
|
2
|
+
import type { DirectionFormat, PaddingFormat } from 'roosterjs-content-model-types';
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
|
-
export declare const paddingFormatHandler: FormatHandler<PaddingFormat>;
|
|
6
|
+
export declare const paddingFormatHandler: FormatHandler<PaddingFormat & DirectionFormat>;
|
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.paddingFormatHandler = void 0;
|
|
4
|
+
var directionFormatHandler_1 = require("./directionFormatHandler");
|
|
4
5
|
var PaddingKeys = [
|
|
5
6
|
'paddingTop',
|
|
6
7
|
'paddingRight',
|
|
7
8
|
'paddingBottom',
|
|
8
9
|
'paddingLeft',
|
|
9
10
|
];
|
|
11
|
+
var AlternativeKeyLtr = {
|
|
12
|
+
paddingLeft: 'paddingInlineStart',
|
|
13
|
+
};
|
|
14
|
+
var AlternativeKeyRtl = {
|
|
15
|
+
paddingRight: 'paddingInlineStart',
|
|
16
|
+
};
|
|
10
17
|
/**
|
|
11
18
|
* @internal
|
|
12
19
|
*/
|
|
13
20
|
exports.paddingFormatHandler = {
|
|
14
|
-
parse: function (format, element,
|
|
21
|
+
parse: function (format, element, context, defaultStyle) {
|
|
22
|
+
directionFormatHandler_1.directionFormatHandler.parse(format, element, context, defaultStyle);
|
|
15
23
|
PaddingKeys.forEach(function (key) {
|
|
16
|
-
var _a;
|
|
24
|
+
var _a, _b;
|
|
17
25
|
var value = element.style[key];
|
|
18
|
-
var
|
|
19
|
-
|
|
26
|
+
var alterativeKey = (format.direction == 'rtl'
|
|
27
|
+
? AlternativeKeyRtl
|
|
28
|
+
: AlternativeKeyLtr)[key];
|
|
29
|
+
var defaultValue = ((_b = (_a = defaultStyle[key]) !== null && _a !== void 0 ? _a : (alterativeKey ? defaultStyle[alterativeKey] : undefined)) !== null && _b !== void 0 ? _b : '0px') + '';
|
|
30
|
+
if (!value) {
|
|
31
|
+
value = defaultValue;
|
|
32
|
+
}
|
|
33
|
+
if (!value || value == '0') {
|
|
20
34
|
value = '0px';
|
|
21
35
|
}
|
|
22
36
|
if (value && value != defaultValue) {
|
|
@@ -24,10 +38,17 @@ exports.paddingFormatHandler = {
|
|
|
24
38
|
}
|
|
25
39
|
});
|
|
26
40
|
},
|
|
27
|
-
apply: function (format, element) {
|
|
41
|
+
apply: function (format, element, context) {
|
|
28
42
|
PaddingKeys.forEach(function (key) {
|
|
29
43
|
var value = format[key];
|
|
30
|
-
|
|
44
|
+
var defaultValue = undefined;
|
|
45
|
+
if (element.tagName == 'OL' || element.tagName == 'UL') {
|
|
46
|
+
if ((format.direction == 'rtl' && key == 'paddingRight') ||
|
|
47
|
+
(format.direction != 'rtl' && key == 'paddingLeft')) {
|
|
48
|
+
defaultValue = '40px';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (value && value != defaultValue) {
|
|
31
52
|
element.style[key] = value;
|
|
32
53
|
}
|
|
33
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paddingFormatHandler.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"paddingFormatHandler.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts"],"names":[],"mappings":";;;AAAA,mEAAkE;AAIlE,IAAM,WAAW,GAAwD;IACrE,YAAY;IACZ,cAAc;IACd,eAAe;IACf,aAAa;CAChB,CAAC;AAEF,IAAM,iBAAiB,GAGlB;IACD,WAAW,EAAE,oBAAoB;CACpC,CAAC;AAEF,IAAM,iBAAiB,GAGlB;IACD,YAAY,EAAE,oBAAoB;CACrC,CAAC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAmD;IAChF,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY;QAC1C,+CAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAErE,WAAW,CAAC,OAAO,CAAC,UAAA,GAAG;;YACnB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAM,aAAa,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;gBAC5C,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAM,YAAY,GACd,CAAC,MAAA,MAAA,YAAY,CAAC,GAAG,CAAC,mCACd,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mCACzD,KAAK,CAAC,GAAG,EAAE,CAAC;YAEpB,IAAI,CAAC,KAAK,EAAE;gBACR,KAAK,GAAG,YAAY,CAAC;aACxB;YAED,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE;gBACxB,KAAK,GAAG,KAAK,CAAC;aACjB;YAED,IAAI,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE;gBAChC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO;QAC5B,WAAW,CAAC,OAAO,CAAC,UAAA,GAAG;YACnB,IAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,YAAY,GAAuB,SAAS,CAAC;YAEjD,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;gBACpD,IACI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,IAAI,GAAG,IAAI,cAAc,CAAC;oBACpD,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC,EACrD;oBACE,YAAY,GAAG,MAAM,CAAC;iBACzB;aACJ;YAED,IAAI,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC","sourcesContent":["import { directionFormatHandler } from './directionFormatHandler';\nimport type { FormatHandler } from '../FormatHandler';\nimport type { DirectionFormat, PaddingFormat } from 'roosterjs-content-model-types';\n\nconst PaddingKeys: (keyof PaddingFormat & keyof CSSStyleDeclaration)[] = [\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n];\n\nconst AlternativeKeyLtr: Partial<Record<\n keyof PaddingFormat,\n keyof CSSStyleDeclaration | undefined\n>> = {\n paddingLeft: 'paddingInlineStart',\n};\n\nconst AlternativeKeyRtl: Partial<Record<\n keyof PaddingFormat,\n keyof CSSStyleDeclaration | undefined\n>> = {\n paddingRight: 'paddingInlineStart',\n};\n\n/**\n * @internal\n */\nexport const paddingFormatHandler: FormatHandler<PaddingFormat & DirectionFormat> = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n PaddingKeys.forEach(key => {\n let value = element.style[key];\n const alterativeKey = (format.direction == 'rtl'\n ? AlternativeKeyRtl\n : AlternativeKeyLtr)[key];\n const defaultValue: string =\n (defaultStyle[key] ??\n (alterativeKey ? defaultStyle[alterativeKey] : undefined) ??\n '0px') + '';\n\n if (!value) {\n value = defaultValue;\n }\n\n if (!value || value == '0') {\n value = '0px';\n }\n\n if (value && value != defaultValue) {\n format[key] = value;\n }\n });\n },\n apply: (format, element, context) => {\n PaddingKeys.forEach(key => {\n const value = format[key];\n let defaultValue: string | undefined = undefined;\n\n if (element.tagName == 'OL' || element.tagName == 'UL') {\n if (\n (format.direction == 'rtl' && key == 'paddingRight') ||\n (format.direction != 'rtl' && key == 'paddingLeft')\n ) {\n defaultValue = '40px';\n }\n }\n\n if (value && value != defaultValue) {\n element.style[key] = value;\n }\n });\n },\n};\n"]}
|
|
@@ -183,6 +183,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
183
183
|
divider: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), (0, tslib_1.__read)(sharedContainerFormats), false), ['display', 'size', 'htmlAlign'], false),
|
|
184
184
|
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display'], false),
|
|
185
185
|
entity: ['entity'],
|
|
186
|
+
general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode
|
|
186
187
|
};
|
|
187
188
|
/**
|
|
188
189
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { entityFormatHandler } from './entity/entityFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { getObjectKeys } from '../domUtils/getObjectKeys';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStyleFormatHandler } from './list/listStyleFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { textIndentFormatHandler } from './block/textIndentFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport type { FormatHandler } from './FormatHandler';\nimport type {\n ContentModelFormatMap,\n FormatApplier,\n FormatAppliers,\n FormatHandlerTypeMap,\n FormatKey,\n FormatParser,\n FormatParsers,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler<FormatHandlerTypeMap[Key]>;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n entity: entityFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStyle: listStyleFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n textIndent: textIndentFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'textIndent',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\n/**\n * @internal\n */\nexport const defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItemThread: ['listItemThread'],\n listLevelThread: ['listLevelThread'],\n listItemElement: [\n ...sharedBlockFormats,\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'margin',\n 'listStyle',\n ],\n listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n tableColumn: ['size'],\n table: [\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n entity: ['entity'],\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser<any>;\n return result;\n },\n <FormatParsers>{}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier<any>;\n return result;\n },\n <FormatAppliers>{}\n);\n"]}
|
|
1
|
+
{"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { entityFormatHandler } from './entity/entityFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { getObjectKeys } from '../domUtils/getObjectKeys';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStyleFormatHandler } from './list/listStyleFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { textIndentFormatHandler } from './block/textIndentFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport type { FormatHandler } from './FormatHandler';\nimport type {\n ContentModelFormatMap,\n FormatApplier,\n FormatAppliers,\n FormatHandlerTypeMap,\n FormatKey,\n FormatParser,\n FormatParsers,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler<FormatHandlerTypeMap[Key]>;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n entity: entityFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStyle: listStyleFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n textIndent: textIndentFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'textIndent',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\n/**\n * @internal\n */\nexport const defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItemThread: ['listItemThread'],\n listLevelThread: ['listLevelThread'],\n listItemElement: [\n ...sharedBlockFormats,\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'margin',\n 'listStyle',\n ],\n listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n tableColumn: ['size'],\n table: [\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n entity: ['entity'],\n general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser<any>;\n return result;\n },\n <FormatParsers>{}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier<any>;\n return result;\n },\n <FormatAppliers>{}\n);\n"]}
|
|
@@ -14,7 +14,7 @@ exports.fontSizeFormatHandler = {
|
|
|
14
14
|
// the font size will be handled by superOrSubScript handler
|
|
15
15
|
if (fontSize && !(0, superOrSubScriptFormatHandler_1.isSuperOrSubScript)(fontSize, verticalAlign) && fontSize != 'inherit') {
|
|
16
16
|
if (element.style.fontSize) {
|
|
17
|
-
format.fontSize = normalizeFontSize(fontSize, context.segmentFormat.fontSize);
|
|
17
|
+
format.fontSize = normalizeFontSize(fontSize, context.segmentFormat.fontSize, context);
|
|
18
18
|
}
|
|
19
19
|
else if (defaultStyle.fontSize) {
|
|
20
20
|
format.fontSize = fontSize;
|
|
@@ -38,7 +38,7 @@ var KnownFontSizes = {
|
|
|
38
38
|
'xx-large': '24pt',
|
|
39
39
|
'xxx-large': '36pt',
|
|
40
40
|
};
|
|
41
|
-
function normalizeFontSize(fontSize, contextFont) {
|
|
41
|
+
function normalizeFontSize(fontSize, contextFont, context) {
|
|
42
42
|
var knownFontSize = KnownFontSizes[fontSize];
|
|
43
43
|
if (knownFontSize) {
|
|
44
44
|
return knownFontSize;
|
|
@@ -46,12 +46,13 @@ function normalizeFontSize(fontSize, contextFont) {
|
|
|
46
46
|
else if (fontSize == 'smaller' ||
|
|
47
47
|
fontSize == 'larger' ||
|
|
48
48
|
fontSize.endsWith('em') ||
|
|
49
|
-
fontSize.endsWith('%')
|
|
49
|
+
fontSize.endsWith('%') ||
|
|
50
|
+
fontSize.endsWith('rem')) {
|
|
50
51
|
if (!contextFont) {
|
|
51
52
|
return undefined;
|
|
52
53
|
}
|
|
53
54
|
else {
|
|
54
|
-
var existingFontSize = (0, parseValueWithUnit_1.parseValueWithUnit)(contextFont, undefined /*element*/, 'px');
|
|
55
|
+
var existingFontSize = (0, parseValueWithUnit_1.parseValueWithUnit)(contextFont, fontSize.endsWith('rem') ? context.rootFontSize : undefined /*element*/, 'px');
|
|
55
56
|
if (existingFontSize) {
|
|
56
57
|
switch (fontSize) {
|
|
57
58
|
case 'smaller':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fontSizeFormatHandler.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts"],"names":[],"mappings":";;;AAAA,iFAAqE;AACrE,kEAAiE;AAIjE;;GAEG;AACU,QAAA,qBAAqB,GAAkC;IAChE,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY;QAC1C,IAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;QACjE,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC;QAEhF,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,QAAQ,IAAI,CAAC,IAAA,kDAAkB,EAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,QAAQ,IAAI,SAAS,EAAE;YACnF,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxB,MAAM,CAAC,QAAQ,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"fontSizeFormatHandler.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { isSuperOrSubScript } from './superOrSubScriptFormatHandler';\nimport { parseValueWithUnit } from '../utils/parseValueWithUnit';\nimport type { EditorContext, FontSizeFormat } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const fontSizeFormatHandler: FormatHandler<FontSizeFormat> = {\n parse: (format, element, context, defaultStyle) => {\n const fontSize = element.style.fontSize || defaultStyle.fontSize;\n const verticalAlign = element.style.verticalAlign || defaultStyle.verticalAlign;\n\n // when font size is 'smaller' and the style is for superscript/subscript,\n // the font size will be handled by superOrSubScript handler\n if (fontSize && !isSuperOrSubScript(fontSize, verticalAlign) && fontSize != 'inherit') {\n if (element.style.fontSize) {\n format.fontSize = normalizeFontSize(\n fontSize,\n context.segmentFormat.fontSize,\n context\n );\n } else if (defaultStyle.fontSize) {\n format.fontSize = fontSize;\n }\n }\n },\n apply: (format, element, context) => {\n if (format.fontSize && format.fontSize != context.implicitFormat.fontSize) {\n element.style.fontSize = format.fontSize;\n }\n },\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\nconst KnownFontSizes: Record<string, string> = {\n 'xx-small': '6.75pt',\n 'x-small': '7.5pt',\n small: '9.75pt',\n medium: '12pt',\n large: '13.5pt',\n 'x-large': '18pt',\n 'xx-large': '24pt',\n 'xxx-large': '36pt',\n};\n\nfunction normalizeFontSize(\n fontSize: string,\n contextFont: string | undefined,\n context: EditorContext\n): string | undefined {\n const knownFontSize = KnownFontSizes[fontSize];\n\n if (knownFontSize) {\n return knownFontSize;\n } else if (\n fontSize == 'smaller' ||\n fontSize == 'larger' ||\n fontSize.endsWith('em') ||\n fontSize.endsWith('%') ||\n fontSize.endsWith('rem')\n ) {\n if (!contextFont) {\n return undefined;\n } else {\n const existingFontSize = parseValueWithUnit(\n contextFont,\n fontSize.endsWith('rem') ? context.rootFontSize : undefined /*element*/,\n 'px'\n );\n\n if (existingFontSize) {\n switch (fontSize) {\n case 'smaller':\n return Math.round((existingFontSize * 500) / 6) / 100 + 'px';\n case 'larger':\n return Math.round((existingFontSize * 600) / 5) / 100 + 'px';\n default:\n return parseValueWithUnit(fontSize, existingFontSize, 'px') + 'px';\n }\n }\n }\n } else if (fontSize == 'inherit' || fontSize == 'revert' || fontSize == 'unset') {\n return undefined;\n } else {\n return fontSize;\n }\n}\n"]}
|
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var MarginValueRegex = /(-?\d+(\.\d+)?)([a-z]+|%)/;
|
|
6
6
|
// According to https://developer.mozilla.org/en-US/docs/Glossary/CSS_pixel, 1in = 96px
|
|
7
7
|
var PixelPerInch = 96;
|
|
8
|
+
var DefaultRootFontSize = 16;
|
|
8
9
|
/**
|
|
9
10
|
* Parse unit value with its unit
|
|
10
11
|
* @param value The source value to parse
|
|
@@ -27,7 +28,6 @@ function parseValueWithUnit(value, currentSizePxOrElement, resultUnit) {
|
|
|
27
28
|
result = ptToPx(num);
|
|
28
29
|
break;
|
|
29
30
|
case 'em':
|
|
30
|
-
case 'rem':
|
|
31
31
|
result = getFontSize(currentSizePxOrElement) * num;
|
|
32
32
|
break;
|
|
33
33
|
case 'ex':
|
|
@@ -39,6 +39,9 @@ function parseValueWithUnit(value, currentSizePxOrElement, resultUnit) {
|
|
|
39
39
|
case 'in':
|
|
40
40
|
result = num * PixelPerInch;
|
|
41
41
|
break;
|
|
42
|
+
case 'rem':
|
|
43
|
+
result = (getFontSize(currentSizePxOrElement) || DefaultRootFontSize) * num;
|
|
44
|
+
break;
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
if (result > 0 && resultUnit == 'pt') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseValueWithUnit.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts"],"names":[],"mappings":";;;;AAAA,IAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,uFAAuF;AACvF,IAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;;GAKG;AACH,SAAgB,kBAAkB,CAC9B,KAAkB,EAClB,sBAA6C,EAC7C,UAA8B;IAF9B,sBAAA,EAAA,UAAkB;IAElB,2BAAA,EAAA,iBAA8B;IAE9B,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,KAAK,EAAE;QACD,IAAA,KAAA,oBAAwB,KAAK,IAAA,EAA5B,CAAC,QAAA,EAAE,MAAM,QAAA,EAAE,EAAE,QAAA,EAAE,IAAI,QAAS,CAAC;QACpC,IAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/B,QAAQ,IAAI,EAAE;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM;YACV,KAAK,IAAI
|
|
1
|
+
{"version":3,"file":"parseValueWithUnit.js","sourceRoot":"","sources":["../../../../../packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts"],"names":[],"mappings":";;;;AAAA,IAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,uFAAuF;AACvF,IAAM,YAAY,GAAG,EAAE,CAAC;AAExB,IAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,SAAgB,kBAAkB,CAC9B,KAAkB,EAClB,sBAA6C,EAC7C,UAA8B;IAF9B,sBAAA,EAAA,UAAkB;IAElB,2BAAA,EAAA,iBAA8B;IAE9B,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,KAAK,EAAE;QACD,IAAA,KAAA,oBAAwB,KAAK,IAAA,EAA5B,CAAC,QAAA,EAAE,MAAM,QAAA,EAAE,EAAE,QAAA,EAAE,IAAI,QAAS,CAAC;QACpC,IAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/B,QAAQ,IAAI,EAAE;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,WAAW,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;gBACnD,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzD,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC3D,MAAM;YACV,KAAK,IAAI;gBACL,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC;gBAC5B,MAAM;YACV,KAAK,KAAK;gBACN,MAAM,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,mBAAmB,CAAC,GAAG,GAAG,CAAC;gBAC5E,MAAM;SACb;KACJ;IAED,IAAI,MAAM,GAAG,CAAC,IAAI,UAAU,IAAI,IAAI,EAAE;QAClC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;KAC3B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AA1CD,gDA0CC;AAED,SAAS,WAAW,CAAC,oBAA2C;;IAC5D,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;QAC7C,OAAO,CAAC,CAAC;KACZ;SAAM,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE;QACjD,OAAO,oBAAoB,CAAC;KAC/B;SAAM;QACH,IAAM,SAAS,GACX,MAAA,MAAA,oBAAoB,CAAC,aAAa,CAAC,WAAW,0CAAE,gBAAgB,CAAC,oBAAoB,EAChF,QAAQ,mCAAI,EAAE,CAAC;QACxB,IAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAEpC,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED,SAAS,MAAM,CAAC,EAAU;IACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,MAAM,CAAC,EAAU;IACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,CAAC","sourcesContent":["const MarginValueRegex = /(-?\\d+(\\.\\d+)?)([a-z]+|%)/;\n\n// According to https://developer.mozilla.org/en-US/docs/Glossary/CSS_pixel, 1in = 96px\nconst PixelPerInch = 96;\n\nconst DefaultRootFontSize = 16;\n\n/**\n * Parse unit value with its unit\n * @param value The source value to parse\n * @param currentSizePxOrElement The source element which has this unit value, or current font size (in px) from context.\n * @param resultUnit Unit for result, can be px or pt. @default px\n */\nexport function parseValueWithUnit(\n value: string = '',\n currentSizePxOrElement?: number | HTMLElement,\n resultUnit: 'px' | 'pt' = 'px'\n): number {\n const match = MarginValueRegex.exec(value);\n let result = 0;\n\n if (match) {\n const [_, numStr, __, unit] = match;\n const num = parseFloat(numStr);\n\n switch (unit) {\n case 'px':\n result = num;\n break;\n case 'pt':\n result = ptToPx(num);\n break;\n case 'em':\n result = getFontSize(currentSizePxOrElement) * num;\n break;\n case 'ex':\n result = (getFontSize(currentSizePxOrElement) * num) / 2;\n break;\n case '%':\n result = (getFontSize(currentSizePxOrElement) * num) / 100;\n break;\n case 'in':\n result = num * PixelPerInch;\n break;\n case 'rem':\n result = (getFontSize(currentSizePxOrElement) || DefaultRootFontSize) * num;\n break;\n }\n }\n\n if (result > 0 && resultUnit == 'pt') {\n result = pxToPt(result);\n }\n\n return result;\n}\n\nfunction getFontSize(currentSizeOrElement?: number | HTMLElement): number {\n if (typeof currentSizeOrElement === 'undefined') {\n return 0;\n } else if (typeof currentSizeOrElement === 'number') {\n return currentSizeOrElement;\n } else {\n const styleInPt =\n currentSizeOrElement.ownerDocument.defaultView?.getComputedStyle(currentSizeOrElement)\n .fontSize ?? '';\n const floatInPt = parseFloat(styleInPt);\n const floatInPx = ptToPx(floatInPt);\n\n return floatInPx;\n }\n}\n\nfunction ptToPx(pt: number): number {\n return Math.round((pt * 4000) / 3) / 1000;\n}\n\nfunction pxToPt(px: number) {\n return Math.round((px * 3000) / 4) / 1000;\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { domToContentModel } from './domToModel/domToContentModel';
|
|
2
2
|
export { contentModelToDom } from './modelToDom/contentModelToDom';
|
|
3
|
+
export { contentModelToText } from './modelToText/contentModelToText';
|
|
3
4
|
export { childProcessor, handleRegularSelection, processChildNode, } from './domToModel/processors/childProcessor';
|
|
4
5
|
export { entityProcessor } from './domToModel/processors/entityProcessor';
|
|
5
6
|
export { tableProcessor } from './domToModel/processors/tableProcessor';
|
|
@@ -14,7 +15,7 @@ export { getObjectKeys } from './domUtils/getObjectKeys';
|
|
|
14
15
|
export { default as toArray } from './domUtils/toArray';
|
|
15
16
|
export { moveChildNodes, wrapAllChildNodes } from './domUtils/moveChildNodes';
|
|
16
17
|
export { wrap } from './domUtils/wrap';
|
|
17
|
-
export { isEntityElement, getAllEntityWrappers, parseEntityClassName, generateEntityClassNames, addDelimiters, } from './domUtils/entityUtils';
|
|
18
|
+
export { isEntityElement, getAllEntityWrappers, parseEntityClassName, generateEntityClassNames, addDelimiters, isEntityDelimiter, } from './domUtils/entityUtils';
|
|
18
19
|
export { reuseCachedElement } from './domUtils/reuseCachedElement';
|
|
19
20
|
export { isWhiteSpacePreserved } from './domUtils/isWhiteSpacePreserved';
|
|
20
21
|
export { createBr } from './modelApi/creators/createBr';
|
|
@@ -37,6 +38,7 @@ export { createEmptyModel } from './modelApi/creators/createEmptyModel';
|
|
|
37
38
|
export { addBlock } from './modelApi/common/addBlock';
|
|
38
39
|
export { addCode } from './modelApi/common/addDecorators';
|
|
39
40
|
export { addLink } from './modelApi/common/addDecorators';
|
|
41
|
+
export { normalizeParagraph } from './modelApi/common/normalizeParagraph';
|
|
40
42
|
export { normalizeContentModel } from './modelApi/common/normalizeContentModel';
|
|
41
43
|
export { isGeneralSegment } from './modelApi/common/isGeneralSegment';
|
|
42
44
|
export { unwrapBlock } from './modelApi/common/unwrapBlock';
|
package/lib/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.setParagraphNotImplicit = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = void 0;
|
|
3
|
+
exports.normalizeParagraph = exports.addLink = exports.addCode = exports.addBlock = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityClassName = exports.getAllEntityWrappers = exports.isEntityElement = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.updateMetadata = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
4
|
+
exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.setParagraphNotImplicit = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = void 0;
|
|
5
5
|
var domToContentModel_1 = require("./domToModel/domToContentModel");
|
|
6
6
|
Object.defineProperty(exports, "domToContentModel", { enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } });
|
|
7
7
|
var contentModelToDom_1 = require("./modelToDom/contentModelToDom");
|
|
8
8
|
Object.defineProperty(exports, "contentModelToDom", { enumerable: true, get: function () { return contentModelToDom_1.contentModelToDom; } });
|
|
9
|
+
var contentModelToText_1 = require("./modelToText/contentModelToText");
|
|
10
|
+
Object.defineProperty(exports, "contentModelToText", { enumerable: true, get: function () { return contentModelToText_1.contentModelToText; } });
|
|
9
11
|
var childProcessor_1 = require("./domToModel/processors/childProcessor");
|
|
10
12
|
Object.defineProperty(exports, "childProcessor", { enumerable: true, get: function () { return childProcessor_1.childProcessor; } });
|
|
11
13
|
Object.defineProperty(exports, "handleRegularSelection", { enumerable: true, get: function () { return childProcessor_1.handleRegularSelection; } });
|
|
@@ -44,6 +46,7 @@ Object.defineProperty(exports, "getAllEntityWrappers", { enumerable: true, get:
|
|
|
44
46
|
Object.defineProperty(exports, "parseEntityClassName", { enumerable: true, get: function () { return entityUtils_1.parseEntityClassName; } });
|
|
45
47
|
Object.defineProperty(exports, "generateEntityClassNames", { enumerable: true, get: function () { return entityUtils_1.generateEntityClassNames; } });
|
|
46
48
|
Object.defineProperty(exports, "addDelimiters", { enumerable: true, get: function () { return entityUtils_1.addDelimiters; } });
|
|
49
|
+
Object.defineProperty(exports, "isEntityDelimiter", { enumerable: true, get: function () { return entityUtils_1.isEntityDelimiter; } });
|
|
47
50
|
var reuseCachedElement_1 = require("./domUtils/reuseCachedElement");
|
|
48
51
|
Object.defineProperty(exports, "reuseCachedElement", { enumerable: true, get: function () { return reuseCachedElement_1.reuseCachedElement; } });
|
|
49
52
|
var isWhiteSpacePreserved_1 = require("./domUtils/isWhiteSpacePreserved");
|
|
@@ -88,6 +91,8 @@ var addDecorators_1 = require("./modelApi/common/addDecorators");
|
|
|
88
91
|
Object.defineProperty(exports, "addCode", { enumerable: true, get: function () { return addDecorators_1.addCode; } });
|
|
89
92
|
var addDecorators_2 = require("./modelApi/common/addDecorators");
|
|
90
93
|
Object.defineProperty(exports, "addLink", { enumerable: true, get: function () { return addDecorators_2.addLink; } });
|
|
94
|
+
var normalizeParagraph_1 = require("./modelApi/common/normalizeParagraph");
|
|
95
|
+
Object.defineProperty(exports, "normalizeParagraph", { enumerable: true, get: function () { return normalizeParagraph_1.normalizeParagraph; } });
|
|
91
96
|
var normalizeContentModel_1 = require("./modelApi/common/normalizeContentModel");
|
|
92
97
|
Object.defineProperty(exports, "normalizeContentModel", { enumerable: true, get: function () { return normalizeContentModel_1.normalizeContentModel; } });
|
|
93
98
|
var isGeneralSegment_1 = require("./modelApi/common/isGeneralSegment");
|