modern-idoc 0.6.11 → 0.6.13
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/dist/index.cjs +35 -15
- package/dist/index.d.cts +5 -3
- package/dist/index.d.mts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +35 -16
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -1116,12 +1116,16 @@ function isCRLF(char) {
|
|
|
1116
1116
|
function normalizeCRLF(content) {
|
|
1117
1117
|
return content.replace(NORMALIZE_CRLF_RE, NORMALIZED_CRLF);
|
|
1118
1118
|
}
|
|
1119
|
+
function isEqualStyle(style1, style2) {
|
|
1120
|
+
const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(style1), ...Object.keys(style2)]));
|
|
1121
|
+
return !keys.length || keys.every((key) => style1[key] === style2[key]);
|
|
1122
|
+
}
|
|
1119
1123
|
function normalizeTextContent(value) {
|
|
1120
1124
|
const paragraphs = [];
|
|
1121
1125
|
function getParagraph() {
|
|
1122
1126
|
return paragraphs[paragraphs.length - 1] || addParagraph();
|
|
1123
1127
|
}
|
|
1124
|
-
function addParagraph(style) {
|
|
1128
|
+
function addParagraph(style = {}) {
|
|
1125
1129
|
let paragraph = paragraphs[paragraphs.length - 1];
|
|
1126
1130
|
if (paragraph?.fragments.length === 0) {
|
|
1127
1131
|
paragraph = { ...style, fragments: [] };
|
|
@@ -1132,47 +1136,62 @@ function normalizeTextContent(value) {
|
|
|
1132
1136
|
}
|
|
1133
1137
|
return paragraph;
|
|
1134
1138
|
}
|
|
1135
|
-
function addFragment(content, style) {
|
|
1139
|
+
function addFragment(content = "", style = {}) {
|
|
1136
1140
|
Array.from(content).forEach((c) => {
|
|
1137
1141
|
if (isCRLF(c)) {
|
|
1138
1142
|
const { fragments, ...pStyle } = getParagraph();
|
|
1139
1143
|
if (!fragments.length) {
|
|
1140
|
-
fragments.push({
|
|
1144
|
+
fragments.push({
|
|
1145
|
+
...style,
|
|
1146
|
+
content: NORMALIZED_CRLF
|
|
1147
|
+
});
|
|
1141
1148
|
}
|
|
1142
1149
|
addParagraph(pStyle);
|
|
1143
1150
|
} else {
|
|
1144
1151
|
const paragraph = getParagraph();
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1152
|
+
const fragment = paragraph.fragments[paragraph.fragments.length - 1];
|
|
1153
|
+
if (fragment) {
|
|
1154
|
+
const { content: content2, ...fStyle } = fragment;
|
|
1155
|
+
if (isEqualStyle(style, fStyle)) {
|
|
1156
|
+
fragment.content = `${content2}${c}`;
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1149
1159
|
}
|
|
1160
|
+
paragraph.fragments.push({
|
|
1161
|
+
...style,
|
|
1162
|
+
content: c
|
|
1163
|
+
});
|
|
1150
1164
|
}
|
|
1151
1165
|
});
|
|
1152
1166
|
}
|
|
1153
1167
|
const list = Array.isArray(value) ? value : [value];
|
|
1154
1168
|
list.forEach((p) => {
|
|
1155
1169
|
if (typeof p === "string") {
|
|
1170
|
+
addParagraph();
|
|
1156
1171
|
addFragment(p);
|
|
1157
1172
|
} else if ("content" in p) {
|
|
1158
|
-
|
|
1173
|
+
const { content, ...pStyle } = p;
|
|
1174
|
+
addParagraph(normalizeStyle(pStyle));
|
|
1175
|
+
addFragment(content);
|
|
1159
1176
|
} else if ("fragments" in p) {
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1177
|
+
const { fragments, ...pStyle } = p;
|
|
1178
|
+
addParagraph(normalizeStyle(pStyle));
|
|
1179
|
+
fragments.forEach((f) => {
|
|
1180
|
+
const { content, ...fStyle } = f;
|
|
1181
|
+
addFragment(content, normalizeStyle(fStyle));
|
|
1163
1182
|
});
|
|
1164
1183
|
} else if (Array.isArray(p)) {
|
|
1184
|
+
addParagraph();
|
|
1165
1185
|
p.forEach((f) => {
|
|
1166
1186
|
if (typeof f === "string") {
|
|
1167
1187
|
addFragment(f);
|
|
1168
1188
|
} else {
|
|
1169
|
-
|
|
1189
|
+
const { content, ...fStyle } = f;
|
|
1190
|
+
addFragment(content, normalizeStyle(fStyle));
|
|
1170
1191
|
}
|
|
1171
1192
|
});
|
|
1172
1193
|
} else {
|
|
1173
|
-
|
|
1174
|
-
fragments: []
|
|
1175
|
-
});
|
|
1194
|
+
console.warn("Failed to parse text content", p);
|
|
1176
1195
|
}
|
|
1177
1196
|
});
|
|
1178
1197
|
if (!getParagraph().fragments.length) {
|
|
@@ -1257,6 +1276,7 @@ exports.isCRLF = isCRLF;
|
|
|
1257
1276
|
exports.isColor = isColor;
|
|
1258
1277
|
exports.isColorFill = isColorFill;
|
|
1259
1278
|
exports.isColorFillObject = isColorFillObject;
|
|
1279
|
+
exports.isEqualStyle = isEqualStyle;
|
|
1260
1280
|
exports.isGradient = isGradient;
|
|
1261
1281
|
exports.isGradientFill = isGradientFill;
|
|
1262
1282
|
exports.isGradientFillObject = isGradientFillObject;
|
package/dist/index.d.cts
CHANGED
|
@@ -670,16 +670,18 @@ type TextContent = FlatTextContent | FlatTextContent[];
|
|
|
670
670
|
type NormalizedTextContent = ParagraphObject[];
|
|
671
671
|
interface NormalizedText {
|
|
672
672
|
content: NormalizedTextContent;
|
|
673
|
+
style?: StyleObject;
|
|
673
674
|
effects?: StyleObject[];
|
|
674
675
|
measureDom?: any;
|
|
675
676
|
fonts?: any;
|
|
676
677
|
}
|
|
677
|
-
type Text = string |
|
|
678
|
+
type Text = string | (Omit<NormalizedText, 'content'> & {
|
|
678
679
|
content: TextContent;
|
|
679
|
-
})
|
|
680
|
+
});
|
|
680
681
|
declare function hasCRLF(content: string): boolean;
|
|
681
682
|
declare function isCRLF(char: string): boolean;
|
|
682
683
|
declare function normalizeCRLF(content: string): string;
|
|
684
|
+
declare function isEqualStyle(style1: Record<string, any>, style2: Record<string, any>): boolean;
|
|
683
685
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
684
686
|
declare function normalizeText(value: Text): NormalizedText;
|
|
685
687
|
declare function textContentToString(value: TextContent): string;
|
|
@@ -733,5 +735,5 @@ declare function round(number: number, digits?: number, base?: number): number;
|
|
|
733
735
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
734
736
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
735
737
|
|
|
736
|
-
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
738
|
+
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
737
739
|
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
|
package/dist/index.d.mts
CHANGED
|
@@ -670,16 +670,18 @@ type TextContent = FlatTextContent | FlatTextContent[];
|
|
|
670
670
|
type NormalizedTextContent = ParagraphObject[];
|
|
671
671
|
interface NormalizedText {
|
|
672
672
|
content: NormalizedTextContent;
|
|
673
|
+
style?: StyleObject;
|
|
673
674
|
effects?: StyleObject[];
|
|
674
675
|
measureDom?: any;
|
|
675
676
|
fonts?: any;
|
|
676
677
|
}
|
|
677
|
-
type Text = string |
|
|
678
|
+
type Text = string | (Omit<NormalizedText, 'content'> & {
|
|
678
679
|
content: TextContent;
|
|
679
|
-
})
|
|
680
|
+
});
|
|
680
681
|
declare function hasCRLF(content: string): boolean;
|
|
681
682
|
declare function isCRLF(char: string): boolean;
|
|
682
683
|
declare function normalizeCRLF(content: string): string;
|
|
684
|
+
declare function isEqualStyle(style1: Record<string, any>, style2: Record<string, any>): boolean;
|
|
683
685
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
684
686
|
declare function normalizeText(value: Text): NormalizedText;
|
|
685
687
|
declare function textContentToString(value: TextContent): string;
|
|
@@ -733,5 +735,5 @@ declare function round(number: number, digits?: number, base?: number): number;
|
|
|
733
735
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
734
736
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
735
737
|
|
|
736
|
-
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
738
|
+
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
737
739
|
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
|
package/dist/index.d.ts
CHANGED
|
@@ -670,16 +670,18 @@ type TextContent = FlatTextContent | FlatTextContent[];
|
|
|
670
670
|
type NormalizedTextContent = ParagraphObject[];
|
|
671
671
|
interface NormalizedText {
|
|
672
672
|
content: NormalizedTextContent;
|
|
673
|
+
style?: StyleObject;
|
|
673
674
|
effects?: StyleObject[];
|
|
674
675
|
measureDom?: any;
|
|
675
676
|
fonts?: any;
|
|
676
677
|
}
|
|
677
|
-
type Text = string |
|
|
678
|
+
type Text = string | (Omit<NormalizedText, 'content'> & {
|
|
678
679
|
content: TextContent;
|
|
679
|
-
})
|
|
680
|
+
});
|
|
680
681
|
declare function hasCRLF(content: string): boolean;
|
|
681
682
|
declare function isCRLF(char: string): boolean;
|
|
682
683
|
declare function normalizeCRLF(content: string): string;
|
|
684
|
+
declare function isEqualStyle(style1: Record<string, any>, style2: Record<string, any>): boolean;
|
|
683
685
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
684
686
|
declare function normalizeText(value: Text): NormalizedText;
|
|
685
687
|
declare function textContentToString(value: TextContent): string;
|
|
@@ -733,5 +735,5 @@ declare function round(number: number, digits?: number, base?: number): number;
|
|
|
733
735
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
734
736
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
735
737
|
|
|
736
|
-
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
738
|
+
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
737
739
|
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(o,N){typeof exports=="object"&&typeof module<"u"?N(exports):typeof define=="function"&&define.amd?define(["exports"],N):(o=typeof globalThis<"u"?globalThis:o||self,N(o.modernIdoc={}))})(this,function(o){"use strict";function N(t){return typeof t=="string"?{src:t}:t}var tn={grad:.9,turn:360,rad:360/(2*Math.PI)},w=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},h=function(t,n,e){return n===void 0&&(n=0),e===void 0&&(e=Math.pow(10,n)),Math.round(e*t)/e+0},y=function(t,n,e){return n===void 0&&(n=0),e===void 0&&(e=1),t>e?e:t>n?t:n},et=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},rt=function(t){return{r:y(t.r,0,255),g:y(t.g,0,255),b:y(t.b,0,255),a:y(t.a)}},H=function(t){return{r:h(t.r),g:h(t.g),b:h(t.b),a:h(t.a,3)}},nn=/^#([0-9a-f]{3,8})$/i,O=function(t){var n=t.toString(16);return n.length<2?"0"+n:n},it=function(t){var n=t.r,e=t.g,r=t.b,i=t.a,c=Math.max(n,e,r),u=c-Math.min(n,e,r),l=u?c===n?(e-r)/u:c===e?2+(r-n)/u:4+(n-e)/u:0;return{h:60*(l<0?l+6:l),s:c?u/c*100:0,v:c/255*100,a:i}},ot=function(t){var n=t.h,e=t.s,r=t.v,i=t.a;n=n/360*6,e/=100,r/=100;var c=Math.floor(n),u=r*(1-e),l=r*(1-(n-c)*e),S=r*(1-(1-n+c)*e),p=c%6;return{r:255*[r,l,u,u,S,r][p],g:255*[S,r,r,l,u,u][p],b:255*[u,u,S,r,r,l][p],a:i}},at=function(t){return{h:et(t.h),s:y(t.s,0,100),l:y(t.l,0,100),a:y(t.a)}},ut=function(t){return{h:h(t.h),s:h(t.s),l:h(t.l),a:h(t.a,3)}},lt=function(t){return ot((e=(n=t).s,{h:n.h,s:(e*=((r=n.l)<50?r:100-r)/100)>0?2*e/(r+e)*100:0,v:r+e,a:n.a}));var n,e,r},L=function(t){return{h:(n=it(t)).h,s:(i=(200-(e=n.s))*(r=n.v)/100)>0&&i<200?e*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:n.a};var n,e,r,i},en=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,st={string:[[function(t){var n=nn.exec(t);return n?(t=n[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?h(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?h(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var n=on.exec(t)||an.exec(t);return n?n[2]!==n[4]||n[4]!==n[6]?null:rt({r:Number(n[1])/(n[2]?100/255:1),g:Number(n[3])/(n[4]?100/255:1),b:Number(n[5])/(n[6]?100/255:1),a:n[7]===void 0?1:Number(n[7])/(n[8]?100:1)}):null},"rgb"],[function(t){var n=en.exec(t)||rn.exec(t);if(!n)return null;var e,r,i=at({h:(e=n[1],r=n[2],r===void 0&&(r="deg"),Number(e)*(tn[r]||1)),s:Number(n[3]),l:Number(n[4]),a:n[5]===void 0?1:Number(n[5])/(n[6]?100:1)});return lt(i)},"hsl"]],object:[[function(t){var n=t.r,e=t.g,r=t.b,i=t.a,c=i===void 0?1:i;return w(n)&&w(e)&&w(r)?rt({r:Number(n),g:Number(e),b:Number(r),a:Number(c)}):null},"rgb"],[function(t){var n=t.h,e=t.s,r=t.l,i=t.a,c=i===void 0?1:i;if(!w(n)||!w(e)||!w(r))return null;var u=at({h:Number(n),s:Number(e),l:Number(r),a:Number(c)});return lt(u)},"hsl"],[function(t){var n=t.h,e=t.s,r=t.v,i=t.a,c=i===void 0?1:i;if(!w(n)||!w(e)||!w(r))return null;var u=function(l){return{h:et(l.h),s:y(l.s,0,100),v:y(l.v,0,100),a:y(l.a)}}({h:Number(n),s:Number(e),v:Number(r),a:Number(c)});return ot(u)},"hsv"]]},ct=function(t,n){for(var e=0;e<n.length;e++){var r=n[e][0](t);if(r)return[r,n[e][1]]}return[null,void 0]},un=function(t){return typeof t=="string"?ct(t.trim(),st.string):typeof t=="object"&&t!==null?ct(t,st.object):[null,void 0]},j=function(t,n){var e=L(t);return{h:e.h,s:y(e.s+100*n,0,100),l:e.l,a:e.a}},W=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},ft=function(t,n){var e=L(t);return{h:e.h,s:e.s,l:y(e.l+100*n,0,100),a:e.a}},dt=function(){function t(n){this.parsed=un(n)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return h(W(this.rgba),2)},t.prototype.isDark=function(){return W(this.rgba)<.5},t.prototype.isLight=function(){return W(this.rgba)>=.5},t.prototype.toHex=function(){return n=H(this.rgba),e=n.r,r=n.g,i=n.b,u=(c=n.a)<1?O(h(255*c)):"","#"+O(e)+O(r)+O(i)+u;var n,e,r,i,c,u},t.prototype.toRgb=function(){return H(this.rgba)},t.prototype.toRgbString=function(){return n=H(this.rgba),e=n.r,r=n.g,i=n.b,(c=n.a)<1?"rgba("+e+", "+r+", "+i+", "+c+")":"rgb("+e+", "+r+", "+i+")";var n,e,r,i,c},t.prototype.toHsl=function(){return ut(L(this.rgba))},t.prototype.toHslString=function(){return n=ut(L(this.rgba)),e=n.h,r=n.s,i=n.l,(c=n.a)<1?"hsla("+e+", "+r+"%, "+i+"%, "+c+")":"hsl("+e+", "+r+"%, "+i+"%)";var n,e,r,i,c},t.prototype.toHsv=function(){return n=it(this.rgba),{h:h(n.h),s:h(n.s),v:h(n.v),a:h(n.a,3)};var n},t.prototype.invert=function(){return C({r:255-(n=this.rgba).r,g:255-n.g,b:255-n.b,a:n.a});var n},t.prototype.saturate=function(n){return n===void 0&&(n=.1),C(j(this.rgba,n))},t.prototype.desaturate=function(n){return n===void 0&&(n=.1),C(j(this.rgba,-n))},t.prototype.grayscale=function(){return C(j(this.rgba,-1))},t.prototype.lighten=function(n){return n===void 0&&(n=.1),C(ft(this.rgba,n))},t.prototype.darken=function(n){return n===void 0&&(n=.1),C(ft(this.rgba,-n))},t.prototype.rotate=function(n){return n===void 0&&(n=15),this.hue(this.hue()+n)},t.prototype.alpha=function(n){return typeof n=="number"?C({r:(e=this.rgba).r,g:e.g,b:e.b,a:n}):h(this.rgba.a,3);var e},t.prototype.hue=function(n){var e=L(this.rgba);return typeof n=="number"?C({h:n,s:e.s,l:e.l,a:e.a}):h(e.h)},t.prototype.isEqual=function(n){return this.toHex()===C(n).toHex()},t}(),C=function(t){return t instanceof dt?t:new dt(t)};function d(t){return t==null||t==="none"}function _(t,n=0,e=10**n){return Math.round(e*t)/e+0}function F(t,n=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return n?t.map(r=>F(r,n)):t;const e={};for(const r in t){const i=t[r];i!=null&&(n?e[r]=F(i,n):e[r]=i)}return e}function A(t,n){const e={};return n.forEach(r=>{r in t&&(e[r]=t[r])}),e}function B(t){let n;return typeof t=="number"?n={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:n=t,C(n)}function ln(t){return{r:_(t.r),g:_(t.g),b:_(t.b),a:_(t.a,3)}}function T(t){const n=t.toString(16);return n.length<2?`0${n}`:n}const D="#000000FF";function gt(t){return B(t).isValid()}function m(t,n=!1){const e=B(t);if(!e.isValid()){if(typeof t=="string")return t;const l=`Failed to normalizeColor ${t}`;if(n)throw new Error(l);return console.warn(l),D}const{r,g:i,b:c,a:u}=ln(e.rgba);return`#${T(r)}${T(i)}${T(c)}${T(_(u*255))}`}var V=V||{};V.parse=function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let n="";function e(a){const s=new Error(`${n}: ${a}`);throw s.source=n,s}function r(){const a=i();return n.length>0&&e("Invalid input not EOF"),a}function i(){return P(c)}function c(){return u("linear-gradient",t.linearGradient,S)||u("repeating-linear-gradient",t.repeatingLinearGradient,S)||u("radial-gradient",t.radialGradient,qt)||u("repeating-radial-gradient",t.repeatingRadialGradient,qt)}function u(a,s,f){return l(s,v=>{const k=f();return k&&(g(t.comma)||e("Missing comma before color stops")),{type:a,orientation:k,colorStops:P(Cn)}})}function l(a,s){const f=g(a);if(f){g(t.startCall)||e("Missing (");const v=s(f);return g(t.endCall)||e("Missing )"),v}}function S(){const a=p();if(a)return a;const s=b("position-keyword",t.positionKeywords,1);return s?{type:"directional",value:s.value}:q()}function p(){return b("directional",t.sideOrCorner,1)}function q(){return b("angular",t.angleValue,1)||b("angular",t.radianValue,1)}function qt(){let a,s=Jt(),f;return s&&(a=[],a.push(s),f=n,g(t.comma)&&(s=Jt(),s?a.push(s):n=f)),a}function Jt(){let a=pn()||bn();if(a)a.at=Q();else{const s=J();if(s){a=s;const f=Q();f&&(a.at=f)}else{const f=Q();if(f)a={type:"default-radial",at:f};else{const v=tt();v&&(a={type:"default-radial",at:v})}}}return a}function pn(){const a=b("shape",/^(circle)/i,0);return a&&(a.style=Qt()||J()),a}function bn(){const a=b("shape",/^(ellipse)/i,0);return a&&(a.style=tt()||$()||J()),a}function J(){return b("extent-keyword",t.extentKeywords,1)}function Q(){if(b("position",/^at/,0)){const a=tt();return a||e("Missing positioning value"),a}}function tt(){const a=yn();if(a.x||a.y)return{type:"position",value:a}}function yn(){return{x:$(),y:$()}}function P(a){let s=a();const f=[];if(s)for(f.push(s);g(t.comma);)s=a(),s?f.push(s):e("One extra comma");return f}function Cn(){const a=Sn();return a||e("Expected color definition"),a.length=$(),a}function Sn(){return zn()||En()||Nn()||Fn()||_n()||kn()||wn()}function wn(){return b("literal",t.literalColor,0)}function zn(){return b("hex",t.hexColor,1)}function _n(){return l(t.rgbColor,()=>({type:"rgb",value:P(R)}))}function Fn(){return l(t.rgbaColor,()=>({type:"rgba",value:P(R)}))}function kn(){return l(t.varColor,()=>({type:"var",value:Ln()}))}function Nn(){return l(t.hslColor,()=>{g(t.percentageValue)&&e("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const s=R();g(t.comma);let f=g(t.percentageValue);const v=f?f[1]:null;g(t.comma),f=g(t.percentageValue);const k=f?f[1]:null;return(!v||!k)&&e("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[s,v,k]}})}function En(){return l(t.hslaColor,()=>{const a=R();g(t.comma);let s=g(t.percentageValue);const f=s?s[1]:null;g(t.comma),s=g(t.percentageValue);const v=s?s[1]:null;g(t.comma);const k=R();return(!f||!v)&&e("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,f,v,k]}})}function Ln(){return g(t.variableName)[1]}function R(){return g(t.number)[1]}function $(){return b("%",t.percentageValue,1)||Dn()||Gn()||Qt()}function Dn(){return b("position-keyword",t.positionKeywords,1)}function Gn(){return l(t.calcValue,()=>{let a=1,s=0;for(;a>0&&s<n.length;){const v=n.charAt(s);v==="("?a++:v===")"&&a--,s++}a>0&&e("Missing closing parenthesis in calc() expression");const f=n.substring(0,s-1);return nt(s-1),{type:"calc",value:f}})}function Qt(){return b("px",t.pixelValue,1)||b("em",t.emValue,1)}function b(a,s,f){const v=g(s);if(v)return{type:a,value:v[f]}}function g(a){let s,f;return f=/^\s+/.exec(n),f&&nt(f[0].length),s=a.exec(n),s&&nt(s[0].length),s}function nt(a){n=n.substr(a)}return function(a){return n=a.toString().trim(),n.endsWith(";")&&(n=n.slice(0,-1)),r()}}();const ht=V.parse.bind(V);var x=x||{};x.stringify=function(){var t={"visit_linear-gradient":function(n){return t.visit_gradient(n)},"visit_repeating-linear-gradient":function(n){return t.visit_gradient(n)},"visit_radial-gradient":function(n){return t.visit_gradient(n)},"visit_repeating-radial-gradient":function(n){return t.visit_gradient(n)},visit_gradient:function(n){var e=t.visit(n.orientation);return e&&(e+=", "),n.type+"("+e+t.visit(n.colorStops)+")"},visit_shape:function(n){var e=n.value,r=t.visit(n.at),i=t.visit(n.style);return i&&(e+=" "+i),r&&(e+=" at "+r),e},"visit_default-radial":function(n){var e="",r=t.visit(n.at);return r&&(e+=r),e},"visit_extent-keyword":function(n){var e=n.value,r=t.visit(n.at);return r&&(e+=" at "+r),e},"visit_position-keyword":function(n){return n.value},visit_position:function(n){return t.visit(n.value.x)+" "+t.visit(n.value.y)},"visit_%":function(n){return n.value+"%"},visit_em:function(n){return n.value+"em"},visit_px:function(n){return n.value+"px"},visit_calc:function(n){return"calc("+n.value+")"},visit_literal:function(n){return t.visit_color(n.value,n)},visit_hex:function(n){return t.visit_color("#"+n.value,n)},visit_rgb:function(n){return t.visit_color("rgb("+n.value.join(", ")+")",n)},visit_rgba:function(n){return t.visit_color("rgba("+n.value.join(", ")+")",n)},visit_hsl:function(n){return t.visit_color("hsl("+n.value[0]+", "+n.value[1]+"%, "+n.value[2]+"%)",n)},visit_hsla:function(n){return t.visit_color("hsla("+n.value[0]+", "+n.value[1]+"%, "+n.value[2]+"%, "+n.value[3]+")",n)},visit_var:function(n){return t.visit_color("var("+n.value+")",n)},visit_color:function(n,e){var r=n,i=t.visit(e.length);return i&&(r+=" "+i),r},visit_angular:function(n){return n.value+"deg"},visit_directional:function(n){return"to "+n.value},visit_array:function(n){var e="",r=n.length;return n.forEach(function(i,c){e+=t.visit(i),c<r-1&&(e+=", ")}),e},visit_object:function(n){return n.width&&n.height?t.visit(n.width)+" "+t.visit(n.height):""},visit:function(n){if(!n)return"";if(n instanceof Array)return t.visit_array(n);if(typeof n=="object"&&!n.type)return t.visit_object(n);if(n.type){var e=t["visit_"+n.type];if(e)return e(n);throw Error("Missing visitor visit_"+n.type)}else throw Error("Invalid node.")}};return function(n){return t.visit(n)}}();const sn=x.stringify.bind(x);function vt(t){const n=t.length-1;return t.map((e,r)=>{var l;const i=e.value;let c=_(r/n,3),u="#00000000";switch(e.type){case"rgb":u=m({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":u=m({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":u=m(e.value);break;case"hex":u=m(`#${e.value}`);break}switch((l=e.length)==null?void 0:l.type){case"%":c=Number(e.length.value)/100;break}return{offset:c,color:u}})}function mt(t){var e;let n=0;switch((e=t.orientation)==null?void 0:e.type){case"angular":n=Number(t.orientation.value);break}return{type:"linear-gradient",angle:n,stops:vt(t.colorStops)}}function pt(t){var n;return(n=t.orientation)==null||n.map(e=>{switch(e==null?void 0:e.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:vt(t.colorStops)}}function G(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function bt(t){return ht(t).map(n=>{switch(n==null?void 0:n.type){case"linear-gradient":return mt(n);case"repeating-linear-gradient":return{...mt(n),repeat:!0};case"radial-gradient":return pt(n);case"repeating-radial-gradient":return{...pt(n),repeat:!0};default:return}}).filter(Boolean)}function yt(t){let n;return typeof t=="string"?n={color:t}:n=t,{color:m(n.color)}}function Ct(t){let n;if(typeof t=="string"?n={image:t}:n=t,n.image){const{type:e,...r}=bt(n.image)[0]??{};switch(e){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return n}function St(t){let n;return typeof t=="string"?n={image:t}:n=t,n}function wt(t){let n;return typeof t=="string"?n={preset:t}:n=t,{preset:n.preset,foregroundColor:d(n.foregroundColor)?void 0:m(n.foregroundColor),backgroundColor:d(n.backgroundColor)?void 0:m(n.backgroundColor)}}function zt(t){return!d(t.color)}function _t(t){return typeof t=="string"?gt(t):zt(t)}function Ft(t){return!d(t.image)&&G(t.image)||!!t.linearGradient||!!t.radialGradient}function kt(t){return typeof t=="string"?G(t):Ft(t)}function Nt(t){return!d(t.image)&&!G(t.image)}function Et(t){return typeof t=="string"?!G(t):Nt(t)}function Lt(t){return!d(t.preset)}function Dt(t){return typeof t=="string"?!1:Lt(t)}function z(t){return _t(t)?yt(t):kt(t)?Ct(t):Et(t)?St(t):Dt(t)?wt(t):{}}function Gt(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["fillWithShape"])}}function K(){return{color:D,offsetX:0,offsetY:0,blurRadius:1}}function X(t){return{...K(),...F({...t,color:d(t.color)?D:m(t.color)})}}function It(){return{...K(),scaleX:1,scaleY:1}}function Rt(t){return{...It(),...X(t)}}function cn(t){return t}function Ot(t){return F({...t,softEdge:d(t.softEdge)?void 0:t.softEdge,outerShadow:d(t.outerShadow)?void 0:Rt(t.outerShadow),innerShadow:d(t.innerShadow)?void 0:X(t.innerShadow)})}function At(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["fillWithShape"])}}function Tt(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["width","style","headEnd","tailEnd"])}}function Vt(t){return typeof t=="string"?{color:m(t)}:{...t,color:d(t.color)?D:m(t.color)}}function xt(){return{boxShadow:"none"}}function Mt(t){return typeof t=="string"?t.startsWith("<svg")?{svg:t}:{paths:[{data:t}]}:Array.isArray(t)?{paths:t.map(n=>typeof n=="string"?{data:n}:n)}:t}function Pt(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function $t(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Ht(){return{...Pt(),...$t(),...xt(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"rgb(0, 0, 0)",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function jt(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Wt(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function Bt(){return{...jt(),color:"rgb(0, 0, 0)",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function Kt(){return{...Wt(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function Xt(){return{...Kt(),...Bt(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function E(t){return F({...t,color:d(t.color)?void 0:m(t.color),backgroundColor:d(t.backgroundColor)?void 0:m(t.backgroundColor),borderColor:d(t.borderColor)?void 0:m(t.borderColor),outlineColor:d(t.outlineColor)?void 0:m(t.outlineColor),shadowColor:d(t.shadowColor)?void 0:m(t.shadowColor)})}function fn(){return{...Ht(),...Xt()}}const Y=/\r\n|\n\r|\n|\r/,dn=new RegExp(`${Y.source}|<br\\/>`,"g"),gn=new RegExp(`^(${Y.source})$`),M=`
|
|
2
|
-
`;function
|
|
1
|
+
(function(o,E){typeof exports=="object"&&typeof module<"u"?E(exports):typeof define=="function"&&define.amd?define(["exports"],E):(o=typeof globalThis<"u"?globalThis:o||self,E(o.modernIdoc={}))})(this,function(o){"use strict";function E(t){return typeof t=="string"?{src:t}:t}var nn={grad:.9,turn:360,rad:360/(2*Math.PI)},w=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},h=function(t,n,e){return n===void 0&&(n=0),e===void 0&&(e=Math.pow(10,n)),Math.round(e*t)/e+0},S=function(t,n,e){return n===void 0&&(n=0),e===void 0&&(e=1),t>e?e:t>n?t:n},it=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ot=function(t){return{r:S(t.r,0,255),g:S(t.g,0,255),b:S(t.b,0,255),a:S(t.a)}},B=function(t){return{r:h(t.r),g:h(t.g),b:h(t.b),a:h(t.a,3)}},en=/^#([0-9a-f]{3,8})$/i,T=function(t){var n=t.toString(16);return n.length<2?"0"+n:n},at=function(t){var n=t.r,e=t.g,r=t.b,i=t.a,c=Math.max(n,e,r),u=c-Math.min(n,e,r),l=u?c===n?(e-r)/u:c===e?2+(r-n)/u:4+(n-e)/u:0;return{h:60*(l<0?l+6:l),s:c?u/c*100:0,v:c/255*100,a:i}},ut=function(t){var n=t.h,e=t.s,r=t.v,i=t.a;n=n/360*6,e/=100,r/=100;var c=Math.floor(n),u=r*(1-e),l=r*(1-(n-c)*e),p=r*(1-(1-n+c)*e),b=c%6;return{r:255*[r,l,u,u,p,r][b],g:255*[p,r,r,l,u,u][b],b:255*[u,u,p,r,r,l][b],a:i}},lt=function(t){return{h:it(t.h),s:S(t.s,0,100),l:S(t.l,0,100),a:S(t.a)}},st=function(t){return{h:h(t.h),s:h(t.s),l:h(t.l),a:h(t.a,3)}},ct=function(t){return ut((e=(n=t).s,{h:n.h,s:(e*=((r=n.l)<50?r:100-r)/100)>0?2*e/(r+e)*100:0,v:r+e,a:n.a}));var n,e,r},G=function(t){return{h:(n=at(t)).h,s:(i=(200-(e=n.s))*(r=n.v)/100)>0&&i<200?e*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:n.a};var n,e,r,i},rn=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,un=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ft={string:[[function(t){var n=en.exec(t);return n?(t=n[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?h(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?h(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var n=an.exec(t)||un.exec(t);return n?n[2]!==n[4]||n[4]!==n[6]?null:ot({r:Number(n[1])/(n[2]?100/255:1),g:Number(n[3])/(n[4]?100/255:1),b:Number(n[5])/(n[6]?100/255:1),a:n[7]===void 0?1:Number(n[7])/(n[8]?100:1)}):null},"rgb"],[function(t){var n=rn.exec(t)||on.exec(t);if(!n)return null;var e,r,i=lt({h:(e=n[1],r=n[2],r===void 0&&(r="deg"),Number(e)*(nn[r]||1)),s:Number(n[3]),l:Number(n[4]),a:n[5]===void 0?1:Number(n[5])/(n[6]?100:1)});return ct(i)},"hsl"]],object:[[function(t){var n=t.r,e=t.g,r=t.b,i=t.a,c=i===void 0?1:i;return w(n)&&w(e)&&w(r)?ot({r:Number(n),g:Number(e),b:Number(r),a:Number(c)}):null},"rgb"],[function(t){var n=t.h,e=t.s,r=t.l,i=t.a,c=i===void 0?1:i;if(!w(n)||!w(e)||!w(r))return null;var u=lt({h:Number(n),s:Number(e),l:Number(r),a:Number(c)});return ct(u)},"hsl"],[function(t){var n=t.h,e=t.s,r=t.v,i=t.a,c=i===void 0?1:i;if(!w(n)||!w(e)||!w(r))return null;var u=function(l){return{h:it(l.h),s:S(l.s,0,100),v:S(l.v,0,100),a:S(l.a)}}({h:Number(n),s:Number(e),v:Number(r),a:Number(c)});return ut(u)},"hsv"]]},dt=function(t,n){for(var e=0;e<n.length;e++){var r=n[e][0](t);if(r)return[r,n[e][1]]}return[null,void 0]},ln=function(t){return typeof t=="string"?dt(t.trim(),ft.string):typeof t=="object"&&t!==null?dt(t,ft.object):[null,void 0]},K=function(t,n){var e=G(t);return{h:e.h,s:S(e.s+100*n,0,100),l:e.l,a:e.a}},X=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},gt=function(t,n){var e=G(t);return{h:e.h,s:e.s,l:S(e.l+100*n,0,100),a:e.a}},ht=function(){function t(n){this.parsed=ln(n)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return h(X(this.rgba),2)},t.prototype.isDark=function(){return X(this.rgba)<.5},t.prototype.isLight=function(){return X(this.rgba)>=.5},t.prototype.toHex=function(){return n=B(this.rgba),e=n.r,r=n.g,i=n.b,u=(c=n.a)<1?T(h(255*c)):"","#"+T(e)+T(r)+T(i)+u;var n,e,r,i,c,u},t.prototype.toRgb=function(){return B(this.rgba)},t.prototype.toRgbString=function(){return n=B(this.rgba),e=n.r,r=n.g,i=n.b,(c=n.a)<1?"rgba("+e+", "+r+", "+i+", "+c+")":"rgb("+e+", "+r+", "+i+")";var n,e,r,i,c},t.prototype.toHsl=function(){return st(G(this.rgba))},t.prototype.toHslString=function(){return n=st(G(this.rgba)),e=n.h,r=n.s,i=n.l,(c=n.a)<1?"hsla("+e+", "+r+"%, "+i+"%, "+c+")":"hsl("+e+", "+r+"%, "+i+"%)";var n,e,r,i,c},t.prototype.toHsv=function(){return n=at(this.rgba),{h:h(n.h),s:h(n.s),v:h(n.v),a:h(n.a,3)};var n},t.prototype.invert=function(){return C({r:255-(n=this.rgba).r,g:255-n.g,b:255-n.b,a:n.a});var n},t.prototype.saturate=function(n){return n===void 0&&(n=.1),C(K(this.rgba,n))},t.prototype.desaturate=function(n){return n===void 0&&(n=.1),C(K(this.rgba,-n))},t.prototype.grayscale=function(){return C(K(this.rgba,-1))},t.prototype.lighten=function(n){return n===void 0&&(n=.1),C(gt(this.rgba,n))},t.prototype.darken=function(n){return n===void 0&&(n=.1),C(gt(this.rgba,-n))},t.prototype.rotate=function(n){return n===void 0&&(n=15),this.hue(this.hue()+n)},t.prototype.alpha=function(n){return typeof n=="number"?C({r:(e=this.rgba).r,g:e.g,b:e.b,a:n}):h(this.rgba.a,3);var e},t.prototype.hue=function(n){var e=G(this.rgba);return typeof n=="number"?C({h:n,s:e.s,l:e.l,a:e.a}):h(e.h)},t.prototype.isEqual=function(n){return this.toHex()===C(n).toHex()},t}(),C=function(t){return t instanceof ht?t:new ht(t)};function d(t){return t==null||t==="none"}function F(t,n=0,e=10**n){return Math.round(e*t)/e+0}function k(t,n=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return n?t.map(r=>k(r,n)):t;const e={};for(const r in t){const i=t[r];i!=null&&(n?e[r]=k(i,n):e[r]=i)}return e}function V(t,n){const e={};return n.forEach(r=>{r in t&&(e[r]=t[r])}),e}function Y(t){let n;return typeof t=="number"?n={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:n=t,C(n)}function sn(t){return{r:F(t.r),g:F(t.g),b:F(t.b),a:F(t.a,3)}}function x(t){const n=t.toString(16);return n.length<2?`0${n}`:n}const I="#000000FF";function vt(t){return Y(t).isValid()}function m(t,n=!1){const e=Y(t);if(!e.isValid()){if(typeof t=="string")return t;const l=`Failed to normalizeColor ${t}`;if(n)throw new Error(l);return console.warn(l),I}const{r,g:i,b:c,a:u}=sn(e.rgba);return`#${x(r)}${x(i)}${x(c)}${x(F(u*255))}`}var $=$||{};$.parse=function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let n="";function e(a){const s=new Error(`${n}: ${a}`);throw s.source=n,s}function r(){const a=i();return n.length>0&&e("Invalid input not EOF"),a}function i(){return H(c)}function c(){return u("linear-gradient",t.linearGradient,p)||u("repeating-linear-gradient",t.repeatingLinearGradient,p)||u("radial-gradient",t.radialGradient,D)||u("repeating-radial-gradient",t.repeatingRadialGradient,D)}function u(a,s,f){return l(s,v=>{const N=f();return N&&(g(t.comma)||e("Missing comma before color stops")),{type:a,orientation:N,colorStops:H(Cn)}})}function l(a,s){const f=g(a);if(f){g(t.startCall)||e("Missing (");const v=s(f);return g(t.endCall)||e("Missing )"),v}}function p(){const a=b();if(a)return a;const s=y("position-keyword",t.positionKeywords,1);return s?{type:"directional",value:s.value}:z()}function b(){return y("directional",t.sideOrCorner,1)}function z(){return y("angular",t.angleValue,1)||y("angular",t.radianValue,1)}function D(){let a,s=P(),f;return s&&(a=[],a.push(s),f=n,g(t.comma)&&(s=P(),s?a.push(s):n=f)),a}function P(){let a=bn()||yn();if(a)a.at=nt();else{const s=tt();if(s){a=s;const f=nt();f&&(a.at=f)}else{const f=nt();if(f)a={type:"default-radial",at:f};else{const v=et();v&&(a={type:"default-radial",at:v})}}}return a}function bn(){const a=y("shape",/^(circle)/i,0);return a&&(a.style=tn()||tt()),a}function yn(){const a=y("shape",/^(ellipse)/i,0);return a&&(a.style=et()||W()||tt()),a}function tt(){return y("extent-keyword",t.extentKeywords,1)}function nt(){if(y("position",/^at/,0)){const a=et();return a||e("Missing positioning value"),a}}function et(){const a=Sn();if(a.x||a.y)return{type:"position",value:a}}function Sn(){return{x:W(),y:W()}}function H(a){let s=a();const f=[];if(s)for(f.push(s);g(t.comma);)s=a(),s?f.push(s):e("One extra comma");return f}function Cn(){const a=wn();return a||e("Expected color definition"),a.length=W(),a}function wn(){return _n()||Ln()||En()||kn()||Fn()||Nn()||zn()}function zn(){return y("literal",t.literalColor,0)}function _n(){return y("hex",t.hexColor,1)}function Fn(){return l(t.rgbColor,()=>({type:"rgb",value:H(A)}))}function kn(){return l(t.rgbaColor,()=>({type:"rgba",value:H(A)}))}function Nn(){return l(t.varColor,()=>({type:"var",value:Dn()}))}function En(){return l(t.hslColor,()=>{g(t.percentageValue)&&e("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const s=A();g(t.comma);let f=g(t.percentageValue);const v=f?f[1]:null;g(t.comma),f=g(t.percentageValue);const N=f?f[1]:null;return(!v||!N)&&e("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[s,v,N]}})}function Ln(){return l(t.hslaColor,()=>{const a=A();g(t.comma);let s=g(t.percentageValue);const f=s?s[1]:null;g(t.comma),s=g(t.percentageValue);const v=s?s[1]:null;g(t.comma);const N=A();return(!f||!v)&&e("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,f,v,N]}})}function Dn(){return g(t.variableName)[1]}function A(){return g(t.number)[1]}function W(){return y("%",t.percentageValue,1)||Gn()||In()||tn()}function Gn(){return y("position-keyword",t.positionKeywords,1)}function In(){return l(t.calcValue,()=>{let a=1,s=0;for(;a>0&&s<n.length;){const v=n.charAt(s);v==="("?a++:v===")"&&a--,s++}a>0&&e("Missing closing parenthesis in calc() expression");const f=n.substring(0,s-1);return rt(s-1),{type:"calc",value:f}})}function tn(){return y("px",t.pixelValue,1)||y("em",t.emValue,1)}function y(a,s,f){const v=g(s);if(v)return{type:a,value:v[f]}}function g(a){let s,f;return f=/^\s+/.exec(n),f&&rt(f[0].length),s=a.exec(n),s&&rt(s[0].length),s}function rt(a){n=n.substr(a)}return function(a){return n=a.toString().trim(),n.endsWith(";")&&(n=n.slice(0,-1)),r()}}();const mt=$.parse.bind($);var j=j||{};j.stringify=function(){var t={"visit_linear-gradient":function(n){return t.visit_gradient(n)},"visit_repeating-linear-gradient":function(n){return t.visit_gradient(n)},"visit_radial-gradient":function(n){return t.visit_gradient(n)},"visit_repeating-radial-gradient":function(n){return t.visit_gradient(n)},visit_gradient:function(n){var e=t.visit(n.orientation);return e&&(e+=", "),n.type+"("+e+t.visit(n.colorStops)+")"},visit_shape:function(n){var e=n.value,r=t.visit(n.at),i=t.visit(n.style);return i&&(e+=" "+i),r&&(e+=" at "+r),e},"visit_default-radial":function(n){var e="",r=t.visit(n.at);return r&&(e+=r),e},"visit_extent-keyword":function(n){var e=n.value,r=t.visit(n.at);return r&&(e+=" at "+r),e},"visit_position-keyword":function(n){return n.value},visit_position:function(n){return t.visit(n.value.x)+" "+t.visit(n.value.y)},"visit_%":function(n){return n.value+"%"},visit_em:function(n){return n.value+"em"},visit_px:function(n){return n.value+"px"},visit_calc:function(n){return"calc("+n.value+")"},visit_literal:function(n){return t.visit_color(n.value,n)},visit_hex:function(n){return t.visit_color("#"+n.value,n)},visit_rgb:function(n){return t.visit_color("rgb("+n.value.join(", ")+")",n)},visit_rgba:function(n){return t.visit_color("rgba("+n.value.join(", ")+")",n)},visit_hsl:function(n){return t.visit_color("hsl("+n.value[0]+", "+n.value[1]+"%, "+n.value[2]+"%)",n)},visit_hsla:function(n){return t.visit_color("hsla("+n.value[0]+", "+n.value[1]+"%, "+n.value[2]+"%, "+n.value[3]+")",n)},visit_var:function(n){return t.visit_color("var("+n.value+")",n)},visit_color:function(n,e){var r=n,i=t.visit(e.length);return i&&(r+=" "+i),r},visit_angular:function(n){return n.value+"deg"},visit_directional:function(n){return"to "+n.value},visit_array:function(n){var e="",r=n.length;return n.forEach(function(i,c){e+=t.visit(i),c<r-1&&(e+=", ")}),e},visit_object:function(n){return n.width&&n.height?t.visit(n.width)+" "+t.visit(n.height):""},visit:function(n){if(!n)return"";if(n instanceof Array)return t.visit_array(n);if(typeof n=="object"&&!n.type)return t.visit_object(n);if(n.type){var e=t["visit_"+n.type];if(e)return e(n);throw Error("Missing visitor visit_"+n.type)}else throw Error("Invalid node.")}};return function(n){return t.visit(n)}}();const cn=j.stringify.bind(j);function pt(t){const n=t.length-1;return t.map((e,r)=>{var l;const i=e.value;let c=F(r/n,3),u="#00000000";switch(e.type){case"rgb":u=m({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":u=m({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":u=m(e.value);break;case"hex":u=m(`#${e.value}`);break}switch((l=e.length)==null?void 0:l.type){case"%":c=Number(e.length.value)/100;break}return{offset:c,color:u}})}function bt(t){var e;let n=0;switch((e=t.orientation)==null?void 0:e.type){case"angular":n=Number(t.orientation.value);break}return{type:"linear-gradient",angle:n,stops:pt(t.colorStops)}}function yt(t){var n;return(n=t.orientation)==null||n.map(e=>{switch(e==null?void 0:e.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:pt(t.colorStops)}}function O(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function St(t){return mt(t).map(n=>{switch(n==null?void 0:n.type){case"linear-gradient":return bt(n);case"repeating-linear-gradient":return{...bt(n),repeat:!0};case"radial-gradient":return yt(n);case"repeating-radial-gradient":return{...yt(n),repeat:!0};default:return}}).filter(Boolean)}function Ct(t){let n;return typeof t=="string"?n={color:t}:n=t,{color:m(n.color)}}function wt(t){let n;if(typeof t=="string"?n={image:t}:n=t,n.image){const{type:e,...r}=St(n.image)[0]??{};switch(e){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return n}function zt(t){let n;return typeof t=="string"?n={image:t}:n=t,n}function _t(t){let n;return typeof t=="string"?n={preset:t}:n=t,{preset:n.preset,foregroundColor:d(n.foregroundColor)?void 0:m(n.foregroundColor),backgroundColor:d(n.backgroundColor)?void 0:m(n.backgroundColor)}}function Ft(t){return!d(t.color)}function kt(t){return typeof t=="string"?vt(t):Ft(t)}function Nt(t){return!d(t.image)&&O(t.image)||!!t.linearGradient||!!t.radialGradient}function Et(t){return typeof t=="string"?O(t):Nt(t)}function Lt(t){return!d(t.image)&&!O(t.image)}function Dt(t){return typeof t=="string"?!O(t):Lt(t)}function Gt(t){return!d(t.preset)}function It(t){return typeof t=="string"?!1:Gt(t)}function _(t){return kt(t)?Ct(t):Et(t)?wt(t):Dt(t)?zt(t):It(t)?_t(t):{}}function Ot(t){return typeof t=="string"?{..._(t)}:{..._(t),...V(t,["fillWithShape"])}}function q(){return{color:I,offsetX:0,offsetY:0,blurRadius:1}}function U(t){return{...q(),...k({...t,color:d(t.color)?I:m(t.color)})}}function Rt(){return{...q(),scaleX:1,scaleY:1}}function At(t){return{...Rt(),...U(t)}}function fn(t){return t}function Tt(t){return k({...t,softEdge:d(t.softEdge)?void 0:t.softEdge,outerShadow:d(t.outerShadow)?void 0:At(t.outerShadow),innerShadow:d(t.innerShadow)?void 0:U(t.innerShadow)})}function Vt(t){return typeof t=="string"?{..._(t)}:{..._(t),...V(t,["fillWithShape"])}}function xt(t){return typeof t=="string"?{..._(t)}:{..._(t),...V(t,["width","style","headEnd","tailEnd"])}}function $t(t){return typeof t=="string"?{color:m(t)}:{...t,color:d(t.color)?I:m(t.color)}}function jt(){return{boxShadow:"none"}}function Mt(t){return typeof t=="string"?t.startsWith("<svg")?{svg:t}:{paths:[{data:t}]}:Array.isArray(t)?{paths:t.map(n=>typeof n=="string"?{data:n}:n)}:t}function Pt(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function Ht(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Wt(){return{...Pt(),...Ht(),...jt(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"rgb(0, 0, 0)",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function Bt(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Kt(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function Xt(){return{...Bt(),color:"rgb(0, 0, 0)",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function Yt(){return{...Kt(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function qt(){return{...Yt(),...Xt(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function L(t){return k({...t,color:d(t.color)?void 0:m(t.color),backgroundColor:d(t.backgroundColor)?void 0:m(t.backgroundColor),borderColor:d(t.borderColor)?void 0:m(t.borderColor),outlineColor:d(t.outlineColor)?void 0:m(t.outlineColor),shadowColor:d(t.shadowColor)?void 0:m(t.shadowColor)})}function dn(){return{...Wt(),...qt()}}const Z=/\r\n|\n\r|\n|\r/,gn=new RegExp(`${Z.source}|<br\\/>`,"g"),hn=new RegExp(`^(${Z.source})$`),M=`
|
|
2
|
+
`;function vn(t){return Z.test(t)}function J(t){return hn.test(t)}function Ut(t){return t.replace(gn,M)}function Zt(t,n){const e=Array.from(new Set([...Object.keys(t),...Object.keys(n)]));return!e.length||e.every(r=>t[r]===n[r])}function R(t){const n=[];function e(){return n[n.length-1]||r()}function r(u={}){let l=n[n.length-1];return(l==null?void 0:l.fragments.length)===0?(l={...u,fragments:[]},n[n.length-1]=l):(l={...u,fragments:[]},n.push(l)),l}function i(u="",l={}){Array.from(u).forEach(p=>{if(J(p)){const{fragments:b,...z}=e();b.length||b.push({...l,content:M}),r(z)}else{const b=e(),z=b.fragments[b.fragments.length-1];if(z){const{content:D,...P}=z;if(Zt(l,P)){z.content=`${D}${p}`;return}}b.fragments.push({...l,content:p})}})}return(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")r(),i(u);else if("content"in u){const{content:l,...p}=u;r(L(p)),i(l)}else if("fragments"in u){const{fragments:l,...p}=u;r(L(p)),l.forEach(b=>{const{content:z,...D}=b;i(z,L(D))})}else Array.isArray(u)?(r(),u.forEach(l=>{if(typeof l=="string")i(l);else{const{content:p,...b}=l;i(p,L(b))}})):console.warn("Failed to parse text content",u)}),e().fragments.length||i(M),n}function Jt(t){return typeof t=="string"?{content:R(t)}:"content"in t?{...t,content:R(t.content)}:{content:R(t)}}function mn(t){return R(t).map(n=>{const e=Ut(n.fragments.flatMap(r=>r.content).join(""));return J(e)?"":e}).join(M)}function Qt(t){return typeof t=="string"?{src:t}:t}function Q(t){var n;return k({...t,style:d(t.style)?void 0:L(t.style),text:d(t.text)?void 0:Jt(t.text),background:d(t.background)?void 0:Ot(t.background),shape:d(t.shape)?void 0:Mt(t.shape),fill:d(t.fill)?void 0:_(t.fill),outline:d(t.outline)?void 0:xt(t.outline),foreground:d(t.foreground)?void 0:Vt(t.foreground),shadow:d(t.shadow)?void 0:$t(t.shadow),video:d(t.video)?void 0:Qt(t.video),audio:d(t.audio)?void 0:E(t.audio),effect:d(t.effect)?void 0:Tt(t.effect),children:(n=t.children)==null?void 0:n.map(e=>Q(e))})}function pn(t){return Q(t)}o.clearUndef=k,o.defaultColor=I,o.getDefaultElementStyle=Wt,o.getDefaultHighlightStyle=Bt,o.getDefaultInnerShadow=q,o.getDefaultLayoutStyle=Pt,o.getDefaultListStyleStyle=Kt,o.getDefaultOuterShadow=Rt,o.getDefaultShadowStyle=jt,o.getDefaultStyle=dn,o.getDefaultTextInlineStyle=Xt,o.getDefaultTextLineStyle=Yt,o.getDefaultTextStyle=qt,o.getDefaultTransformStyle=Ht,o.hasCRLF=vn,o.isCRLF=J,o.isColor=vt,o.isColorFill=kt,o.isColorFillObject=Ft,o.isEqualStyle=Zt,o.isGradient=O,o.isGradientFill=Et,o.isGradientFillObject=Nt,o.isImageFill=Dt,o.isImageFillObject=Lt,o.isNone=d,o.isPresetFill=It,o.isPresetFillObject=Gt,o.normalizeAudio=E,o.normalizeBackground=Ot,o.normalizeCRLF=Ut,o.normalizeColor=m,o.normalizeColorFill=Ct,o.normalizeDocument=pn,o.normalizeEffect=Tt,o.normalizeElement=Q,o.normalizeFill=_,o.normalizeForeground=Vt,o.normalizeGradient=St,o.normalizeGradientFill=wt,o.normalizeImageFill=zt,o.normalizeInnerShadow=U,o.normalizeOuterShadow=At,o.normalizeOutline=xt,o.normalizePresetFill=_t,o.normalizeShadow=$t,o.normalizeShape=Mt,o.normalizeSoftEdge=fn,o.normalizeStyle=L,o.normalizeText=Jt,o.normalizeTextContent=R,o.normalizeVideo=Qt,o.parseColor=Y,o.parseGradient=mt,o.pick=V,o.round=F,o.stringifyGradient=cn,o.textContentToString=mn,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
|
package/dist/index.mjs
CHANGED
|
@@ -1114,12 +1114,16 @@ function isCRLF(char) {
|
|
|
1114
1114
|
function normalizeCRLF(content) {
|
|
1115
1115
|
return content.replace(NORMALIZE_CRLF_RE, NORMALIZED_CRLF);
|
|
1116
1116
|
}
|
|
1117
|
+
function isEqualStyle(style1, style2) {
|
|
1118
|
+
const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(style1), ...Object.keys(style2)]));
|
|
1119
|
+
return !keys.length || keys.every((key) => style1[key] === style2[key]);
|
|
1120
|
+
}
|
|
1117
1121
|
function normalizeTextContent(value) {
|
|
1118
1122
|
const paragraphs = [];
|
|
1119
1123
|
function getParagraph() {
|
|
1120
1124
|
return paragraphs[paragraphs.length - 1] || addParagraph();
|
|
1121
1125
|
}
|
|
1122
|
-
function addParagraph(style) {
|
|
1126
|
+
function addParagraph(style = {}) {
|
|
1123
1127
|
let paragraph = paragraphs[paragraphs.length - 1];
|
|
1124
1128
|
if (paragraph?.fragments.length === 0) {
|
|
1125
1129
|
paragraph = { ...style, fragments: [] };
|
|
@@ -1130,47 +1134,62 @@ function normalizeTextContent(value) {
|
|
|
1130
1134
|
}
|
|
1131
1135
|
return paragraph;
|
|
1132
1136
|
}
|
|
1133
|
-
function addFragment(content, style) {
|
|
1137
|
+
function addFragment(content = "", style = {}) {
|
|
1134
1138
|
Array.from(content).forEach((c) => {
|
|
1135
1139
|
if (isCRLF(c)) {
|
|
1136
1140
|
const { fragments, ...pStyle } = getParagraph();
|
|
1137
1141
|
if (!fragments.length) {
|
|
1138
|
-
fragments.push({
|
|
1142
|
+
fragments.push({
|
|
1143
|
+
...style,
|
|
1144
|
+
content: NORMALIZED_CRLF
|
|
1145
|
+
});
|
|
1139
1146
|
}
|
|
1140
1147
|
addParagraph(pStyle);
|
|
1141
1148
|
} else {
|
|
1142
1149
|
const paragraph = getParagraph();
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1150
|
+
const fragment = paragraph.fragments[paragraph.fragments.length - 1];
|
|
1151
|
+
if (fragment) {
|
|
1152
|
+
const { content: content2, ...fStyle } = fragment;
|
|
1153
|
+
if (isEqualStyle(style, fStyle)) {
|
|
1154
|
+
fragment.content = `${content2}${c}`;
|
|
1155
|
+
return;
|
|
1156
|
+
}
|
|
1147
1157
|
}
|
|
1158
|
+
paragraph.fragments.push({
|
|
1159
|
+
...style,
|
|
1160
|
+
content: c
|
|
1161
|
+
});
|
|
1148
1162
|
}
|
|
1149
1163
|
});
|
|
1150
1164
|
}
|
|
1151
1165
|
const list = Array.isArray(value) ? value : [value];
|
|
1152
1166
|
list.forEach((p) => {
|
|
1153
1167
|
if (typeof p === "string") {
|
|
1168
|
+
addParagraph();
|
|
1154
1169
|
addFragment(p);
|
|
1155
1170
|
} else if ("content" in p) {
|
|
1156
|
-
|
|
1171
|
+
const { content, ...pStyle } = p;
|
|
1172
|
+
addParagraph(normalizeStyle(pStyle));
|
|
1173
|
+
addFragment(content);
|
|
1157
1174
|
} else if ("fragments" in p) {
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1175
|
+
const { fragments, ...pStyle } = p;
|
|
1176
|
+
addParagraph(normalizeStyle(pStyle));
|
|
1177
|
+
fragments.forEach((f) => {
|
|
1178
|
+
const { content, ...fStyle } = f;
|
|
1179
|
+
addFragment(content, normalizeStyle(fStyle));
|
|
1161
1180
|
});
|
|
1162
1181
|
} else if (Array.isArray(p)) {
|
|
1182
|
+
addParagraph();
|
|
1163
1183
|
p.forEach((f) => {
|
|
1164
1184
|
if (typeof f === "string") {
|
|
1165
1185
|
addFragment(f);
|
|
1166
1186
|
} else {
|
|
1167
|
-
|
|
1187
|
+
const { content, ...fStyle } = f;
|
|
1188
|
+
addFragment(content, normalizeStyle(fStyle));
|
|
1168
1189
|
}
|
|
1169
1190
|
});
|
|
1170
1191
|
} else {
|
|
1171
|
-
|
|
1172
|
-
fragments: []
|
|
1173
|
-
});
|
|
1192
|
+
console.warn("Failed to parse text content", p);
|
|
1174
1193
|
}
|
|
1175
1194
|
});
|
|
1176
1195
|
if (!getParagraph().fragments.length) {
|
|
@@ -1236,4 +1255,4 @@ function normalizeDocument(doc) {
|
|
|
1236
1255
|
return normalizeElement(doc);
|
|
1237
1256
|
}
|
|
1238
1257
|
|
|
1239
|
-
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
|
1258
|
+
export { clearUndef, defaultColor, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, round, stringifyGradient, textContentToString };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "modern-idoc",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.13",
|
|
5
5
|
"packageManager": "pnpm@9.15.1",
|
|
6
6
|
"description": "Intermediate document for modern codec libs",
|
|
7
7
|
"author": "wxm",
|
|
@@ -57,17 +57,17 @@
|
|
|
57
57
|
"colord": "^2.9.3"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@antfu/eslint-config": "^4.
|
|
61
|
-
"@types/node": "^
|
|
60
|
+
"@antfu/eslint-config": "^4.14.1",
|
|
61
|
+
"@types/node": "^24.0.0",
|
|
62
62
|
"bumpp": "^10.1.1",
|
|
63
63
|
"conventional-changelog-cli": "^5.0.0",
|
|
64
|
-
"eslint": "^9.
|
|
65
|
-
"lint-staged": "^16.
|
|
64
|
+
"eslint": "^9.28.0",
|
|
65
|
+
"lint-staged": "^16.1.0",
|
|
66
66
|
"simple-git-hooks": "^2.13.0",
|
|
67
67
|
"typescript": "^5.8.3",
|
|
68
68
|
"unbuild": "^3.5.0",
|
|
69
69
|
"vite": "^6.3.5",
|
|
70
|
-
"vitest": "^3.
|
|
70
|
+
"vitest": "^3.2.3"
|
|
71
71
|
},
|
|
72
72
|
"simple-git-hooks": {
|
|
73
73
|
"pre-commit": "pnpm lint-staged"
|