modern-idoc 0.10.7 → 0.10.9

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 CHANGED
@@ -1213,6 +1213,9 @@ function normalizeGradient(cssText) {
1213
1213
  }).filter(Boolean);
1214
1214
  }
1215
1215
 
1216
+ const colorFillFields = [
1217
+ "color"
1218
+ ];
1216
1219
  function normalizeColorFill(fill) {
1217
1220
  let obj;
1218
1221
  if (typeof fill === "string") {
@@ -1220,11 +1223,17 @@ function normalizeColorFill(fill) {
1220
1223
  } else {
1221
1224
  obj = { ...fill };
1222
1225
  }
1223
- return {
1224
- color: normalizeColor(obj.color)
1225
- };
1226
+ if (obj.color) {
1227
+ obj.color = normalizeColor(obj.color);
1228
+ }
1229
+ return pick(obj, colorFillFields);
1226
1230
  }
1227
1231
 
1232
+ const gradientFillFields = [
1233
+ "linearGradient",
1234
+ "radialGradient",
1235
+ "rotateWithShape"
1236
+ ];
1228
1237
  function normalizeGradientFill(fill) {
1229
1238
  let obj;
1230
1239
  if (typeof fill === "string") {
@@ -1245,13 +1254,18 @@ function normalizeGradientFill(fill) {
1245
1254
  };
1246
1255
  }
1247
1256
  }
1248
- return pick(obj, [
1249
- "linearGradient",
1250
- "radialGradient",
1251
- "rotateWithShape"
1252
- ]);
1257
+ return pick(obj, gradientFillFields);
1253
1258
  }
1254
1259
 
