modern-idoc 0.11.4 → 0.11.6
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 +61 -2
- package/dist/index.d.cts +25 -2
- package/dist/index.d.mts +25 -2
- package/dist/index.d.ts +25 -2
- package/dist/index.js +2 -2
- package/dist/index.mjs +60 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -103,6 +103,16 @@ function isNone(value) {
|
|
|
103
103
|
function round(number, digits = 0, base = 10 ** digits) {
|
|
104
104
|
return Math.round(base * number) / base + 0;
|
|
105
105
|
}
|
|
106
|
+
function normalizeNumber(value, fallback) {
|
|
107
|
+
if (typeof value === "number") {
|
|
108
|
+
return Number.isFinite(value) ? value : fallback;
|
|
109
|
+
}
|
|
110
|
+
if (typeof value === "string") {
|
|
111
|
+
const parsed = Number.parseFloat(value);
|
|
112
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
113
|
+
}
|
|
114
|
+
return fallback;
|
|
115
|
+
}
|
|
106
116
|
function clearUndef(obj, deep = false) {
|
|
107
117
|
if (typeof obj !== "object" || !obj) {
|
|
108
118
|
return obj;
|
|
@@ -1436,7 +1446,8 @@ function getDefaultBackgroundStyle() {
|
|
|
1436
1446
|
function normalizeConnection(connection) {
|
|
1437
1447
|
return clearUndef({
|
|
1438
1448
|
start: connection.start,
|
|
1439
|
-
end: connection.end
|
|
1449
|
+
end: connection.end,
|
|
1450
|
+
mode: connection.mode ?? "straight"
|
|
1440
1451
|
});
|
|
1441
1452
|
}
|
|
1442
1453
|
|
|
@@ -1735,8 +1746,35 @@ function getDefaultTextStyle() {
|
|
|
1735
1746
|
};
|
|
1736
1747
|
}
|
|
1737
1748
|
|
|
1749
|
+
const NUMERIC_STYLE_KEYS = [
|
|
1750
|
+
// textLineStyle
|
|
1751
|
+
"textIndent",
|
|
1752
|
+
"lineHeight",
|
|
1753
|
+
// textInlineStyle
|
|
1754
|
+
"letterSpacing",
|
|
1755
|
+
"wordSpacing",
|
|
1756
|
+
"fontSize",
|
|
1757
|
+
// textStyle
|
|
1758
|
+
"textStrokeWidth",
|
|
1759
|
+
// elementStyle
|
|
1760
|
+
"borderRadius",
|
|
1761
|
+
"opacity",
|
|
1762
|
+
// transformStyle
|
|
1763
|
+
"rotate",
|
|
1764
|
+
"scaleX",
|
|
1765
|
+
"scaleY",
|
|
1766
|
+
"skewX",
|
|
1767
|
+
"skewY",
|
|
1768
|
+
"translateX",
|
|
1769
|
+
"translateY",
|
|
1770
|
+
// layoutStyle
|
|
1771
|
+
"borderWidth",
|
|
1772
|
+
"flex",
|
|
1773
|
+
"flexGrow",
|
|
1774
|
+
"flexShrink"
|
|
1775
|
+
];
|
|
1738
1776
|
function normalizeStyle(style) {
|
|
1739
|
-
|
|
1777
|
+
const normalized = clearUndef({
|
|
1740
1778
|
...style,
|
|
1741
1779
|
color: isNone(style.color) ? void 0 : normalizeColor(style.color),
|
|
1742
1780
|
backgroundColor: isNone(style.backgroundColor) ? void 0 : normalizeColor(style.backgroundColor),
|
|
@@ -1745,6 +1783,17 @@ function normalizeStyle(style) {
|
|
|
1745
1783
|
shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor),
|
|
1746
1784
|
textStrokeColor: isNone(style.textStrokeColor) ? void 0 : normalizeColor(style.textStrokeColor)
|
|
1747
1785
|
});
|
|
1786
|
+
for (const key of NUMERIC_STYLE_KEYS) {
|
|
1787
|
+
if (key in normalized) {
|
|
1788
|
+
const value = normalizeNumber(normalized[key]);
|
|
1789
|
+
if (value === void 0) {
|
|
1790
|
+
delete normalized[key];
|
|
1791
|
+
} else {
|
|
1792
|
+
normalized[key] = value;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
return normalized;
|
|
1748
1797
|
}
|
|
1749
1798
|
function getDefaultStyle() {
|
|
1750
1799
|
return {
|
|
@@ -1867,6 +1916,13 @@ function isParagraphObject(value) {
|
|
|
1867
1916
|
function isFragmentObject(value) {
|
|
1868
1917
|
return value && typeof value === "object" && "content" in value && typeof value.content === "string";
|
|
1869
1918
|
}
|
|
1919
|
+
function normalizeTextDeformation(deformation) {
|
|
1920
|
+
return clearUndef({
|
|
1921
|
+
type: deformation.type,
|
|
1922
|
+
intensities: deformation.intensities,
|
|
1923
|
+
maxFontSize: deformation.maxFontSize ?? 100
|
|
1924
|
+
});
|
|
1925
|
+
}
|
|
1870
1926
|
function normalizeText(value) {
|
|
1871
1927
|
if (typeof value === "string" || Array.isArray(value)) {
|
|
1872
1928
|
return {
|
|
@@ -1878,6 +1934,7 @@ function normalizeText(value) {
|
|
|
1878
1934
|
enabled: value.enabled ?? true,
|
|
1879
1935
|
content: normalizeTextContent(value.content ?? ""),
|
|
1880
1936
|
style: value.style ? normalizeStyle(value.style) : void 0,
|
|
1937
|
+
deformation: value.deformation ? normalizeTextDeformation(value.deformation) : void 0,
|
|
1881
1938
|
measureDom: value.measureDom,
|
|
1882
1939
|
fonts: value.fonts,
|
|
1883
1940
|
...normalizeEffect(value),
|
|
@@ -2038,6 +2095,7 @@ exports.normalizeForeground = normalizeForeground;
|
|
|
2038
2095
|
exports.normalizeGradient = normalizeGradient;
|
|
2039
2096
|
exports.normalizeGradientFill = normalizeGradientFill;
|
|
2040
2097
|
exports.normalizeImageFill = normalizeImageFill;
|
|
2098
|
+
exports.normalizeNumber = normalizeNumber;
|
|
2041
2099
|
exports.normalizeOutline = normalizeOutline;
|
|
2042
2100
|
exports.normalizePresetFill = normalizePresetFill;
|
|
2043
2101
|
exports.normalizeShadow = normalizeShadow;
|
|
@@ -2045,6 +2103,7 @@ exports.normalizeShape = normalizeShape;
|
|
|
2045
2103
|
exports.normalizeStyle = normalizeStyle;
|
|
2046
2104
|
exports.normalizeText = normalizeText;
|
|
2047
2105
|
exports.normalizeTextContent = normalizeTextContent;
|
|
2106
|
+
exports.normalizeTextDeformation = normalizeTextDeformation;
|
|
2048
2107
|
exports.normalizeVideo = normalizeVideo;
|
|
2049
2108
|
exports.parseColor = parseColor;
|
|
2050
2109
|
exports.parseGradient = parseGradient;
|
package/dist/index.d.cts
CHANGED
|
@@ -334,6 +334,7 @@ interface NormalizedBackgroundStyle {
|
|
|
334
334
|
}
|
|
335
335
|
declare function getDefaultBackgroundStyle(): NormalizedBackgroundStyle;
|
|
336
336
|
|
|
337
|
+
type ConnectionMode = 'straight' | 'orthogonal' | 'curved';
|
|
337
338
|
interface ConnectionAnchor {
|
|
338
339
|
id: string;
|
|
339
340
|
idx?: number;
|
|
@@ -341,10 +342,12 @@ interface ConnectionAnchor {
|
|
|
341
342
|
interface Connection {
|
|
342
343
|
start?: ConnectionAnchor;
|
|
343
344
|
end?: ConnectionAnchor;
|
|
345
|
+
mode?: ConnectionMode;
|
|
344
346
|
}
|
|
345
347
|
interface NormalizedConnection {
|
|
346
348
|
start?: ConnectionAnchor;
|
|
347
349
|
end?: ConnectionAnchor;
|
|
350
|
+
mode: ConnectionMode;
|
|
348
351
|
}
|
|
349
352
|
declare function normalizeConnection(connection: Connection): NormalizedConnection;
|
|
350
353
|
|
|
@@ -737,9 +740,20 @@ interface NormalizedParagraph extends NormalizedStyle {
|
|
|
737
740
|
type FlatTextContent = string | FragmentObject | ParagraphObject | (string | FragmentObject)[];
|
|
738
741
|
type TextContent = FlatTextContent | FlatTextContent[];
|
|
739
742
|
type NormalizedTextContent = NormalizedParagraph[];
|
|
743
|
+
interface TextDeformation {
|
|
744
|
+
type: string;
|
|
745
|
+
intensities?: number[];
|
|
746
|
+
maxFontSize?: number;
|
|
747
|
+
}
|
|
748
|
+
interface NormalizedTextDeformation {
|
|
749
|
+
type: string;
|
|
750
|
+
intensities?: number[];
|
|
751
|
+
maxFontSize: number;
|
|
752
|
+
}
|
|
740
753
|
interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleable> {
|
|
741
754
|
content?: TextContent;
|
|
742
755
|
style?: Style;
|
|
756
|
+
deformation?: TextDeformation;
|
|
743
757
|
measureDom?: any;
|
|
744
758
|
fonts?: any;
|
|
745
759
|
effects?: Effect[];
|
|
@@ -747,6 +761,7 @@ interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleabl
|
|
|
747
761
|
interface NormalizedText extends Pick<NormalizedEffect, 'fill' | 'outline'>, Toggleable {
|
|
748
762
|
content: NormalizedTextContent;
|
|
749
763
|
style?: NormalizedStyle;
|
|
764
|
+
deformation?: NormalizedTextDeformation;
|
|
750
765
|
effects?: NormalizedEffect[];
|
|
751
766
|
measureDom?: any;
|
|
752
767
|
fonts?: any;
|
|
@@ -757,6 +772,7 @@ declare function normalizeCRLF(content: string): string;
|
|
|
757
772
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
758
773
|
declare function isParagraphObject(value: any): value is ParagraphObject;
|
|
759
774
|
declare function isFragmentObject(value: any): value is FragmentObject;
|
|
775
|
+
declare function normalizeTextDeformation(deformation: TextDeformation): NormalizedTextDeformation;
|
|
760
776
|
declare function normalizeText(value: Text): NormalizedText;
|
|
761
777
|
declare function textContentToString(value: TextContent): string;
|
|
762
778
|
|
|
@@ -846,6 +862,13 @@ declare class EventEmitter<T extends Record<string, any> = Record<string, any>>
|
|
|
846
862
|
|
|
847
863
|
declare function isNone<T>(value: T): value is Extract<T, null | undefined | '' | 'none'>;
|
|
848
864
|
declare function round(number: number, digits?: number, base?: number): number;
|
|
865
|
+
/**
|
|
866
|
+
* Defensively coerce an unknown value to a finite number.
|
|
867
|
+
* - number: returned as-is when finite, otherwise `fallback`
|
|
868
|
+
* - string: parsed via parseFloat (e.g. '20' / '20px' -> 20), `fallback` when not finite
|
|
869
|
+
* - anything else: `fallback`
|
|
870
|
+
*/
|
|
871
|
+
declare function normalizeNumber(value: unknown, fallback?: number): number | undefined;
|
|
849
872
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
850
873
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
851
874
|
|
|
@@ -921,5 +944,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
|
|
|
921
944
|
destroy(): void;
|
|
922
945
|
}
|
|
923
946
|
|
|
924
|
-
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
925
|
-
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
|
947
|
+
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeNumber, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeTextDeformation, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
948
|
+
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, ConnectionMode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDeformation, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextDeformation, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
package/dist/index.d.mts
CHANGED
|
@@ -334,6 +334,7 @@ interface NormalizedBackgroundStyle {
|
|
|
334
334
|
}
|
|
335
335
|
declare function getDefaultBackgroundStyle(): NormalizedBackgroundStyle;
|
|
336
336
|
|
|
337
|
+
type ConnectionMode = 'straight' | 'orthogonal' | 'curved';
|
|
337
338
|
interface ConnectionAnchor {
|
|
338
339
|
id: string;
|
|
339
340
|
idx?: number;
|
|
@@ -341,10 +342,12 @@ interface ConnectionAnchor {
|
|
|
341
342
|
interface Connection {
|
|
342
343
|
start?: ConnectionAnchor;
|
|
343
344
|
end?: ConnectionAnchor;
|
|
345
|
+
mode?: ConnectionMode;
|
|
344
346
|
}
|
|
345
347
|
interface NormalizedConnection {
|
|
346
348
|
start?: ConnectionAnchor;
|
|
347
349
|
end?: ConnectionAnchor;
|
|
350
|
+
mode: ConnectionMode;
|
|
348
351
|
}
|
|
349
352
|
declare function normalizeConnection(connection: Connection): NormalizedConnection;
|
|
350
353
|
|
|
@@ -737,9 +740,20 @@ interface NormalizedParagraph extends NormalizedStyle {
|
|
|
737
740
|
type FlatTextContent = string | FragmentObject | ParagraphObject | (string | FragmentObject)[];
|
|
738
741
|
type TextContent = FlatTextContent | FlatTextContent[];
|
|
739
742
|
type NormalizedTextContent = NormalizedParagraph[];
|
|
743
|
+
interface TextDeformation {
|
|
744
|
+
type: string;
|
|
745
|
+
intensities?: number[];
|
|
746
|
+
maxFontSize?: number;
|
|
747
|
+
}
|
|
748
|
+
interface NormalizedTextDeformation {
|
|
749
|
+
type: string;
|
|
750
|
+
intensities?: number[];
|
|
751
|
+
maxFontSize: number;
|
|
752
|
+
}
|
|
740
753
|
interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleable> {
|
|
741
754
|
content?: TextContent;
|
|
742
755
|
style?: Style;
|
|
756
|
+
deformation?: TextDeformation;
|
|
743
757
|
measureDom?: any;
|
|
744
758
|
fonts?: any;
|
|
745
759
|
effects?: Effect[];
|
|
@@ -747,6 +761,7 @@ interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleabl
|
|
|
747
761
|
interface NormalizedText extends Pick<NormalizedEffect, 'fill' | 'outline'>, Toggleable {
|
|
748
762
|
content: NormalizedTextContent;
|
|
749
763
|
style?: NormalizedStyle;
|
|
764
|
+
deformation?: NormalizedTextDeformation;
|
|
750
765
|
effects?: NormalizedEffect[];
|
|
751
766
|
measureDom?: any;
|
|
752
767
|
fonts?: any;
|
|
@@ -757,6 +772,7 @@ declare function normalizeCRLF(content: string): string;
|
|
|
757
772
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
758
773
|
declare function isParagraphObject(value: any): value is ParagraphObject;
|
|
759
774
|
declare function isFragmentObject(value: any): value is FragmentObject;
|
|
775
|
+
declare function normalizeTextDeformation(deformation: TextDeformation): NormalizedTextDeformation;
|
|
760
776
|
declare function normalizeText(value: Text): NormalizedText;
|
|
761
777
|
declare function textContentToString(value: TextContent): string;
|
|
762
778
|
|
|
@@ -846,6 +862,13 @@ declare class EventEmitter<T extends Record<string, any> = Record<string, any>>
|
|
|
846
862
|
|
|
847
863
|
declare function isNone<T>(value: T): value is Extract<T, null | undefined | '' | 'none'>;
|
|
848
864
|
declare function round(number: number, digits?: number, base?: number): number;
|
|
865
|
+
/**
|
|
866
|
+
* Defensively coerce an unknown value to a finite number.
|
|
867
|
+
* - number: returned as-is when finite, otherwise `fallback`
|
|
868
|
+
* - string: parsed via parseFloat (e.g. '20' / '20px' -> 20), `fallback` when not finite
|
|
869
|
+
* - anything else: `fallback`
|
|
870
|
+
*/
|
|
871
|
+
declare function normalizeNumber(value: unknown, fallback?: number): number | undefined;
|
|
849
872
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
850
873
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
851
874
|
|
|
@@ -921,5 +944,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
|
|
|
921
944
|
destroy(): void;
|
|
922
945
|
}
|
|
923
946
|
|
|
924
|
-
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
925
|
-
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
|
947
|
+
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeNumber, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeTextDeformation, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
948
|
+
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, ConnectionMode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDeformation, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextDeformation, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
package/dist/index.d.ts
CHANGED
|
@@ -334,6 +334,7 @@ interface NormalizedBackgroundStyle {
|
|
|
334
334
|
}
|
|
335
335
|
declare function getDefaultBackgroundStyle(): NormalizedBackgroundStyle;
|
|
336
336
|
|
|
337
|
+
type ConnectionMode = 'straight' | 'orthogonal' | 'curved';
|
|
337
338
|
interface ConnectionAnchor {
|
|
338
339
|
id: string;
|
|
339
340
|
idx?: number;
|
|
@@ -341,10 +342,12 @@ interface ConnectionAnchor {
|
|
|
341
342
|
interface Connection {
|
|
342
343
|
start?: ConnectionAnchor;
|
|
343
344
|
end?: ConnectionAnchor;
|
|
345
|
+
mode?: ConnectionMode;
|
|
344
346
|
}
|
|
345
347
|
interface NormalizedConnection {
|
|
346
348
|
start?: ConnectionAnchor;
|
|
347
349
|
end?: ConnectionAnchor;
|
|
350
|
+
mode: ConnectionMode;
|
|
348
351
|
}
|
|
349
352
|
declare function normalizeConnection(connection: Connection): NormalizedConnection;
|
|
350
353
|
|
|
@@ -737,9 +740,20 @@ interface NormalizedParagraph extends NormalizedStyle {
|
|
|
737
740
|
type FlatTextContent = string | FragmentObject | ParagraphObject | (string | FragmentObject)[];
|
|
738
741
|
type TextContent = FlatTextContent | FlatTextContent[];
|
|
739
742
|
type NormalizedTextContent = NormalizedParagraph[];
|
|
743
|
+
interface TextDeformation {
|
|
744
|
+
type: string;
|
|
745
|
+
intensities?: number[];
|
|
746
|
+
maxFontSize?: number;
|
|
747
|
+
}
|
|
748
|
+
interface NormalizedTextDeformation {
|
|
749
|
+
type: string;
|
|
750
|
+
intensities?: number[];
|
|
751
|
+
maxFontSize: number;
|
|
752
|
+
}
|
|
740
753
|
interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleable> {
|
|
741
754
|
content?: TextContent;
|
|
742
755
|
style?: Style;
|
|
756
|
+
deformation?: TextDeformation;
|
|
743
757
|
measureDom?: any;
|
|
744
758
|
fonts?: any;
|
|
745
759
|
effects?: Effect[];
|
|
@@ -747,6 +761,7 @@ interface TextObject extends Pick<Effect, 'fill' | 'outline'>, Partial<Toggleabl
|
|
|
747
761
|
interface NormalizedText extends Pick<NormalizedEffect, 'fill' | 'outline'>, Toggleable {
|
|
748
762
|
content: NormalizedTextContent;
|
|
749
763
|
style?: NormalizedStyle;
|
|
764
|
+
deformation?: NormalizedTextDeformation;
|
|
750
765
|
effects?: NormalizedEffect[];
|
|
751
766
|
measureDom?: any;
|
|
752
767
|
fonts?: any;
|
|
@@ -757,6 +772,7 @@ declare function normalizeCRLF(content: string): string;
|
|
|
757
772
|
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
|
|
758
773
|
declare function isParagraphObject(value: any): value is ParagraphObject;
|
|
759
774
|
declare function isFragmentObject(value: any): value is FragmentObject;
|
|
775
|
+
declare function normalizeTextDeformation(deformation: TextDeformation): NormalizedTextDeformation;
|
|
760
776
|
declare function normalizeText(value: Text): NormalizedText;
|
|
761
777
|
declare function textContentToString(value: TextContent): string;
|
|
762
778
|
|
|
@@ -846,6 +862,13 @@ declare class EventEmitter<T extends Record<string, any> = Record<string, any>>
|
|
|
846
862
|
|
|
847
863
|
declare function isNone<T>(value: T): value is Extract<T, null | undefined | '' | 'none'>;
|
|
848
864
|
declare function round(number: number, digits?: number, base?: number): number;
|
|
865
|
+
/**
|
|
866
|
+
* Defensively coerce an unknown value to a finite number.
|
|
867
|
+
* - number: returned as-is when finite, otherwise `fallback`
|
|
868
|
+
* - string: parsed via parseFloat (e.g. '20' / '20px' -> 20), `fallback` when not finite
|
|
869
|
+
* - anything else: `fallback`
|
|
870
|
+
*/
|
|
871
|
+
declare function normalizeNumber(value: unknown, fallback?: number): number | undefined;
|
|
849
872
|
declare function clearUndef<T>(obj: T, deep?: boolean): T;
|
|
850
873
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
851
874
|
|
|
@@ -921,5 +944,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
|
|
|
921
944
|
destroy(): void;
|
|
922
945
|
}
|
|
923
946
|
|
|
924
|
-
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
925
|
-
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
|
947
|
+
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeNumber, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeTextDeformation, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
948
|
+
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, Connection, ConnectionAnchor, ConnectionMode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, Element, EmNode, EventListener, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBackgroundStyle, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedConnection, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOutline, NormalizedOutlineStyle, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDeformation, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeConnectionPoint, ShapeNode, ShapePath, ShapePathStyle, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextDeformation, TextObject, TextOrientation, TextTransform, TextWrap, Toggleable, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor, _EffectV0 };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.modernIdoc={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`?{src:e}:e}var n={grad:.9,turn:360,rad:360/(2*Math.PI)},r=function(e){return typeof e==`string`?e.length>0:typeof e==`number`},i=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=10**t),Math.round(n*e)/n+0},a=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e>t?e:t},o=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},s=function(e){return{r:a(e.r,0,255),g:a(e.g,0,255),b:a(e.b,0,255),a:a(e.a)}},c=function(e){return{r:i(e.r),g:i(e.g),b:i(e.b),a:i(e.a,3)}},l=/^#([0-9a-f]{3,8})$/i,u=function(e){var t=e.toString(16);return t.length<2?`0`+t:t},d=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,a=Math.max(t,n,r),o=a-Math.min(t,n,r),s=o?a===t?(n-r)/o:a===n?2+(r-t)/o:4+(t-n)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},f=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var a=Math.floor(t),o=r*(1-n),s=r*(1-(t-a)*n),c=r*(1-(1-t+a)*n),l=a%6;return{r:255*[r,s,o,o,c,r][l],g:255*[c,r,r,s,o,o][l],b:255*[o,o,c,r,r,s][l],a:i}},p=function(e){return{h:o(e.h),s:a(e.s,0,100),l:a(e.l,0,100),a:a(e.a)}},ee=function(e){return{h:i(e.h),s:i(e.s),l:i(e.l),a:i(e.a,3)}},m=function(e){return f((n=(t=e).s,{h:t.h,s:(n*=((r=t.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:t.a}));var t,n,r},h=function(e){return{h:(t=d(e)).h,s:(i=(200-(n=t.s))*(r=t.v)/100)>0&&i<200?n*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,n,r,i},g=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,te=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ne=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v={string:[[function(e){var t=l.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?i(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?i(parseInt(e.substr(6,2),16)/255,2):1}:null:null},`hex`],[function(e){var t=_.exec(e)||ne.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:s({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},`rgb`],[function(e){var t=g.exec(e)||te.exec(e);if(!t)return null;var r,i;return m(p({h:(r=t[1],i=t[2],i===void 0&&(i=`deg`),Number(r)*(n[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)}))},`hsl`]],object:[[function(e){var t=e.r,n=e.g,i=e.b,a=e.a,o=a===void 0?1:a;return r(t)&&r(n)&&r(i)?s({r:Number(t),g:Number(n),b:Number(i),a:Number(o)}):null},`rgb`],[function(e){var t=e.h,n=e.s,i=e.l,a=e.a,o=a===void 0?1:a;return!r(t)||!r(n)||!r(i)?null:m(p({h:Number(t),s:Number(n),l:Number(i),a:Number(o)}))},`hsl`],[function(e){var t=e.h,n=e.s,i=e.v,s=e.a,c=s===void 0?1:s;return!r(t)||!r(n)||!r(i)?null:f(function(e){return{h:o(e.h),s:a(e.s,0,100),v:a(e.v,0,100),a:a(e.a)}}({h:Number(t),s:Number(n),v:Number(i),a:Number(c)}))},`hsv`]]},y=function(e,t){for(var n=0;n<t.length;n++){var r=t[n][0](e);if(r)return[r,t[n][1]]}return[null,void 0]},re=function(e){return typeof e==`string`?y(e.trim(),v.string):typeof e==`object`&&e?y(e,v.object):[null,void 0]},b=function(e,t){var n=h(e);return{h:n.h,s:a(n.s+100*t,0,100),l:n.l,a:n.a}},x=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},S=function(e,t){var n=h(e);return{h:n.h,s:n.s,l:a(n.l+100*t,0,100),a:n.a}},ie=function(){function e(e){this.parsed=re(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return i(x(this.rgba),2)},e.prototype.isDark=function(){return x(this.rgba)<.5},e.prototype.isLight=function(){return x(this.rgba)>=.5},e.prototype.toHex=function(){return e=c(this.rgba),t=e.r,n=e.g,r=e.b,o=(a=e.a)<1?u(i(255*a)):``,`#`+u(t)+u(n)+u(r)+o;var e,t,n,r,a,o},e.prototype.toRgb=function(){return c(this.rgba)},e.prototype.toRgbString=function(){return e=c(this.rgba),t=e.r,n=e.g,r=e.b,(i=e.a)<1?`rgba(`+t+`, `+n+`, `+r+`, `+i+`)`:`rgb(`+t+`, `+n+`, `+r+`)`;var e,t,n,r,i},e.prototype.toHsl=function(){return ee(h(this.rgba))},e.prototype.toHslString=function(){return e=ee(h(this.rgba)),t=e.h,n=e.s,r=e.l,(i=e.a)<1?`hsla(`+t+`, `+n+`%, `+r+`%, `+i+`)`:`hsl(`+t+`, `+n+`%, `+r+`%)`;var e,t,n,r,i},e.prototype.toHsv=function(){return e=d(this.rgba),{h:i(e.h),s:i(e.s),v:i(e.v),a:i(e.a,3)};var e},e.prototype.invert=function(){return C({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return e===void 0&&(e=.1),C(b(this.rgba,e))},e.prototype.desaturate=function(e){return e===void 0&&(e=.1),C(b(this.rgba,-e))},e.prototype.grayscale=function(){return C(b(this.rgba,-1))},e.prototype.lighten=function(e){return e===void 0&&(e=.1),C(S(this.rgba,e))},e.prototype.darken=function(e){return e===void 0&&(e=.1),C(S(this.rgba,-e))},e.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return typeof e==`number`?C({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):i(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=h(this.rgba);return typeof e==`number`?C({h:e,s:t.s,l:t.l,a:t.a}):i(t.h)},e.prototype.isEqual=function(e){return this.toHex()===C(e).toHex()},e}(),C=function(e){return e instanceof ie?e:new ie(e)},ae=class{eventListeners=new Map;addEventListener(e,t,n){let r={value:t,options:n},i=this.eventListeners.get(e);return i?Array.isArray(i)?i.push(r):this.eventListeners.set(e,[i,r]):this.eventListeners.set(e,r),this}removeEventListener(e,t,n){if(!t)return this.eventListeners.delete(e),this;let r=this.eventListeners.get(e);if(!r)return this;if(Array.isArray(r)){let i=[];for(let e=0,a=r.length;e<a;e++){let a=r[e];(a.value!==t||typeof n==`object`&&n?.once&&(typeof a.options==`boolean`||!a.options?.once))&&i.push(a)}i.length?this.eventListeners.set(e,i.length===1?i[0]:i):this.eventListeners.delete(e)}else r.value===t&&(typeof n==`boolean`||!n?.once||typeof r.options==`boolean`||r.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...t){let n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let r=n.length,i=0;i<r;i++){let r=n[i];typeof r.options==`object`&&r.options?.once&&this.off(e,r.value,r.options),r.value.apply(this,t)}else typeof n.options==`object`&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,t);return!0}else return!1}on(e,t,n){return this.addEventListener(e,t,n)}once(e,t){return this.addEventListener(e,t,{once:!0})}off(e,t,n){return this.removeEventListener(e,t,n)}emit(e,...t){this.dispatchEvent(e,...t)}};function w(e){return e==null||e===``||e===`none`}function T(e,t=0,n=10**t){return Math.round(n*e)/n+0}function E(e,t=!1){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return t?e.map(e=>E(e,t)):e;let n={};for(let r in e){let i=e[r];i!=null&&(t?n[r]=E(i,t):n[r]=i)}return n}function D(e,t){let n={};return t.forEach(t=>{t in e&&(n[t]=e[t])}),n}function O(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){let n=Array.from(new Set([...Object.keys(e),...Object.keys(t)]));return!n.length||n.every(n=>e[n]===t[n])}return!1}function k(e,t,n){let r=t.length-1;if(r<0)return e===void 0?n:e;for(let i=0;i<r;i++){if(e==null)return n;e=e[t[i]]}return e==null||e[t[r]]===void 0?n:e[t[r]]}function A(e,t,n){let r=t.length-1;for(let n=0;n<r;n++)typeof e[t[n]]!=`object`&&(e[t[n]]={}),e=e[t[n]];e[t[r]]=n}function j(e,t,n){return e==null||!t||typeof t!=`string`?n:e[t]===void 0?(t=t.replace(/\[(\w+)\]/g,`.$1`),t=t.replace(/^\./,``),k(e,t.split(`.`),n)):e[t]}function oe(e,t,n){if(!(typeof e!=`object`||!t))return t=t.replace(/\[(\w+)\]/g,`.$1`),t=t.replace(/^\./,``),A(e,t.split(`.`),n)}var se=class{_eventListeners={};on(e,t){let n=this._eventListeners[e];n===void 0&&(n=[],this._eventListeners[e]=n);let r=n.indexOf(t);return r>-1&&n.splice(r,1),n.push(t),this}once(e,t){let n=(...r)=>{this.off(e,n),t.apply(this,r)};return this.on(e,n),this}off(e,t){let n=this._eventListeners[e];if(n!==void 0){let e=n.indexOf(t);e>-1&&n.splice(e,1)}return this}emit(e,...t){let n=this._eventListeners[e];if(n!==void 0){let e=n.length;if(e>0)for(let r=0;r<e;r++)n[r].apply(this,t)}return this}removeAllListeners(){return this._eventListeners={},this}hasEventListener(e){return!!this._eventListeners[e]}destroy(){this.removeAllListeners()}},ce=class{_map=new WeakMap;_toRaw(e){if(e&&typeof e==`object`){let t=e.__v_raw;t&&(e=this._toRaw(t))}return e}delete(e){return this._map.delete(this._toRaw(e))}get(e){return this._map.get(this._toRaw(e))}has(e){return this._map.has(this._toRaw(e))}set(e,t){return this._map.set(this._toRaw(e),this._toRaw(t)),this}},le=Symbol.for(`declarations`),M=Symbol.for(`inited`);function N(e){let t;if(Object.hasOwn(e,le))t=e[le];else{let n=Object.getPrototypeOf(e);t={...n?N(n):{}},e[le]=t}return t}function P(e,t,n,r){let{alias:i,internalKey:a}=r,o=e[t];i?oe(e,i,n):e[a]=n,e.onUpdateProperty?.(t,n??I(e,t,r),o)}function F(e,t,n){let{alias:r,internalKey:i}=n,a;return a=r?j(e,r):e[i],a??=I(e,t,n),a}function I(e,t,n){let{default:r,fallback:i}=n,a;if(r!==void 0&&!e[M]?.[t]){e[M]||(e[M]={}),e[M][t]=!0;let n=typeof r==`function`?r():r;n!==void 0&&(e[t]=n,a=n)}return a===void 0&&i!==void 0&&(a=typeof i==`function`?i():i),a}function L(e,t){function n(){return this.getProperty?this.getProperty(e):F(this,e,t)}function r(n){this.setProperty?this.setProperty(e,n):P(this,e,n,t)}return{get:n,set:r}}function ue(e,t,n={}){let r={...n,internalKey:Symbol.for(t)},i=N(e);i[t]=r;let{get:a,set:o}=L(t,r);Object.defineProperty(e.prototype,t,{get(){return a.call(this)},set(e){o.call(this,e)},configurable:!0,enumerable:!0})}function de(e){return function(t,n){if(typeof n!=`string`)throw TypeError(`Failed to @property decorator, prop name cannot be a symbol`);ue(t.constructor,n,e)}}function fe(e={}){return function(t,n){let r=n.name;if(typeof r!=`string`)throw TypeError(`Failed to @property decorator, prop name cannot be a symbol`);let i={...e,internalKey:Symbol.for(r)},a=L(r,i);return{init(e){let t=N(this.constructor);return t[r]=i,a.set.call(this,e),e},get(){return a.get.call(this)},set(e){a.set.call(this,e)}}}}var pe=class extends se{_propertyAccessor;_properties={};_updatedProperties={};_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?!!this._updatedProperties[e]:Object.keys(this._updatedProperties).length>0}offsetGetProperty(e){return this._properties[e]}offsetSetProperty(e,t){this._properties[e]=t}offsetGetProperties(e){let t=this._properties,n=Object.keys(t),r={};for(let i,a,o=0;o<n.length;o++)i=n[o],a=t[i],a!==void 0&&(!e||e.includes(i))&&(a&&typeof a==`object`?`toJSON`in a?r[i]=a.toJSON():Array.isArray(a)?r[i]=[...a]:r[i]={...a}:r[i]=a);return r}offsetSetProperties(e){if(e&&typeof e==`object`){let t=Object.keys(e);for(let n,r=0;r<t.length;r++)n=t[r],this.offsetSetProperty(n,e[n])}return this}getProperty(e){let t=this.getPropertyDeclaration(e);if(t){if(t.internal||t.alias)return F(this,e,t);{let n=this._propertyAccessor,r;return r=n&&n.getProperty?n.getProperty(e):this.offsetGetProperty(e),r??I(this,e,t)}}}setProperty(e,t){let n=this.getPropertyDeclaration(e);if(n)if(n.internal||n.alias)P(this,e,t,n);else{let r=this.getProperty(e);this._propertyAccessor?.setProperty?.(e,t),this.offsetSetProperty(e,t),this.onUpdateProperty?.(e,t??I(this,e,n),r)}}getProperties(e){let t={},n=this.getPropertyDeclarations(),r=Object.keys(n);for(let i=0,a=r.length;i<a;i++){let a=r[i],o=n[a];o.internal||o.alias||(!e||e.includes(a))&&(t[a]=this.getProperty(a))}return t}setProperties(e){if(e&&typeof e==`object`)for(let t in e)this.setProperty(t,e[t]);return this}resetProperties(){let e=this.getPropertyDeclarations(),t=Object.keys(e);for(let n=0,r=t.length;n<r;n++){let r=t[n],i=e[r];this.setProperty(r,typeof i.default==`function`?i.default():i.default)}return this}getPropertyDeclarations(){return N(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations()[e]}setPropertyAccessor(e){let t=this.getPropertyDeclarations(),n=[];if(e&&e.getProperty&&e.setProperty){let r=Object.keys(t);for(let i=0,a=r.length;i<a;i++){let a=r[i],o=t[a];if(o.internal||o.alias)continue;let s=this.offsetGetProperty(a),c=e.getProperty(a);c!==void 0&&!Object.is(s,c)&&(this.offsetSetProperty(a,c),n.push({key:a,newValue:c,oldValue:s}))}}this._propertyAccessor=e;for(let e=0,t=n.length;e<t;e++){let{key:t,newValue:r,oldValue:i}=n[e];this.requestUpdate(t,r,i)}return this}async _nextTick(){return`requestAnimationFrame`in globalThis?new Promise(e=>globalThis.requestAnimationFrame(e)):Promise.resolve()}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await this._nextTick(),this._updating&&=(this.onUpdate(),!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties={}}onUpdateProperty(e,t,n){Object.is(t,n)||this.requestUpdate(e,t,n)}requestUpdate(e,t,n){e!==void 0&&(this._updatedProperties[e]=n,this._changedProperties.add(e),this._updateProperty(e,t,n),this.emit(`updateProperty`,e,t,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,t,n){}toJSON(){return this.offsetGetProperties()}clone(){return new this.constructor(this.toJSON())}destroy(){this.emit(`destroy`),super.destroy()}};function R(e){let t;return t=typeof e==`number`?{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:(e&255)/255}:e,C(t)}function me(e){return{r:T(e.r),g:T(e.g),b:T(e.b),a:T(e.a,3)}}function z(e){let t=e.toString(16);return t.length<2?`0${t}`:t}var B=`#000000FF`;function V(e){return R(e).isValid()}function H(e,t=!1){let n=R(e);if(!n.isValid()){if(typeof e==`string`)return e;let n=`Failed to normalizeColor ${e}`;if(t)throw Error(n);return console.warn(n),B}let{r,g:i,b:a,a:o}=me(n.rgba);return`#${z(r)}${z(i)}${z(a)}${z(T(o*255))}`}var U=U||{};U.parse=(function(){let e={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},t=``;function n(e){let n=Error(`${t}: ${e}`);throw n.source=t,n}function r(){let e=i();return t.length>0&&n(`Invalid input not EOF`),e}function i(){return _(a)}function a(){return o(`linear-gradient`,e.linearGradient,c)||o(`repeating-linear-gradient`,e.repeatingLinearGradient,c)||o(`radial-gradient`,e.radialGradient,d)||o(`repeating-radial-gradient`,e.repeatingRadialGradient,d)}function o(t,r,i){return s(r,r=>{let a=i();return a&&(A(e.comma)||n(`Missing comma before color stops`)),{type:t,orientation:a,colorStops:_(ne)}})}function s(t,r){let i=A(t);if(i){A(e.startCall)||n(`Missing (`);let t=r(i);return A(e.endCall)||n(`Missing )`),t}}function c(){let t=l();if(t)return t;let n=k(`position-keyword`,e.positionKeywords,1);return n?{type:`directional`,value:n.value}:u()}function l(){return k(`directional`,e.sideOrCorner,1)}function u(){return k(`angular`,e.angleValue,1)||k(`angular`,e.radianValue,1)}function d(){let n,r=f(),i;return r&&(n=[],n.push(r),i=t,A(e.comma)&&(r=f(),r?n.push(r):t=i)),n}function f(){let e=p()||ee();if(e)e.at=h();else{let t=m();if(t){e=t;let n=h();n&&(e.at=n)}else{let t=h();if(t)e={type:`default-radial`,at:t};else{let t=g();t&&(e={type:`default-radial`,at:t})}}}return e}function p(){let e=k(`shape`,/^(circle)/i,0);return e&&(e.style=O()||m()),e}function ee(){let e=k(`shape`,/^(ellipse)/i,0);return e&&(e.style=g()||T()||m()),e}function m(){return k(`extent-keyword`,e.extentKeywords,1)}function h(){if(k(`position`,/^at/,0)){let e=g();return e||n(`Missing positioning value`),e}}function g(){let e=te();if(e.x||e.y)return{type:`position`,value:e}}function te(){return{x:T(),y:T()}}function _(t){let r=t(),i=[];if(r)for(i.push(r);A(e.comma);)r=t(),r?i.push(r):n(`One extra comma`);return i}function ne(){let e=v();return e||n(`Expected color definition`),e.length=T(),e}function v(){return re()||C()||ie()||x()||b()||S()||y()}function y(){return k(`literal`,e.literalColor,0)}function re(){return k(`hex`,e.hexColor,1)}function b(){return s(e.rgbColor,()=>({type:`rgb`,value:_(w)}))}function x(){return s(e.rgbaColor,()=>({type:`rgba`,value:_(w)}))}function S(){return s(e.varColor,()=>({type:`var`,value:ae()}))}function ie(){return s(e.hslColor,()=>{A(e.percentageValue)&&n(`HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage`);let t=w();A(e.comma);let r=A(e.percentageValue),i=r?r[1]:null;A(e.comma),r=A(e.percentageValue);let a=r?r[1]:null;return(!i||!a)&&n(`Expected percentage value for saturation and lightness in HSL`),{type:`hsl`,value:[t,i,a]}})}function C(){return s(e.hslaColor,()=>{let t=w();A(e.comma);let r=A(e.percentageValue),i=r?r[1]:null;A(e.comma),r=A(e.percentageValue);let a=r?r[1]:null;A(e.comma);let o=w();return(!i||!a)&&n(`Expected percentage value for saturation and lightness in HSLA`),{type:`hsla`,value:[t,i,a,o]}})}function ae(){return A(e.variableName)[1]}function w(){return A(e.number)[1]}function T(){return k(`%`,e.percentageValue,1)||E()||D()||O()}function E(){return k(`position-keyword`,e.positionKeywords,1)}function D(){return s(e.calcValue,()=>{let e=1,r=0;for(;e>0&&r<t.length;){let n=t.charAt(r);n===`(`?e++:n===`)`&&e--,r++}e>0&&n(`Missing closing parenthesis in calc() expression`);let i=t.substring(0,r-1);return j(r-1),{type:`calc`,value:i}})}function O(){return k(`px`,e.pixelValue,1)||k(`em`,e.emValue,1)}function k(e,t,n){let r=A(t);if(r)return{type:e,value:r[n]}}function A(e){let n,r;return r=/^\s+/.exec(t),r&&j(r[0].length),n=e.exec(t),n&&j(n[0].length),n}function j(e){t=t.substr(e)}return function(e){return t=e.toString().trim(),t.endsWith(`;`)&&(t=t.slice(0,-1)),r()}})();var he=U.parse.bind(U),W=W||{};W.stringify=(function(){var e={"visit_linear-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return e.visit_gradient(t)},"visit_radial-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return e.visit_gradient(t)},visit_gradient:function(t){var n=e.visit(t.orientation);return n&&(n+=`, `),t.type+`(`+n+e.visit(t.colorStops)+`)`},visit_shape:function(t){var n=t.value,r=e.visit(t.at),i=e.visit(t.style);return i&&(n+=` `+i),r&&(n+=` at `+r),n},"visit_default-radial":function(t){var n=``,r=e.visit(t.at);return r&&(n+=r),n},"visit_extent-keyword":function(t){var n=t.value,r=e.visit(t.at);return r&&(n+=` at `+r),n},"visit_position-keyword":function(e){return e.value},visit_position:function(t){return e.visit(t.value.x)+` `+e.visit(t.value.y)},"visit_%":function(e){return e.value+`%`},visit_em:function(e){return e.value+`em`},visit_px:function(e){return e.value+`px`},visit_calc:function(e){return`calc(`+e.value+`)`},visit_literal:function(t){return e.visit_color(t.value,t)},visit_hex:function(t){return e.visit_color(`#`+t.value,t)},visit_rgb:function(t){return e.visit_color(`rgb(`+t.value.join(`, `)+`)`,t)},visit_rgba:function(t){return e.visit_color(`rgba(`+t.value.join(`, `)+`)`,t)},visit_hsl:function(t){return e.visit_color(`hsl(`+t.value[0]+`, `+t.value[1]+`%, `+t.value[2]+`%)`,t)},visit_hsla:function(t){return e.visit_color(`hsla(`+t.value[0]+`, `+t.value[1]+`%, `+t.value[2]+`%, `+t.value[3]+`)`,t)},visit_var:function(t){return e.visit_color(`var(`+t.value+`)`,t)},visit_color:function(t,n){var r=t,i=e.visit(n.length);return i&&(r+=` `+i),r},visit_angular:function(e){return e.value+`deg`},visit_directional:function(e){return`to `+e.value},visit_array:function(t){var n=``,r=t.length;return t.forEach(function(t,i){n+=e.visit(t),i<r-1&&(n+=`, `)}),n},visit_object:function(t){return t.width&&t.height?e.visit(t.width)+` `+e.visit(t.height):``},visit:function(t){if(!t)return``;if(t instanceof Array)return e.visit_array(t);if(typeof t==`object`&&!t.type)return e.visit_object(t);if(t.type){var n=e[`visit_`+t.type];if(n)return n(t);throw Error(`Missing visitor visit_`+t.type)}else throw Error(`Invalid node.`)}};return function(t){return e.visit(t)}})();var ge=W.stringify.bind(W);function _e(e){let t=e.length-1;return e.map((e,n)=>{let r=e.value,i=T(n/t,3),a=`#00000000`;switch(e.type){case`rgb`:a=H({r:Number(r[0]??0),g:Number(r[1]??0),b:Number(r[2]??0)});break;case`rgba`:a=H({r:Number(r[0]??0),g:Number(r[1]??0),b:Number(r[2]??0),a:Number(r[3]??0)});break;case`literal`:a=H(e.value);break;case`hex`:a=H(`#${e.value}`);break}switch(e.length?.type){case`%`:i=Number(e.length.value)/100;break;case`px`:break;case`em`:break}return{offset:i,color:a}})}function ve(e){let t=0;switch(e.orientation?.type){case`angular`:t=Number(e.orientation.value);break;case`directional`:break}return{type:`linear-gradient`,angle:t,stops:_e(e.colorStops)}}function ye(e){return e.orientation?.map(e=>{switch(e?.type){default:return null}}),{type:`radial-gradient`,stops:_e(e.colorStops)}}function G(e){return e.startsWith(`linear-gradient(`)||e.startsWith(`radial-gradient(`)}function be(e){return he(e).map(e=>{switch(e?.type){case`linear-gradient`:return ve(e);case`repeating-linear-gradient`:return{...ve(e),repeat:!0};case`radial-gradient`:return ye(e);case`repeating-radial-gradient`:return{...ye(e),repeat:!0};default:return}}).filter(Boolean)}var K=[`color`];function xe(e){let t;return t=typeof e==`string`?{color:e}:{...e},t.color&&=H(t.color),D(t,K)}var q=[`linearGradient`,`radialGradient`,`rotateWithShape`];function Se(e){let t;if(t=typeof e==`string`?{image:e}:{...e},t.image){let{type:e,...n}=be(t.image)[0]??{};switch(e){case`radial-gradient`:return{radialGradient:n};case`linear-gradient`:return{linearGradient:n}}}return D(t,q)}var Ce=[`image`,`cropRect`,`stretchRect`,`tile`,`dpi`,`opacity`,`rotateWithShape`];function we(e){let t;return t=typeof e==`string`?{image:e}:{...e},D(t,Ce)}var Te=[`preset`,`foregroundColor`,`backgroundColor`];function Ee(e){let t;return t=typeof e==`string`?{preset:e}:{...e},w(t.foregroundColor)?delete t.foregroundColor:t.foregroundColor=H(t.foregroundColor),w(t.backgroundColor)?delete t.backgroundColor:t.backgroundColor=H(t.backgroundColor),D(t,Te)}function De(e){return!w(e.color)}function Oe(e){return typeof e==`string`?V(e):De(e)}function ke(e){return!w(e.image)&&G(e.image)||!!e.linearGradient||!!e.radialGradient}function Ae(e){return typeof e==`string`?G(e):ke(e)}function je(e){return!w(e.image)&&!G(e.image)}function Me(e){return typeof e==`string`?!V(e)&&!G(e):je(e)}function Ne(e){return!w(e.preset)}function Pe(e){return typeof e==`string`?!1:Ne(e)}function J(e){let t={enabled:e&&typeof e==`object`?e.enabled??!0:!0};return Oe(e)&&Object.assign(t,xe(e)),Ae(e)&&Object.assign(t,Se(e)),Me(e)&&Object.assign(t,we(e)),Pe(e)&&Object.assign(t,Ee(e)),D(E(t),Array.from(new Set([`enabled`,...K,...Ce,...q,...Te])))}function Fe(e){return typeof e==`string`?{...J(e)}:{...J(e),...D(e,[`fillWithShape`])}}function Ie(){return{backgroundImage:`none`,backgroundSize:`auto, auto`,backgroundColor:`none`,backgroundColormap:`none`}}function Le(e){return E({start:e.start,end:e.end})}function Y(e){return typeof e==`string`?{...J(e)}:{...J(e),...D(e,[`width`,`style`,`lineCap`,`lineJoin`,`headEnd`,`tailEnd`])}}function Re(){return{outlineWidth:0,outlineOffset:0,outlineColor:`none`,outlineStyle:`none`}}function ze(e){return typeof e==`string`?{enabled:!0,color:H(e)}:{...e,enabled:e.enabled??!0,color:w(e.color)?B:H(e.color)}}function Be(){return{boxShadow:`none`}}var Ve=[`fill`,`outline`,`shadow`,`transform`,`transformOrigin`];function He(e){let t=D(e,Ve),{rotate:n,scaleX:r,scaleY:i,skewX:a,skewY:o,translateX:s,translateY:c}=e,l=[];return(s||c)&&l.push(`translate(${s||0}, ${c||0})`),n&&l.push(`rotate(${n}deg)`),(r||i)&&l.push(`scale(${r??1}, ${i??1})`),a&&l.push(`skewX(${a}deg)`),o&&l.push(`skewY(${o}deg)`),l.length>0&&(t.transform=l.join(` `)),(e.textStrokeWidth||e.textStrokeColor)&&(t.outline={color:e.textStrokeColor,width:e.textStrokeWidth}),e.color&&(t.fill={color:e.color}),(e.shadowOffsetX||e.shadowOffsetY||e.shadowBlur||e.shadowColor)&&(t.shadow={offsetX:e.shadowOffsetX,offsetY:e.shadowOffsetY,blur:e.shadowBlur,color:e.shadowColor}),t}function X(e){let t=He(e);return E({fill:w(t.fill)?void 0:J(t.fill),outline:w(t.outline)?void 0:Y(t.outline),shadow:w(t.shadow)?void 0:ze(t.shadow),transform:w(t.transform)?void 0:t.transform,transformOrigin:t.transformOrigin})}function Ue(e){return typeof e==`string`?{...J(e)}:{...J(e),...D(e,[`fillWithShape`])}}var We=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,Ge=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=We[n[e]&63];return t},Ke=()=>Ge(10),qe=Ke;function Je(e){return typeof e==`string`?e.startsWith(`<svg`)?{enabled:!0,svg:e}:{enabled:!0,paths:[{data:e}]}:Array.isArray(e)?{enabled:!0,paths:e.map(e=>typeof e==`string`?{data:e}:e)}:e}function Ye(){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 Xe(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:`none`,transformOrigin:`center`}}function Ze(){return{...Ye(),...Xe(),...Be(),...Ie(),...Re(),borderRadius:0,borderColor:`none`,borderStyle:`solid`,visibility:`visible`,filter:`none`,opacity:1,pointerEvents:`auto`,maskImage:`none`}}function Qe(){return{highlight:{},highlightImage:`none`,highlightReferImage:`none`,highlightColormap:`none`,highlightLine:`none`,highlightSize:`cover`,highlightThickness:`100%`}}function $e(){return{listStyle:{},listStyleType:`none`,listStyleImage:`none`,listStyleColormap:`none`,listStyleSize:`cover`,listStylePosition:`outside`}}function et(){return{...Qe(),color:`#000000`,verticalAlign:`baseline`,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:`normal`,fontFamily:``,fontStyle:`normal`,fontKerning:`normal`,textTransform:`none`,textOrientation:`mixed`,textDecoration:`none`}}function tt(){return{...$e(),writingMode:`horizontal-tb`,textWrap:`wrap`,textAlign:`start`,textIndent:0,lineHeight:1.2}}function nt(){return{...tt(),...et(),textStrokeWidth:0,textStrokeColor:`none`}}function Z(e){return E({...e,color:w(e.color)?void 0:H(e.color),backgroundColor:w(e.backgroundColor)?void 0:H(e.backgroundColor),borderColor:w(e.borderColor)?void 0:H(e.borderColor),outlineColor:w(e.outlineColor)?void 0:H(e.outlineColor),shadowColor:w(e.shadowColor)?void 0:H(e.shadowColor),textStrokeColor:w(e.textStrokeColor)?void 0:H(e.textStrokeColor)})}function rt(){return{...Ze(),...nt()}}var it=/\r\n|\n\r|\n|\r/,at=RegExp(`${it.source}|<br\\/>`,`g`),ot=RegExp(`^(${it.source})$`),st=`
|
|
2
|
-
`;function
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.modernIdoc={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`?{src:e}:e}var n={grad:.9,turn:360,rad:360/(2*Math.PI)},r=function(e){return typeof e==`string`?e.length>0:typeof e==`number`},i=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=10**t),Math.round(n*e)/n+0},a=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e>t?e:t},o=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},s=function(e){return{r:a(e.r,0,255),g:a(e.g,0,255),b:a(e.b,0,255),a:a(e.a)}},c=function(e){return{r:i(e.r),g:i(e.g),b:i(e.b),a:i(e.a,3)}},l=/^#([0-9a-f]{3,8})$/i,u=function(e){var t=e.toString(16);return t.length<2?`0`+t:t},d=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,a=Math.max(t,n,r),o=a-Math.min(t,n,r),s=o?a===t?(n-r)/o:a===n?2+(r-t)/o:4+(t-n)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},f=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var a=Math.floor(t),o=r*(1-n),s=r*(1-(t-a)*n),c=r*(1-(1-t+a)*n),l=a%6;return{r:255*[r,s,o,o,c,r][l],g:255*[c,r,r,s,o,o][l],b:255*[o,o,c,r,r,s][l],a:i}},ee=function(e){return{h:o(e.h),s:a(e.s,0,100),l:a(e.l,0,100),a:a(e.a)}},p=function(e){return{h:i(e.h),s:i(e.s),l:i(e.l),a:i(e.a,3)}},m=function(e){return f((n=(t=e).s,{h:t.h,s:(n*=((r=t.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:t.a}));var t,n,r},h=function(e){return{h:(t=d(e)).h,s:(i=(200-(n=t.s))*(r=t.v)/100)>0&&i<200?n*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,n,r,i},g=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,te=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ne=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v={string:[[function(e){var t=l.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?i(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?i(parseInt(e.substr(6,2),16)/255,2):1}:null:null},`hex`],[function(e){var t=_.exec(e)||ne.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:s({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},`rgb`],[function(e){var t=g.exec(e)||te.exec(e);if(!t)return null;var r,i;return m(ee({h:(r=t[1],i=t[2],i===void 0&&(i=`deg`),Number(r)*(n[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)}))},`hsl`]],object:[[function(e){var t=e.r,n=e.g,i=e.b,a=e.a,o=a===void 0?1:a;return r(t)&&r(n)&&r(i)?s({r:Number(t),g:Number(n),b:Number(i),a:Number(o)}):null},`rgb`],[function(e){var t=e.h,n=e.s,i=e.l,a=e.a,o=a===void 0?1:a;return!r(t)||!r(n)||!r(i)?null:m(ee({h:Number(t),s:Number(n),l:Number(i),a:Number(o)}))},`hsl`],[function(e){var t=e.h,n=e.s,i=e.v,s=e.a,c=s===void 0?1:s;return!r(t)||!r(n)||!r(i)?null:f(function(e){return{h:o(e.h),s:a(e.s,0,100),v:a(e.v,0,100),a:a(e.a)}}({h:Number(t),s:Number(n),v:Number(i),a:Number(c)}))},`hsv`]]},y=function(e,t){for(var n=0;n<t.length;n++){var r=t[n][0](e);if(r)return[r,t[n][1]]}return[null,void 0]},re=function(e){return typeof e==`string`?y(e.trim(),v.string):typeof e==`object`&&e?y(e,v.object):[null,void 0]},b=function(e,t){var n=h(e);return{h:n.h,s:a(n.s+100*t,0,100),l:n.l,a:n.a}},x=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},ie=function(e,t){var n=h(e);return{h:n.h,s:n.s,l:a(n.l+100*t,0,100),a:n.a}},S=function(){function e(e){this.parsed=re(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return i(x(this.rgba),2)},e.prototype.isDark=function(){return x(this.rgba)<.5},e.prototype.isLight=function(){return x(this.rgba)>=.5},e.prototype.toHex=function(){return e=c(this.rgba),t=e.r,n=e.g,r=e.b,o=(a=e.a)<1?u(i(255*a)):``,`#`+u(t)+u(n)+u(r)+o;var e,t,n,r,a,o},e.prototype.toRgb=function(){return c(this.rgba)},e.prototype.toRgbString=function(){return e=c(this.rgba),t=e.r,n=e.g,r=e.b,(i=e.a)<1?`rgba(`+t+`, `+n+`, `+r+`, `+i+`)`:`rgb(`+t+`, `+n+`, `+r+`)`;var e,t,n,r,i},e.prototype.toHsl=function(){return p(h(this.rgba))},e.prototype.toHslString=function(){return e=p(h(this.rgba)),t=e.h,n=e.s,r=e.l,(i=e.a)<1?`hsla(`+t+`, `+n+`%, `+r+`%, `+i+`)`:`hsl(`+t+`, `+n+`%, `+r+`%)`;var e,t,n,r,i},e.prototype.toHsv=function(){return e=d(this.rgba),{h:i(e.h),s:i(e.s),v:i(e.v),a:i(e.a,3)};var e},e.prototype.invert=function(){return C({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return e===void 0&&(e=.1),C(b(this.rgba,e))},e.prototype.desaturate=function(e){return e===void 0&&(e=.1),C(b(this.rgba,-e))},e.prototype.grayscale=function(){return C(b(this.rgba,-1))},e.prototype.lighten=function(e){return e===void 0&&(e=.1),C(ie(this.rgba,e))},e.prototype.darken=function(e){return e===void 0&&(e=.1),C(ie(this.rgba,-e))},e.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return typeof e==`number`?C({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):i(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=h(this.rgba);return typeof e==`number`?C({h:e,s:t.s,l:t.l,a:t.a}):i(t.h)},e.prototype.isEqual=function(e){return this.toHex()===C(e).toHex()},e}(),C=function(e){return e instanceof S?e:new S(e)},ae=class{eventListeners=new Map;addEventListener(e,t,n){let r={value:t,options:n},i=this.eventListeners.get(e);return i?Array.isArray(i)?i.push(r):this.eventListeners.set(e,[i,r]):this.eventListeners.set(e,r),this}removeEventListener(e,t,n){if(!t)return this.eventListeners.delete(e),this;let r=this.eventListeners.get(e);if(!r)return this;if(Array.isArray(r)){let i=[];for(let e=0,a=r.length;e<a;e++){let a=r[e];(a.value!==t||typeof n==`object`&&n?.once&&(typeof a.options==`boolean`||!a.options?.once))&&i.push(a)}i.length?this.eventListeners.set(e,i.length===1?i[0]:i):this.eventListeners.delete(e)}else r.value===t&&(typeof n==`boolean`||!n?.once||typeof r.options==`boolean`||r.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...t){let n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let r=n.length,i=0;i<r;i++){let r=n[i];typeof r.options==`object`&&r.options?.once&&this.off(e,r.value,r.options),r.value.apply(this,t)}else typeof n.options==`object`&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,t);return!0}else return!1}on(e,t,n){return this.addEventListener(e,t,n)}once(e,t){return this.addEventListener(e,t,{once:!0})}off(e,t,n){return this.removeEventListener(e,t,n)}emit(e,...t){this.dispatchEvent(e,...t)}};function w(e){return e==null||e===``||e===`none`}function T(e,t=0,n=10**t){return Math.round(n*e)/n+0}function E(e,t){if(typeof e==`number`)return Number.isFinite(e)?e:t;if(typeof e==`string`){let n=Number.parseFloat(e);return Number.isFinite(n)?n:t}return t}function D(e,t=!1){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return t?e.map(e=>D(e,t)):e;let n={};for(let r in e){let i=e[r];i!=null&&(t?n[r]=D(i,t):n[r]=i)}return n}function O(e,t){let n={};return t.forEach(t=>{t in e&&(n[t]=e[t])}),n}function k(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){let n=Array.from(new Set([...Object.keys(e),...Object.keys(t)]));return!n.length||n.every(n=>e[n]===t[n])}return!1}function A(e,t,n){let r=t.length-1;if(r<0)return e===void 0?n:e;for(let i=0;i<r;i++){if(e==null)return n;e=e[t[i]]}return e==null||e[t[r]]===void 0?n:e[t[r]]}function j(e,t,n){let r=t.length-1;for(let n=0;n<r;n++)typeof e[t[n]]!=`object`&&(e[t[n]]={}),e=e[t[n]];e[t[r]]=n}function oe(e,t,n){return e==null||!t||typeof t!=`string`?n:e[t]===void 0?(t=t.replace(/\[(\w+)\]/g,`.$1`),t=t.replace(/^\./,``),A(e,t.split(`.`),n)):e[t]}function se(e,t,n){if(!(typeof e!=`object`||!t))return t=t.replace(/\[(\w+)\]/g,`.$1`),t=t.replace(/^\./,``),j(e,t.split(`.`),n)}var ce=class{_eventListeners={};on(e,t){let n=this._eventListeners[e];n===void 0&&(n=[],this._eventListeners[e]=n);let r=n.indexOf(t);return r>-1&&n.splice(r,1),n.push(t),this}once(e,t){let n=(...r)=>{this.off(e,n),t.apply(this,r)};return this.on(e,n),this}off(e,t){let n=this._eventListeners[e];if(n!==void 0){let e=n.indexOf(t);e>-1&&n.splice(e,1)}return this}emit(e,...t){let n=this._eventListeners[e];if(n!==void 0){let e=n.length;if(e>0)for(let r=0;r<e;r++)n[r].apply(this,t)}return this}removeAllListeners(){return this._eventListeners={},this}hasEventListener(e){return!!this._eventListeners[e]}destroy(){this.removeAllListeners()}},le=class{_map=new WeakMap;_toRaw(e){if(e&&typeof e==`object`){let t=e.__v_raw;t&&(e=this._toRaw(t))}return e}delete(e){return this._map.delete(this._toRaw(e))}get(e){return this._map.get(this._toRaw(e))}has(e){return this._map.has(this._toRaw(e))}set(e,t){return this._map.set(this._toRaw(e),this._toRaw(t)),this}},ue=Symbol.for(`declarations`),M=Symbol.for(`inited`);function N(e){let t;if(Object.hasOwn(e,ue))t=e[ue];else{let n=Object.getPrototypeOf(e);t={...n?N(n):{}},e[ue]=t}return t}function P(e,t,n,r){let{alias:i,internalKey:a}=r,o=e[t];i?se(e,i,n):e[a]=n,e.onUpdateProperty?.(t,n??I(e,t,r),o)}function F(e,t,n){let{alias:r,internalKey:i}=n,a;return a=r?oe(e,r):e[i],a??=I(e,t,n),a}function I(e,t,n){let{default:r,fallback:i}=n,a;if(r!==void 0&&!e[M]?.[t]){e[M]||(e[M]={}),e[M][t]=!0;let n=typeof r==`function`?r():r;n!==void 0&&(e[t]=n,a=n)}return a===void 0&&i!==void 0&&(a=typeof i==`function`?i():i),a}function L(e,t){function n(){return this.getProperty?this.getProperty(e):F(this,e,t)}function r(n){this.setProperty?this.setProperty(e,n):P(this,e,n,t)}return{get:n,set:r}}function de(e,t,n={}){let r={...n,internalKey:Symbol.for(t)},i=N(e);i[t]=r;let{get:a,set:o}=L(t,r);Object.defineProperty(e.prototype,t,{get(){return a.call(this)},set(e){o.call(this,e)},configurable:!0,enumerable:!0})}function fe(e){return function(t,n){if(typeof n!=`string`)throw TypeError(`Failed to @property decorator, prop name cannot be a symbol`);de(t.constructor,n,e)}}function pe(e={}){return function(t,n){let r=n.name;if(typeof r!=`string`)throw TypeError(`Failed to @property decorator, prop name cannot be a symbol`);let i={...e,internalKey:Symbol.for(r)},a=L(r,i);return{init(e){let t=N(this.constructor);return t[r]=i,a.set.call(this,e),e},get(){return a.get.call(this)},set(e){a.set.call(this,e)}}}}var me=class extends ce{_propertyAccessor;_properties={};_updatedProperties={};_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?!!this._updatedProperties[e]:Object.keys(this._updatedProperties).length>0}offsetGetProperty(e){return this._properties[e]}offsetSetProperty(e,t){this._properties[e]=t}offsetGetProperties(e){let t=this._properties,n=Object.keys(t),r={};for(let i,a,o=0;o<n.length;o++)i=n[o],a=t[i],a!==void 0&&(!e||e.includes(i))&&(a&&typeof a==`object`?`toJSON`in a?r[i]=a.toJSON():Array.isArray(a)?r[i]=[...a]:r[i]={...a}:r[i]=a);return r}offsetSetProperties(e){if(e&&typeof e==`object`){let t=Object.keys(e);for(let n,r=0;r<t.length;r++)n=t[r],this.offsetSetProperty(n,e[n])}return this}getProperty(e){let t=this.getPropertyDeclaration(e);if(t){if(t.internal||t.alias)return F(this,e,t);{let n=this._propertyAccessor,r;return r=n&&n.getProperty?n.getProperty(e):this.offsetGetProperty(e),r??I(this,e,t)}}}setProperty(e,t){let n=this.getPropertyDeclaration(e);if(n)if(n.internal||n.alias)P(this,e,t,n);else{let r=this.getProperty(e);this._propertyAccessor?.setProperty?.(e,t),this.offsetSetProperty(e,t),this.onUpdateProperty?.(e,t??I(this,e,n),r)}}getProperties(e){let t={},n=this.getPropertyDeclarations(),r=Object.keys(n);for(let i=0,a=r.length;i<a;i++){let a=r[i],o=n[a];o.internal||o.alias||(!e||e.includes(a))&&(t[a]=this.getProperty(a))}return t}setProperties(e){if(e&&typeof e==`object`)for(let t in e)this.setProperty(t,e[t]);return this}resetProperties(){let e=this.getPropertyDeclarations(),t=Object.keys(e);for(let n=0,r=t.length;n<r;n++){let r=t[n],i=e[r];this.setProperty(r,typeof i.default==`function`?i.default():i.default)}return this}getPropertyDeclarations(){return N(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations()[e]}setPropertyAccessor(e){let t=this.getPropertyDeclarations(),n=[];if(e&&e.getProperty&&e.setProperty){let r=Object.keys(t);for(let i=0,a=r.length;i<a;i++){let a=r[i],o=t[a];if(o.internal||o.alias)continue;let s=this.offsetGetProperty(a),c=e.getProperty(a);c!==void 0&&!Object.is(s,c)&&(this.offsetSetProperty(a,c),n.push({key:a,newValue:c,oldValue:s}))}}this._propertyAccessor=e;for(let e=0,t=n.length;e<t;e++){let{key:t,newValue:r,oldValue:i}=n[e];this.requestUpdate(t,r,i)}return this}async _nextTick(){return`requestAnimationFrame`in globalThis?new Promise(e=>globalThis.requestAnimationFrame(e)):Promise.resolve()}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await this._nextTick(),this._updating&&=(this.onUpdate(),!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties={}}onUpdateProperty(e,t,n){Object.is(t,n)||this.requestUpdate(e,t,n)}requestUpdate(e,t,n){e!==void 0&&(this._updatedProperties[e]=n,this._changedProperties.add(e),this._updateProperty(e,t,n),this.emit(`updateProperty`,e,t,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,t,n){}toJSON(){return this.offsetGetProperties()}clone(){return new this.constructor(this.toJSON())}destroy(){this.emit(`destroy`),super.destroy()}};function R(e){let t;return t=typeof e==`number`?{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:(e&255)/255}:e,C(t)}function he(e){return{r:T(e.r),g:T(e.g),b:T(e.b),a:T(e.a,3)}}function z(e){let t=e.toString(16);return t.length<2?`0${t}`:t}var B=`#000000FF`;function V(e){return R(e).isValid()}function H(e,t=!1){let n=R(e);if(!n.isValid()){if(typeof e==`string`)return e;let n=`Failed to normalizeColor ${e}`;if(t)throw Error(n);return console.warn(n),B}let{r,g:i,b:a,a:o}=he(n.rgba);return`#${z(r)}${z(i)}${z(a)}${z(T(o*255))}`}var U=U||{};U.parse=(function(){let e={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},t=``;function n(e){let n=Error(`${t}: ${e}`);throw n.source=t,n}function r(){let e=i();return t.length>0&&n(`Invalid input not EOF`),e}function i(){return _(a)}function a(){return o(`linear-gradient`,e.linearGradient,c)||o(`repeating-linear-gradient`,e.repeatingLinearGradient,c)||o(`radial-gradient`,e.radialGradient,d)||o(`repeating-radial-gradient`,e.repeatingRadialGradient,d)}function o(t,r,i){return s(r,r=>{let a=i();return a&&(A(e.comma)||n(`Missing comma before color stops`)),{type:t,orientation:a,colorStops:_(ne)}})}function s(t,r){let i=A(t);if(i){A(e.startCall)||n(`Missing (`);let t=r(i);return A(e.endCall)||n(`Missing )`),t}}function c(){let t=l();if(t)return t;let n=k(`position-keyword`,e.positionKeywords,1);return n?{type:`directional`,value:n.value}:u()}function l(){return k(`directional`,e.sideOrCorner,1)}function u(){return k(`angular`,e.angleValue,1)||k(`angular`,e.radianValue,1)}function d(){let n,r=f(),i;return r&&(n=[],n.push(r),i=t,A(e.comma)&&(r=f(),r?n.push(r):t=i)),n}function f(){let e=ee()||p();if(e)e.at=h();else{let t=m();if(t){e=t;let n=h();n&&(e.at=n)}else{let t=h();if(t)e={type:`default-radial`,at:t};else{let t=g();t&&(e={type:`default-radial`,at:t})}}}return e}function ee(){let e=k(`shape`,/^(circle)/i,0);return e&&(e.style=O()||m()),e}function p(){let e=k(`shape`,/^(ellipse)/i,0);return e&&(e.style=g()||T()||m()),e}function m(){return k(`extent-keyword`,e.extentKeywords,1)}function h(){if(k(`position`,/^at/,0)){let e=g();return e||n(`Missing positioning value`),e}}function g(){let e=te();if(e.x||e.y)return{type:`position`,value:e}}function te(){return{x:T(),y:T()}}function _(t){let r=t(),i=[];if(r)for(i.push(r);A(e.comma);)r=t(),r?i.push(r):n(`One extra comma`);return i}function ne(){let e=v();return e||n(`Expected color definition`),e.length=T(),e}function v(){return re()||C()||S()||x()||b()||ie()||y()}function y(){return k(`literal`,e.literalColor,0)}function re(){return k(`hex`,e.hexColor,1)}function b(){return s(e.rgbColor,()=>({type:`rgb`,value:_(w)}))}function x(){return s(e.rgbaColor,()=>({type:`rgba`,value:_(w)}))}function ie(){return s(e.varColor,()=>({type:`var`,value:ae()}))}function S(){return s(e.hslColor,()=>{A(e.percentageValue)&&n(`HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage`);let t=w();A(e.comma);let r=A(e.percentageValue),i=r?r[1]:null;A(e.comma),r=A(e.percentageValue);let a=r?r[1]:null;return(!i||!a)&&n(`Expected percentage value for saturation and lightness in HSL`),{type:`hsl`,value:[t,i,a]}})}function C(){return s(e.hslaColor,()=>{let t=w();A(e.comma);let r=A(e.percentageValue),i=r?r[1]:null;A(e.comma),r=A(e.percentageValue);let a=r?r[1]:null;A(e.comma);let o=w();return(!i||!a)&&n(`Expected percentage value for saturation and lightness in HSLA`),{type:`hsla`,value:[t,i,a,o]}})}function ae(){return A(e.variableName)[1]}function w(){return A(e.number)[1]}function T(){return k(`%`,e.percentageValue,1)||E()||D()||O()}function E(){return k(`position-keyword`,e.positionKeywords,1)}function D(){return s(e.calcValue,()=>{let e=1,r=0;for(;e>0&&r<t.length;){let n=t.charAt(r);n===`(`?e++:n===`)`&&e--,r++}e>0&&n(`Missing closing parenthesis in calc() expression`);let i=t.substring(0,r-1);return j(r-1),{type:`calc`,value:i}})}function O(){return k(`px`,e.pixelValue,1)||k(`em`,e.emValue,1)}function k(e,t,n){let r=A(t);if(r)return{type:e,value:r[n]}}function A(e){let n,r;return r=/^\s+/.exec(t),r&&j(r[0].length),n=e.exec(t),n&&j(n[0].length),n}function j(e){t=t.substr(e)}return function(e){return t=e.toString().trim(),t.endsWith(`;`)&&(t=t.slice(0,-1)),r()}})();var ge=U.parse.bind(U),W=W||{};W.stringify=(function(){var e={"visit_linear-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return e.visit_gradient(t)},"visit_radial-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return e.visit_gradient(t)},visit_gradient:function(t){var n=e.visit(t.orientation);return n&&(n+=`, `),t.type+`(`+n+e.visit(t.colorStops)+`)`},visit_shape:function(t){var n=t.value,r=e.visit(t.at),i=e.visit(t.style);return i&&(n+=` `+i),r&&(n+=` at `+r),n},"visit_default-radial":function(t){var n=``,r=e.visit(t.at);return r&&(n+=r),n},"visit_extent-keyword":function(t){var n=t.value,r=e.visit(t.at);return r&&(n+=` at `+r),n},"visit_position-keyword":function(e){return e.value},visit_position:function(t){return e.visit(t.value.x)+` `+e.visit(t.value.y)},"visit_%":function(e){return e.value+`%`},visit_em:function(e){return e.value+`em`},visit_px:function(e){return e.value+`px`},visit_calc:function(e){return`calc(`+e.value+`)`},visit_literal:function(t){return e.visit_color(t.value,t)},visit_hex:function(t){return e.visit_color(`#`+t.value,t)},visit_rgb:function(t){return e.visit_color(`rgb(`+t.value.join(`, `)+`)`,t)},visit_rgba:function(t){return e.visit_color(`rgba(`+t.value.join(`, `)+`)`,t)},visit_hsl:function(t){return e.visit_color(`hsl(`+t.value[0]+`, `+t.value[1]+`%, `+t.value[2]+`%)`,t)},visit_hsla:function(t){return e.visit_color(`hsla(`+t.value[0]+`, `+t.value[1]+`%, `+t.value[2]+`%, `+t.value[3]+`)`,t)},visit_var:function(t){return e.visit_color(`var(`+t.value+`)`,t)},visit_color:function(t,n){var r=t,i=e.visit(n.length);return i&&(r+=` `+i),r},visit_angular:function(e){return e.value+`deg`},visit_directional:function(e){return`to `+e.value},visit_array:function(t){var n=``,r=t.length;return t.forEach(function(t,i){n+=e.visit(t),i<r-1&&(n+=`, `)}),n},visit_object:function(t){return t.width&&t.height?e.visit(t.width)+` `+e.visit(t.height):``},visit:function(t){if(!t)return``;if(t instanceof Array)return e.visit_array(t);if(typeof t==`object`&&!t.type)return e.visit_object(t);if(t.type){var n=e[`visit_`+t.type];if(n)return n(t);throw Error(`Missing visitor visit_`+t.type)}else throw Error(`Invalid node.`)}};return function(t){return e.visit(t)}})();var _e=W.stringify.bind(W);function ve(e){let t=e.length-1;return e.map((e,n)=>{let r=e.value,i=T(n/t,3),a=`#00000000`;switch(e.type){case`rgb`:a=H({r:Number(r[0]??0),g:Number(r[1]??0),b:Number(r[2]??0)});break;case`rgba`:a=H({r:Number(r[0]??0),g:Number(r[1]??0),b:Number(r[2]??0),a:Number(r[3]??0)});break;case`literal`:a=H(e.value);break;case`hex`:a=H(`#${e.value}`);break}switch(e.length?.type){case`%`:i=Number(e.length.value)/100;break;case`px`:break;case`em`:break}return{offset:i,color:a}})}function ye(e){let t=0;switch(e.orientation?.type){case`angular`:t=Number(e.orientation.value);break;case`directional`:break}return{type:`linear-gradient`,angle:t,stops:ve(e.colorStops)}}function be(e){return e.orientation?.map(e=>{switch(e?.type){default:return null}}),{type:`radial-gradient`,stops:ve(e.colorStops)}}function G(e){return e.startsWith(`linear-gradient(`)||e.startsWith(`radial-gradient(`)}function xe(e){return ge(e).map(e=>{switch(e?.type){case`linear-gradient`:return ye(e);case`repeating-linear-gradient`:return{...ye(e),repeat:!0};case`radial-gradient`:return be(e);case`repeating-radial-gradient`:return{...be(e),repeat:!0};default:return}}).filter(Boolean)}var K=[`color`];function Se(e){let t;return t=typeof e==`string`?{color:e}:{...e},t.color&&=H(t.color),O(t,K)}var Ce=[`linearGradient`,`radialGradient`,`rotateWithShape`];function we(e){let t;if(t=typeof e==`string`?{image:e}:{...e},t.image){let{type:e,...n}=xe(t.image)[0]??{};switch(e){case`radial-gradient`:return{radialGradient:n};case`linear-gradient`:return{linearGradient:n}}}return O(t,Ce)}var Te=[`image`,`cropRect`,`stretchRect`,`tile`,`dpi`,`opacity`,`rotateWithShape`];function Ee(e){let t;return t=typeof e==`string`?{image:e}:{...e},O(t,Te)}var De=[`preset`,`foregroundColor`,`backgroundColor`];function Oe(e){let t;return t=typeof e==`string`?{preset:e}:{...e},w(t.foregroundColor)?delete t.foregroundColor:t.foregroundColor=H(t.foregroundColor),w(t.backgroundColor)?delete t.backgroundColor:t.backgroundColor=H(t.backgroundColor),O(t,De)}function ke(e){return!w(e.color)}function Ae(e){return typeof e==`string`?V(e):ke(e)}function je(e){return!w(e.image)&&G(e.image)||!!e.linearGradient||!!e.radialGradient}function Me(e){return typeof e==`string`?G(e):je(e)}function Ne(e){return!w(e.image)&&!G(e.image)}function Pe(e){return typeof e==`string`?!V(e)&&!G(e):Ne(e)}function Fe(e){return!w(e.preset)}function Ie(e){return typeof e==`string`?!1:Fe(e)}function q(e){let t={enabled:e&&typeof e==`object`?e.enabled??!0:!0};return Ae(e)&&Object.assign(t,Se(e)),Me(e)&&Object.assign(t,we(e)),Pe(e)&&Object.assign(t,Ee(e)),Ie(e)&&Object.assign(t,Oe(e)),O(D(t),Array.from(new Set([`enabled`,...K,...Te,...Ce,...De])))}function Le(e){return typeof e==`string`?{...q(e)}:{...q(e),...O(e,[`fillWithShape`])}}function Re(){return{backgroundImage:`none`,backgroundSize:`auto, auto`,backgroundColor:`none`,backgroundColormap:`none`}}function ze(e){return D({start:e.start,end:e.end,mode:e.mode??`straight`})}function J(e){return typeof e==`string`?{...q(e)}:{...q(e),...O(e,[`width`,`style`,`lineCap`,`lineJoin`,`headEnd`,`tailEnd`])}}function Be(){return{outlineWidth:0,outlineOffset:0,outlineColor:`none`,outlineStyle:`none`}}function Ve(e){return typeof e==`string`?{enabled:!0,color:H(e)}:{...e,enabled:e.enabled??!0,color:w(e.color)?B:H(e.color)}}function He(){return{boxShadow:`none`}}var Ue=[`fill`,`outline`,`shadow`,`transform`,`transformOrigin`];function We(e){let t=O(e,Ue),{rotate:n,scaleX:r,scaleY:i,skewX:a,skewY:o,translateX:s,translateY:c}=e,l=[];return(s||c)&&l.push(`translate(${s||0}, ${c||0})`),n&&l.push(`rotate(${n}deg)`),(r||i)&&l.push(`scale(${r??1}, ${i??1})`),a&&l.push(`skewX(${a}deg)`),o&&l.push(`skewY(${o}deg)`),l.length>0&&(t.transform=l.join(` `)),(e.textStrokeWidth||e.textStrokeColor)&&(t.outline={color:e.textStrokeColor,width:e.textStrokeWidth}),e.color&&(t.fill={color:e.color}),(e.shadowOffsetX||e.shadowOffsetY||e.shadowBlur||e.shadowColor)&&(t.shadow={offsetX:e.shadowOffsetX,offsetY:e.shadowOffsetY,blur:e.shadowBlur,color:e.shadowColor}),t}function Y(e){let t=We(e);return D({fill:w(t.fill)?void 0:q(t.fill),outline:w(t.outline)?void 0:J(t.outline),shadow:w(t.shadow)?void 0:Ve(t.shadow),transform:w(t.transform)?void 0:t.transform,transformOrigin:t.transformOrigin})}function Ge(e){return typeof e==`string`?{...q(e)}:{...q(e),...O(e,[`fillWithShape`])}}var Ke=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,qe=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=Ke[n[e]&63];return t},Je=()=>qe(10),Ye=Je;function Xe(e){return typeof e==`string`?e.startsWith(`<svg`)?{enabled:!0,svg:e}:{enabled:!0,paths:[{data:e}]}:Array.isArray(e)?{enabled:!0,paths:e.map(e=>typeof e==`string`?{data:e}:e)}:e}function Ze(){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 Qe(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:`none`,transformOrigin:`center`}}function $e(){return{...Ze(),...Qe(),...He(),...Re(),...Be(),borderRadius:0,borderColor:`none`,borderStyle:`solid`,visibility:`visible`,filter:`none`,opacity:1,pointerEvents:`auto`,maskImage:`none`}}function et(){return{highlight:{},highlightImage:`none`,highlightReferImage:`none`,highlightColormap:`none`,highlightLine:`none`,highlightSize:`cover`,highlightThickness:`100%`}}function tt(){return{listStyle:{},listStyleType:`none`,listStyleImage:`none`,listStyleColormap:`none`,listStyleSize:`cover`,listStylePosition:`outside`}}function nt(){return{...et(),color:`#000000`,verticalAlign:`baseline`,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:`normal`,fontFamily:``,fontStyle:`normal`,fontKerning:`normal`,textTransform:`none`,textOrientation:`mixed`,textDecoration:`none`}}function rt(){return{...tt(),writingMode:`horizontal-tb`,textWrap:`wrap`,textAlign:`start`,textIndent:0,lineHeight:1.2}}function it(){return{...rt(),...nt(),textStrokeWidth:0,textStrokeColor:`none`}}var at=[`textIndent`,`lineHeight`,`letterSpacing`,`wordSpacing`,`fontSize`,`textStrokeWidth`,`borderRadius`,`opacity`,`rotate`,`scaleX`,`scaleY`,`skewX`,`skewY`,`translateX`,`translateY`,`borderWidth`,`flex`,`flexGrow`,`flexShrink`];function X(e){let t=D({...e,color:w(e.color)?void 0:H(e.color),backgroundColor:w(e.backgroundColor)?void 0:H(e.backgroundColor),borderColor:w(e.borderColor)?void 0:H(e.borderColor),outlineColor:w(e.outlineColor)?void 0:H(e.outlineColor),shadowColor:w(e.shadowColor)?void 0:H(e.shadowColor),textStrokeColor:w(e.textStrokeColor)?void 0:H(e.textStrokeColor)});for(let e of at)if(e in t){let n=E(t[e]);n===void 0?delete t[e]:t[e]=n}return t}function ot(){return{...$e(),...it()}}var Z=/\r\n|\n\r|\n|\r/,st=RegExp(`${Z.source}|<br\\/>`,`g`),ct=RegExp(`^(${Z.source})$`),lt=`
|
|
2
|
+
`;function ut(e){return Z.test(e)}function dt(e){return ct.test(e)}function ft(e){return e.replace(st,lt)}function Q(e){let t=[];function n(){return t[t.length-1]}function r(e,n,r){let i=e?X(e):{},a=n?q(n):void 0,o=r?J(r):void 0,s=D({...i,fill:a,outline:o,fragments:[]});return t[t.length-1]?.fragments.length===0?t[t.length-1]=s:t.push(s),s}function i(e=``,t,i,a){let o=t?X(t):{},s=i?q(i):void 0,c=a?J(a):void 0;Array.from(e).forEach(e=>{if(dt(e)){let{fragments:e,fill:t,outline:i,...a}=n()||r();e.length||e.push(D({...o,fill:s,outline:c,content:lt})),r(a,t,i)}else{let t=n()||r(),i=t.fragments[t.fragments.length-1];if(i){let{content:t,fill:n,outline:r,...a}=i;if(k(s,n)&&k(c,r)&&k(o,a)){i.content=`${t}${e}`;return}}t.fragments.push(D({...o,fill:s,outline:c,content:e}))}})}(Array.isArray(e)?e:[e]).forEach(e=>{if(typeof e==`string`)r(),i(e);else if(mt(e)){let{content:t,fill:n,outline:a,...o}=e;r(o,n,a),i(t)}else if(pt(e)){let{fragments:t,fill:n,outline:a,...o}=e;r(o,n,a),t.forEach(e=>{let{content:t,fill:n,outline:r,...a}=e;i(t,a,n,r)})}else Array.isArray(e)?(r(),e.forEach(e=>{if(typeof e==`string`)i(e);else if(mt(e)){let{content:t,fill:n,outline:r,...a}=e;i(t,a,n,r)}})):console.warn(`Failed to parse text content`,e)});let a=n();return a&&!a.fragments.length&&a.fragments.push({content:``}),t}function pt(e){return e&&typeof e==`object`&&`fragments`in e&&Array.isArray(e.fragments)}function mt(e){return e&&typeof e==`object`&&`content`in e&&typeof e.content==`string`}function ht(e){return D({type:e.type,intensities:e.intensities,maxFontSize:e.maxFontSize??100})}function gt(e){return typeof e==`string`||Array.isArray(e)?{enabled:!0,content:Q(e)}:D({enabled:e.enabled??!0,content:Q(e.content??``),style:e.style?X(e.style):void 0,deformation:e.deformation?ht(e.deformation):void 0,measureDom:e.measureDom,fonts:e.fonts,...Y(e),effects:e.effects?e.effects.map(e=>Y(e)):void 0})}function _t(e){return Q(e).map(e=>{let t=ft(e.fragments.flatMap(e=>e.content).join(``));return dt(t)?``:t}).join(lt)}function vt(e){return typeof e==`string`?{src:e}:e}function $(e){return D({id:e.id??Ye(),style:w(e.style)?void 0:X(e.style),text:w(e.text)?void 0:gt(e.text),background:w(e.background)?void 0:Le(e.background),shape:w(e.shape)?void 0:Xe(e.shape),foreground:w(e.foreground)?void 0:Ge(e.foreground),video:w(e.video)?void 0:vt(e.video),audio:w(e.audio)?void 0:t(e.audio),connection:w(e.connection)?void 0:ze(e.connection),...Y(e),children:e.children?.map(e=>$(e))})}function yt(e){return $(e)}function bt(e){let t={};for(let n in e.children){let r=$(e.children[n]);delete r.children,t[n]=r}return{...e,children:t}}function xt(e){let{children:t,...n}=e;function r(e){let{parentId:t,childrenIds:n,...r}=e;return{...r,children:[]}}let i={},a=[],o={...n,children:a};function s(e){if(!t[e]||i[e])return;let n=t[e],o=r(n);i[e]=o;let c=n.parentId;if(c){s(c);let n=t[c],r=i[c];if(!r)return;n?.childrenIds&&r?.children&&(r.children[n.childrenIds.indexOf(e)]=o)}else a.push(o)}for(let e in t)s(e);return o}e.EventEmitter=ae,e.Observable=ce,e.RawWeakMap=le,e.Reactivable=me,e.clearUndef=D,e.colorFillFields=K,e.defaultColor=B,e.defineProperty=de,e.effectFields=Ue,e.flatDocumentToDocument=xt,e.getDeclarations=N,e.getDefaultBackgroundStyle=Re,e.getDefaultElementStyle=$e,e.getDefaultHighlightStyle=et,e.getDefaultLayoutStyle=Ze,e.getDefaultListStyleStyle=tt,e.getDefaultOutlineStyle=Be,e.getDefaultShadowStyle=He,e.getDefaultStyle=ot,e.getDefaultTextInlineStyle=nt,e.getDefaultTextLineStyle=rt,e.getDefaultTextStyle=it,e.getDefaultTransformStyle=Qe,e.getNestedValue=A,e.getObjectValueByPath=oe,e.getPropertyDescriptor=L,e.gradientFillFields=Ce,e.hasCRLF=ut,e.idGenerator=Ye,e.imageFillFiedls=Te,e.isCRLF=dt,e.isColor=V,e.isColorFill=Ae,e.isColorFillObject=ke,e.isEqualObject=k,e.isFragmentObject=mt,e.isGradient=G,e.isGradientFill=Me,e.isGradientFillObject=je,e.isImageFill=Pe,e.isImageFillObject=Ne,e.isNone=w,e.isParagraphObject=pt,e.isPresetFill=Ie,e.isPresetFillObject=Fe,e.nanoid=Je,e.normalizeAudio=t,e.normalizeBackground=Le,e.normalizeCRLF=ft,e.normalizeColor=H,e.normalizeColorFill=Se,e.normalizeConnection=ze,e.normalizeDocument=yt,e.normalizeEffect=Y,e.normalizeElement=$,e.normalizeFill=q,e.normalizeFlatDocument=bt,e.normalizeForeground=Ge,e.normalizeGradient=xe,e.normalizeGradientFill=we,e.normalizeImageFill=Ee,e.normalizeNumber=E,e.normalizeOutline=J,e.normalizePresetFill=Oe,e.normalizeShadow=Ve,e.normalizeShape=Xe,e.normalizeStyle=X,e.normalizeText=gt,e.normalizeTextContent=Q,e.normalizeTextDeformation=ht,e.normalizeVideo=vt,e.parseColor=R,e.parseGradient=ge,e.pick=O,e.presetFillFiedls=De,e.property=fe,e.property2=pe,e.propertyOffsetFallback=I,e.propertyOffsetGet=F,e.propertyOffsetSet=P,e.round=T,e.setNestedValue=j,e.setObjectValueByPath=se,e.stringifyGradient=_e,e.textContentToString=_t});
|
package/dist/index.mjs
CHANGED
|
@@ -101,6 +101,16 @@ function isNone(value) {
|
|
|
101
101
|
function round(number, digits = 0, base = 10 ** digits) {
|
|
102
102
|
return Math.round(base * number) / base + 0;
|
|
103
103
|
}
|
|
104
|
+
function normalizeNumber(value, fallback) {
|
|
105
|
+
if (typeof value === "number") {
|
|
106
|
+
return Number.isFinite(value) ? value : fallback;
|
|
107
|
+
}
|
|
108
|
+
if (typeof value === "string") {
|
|
109
|
+
const parsed = Number.parseFloat(value);
|
|
110
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
111
|
+
}
|
|
112
|
+
return fallback;
|
|
113
|
+
}
|
|
104
114
|
function clearUndef(obj, deep = false) {
|
|
105
115
|
if (typeof obj !== "object" || !obj) {
|
|
106
116
|
return obj;
|
|
@@ -1434,7 +1444,8 @@ function getDefaultBackgroundStyle() {
|
|
|
1434
1444
|
function normalizeConnection(connection) {
|
|
1435
1445
|
return clearUndef({
|
|
1436
1446
|
start: connection.start,
|
|
1437
|
-
end: connection.end
|
|
1447
|
+
end: connection.end,
|
|
1448
|
+
mode: connection.mode ?? "straight"
|
|
1438
1449
|
});
|
|
1439
1450
|
}
|
|
1440
1451
|
|
|
@@ -1733,8 +1744,35 @@ function getDefaultTextStyle() {
|
|
|
1733
1744
|
};
|
|
1734
1745
|
}
|
|
1735
1746
|
|
|
1747
|
+
const NUMERIC_STYLE_KEYS = [
|
|
1748
|
+
// textLineStyle
|
|
1749
|
+
"textIndent",
|
|
1750
|
+
"lineHeight",
|
|
1751
|
+
// textInlineStyle
|
|
1752
|
+
"letterSpacing",
|
|
1753
|
+
"wordSpacing",
|
|
1754
|
+
"fontSize",
|
|
1755
|
+
// textStyle
|
|
1756
|
+
"textStrokeWidth",
|
|
1757
|
+
// elementStyle
|
|
1758
|
+
"borderRadius",
|
|
1759
|
+
"opacity",
|
|
1760
|
+
// transformStyle
|
|
1761
|
+
"rotate",
|
|
1762
|
+
"scaleX",
|
|
1763
|
+
"scaleY",
|
|
1764
|
+
"skewX",
|
|
1765
|
+
"skewY",
|
|
1766
|
+
"translateX",
|
|
1767
|
+
"translateY",
|
|
1768
|
+
// layoutStyle
|
|
1769
|
+
"borderWidth",
|
|
1770
|
+
"flex",
|
|
1771
|
+
"flexGrow",
|
|
1772
|
+
"flexShrink"
|
|
1773
|
+
];
|
|
1736
1774
|
function normalizeStyle(style) {
|
|
1737
|
-
|
|
1775
|
+
const normalized = clearUndef({
|
|
1738
1776
|
...style,
|
|
1739
1777
|
color: isNone(style.color) ? void 0 : normalizeColor(style.color),
|
|
1740
1778
|
backgroundColor: isNone(style.backgroundColor) ? void 0 : normalizeColor(style.backgroundColor),
|
|
@@ -1743,6 +1781,17 @@ function normalizeStyle(style) {
|
|
|
1743
1781
|
shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor),
|
|
1744
1782
|
textStrokeColor: isNone(style.textStrokeColor) ? void 0 : normalizeColor(style.textStrokeColor)
|
|
1745
1783
|
});
|
|
1784
|
+
for (const key of NUMERIC_STYLE_KEYS) {
|
|
1785
|
+
if (key in normalized) {
|
|
1786
|
+
const value = normalizeNumber(normalized[key]);
|
|
1787
|
+
if (value === void 0) {
|
|
1788
|
+
delete normalized[key];
|
|
1789
|
+
} else {
|
|
1790
|
+
normalized[key] = value;
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
}
|
|
1794
|
+
return normalized;
|
|
1746
1795
|
}
|
|
1747
1796
|
function getDefaultStyle() {
|
|
1748
1797
|
return {
|
|
@@ -1865,6 +1914,13 @@ function isParagraphObject(value) {
|
|
|
1865
1914
|
function isFragmentObject(value) {
|
|
1866
1915
|
return value && typeof value === "object" && "content" in value && typeof value.content === "string";
|
|
1867
1916
|
}
|
|
1917
|
+
function normalizeTextDeformation(deformation) {
|
|
1918
|
+
return clearUndef({
|
|
1919
|
+
type: deformation.type,
|
|
1920
|
+
intensities: deformation.intensities,
|
|
1921
|
+
maxFontSize: deformation.maxFontSize ?? 100
|
|
1922
|
+
});
|
|
1923
|
+
}
|
|
1868
1924
|
function normalizeText(value) {
|
|
1869
1925
|
if (typeof value === "string" || Array.isArray(value)) {
|
|
1870
1926
|
return {
|
|
@@ -1876,6 +1932,7 @@ function normalizeText(value) {
|
|
|
1876
1932
|
enabled: value.enabled ?? true,
|
|
1877
1933
|
content: normalizeTextContent(value.content ?? ""),
|
|
1878
1934
|
style: value.style ? normalizeStyle(value.style) : void 0,
|
|
1935
|
+
deformation: value.deformation ? normalizeTextDeformation(value.deformation) : void 0,
|
|
1879
1936
|
measureDom: value.measureDom,
|
|
1880
1937
|
fonts: value.fonts,
|
|
1881
1938
|
...normalizeEffect(value),
|
|
@@ -1975,4 +2032,4 @@ function flatDocumentToDocument(flatDoc) {
|
|
|
1975
2032
|
return doc;
|
|
1976
2033
|
}
|
|
1977
2034
|
|
|
1978
|
-
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|
|
2035
|
+
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, effectFields, flatDocumentToDocument, getDeclarations, getDefaultBackgroundStyle, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOutlineStyle, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, gradientFillFields, hasCRLF, idGenerator, imageFillFiedls, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeConnection, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeNumber, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeStyle, normalizeText, normalizeTextContent, normalizeTextDeformation, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
|