roosterjs-content-model-dom 9.44.0 → 9.45.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/domToModel/processors/formatContainerProcessor.d.ts +6 -1
- package/lib/domToModel/processors/formatContainerProcessor.js +6 -1
- package/lib/domToModel/processors/formatContainerProcessor.js.map +1 -1
- package/lib/domUtils/style/transformColor.d.ts +10 -1
- package/lib/domUtils/style/transformColor.js +26 -1
- package/lib/domUtils/style/transformColor.js.map +1 -1
- package/lib/formatHandlers/block/textAlignFormatHandler.js +2 -18
- package/lib/formatHandlers/block/textAlignFormatHandler.js.map +1 -1
- package/lib/formatHandlers/common/borderColorFormatHandler.d.ts +6 -0
- package/lib/formatHandlers/common/borderColorFormatHandler.js +66 -0
- package/lib/formatHandlers/common/borderColorFormatHandler.js.map +1 -0
- package/lib/formatHandlers/common/borderFormatHandler.d.ts +0 -4
- package/lib/formatHandlers/common/borderFormatHandler.js +5 -12
- package/lib/formatHandlers/common/borderFormatHandler.js.map +1 -1
- package/lib/formatHandlers/defaultFormatHandlers.js +9 -8
- package/lib/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib/formatHandlers/list/listItemAlignFormatHandler.d.ts +6 -0
- package/lib/formatHandlers/list/listItemAlignFormatHandler.js +37 -0
- package/lib/formatHandlers/list/listItemAlignFormatHandler.js.map +1 -0
- package/lib/formatHandlers/table/legacyTableBorderFormatHandler.d.ts +6 -0
- package/lib/formatHandlers/table/legacyTableBorderFormatHandler.js +34 -0
- package/lib/formatHandlers/table/legacyTableBorderFormatHandler.js.map +1 -0
- package/lib/formatHandlers/table/tableSpacingFormatHandler.js +0 -7
- package/lib/formatHandlers/table/tableSpacingFormatHandler.js.map +1 -1
- package/lib/formatHandlers/utils/borderKeys.d.ts +11 -0
- package/lib/formatHandlers/utils/borderKeys.js +22 -0
- package/lib/formatHandlers/utils/borderKeys.js.map +1 -0
- package/lib/formatHandlers/utils/color.d.ts +13 -1
- package/lib/formatHandlers/utils/color.js +42 -13
- package/lib/formatHandlers/utils/color.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.js +8 -6
- package/lib/index.js.map +1 -1
- package/lib/modelApi/common/normalizeSegmentFormat.js +3 -3
- package/lib/modelApi/common/normalizeSegmentFormat.js.map +1 -1
- package/lib/modelApi/editing/applyTableFormat.js +2 -2
- package/lib/modelApi/editing/applyTableFormat.js.map +1 -1
- package/lib/modelApi/editing/normalizeTable.d.ts +1 -1
- package/lib/modelApi/editing/normalizeTable.js +11 -24
- package/lib/modelApi/editing/normalizeTable.js.map +1 -1
- package/lib/modelToDom/handlers/handleImage.js +1 -1
- package/lib/modelToDom/handlers/handleImage.js.map +1 -1
- package/lib-amd/domToModel/processors/formatContainerProcessor.d.ts +6 -1
- package/lib-amd/domToModel/processors/formatContainerProcessor.js +6 -1
- package/lib-amd/domToModel/processors/formatContainerProcessor.js.map +1 -1
- package/lib-amd/domUtils/style/transformColor.d.ts +10 -1
- package/lib-amd/domUtils/style/transformColor.js +25 -2
- package/lib-amd/domUtils/style/transformColor.js.map +1 -1
- package/lib-amd/formatHandlers/block/textAlignFormatHandler.js +2 -18
- package/lib-amd/formatHandlers/block/textAlignFormatHandler.js.map +1 -1
- package/lib-amd/formatHandlers/common/borderColorFormatHandler.d.ts +6 -0
- package/lib-amd/formatHandlers/common/borderColorFormatHandler.js +65 -0
- package/lib-amd/formatHandlers/common/borderColorFormatHandler.js.map +1 -0
- package/lib-amd/formatHandlers/common/borderFormatHandler.d.ts +0 -4
- package/lib-amd/formatHandlers/common/borderFormatHandler.js +4 -13
- package/lib-amd/formatHandlers/common/borderFormatHandler.js.map +1 -1
- package/lib-amd/formatHandlers/defaultFormatHandlers.js +7 -9
- package/lib-amd/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib-amd/formatHandlers/list/listItemAlignFormatHandler.d.ts +6 -0
- package/lib-amd/formatHandlers/list/listItemAlignFormatHandler.js +38 -0
- package/lib-amd/formatHandlers/list/listItemAlignFormatHandler.js.map +1 -0
- package/lib-amd/formatHandlers/table/legacyTableBorderFormatHandler.d.ts +6 -0
- package/lib-amd/formatHandlers/table/legacyTableBorderFormatHandler.js +36 -0
- package/lib-amd/formatHandlers/table/legacyTableBorderFormatHandler.js.map +1 -0
- package/lib-amd/formatHandlers/table/tableSpacingFormatHandler.js +0 -7
- package/lib-amd/formatHandlers/table/tableSpacingFormatHandler.js.map +1 -1
- package/lib-amd/formatHandlers/utils/borderKeys.d.ts +11 -0
- package/lib-amd/formatHandlers/utils/borderKeys.js +24 -0
- package/lib-amd/formatHandlers/utils/borderKeys.js.map +1 -0
- package/lib-amd/formatHandlers/utils/color.d.ts +13 -1
- package/lib-amd/formatHandlers/utils/color.js +42 -14
- package/lib-amd/formatHandlers/utils/color.js.map +1 -1
- package/lib-amd/index.d.ts +3 -2
- package/lib-amd/index.js +4 -3
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/modelApi/common/normalizeSegmentFormat.js +2 -2
- package/lib-amd/modelApi/common/normalizeSegmentFormat.js.map +1 -1
- package/lib-amd/modelApi/editing/applyTableFormat.js +2 -2
- package/lib-amd/modelApi/editing/applyTableFormat.js.map +1 -1
- package/lib-amd/modelApi/editing/normalizeTable.d.ts +1 -1
- package/lib-amd/modelApi/editing/normalizeTable.js +11 -24
- package/lib-amd/modelApi/editing/normalizeTable.js.map +1 -1
- package/lib-amd/modelToDom/handlers/handleImage.js +1 -1
- package/lib-amd/modelToDom/handlers/handleImage.js.map +1 -1
- package/lib-mjs/domToModel/processors/formatContainerProcessor.d.ts +6 -1
- package/lib-mjs/domToModel/processors/formatContainerProcessor.js +6 -1
- package/lib-mjs/domToModel/processors/formatContainerProcessor.js.map +1 -1
- package/lib-mjs/domUtils/style/transformColor.d.ts +10 -1
- package/lib-mjs/domUtils/style/transformColor.js +27 -2
- package/lib-mjs/domUtils/style/transformColor.js.map +1 -1
- package/lib-mjs/formatHandlers/block/textAlignFormatHandler.js +2 -18
- package/lib-mjs/formatHandlers/block/textAlignFormatHandler.js.map +1 -1
- package/lib-mjs/formatHandlers/common/borderColorFormatHandler.d.ts +6 -0
- package/lib-mjs/formatHandlers/common/borderColorFormatHandler.js +63 -0
- package/lib-mjs/formatHandlers/common/borderColorFormatHandler.js.map +1 -0
- package/lib-mjs/formatHandlers/common/borderFormatHandler.d.ts +0 -4
- package/lib-mjs/formatHandlers/common/borderFormatHandler.js +3 -10
- package/lib-mjs/formatHandlers/common/borderFormatHandler.js.map +1 -1
- package/lib-mjs/formatHandlers/defaultFormatHandlers.js +9 -8
- package/lib-mjs/formatHandlers/defaultFormatHandlers.js.map +1 -1
- package/lib-mjs/formatHandlers/list/listItemAlignFormatHandler.d.ts +6 -0
- package/lib-mjs/formatHandlers/list/listItemAlignFormatHandler.js +34 -0
- package/lib-mjs/formatHandlers/list/listItemAlignFormatHandler.js.map +1 -0
- package/lib-mjs/formatHandlers/table/legacyTableBorderFormatHandler.d.ts +6 -0
- package/lib-mjs/formatHandlers/table/legacyTableBorderFormatHandler.js +31 -0
- package/lib-mjs/formatHandlers/table/legacyTableBorderFormatHandler.js.map +1 -0
- package/lib-mjs/formatHandlers/table/tableSpacingFormatHandler.js +0 -7
- package/lib-mjs/formatHandlers/table/tableSpacingFormatHandler.js.map +1 -1
- package/lib-mjs/formatHandlers/utils/borderKeys.d.ts +11 -0
- package/lib-mjs/formatHandlers/utils/borderKeys.js +19 -0
- package/lib-mjs/formatHandlers/utils/borderKeys.js.map +1 -0
- package/lib-mjs/formatHandlers/utils/color.d.ts +13 -1
- package/lib-mjs/formatHandlers/utils/color.js +36 -10
- package/lib-mjs/formatHandlers/utils/color.js.map +1 -1
- package/lib-mjs/index.d.ts +3 -2
- package/lib-mjs/index.js +2 -1
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/modelApi/common/normalizeSegmentFormat.js +3 -3
- package/lib-mjs/modelApi/common/normalizeSegmentFormat.js.map +1 -1
- package/lib-mjs/modelApi/editing/applyTableFormat.js +1 -1
- package/lib-mjs/modelApi/editing/applyTableFormat.js.map +1 -1
- package/lib-mjs/modelApi/editing/normalizeTable.d.ts +1 -1
- package/lib-mjs/modelApi/editing/normalizeTable.js +11 -24
- package/lib-mjs/modelApi/editing/normalizeTable.js.map +1 -1
- package/lib-mjs/modelToDom/handlers/handleImage.js +1 -1
- package/lib-mjs/modelToDom/handlers/handleImage.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,6 +4,11 @@ import type { ElementProcessor, MarginFormat, PaddingFormat } from 'roosterjs-co
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const ContextStyles: (keyof (MarginFormat & PaddingFormat))[];
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Content Model Element Processor for format container elements (e.g., blockquote, div)
|
|
8
|
+
* Processes elements that create FormatContainer blocks in the content model.
|
|
9
|
+
* This processor can be used in processorOverride to customize how specific elements are processed.
|
|
10
|
+
* @param group The parent block group
|
|
11
|
+
* @param element The DOM element to process
|
|
12
|
+
* @param context DOM to Content Model context
|
|
8
13
|
*/
|
|
9
14
|
export declare const formatContainerProcessor: ElementProcessor<HTMLElement>;
|
|
@@ -19,7 +19,12 @@ exports.ContextStyles = [
|
|
|
19
19
|
'paddingRight',
|
|
20
20
|
];
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Content Model Element Processor for format container elements (e.g., blockquote, div)
|
|
23
|
+
* Processes elements that create FormatContainer blocks in the content model.
|
|
24
|
+
* This processor can be used in processorOverride to customize how specific elements are processed.
|
|
25
|
+
* @param group The parent block group
|
|
26
|
+
* @param element The DOM element to process
|
|
27
|
+
* @param context DOM to Content Model context
|
|
23
28
|
*/
|
|
24
29
|
var formatContainerProcessor = function (group, element, context) {
|
|
25
30
|
(0, stackFormat_1.stackFormat)(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatContainerProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts"],"names":[],"mappings":";;;;AAAA,2DAA0D;AAC1D,uFAAsF;AACtF,2EAA0E;AAC1E,4DAA2D;AAC3D,oDAAmD;AACnD,wFAAuF;AACvF,oDAAmD;AAUnD;;GAEG;AACU,QAAA,aAAa,GAA6C;IACnE,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;CACjB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"formatContainerProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { createFormatContainer } from '../../modelApi/creators/createFormatContainer';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { getDefaultStyle } from '../utils/getDefaultStyle';\nimport { parseFormat } from '../utils/parseFormat';\nimport { setParagraphNotImplicit } from '../../modelApi/block/setParagraphNotImplicit';\nimport { stackFormat } from '../utils/stackFormat';\nimport type {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n ContentModelParagraph,\n ElementProcessor,\n MarginFormat,\n PaddingFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const ContextStyles: (keyof (MarginFormat & PaddingFormat))[] = [\n 'marginLeft',\n 'marginRight',\n 'paddingLeft',\n 'paddingRight',\n];\n\n/**\n * Content Model Element Processor for format container elements (e.g., blockquote, div)\n * Processes elements that create FormatContainer blocks in the content model.\n * This processor can be used in processorOverride to customize how specific elements are processed.\n * @param group The parent block group\n * @param element The DOM element to process\n * @param context DOM to Content Model context\n */\nexport const formatContainerProcessor: ElementProcessor<HTMLElement> = (\n group,\n element,\n context\n) => {\n stackFormat(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, () => {\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n\n const format: ContentModelFormatContainerFormat = {\n ...context.blockFormat,\n };\n\n parseFormat(element, context.formatParsers.container, format, context);\n\n const tagName =\n getDefaultStyle(element).display == 'block' ? element.tagName.toLowerCase() : 'div';\n const formatContainer = createFormatContainer(tagName, format);\n\n // It is possible to inherit margin left/right styles from parent DIV or other containers,\n // since we are going into a deeper level of format container now,\n // the container will render these styles so no need to keep them in context format\n ContextStyles.forEach(style => {\n delete context.blockFormat[style];\n });\n\n context.elementProcessors.child(formatContainer, element, context);\n\n if (element.style.fontSize && parseInt(element.style.fontSize) == 0) {\n formatContainer.zeroFontSize = true;\n }\n\n if (shouldFallbackToParagraph(formatContainer)) {\n // For DIV container that only has one paragraph child, container style can be merged into paragraph\n // and no need to have this container\n const paragraph = formatContainer.blocks[0] as ContentModelParagraph;\n\n if (formatContainer.zeroFontSize) {\n paragraph.segmentFormat = Object.assign({}, paragraph.segmentFormat, {\n fontSize: '0',\n });\n }\n\n Object.assign(paragraph.format, formatContainer.format);\n setParagraphNotImplicit(paragraph);\n addBlock(group, paragraph);\n } else {\n addBlock(group, formatContainer);\n }\n });\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n\nfunction shouldFallbackToParagraph(formatContainer: ContentModelFormatContainer) {\n const firstChild = formatContainer.blocks[0];\n\n return (\n formatContainer.tagName == 'div' &&\n formatContainer.blocks.length == 1 &&\n firstChild.blockType == 'Paragraph' &&\n firstChild.isImplicit\n );\n}\n"]}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import type { DarkColorHandler } from 'roosterjs-content-model-types';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for controlling which elements and styles undergo color transformation.
|
|
4
|
+
* By default, text and background colors are transformed for all elements.
|
|
5
|
+
*/
|
|
6
|
+
export interface TransformColorOptions {
|
|
7
|
+
tableBorders: boolean;
|
|
8
|
+
}
|
|
2
9
|
/**
|
|
3
10
|
* Edit and transform color of elements between light mode and dark mode
|
|
11
|
+
* By default, text and background colors are transformed for all elements.
|
|
4
12
|
* @param rootNode The root DOM node to transform
|
|
5
13
|
* @param includeSelf True to transform the root node as well, otherwise false
|
|
6
14
|
* @param direction To specify the transform direction, light to dark, or dark to light
|
|
7
15
|
* @param darkColorHandler The dark color handler object to help do color transformation
|
|
16
|
+
* @param transformColorOptions Configuration options for controlling which elements and styles undergo color transformation.
|
|
8
17
|
*/
|
|
9
|
-
export declare function transformColor(rootNode: Node, includeSelf: boolean, direction: 'lightToDark' | 'darkToLight', darkColorHandler?: DarkColorHandler): void;
|
|
18
|
+
export declare function transformColor(rootNode: Node, includeSelf: boolean, direction: 'lightToDark' | 'darkToLight', darkColorHandler?: DarkColorHandler, transformColorOptions?: TransformColorOptions): void;
|
|
@@ -1,25 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformColor = void 0;
|
|
4
|
+
var borderKeys_1 = require("../../formatHandlers/utils/borderKeys");
|
|
5
|
+
var isElementOfType_1 = require("../isElementOfType");
|
|
4
6
|
var color_1 = require("../../formatHandlers/utils/color");
|
|
5
7
|
/**
|
|
6
8
|
* Edit and transform color of elements between light mode and dark mode
|
|
9
|
+
* By default, text and background colors are transformed for all elements.
|
|
7
10
|
* @param rootNode The root DOM node to transform
|
|
8
11
|
* @param includeSelf True to transform the root node as well, otherwise false
|
|
9
12
|
* @param direction To specify the transform direction, light to dark, or dark to light
|
|
10
13
|
* @param darkColorHandler The dark color handler object to help do color transformation
|
|
14
|
+
* @param transformColorOptions Configuration options for controlling which elements and styles undergo color transformation.
|
|
11
15
|
*/
|
|
12
|
-
function transformColor(rootNode, includeSelf, direction, darkColorHandler) {
|
|
16
|
+
function transformColor(rootNode, includeSelf, direction, darkColorHandler, transformColorOptions) {
|
|
13
17
|
var toDarkMode = direction == 'lightToDark';
|
|
18
|
+
var tableBorders = (transformColorOptions === null || transformColorOptions === void 0 ? void 0 : transformColorOptions.tableBorders) || false;
|
|
14
19
|
var transformer = function (element) {
|
|
15
20
|
var textColor = (0, color_1.getColor)(element, false /*isBackground*/, !toDarkMode, darkColorHandler);
|
|
16
21
|
var backColor = (0, color_1.getColor)(element, true /*isBackground*/, !toDarkMode, darkColorHandler);
|
|
17
22
|
(0, color_1.setColor)(element, textColor, false /*isBackground*/, toDarkMode, darkColorHandler);
|
|
18
23
|
(0, color_1.setColor)(element, backColor, true /*isBackground*/, toDarkMode, darkColorHandler);
|
|
24
|
+
if (tableBorders) {
|
|
25
|
+
transformBorderColor(element, toDarkMode, darkColorHandler);
|
|
26
|
+
}
|
|
19
27
|
};
|
|
20
28
|
iterateElements(rootNode, transformer, includeSelf);
|
|
21
29
|
}
|
|
22
30
|
exports.transformColor = transformColor;
|
|
31
|
+
function transformBorderColor(element, toDarkMode, darkColorHandler) {
|
|
32
|
+
if ((0, isElementOfType_1.isElementOfType)(element, 'td') || (0, isElementOfType_1.isElementOfType)(element, 'th')) {
|
|
33
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
34
|
+
var borderColorProperty = borderKeys_1.BorderColorKeyMap[key];
|
|
35
|
+
var style = element.style.getPropertyValue(borderColorProperty);
|
|
36
|
+
if (style) {
|
|
37
|
+
var lightColor = (0, color_1.getLightModeColor)(style, !toDarkMode, darkColorHandler);
|
|
38
|
+
if (lightColor) {
|
|
39
|
+
var transformedColor = (0, color_1.adaptColor)(element, lightColor, 'border', toDarkMode, darkColorHandler);
|
|
40
|
+
if (transformedColor) {
|
|
41
|
+
element.style.setProperty(borderColorProperty, transformedColor);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
23
48
|
function iterateElements(root, transformer, includeSelf) {
|
|
24
49
|
if (includeSelf && isHTMLElement(root)) {
|
|
25
50
|
transformer(root);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformColor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"transformColor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts"],"names":[],"mappings":"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","sourcesContent":["import { BorderColorKeyMap, BorderKeys } from '../../formatHandlers/utils/borderKeys';\nimport { isElementOfType } from '../isElementOfType';\nimport {\n adaptColor,\n getColor,\n getLightModeColor,\n setColor,\n} from '../../formatHandlers/utils/color';\nimport type { DarkColorHandler } from 'roosterjs-content-model-types';\n\n/**\n * Configuration options for controlling which elements and styles undergo color transformation.\n * By default, text and background colors are transformed for all elements.\n */\nexport interface TransformColorOptions {\n tableBorders: boolean;\n}\n\n/**\n * Edit and transform color of elements between light mode and dark mode\n * By default, text and background colors are transformed for all elements.\n * @param rootNode The root DOM node to transform\n * @param includeSelf True to transform the root node as well, otherwise false\n * @param direction To specify the transform direction, light to dark, or dark to light\n * @param darkColorHandler The dark color handler object to help do color transformation\n * @param transformColorOptions Configuration options for controlling which elements and styles undergo color transformation.\n */\nexport function transformColor(\n rootNode: Node,\n includeSelf: boolean,\n direction: 'lightToDark' | 'darkToLight',\n darkColorHandler?: DarkColorHandler,\n transformColorOptions?: TransformColorOptions\n) {\n const toDarkMode = direction == 'lightToDark';\n const tableBorders = transformColorOptions?.tableBorders || false;\n const transformer = (element: HTMLElement) => {\n const textColor = getColor(element, false /*isBackground*/, !toDarkMode, darkColorHandler);\n const backColor = getColor(element, true /*isBackground*/, !toDarkMode, darkColorHandler);\n\n setColor(element, textColor, false /*isBackground*/, toDarkMode, darkColorHandler);\n setColor(element, backColor, true /*isBackground*/, toDarkMode, darkColorHandler);\n\n if (tableBorders) {\n transformBorderColor(element, toDarkMode, darkColorHandler);\n }\n };\n\n iterateElements(rootNode, transformer, includeSelf);\n}\n\nfunction transformBorderColor(\n element: HTMLElement,\n toDarkMode: boolean,\n darkColorHandler?: DarkColorHandler\n) {\n if (isElementOfType(element, 'td') || isElementOfType(element, 'th')) {\n BorderKeys.forEach(key => {\n const borderColorProperty = BorderColorKeyMap[key];\n const style = element.style.getPropertyValue(borderColorProperty);\n if (style) {\n const lightColor = getLightModeColor(style, !toDarkMode, darkColorHandler);\n if (lightColor) {\n const transformedColor = adaptColor(\n element,\n lightColor,\n 'border',\n toDarkMode,\n darkColorHandler\n );\n if (transformedColor) {\n element.style.setProperty(borderColorProperty, transformedColor);\n }\n }\n }\n });\n }\n}\n\nfunction iterateElements(\n root: Node,\n transformer: (element: HTMLElement) => void,\n includeSelf?: boolean\n) {\n if (includeSelf && isHTMLElement(root)) {\n transformer(root);\n }\n\n for (let child = root.firstChild; child; child = child.nextSibling) {\n if (isHTMLElement(child)) {\n transformer(child);\n }\n\n iterateElements(child, transformer);\n }\n}\n\n// This is not a strict check, we just need to make sure this element has style so that we can set style to it\n// We don't use safeInstanceOf() here since this function will be called very frequently when extract html content\n// in dark mode, so we need to make sure this check is fast enough\nfunction isHTMLElement(node: Node): node is HTMLElement {\n const htmlElement = <HTMLElement>node;\n return node.nodeType == Node.ELEMENT_NODE && !!htmlElement.style;\n}\n"]}
|
|
@@ -11,30 +11,14 @@ exports.textAlignFormatHandler = {
|
|
|
11
11
|
var _a;
|
|
12
12
|
directionFormatHandler_1.directionFormatHandler.parse(format, element, context, defaultStyle);
|
|
13
13
|
var textAlign = element.style.textAlign || defaultStyle.textAlign;
|
|
14
|
-
if (element.
|
|
15
|
-
((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) === 'flex' &&
|
|
16
|
-
element.parentElement.style.flexDirection === 'column' &&
|
|
17
|
-
element.style.alignSelf) {
|
|
18
|
-
// For LI element with flex style applied, we use its "align-self" style value instead since LI has a different implementation for align
|
|
19
|
-
textAlign = element.style.alignSelf;
|
|
20
|
-
}
|
|
21
|
-
if (textAlign) {
|
|
14
|
+
if (textAlign && ((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) !== 'flex') {
|
|
22
15
|
format.textAlign = (0, dir_1.calcAlign)(textAlign, format.direction);
|
|
23
16
|
}
|
|
24
17
|
},
|
|
25
18
|
apply: function (format, element) {
|
|
26
19
|
var dir = format.direction == 'rtl' ? 'rtl' : 'ltr';
|
|
27
20
|
if (format.textAlign) {
|
|
28
|
-
|
|
29
|
-
var parentTag = parent_1 === null || parent_1 === void 0 ? void 0 : parent_1.tagName;
|
|
30
|
-
if (element.tagName == 'LI' && parent_1 && (parentTag == 'OL' || parentTag == 'UL')) {
|
|
31
|
-
element.style.alignSelf = format.textAlign;
|
|
32
|
-
element.parentElement.style.flexDirection = 'column';
|
|
33
|
-
element.parentElement.style.display = 'flex';
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
element.style.textAlign = dir_1.ResultMap[format.textAlign][dir];
|
|
37
|
-
}
|
|
21
|
+
element.style.textAlign = dir_1.ResultMap[format.textAlign][dir];
|
|
38
22
|
}
|
|
39
23
|
},
|
|
40
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textAlignFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts"],"names":[],"mappings":";;;AAAA,oCAAoD;AACpD,mEAAkE;AAIlE;;GAEG;AACU,QAAA,sBAAsB,GAAqD;IACpF,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,
|
|
1
|
+
{"version":3,"file":"textAlignFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts"],"names":[],"mappings":";;;AAAA,oCAAoD;AACpD,mEAAkE;AAIlE;;GAEG;AACU,QAAA,sBAAsB,GAAqD;IACpF,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,IAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;QAEpE,IAAI,SAAS,IAAI,CAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,KAAK,CAAC,OAAO,MAAK,MAAM,EAAE;YAC9D,MAAM,CAAC,SAAS,GAAG,IAAA,eAAS,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;SAC7D;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAM,GAAG,GAAkB,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAErE,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,eAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9D;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { calcAlign, ResultMap } from '../utils/dir';\nimport { directionFormatHandler } from './directionFormatHandler';\nimport type { DirectionFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const textAlignFormatHandler: FormatHandler<DirectionFormat & TextAlignFormat> = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n const textAlign = element.style.textAlign || defaultStyle.textAlign;\n\n if (textAlign && element.parentElement?.style.display !== 'flex') {\n format.textAlign = calcAlign(textAlign, format.direction);\n }\n },\n apply: (format, element) => {\n const dir: 'ltr' | 'rtl' = format.direction == 'rtl' ? 'rtl' : 'ltr';\n\n if (format.textAlign) {\n element.style.textAlign = ResultMap[format.textAlign][dir];\n }\n },\n};\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.borderColorFormatHandler = void 0;
|
|
4
|
+
var color_1 = require("../utils/color");
|
|
5
|
+
var borderKeys_1 = require("../utils/borderKeys");
|
|
6
|
+
var borderValues_1 = require("../../domUtils/style/borderValues");
|
|
7
|
+
/**
|
|
8
|
+
* Keys of border width
|
|
9
|
+
*/
|
|
10
|
+
var BorderWidthKeyMap = {
|
|
11
|
+
borderTop: 'border-top-width',
|
|
12
|
+
borderRight: 'border-right-width',
|
|
13
|
+
borderBottom: 'border-bottom-width',
|
|
14
|
+
borderLeft: 'border-left-width',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Keys of border styles
|
|
18
|
+
*/
|
|
19
|
+
var BorderStyleKeyMap = {
|
|
20
|
+
borderTop: 'border-top-style',
|
|
21
|
+
borderRight: 'border-right-style',
|
|
22
|
+
borderBottom: 'border-bottom-style',
|
|
23
|
+
borderLeft: 'border-left-style',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
exports.borderColorFormatHandler = {
|
|
29
|
+
parse: function (format, element, context) {
|
|
30
|
+
if (context.experimentalFeatures &&
|
|
31
|
+
context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1) {
|
|
32
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
33
|
+
var width = element.style.getPropertyValue(BorderWidthKeyMap[key]);
|
|
34
|
+
var style = element.style.getPropertyValue(BorderStyleKeyMap[key]);
|
|
35
|
+
var borderColor = (0, color_1.retrieveElementColor)(element, key);
|
|
36
|
+
if (borderColor) {
|
|
37
|
+
var lightModeColor = (0, color_1.getLightModeColor)(borderColor, !!context.isDarkMode, context.darkColorHandler);
|
|
38
|
+
format[key] = (0, borderValues_1.combineBorderValue)({
|
|
39
|
+
width: width,
|
|
40
|
+
style: style,
|
|
41
|
+
color: lightModeColor,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
apply: function (format, element, context) {
|
|
48
|
+
if (context.experimentalFeatures &&
|
|
49
|
+
context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1) {
|
|
50
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
51
|
+
var value = format[key];
|
|
52
|
+
if (value) {
|
|
53
|
+
var borderValues = (0, borderValues_1.extractBorderValues)(value);
|
|
54
|
+
if (borderValues.color) {
|
|
55
|
+
var transformedColor = (0, color_1.adaptColor)(element, borderValues.color, 'border', !!context.isDarkMode, context.darkColorHandler);
|
|
56
|
+
if (transformedColor) {
|
|
57
|
+
var borderColorProperty = borderKeys_1.BorderColorKeyMap[key];
|
|
58
|
+
element.style.setProperty(borderColorProperty, transformedColor);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=borderColorFormatHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderColorFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderColorFormatHandler.ts"],"names":[],"mappings":";;;AAAA,wCAAqF;AACrF,kDAAoE;AACpE,kEAA4F;AAI5F;;GAEG;AACH,IAAM,iBAAiB,GAEnB;IACA,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,mBAAmB;CAClC,CAAC;AAEF;;GAEG;AACH,IAAM,iBAAiB,GAEnB;IACA,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,mBAAmB;CAClC,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAgC;IACjE,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO;QAC5B,IACI,OAAO,CAAC,oBAAoB;YAC5B,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,EACzE;YACE,uBAAU,CAAC,OAAO,CAAC,UAAA,GAAG;gBAClB,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrE,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrE,IAAM,WAAW,GAAG,IAAA,4BAAoB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAEvD,IAAI,WAAW,EAAE;oBACb,IAAM,cAAc,GAAG,IAAA,yBAAiB,EACpC,WAAW,EACX,CAAC,CAAC,OAAO,CAAC,UAAU,EACpB,OAAO,CAAC,gBAAgB,CAC3B,CAAC;oBAEF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,iCAAkB,EAAC;wBAC7B,KAAK,OAAA;wBACL,KAAK,OAAA;wBACL,KAAK,EAAE,cAAc;qBACxB,CAAC,CAAC;iBACN;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO;QAC5B,IACI,OAAO,CAAC,oBAAoB;YAC5B,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,EACzE;YACE,uBAAU,CAAC,OAAO,CAAC,UAAA,GAAG;gBAClB,IAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,KAAK,EAAE;oBACP,IAAM,YAAY,GAAG,IAAA,kCAAmB,EAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,YAAY,CAAC,KAAK,EAAE;wBACpB,IAAM,gBAAgB,GAAG,IAAA,kBAAU,EAC/B,OAAO,EACP,YAAY,CAAC,KAAK,EAClB,QAAQ,EACR,CAAC,CAAC,OAAO,CAAC,UAAU,EACpB,OAAO,CAAC,gBAAgB,CAC3B,CAAC;wBACF,IAAI,gBAAgB,EAAE;4BAClB,IAAM,mBAAmB,GAAG,8BAAiB,CAAC,GAAG,CAAC,CAAC;4BACnD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;yBACpE;qBACJ;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { adaptColor, getLightModeColor, retrieveElementColor } from '../utils/color';\nimport { BorderColorKeyMap, BorderKeys } from '../utils/borderKeys';\nimport { combineBorderValue, extractBorderValues } from '../../domUtils/style/borderValues';\nimport type { BorderFormat, BorderKey } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n/**\n * Keys of border width\n */\nconst BorderWidthKeyMap: {\n [key in BorderKey]: string;\n} = {\n borderTop: 'border-top-width',\n borderRight: 'border-right-width',\n borderBottom: 'border-bottom-width',\n borderLeft: 'border-left-width',\n};\n\n/**\n * Keys of border styles\n */\nconst BorderStyleKeyMap: {\n [key in BorderKey]: string;\n} = {\n borderTop: 'border-top-style',\n borderRight: 'border-right-style',\n borderBottom: 'border-bottom-style',\n borderLeft: 'border-left-style',\n};\n\n/**\n * @internal\n */\nexport const borderColorFormatHandler: FormatHandler<BorderFormat> = {\n parse: (format, element, context) => {\n if (\n context.experimentalFeatures &&\n context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1\n ) {\n BorderKeys.forEach(key => {\n const width = element.style.getPropertyValue(BorderWidthKeyMap[key]);\n const style = element.style.getPropertyValue(BorderStyleKeyMap[key]);\n const borderColor = retrieveElementColor(element, key);\n\n if (borderColor) {\n const lightModeColor = getLightModeColor(\n borderColor,\n !!context.isDarkMode,\n context.darkColorHandler\n );\n\n format[key] = combineBorderValue({\n width,\n style,\n color: lightModeColor,\n });\n }\n });\n }\n },\n apply: (format, element, context) => {\n if (\n context.experimentalFeatures &&\n context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1\n ) {\n BorderKeys.forEach(key => {\n const value = format[key];\n if (value) {\n const borderValues = extractBorderValues(value);\n if (borderValues.color) {\n const transformedColor = adaptColor(\n element,\n borderValues.color,\n 'border',\n !!context.isDarkMode,\n context.darkColorHandler\n );\n if (transformedColor) {\n const borderColorProperty = BorderColorKeyMap[key];\n element.style.setProperty(borderColorProperty, transformedColor);\n }\n }\n }\n });\n }\n },\n};\n"]}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import type { BorderFormat } from 'roosterjs-content-model-types';
|
|
2
2
|
import type { FormatHandler } from '../FormatHandler';
|
|
3
|
-
/**
|
|
4
|
-
* Keys of border items
|
|
5
|
-
*/
|
|
6
|
-
export declare const BorderKeys: (keyof BorderFormat & keyof CSSStyleDeclaration)[];
|
|
7
3
|
/**
|
|
8
4
|
* @internal
|
|
9
5
|
*/
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.borderFormatHandler =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
exports.BorderKeys = [
|
|
8
|
-
'borderTop',
|
|
9
|
-
'borderRight',
|
|
10
|
-
'borderBottom',
|
|
11
|
-
'borderLeft',
|
|
12
|
-
];
|
|
3
|
+
exports.borderFormatHandler = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var borderKeys_1 = require("../utils/borderKeys");
|
|
13
6
|
// This array needs to match BorderKeys array
|
|
14
7
|
var BorderWidthKeys = [
|
|
15
8
|
'borderTopWidth',
|
|
@@ -23,13 +16,13 @@ var BorderRadiusKeys = [
|
|
|
23
16
|
'borderBottomLeftRadius',
|
|
24
17
|
'borderBottomRightRadius',
|
|
25
18
|
];
|
|
26
|
-
var AllKeys =
|
|
19
|
+
var AllKeys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(borderKeys_1.BorderKeys), false), (0, tslib_1.__read)(BorderRadiusKeys), false);
|
|
27
20
|
/**
|
|
28
21
|
* @internal
|
|
29
22
|
*/
|
|
30
23
|
exports.borderFormatHandler = {
|
|
31
24
|
parse: function (format, element, _, defaultStyle) {
|
|
32
|
-
|
|
25
|
+
borderKeys_1.BorderKeys.forEach(function (key, i) {
|
|
33
26
|
var _a;
|
|
34
27
|
var value = element.style[key];
|
|
35
28
|
var defaultWidth = (_a = defaultStyle[BorderWidthKeys[i]]) !== null && _a !== void 0 ? _a : '0px';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"borderFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"borderFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts"],"names":[],"mappings":";;;;AAAA,kDAAiD;AAIjD,6CAA6C;AAC7C,IAAM,eAAe,GAAkC;IACnD,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,iBAAiB;CACpB,CAAC;AAEF,IAAM,gBAAgB,GAAuD;IACzE,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,yBAAyB;CAC5B,CAAC;AAEF,IAAM,OAAO,iFAAO,uBAAU,+BAAK,gBAAgB,SAAC,CAAC;AAErD;;GAEG;AACU,QAAA,mBAAmB,GAAgC;IAC5D,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY;QACpC,uBAAU,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,CAAC;;YACtB,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,IAAM,YAAY,GAAG,MAAA,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,mCAAI,KAAK,CAAC;YAC/D,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9C,IAAI,KAAK,IAAI,GAAG,EAAE;gBACd,KAAK,GAAG,KAAK,CAAC;aACjB;YAED,IAAI,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE;gBAChC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC;QAEH,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;QAEhD,IAAI,YAAY,EAAE;YACd,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;SACtC;aAAM;YACH,gBAAgB,CAAC,OAAO,CAAC,UAAA,GAAG;gBACxB,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEjC,IAAI,KAAK,EAAE;oBACP,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACvB;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;YACf,IAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SACpD;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { BorderKeys } from '../utils/borderKeys';\nimport type { BorderFormat } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n// This array needs to match BorderKeys array\nconst BorderWidthKeys: (keyof CSSStyleDeclaration)[] = [\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n];\n\nconst BorderRadiusKeys: (keyof BorderFormat & keyof CSSStyleDeclaration)[] = [\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n];\n\nconst AllKeys = [...BorderKeys, ...BorderRadiusKeys];\n\n/**\n * @internal\n */\nexport const borderFormatHandler: FormatHandler<BorderFormat> = {\n parse: (format, element, _, defaultStyle) => {\n BorderKeys.forEach((key, i) => {\n const value = element.style[key];\n const defaultWidth = defaultStyle[BorderWidthKeys[i]] ?? '0px';\n let width = element.style[BorderWidthKeys[i]];\n\n if (width == '0') {\n width = '0px';\n }\n\n if (value && width != defaultWidth) {\n format[key] = value == 'none' ? '' : value;\n }\n });\n\n const borderRadius = element.style.borderRadius;\n\n if (borderRadius) {\n format.borderRadius = borderRadius;\n } else {\n BorderRadiusKeys.forEach(key => {\n const value = element.style[key];\n\n if (value) {\n format[key] = value;\n }\n });\n }\n },\n apply: (format, element) => {\n AllKeys.forEach(key => {\n const value = format[key];\n\n if (value) {\n element.style[key] = value;\n }\n });\n\n if (format.borderRadius) {\n element.style.borderRadius = format.borderRadius;\n }\n },\n};\n"]}
|
|
@@ -6,6 +6,7 @@ var ariaFormatHandler_1 = require("./common/ariaFormatHandler");
|
|
|
6
6
|
var backgroundColorFormatHandler_1 = require("./common/backgroundColorFormatHandler");
|
|
7
7
|
var boldFormatHandler_1 = require("./segment/boldFormatHandler");
|
|
8
8
|
var borderBoxFormatHandler_1 = require("./common/borderBoxFormatHandler");
|
|
9
|
+
var borderColorFormatHandler_1 = require("./common/borderColorFormatHandler");
|
|
9
10
|
var borderFormatHandler_1 = require("./common/borderFormatHandler");
|
|
10
11
|
var boxShadowFormatHandler_1 = require("./common/boxShadowFormatHandler");
|
|
11
12
|
var datasetFormatHandler_1 = require("./common/datasetFormatHandler");
|
|
@@ -20,9 +21,11 @@ var htmlAlignFormatHandler_1 = require("./block/htmlAlignFormatHandler");
|
|
|
20
21
|
var idFormatHandler_1 = require("./common/idFormatHandler");
|
|
21
22
|
var imageStateFormatHandler_1 = require("./segment/imageStateFormatHandler");
|
|
22
23
|
var italicFormatHandler_1 = require("./segment/italicFormatHandler");
|
|
24
|
+
var legacyTableBorderFormatHandler_1 = require("./table/legacyTableBorderFormatHandler");
|
|
23
25
|
var letterSpacingFormatHandler_1 = require("./segment/letterSpacingFormatHandler");
|
|
24
26
|
var lineHeightFormatHandler_1 = require("./block/lineHeightFormatHandler");
|
|
25
27
|
var linkFormatHandler_1 = require("./segment/linkFormatHandler");
|
|
28
|
+
var listItemAlignFormatHandler_1 = require("./list/listItemAlignFormatHandler");
|
|
26
29
|
var listItemThreadFormatHandler_1 = require("./list/listItemThreadFormatHandler");
|
|
27
30
|
var listLevelThreadFormatHandler_1 = require("./list/listLevelThreadFormatHandler");
|
|
28
31
|
var listStyleFormatHandler_1 = require("./list/listStyleFormatHandler");
|
|
@@ -49,6 +52,7 @@ var defaultFormatHandlerMap = {
|
|
|
49
52
|
bold: boldFormatHandler_1.boldFormatHandler,
|
|
50
53
|
border: borderFormatHandler_1.borderFormatHandler,
|
|
51
54
|
borderBox: borderBoxFormatHandler_1.borderBoxFormatHandler,
|
|
55
|
+
borderColor: borderColorFormatHandler_1.borderColorFormatHandler,
|
|
52
56
|
boxShadow: boxShadowFormatHandler_1.boxShadowFormatHandler,
|
|
53
57
|
dataset: datasetFormatHandler_1.datasetFormatHandler,
|
|
54
58
|
direction: directionFormatHandler_1.directionFormatHandler,
|
|
@@ -61,9 +65,11 @@ var defaultFormatHandlerMap = {
|
|
|
61
65
|
id: idFormatHandler_1.idFormatHandler,
|
|
62
66
|
imageState: imageStateFormatHandler_1.imageStateFormatHandler,
|
|
63
67
|
italic: italicFormatHandler_1.italicFormatHandler,
|
|
68
|
+
legacyTableBorder: legacyTableBorderFormatHandler_1.legacyTableBorderFormatHandler,
|
|
64
69
|
letterSpacing: letterSpacingFormatHandler_1.letterSpacingFormatHandler,
|
|
65
70
|
lineHeight: lineHeightFormatHandler_1.lineHeightFormatHandler,
|
|
66
71
|
link: linkFormatHandler_1.linkFormatHandler,
|
|
72
|
+
listItemAlign: listItemAlignFormatHandler_1.listItemAlignFormatHandler,
|
|
67
73
|
listItemThread: listItemThreadFormatHandler_1.listItemThreadFormatHandler,
|
|
68
74
|
listLevelThread: listLevelThreadFormatHandler_1.listLevelThreadFormatHandler,
|
|
69
75
|
listStyle: listStyleFormatHandler_1.listStyleFormatHandler,
|
|
@@ -117,13 +123,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
117
123
|
block: sharedBlockFormats,
|
|
118
124
|
listItemThread: ['listItemThread'],
|
|
119
125
|
listLevelThread: ['listLevelThread'],
|
|
120
|
-
listItemElement: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), [
|
|
121
|
-
'direction',
|
|
122
|
-
'textAlign',
|
|
123
|
-
'lineHeight',
|
|
124
|
-
'margin',
|
|
125
|
-
'listStyle',
|
|
126
|
-
], false),
|
|
126
|
+
listItemElement: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), ['listItemAlign', 'margin', 'listStyle'], false),
|
|
127
127
|
listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],
|
|
128
128
|
styleBasedSegment: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(styleBasedSegmentFormats), false), ['textColor', 'backgroundColor', 'lineHeight'], false),
|
|
129
129
|
elementBasedSegment: elementBasedSegmentFormats,
|
|
@@ -138,6 +138,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
138
138
|
], false),
|
|
139
139
|
tableCell: [
|
|
140
140
|
'border',
|
|
141
|
+
'borderColor',
|
|
141
142
|
'backgroundColor',
|
|
142
143
|
'padding',
|
|
143
144
|
'verticalAlign',
|
|
@@ -162,7 +163,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
162
163
|
'direction',
|
|
163
164
|
'role',
|
|
164
165
|
],
|
|
165
|
-
tableBorder: ['borderBox', 'tableSpacing'],
|
|
166
|
+
tableBorder: ['borderBox', 'tableSpacing', 'legacyTableBorder'],
|
|
166
167
|
tableCellBorder: ['borderBox'],
|
|
167
168
|
image: [
|
|
168
169
|
'id',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { ariaFormatHandler } from './common/ariaFormatHandler';\nimport { 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 { imageStateFormatHandler } from './segment/imageStateFormatHandler';\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 { roleFormatHandler } from './common/roleFormatHandler';\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 { undeletableLinkFormatHandler } from './segment/undeletableLinkFormatHandler';\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 aria: ariaFormatHandler,\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 imageState: imageStateFormatHandler,\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 role: roleFormatHandler,\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 undeletableLink: undeletableLinkFormatHandler,\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 'aria',\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n 'direction',\n 'role',\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 'imageState',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n 'undeletableLink',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display', 'id'],\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"]}
|
|
1
|
+
{"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { ariaFormatHandler } from './common/ariaFormatHandler';\nimport { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderColorFormatHandler } from './common/borderColorFormatHandler';\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 { imageStateFormatHandler } from './segment/imageStateFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { legacyTableBorderFormatHandler } from './table/legacyTableBorderFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemAlignFormatHandler } from './list/listItemAlignFormatHandler';\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 { roleFormatHandler } from './common/roleFormatHandler';\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 { undeletableLinkFormatHandler } from './segment/undeletableLinkFormatHandler';\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 aria: ariaFormatHandler,\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n borderColor: borderColorFormatHandler,\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 imageState: imageStateFormatHandler,\n italic: italicFormatHandler,\n legacyTableBorder: legacyTableBorderFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemAlign: listItemAlignFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStyle: listStyleFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n role: roleFormatHandler,\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 undeletableLink: undeletableLinkFormatHandler,\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: [...sharedBlockFormats, 'listItemAlign', 'margin', 'listStyle'],\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 'borderColor',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n tableColumn: ['size'],\n table: [\n 'aria',\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n 'direction',\n 'role',\n ],\n tableBorder: ['borderBox', 'tableSpacing', 'legacyTableBorder'],\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 'imageState',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n 'undeletableLink',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display', 'id'],\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"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listItemAlignFormatHandler = void 0;
|
|
4
|
+
var dir_1 = require("../utils/dir");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.listItemAlignFormatHandler = {
|
|
9
|
+
parse: function (format, element, context) {
|
|
10
|
+
var _a;
|
|
11
|
+
// For list, we usually use align-self to implement alignment
|
|
12
|
+
if (element.style.alignSelf) {
|
|
13
|
+
format.textAlign = (0, dir_1.calcAlign)(element.style.alignSelf, context.blockFormat.direction);
|
|
14
|
+
}
|
|
15
|
+
else if (element.style.textAlign && ((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) !== 'flex') {
|
|
16
|
+
var align = element.style.textAlign;
|
|
17
|
+
// For RTL environment, 'start' and 'end' in textAlign means opposite direction compared to LTR unless parent is using flex display
|
|
18
|
+
if (context.blockFormat.direction === 'rtl' && (align == 'start' || align == 'end')) {
|
|
19
|
+
align = align == 'start' ? 'end' : 'start';
|
|
20
|
+
}
|
|
21
|
+
format.textAlign = (0, dir_1.calcAlign)(align, context.blockFormat.direction);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
apply: function (format, element) {
|
|
25
|
+
if (format.textAlign) {
|
|
26
|
+
var parent_1 = element.parentElement;
|
|
27
|
+
element.style.alignSelf = format.textAlign;
|
|
28
|
+
// For list item we use align-self to implement textAlign rather than text-align
|
|
29
|
+
element.style.removeProperty('text-align');
|
|
30
|
+
if (parent_1) {
|
|
31
|
+
parent_1.style.flexDirection = 'column';
|
|
32
|
+
parent_1.style.display = 'flex';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=listItemAlignFormatHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listItemAlignFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemAlignFormatHandler.ts"],"names":[],"mappings":";;;AAAA,oCAAyC;AAIzC;;GAEG;AACU,QAAA,0BAA0B,GAAqD;IACxF,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO,EAAE,OAAO;;QAC5B,6DAA6D;QAC7D,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE;YACzB,MAAM,CAAC,SAAS,GAAG,IAAA,eAAS,EAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACxF;aAAM,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAA,MAAA,OAAO,CAAC,aAAa,0CAAE,KAAK,CAAC,OAAO,MAAK,MAAM,EAAE;YACnF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;YAEpC,mIAAmI;YACnI,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;gBACjF,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;aAC9C;YAED,MAAM,CAAC,SAAS,GAAG,IAAA,eAAS,EAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACtE;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,IAAM,QAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAErC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAE3C,gFAAgF;YAChF,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAE3C,IAAI,QAAM,EAAE;gBACR,QAAM,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;gBACtC,QAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;aACjC;SACJ;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { calcAlign } from '../utils/dir';\nimport type { DirectionFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const listItemAlignFormatHandler: FormatHandler<TextAlignFormat & DirectionFormat> = {\n parse: (format, element, context) => {\n // For list, we usually use align-self to implement alignment\n if (element.style.alignSelf) {\n format.textAlign = calcAlign(element.style.alignSelf, context.blockFormat.direction);\n } else if (element.style.textAlign && element.parentElement?.style.display !== 'flex') {\n let align = element.style.textAlign;\n\n // For RTL environment, 'start' and 'end' in textAlign means opposite direction compared to LTR unless parent is using flex display\n if (context.blockFormat.direction === 'rtl' && (align == 'start' || align == 'end')) {\n align = align == 'start' ? 'end' : 'start';\n }\n\n format.textAlign = calcAlign(align, context.blockFormat.direction);\n }\n },\n apply: (format, element) => {\n if (format.textAlign) {\n const parent = element.parentElement;\n\n element.style.alignSelf = format.textAlign;\n\n // For list item we use align-self to implement textAlign rather than text-align\n element.style.removeProperty('text-align');\n\n if (parent) {\n parent.style.flexDirection = 'column';\n parent.style.display = 'flex';\n }\n }\n },\n};\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.legacyTableBorderFormatHandler = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
exports.legacyTableBorderFormatHandler = {
|
|
8
|
+
parse: function (format, element) {
|
|
9
|
+
var border = element.getAttribute('border');
|
|
10
|
+
var cellSpacing = element.getAttribute('cellspacing');
|
|
11
|
+
var cellpadding = element.getAttribute('cellpadding');
|
|
12
|
+
if (border) {
|
|
13
|
+
format.legacyTableBorder = border;
|
|
14
|
+
}
|
|
15
|
+
if (cellSpacing) {
|
|
16
|
+
format.cellSpacing = cellSpacing;
|
|
17
|
+
}
|
|
18
|
+
if (cellpadding) {
|
|
19
|
+
format.cellPadding = cellpadding;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
apply: function (format, element) {
|
|
23
|
+
if (format.legacyTableBorder) {
|
|
24
|
+
element.setAttribute('border', format.legacyTableBorder);
|
|
25
|
+
}
|
|
26
|
+
if (format.cellSpacing) {
|
|
27
|
+
element.setAttribute('cellspacing', format.cellSpacing);
|
|
28
|
+
}
|
|
29
|
+
if (format.cellPadding) {
|
|
30
|
+
element.setAttribute('cellpadding', format.cellPadding);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=legacyTableBorderFormatHandler.js.map
|