1260
+ const imageFillFiedls = [
1261
+ "image",
1262
+ "cropRect",
1263
+ "stretchRect",
1264
+ "tile",
1265
+ "dpi",
1266
+ "opacity",
1267
+ "rotateWithShape"
1268
+ ];
1255
1269
  function normalizeImageFill(fill) {
1256
1270
  let obj;
1257
1271
  if (typeof fill === "string") {
@@ -1259,17 +1273,14 @@ function normalizeImageFill(fill) {
1259
1273
  } else {
1260
1274
  obj = { ...fill };
1261
1275
  }
1262
- return pick(obj, [
1263
- "image",
1264
- "cropRect",
1265
- "stretchRect",
1266
- "tile",
1267
- "dpi",
1268
- "opacity",
1269
- "rotateWithShape"
1270
- ]);
1276
+ return pick(obj, imageFillFiedls);
1271
1277
  }
1272
1278
 
1279
+ const presetFillFiedls = [
1280
+ "preset",
1281
+ "foregroundColor",
1282
+ "backgroundColor"
1283
+ ];
1273
1284
  function normalizePresetFill(fill) {
1274
1285
  let obj;
1275
1286
  if (typeof fill === "string") {
@@ -1287,11 +1298,7 @@ function normalizePresetFill(fill) {
1287
1298
  } else {
1288
1299
  obj.backgroundColor = normalizeColor(obj.backgroundColor);
1289
1300
  }
1290
- return pick(obj, [
1291
- "preset",
1292
- "foregroundColor",
1293
- "backgroundColor"
1294
- ]);
1301
+ return pick(obj, presetFillFiedls);
1295
1302
  }
1296
1303
 
1297
1304
  function isColorFillObject(fill) {
@@ -1320,16 +1327,25 @@ function isPresetFill(fill) {
1320
1327
  }
1321
1328
  function normalizeFill(fill) {
1322
1329
  const enabled = fill && typeof fill === "object" ? fill.enabled : void 0;
1330
+ const obj = { enabled };
1323
1331
  if (isColorFill(fill)) {
1324
- return clearUndef({ enabled, ...normalizeColorFill(fill) });
1325
- } else if (isGradientFill(fill)) {
1326
- return clearUndef({ enabled, ...normalizeGradientFill(fill) });
1327
- } else if (isImageFill(fill)) {
1328
- return clearUndef({ enabled, ...normalizeImageFill(fill) });
1329
- } else if (isPresetFill(fill)) {
1330
- return clearUndef({ enabled, ...normalizePresetFill(fill) });
1332
+ Object.assign(obj, normalizeColorFill(fill));
1333
+ }
1334
+ if (isGradientFill(fill)) {
1335
+ Object.assign(obj, normalizeGradientFill(fill));
1336
+ }
1337
+ if (isImageFill(fill)) {
1338
+ Object.assign(obj, normalizeImageFill(fill));
1339
+ }
1340
+ if (isPresetFill(fill)) {
1341
+ Object.assign(obj, normalizePresetFill(fill));
1331
1342
  }
1332
- return {};
1343
+ return pick(clearUndef(obj), Array.from(/* @__PURE__ */ new Set([
1344
+ ...colorFillFields,
1345
+ ...imageFillFiedls,
1346
+ ...gradientFillFields,
1347
+ ...presetFillFiedls
1348
+ ])));
1333
1349
  }
1334
1350
 
1335
1351
  function normalizeBackground(background) {
@@ -1559,7 +1575,7 @@ function getDefaultElementStyle() {
1559
1575
  // outline
1560
1576
  outlineWidth: 0,
1561
1577
  outlineOffset: 0,
1562
- outlineColor: "rgb(0, 0, 0)",
1578
+ outlineColor: "none",
1563
1579
  outlineStyle: "none",
1564
1580
  // other
1565
1581
  visibility: "visible",
@@ -1596,7 +1612,7 @@ function getDefaultListStyleStyle() {
1596
1612
  function getDefaultTextInlineStyle() {
1597
1613
  return {
1598
1614
  ...getDefaultHighlightStyle(),
1599
- color: "rgb(0, 0, 0)",
1615
+ color: "#000000",
1600
1616
  verticalAlign: "baseline",
1601
1617
  letterSpacing: 0,
1602
1618
  wordSpacing: 0,
@@ -1630,7 +1646,7 @@ function getDefaultTextStyle() {
1630
1646
  ...getDefaultTextInlineStyle(),
1631
1647
  // textStroke
1632
1648
  textStrokeWidth: 0,
1633
- textStrokeColor: "rgb(0, 0, 0)"
1649
+ textStrokeColor: "none"
1634
1650
  };
1635
1651
  }
1636
1652
 
@@ -1641,7 +1657,8 @@ function normalizeStyle(style) {
1641
1657
  backgroundColor: isNone(style.backgroundColor) ? void 0 : normalizeColor(style.backgroundColor),
1642
1658
  borderColor: isNone(style.borderColor) ? void 0 : normalizeColor(style.borderColor),
1643
1659
  outlineColor: isNone(style.outlineColor) ? void 0 : normalizeColor(style.outlineColor),
1644
- shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor)
1660
+ shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor),
1661
+ textStrokeColor: isNone(style.textStrokeColor) ? void 0 : normalizeColor(style.textStrokeColor)
1645
1662
  });
1646
1663
  }
1647
1664
  function getDefaultStyle() {
@@ -1883,6 +1900,7 @@ exports.Observable = Observable;
1883
1900
  exports.RawWeakMap = RawWeakMap;
1884
1901
  exports.Reactivable = Reactivable;
1885
1902
  exports.clearUndef = clearUndef;
1903
+ exports.colorFillFields = colorFillFields;
1886
1904
  exports.defaultColor = defaultColor;
1887
1905
  exports.defineProperty = defineProperty;
1888
1906
  exports.flatDocumentToDocument = flatDocumentToDocument;
@@ -1902,8 +1920,10 @@ exports.getDefaultTransformStyle = getDefaultTransformStyle;
1902
1920
  exports.getNestedValue = getNestedValue;
1903
1921
  exports.getObjectValueByPath = getObjectValueByPath;
1904
1922
  exports.getPropertyDescriptor = getPropertyDescriptor;
1923
+ exports.gradientFillFields = gradientFillFields;
1905
1924
  exports.hasCRLF = hasCRLF;
1906
1925
  exports.idGenerator = idGenerator;
1926
+ exports.imageFillFiedls = imageFillFiedls;
1907
1927
  exports.isCRLF = isCRLF;
1908
1928
  exports.isColor = isColor;
1909
1929
  exports.isColorFill = isColorFill;
@@ -1948,6 +1968,7 @@ exports.normalizeVideo = normalizeVideo;
1948
1968
  exports.parseColor = parseColor;
1949
1969
  exports.parseGradient = parseGradient;
1950
1970
  exports.pick = pick;
1971
+ exports.presetFillFiedls = presetFillFiedls;
1951
1972
  exports.property = property;
1952
1973
  exports.property2 = property2;
1953
1974
  exports.propertyOffsetFallback = propertyOffsetFallback;
package/dist/index.d.cts CHANGED
@@ -221,6 +221,7 @@ type ColorFill = string | ColorFillObject;
221
221
  interface NormalizedColorFill {
222
222
  color: NormalizedColor;
223
223
  }
224
+ declare const colorFillFields: (keyof NormalizedColorFill)[];
224
225
  declare function normalizeColorFill(fill: ColorFill): NormalizedColorFill;
225
226
 
226
227
  type GradientFillObject = {
@@ -232,6 +233,7 @@ interface NormalizedGradientFill {
232
233
  radialGradient?: RadialGradient;
233
234
  rotateWithShape?: boolean;
234
235
  }
236
+ declare const gradientFillFields: (keyof NormalizedGradientFill)[];
235
237
  declare function normalizeGradientFill(fill: GradientFill): NormalizedGradientFill;
236
238
 
237
239
  /**
@@ -276,6 +278,7 @@ interface ImageFillObject {
276
278
  type ImageFill = string | ImageFillObject;
277
279
  interface NormalizedImageFill extends ImageFillObject {
278
280
  }
281
+ declare const imageFillFiedls: (keyof NormalizedImageFill)[];
279
282
  declare function normalizeImageFill(fill: ImageFill): NormalizedImageFill;
280
283
 
281
284
  type None = undefined | null | 'none';
@@ -294,6 +297,7 @@ interface NormalizedPresetFill extends PresetFillObject {
294
297
  foregroundColor?: NormalizedColor;
295
298
  backgroundColor?: NormalizedColor;
296
299
  }
300
+ declare const presetFillFiedls: (keyof NormalizedPresetFill)[];
297
301
  declare function normalizePresetFill(fill: PresetFill): NormalizedPresetFill;
298
302
 
299
303
  type FillObject = {
@@ -670,10 +674,10 @@ declare function getDefaultTextLineStyle(): NormalizedTextLineStyle;
670
674
 
671
675
  interface NormalizedTextDrawStyle {
672
676
  textStrokeWidth: number;
673
- textStrokeColor: NormalizedColor;
677
+ textStrokeColor: WithStyleNone<NormalizedColor>;
674
678
  }
675
679
  type NormalizedTextStyle = NormalizedTextLineStyle & NormalizedTextInlineStyle & NormalizedTextDrawStyle;
676
- declare function getDefaultTextStyle(): Required<NormalizedTextStyle>;
680
+ declare function getDefaultTextStyle(): NormalizedTextStyle;
677
681
 
678
682
  type FullStyle = NormalizedTextStyle & NormalizedElementStyle;
679
683
  type NormalizedStyle = Partial<FullStyle>;
@@ -902,5 +906,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
902
906
  destroy(): void;
903
907
  }
904
908
 
905
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
909
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, 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, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
906
910
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, 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, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, 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, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.mts CHANGED
@@ -221,6 +221,7 @@ type ColorFill = string | ColorFillObject;
221
221
  interface NormalizedColorFill {
222
222
  color: NormalizedColor;
223
223
  }
224
+ declare const colorFillFields: (keyof NormalizedColorFill)[];
224
225
  declare function normalizeColorFill(fill: ColorFill): NormalizedColorFill;
225
226
 
226
227
  type GradientFillObject = {
@@ -232,6 +233,7 @@ interface NormalizedGradientFill {
232
233
  radialGradient?: RadialGradient;
233
234
  rotateWithShape?: boolean;
234
235
  }
236
+ declare const gradientFillFields: (keyof NormalizedGradientFill)[];
235
237
  declare function normalizeGradientFill(fill: GradientFill): NormalizedGradientFill;
236
238
 
237
239
  /**
@@ -276,6 +278,7 @@ interface ImageFillObject {
276
278
  type ImageFill = string | ImageFillObject;
277
279
  interface NormalizedImageFill extends ImageFillObject {
278
280
  }
281
+ declare const imageFillFiedls: (keyof NormalizedImageFill)[];
279
282
  declare function normalizeImageFill(fill: ImageFill): NormalizedImageFill;
280
283
 
281
284
  type None = undefined | null | 'none';
@@ -294,6 +297,7 @@ interface NormalizedPresetFill extends PresetFillObject {
294
297
  foregroundColor?: NormalizedColor;
295
298
  backgroundColor?: NormalizedColor;
296
299
  }
300
+ declare const presetFillFiedls: (keyof NormalizedPresetFill)[];
297
301
  declare function normalizePresetFill(fill: PresetFill): NormalizedPresetFill;
298
302
 
299
303
  type FillObject = {
@@ -670,10 +674,10 @@ declare function getDefaultTextLineStyle(): NormalizedTextLineStyle;
670
674
 
671
675
  interface NormalizedTextDrawStyle {
672
676
  textStrokeWidth: number;
673
- textStrokeColor: NormalizedColor;
677
+ textStrokeColor: WithStyleNone<NormalizedColor>;
674
678
  }
675
679
  type NormalizedTextStyle = NormalizedTextLineStyle & NormalizedTextInlineStyle & NormalizedTextDrawStyle;
676
- declare function getDefaultTextStyle(): Required<NormalizedTextStyle>;
680
+ declare function getDefaultTextStyle(): NormalizedTextStyle;
677
681
 
678
682
  type FullStyle = NormalizedTextStyle & NormalizedElementStyle;
679
683
  type NormalizedStyle = Partial<FullStyle>;
@@ -902,5 +906,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
902
906
  destroy(): void;
903
907
  }
904
908
 
905
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
909
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, 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, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
906
910
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, 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, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, 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, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.ts CHANGED
@@ -221,6 +221,7 @@ type ColorFill = string | ColorFillObject;
221
221
  interface NormalizedColorFill {
222
222
  color: NormalizedColor;
223
223
  }
224
+ declare const colorFillFields: (keyof NormalizedColorFill)[];
224
225
  declare function normalizeColorFill(fill: ColorFill): NormalizedColorFill;
225
226
 
226
227
  type GradientFillObject = {
@@ -232,6 +233,7 @@ interface NormalizedGradientFill {
232
233
  radialGradient?: RadialGradient;
233
234
  rotateWithShape?: boolean;
234
235
  }
236
+ declare const gradientFillFields: (keyof NormalizedGradientFill)[];
235
237
  declare function normalizeGradientFill(fill: GradientFill): NormalizedGradientFill;
236
238
 
237
239
  /**
@@ -276,6 +278,7 @@ interface ImageFillObject {
276
278
  type ImageFill = string | ImageFillObject;
277
279
  interface NormalizedImageFill extends ImageFillObject {
278
280
  }
281
+ declare const imageFillFiedls: (keyof NormalizedImageFill)[];
279
282
  declare function normalizeImageFill(fill: ImageFill): NormalizedImageFill;
280
283
 
281
284
  type None = undefined | null | 'none';
@@ -294,6 +297,7 @@ interface NormalizedPresetFill extends PresetFillObject {
294
297
  foregroundColor?: NormalizedColor;
295
298
  backgroundColor?: NormalizedColor;
296
299
  }
300
+ declare const presetFillFiedls: (keyof NormalizedPresetFill)[];
297
301
  declare function normalizePresetFill(fill: PresetFill): NormalizedPresetFill;
298
302
 
299
303
  type FillObject = {
@@ -670,10 +674,10 @@ declare function getDefaultTextLineStyle(): NormalizedTextLineStyle;
670
674
 
671
675
  interface NormalizedTextDrawStyle {
672
676
  textStrokeWidth: number;
673
- textStrokeColor: NormalizedColor;
677
+ textStrokeColor: WithStyleNone<NormalizedColor>;
674
678
  }
675
679
  type NormalizedTextStyle = NormalizedTextLineStyle & NormalizedTextInlineStyle & NormalizedTextDrawStyle;
676
- declare function getDefaultTextStyle(): Required<NormalizedTextStyle>;
680
+ declare function getDefaultTextStyle(): NormalizedTextStyle;
677
681
 
678
682
  type FullStyle = NormalizedTextStyle & NormalizedElementStyle;
679
683
  type NormalizedStyle = Partial<FullStyle>;
@@ -902,5 +906,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
902
906
  destroy(): void;
903
907
  }
904
908
 
905
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
909
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, 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, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
906
910
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, 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, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, 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, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(o,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(o=typeof globalThis<"u"?globalThis:o||self,j(o.modernIdoc={}))})(this,(function(o){"use strict";function j(t){return typeof t=="string"?{src:t}:t}var Ce={grad:.9,turn:360,rad:360/(2*Math.PI)},D=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},v=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},z=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},yt=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},bt=function(t){return{r:z(t.r,0,255),g:z(t.g,0,255),b:z(t.b,0,255),a:z(t.a)}},rt=function(t){return{r:v(t.r),g:v(t.g),b:v(t.b),a:v(t.a,3)}},we=/^#([0-9a-f]{3,8})$/i,q=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},St=function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=Math.max(e,r,n),s=a-Math.min(e,r,n),u=s?a===e?(r-n)/s:a===r?2+(n-e)/s:4+(e-r)/s:0;return{h:60*(u<0?u+6:u),s:a?s/a*100:0,v:a/255*100,a:i}},_t=function(t){var e=t.h,r=t.s,n=t.v,i=t.a;e=e/360*6,r/=100,n/=100;var a=Math.floor(e),s=n*(1-r),u=n*(1-(e-a)*r),f=n*(1-(1-e+a)*r),g=a%6;return{r:255*[n,u,s,s,f,n][g],g:255*[f,n,n,u,s,s][g],b:255*[s,s,f,n,n,u][g],a:i}},Ct=function(t){return{h:yt(t.h),s:z(t.s,0,100),l:z(t.l,0,100),a:z(t.a)}},wt=function(t){return{h:v(t.h),s:v(t.s),l:v(t.l),a:v(t.a,3)}},Pt=function(t){return _t((r=(e=t).s,{h:e.h,s:(r*=((n=e.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:e.a}));var e,r,n},V=function(t){return{h:(e=St(t)).h,s:(i=(200-(r=e.s))*(n=e.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,r,n,i},Pe=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ze=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Oe=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ee=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,zt={string:[[function(t){var e=we.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?v(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?v(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Oe.exec(t)||Ee.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:bt({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Pe.exec(t)||ze.exec(t);if(!e)return null;var r,n,i=Ct({h:(r=e[1],n=e[2],n===void 0&&(n="deg"),Number(r)*(Ce[n]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Pt(i)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=i===void 0?1:i;return D(e)&&D(r)&&D(n)?bt({r:Number(e),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,n=t.l,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=Ct({h:Number(e),s:Number(r),l:Number(n),a:Number(a)});return Pt(s)},"hsl"],[function(t){var e=t.h,r=t.s,n=t.v,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=(function(u){return{h:yt(u.h),s:z(u.s,0,100),v:z(u.v,0,100),a:z(u.a)}})({h:Number(e),s:Number(r),v:Number(n),a:Number(a)});return _t(s)},"hsv"]]},Ot=function(t,e){for(var r=0;r<e.length;r++){var n=e[r][0](t);if(n)return[n,e[r][1]]}return[null,void 0]},Fe=function(t){return typeof t=="string"?Ot(t.trim(),zt.string):typeof t=="object"&&t!==null?Ot(t,zt.object):[null,void 0]},nt=function(t,e){var r=V(t);return{h:r.h,s:z(r.s+100*e,0,100),l:r.l,a:r.a}},it=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},Et=function(t,e){var r=V(t);return{h:r.h,s:r.s,l:z(r.l+100*e,0,100),a:r.a}},Ft=(function(){function t(e){this.parsed=Fe(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return v(it(this.rgba),2)},t.prototype.isDark=function(){return it(this.rgba)<.5},t.prototype.isLight=function(){return it(this.rgba)>=.5},t.prototype.toHex=function(){return e=rt(this.rgba),r=e.r,n=e.g,i=e.b,s=(a=e.a)<1?q(v(255*a)):"","#"+q(r)+q(n)+q(i)+s;var e,r,n,i,a,s},t.prototype.toRgb=function(){return rt(this.rgba)},t.prototype.toRgbString=function(){return e=rt(this.rgba),r=e.r,n=e.g,i=e.b,(a=e.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var e,r,n,i,a},t.prototype.toHsl=function(){return wt(V(this.rgba))},t.prototype.toHslString=function(){return e=wt(V(this.rgba)),r=e.h,n=e.s,i=e.l,(a=e.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var e,r,n,i,a},t.prototype.toHsv=function(){return e=St(this.rgba),{h:v(e.h),s:v(e.s),v:v(e.v),a:v(e.a,3)};var e},t.prototype.invert=function(){return L({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),L(nt(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),L(nt(this.rgba,-e))},t.prototype.grayscale=function(){return L(nt(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),L(Et(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),L(Et(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?L({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):v(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=V(this.rgba);return typeof e=="number"?L({h:e,s:r.s,l:r.l,a:r.a}):v(r.h)},t.prototype.isEqual=function(e){return this.toHex()===L(e).toHex()},t})(),L=function(t){return t instanceof Ft?t:new Ft(t)};class Le{eventListeners=new Map;addEventListener(e,r,n){const i={value:r,options:n},a=this.eventListeners.get(e);return a?Array.isArray(a)?a.push(i):this.eventListeners.set(e,[a,i]):this.eventListeners.set(e,i),this}removeEventListener(e,r,n){if(!r)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let s=0,u=i.length;s<u;s++){const f=i[s];(f.value!==r||typeof n=="object"&&n?.once&&(typeof f.options=="boolean"||!f.options?.once))&&a.push(f)}a.length?this.eventListeners.set(e,a.length===1?a[0]:a):this.eventListeners.delete(e)}else i.value===r&&(typeof n=="boolean"||!n?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...r){const n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let i=n.length,a=0;a<i;a++){const s=n[a];typeof s.options=="object"&&s.options?.once&&this.off(e,s.value,s.options),s.value.apply(this,r)}else typeof n.options=="object"&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,r);return!0}else return!1}on(e,r,n){return this.addEventListener(e,r,n)}once(e,r){return this.addEventListener(e,r,{once:!0})}off(e,r,n){return this.removeEventListener(e,r,n)}emit(e,...r){this.dispatchEvent(e,...r)}}function h(t){return t==null||t===""||t==="none"}function A(t,e=0,r=10**e){return Math.round(r*t)/r+0}function _(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(n=>_(n,e)):t;const r={};for(const n in t){const i=t[n];i!=null&&(e?r[n]=_(i,e):r[n]=i)}return r}function N(t,e){const r={};return e.forEach(n=>{n in t&&(r[n]=t[n])}),r}function J(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const r=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!r.length||r.every(n=>t[n]===e[n])}return!1}function Lt(t,e,r){const n=e.length-1;if(n<0)return t===void 0?r:t;for(let i=0;i<n;i++){if(t==null)return r;t=t[e[i]]}return t==null||t[e[n]]===void 0?r:t[e[n]]}function Dt(t,e,r){const n=e.length-1;for(let i=0;i<n;i++)typeof t[e[i]]!="object"&&(t[e[i]]={}),t=t[e[i]];t[e[n]]=r}function At(t,e,r){return t==null||!e||typeof e!="string"?r:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Lt(t,e.split("."),r))}function Nt(t,e,r){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Dt(t,e.split("."),r)}class Rt{_observers=new Map;on(e,r){let n=this._observers.get(e);return n===void 0&&this._observers.set(e,n=new Set),n.add(r),this}once(e,r){const n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n),this}off(e,r){const n=this._observers.get(e);return n!==void 0&&(n.delete(r),n.size===0&&this._observers.delete(e)),this}emit(e,...r){return Array.from((this._observers.get(e)||new Map).values()).forEach(n=>n(...r)),this}destroy(){this._observers=new Map}}class De{_map=new WeakMap;_toRaw(e){if(e&&typeof e=="object"){const r=e.__v_raw;r&&(e=this._toRaw(r))}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,r){return this._map.set(this._toRaw(e),this._toRaw(r)),this}}const ot=Symbol("properties"),X=Symbol("inited");function $(t){let e;if(Object.hasOwn(t,ot))e=t[ot];else{const r=Object.getPrototypeOf(t);e=new Map(r?$(r):void 0),t[ot]=e}return e}function at(t,e,r,n){const{alias:i,internalKey:a}=n,s=t[e];i?Nt(t,i,r):t[a]=r,t.onUpdateProperty?.(e,r??k(t,e,n),s)}function st(t,e,r){const{alias:n,internalKey:i}=r;let a;return n?a=At(t,n):a=t[i],a=a??k(t,e,r),a}function k(t,e,r){const{default:n,fallback:i}=r;let a;if(n!==void 0&&!t[X]?.[e]){t[X]||(t[X]={}),t[X][e]=!0;const s=typeof n=="function"?n():n;s!==void 0&&(t[e]=s,a=s)}return a===void 0&&i!==void 0&&(a=typeof i=="function"?i():i),a}function lt(t,e){function r(){return typeof this.getProperty<"u"?this.getProperty(t):st(this,t,e)}function n(i){typeof this.setProperty<"u"?this.setProperty(t,i):at(this,t,i,e)}return{get:r,set:n}}function Gt(t,e,r={}){const n={...r,internalKey:Symbol(e)};$(t).set(e,n);const i=lt(e,n);Object.defineProperty(t.prototype,e,{get(){return i.get.call(this)},set(a){i.set.call(this,a)},configurable:!0,enumerable:!0})}function Ae(t){return function(e,r){if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Gt(e.constructor,r,t)}}function Ne(t={}){return function(e,r){const n=r.name;if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i={...t,internalKey:Symbol(n)},a=lt(n,i);return{init(s){return $(this.constructor).set(n,i),a.set.call(this,s),s},get(){return a.get.call(this)},set(s){a.set.call(this,s)}}}}class Re extends Rt{_propertyAccessor;_properties=new Map;_updatedProperties=new Map;_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?this._updatedProperties.has(e):this._updatedProperties.size>0}getProperty(e){const r=this.getPropertyDeclaration(e);if(r){if(r.internal||r.alias)return st(this,e,r);{let n;return this._propertyAccessor?.getProperty?n=this._propertyAccessor.getProperty(e):n=this._properties.get(e),n??k(this,e,r)}}}setProperty(e,r){const n=this.getPropertyDeclaration(e);if(n)if(n.internal||n.alias)at(this,e,r,n);else{const i=this.getProperty(e);this._propertyAccessor?.setProperty?.(e,r),this._properties.set(e,r),this.onUpdateProperty?.(e,r??k(this,e,n),i)}}getProperties(e){const r={};for(const[n,i]of this.getPropertyDeclarations())!i.internal&&!i.alias&&(!e||e.includes(n))&&(r[n]=this.getProperty(n));return r}setProperties(e){if(e&&typeof e=="object")for(const r in e)this.setProperty(r,e[r]);return this}resetProperties(){for(const[e,r]of this.getPropertyDeclarations())this.setProperty(e,typeof r.default=="function"?r.default():r.default);return this}getPropertyDeclarations(){return $(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}setPropertyAccessor(e){const r=this.getPropertyDeclarations();this._propertyAccessor=void 0;const n={};return r.forEach((i,a)=>{n[a]=this.getProperty(a)}),this._propertyAccessor=e,r.forEach((i,a)=>{const s=this.getProperty(a),u=n[a];s!==void 0&&!Object.is(s,u)&&(this.setProperty(a,s),!i.internal&&!i.alias&&this.requestUpdate(a,s,u))}),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(),this._updating=!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties=new Map}onUpdateProperty(e,r,n){Object.is(r,n)||this.requestUpdate(e,r,n)}requestUpdate(e,r,n){e!==void 0&&(this._updatedProperties.set(e,n),this._changedProperties.add(e),this._updateProperty(e,r,n),this.emit("updateProperty",e,r,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,r,n){}toJSON(){const e={};return this._properties.forEach((r,n)=>{r!==void 0&&(r&&typeof r=="object"?"toJSON"in r&&typeof r.toJSON=="function"?e[n]=r.toJSON():Array.isArray(r)?e[n]=[...r]:e[n]={...r}:e[n]=r)}),e}clone(){return new this.constructor(this.toJSON())}destroy(){this.emit("destroy"),super.destroy()}}function ut(t){let e;return typeof t=="number"?e={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:e=t,L(e)}function Ge(t){return{r:A(t.r),g:A(t.g),b:A(t.b),a:A(t.a,3)}}function Y(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const W="#000000FF";function It(t){return ut(t).isValid()}function S(t,e=!1){const r=ut(t);if(!r.isValid()){if(typeof t=="string")return t;const u=`Failed to normalizeColor ${t}`;if(e)throw new Error(u);return console.warn(u),W}const{r:n,g:i,b:a,a:s}=Ge(r.rgba);return`#${Y(n)}${Y(i)}${Y(a)}${Y(A(s*255))}`}var x=x||{};x.parse=(function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let e="";function r(l){const c=new Error(`${e}: ${l}`);throw c.source=e,c}function n(){const l=i();return e.length>0&&r("Invalid input not EOF"),l}function i(){return M(a)}function a(){return s("linear-gradient",t.linearGradient,f)||s("repeating-linear-gradient",t.repeatingLinearGradient,f)||s("radial-gradient",t.radialGradient,p)||s("repeating-radial-gradient",t.repeatingRadialGradient,p)}function s(l,c,d){return u(c,b=>{const I=d();return I&&(m(t.comma)||r("Missing comma before color stops")),{type:l,orientation:I,colorStops:M(mt)}})}function u(l,c){const d=m(l);if(d){m(t.startCall)||r("Missing (");const b=c(d);return m(t.endCall)||r("Missing )"),b}}function f(){const l=g();if(l)return l;const c=P("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:y()}function g(){return P("directional",t.sideOrCorner,1)}function y(){return P("angular",t.angleValue,1)||P("angular",t.radianValue,1)}function p(){let l,c=C(),d;return c&&(l=[],l.push(c),d=e,m(t.comma)&&(c=C(),c?l.push(c):e=d)),l}function C(){let l=w()||R();if(l)l.at=F();else{const c=O();if(c){l=c;const d=F();d&&(l.at=d)}else{const d=F();if(d)l={type:"default-radial",at:d};else{const b=G();b&&(l={type:"default-radial",at:b})}}}return l}function w(){const l=P("shape",/^(circle)/i,0);return l&&(l.style=_e()||O()),l}function R(){const l=P("shape",/^(ellipse)/i,0);return l&&(l.style=G()||et()||O()),l}function O(){return P("extent-keyword",t.extentKeywords,1)}function F(){if(P("position",/^at/,0)){const l=G();return l||r("Missing positioning value"),l}}function G(){const l=U();if(l.x||l.y)return{type:"position",value:l}}function U(){return{x:et(),y:et()}}function M(l){let c=l();const d=[];if(c)for(d.push(c);m(t.comma);)c=l(),c?d.push(c):r("One extra comma");return d}function mt(){const l=qe();return l||r("Expected color definition"),l.length=et(),l}function qe(){return Xe()||tr()||Qe()||xe()||Ye()||Ze()||Je()}function Je(){return P("literal",t.literalColor,0)}function Xe(){return P("hex",t.hexColor,1)}function Ye(){return u(t.rgbColor,()=>({type:"rgb",value:M(K)}))}function xe(){return u(t.rgbaColor,()=>({type:"rgba",value:M(K)}))}function Ze(){return u(t.varColor,()=>({type:"var",value:er()}))}function Qe(){return u(t.hslColor,()=>{m(t.percentageValue)&&r("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=K();m(t.comma);let d=m(t.percentageValue);const b=d?d[1]:null;m(t.comma),d=m(t.percentageValue);const I=d?d[1]:null;return(!b||!I)&&r("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,b,I]}})}function tr(){return u(t.hslaColor,()=>{const l=K();m(t.comma);let c=m(t.percentageValue);const d=c?c[1]:null;m(t.comma),c=m(t.percentageValue);const b=c?c[1]:null;m(t.comma);const I=K();return(!d||!b)&&r("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[l,d,b,I]}})}function er(){return m(t.variableName)[1]}function K(){return m(t.number)[1]}function et(){return P("%",t.percentageValue,1)||rr()||nr()||_e()}function rr(){return P("position-keyword",t.positionKeywords,1)}function nr(){return u(t.calcValue,()=>{let l=1,c=0;for(;l>0&&c<e.length;){const b=e.charAt(c);b==="("?l++:b===")"&&l--,c++}l>0&&r("Missing closing parenthesis in calc() expression");const d=e.substring(0,c-1);return vt(c-1),{type:"calc",value:d}})}function _e(){return P("px",t.pixelValue,1)||P("em",t.emValue,1)}function P(l,c,d){const b=m(c);if(b)return{type:l,value:b[d]}}function m(l){let c,d;return d=/^\s+/.exec(e),d&&vt(d[0].length),c=l.exec(e),c&&vt(c[0].length),c}function vt(l){e=e.substr(l)}return function(l){return e=l.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),n()}})();const jt=x.parse.bind(x);var Z=Z||{};Z.stringify=(function(){var t={"visit_linear-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-linear-gradient":function(e){return t.visit_gradient(e)},"visit_radial-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-radial-gradient":function(e){return t.visit_gradient(e)},visit_gradient:function(e){var r=t.visit(e.orientation);return r&&(r+=", "),e.type+"("+r+t.visit(e.colorStops)+")"},visit_shape:function(e){var r=e.value,n=t.visit(e.at),i=t.visit(e.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(e){var r="",n=t.visit(e.at);return n&&(r+=n),r},"visit_extent-keyword":function(e){var r=e.value,n=t.visit(e.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return t.visit(e.value.x)+" "+t.visit(e.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(e){return t.visit_color(e.value,e)},visit_hex:function(e){return t.visit_color("#"+e.value,e)},visit_rgb:function(e){return t.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return t.visit_color("rgba("+e.value.join(", ")+")",e)},visit_hsl:function(e){return t.visit_color("hsl("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%)",e)},visit_hsla:function(e){return t.visit_color("hsla("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%, "+e.value[3]+")",e)},visit_var:function(e){return t.visit_color("var("+e.value+")",e)},visit_color:function(e,r){var n=e,i=t.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var r="",n=e.length;return e.forEach(function(i,a){r+=t.visit(i),a<n-1&&(r+=", ")}),r},visit_object:function(e){return e.width&&e.height?t.visit(e.width)+" "+t.visit(e.height):""},visit:function(e){if(!e)return"";if(e instanceof Array)return t.visit_array(e);if(typeof e=="object"&&!e.type)return t.visit_object(e);if(e.type){var r=t["visit_"+e.type];if(r)return r(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}})();const Ie=Z.stringify.bind(Z);function Tt(t){const e=t.length-1;return t.map((r,n)=>{const i=r.value;let a=A(n/e,3),s="#00000000";switch(r.type){case"rgb":s=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":s=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":s=S(r.value);break;case"hex":s=S(`#${r.value}`);break}switch(r.length?.type){case"%":a=Number(r.length.value)/100;break}return{offset:a,color:s}})}function Mt(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Tt(t.colorStops)}}function Vt(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Tt(t.colorStops)}}function H(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function $t(t){return jt(t).map(e=>{switch(e?.type){case"linear-gradient":return Mt(e);case"repeating-linear-gradient":return{...Mt(e),repeat:!0};case"radial-gradient":return Vt(e);case"repeating-radial-gradient":return{...Vt(e),repeat:!0};default:return}}).filter(Boolean)}function kt(t){let e;return typeof t=="string"?e={color:t}:e={...t},{color:S(e.color)}}function Wt(t){let e;if(typeof t=="string"?e={image:t}:e={...t},e.image){const{type:r,...n}=$t(e.image)[0]??{};switch(r){case"radial-gradient":return{radialGradient:n};case"linear-gradient":return{linearGradient:n}}}return N(e,["linearGradient","radialGradient","rotateWithShape"])}function Ht(t){let e;return typeof t=="string"?e={image:t}:e={...t},N(e,["image","cropRect","stretchRect","tile","dpi","opacity","rotateWithShape"])}function Bt(t){let e;return typeof t=="string"?e={preset:t}:e={...t},h(e.foregroundColor)?delete e.foregroundColor:e.foregroundColor=S(e.foregroundColor),h(e.backgroundColor)?delete e.backgroundColor:e.backgroundColor=S(e.backgroundColor),N(e,["preset","foregroundColor","backgroundColor"])}function Ut(t){return!h(t.color)}function Kt(t){return typeof t=="string"?It(t):Ut(t)}function qt(t){return!h(t.image)&&H(t.image)||!!t.linearGradient||!!t.radialGradient}function Jt(t){return typeof t=="string"?H(t):qt(t)}function Xt(t){return!h(t.image)&&!H(t.image)}function Yt(t){return typeof t=="string"?!H(t):Xt(t)}function xt(t){return!h(t.preset)}function Zt(t){return typeof t=="string"?!1:xt(t)}function E(t){const e=t&&typeof t=="object"?t.enabled:void 0;return Kt(t)?_({enabled:e,...kt(t)}):Jt(t)?_({enabled:e,...Wt(t)}):Yt(t)?_({enabled:e,...Ht(t)}):Zt(t)?_({enabled:e,...Bt(t)}):{}}function Qt(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["fillWithShape"])}}function ct(){return{color:W,offsetX:0,offsetY:0,blurRadius:1}}function ft(t){return{...ct(),..._({...t,color:h(t.color)?W:S(t.color)})}}function te(){return{...ct(),scaleX:1,scaleY:1}}function ee(t){return{...te(),...ft(t)}}function je(t){return t}function re(t){return _({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:ee(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:ft(t.innerShadow)})}function ne(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["fillWithShape"])}}const Te="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let Me=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=Te[r[t]&63];return e};const ie=()=>Me(10),oe=ie;function B(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function ae(t){return typeof t=="string"?{color:S(t)}:{...t,color:h(t.color)?W:S(t.color)}}function se(){return{boxShadow:"none"}}function le(t){return typeof t=="string"?t.startsWith("<svg")?{svg:t}:{paths:[{data:t}]}:Array.isArray(t)?{paths:t.map(e=>typeof e=="string"?{data:e}:e)}:t}function ue(){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 ce(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function fe(){return{...ue(),...ce(),...se(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"rgb(0, 0, 0)",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function de(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function he(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ge(){return{...de(),color:"rgb(0, 0, 0)",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function pe(){return{...he(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function me(){return{...pe(),...ge(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function T(t){return _({...t,color:h(t.color)?void 0:S(t.color),backgroundColor:h(t.backgroundColor)?void 0:S(t.backgroundColor),borderColor:h(t.borderColor)?void 0:S(t.borderColor),outlineColor:h(t.outlineColor)?void 0:S(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:S(t.shadowColor)})}function Ve(){return{...fe(),...me()}}const dt=/\r\n|\n\r|\n|\r/,$e=new RegExp(`${dt.source}|<br\\/>`,"g"),ke=new RegExp(`^(${dt.source})$`),ht=`
2
- `;function We(t){return dt.test(t)}function gt(t){return ke.test(t)}function ve(t){return t.replace($e,ht)}function Q(t){const e=[];function r(){return e[e.length-1]}function n(u,f,g){const y=u?T(u):{},p=f?E(f):void 0,C=g?B(g):void 0,w=_({...y,fill:p,outline:C,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=w:e.push(w),w}function i(u="",f,g,y){const p=f?T(f):{},C=g?E(g):void 0,w=y?B(y):void 0;Array.from(u).forEach(R=>{if(gt(R)){const{fragments:O,fill:F,outline:G,...U}=r()||n();O.length||O.push(_({...p,fill:C,outline:w,content:ht})),n(U,F,G)}else{const O=r()||n(),F=O.fragments[O.fragments.length-1];if(F){const{content:G,fill:U,outline:M,...mt}=F;if(J(C,U)&&J(w,M)&&J(p,mt)){F.content=`${G}${R}`;return}}O.fragments.push(_({...p,fill:C,outline:w,content:R}))}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")n(),i(u);else if(pt(u)){const{content:f,fill:g,outline:y,...p}=u;n(p,g,y),i(f)}else if(ye(u)){const{fragments:f,fill:g,outline:y,...p}=u;n(p,g,y),f.forEach(C=>{const{content:w,fill:R,outline:O,...F}=C;i(w,F,R,O)})}else Array.isArray(u)?(n(),u.forEach(f=>{if(typeof f=="string")i(f);else if(pt(f)){const{content:g,fill:y,outline:p,...C}=f;i(g,C,y,p)}})):console.warn("Failed to parse text content",u)});const s=r();return s&&!s.fragments.length&&s.fragments.push({content:""}),e}function ye(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function pt(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function be(t){return typeof t=="string"||Array.isArray(t)?{content:Q(t)}:_({...t,content:Q(t.content??""),style:t.style?T(t.style):void 0,effects:t.effects?t.effects.map(e=>T(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?E(t.fill):void 0,outline:t.outline?B(t.outline):void 0})}function He(t){return Q(t).map(e=>{const r=ve(e.fragments.flatMap(n=>n.content).join(""));return gt(r)?"":r}).join(ht)}function Se(t){return typeof t=="string"?{src:t}:t}function tt(t){return _({...t,id:t.id??oe(),style:h(t.style)?void 0:T(t.style),text:h(t.text)?void 0:be(t.text),background:h(t.background)?void 0:Qt(t.background),shape:h(t.shape)?void 0:le(t.shape),fill:h(t.fill)?void 0:E(t.fill),outline:h(t.outline)?void 0:B(t.outline),foreground:h(t.foreground)?void 0:ne(t.foreground),shadow:h(t.shadow)?void 0:ae(t.shadow),video:h(t.video)?void 0:Se(t.video),audio:h(t.audio)?void 0:j(t.audio),effect:h(t.effect)?void 0:re(t.effect),children:t.children?.map(e=>tt(e))})}function Be(t){return tt(t)}function Ue(t){const e={};for(const r in t.children){const n=tt(t.children[r]);delete n.children,e[r]=n}return{...t,children:e}}function Ke(t){const{children:e,...r}=t;function n(f){const{parentId:g,childrenIds:y,...p}=f;return{...p,children:[]}}const i={},a=[],s={...r,children:a};function u(f){if(!e[f]||i[f])return;const g=e[f],y=n(g);i[f]=y;const p=g.parentId;if(p){u(p);const C=e[p],w=i[p];if(!w)return;C?.childrenIds&&w?.children&&(w.children[C.childrenIds.indexOf(f)]=y)}else a.push(y)}for(const f in e)u(f);return s}o.EventEmitter=Le,o.Observable=Rt,o.RawWeakMap=De,o.Reactivable=Re,o.clearUndef=_,o.defaultColor=W,o.defineProperty=Gt,o.flatDocumentToDocument=Ke,o.getDeclarations=$,o.getDefaultElementStyle=fe,o.getDefaultHighlightStyle=de,o.getDefaultInnerShadow=ct,o.getDefaultLayoutStyle=ue,o.getDefaultListStyleStyle=he,o.getDefaultOuterShadow=te,o.getDefaultShadowStyle=se,o.getDefaultStyle=Ve,o.getDefaultTextInlineStyle=ge,o.getDefaultTextLineStyle=pe,o.getDefaultTextStyle=me,o.getDefaultTransformStyle=ce,o.getNestedValue=Lt,o.getObjectValueByPath=At,o.getPropertyDescriptor=lt,o.hasCRLF=We,o.idGenerator=oe,o.isCRLF=gt,o.isColor=It,o.isColorFill=Kt,o.isColorFillObject=Ut,o.isEqualObject=J,o.isFragmentObject=pt,o.isGradient=H,o.isGradientFill=Jt,o.isGradientFillObject=qt,o.isImageFill=Yt,o.isImageFillObject=Xt,o.isNone=h,o.isParagraphObject=ye,o.isPresetFill=Zt,o.isPresetFillObject=xt,o.nanoid=ie,o.normalizeAudio=j,o.normalizeBackground=Qt,o.normalizeCRLF=ve,o.normalizeColor=S,o.normalizeColorFill=kt,o.normalizeDocument=Be,o.normalizeEffect=re,o.normalizeElement=tt,o.normalizeFill=E,o.normalizeFlatDocument=Ue,o.normalizeForeground=ne,o.normalizeGradient=$t,o.normalizeGradientFill=Wt,o.normalizeImageFill=Ht,o.normalizeInnerShadow=ft,o.normalizeOuterShadow=ee,o.normalizeOutline=B,o.normalizePresetFill=Bt,o.normalizeShadow=ae,o.normalizeShape=le,o.normalizeSoftEdge=je,o.normalizeStyle=T,o.normalizeText=be,o.normalizeTextContent=Q,o.normalizeVideo=Se,o.parseColor=ut,o.parseGradient=jt,o.pick=N,o.property=Ae,o.property2=Ne,o.propertyOffsetFallback=k,o.propertyOffsetGet=st,o.propertyOffsetSet=at,o.round=A,o.setNestedValue=Dt,o.setObjectValueByPath=Nt,o.stringifyGradient=Ie,o.textContentToString=He,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(o,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):(o=typeof globalThis<"u"?globalThis:o||self,I(o.modernIdoc={}))})(this,(function(o){"use strict";function I(t){return typeof t=="string"?{src:t}:t}var Oe={grad:.9,turn:360,rad:360/(2*Math.PI)},D=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},v=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},P=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},Ct=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},wt=function(t){return{r:P(t.r,0,255),g:P(t.g,0,255),b:P(t.b,0,255),a:P(t.a)}},rt=function(t){return{r:v(t.r),g:v(t.g),b:v(t.b),a:v(t.a,3)}},ze=/^#([0-9a-f]{3,8})$/i,q=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Pt=function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=Math.max(e,r,n),s=a-Math.min(e,r,n),u=s?a===e?(r-n)/s:a===r?2+(n-e)/s:4+(e-r)/s:0;return{h:60*(u<0?u+6:u),s:a?s/a*100:0,v:a/255*100,a:i}},Ft=function(t){var e=t.h,r=t.s,n=t.v,i=t.a;e=e/360*6,r/=100,n/=100;var a=Math.floor(e),s=n*(1-r),u=n*(1-(e-a)*r),f=n*(1-(1-e+a)*r),g=a%6;return{r:255*[n,u,s,s,f,n][g],g:255*[f,n,n,u,s,s][g],b:255*[s,s,f,n,n,u][g],a:i}},Ot=function(t){return{h:Ct(t.h),s:P(t.s,0,100),l:P(t.l,0,100),a:P(t.a)}},zt=function(t){return{h:v(t.h),s:v(t.s),l:v(t.l),a:v(t.a,3)}},Et=function(t){return Ft((r=(e=t).s,{h:e.h,s:(r*=((n=e.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:e.a}));var e,r,n},V=function(t){return{h:(e=Pt(t)).h,s:(i=(200-(r=e.s))*(n=e.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,r,n,i},Ee=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Le=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,De=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ae=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Lt={string:[[function(t){var e=ze.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?v(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?v(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=De.exec(t)||Ae.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:wt({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Ee.exec(t)||Le.exec(t);if(!e)return null;var r,n,i=Ot({h:(r=e[1],n=e[2],n===void 0&&(n="deg"),Number(r)*(Oe[n]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Et(i)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=i===void 0?1:i;return D(e)&&D(r)&&D(n)?wt({r:Number(e),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,n=t.l,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=Ot({h:Number(e),s:Number(r),l:Number(n),a:Number(a)});return Et(s)},"hsl"],[function(t){var e=t.h,r=t.s,n=t.v,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=(function(u){return{h:Ct(u.h),s:P(u.s,0,100),v:P(u.v,0,100),a:P(u.a)}})({h:Number(e),s:Number(r),v:Number(n),a:Number(a)});return Ft(s)},"hsv"]]},Dt=function(t,e){for(var r=0;r<e.length;r++){var n=e[r][0](t);if(n)return[n,e[r][1]]}return[null,void 0]},Ne=function(t){return typeof t=="string"?Dt(t.trim(),Lt.string):typeof t=="object"&&t!==null?Dt(t,Lt.object):[null,void 0]},nt=function(t,e){var r=V(t);return{h:r.h,s:P(r.s+100*e,0,100),l:r.l,a:r.a}},it=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},At=function(t,e){var r=V(t);return{h:r.h,s:r.s,l:P(r.l+100*e,0,100),a:r.a}},Nt=(function(){function t(e){this.parsed=Ne(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return v(it(this.rgba),2)},t.prototype.isDark=function(){return it(this.rgba)<.5},t.prototype.isLight=function(){return it(this.rgba)>=.5},t.prototype.toHex=function(){return e=rt(this.rgba),r=e.r,n=e.g,i=e.b,s=(a=e.a)<1?q(v(255*a)):"","#"+q(r)+q(n)+q(i)+s;var e,r,n,i,a,s},t.prototype.toRgb=function(){return rt(this.rgba)},t.prototype.toRgbString=function(){return e=rt(this.rgba),r=e.r,n=e.g,i=e.b,(a=e.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var e,r,n,i,a},t.prototype.toHsl=function(){return zt(V(this.rgba))},t.prototype.toHslString=function(){return e=zt(V(this.rgba)),r=e.h,n=e.s,i=e.l,(a=e.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var e,r,n,i,a},t.prototype.toHsv=function(){return e=Pt(this.rgba),{h:v(e.h),s:v(e.s),v:v(e.v),a:v(e.a,3)};var e},t.prototype.invert=function(){return L({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),L(nt(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),L(nt(this.rgba,-e))},t.prototype.grayscale=function(){return L(nt(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),L(At(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),L(At(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?L({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):v(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=V(this.rgba);return typeof e=="number"?L({h:e,s:r.s,l:r.l,a:r.a}):v(r.h)},t.prototype.isEqual=function(e){return this.toHex()===L(e).toHex()},t})(),L=function(t){return t instanceof Nt?t:new Nt(t)};class Re{eventListeners=new Map;addEventListener(e,r,n){const i={value:r,options:n},a=this.eventListeners.get(e);return a?Array.isArray(a)?a.push(i):this.eventListeners.set(e,[a,i]):this.eventListeners.set(e,i),this}removeEventListener(e,r,n){if(!r)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let s=0,u=i.length;s<u;s++){const f=i[s];(f.value!==r||typeof n=="object"&&n?.once&&(typeof f.options=="boolean"||!f.options?.once))&&a.push(f)}a.length?this.eventListeners.set(e,a.length===1?a[0]:a):this.eventListeners.delete(e)}else i.value===r&&(typeof n=="boolean"||!n?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...r){const n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let i=n.length,a=0;a<i;a++){const s=n[a];typeof s.options=="object"&&s.options?.once&&this.off(e,s.value,s.options),s.value.apply(this,r)}else typeof n.options=="object"&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,r);return!0}else return!1}on(e,r,n){return this.addEventListener(e,r,n)}once(e,r){return this.addEventListener(e,r,{once:!0})}off(e,r,n){return this.removeEventListener(e,r,n)}emit(e,...r){this.dispatchEvent(e,...r)}}function h(t){return t==null||t===""||t==="none"}function N(t,e=0,r=10**e){return Math.round(r*t)/r+0}function F(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(n=>F(n,e)):t;const r={};for(const n in t){const i=t[n];i!=null&&(e?r[n]=F(i,e):r[n]=i)}return r}function A(t,e){const r={};return e.forEach(n=>{n in t&&(r[n]=t[n])}),r}function J(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const r=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!r.length||r.every(n=>t[n]===e[n])}return!1}function Rt(t,e,r){const n=e.length-1;if(n<0)return t===void 0?r:t;for(let i=0;i<n;i++){if(t==null)return r;t=t[e[i]]}return t==null||t[e[n]]===void 0?r:t[e[n]]}function jt(t,e,r){const n=e.length-1;for(let i=0;i<n;i++)typeof t[e[i]]!="object"&&(t[e[i]]={}),t=t[e[i]];t[e[n]]=r}function Gt(t,e,r){return t==null||!e||typeof e!="string"?r:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Rt(t,e.split("."),r))}function It(t,e,r){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),jt(t,e.split("."),r)}class Tt{_observers=new Map;on(e,r){let n=this._observers.get(e);return n===void 0&&this._observers.set(e,n=new Set),n.add(r),this}once(e,r){const n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n),this}off(e,r){const n=this._observers.get(e);return n!==void 0&&(n.delete(r),n.size===0&&this._observers.delete(e)),this}emit(e,...r){return Array.from((this._observers.get(e)||new Map).values()).forEach(n=>n(...r)),this}destroy(){this._observers=new Map}}class je{_map=new WeakMap;_toRaw(e){if(e&&typeof e=="object"){const r=e.__v_raw;r&&(e=this._toRaw(r))}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,r){return this._map.set(this._toRaw(e),this._toRaw(r)),this}}const ot=Symbol("properties"),X=Symbol("inited");function k(t){let e;if(Object.hasOwn(t,ot))e=t[ot];else{const r=Object.getPrototypeOf(t);e=new Map(r?k(r):void 0),t[ot]=e}return e}function at(t,e,r,n){const{alias:i,internalKey:a}=n,s=t[e];i?It(t,i,r):t[a]=r,t.onUpdateProperty?.(e,r??$(t,e,n),s)}function st(t,e,r){const{alias:n,internalKey:i}=r;let a;return n?a=Gt(t,n):a=t[i],a=a??$(t,e,r),a}function $(t,e,r){const{default:n,fallback:i}=r;let a;if(n!==void 0&&!t[X]?.[e]){t[X]||(t[X]={}),t[X][e]=!0;const s=typeof n=="function"?n():n;s!==void 0&&(t[e]=s,a=s)}return a===void 0&&i!==void 0&&(a=typeof i=="function"?i():i),a}function lt(t,e){function r(){return typeof this.getProperty<"u"?this.getProperty(t):st(this,t,e)}function n(i){typeof this.setProperty<"u"?this.setProperty(t,i):at(this,t,i,e)}return{get:r,set:n}}function Mt(t,e,r={}){const n={...r,internalKey:Symbol(e)};k(t).set(e,n);const i=lt(e,n);Object.defineProperty(t.prototype,e,{get(){return i.get.call(this)},set(a){i.set.call(this,a)},configurable:!0,enumerable:!0})}function Ge(t){return function(e,r){if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Mt(e.constructor,r,t)}}function Ie(t={}){return function(e,r){const n=r.name;if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i={...t,internalKey:Symbol(n)},a=lt(n,i);return{init(s){return k(this.constructor).set(n,i),a.set.call(this,s),s},get(){return a.get.call(this)},set(s){a.set.call(this,s)}}}}class Te extends Tt{_propertyAccessor;_properties=new Map;_updatedProperties=new Map;_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?this._updatedProperties.has(e):this._updatedProperties.size>0}getProperty(e){const r=this.getPropertyDeclaration(e);if(r){if(r.internal||r.alias)return st(this,e,r);{let n;return this._propertyAccessor?.getProperty?n=this._propertyAccessor.getProperty(e):n=this._properties.get(e),n??$(this,e,r)}}}setProperty(e,r){const n=this.getPropertyDeclaration(e);if(n)if(n.internal||n.alias)at(this,e,r,n);else{const i=this.getProperty(e);this._propertyAccessor?.setProperty?.(e,r),this._properties.set(e,r),this.onUpdateProperty?.(e,r??$(this,e,n),i)}}getProperties(e){const r={};for(const[n,i]of this.getPropertyDeclarations())!i.internal&&!i.alias&&(!e||e.includes(n))&&(r[n]=this.getProperty(n));return r}setProperties(e){if(e&&typeof e=="object")for(const r in e)this.setProperty(r,e[r]);return this}resetProperties(){for(const[e,r]of this.getPropertyDeclarations())this.setProperty(e,typeof r.default=="function"?r.default():r.default);return this}getPropertyDeclarations(){return k(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}setPropertyAccessor(e){const r=this.getPropertyDeclarations();this._propertyAccessor=void 0;const n={};return r.forEach((i,a)=>{n[a]=this.getProperty(a)}),this._propertyAccessor=e,r.forEach((i,a)=>{const s=this.getProperty(a),u=n[a];s!==void 0&&!Object.is(s,u)&&(this.setProperty(a,s),!i.internal&&!i.alias&&this.requestUpdate(a,s,u))}),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(),this._updating=!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties=new Map}onUpdateProperty(e,r,n){Object.is(r,n)||this.requestUpdate(e,r,n)}requestUpdate(e,r,n){e!==void 0&&(this._updatedProperties.set(e,n),this._changedProperties.add(e),this._updateProperty(e,r,n),this.emit("updateProperty",e,r,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,r,n){}toJSON(){const e={};return this._properties.forEach((r,n)=>{r!==void 0&&(r&&typeof r=="object"?"toJSON"in r&&typeof r.toJSON=="function"?e[n]=r.toJSON():Array.isArray(r)?e[n]=[...r]:e[n]={...r}:e[n]=r)}),e}clone(){return new this.constructor(this.toJSON())}destroy(){this.emit("destroy"),super.destroy()}}function ut(t){let e;return typeof t=="number"?e={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:e=t,L(e)}function Me(t){return{r:N(t.r),g:N(t.g),b:N(t.b),a:N(t.a,3)}}function Y(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const W="#000000FF";function Vt(t){return ut(t).isValid()}function y(t,e=!1){const r=ut(t);if(!r.isValid()){if(typeof t=="string")return t;const u=`Failed to normalizeColor ${t}`;if(e)throw new Error(u);return console.warn(u),W}const{r:n,g:i,b:a,a:s}=Me(r.rgba);return`#${Y(n)}${Y(i)}${Y(a)}${Y(N(s*255))}`}var x=x||{};x.parse=(function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let e="";function r(l){const c=new Error(`${e}: ${l}`);throw c.source=e,c}function n(){const l=i();return e.length>0&&r("Invalid input not EOF"),l}function i(){return M(a)}function a(){return s("linear-gradient",t.linearGradient,f)||s("repeating-linear-gradient",t.repeatingLinearGradient,f)||s("radial-gradient",t.radialGradient,p)||s("repeating-radial-gradient",t.repeatingRadialGradient,p)}function s(l,c,d){return u(c,S=>{const G=d();return G&&(m(t.comma)||r("Missing comma before color stops")),{type:l,orientation:G,colorStops:M(St)}})}function u(l,c){const d=m(l);if(d){m(t.startCall)||r("Missing (");const S=c(d);return m(t.endCall)||r("Missing )"),S}}function f(){const l=g();if(l)return l;const c=w("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:b()}function g(){return w("directional",t.sideOrCorner,1)}function b(){return w("angular",t.angleValue,1)||w("angular",t.radianValue,1)}function p(){let l,c=_(),d;return c&&(l=[],l.push(c),d=e,m(t.comma)&&(c=_(),c?l.push(c):e=d)),l}function _(){let l=C()||R();if(l)l.at=E();else{const c=O();if(c){l=c;const d=E();d&&(l.at=d)}else{const d=E();if(d)l={type:"default-radial",at:d};else{const S=j();S&&(l={type:"default-radial",at:S})}}}return l}function C(){const l=w("shape",/^(circle)/i,0);return l&&(l.style=Fe()||O()),l}function R(){const l=w("shape",/^(ellipse)/i,0);return l&&(l.style=j()||et()||O()),l}function O(){return w("extent-keyword",t.extentKeywords,1)}function E(){if(w("position",/^at/,0)){const l=j();return l||r("Missing positioning value"),l}}function j(){const l=U();if(l.x||l.y)return{type:"position",value:l}}function U(){return{x:et(),y:et()}}function M(l){let c=l();const d=[];if(c)for(d.push(c);m(t.comma);)c=l(),c?d.push(c):r("One extra comma");return d}function St(){const l=xe();return l||r("Expected color definition"),l.length=et(),l}function xe(){return Qe()||ir()||nr()||er()||tr()||rr()||Ze()}function Ze(){return w("literal",t.literalColor,0)}function Qe(){return w("hex",t.hexColor,1)}function tr(){return u(t.rgbColor,()=>({type:"rgb",value:M(K)}))}function er(){return u(t.rgbaColor,()=>({type:"rgba",value:M(K)}))}function rr(){return u(t.varColor,()=>({type:"var",value:or()}))}function nr(){return u(t.hslColor,()=>{m(t.percentageValue)&&r("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=K();m(t.comma);let d=m(t.percentageValue);const S=d?d[1]:null;m(t.comma),d=m(t.percentageValue);const G=d?d[1]:null;return(!S||!G)&&r("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,S,G]}})}function ir(){return u(t.hslaColor,()=>{const l=K();m(t.comma);let c=m(t.percentageValue);const d=c?c[1]:null;m(t.comma),c=m(t.percentageValue);const S=c?c[1]:null;m(t.comma);const G=K();return(!d||!S)&&r("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[l,d,S,G]}})}function or(){return m(t.variableName)[1]}function K(){return m(t.number)[1]}function et(){return w("%",t.percentageValue,1)||ar()||sr()||Fe()}function ar(){return w("position-keyword",t.positionKeywords,1)}function sr(){return u(t.calcValue,()=>{let l=1,c=0;for(;l>0&&c<e.length;){const S=e.charAt(c);S==="("?l++:S===")"&&l--,c++}l>0&&r("Missing closing parenthesis in calc() expression");const d=e.substring(0,c-1);return _t(c-1),{type:"calc",value:d}})}function Fe(){return w("px",t.pixelValue,1)||w("em",t.emValue,1)}function w(l,c,d){const S=m(c);if(S)return{type:l,value:S[d]}}function m(l){let c,d;return d=/^\s+/.exec(e),d&&_t(d[0].length),c=l.exec(e),c&&_t(c[0].length),c}function _t(l){e=e.substr(l)}return function(l){return e=l.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),n()}})();const kt=x.parse.bind(x);var Z=Z||{};Z.stringify=(function(){var t={"visit_linear-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-linear-gradient":function(e){return t.visit_gradient(e)},"visit_radial-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-radial-gradient":function(e){return t.visit_gradient(e)},visit_gradient:function(e){var r=t.visit(e.orientation);return r&&(r+=", "),e.type+"("+r+t.visit(e.colorStops)+")"},visit_shape:function(e){var r=e.value,n=t.visit(e.at),i=t.visit(e.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(e){var r="",n=t.visit(e.at);return n&&(r+=n),r},"visit_extent-keyword":function(e){var r=e.value,n=t.visit(e.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return t.visit(e.value.x)+" "+t.visit(e.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(e){return t.visit_color(e.value,e)},visit_hex:function(e){return t.visit_color("#"+e.value,e)},visit_rgb:function(e){return t.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return t.visit_color("rgba("+e.value.join(", ")+")",e)},visit_hsl:function(e){return t.visit_color("hsl("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%)",e)},visit_hsla:function(e){return t.visit_color("hsla("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%, "+e.value[3]+")",e)},visit_var:function(e){return t.visit_color("var("+e.value+")",e)},visit_color:function(e,r){var n=e,i=t.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var r="",n=e.length;return e.forEach(function(i,a){r+=t.visit(i),a<n-1&&(r+=", ")}),r},visit_object:function(e){return e.width&&e.height?t.visit(e.width)+" "+t.visit(e.height):""},visit:function(e){if(!e)return"";if(e instanceof Array)return t.visit_array(e);if(typeof e=="object"&&!e.type)return t.visit_object(e);if(e.type){var r=t["visit_"+e.type];if(r)return r(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}})();const Ve=Z.stringify.bind(Z);function $t(t){const e=t.length-1;return t.map((r,n)=>{const i=r.value;let a=N(n/e,3),s="#00000000";switch(r.type){case"rgb":s=y({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":s=y({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":s=y(r.value);break;case"hex":s=y(`#${r.value}`);break}return r.length?.type==="%"&&(a=Number(r.length.value)/100),{offset:a,color:s}})}function Wt(t){let e=0;return t.orientation?.type==="angular"&&(e=Number(t.orientation.value)),{type:"linear-gradient",angle:e,stops:$t(t.colorStops)}}function Ht(t){return t.orientation?.map(e=>{switch(e?.type){default:return null}}),{type:"radial-gradient",stops:$t(t.colorStops)}}function H(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Bt(t){return kt(t).map(e=>{switch(e?.type){case"linear-gradient":return Wt(e);case"repeating-linear-gradient":return{...Wt(e),repeat:!0};case"radial-gradient":return Ht(e);case"repeating-radial-gradient":return{...Ht(e),repeat:!0};default:return}}).filter(Boolean)}const ct=["color"];function Ut(t){let e;return typeof t=="string"?e={color:t}:e={...t},e.color&&(e.color=y(e.color)),A(e,ct)}const ft=["linearGradient","radialGradient","rotateWithShape"];function Kt(t){let e;if(typeof t=="string"?e={image:t}:e={...t},e.image){const{type:r,...n}=Bt(e.image)[0]??{};switch(r){case"radial-gradient":return{radialGradient:n};case"linear-gradient":return{linearGradient:n}}}return A(e,ft)}const dt=["image","cropRect","stretchRect","tile","dpi","opacity","rotateWithShape"];function qt(t){let e;return typeof t=="string"?e={image:t}:e={...t},A(e,dt)}const ht=["preset","foregroundColor","backgroundColor"];function Jt(t){let e;return typeof t=="string"?e={preset:t}:e={...t},h(e.foregroundColor)?delete e.foregroundColor:e.foregroundColor=y(e.foregroundColor),h(e.backgroundColor)?delete e.backgroundColor:e.backgroundColor=y(e.backgroundColor),A(e,ht)}function Xt(t){return!h(t.color)}function Yt(t){return typeof t=="string"?Vt(t):Xt(t)}function xt(t){return!h(t.image)&&H(t.image)||!!t.linearGradient||!!t.radialGradient}function Zt(t){return typeof t=="string"?H(t):xt(t)}function Qt(t){return!h(t.image)&&!H(t.image)}function te(t){return typeof t=="string"?!H(t):Qt(t)}function ee(t){return!h(t.preset)}function re(t){return typeof t=="string"?!1:ee(t)}function z(t){const r={enabled:t&&typeof t=="object"?t.enabled:void 0};return Yt(t)&&Object.assign(r,Ut(t)),Zt(t)&&Object.assign(r,Kt(t)),te(t)&&Object.assign(r,qt(t)),re(t)&&Object.assign(r,Jt(t)),A(F(r),Array.from(new Set([...ct,...dt,...ft,...ht])))}function ne(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["fillWithShape"])}}function gt(){return{color:W,offsetX:0,offsetY:0,blurRadius:1}}function pt(t){return{...gt(),...F({...t,color:h(t.color)?W:y(t.color)})}}function ie(){return{...gt(),scaleX:1,scaleY:1}}function oe(t){return{...ie(),...pt(t)}}function ke(t){return t}function ae(t){return F({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:oe(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:pt(t.innerShadow)})}function se(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["fillWithShape"])}}const $e="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let We=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=$e[r[t]&63];return e};const le=()=>We(10),ue=le;function B(t){return typeof t=="string"?{...z(t)}:{...z(t),...A(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function ce(t){return typeof t=="string"?{color:y(t)}:{...t,color:h(t.color)?W:y(t.color)}}function fe(){return{boxShadow:"none"}}function de(t){return typeof t=="string"?t.startsWith("<svg")?{svg:t}:{paths:[{data:t}]}:Array.isArray(t)?{paths:t.map(e=>typeof e=="string"?{data:e}:e)}:t}function he(){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 ge(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function pe(){return{...he(),...ge(),...fe(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"none",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function me(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function ve(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ye(){return{...me(),color:"#000000",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function be(){return{...ve(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function Se(){return{...be(),...ye(),textStrokeWidth:0,textStrokeColor:"none"}}function T(t){return F({...t,color:h(t.color)?void 0:y(t.color),backgroundColor:h(t.backgroundColor)?void 0:y(t.backgroundColor),borderColor:h(t.borderColor)?void 0:y(t.borderColor),outlineColor:h(t.outlineColor)?void 0:y(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:y(t.shadowColor),textStrokeColor:h(t.textStrokeColor)?void 0:y(t.textStrokeColor)})}function He(){return{...pe(),...Se()}}const mt=/\r\n|\n\r|\n|\r/,Be=new RegExp(`${mt.source}|<br\\/>`,"g"),Ue=new RegExp(`^(${mt.source})$`),vt=`
2
+ `;function Ke(t){return mt.test(t)}function yt(t){return Ue.test(t)}function _e(t){return t.replace(Be,vt)}function Q(t){const e=[];function r(){return e[e.length-1]}function n(u,f,g){const b=u?T(u):{},p=f?z(f):void 0,_=g?B(g):void 0,C=F({...b,fill:p,outline:_,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=C:e.push(C),C}function i(u="",f,g,b){const p=f?T(f):{},_=g?z(g):void 0,C=b?B(b):void 0;Array.from(u).forEach(R=>{if(yt(R)){const{fragments:O,fill:E,outline:j,...U}=r()||n();O.length||O.push(F({...p,fill:_,outline:C,content:vt})),n(U,E,j)}else{const O=r()||n(),E=O.fragments[O.fragments.length-1];if(E){const{content:j,fill:U,outline:M,...St}=E;if(J(_,U)&&J(C,M)&&J(p,St)){E.content=`${j}${R}`;return}}O.fragments.push(F({...p,fill:_,outline:C,content:R}))}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")n(),i(u);else if(bt(u)){const{content:f,fill:g,outline:b,...p}=u;n(p,g,b),i(f)}else if(Ce(u)){const{fragments:f,fill:g,outline:b,...p}=u;n(p,g,b),f.forEach(_=>{const{content:C,fill:R,outline:O,...E}=_;i(C,E,R,O)})}else Array.isArray(u)?(n(),u.forEach(f=>{if(typeof f=="string")i(f);else if(bt(f)){const{content:g,fill:b,outline:p,..._}=f;i(g,_,b,p)}})):console.warn("Failed to parse text content",u)});const s=r();return s&&!s.fragments.length&&s.fragments.push({content:""}),e}function Ce(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function bt(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function we(t){return typeof t=="string"||Array.isArray(t)?{content:Q(t)}:F({...t,content:Q(t.content??""),style:t.style?T(t.style):void 0,effects:t.effects?t.effects.map(e=>T(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?z(t.fill):void 0,outline:t.outline?B(t.outline):void 0})}function qe(t){return Q(t).map(e=>{const r=_e(e.fragments.flatMap(n=>n.content).join(""));return yt(r)?"":r}).join(vt)}function Pe(t){return typeof t=="string"?{src:t}:t}function tt(t){return F({...t,id:t.id??ue(),style:h(t.style)?void 0:T(t.style),text:h(t.text)?void 0:we(t.text),background:h(t.background)?void 0:ne(t.background),shape:h(t.shape)?void 0:de(t.shape),fill:h(t.fill)?void 0:z(t.fill),outline:h(t.outline)?void 0:B(t.outline),foreground:h(t.foreground)?void 0:se(t.foreground),shadow:h(t.shadow)?void 0:ce(t.shadow),video:h(t.video)?void 0:Pe(t.video),audio:h(t.audio)?void 0:I(t.audio),effect:h(t.effect)?void 0:ae(t.effect),children:t.children?.map(e=>tt(e))})}function Je(t){return tt(t)}function Xe(t){const e={};for(const r in t.children){const n=tt(t.children[r]);delete n.children,e[r]=n}return{...t,children:e}}function Ye(t){const{children:e,...r}=t;function n(f){const{parentId:g,childrenIds:b,...p}=f;return{...p,children:[]}}const i={},a=[],s={...r,children:a};function u(f){if(!e[f]||i[f])return;const g=e[f],b=n(g);i[f]=b;const p=g.parentId;if(p){u(p);const _=e[p],C=i[p];if(!C)return;_?.childrenIds&&C?.children&&(C.children[_.childrenIds.indexOf(f)]=b)}else a.push(b)}for(const f in e)u(f);return s}o.EventEmitter=Re,o.Observable=Tt,o.RawWeakMap=je,o.Reactivable=Te,o.clearUndef=F,o.colorFillFields=ct,o.defaultColor=W,o.defineProperty=Mt,o.flatDocumentToDocument=Ye,o.getDeclarations=k,o.getDefaultElementStyle=pe,o.getDefaultHighlightStyle=me,o.getDefaultInnerShadow=gt,o.getDefaultLayoutStyle=he,o.getDefaultListStyleStyle=ve,o.getDefaultOuterShadow=ie,o.getDefaultShadowStyle=fe,o.getDefaultStyle=He,o.getDefaultTextInlineStyle=ye,o.getDefaultTextLineStyle=be,o.getDefaultTextStyle=Se,o.getDefaultTransformStyle=ge,o.getNestedValue=Rt,o.getObjectValueByPath=Gt,o.getPropertyDescriptor=lt,o.gradientFillFields=ft,o.hasCRLF=Ke,o.idGenerator=ue,o.imageFillFiedls=dt,o.isCRLF=yt,o.isColor=Vt,o.isColorFill=Yt,o.isColorFillObject=Xt,o.isEqualObject=J,o.isFragmentObject=bt,o.isGradient=H,o.isGradientFill=Zt,o.isGradientFillObject=xt,o.isImageFill=te,o.isImageFillObject=Qt,o.isNone=h,o.isParagraphObject=Ce,o.isPresetFill=re,o.isPresetFillObject=ee,o.nanoid=le,o.normalizeAudio=I,o.normalizeBackground=ne,o.normalizeCRLF=_e,o.normalizeColor=y,o.normalizeColorFill=Ut,o.normalizeDocument=Je,o.normalizeEffect=ae,o.normalizeElement=tt,o.normalizeFill=z,o.normalizeFlatDocument=Xe,o.normalizeForeground=se,o.normalizeGradient=Bt,o.normalizeGradientFill=Kt,o.normalizeImageFill=qt,o.normalizeInnerShadow=pt,o.normalizeOuterShadow=oe,o.normalizeOutline=B,o.normalizePresetFill=Jt,o.normalizeShadow=ce,o.normalizeShape=de,o.normalizeSoftEdge=ke,o.normalizeStyle=T,o.normalizeText=we,o.normalizeTextContent=Q,o.normalizeVideo=Pe,o.parseColor=ut,o.parseGradient=kt,o.pick=A,o.presetFillFiedls=ht,o.property=Ge,o.property2=Ie,o.propertyOffsetFallback=$,o.propertyOffsetGet=st,o.propertyOffsetSet=at,o.round=N,o.setNestedValue=jt,o.setObjectValueByPath=It,o.stringifyGradient=Ve,o.textContentToString=qe,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
package/dist/index.mjs CHANGED
@@ -1211,6 +1211,9 @@ function normalizeGradient(cssText) {
1211
1211
  }).filter(Boolean);
1212
1212
  }
1213
1213
 
1214
+ const colorFillFields = [
1215
+ "color"
1216
+ ];
1214
1217
  function normalizeColorFill(fill) {
1215
1218
  let obj;
1216
1219
  if (typeof fill === "string") {
@@ -1218,11 +1221,17 @@ function normalizeColorFill(fill) {
1218
1221
  } else {
1219
1222
  obj = { ...fill };
1220
1223
  }
1221
- return {
1222
- color: normalizeColor(obj.color)
1223
- };
1224
+ if (obj.color) {
1225
+ obj.color = normalizeColor(obj.color);
1226
+ }
1227
+ return pick(obj, colorFillFields);
1224
1228
  }
1225
1229
 
1230
+ const gradientFillFields = [
1231
+ "linearGradient",
1232
+ "radialGradient",
1233
+ "rotateWithShape"
1234
+ ];
1226
1235
  function normalizeGradientFill(fill) {
1227
1236
  let obj;
1228
1237
  if (typeof fill === "string") {
@@ -1243,13 +1252,18 @@ function normalizeGradientFill(fill) {
1243
1252
  };
1244
1253
  }
1245
1254
  }
1246
- return pick(obj, [
1247
- "linearGradient",
1248
- "radialGradient",
1249
- "rotateWithShape"
1250
- ]);
1255
+ return pick(obj, gradientFillFields);
1251
1256
  }
1252
1257
 
1258
+ const imageFillFiedls = [
1259
+ "image",
1260
+ "cropRect",
1261
+ "stretchRect",
1262
+ "tile",
1263
+ "dpi",
1264
+ "opacity",
1265
+ "rotateWithShape"
1266
+ ];
1253
1267
  function normalizeImageFill(fill) {
1254
1268
  let obj;
1255
1269
  if (typeof fill === "string") {
@@ -1257,17 +1271,14 @@ function normalizeImageFill(fill) {
1257
1271
  } else {
1258
1272
  obj = { ...fill };
1259
1273
  }
1260
- return pick(obj, [
1261
- "image",
1262
- "cropRect",
1263
- "stretchRect",
1264
- "tile",
1265
- "dpi",
1266
- "opacity",
1267
- "rotateWithShape"
1268
- ]);
1274
+ return pick(obj, imageFillFiedls);
1269
1275
  }
1270
1276
 
1277
+ const presetFillFiedls = [
1278
+ "preset",
1279
+ "foregroundColor",
1280
+ "backgroundColor"
1281
+ ];
1271
1282
  function normalizePresetFill(fill) {
1272
1283
  let obj;
1273
1284
  if (typeof fill === "string") {
@@ -1285,11 +1296,7 @@ function normalizePresetFill(fill) {
1285
1296
  } else {
1286
1297
  obj.backgroundColor = normalizeColor(obj.backgroundColor);
1287
1298
  }
1288
- return pick(obj, [
1289
- "preset",
1290
- "foregroundColor",
1291
- "backgroundColor"
1292
- ]);
1299
+ return pick(obj, presetFillFiedls);
1293
1300
  }
1294
1301
 
1295
1302
  function isColorFillObject(fill) {
@@ -1318,16 +1325,25 @@ function isPresetFill(fill) {
1318
1325
  }
1319
1326
  function normalizeFill(fill) {
1320
1327
  const enabled = fill && typeof fill === "object" ? fill.enabled : void 0;
1328
+ const obj = { enabled };
1321
1329
  if (isColorFill(fill)) {
1322
- return clearUndef({ enabled, ...normalizeColorFill(fill) });
1323
- } else if (isGradientFill(fill)) {
1324
- return clearUndef({ enabled, ...normalizeGradientFill(fill) });
1325
- } else if (isImageFill(fill)) {
1326
- return clearUndef({ enabled, ...normalizeImageFill(fill) });
1327
- } else if (isPresetFill(fill)) {
1328
- return clearUndef({ enabled, ...normalizePresetFill(fill) });
1330
+ Object.assign(obj, normalizeColorFill(fill));
1331
+ }
1332
+ if (isGradientFill(fill)) {
1333
+ Object.assign(obj, normalizeGradientFill(fill));
1334
+ }
1335
+ if (isImageFill(fill)) {
1336
+ Object.assign(obj, normalizeImageFill(fill));
1337
+ }
1338
+ if (isPresetFill(fill)) {
1339
+ Object.assign(obj, normalizePresetFill(fill));
1329
1340
  }
1330
- return {};
1341
+ return pick(clearUndef(obj), Array.from(/* @__PURE__ */ new Set([
1342
+ ...colorFillFields,
1343
+ ...imageFillFiedls,
1344
+ ...gradientFillFields,
1345
+ ...presetFillFiedls
1346
+ ])));
1331
1347
  }
1332
1348
 
1333
1349
  function normalizeBackground(background) {
@@ -1557,7 +1573,7 @@ function getDefaultElementStyle() {
1557
1573
  // outline
1558
1574
  outlineWidth: 0,
1559
1575
  outlineOffset: 0,
1560
- outlineColor: "rgb(0, 0, 0)",
1576
+ outlineColor: "none",
1561
1577
  outlineStyle: "none",
1562
1578
  // other
1563
1579
  visibility: "visible",
@@ -1594,7 +1610,7 @@ function getDefaultListStyleStyle() {
1594
1610
  function getDefaultTextInlineStyle() {
1595
1611
  return {
1596
1612
  ...getDefaultHighlightStyle(),
1597
- color: "rgb(0, 0, 0)",
1613
+ color: "#000000",
1598
1614
  verticalAlign: "baseline",
1599
1615
  letterSpacing: 0,
1600
1616
  wordSpacing: 0,
@@ -1628,7 +1644,7 @@ function getDefaultTextStyle() {
1628
1644
  ...getDefaultTextInlineStyle(),
1629
1645
  // textStroke
1630
1646
  textStrokeWidth: 0,
1631
- textStrokeColor: "rgb(0, 0, 0)"
1647
+ textStrokeColor: "none"
1632
1648
  };
1633
1649
  }
1634
1650
 
@@ -1639,7 +1655,8 @@ function normalizeStyle(style) {
1639
1655
  backgroundColor: isNone(style.backgroundColor) ? void 0 : normalizeColor(style.backgroundColor),
1640
1656
  borderColor: isNone(style.borderColor) ? void 0 : normalizeColor(style.borderColor),
1641
1657
  outlineColor: isNone(style.outlineColor) ? void 0 : normalizeColor(style.outlineColor),
1642
- shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor)
1658
+ shadowColor: isNone(style.shadowColor) ? void 0 : normalizeColor(style.shadowColor),
1659
+ textStrokeColor: isNone(style.textStrokeColor) ? void 0 : normalizeColor(style.textStrokeColor)
1643
1660
  });
1644
1661
  }
1645
1662
  function getDefaultStyle() {
@@ -1876,4 +1893,4 @@ function flatDocumentToDocument(flatDoc) {
1876
1893
  return doc;
1877
1894
  }
1878
1895
 
1879
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
1896
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, colorFillFields, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, 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, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, presetFillFiedls, property, property2, propertyOffsetFallback, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-idoc",
3
3
  "type": "module",
4
- "version": "0.10.7",
4
+ "version": "0.10.9",
5
5
  "packageManager": "pnpm@10.18.1",
6
6
  "description": "Intermediate document for modern codec libs",
7
7
  "author": "wxm",
@@ -59,17 +59,17 @@
59
59
  "nanoid": "^5.1.6"
60
60
  },
61
61
  "devDependencies": {
62
- "@antfu/eslint-config": "^6.0.0",
63
- "@types/node": "^24.9.1",
64
- "bumpp": "^10.3.1",
62
+ "@antfu/eslint-config": "^6.7.3",
63
+ "@types/node": "^25.0.3",
64
+ "bumpp": "^10.3.2",
65
65
  "conventional-changelog-cli": "^5.0.0",
66
- "eslint": "^9.38.0",
67
- "lint-staged": "^16.2.6",
66
+ "eslint": "^9.39.2",
67
+ "lint-staged": "^16.2.7",
68
68
  "simple-git-hooks": "^2.13.1",
69
69
  "typescript": "^5.9.3",
70
70
  "unbuild": "^3.6.1",
71
- "vite": "^7.1.12",
72
- "vitest": "^4.0.2"
71
+ "vite": "^7.3.0",
72
+ "vitest": "^4.0.16"
73
73
  },
74
74
  "simple-git-hooks": {
75
75
  "pre-commit": "pnpm lint-staged"