modern-idoc 0.6.14 → 0.6.16

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
@@ -51,6 +51,87 @@ function pick(obj, keys) {
51
51
  return result;
52
52
  }
53
53
 
54
+ function getNestedValue(obj, path, fallback) {
55
+ const last = path.length - 1;
56
+ if (last < 0)
57
+ return obj === void 0 ? fallback : obj;
58
+ for (let i = 0; i < last; i++) {
59
+ if (obj == null) {
60
+ return fallback;
61
+ }
62
+ obj = obj[path[i]];
63
+ }
64
+ if (obj == null)
65
+ return fallback;
66
+ return obj[path[last]] === void 0 ? fallback : obj[path[last]];
67
+ }
68
+ function setNestedValue(obj, path, value) {
69
+ const last = path.length - 1;
70
+ for (let i = 0; i < last; i++) {
71
+ if (typeof obj[path[i]] !== "object")
72
+ obj[path[i]] = {};
73
+ obj = obj[path[i]];
74
+ }
75
+ obj[path[last]] = value;
76
+ }
77
+ function getObjectValueByPath(obj, path, fallback) {
78
+ if (obj == null || !path || typeof path !== "string")
79
+ return fallback;
80
+ if (obj[path] !== void 0)
81
+ return obj[path];
82
+ path = path.replace(/\[(\w+)\]/g, ".$1");
83
+ path = path.replace(/^\./, "");
84
+ return getNestedValue(obj, path.split("."), fallback);
85
+ }
86
+ function setObjectValueByPath(obj, path, value) {
87
+ if (typeof obj !== "object" || !path)
88
+ return;
89
+ path = path.replace(/\[(\w+)\]/g, ".$1");
90
+ path = path.replace(/^\./, "");
91
+ return setNestedValue(obj, path.split("."), value);
92
+ }
93
+
94
+ class RawWeakMap {
95
+ _map = /* @__PURE__ */ new WeakMap();
96
+ // fix: vue reactive object
97
+ _toRaw(value) {
98
+ if (value && typeof value === "object") {
99
+ const raw = value.__v_raw;
100
+ if (raw) {
101
+ value = this._toRaw(raw);
102
+ }
103
+ }
104
+ return value;
105
+ }
106
+ /**
107
+ * Removes the specified element from the WeakMap.
108
+ * @returns true if the element was successfully removed, or false if it was not present.
109
+ */
110
+ delete(key) {
111
+ return this._map.delete(this._toRaw(key));
112
+ }
113
+ /**
114
+ * @returns a specified element.
115
+ */
116
+ get(key) {
117
+ return this._map.get(this._toRaw(key));
118
+ }
119
+ /**
120
+ * @returns a boolean indicating whether an element with the specified key exists or not.
121
+ */
122
+ has(key) {
123
+ return this._map.has(this._toRaw(key));
124
+ }
125
+ /**
126
+ * Adds a new element with a specified key and value.
127
+ * @param key Must be an object or symbol.
128
+ */
129
+ set(key, value) {
130
+ this._map.set(this._toRaw(key), this._toRaw(value));
131
+ return this;
132
+ }
133
+ }
134
+
54
135
  function parseColor(color) {
55
136
  let input;
56
137
  if (typeof color === "number") {
@@ -809,47 +890,6 @@ function normalizeBackground(background) {
809
890
  }
810
891
  }
811
892
 
812
- class RawWeakMap {
813
- _map = /* @__PURE__ */ new WeakMap();
814
- // fix: vue reactive object
815
- _toRaw(value) {
816
- if (value && typeof value === "object") {
817
- const raw = value.__v_raw;
818
- if (raw) {
819
- value = this._toRaw(raw);
820
- }
821
- }
822
- return value;
823
- }
824
- /**
825
- * Removes the specified element from the WeakMap.
826
- * @returns true if the element was successfully removed, or false if it was not present.
827
- */
828
- delete(key) {
829
- return this._map.delete(this._toRaw(key));
830
- }
831
- /**
832
- * @returns a specified element.
833
- */
834
- get(key) {
835
- return this._map.get(this._toRaw(key));
836
- }
837
- /**
838
- * @returns a boolean indicating whether an element with the specified key exists or not.
839
- */
840
- has(key) {
841
- return this._map.has(this._toRaw(key));
842
- }
843
- /**
844
- * Adds a new element with a specified key and value.
845
- * @param key Must be an object or symbol.
846
- */
847
- set(key, value) {
848
- this._map.set(this._toRaw(key), this._toRaw(value));
849
- return this;
850
- }
851
- }
852
-
853
893
  const declarationMap = new RawWeakMap();
854
894
  function getDeclarations(constructor) {
855
895
  let declarations = declarationMap.get(constructor);
@@ -869,10 +909,18 @@ function defineProperty(constructor, key, declaration = {}) {
869
909
  const getDefaultValue = () => typeof defaultValue === "function" ? defaultValue() : defaultValue;
870
910
  const descriptor = Object.getOwnPropertyDescriptor(constructor.prototype, key) || {
871
911
  get() {
872
- return this[alias];
912
+ if (typeof alias === "string") {
913
+ return getObjectValueByPath(this, alias);
914
+ } else {
915
+ return this[alias];
916
+ }
873
917
  },
874
918
  set(v) {
875
- this[alias] = v;
919
+ if (typeof alias === "string") {
920
+ setObjectValueByPath(this, alias, v);
921
+ } else {
922
+ this[alias] = v;
923
+ }
876
924
  }
877
925
  };
878
926
  Object.defineProperty(constructor.prototype, key, {
@@ -1217,8 +1265,8 @@ function isEqualStyle(style1, style2) {
1217
1265
  }
1218
1266
  function normalizeTextContent(value) {
1219
1267
  const paragraphs = [];
1220
- function getParagraph() {
1221
- return paragraphs[paragraphs.length - 1] || addParagraph();
1268
+ function lastParagraph() {
1269
+ return paragraphs[paragraphs.length - 1];
1222
1270
  }
1223
1271
  function addParagraph(style = {}) {
1224
1272
  let paragraph = paragraphs[paragraphs.length - 1];
@@ -1234,7 +1282,7 @@ function normalizeTextContent(value) {
1234
1282
  function addFragment(content = "", style = {}) {
1235
1283
  Array.from(content).forEach((c) => {
1236
1284
  if (isCRLF(c)) {
1237
- const { fragments, ...pStyle } = getParagraph();
1285
+ const { fragments, ...pStyle } = lastParagraph() || addParagraph();
1238
1286
  if (!fragments.length) {
1239
1287
  fragments.push({
1240
1288
  ...style,
@@ -1243,7 +1291,7 @@ function normalizeTextContent(value) {
1243
1291
  }
1244
1292
  addParagraph(pStyle);
1245
1293
  } else {
1246
- const paragraph = getParagraph();
1294
+ const paragraph = lastParagraph() || addParagraph();
1247
1295
  const fragment = paragraph.fragments[paragraph.fragments.length - 1];
1248
1296
  if (fragment) {
1249
1297
  const { content: content2, ...fStyle } = fragment;
@@ -1289,8 +1337,11 @@ function normalizeTextContent(value) {
1289
1337
  console.warn("Failed to parse text content", p);
1290
1338
  }
1291
1339
  });
1292
- if (!getParagraph().fragments.length) {
1293
- addFragment(NORMALIZED_CRLF);
1340
+ const lastP = lastParagraph();
1341
+ if (lastP && !lastP.fragments.length) {
1342
+ lastP.fragments.push({
1343
+ content: NORMALIZED_CRLF
1344
+ });
1294
1345
  }
1295
1346
  return paragraphs;
1296
1347
  }
@@ -1369,6 +1420,8 @@ exports.getDefaultTextInlineStyle = getDefaultTextInlineStyle;
1369
1420
  exports.getDefaultTextLineStyle = getDefaultTextLineStyle;
1370
1421
  exports.getDefaultTextStyle = getDefaultTextStyle;
1371
1422
  exports.getDefaultTransformStyle = getDefaultTransformStyle;
1423
+ exports.getNestedValue = getNestedValue;
1424
+ exports.getObjectValueByPath = getObjectValueByPath;
1372
1425
  exports.hasCRLF = hasCRLF;
1373
1426
  exports.isCRLF = isCRLF;
1374
1427
  exports.isColor = isColor;
@@ -1412,5 +1465,7 @@ exports.parseGradient = parseGradient;
1412
1465
  exports.pick = pick;
1413
1466
  exports.property = property;
1414
1467
  exports.round = round;
1468
+ exports.setNestedValue = setNestedValue;
1469
+ exports.setObjectValueByPath = setObjectValueByPath;
1415
1470
  exports.stringifyGradient = stringifyGradient;
1416
1471
  exports.textContentToString = textContentToString;
package/dist/index.d.cts CHANGED
@@ -321,35 +321,12 @@ interface Definable {
321
321
  interface PropertyDeclaration {
322
322
  readonly [key: string]: any;
323
323
  readonly default?: any | (() => any);
324
- readonly alias?: string;
324
+ readonly alias?: string | symbol;
325
325
  }
326
326
  declare function getDeclarations(constructor: any): Map<PropertyKey, PropertyDeclaration>;
327
327
  declare function defineProperty(constructor: any, key: PropertyKey, declaration?: PropertyDeclaration): void;
328
328
  declare function property(options?: PropertyDeclaration): PropertyDecorator;
329
329
 
330
- declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
331
- protected _map: WeakMap<K, V>;
332
- protected _toRaw(value: any): any;
333
- /**
334
- * Removes the specified element from the WeakMap.
335
- * @returns true if the element was successfully removed, or false if it was not present.
336
- */
337
- delete(key: K): boolean;
338
- /**
339
- * @returns a specified element.
340
- */
341
- get(key: K): V | undefined;
342
- /**
343
- * @returns a boolean indicating whether an element with the specified key exists or not.
344
- */
345
- has(key: K): boolean;
346
- /**
347
- * Adds a new element with a specified key and value.
348
- * @param key Must be an object or symbol.
349
- */
350
- set(key: K, value: V): this;
351
- }
352
-
353
330
  interface NormalizedInnerShadow {
354
331
  color: NormalizedColor;
355
332
  offsetX: number;
@@ -770,5 +747,33 @@ declare function round(number: number, digits?: number, base?: number): number;
770
747
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
771
748
  declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
772
749
 
773
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, stringifyGradient, textContentToString };
750
+ declare function getNestedValue(obj: any, path: (string | number)[], fallback?: any): any;
751
+ declare function setNestedValue(obj: any, path: (string | number)[], value: any): void;
752
+ declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
753
+ declare function setObjectValueByPath(obj: any, path: string, value: any): void;
754
+
755
+ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
756
+ protected _map: WeakMap<K, V>;
757
+ protected _toRaw(value: any): any;
758
+ /**
759
+ * Removes the specified element from the WeakMap.
760
+ * @returns true if the element was successfully removed, or false if it was not present.
761
+ */
762
+ delete(key: K): boolean;
763
+ /**
764
+ * @returns a specified element.
765
+ */
766
+ get(key: K): V | undefined;
767
+ /**
768
+ * @returns a boolean indicating whether an element with the specified key exists or not.
769
+ */
770
+ has(key: K): boolean;
771
+ /**
772
+ * Adds a new element with a specified key and value.
773
+ * @param key Must be an object or symbol.
774
+ */
775
+ set(key: K, value: V): this;
776
+ }
777
+
778
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
774
779
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Definable, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.mts CHANGED
@@ -321,35 +321,12 @@ interface Definable {
321
321
  interface PropertyDeclaration {
322
322
  readonly [key: string]: any;
323
323
  readonly default?: any | (() => any);
324
- readonly alias?: string;
324
+ readonly alias?: string | symbol;
325
325
  }
326
326
  declare function getDeclarations(constructor: any): Map<PropertyKey, PropertyDeclaration>;
327
327
  declare function defineProperty(constructor: any, key: PropertyKey, declaration?: PropertyDeclaration): void;
328
328
  declare function property(options?: PropertyDeclaration): PropertyDecorator;
329
329
 
330
- declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
331
- protected _map: WeakMap<K, V>;
332
- protected _toRaw(value: any): any;
333
- /**
334
- * Removes the specified element from the WeakMap.
335
- * @returns true if the element was successfully removed, or false if it was not present.
336
- */
337
- delete(key: K): boolean;
338
- /**
339
- * @returns a specified element.
340
- */
341
- get(key: K): V | undefined;
342
- /**
343
- * @returns a boolean indicating whether an element with the specified key exists or not.
344
- */
345
- has(key: K): boolean;
346
- /**
347
- * Adds a new element with a specified key and value.
348
- * @param key Must be an object or symbol.
349
- */
350
- set(key: K, value: V): this;
351
- }
352
-
353
330
  interface NormalizedInnerShadow {
354
331
  color: NormalizedColor;
355
332
  offsetX: number;
@@ -770,5 +747,33 @@ declare function round(number: number, digits?: number, base?: number): number;
770
747
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
771
748
  declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
772
749
 
773
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, stringifyGradient, textContentToString };
750
+ declare function getNestedValue(obj: any, path: (string | number)[], fallback?: any): any;
751
+ declare function setNestedValue(obj: any, path: (string | number)[], value: any): void;
752
+ declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
753
+ declare function setObjectValueByPath(obj: any, path: string, value: any): void;
754
+
755
+ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
756
+ protected _map: WeakMap<K, V>;
757
+ protected _toRaw(value: any): any;
758
+ /**
759
+ * Removes the specified element from the WeakMap.
760
+ * @returns true if the element was successfully removed, or false if it was not present.
761
+ */
762
+ delete(key: K): boolean;
763
+ /**
764
+ * @returns a specified element.
765
+ */
766
+ get(key: K): V | undefined;
767
+ /**
768
+ * @returns a boolean indicating whether an element with the specified key exists or not.
769
+ */
770
+ has(key: K): boolean;
771
+ /**
772
+ * Adds a new element with a specified key and value.
773
+ * @param key Must be an object or symbol.
774
+ */
775
+ set(key: K, value: V): this;
776
+ }
777
+
778
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
774
779
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Definable, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.ts CHANGED
@@ -321,35 +321,12 @@ interface Definable {
321
321
  interface PropertyDeclaration {
322
322
  readonly [key: string]: any;
323
323
  readonly default?: any | (() => any);
324
- readonly alias?: string;
324
+ readonly alias?: string | symbol;
325
325
  }
326
326
  declare function getDeclarations(constructor: any): Map<PropertyKey, PropertyDeclaration>;
327
327
  declare function defineProperty(constructor: any, key: PropertyKey, declaration?: PropertyDeclaration): void;
328
328
  declare function property(options?: PropertyDeclaration): PropertyDecorator;
329
329
 
330
- declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
331
- protected _map: WeakMap<K, V>;
332
- protected _toRaw(value: any): any;
333
- /**
334
- * Removes the specified element from the WeakMap.
335
- * @returns true if the element was successfully removed, or false if it was not present.
336
- */
337
- delete(key: K): boolean;
338
- /**
339
- * @returns a specified element.
340
- */
341
- get(key: K): V | undefined;
342
- /**
343
- * @returns a boolean indicating whether an element with the specified key exists or not.
344
- */
345
- has(key: K): boolean;
346
- /**
347
- * Adds a new element with a specified key and value.
348
- * @param key Must be an object or symbol.
349
- */
350
- set(key: K, value: V): this;
351
- }
352
-
353
330
  interface NormalizedInnerShadow {
354
331
  color: NormalizedColor;
355
332
  offsetX: number;
@@ -770,5 +747,33 @@ declare function round(number: number, digits?: number, base?: number): number;
770
747
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
771
748
  declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
772
749
 
773
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, stringifyGradient, textContentToString };
750
+ declare function getNestedValue(obj: any, path: (string | number)[], fallback?: any): any;
751
+ declare function setNestedValue(obj: any, path: (string | number)[], value: any): void;
752
+ declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
753
+ declare function setObjectValueByPath(obj: any, path: string, value: any): void;
754
+
755
+ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
756
+ protected _map: WeakMap<K, V>;
757
+ protected _toRaw(value: any): any;
758
+ /**
759
+ * Removes the specified element from the WeakMap.
760
+ * @returns true if the element was successfully removed, or false if it was not present.
761
+ */
762
+ delete(key: K): boolean;
763
+ /**
764
+ * @returns a specified element.
765
+ */
766
+ get(key: K): V | undefined;
767
+ /**
768
+ * @returns a boolean indicating whether an element with the specified key exists or not.
769
+ */
770
+ has(key: K): boolean;
771
+ /**
772
+ * Adds a new element with a specified key and value.
773
+ * @param key Must be an object or symbol.
774
+ */
775
+ set(key: K, value: V): this;
776
+ }
777
+
778
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
774
779
  export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Definable, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(i,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(i=typeof globalThis<"u"?globalThis:i||self,y(i.modernIdoc={}))})(this,function(i){"use strict";var Pe=Object.defineProperty;var Te=(i,y,O)=>y in i?Pe(i,y,{enumerable:!0,configurable:!0,writable:!0,value:O}):i[y]=O;var ae=(i,y,O)=>Te(i,typeof y!="symbol"?y+"":y,O);function y(t){return typeof t=="string"?{src:t}:t}var O={grad:.9,turn:360,rad:360/(2*Math.PI)},_=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},m=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},C=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},at=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ut=function(t){return{r:C(t.r,0,255),g:C(t.g,0,255),b:C(t.b,0,255),a:C(t.a)}},K=function(t){return{r:m(t.r),g:m(t.g),b:m(t.b),a:m(t.a,3)}},ue=/^#([0-9a-f]{3,8})$/i,M=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},lt=function(t){var e=t.r,n=t.g,r=t.b,o=t.a,c=Math.max(e,n,r),l=c-Math.min(e,n,r),u=l?c===e?(n-r)/l:c===n?2+(r-e)/l:4+(e-n)/l:0;return{h:60*(u<0?u+6:u),s:c?l/c*100:0,v:c/255*100,a:o}},st=function(t){var e=t.h,n=t.s,r=t.v,o=t.a;e=e/360*6,n/=100,r/=100;var c=Math.floor(e),l=r*(1-n),u=r*(1-(e-c)*n),g=r*(1-(1-e+c)*n),h=c%6;return{r:255*[r,u,l,l,g,r][h],g:255*[g,r,r,u,l,l][h],b:255*[l,l,g,r,r,u][h],a:o}},ct=function(t){return{h:at(t.h),s:C(t.s,0,100),l:C(t.l,0,100),a:C(t.a)}},ft=function(t){return{h:m(t.h),s:m(t.s),l:m(t.l),a:m(t.a,3)}},dt=function(t){return st((n=(e=t).s,{h:e.h,s:(n*=((r=e.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:e.a}));var e,n,r},L=function(t){return{h:(e=lt(t)).h,s:(o=(200-(n=e.s))*(r=e.v)/100)>0&&o<200?n*r/100/(o<=100?o:200-o)*100:0,l:o/2,a:e.a};var e,n,r,o},le=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,se=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ce=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fe=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,gt={string:[[function(t){var e=ue.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?m(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?m(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ce.exec(t)||fe.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ut({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=le.exec(t)||se.exec(t);if(!e)return null;var n,r,o=ct({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(O[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return dt(o)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,o=t.a,c=o===void 0?1:o;return _(e)&&_(n)&&_(r)?ut({r:Number(e),g:Number(n),b:Number(r),a:Number(c)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,o=t.a,c=o===void 0?1:o;if(!_(e)||!_(n)||!_(r))return null;var l=ct({h:Number(e),s:Number(n),l:Number(r),a:Number(c)});return dt(l)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,o=t.a,c=o===void 0?1:o;if(!_(e)||!_(n)||!_(r))return null;var l=function(u){return{h:at(u.h),s:C(u.s,0,100),v:C(u.v,0,100),a:C(u.a)}}({h:Number(e),s:Number(n),v:Number(r),a:Number(c)});return st(l)},"hsv"]]},ht=function(t,e){for(var n=0;n<e.length;n++){var r=e[n][0](t);if(r)return[r,e[n][1]]}return[null,void 0]},de=function(t){return typeof t=="string"?ht(t.trim(),gt.string):typeof t=="object"&&t!==null?ht(t,gt.object):[null,void 0]},X=function(t,e){var n=L(t);return{h:n.h,s:C(n.s+100*e,0,100),l:n.l,a:n.a}},Y=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},vt=function(t,e){var n=L(t);return{h:n.h,s:n.s,l:C(n.l+100*e,0,100),a:n.a}},mt=function(){function t(e){this.parsed=de(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 m(Y(this.rgba),2)},t.prototype.isDark=function(){return Y(this.rgba)<.5},t.prototype.isLight=function(){return Y(this.rgba)>=.5},t.prototype.toHex=function(){return e=K(this.rgba),n=e.r,r=e.g,o=e.b,l=(c=e.a)<1?M(m(255*c)):"","#"+M(n)+M(r)+M(o)+l;var e,n,r,o,c,l},t.prototype.toRgb=function(){return K(this.rgba)},t.prototype.toRgbString=function(){return e=K(this.rgba),n=e.r,r=e.g,o=e.b,(c=e.a)<1?"rgba("+n+", "+r+", "+o+", "+c+")":"rgb("+n+", "+r+", "+o+")";var e,n,r,o,c},t.prototype.toHsl=function(){return ft(L(this.rgba))},t.prototype.toHslString=function(){return e=ft(L(this.rgba)),n=e.h,r=e.s,o=e.l,(c=e.a)<1?"hsla("+n+", "+r+"%, "+o+"%, "+c+")":"hsl("+n+", "+r+"%, "+o+"%)";var e,n,r,o,c},t.prototype.toHsv=function(){return e=lt(this.rgba),{h:m(e.h),s:m(e.s),v:m(e.v),a:m(e.a,3)};var e},t.prototype.invert=function(){return z({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),z(X(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),z(X(this.rgba,-e))},t.prototype.grayscale=function(){return z(X(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),z(vt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),z(vt(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"?z({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):m(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=L(this.rgba);return typeof e=="number"?z({h:e,s:n.s,l:n.l,a:n.a}):m(n.h)},t.prototype.isEqual=function(e){return this.toHex()===z(e).toHex()},t}(),z=function(t){return t instanceof mt?t:new mt(t)};function d(t){return t==null||t==="none"}function R(t,e=0,n=10**e){return Math.round(n*t)/n+0}function N(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>N(r,e)):t;const n={};for(const r in t){const o=t[r];o!=null&&(e?n[r]=N(o,e):n[r]=o)}return n}function P(t,e){const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function q(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,z(e)}function ge(t){return{r:R(t.r),g:R(t.g),b:R(t.b),a:R(t.a,3)}}function T(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const G="#000000FF";function pt(t){return q(t).isValid()}function b(t,e=!1){const n=q(t);if(!n.isValid()){if(typeof t=="string")return t;const u=`Failed to normalizeColor ${t}`;if(e)throw new Error(u);return console.warn(u),G}const{r,g:o,b:c,a:l}=ge(n.rgba);return`#${T(r)}${T(o)}${T(c)}${T(R(l*255))}`}var j=j||{};j.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 n(a){const s=new Error(`${e}: ${a}`);throw s.source=e,s}function r(){const a=o();return e.length>0&&n("Invalid input not EOF"),a}function o(){return W(c)}function c(){return l("linear-gradient",t.linearGradient,g)||l("repeating-linear-gradient",t.repeatingLinearGradient,g)||l("radial-gradient",t.radialGradient,F)||l("repeating-radial-gradient",t.repeatingRadialGradient,F)}function l(a,s,f){return u(s,p=>{const E=f();return E&&(v(t.comma)||n("Missing comma before color stops")),{type:a,orientation:E,colorStops:W(ke)}})}function u(a,s){const f=v(a);if(f){v(t.startCall)||n("Missing (");const p=s(f);return v(t.endCall)||n("Missing )"),p}}function g(){const a=h();if(a)return a;const s=S("position-keyword",t.positionKeywords,1);return s?{type:"directional",value:s.value}:w()}function h(){return S("directional",t.sideOrCorner,1)}function w(){return S("angular",t.angleValue,1)||S("angular",t.radianValue,1)}function F(){let a,s=H(),f;return s&&(a=[],a.push(s),f=e,v(t.comma)&&(s=H(),s?a.push(s):e=f)),a}function H(){let a=ze()||_e();if(a)a.at=rt();else{const s=nt();if(s){a=s;const f=rt();f&&(a.at=f)}else{const f=rt();if(f)a={type:"default-radial",at:f};else{const p=it();p&&(a={type:"default-radial",at:p})}}}return a}function ze(){const a=S("shape",/^(circle)/i,0);return a&&(a.style=oe()||nt()),a}function _e(){const a=S("shape",/^(ellipse)/i,0);return a&&(a.style=it()||B()||nt()),a}function nt(){return S("extent-keyword",t.extentKeywords,1)}function rt(){if(S("position",/^at/,0)){const a=it();return a||n("Missing positioning value"),a}}function it(){const a=Fe();if(a.x||a.y)return{type:"position",value:a}}function Fe(){return{x:B(),y:B()}}function W(a){let s=a();const f=[];if(s)for(f.push(s);v(t.comma);)s=a(),s?f.push(s):n("One extra comma");return f}function ke(){const a=Re();return a||n("Expected color definition"),a.length=B(),a}function Re(){return Ee()||Ie()||Ge()||De()||Oe()||Le()||Ne()}function Ne(){return S("literal",t.literalColor,0)}function Ee(){return S("hex",t.hexColor,1)}function Oe(){return u(t.rgbColor,()=>({type:"rgb",value:W(V)}))}function De(){return u(t.rgbaColor,()=>({type:"rgba",value:W(V)}))}function Le(){return u(t.varColor,()=>({type:"var",value:Ae()}))}function Ge(){return u(t.hslColor,()=>{v(t.percentageValue)&&n("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const s=V();v(t.comma);let f=v(t.percentageValue);const p=f?f[1]:null;v(t.comma),f=v(t.percentageValue);const E=f?f[1]:null;return(!p||!E)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[s,p,E]}})}function Ie(){return u(t.hslaColor,()=>{const a=V();v(t.comma);let s=v(t.percentageValue);const f=s?s[1]:null;v(t.comma),s=v(t.percentageValue);const p=s?s[1]:null;v(t.comma);const E=V();return(!f||!p)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,f,p,E]}})}function Ae(){return v(t.variableName)[1]}function V(){return v(t.number)[1]}function B(){return S("%",t.percentageValue,1)||Ve()||Me()||oe()}function Ve(){return S("position-keyword",t.positionKeywords,1)}function Me(){return u(t.calcValue,()=>{let a=1,s=0;for(;a>0&&s<e.length;){const p=e.charAt(s);p==="("?a++:p===")"&&a--,s++}a>0&&n("Missing closing parenthesis in calc() expression");const f=e.substring(0,s-1);return ot(s-1),{type:"calc",value:f}})}function oe(){return S("px",t.pixelValue,1)||S("em",t.emValue,1)}function S(a,s,f){const p=v(s);if(p)return{type:a,value:p[f]}}function v(a){let s,f;return f=/^\s+/.exec(e),f&&ot(f[0].length),s=a.exec(e),s&&ot(s[0].length),s}function ot(a){e=e.substr(a)}return function(a){return e=a.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}}();const bt=j.parse.bind(j);var $=$||{};$.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 n=t.visit(e.orientation);return n&&(n+=", "),e.type+"("+n+t.visit(e.colorStops)+")"},visit_shape:function(e){var n=e.value,r=t.visit(e.at),o=t.visit(e.style);return o&&(n+=" "+o),r&&(n+=" at "+r),n},"visit_default-radial":function(e){var n="",r=t.visit(e.at);return r&&(n+=r),n},"visit_extent-keyword":function(e){var n=e.value,r=t.visit(e.at);return r&&(n+=" at "+r),n},"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,n){var r=e,o=t.visit(n.length);return o&&(r+=" "+o),r},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var n="",r=e.length;return e.forEach(function(o,c){n+=t.visit(o),c<r-1&&(n+=", ")}),n},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 n=t["visit_"+e.type];if(n)return n(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}}();const he=$.stringify.bind($);function yt(t){const e=t.length-1;return t.map((n,r)=>{var u;const o=n.value;let c=R(r/e,3),l="#00000000";switch(n.type){case"rgb":l=b({r:Number(o[0]??0),g:Number(o[1]??0),b:Number(o[2]??0)});break;case"rgba":l=b({r:Number(o[0]??0),g:Number(o[1]??0),b:Number(o[2]??0),a:Number(o[3]??0)});break;case"literal":l=b(n.value);break;case"hex":l=b(`#${n.value}`);break}switch((u=n.length)==null?void 0:u.type){case"%":c=Number(n.length.value)/100;break}return{offset:c,color:l}})}function St(t){var n;let e=0;switch((n=t.orientation)==null?void 0:n.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:yt(t.colorStops)}}function Ct(t){var e;return(e=t.orientation)==null||e.map(n=>{switch(n==null?void 0:n.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:yt(t.colorStops)}}function I(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function wt(t){return bt(t).map(e=>{switch(e==null?void 0:e.type){case"linear-gradient":return St(e);case"repeating-linear-gradient":return{...St(e),repeat:!0};case"radial-gradient":return Ct(e);case"repeating-radial-gradient":return{...Ct(e),repeat:!0};default:return}}).filter(Boolean)}function zt(t){let e;return typeof t=="string"?e={color:t}:e=t,{color:b(e.color)}}function _t(t){let e;if(typeof t=="string"?e={image:t}:e=t,e.image){const{type:n,...r}=wt(e.image)[0]??{};switch(n){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return e}function Ft(t){let e;return typeof t=="string"?e={image:t}:e=t,e}function kt(t){let e;return typeof t=="string"?e={preset:t}:e=t,{preset:e.preset,foregroundColor:d(e.foregroundColor)?void 0:b(e.foregroundColor),backgroundColor:d(e.backgroundColor)?void 0:b(e.backgroundColor)}}function Rt(t){return!d(t.color)}function Nt(t){return typeof t=="string"?pt(t):Rt(t)}function Et(t){return!d(t.image)&&I(t.image)||!!t.linearGradient||!!t.radialGradient}function Ot(t){return typeof t=="string"?I(t):Et(t)}function Dt(t){return!d(t.image)&&!I(t.image)}function Lt(t){return typeof t=="string"?!I(t):Dt(t)}function Gt(t){return!d(t.preset)}function It(t){return typeof t=="string"?!1:Gt(t)}function k(t){return Nt(t)?zt(t):Ot(t)?_t(t):Lt(t)?Ft(t):It(t)?kt(t):{}}function At(t){return typeof t=="string"?{...k(t)}:{...k(t),...P(t,["fillWithShape"])}}class Vt{constructor(){ae(this,"_map",new WeakMap)}_toRaw(e){if(e&&typeof e=="object"){const n=e.__v_raw;n&&(e=this._toRaw(n))}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,n){return this._map.set(this._toRaw(e),this._toRaw(n)),this}}const Mt=new Vt;function U(t){let e=Mt.get(t);if(!e){const n=Object.getPrototypeOf(t);e=new Map(n?U(n):void 0),Mt.set(t,e)}return e}function Pt(t,e,n={}){U(t).set(e,n);const{default:r,alias:o=Symbol.for(String(e))}=n,c=()=>typeof r=="function"?r():r,l=Object.getOwnPropertyDescriptor(t.prototype,e)||{get(){return this[o]},set(u){this[o]=u}};Object.defineProperty(t.prototype,e,{get(){var g,h;let u=(g=l.get)==null?void 0:g.call(this);return u===void 0&&(u=c(),u!==void 0&&((h=l.set)==null||h.call(this,u))),u},set(u){var h,w,F;let g=(h=l.get)==null?void 0:h.call(this);g===void 0&&(g=c()),(w=l.set)==null||w.call(this,u),(F=this.requestUpdate)==null||F.call(this,e,u,g,n)},configurable:!0,enumerable:!0})}function ve(t){return function(e,n){Pt(e.constructor,n,t)}}function Z(){return{color:G,offsetX:0,offsetY:0,blurRadius:1}}function J(t){return{...Z(),...N({...t,color:d(t.color)?G:b(t.color)})}}function Tt(){return{...Z(),scaleX:1,scaleY:1}}function jt(t){return{...Tt(),...J(t)}}function me(t){return t}function $t(t){return N({...t,softEdge:d(t.softEdge)?void 0:t.softEdge,outerShadow:d(t.outerShadow)?void 0:jt(t.outerShadow),innerShadow:d(t.innerShadow)?void 0:J(t.innerShadow)})}function xt(t){return typeof t=="string"?{...k(t)}:{...k(t),...P(t,["fillWithShape"])}}function Ht(t){return typeof t=="string"?{...k(t)}:{...k(t),...P(t,["width","style","headEnd","tailEnd"])}}function Wt(t){return typeof t=="string"?{color:b(t)}:{...t,color:d(t.color)?G:b(t.color)}}function Bt(){return{boxShadow:"none"}}function Kt(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 Xt(){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 Yt(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function qt(){return{...Xt(),...Yt(),...Bt(),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 Ut(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Zt(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function Jt(){return{...Ut(),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 Qt(){return{...Zt(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function te(){return{...Qt(),...Jt(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function D(t){return N({...t,color:d(t.color)?void 0:b(t.color),backgroundColor:d(t.backgroundColor)?void 0:b(t.backgroundColor),borderColor:d(t.borderColor)?void 0:b(t.borderColor),outlineColor:d(t.outlineColor)?void 0:b(t.outlineColor),shadowColor:d(t.shadowColor)?void 0:b(t.shadowColor)})}function pe(){return{...qt(),...te()}}const Q=/\r\n|\n\r|\n|\r/,be=new RegExp(`${Q.source}|<br\\/>`,"g"),ye=new RegExp(`^(${Q.source})$`),x=`
2
- `;function Se(t){return Q.test(t)}function tt(t){return ye.test(t)}function ee(t){return t.replace(be,x)}function ne(t,e){const n=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!n.length||n.every(r=>t[r]===e[r])}function A(t){const e=[];function n(){return e[e.length-1]||r()}function r(l={}){let u=e[e.length-1];return(u==null?void 0:u.fragments.length)===0?(u={...l,fragments:[]},e[e.length-1]=u):(u={...l,fragments:[]},e.push(u)),u}function o(l="",u={}){Array.from(l).forEach(g=>{if(tt(g)){const{fragments:h,...w}=n();h.length||h.push({...u,content:x}),r(w)}else{const h=n(),w=h.fragments[h.fragments.length-1];if(w){const{content:F,...H}=w;if(ne(u,H)){w.content=`${F}${g}`;return}}h.fragments.push({...u,content:g})}})}return(Array.isArray(t)?t:[t]).forEach(l=>{if(typeof l=="string")r(),o(l);else if("content"in l){const{content:u,...g}=l;r(D(g)),o(u)}else if("fragments"in l){const{fragments:u,...g}=l;r(D(g)),u.forEach(h=>{const{content:w,...F}=h;o(w,D(F))})}else Array.isArray(l)?(r(),l.forEach(u=>{if(typeof u=="string")o(u);else{const{content:g,...h}=u;o(g,D(h))}})):console.warn("Failed to parse text content",l)}),n().fragments.length||o(x),e}function re(t){return typeof t=="string"?{content:A(t)}:"content"in t?{...t,content:A(t.content)}:{content:A(t)}}function Ce(t){return A(t).map(e=>{const n=ee(e.fragments.flatMap(r=>r.content).join(""));return tt(n)?"":n}).join(x)}function ie(t){return typeof t=="string"?{src:t}:t}function et(t){var e;return N({...t,style:d(t.style)?void 0:D(t.style),text:d(t.text)?void 0:re(t.text),background:d(t.background)?void 0:At(t.background),shape:d(t.shape)?void 0:Kt(t.shape),fill:d(t.fill)?void 0:k(t.fill),outline:d(t.outline)?void 0:Ht(t.outline),foreground:d(t.foreground)?void 0:xt(t.foreground),shadow:d(t.shadow)?void 0:Wt(t.shadow),video:d(t.video)?void 0:ie(t.video),audio:d(t.audio)?void 0:y(t.audio),effect:d(t.effect)?void 0:$t(t.effect),children:(e=t.children)==null?void 0:e.map(n=>et(n))})}function we(t){return et(t)}i.RawWeakMap=Vt,i.clearUndef=N,i.defaultColor=G,i.defineProperty=Pt,i.getDeclarations=U,i.getDefaultElementStyle=qt,i.getDefaultHighlightStyle=Ut,i.getDefaultInnerShadow=Z,i.getDefaultLayoutStyle=Xt,i.getDefaultListStyleStyle=Zt,i.getDefaultOuterShadow=Tt,i.getDefaultShadowStyle=Bt,i.getDefaultStyle=pe,i.getDefaultTextInlineStyle=Jt,i.getDefaultTextLineStyle=Qt,i.getDefaultTextStyle=te,i.getDefaultTransformStyle=Yt,i.hasCRLF=Se,i.isCRLF=tt,i.isColor=pt,i.isColorFill=Nt,i.isColorFillObject=Rt,i.isEqualStyle=ne,i.isGradient=I,i.isGradientFill=Ot,i.isGradientFillObject=Et,i.isImageFill=Lt,i.isImageFillObject=Dt,i.isNone=d,i.isPresetFill=It,i.isPresetFillObject=Gt,i.normalizeAudio=y,i.normalizeBackground=At,i.normalizeCRLF=ee,i.normalizeColor=b,i.normalizeColorFill=zt,i.normalizeDocument=we,i.normalizeEffect=$t,i.normalizeElement=et,i.normalizeFill=k,i.normalizeForeground=xt,i.normalizeGradient=wt,i.normalizeGradientFill=_t,i.normalizeImageFill=Ft,i.normalizeInnerShadow=J,i.normalizeOuterShadow=jt,i.normalizeOutline=Ht,i.normalizePresetFill=kt,i.normalizeShadow=Wt,i.normalizeShape=Kt,i.normalizeSoftEdge=me,i.normalizeStyle=D,i.normalizeText=re,i.normalizeTextContent=A,i.normalizeVideo=ie,i.parseColor=q,i.parseGradient=bt,i.pick=P,i.property=ve,i.round=R,i.stringifyGradient=he,i.textContentToString=Ce,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
1
+ (function(o,S){typeof exports=="object"&&typeof module<"u"?S(exports):typeof define=="function"&&define.amd?define(["exports"],S):(o=typeof globalThis<"u"?globalThis:o||self,S(o.modernIdoc={}))})(this,function(o){"use strict";var We=Object.defineProperty;var Be=(o,S,E)=>S in o?We(o,S,{enumerable:!0,configurable:!0,writable:!0,value:E}):o[S]=E;var fe=(o,S,E)=>Be(o,typeof S!="symbol"?S+"":S,E);function S(t){return typeof t=="string"?{src:t}:t}var E={grad:.9,turn:360,rad:360/(2*Math.PI)},F=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},m=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},z=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},ut=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},lt=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)}},K=function(t){return{r:m(t.r),g:m(t.g),b:m(t.b),a:m(t.a,3)}},de=/^#([0-9a-f]{3,8})$/i,M=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},st=function(t){var e=t.r,n=t.g,r=t.b,i=t.a,c=Math.max(e,n,r),s=c-Math.min(e,n,r),u=s?c===e?(n-r)/s:c===n?2+(r-e)/s:4+(e-n)/s:0;return{h:60*(u<0?u+6:u),s:c?s/c*100:0,v:c/255*100,a:i}},ct=function(t){var e=t.h,n=t.s,r=t.v,i=t.a;e=e/360*6,n/=100,r/=100;var c=Math.floor(e),s=r*(1-n),u=r*(1-(e-c)*n),f=r*(1-(1-e+c)*n),h=c%6;return{r:255*[r,u,s,s,f,r][h],g:255*[f,r,r,u,s,s][h],b:255*[s,s,f,r,r,u][h],a:i}},ft=function(t){return{h:ut(t.h),s:z(t.s,0,100),l:z(t.l,0,100),a:z(t.a)}},dt=function(t){return{h:m(t.h),s:m(t.s),l:m(t.l),a:m(t.a,3)}},gt=function(t){return ct((n=(e=t).s,{h:e.h,s:(n*=((r=e.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:e.a}));var e,n,r},G=function(t){return{h:(e=st(t)).h,s:(i=(200-(n=e.s))*(r=e.v)/100)>0&&i<200?n*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,n,r,i},ge=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,he=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ve=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,me=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ht={string:[[function(t){var e=de.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?m(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?m(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ve.exec(t)||me.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:lt({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=ge.exec(t)||he.exec(t);if(!e)return null;var n,r,i=ft({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(E[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return gt(i)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,i=t.a,c=i===void 0?1:i;return F(e)&&F(n)&&F(r)?lt({r:Number(e),g:Number(n),b:Number(r),a:Number(c)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,i=t.a,c=i===void 0?1:i;if(!F(e)||!F(n)||!F(r))return null;var s=ft({h:Number(e),s:Number(n),l:Number(r),a:Number(c)});return gt(s)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,i=t.a,c=i===void 0?1:i;if(!F(e)||!F(n)||!F(r))return null;var s=function(u){return{h:ut(u.h),s:z(u.s,0,100),v:z(u.v,0,100),a:z(u.a)}}({h:Number(e),s:Number(n),v:Number(r),a:Number(c)});return ct(s)},"hsv"]]},vt=function(t,e){for(var n=0;n<e.length;n++){var r=e[n][0](t);if(r)return[r,e[n][1]]}return[null,void 0]},pe=function(t){return typeof t=="string"?vt(t.trim(),ht.string):typeof t=="object"&&t!==null?vt(t,ht.object):[null,void 0]},X=function(t,e){var n=G(t);return{h:n.h,s:z(n.s+100*e,0,100),l:n.l,a:n.a}},Y=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},mt=function(t,e){var n=G(t);return{h:n.h,s:n.s,l:z(n.l+100*e,0,100),a:n.a}},pt=function(){function t(e){this.parsed=pe(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 m(Y(this.rgba),2)},t.prototype.isDark=function(){return Y(this.rgba)<.5},t.prototype.isLight=function(){return Y(this.rgba)>=.5},t.prototype.toHex=function(){return e=K(this.rgba),n=e.r,r=e.g,i=e.b,s=(c=e.a)<1?M(m(255*c)):"","#"+M(n)+M(r)+M(i)+s;var e,n,r,i,c,s},t.prototype.toRgb=function(){return K(this.rgba)},t.prototype.toRgbString=function(){return e=K(this.rgba),n=e.r,r=e.g,i=e.b,(c=e.a)<1?"rgba("+n+", "+r+", "+i+", "+c+")":"rgb("+n+", "+r+", "+i+")";var e,n,r,i,c},t.prototype.toHsl=function(){return dt(G(this.rgba))},t.prototype.toHslString=function(){return e=dt(G(this.rgba)),n=e.h,r=e.s,i=e.l,(c=e.a)<1?"hsla("+n+", "+r+"%, "+i+"%, "+c+")":"hsl("+n+", "+r+"%, "+i+"%)";var e,n,r,i,c},t.prototype.toHsv=function(){return e=st(this.rgba),{h:m(e.h),s:m(e.s),v:m(e.v),a:m(e.a,3)};var e},t.prototype.invert=function(){return _({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),_(X(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),_(X(this.rgba,-e))},t.prototype.grayscale=function(){return _(X(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),_(mt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),_(mt(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"?_({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):m(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=G(this.rgba);return typeof e=="number"?_({h:e,s:n.s,l:n.l,a:n.a}):m(n.h)},t.prototype.isEqual=function(e){return this.toHex()===_(e).toHex()},t}(),_=function(t){return t instanceof pt?t:new pt(t)};function g(t){return t==null||t==="none"}function O(t,e=0,n=10**e){return Math.round(n*t)/n+0}function R(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>R(r,e)):t;const n={};for(const r in t){const i=t[r];i!=null&&(e?n[r]=R(i,e):n[r]=i)}return n}function T(t,e){const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function bt(t,e,n){const r=e.length-1;if(r<0)return t===void 0?n:t;for(let i=0;i<r;i++){if(t==null)return n;t=t[e[i]]}return t==null||t[e[r]]===void 0?n:t[e[r]]}function yt(t,e,n){const r=e.length-1;for(let i=0;i<r;i++)typeof t[e[i]]!="object"&&(t[e[i]]={}),t=t[e[i]];t[e[r]]=n}function St(t,e,n){return t==null||!e||typeof e!="string"?n:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),bt(t,e.split("."),n))}function Ct(t,e,n){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),yt(t,e.split("."),n)}class wt{constructor(){fe(this,"_map",new WeakMap)}_toRaw(e){if(e&&typeof e=="object"){const n=e.__v_raw;n&&(e=this._toRaw(n))}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,n){return this._map.set(this._toRaw(e),this._toRaw(n)),this}}function q(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,_(e)}function be(t){return{r:O(t.r),g:O(t.g),b:O(t.b),a:O(t.a,3)}}function $(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const I="#000000FF";function zt(t){return q(t).isValid()}function b(t,e=!1){const n=q(t);if(!n.isValid()){if(typeof t=="string")return t;const u=`Failed to normalizeColor ${t}`;if(e)throw new Error(u);return console.warn(u),I}const{r,g:i,b:c,a:s}=be(n.rgba);return`#${$(r)}${$(i)}${$(c)}${$(O(s*255))}`}var H=H||{};H.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 n(a){const l=new Error(`${e}: ${a}`);throw l.source=e,l}function r(){const a=i();return e.length>0&&n("Invalid input not EOF"),a}function i(){return j(c)}function c(){return s("linear-gradient",t.linearGradient,f)||s("repeating-linear-gradient",t.repeatingLinearGradient,f)||s("radial-gradient",t.radialGradient,w)||s("repeating-radial-gradient",t.repeatingRadialGradient,w)}function s(a,l,d){return u(l,p=>{const k=d();return k&&(v(t.comma)||n("Missing comma before color stops")),{type:a,orientation:k,colorStops:j(Ee)}})}function u(a,l){const d=v(a);if(d){v(t.startCall)||n("Missing (");const p=l(d);return v(t.endCall)||n("Missing )"),p}}function f(){const a=h();if(a)return a;const l=C("position-keyword",t.positionKeywords,1);return l?{type:"directional",value:l.value}:y()}function h(){return C("directional",t.sideOrCorner,1)}function y(){return C("angular",t.angleValue,1)||C("angular",t.radianValue,1)}function w(){let a,l=L(),d;return l&&(a=[],a.push(l),d=e,v(t.comma)&&(l=L(),l?a.push(l):e=d)),a}function L(){let a=nt()||Re();if(a)a.at=it();else{const l=rt();if(l){a=l;const d=it();d&&(a.at=d)}else{const d=it();if(d)a={type:"default-radial",at:d};else{const p=ot();p&&(a={type:"default-radial",at:p})}}}return a}function nt(){const a=C("shape",/^(circle)/i,0);return a&&(a.style=ce()||rt()),a}function Re(){const a=C("shape",/^(ellipse)/i,0);return a&&(a.style=ot()||x()||rt()),a}function rt(){return C("extent-keyword",t.extentKeywords,1)}function it(){if(C("position",/^at/,0)){const a=ot();return a||n("Missing positioning value"),a}}function ot(){const a=ke();if(a.x||a.y)return{type:"position",value:a}}function ke(){return{x:x(),y:x()}}function j(a){let l=a();const d=[];if(l)for(d.push(l);v(t.comma);)l=a(),l?d.push(l):n("One extra comma");return d}function Ee(){const a=De();return a||n("Expected color definition"),a.length=x(),a}function De(){return Ge()||Me()||Ae()||Ve()||Ie()||Pe()||Le()}function Le(){return C("literal",t.literalColor,0)}function Ge(){return C("hex",t.hexColor,1)}function Ie(){return u(t.rgbColor,()=>({type:"rgb",value:j(A)}))}function Ve(){return u(t.rgbaColor,()=>({type:"rgba",value:j(A)}))}function Pe(){return u(t.varColor,()=>({type:"var",value:Te()}))}function Ae(){return u(t.hslColor,()=>{v(t.percentageValue)&&n("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const l=A();v(t.comma);let d=v(t.percentageValue);const p=d?d[1]:null;v(t.comma),d=v(t.percentageValue);const k=d?d[1]:null;return(!p||!k)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[l,p,k]}})}function Me(){return u(t.hslaColor,()=>{const a=A();v(t.comma);let l=v(t.percentageValue);const d=l?l[1]:null;v(t.comma),l=v(t.percentageValue);const p=l?l[1]:null;v(t.comma);const k=A();return(!d||!p)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,d,p,k]}})}function Te(){return v(t.variableName)[1]}function A(){return v(t.number)[1]}function x(){return C("%",t.percentageValue,1)||$e()||He()||ce()}function $e(){return C("position-keyword",t.positionKeywords,1)}function He(){return u(t.calcValue,()=>{let a=1,l=0;for(;a>0&&l<e.length;){const p=e.charAt(l);p==="("?a++:p===")"&&a--,l++}a>0&&n("Missing closing parenthesis in calc() expression");const d=e.substring(0,l-1);return at(l-1),{type:"calc",value:d}})}function ce(){return C("px",t.pixelValue,1)||C("em",t.emValue,1)}function C(a,l,d){const p=v(l);if(p)return{type:a,value:p[d]}}function v(a){let l,d;return d=/^\s+/.exec(e),d&&at(d[0].length),l=a.exec(e),l&&at(l[0].length),l}function at(a){e=e.substr(a)}return function(a){return e=a.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}}();const _t=H.parse.bind(H);var W=W||{};W.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 n=t.visit(e.orientation);return n&&(n+=", "),e.type+"("+n+t.visit(e.colorStops)+")"},visit_shape:function(e){var n=e.value,r=t.visit(e.at),i=t.visit(e.style);return i&&(n+=" "+i),r&&(n+=" at "+r),n},"visit_default-radial":function(e){var n="",r=t.visit(e.at);return r&&(n+=r),n},"visit_extent-keyword":function(e){var n=e.value,r=t.visit(e.at);return r&&(n+=" at "+r),n},"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,n){var r=e,i=t.visit(n.length);return i&&(r+=" "+i),r},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var n="",r=e.length;return e.forEach(function(i,c){n+=t.visit(i),c<r-1&&(n+=", ")}),n},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 n=t["visit_"+e.type];if(n)return n(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}}();const ye=W.stringify.bind(W);function Ft(t){const e=t.length-1;return t.map((n,r)=>{var u;const i=n.value;let c=O(r/e,3),s="#00000000";switch(n.type){case"rgb":s=b({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":s=b({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":s=b(n.value);break;case"hex":s=b(`#${n.value}`);break}switch((u=n.length)==null?void 0:u.type){case"%":c=Number(n.length.value)/100;break}return{offset:c,color:s}})}function Nt(t){var n;let e=0;switch((n=t.orientation)==null?void 0:n.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Ft(t.colorStops)}}function Ot(t){var e;return(e=t.orientation)==null||e.map(n=>{switch(n==null?void 0:n.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Ft(t.colorStops)}}function V(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Rt(t){return _t(t).map(e=>{switch(e==null?void 0:e.type){case"linear-gradient":return Nt(e);case"repeating-linear-gradient":return{...Nt(e),repeat:!0};case"radial-gradient":return Ot(e);case"repeating-radial-gradient":return{...Ot(e),repeat:!0};default:return}}).filter(Boolean)}function kt(t){let e;return typeof t=="string"?e={color:t}:e=t,{color:b(e.color)}}function Et(t){let e;if(typeof t=="string"?e={image:t}:e=t,e.image){const{type:n,...r}=Rt(e.image)[0]??{};switch(n){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return e}function Dt(t){let e;return typeof t=="string"?e={image:t}:e=t,e}function Lt(t){let e;return typeof t=="string"?e={preset:t}:e=t,{preset:e.preset,foregroundColor:g(e.foregroundColor)?void 0:b(e.foregroundColor),backgroundColor:g(e.backgroundColor)?void 0:b(e.backgroundColor)}}function Gt(t){return!g(t.color)}function It(t){return typeof t=="string"?zt(t):Gt(t)}function Vt(t){return!g(t.image)&&V(t.image)||!!t.linearGradient||!!t.radialGradient}function Pt(t){return typeof t=="string"?V(t):Vt(t)}function At(t){return!g(t.image)&&!V(t.image)}function Mt(t){return typeof t=="string"?!V(t):At(t)}function Tt(t){return!g(t.preset)}function $t(t){return typeof t=="string"?!1:Tt(t)}function N(t){return It(t)?kt(t):Pt(t)?Et(t):Mt(t)?Dt(t):$t(t)?Lt(t):{}}function Ht(t){return typeof t=="string"?{...N(t)}:{...N(t),...T(t,["fillWithShape"])}}const Wt=new wt;function U(t){let e=Wt.get(t);if(!e){const n=Object.getPrototypeOf(t);e=new Map(n?U(n):void 0),Wt.set(t,e)}return e}function Bt(t,e,n={}){U(t).set(e,n);const{default:r,alias:i=Symbol.for(String(e))}=n,c=()=>typeof r=="function"?r():r,s=Object.getOwnPropertyDescriptor(t.prototype,e)||{get(){return typeof i=="string"?St(this,i):this[i]},set(u){typeof i=="string"?Ct(this,i,u):this[i]=u}};Object.defineProperty(t.prototype,e,{get(){var f,h;let u=(f=s.get)==null?void 0:f.call(this);return u===void 0&&(u=c(),u!==void 0&&((h=s.set)==null||h.call(this,u))),u},set(u){var h,y,w;let f=(h=s.get)==null?void 0:h.call(this);f===void 0&&(f=c()),(y=s.set)==null||y.call(this,u),(w=this.requestUpdate)==null||w.call(this,e,u,f,n)},configurable:!0,enumerable:!0})}function Se(t){return function(e,n){Bt(e.constructor,n,t)}}function Z(){return{color:I,offsetX:0,offsetY:0,blurRadius:1}}function J(t){return{...Z(),...R({...t,color:g(t.color)?I:b(t.color)})}}function jt(){return{...Z(),scaleX:1,scaleY:1}}function xt(t){return{...jt(),...J(t)}}function Ce(t){return t}function Kt(t){return R({...t,softEdge:g(t.softEdge)?void 0:t.softEdge,outerShadow:g(t.outerShadow)?void 0:xt(t.outerShadow),innerShadow:g(t.innerShadow)?void 0:J(t.innerShadow)})}function Xt(t){return typeof t=="string"?{...N(t)}:{...N(t),...T(t,["fillWithShape"])}}function Yt(t){return typeof t=="string"?{...N(t)}:{...N(t),...T(t,["width","style","headEnd","tailEnd"])}}function qt(t){return typeof t=="string"?{color:b(t)}:{...t,color:g(t.color)?I:b(t.color)}}function Ut(){return{boxShadow:"none"}}function Zt(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 Jt(){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 Qt(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function te(){return{...Jt(),...Qt(),...Ut(),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 ee(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function ne(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function re(){return{...ee(),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 ie(){return{...ne(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function oe(){return{...ie(),...re(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function D(t){return R({...t,color:g(t.color)?void 0:b(t.color),backgroundColor:g(t.backgroundColor)?void 0:b(t.backgroundColor),borderColor:g(t.borderColor)?void 0:b(t.borderColor),outlineColor:g(t.outlineColor)?void 0:b(t.outlineColor),shadowColor:g(t.shadowColor)?void 0:b(t.shadowColor)})}function we(){return{...te(),...oe()}}const Q=/\r\n|\n\r|\n|\r/,ze=new RegExp(`${Q.source}|<br\\/>`,"g"),_e=new RegExp(`^(${Q.source})$`),B=`
2
+ `;function Fe(t){return Q.test(t)}function tt(t){return _e.test(t)}function ae(t){return t.replace(ze,B)}function ue(t,e){const n=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!n.length||n.every(r=>t[r]===e[r])}function P(t){const e=[];function n(){return e[e.length-1]}function r(u={}){let f=e[e.length-1];return(f==null?void 0:f.fragments.length)===0?(f={...u,fragments:[]},e[e.length-1]=f):(f={...u,fragments:[]},e.push(f)),f}function i(u="",f={}){Array.from(u).forEach(h=>{if(tt(h)){const{fragments:y,...w}=n()||r();y.length||y.push({...f,content:B}),r(w)}else{const y=n()||r(),w=y.fragments[y.fragments.length-1];if(w){const{content:L,...nt}=w;if(ue(f,nt)){w.content=`${L}${h}`;return}}y.fragments.push({...f,content:h})}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")r(),i(u);else if("content"in u){const{content:f,...h}=u;r(D(h)),i(f)}else if("fragments"in u){const{fragments:f,...h}=u;r(D(h)),f.forEach(y=>{const{content:w,...L}=y;i(w,D(L))})}else Array.isArray(u)?(r(),u.forEach(f=>{if(typeof f=="string")i(f);else{const{content:h,...y}=f;i(h,D(y))}})):console.warn("Failed to parse text content",u)});const s=n();return s&&!s.fragments.length&&s.fragments.push({content:B}),e}function le(t){return typeof t=="string"?{content:P(t)}:"content"in t?{...t,content:P(t.content)}:{content:P(t)}}function Ne(t){return P(t).map(e=>{const n=ae(e.fragments.flatMap(r=>r.content).join(""));return tt(n)?"":n}).join(B)}function se(t){return typeof t=="string"?{src:t}:t}function et(t){var e;return R({...t,style:g(t.style)?void 0:D(t.style),text:g(t.text)?void 0:le(t.text),background:g(t.background)?void 0:Ht(t.background),shape:g(t.shape)?void 0:Zt(t.shape),fill:g(t.fill)?void 0:N(t.fill),outline:g(t.outline)?void 0:Yt(t.outline),foreground:g(t.foreground)?void 0:Xt(t.foreground),shadow:g(t.shadow)?void 0:qt(t.shadow),video:g(t.video)?void 0:se(t.video),audio:g(t.audio)?void 0:S(t.audio),effect:g(t.effect)?void 0:Kt(t.effect),children:(e=t.children)==null?void 0:e.map(n=>et(n))})}function Oe(t){return et(t)}o.RawWeakMap=wt,o.clearUndef=R,o.defaultColor=I,o.defineProperty=Bt,o.getDeclarations=U,o.getDefaultElementStyle=te,o.getDefaultHighlightStyle=ee,o.getDefaultInnerShadow=Z,o.getDefaultLayoutStyle=Jt,o.getDefaultListStyleStyle=ne,o.getDefaultOuterShadow=jt,o.getDefaultShadowStyle=Ut,o.getDefaultStyle=we,o.getDefaultTextInlineStyle=re,o.getDefaultTextLineStyle=ie,o.getDefaultTextStyle=oe,o.getDefaultTransformStyle=Qt,o.getNestedValue=bt,o.getObjectValueByPath=St,o.hasCRLF=Fe,o.isCRLF=tt,o.isColor=zt,o.isColorFill=It,o.isColorFillObject=Gt,o.isEqualStyle=ue,o.isGradient=V,o.isGradientFill=Pt,o.isGradientFillObject=Vt,o.isImageFill=Mt,o.isImageFillObject=At,o.isNone=g,o.isPresetFill=$t,o.isPresetFillObject=Tt,o.normalizeAudio=S,o.normalizeBackground=Ht,o.normalizeCRLF=ae,o.normalizeColor=b,o.normalizeColorFill=kt,o.normalizeDocument=Oe,o.normalizeEffect=Kt,o.normalizeElement=et,o.normalizeFill=N,o.normalizeForeground=Xt,o.normalizeGradient=Rt,o.normalizeGradientFill=Et,o.normalizeImageFill=Dt,o.normalizeInnerShadow=J,o.normalizeOuterShadow=xt,o.normalizeOutline=Yt,o.normalizePresetFill=Lt,o.normalizeShadow=qt,o.normalizeShape=Zt,o.normalizeSoftEdge=Ce,o.normalizeStyle=D,o.normalizeText=le,o.normalizeTextContent=P,o.normalizeVideo=se,o.parseColor=q,o.parseGradient=_t,o.pick=T,o.property=Se,o.round=O,o.setNestedValue=yt,o.setObjectValueByPath=Ct,o.stringifyGradient=ye,o.textContentToString=Ne,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
package/dist/index.mjs CHANGED
@@ -49,6 +49,87 @@ function pick(obj, keys) {
49
49
  return result;
50
50
  }
51
51
 
52
+ function getNestedValue(obj, path, fallback) {
53
+ const last = path.length - 1;
54
+ if (last < 0)
55
+ return obj === void 0 ? fallback : obj;
56
+ for (let i = 0; i < last; i++) {
57
+ if (obj == null) {
58
+ return fallback;
59
+ }
60
+ obj = obj[path[i]];
61
+ }
62
+ if (obj == null)
63
+ return fallback;
64
+ return obj[path[last]] === void 0 ? fallback : obj[path[last]];
65
+ }
66
+ function setNestedValue(obj, path, value) {
67
+ const last = path.length - 1;
68
+ for (let i = 0; i < last; i++) {
69
+ if (typeof obj[path[i]] !== "object")
70
+ obj[path[i]] = {};
71
+ obj = obj[path[i]];
72
+ }
73
+ obj[path[last]] = value;
74
+ }
75
+ function getObjectValueByPath(obj, path, fallback) {
76
+ if (obj == null || !path || typeof path !== "string")
77
+ return fallback;
78
+ if (obj[path] !== void 0)
79
+ return obj[path];
80
+ path = path.replace(/\[(\w+)\]/g, ".$1");
81
+ path = path.replace(/^\./, "");
82
+ return getNestedValue(obj, path.split("."), fallback);
83
+ }
84
+ function setObjectValueByPath(obj, path, value) {
85
+ if (typeof obj !== "object" || !path)
86
+ return;
87
+ path = path.replace(/\[(\w+)\]/g, ".$1");
88
+ path = path.replace(/^\./, "");
89
+ return setNestedValue(obj, path.split("."), value);
90
+ }
91
+
92
+ class RawWeakMap {
93
+ _map = /* @__PURE__ */ new WeakMap();
94
+ // fix: vue reactive object
95
+ _toRaw(value) {
96
+ if (value && typeof value === "object") {
97
+ const raw = value.__v_raw;
98
+ if (raw) {
99
+ value = this._toRaw(raw);
100
+ }
101
+ }
102
+ return value;
103
+ }
104
+ /**
105
+ * Removes the specified element from the WeakMap.
106
+ * @returns true if the element was successfully removed, or false if it was not present.
107
+ */
108
+ delete(key) {
109
+ return this._map.delete(this._toRaw(key));
110
+ }
111
+ /**
112
+ * @returns a specified element.
113
+ */
114
+ get(key) {
115
+ return this._map.get(this._toRaw(key));
116
+ }
117
+ /**
118
+ * @returns a boolean indicating whether an element with the specified key exists or not.
119
+ */
120
+ has(key) {
121
+ return this._map.has(this._toRaw(key));
122
+ }
123
+ /**
124
+ * Adds a new element with a specified key and value.
125
+ * @param key Must be an object or symbol.
126
+ */
127
+ set(key, value) {
128
+ this._map.set(this._toRaw(key), this._toRaw(value));
129
+ return this;
130
+ }
131
+ }
132
+
52
133
  function parseColor(color) {
53
134
  let input;
54
135
  if (typeof color === "number") {
@@ -807,47 +888,6 @@ function normalizeBackground(background) {
807
888
  }
808
889
  }
809
890
 
810
- class RawWeakMap {
811
- _map = /* @__PURE__ */ new WeakMap();
812
- // fix: vue reactive object
813
- _toRaw(value) {
814
- if (value && typeof value === "object") {
815
- const raw = value.__v_raw;
816
- if (raw) {
817
- value = this._toRaw(raw);
818
- }
819
- }
820
- return value;
821
- }
822
- /**
823
- * Removes the specified element from the WeakMap.
824
- * @returns true if the element was successfully removed, or false if it was not present.
825
- */
826
- delete(key) {
827
- return this._map.delete(this._toRaw(key));
828
- }
829
- /**
830
- * @returns a specified element.
831
- */
832
- get(key) {
833
- return this._map.get(this._toRaw(key));
834
- }
835
- /**
836
- * @returns a boolean indicating whether an element with the specified key exists or not.
837
- */
838
- has(key) {
839
- return this._map.has(this._toRaw(key));
840
- }
841
- /**
842
- * Adds a new element with a specified key and value.
843
- * @param key Must be an object or symbol.
844
- */
845
- set(key, value) {
846
- this._map.set(this._toRaw(key), this._toRaw(value));
847
- return this;
848
- }
849
- }
850
-
851
891
  const declarationMap = new RawWeakMap();
852
892
  function getDeclarations(constructor) {
853
893
  let declarations = declarationMap.get(constructor);
@@ -867,10 +907,18 @@ function defineProperty(constructor, key, declaration = {}) {
867
907
  const getDefaultValue = () => typeof defaultValue === "function" ? defaultValue() : defaultValue;
868
908
  const descriptor = Object.getOwnPropertyDescriptor(constructor.prototype, key) || {
869
909
  get() {
870
- return this[alias];
910
+ if (typeof alias === "string") {
911
+ return getObjectValueByPath(this, alias);
912
+ } else {
913
+ return this[alias];
914
+ }
871
915
  },
872
916
  set(v) {
873
- this[alias] = v;
917
+ if (typeof alias === "string") {
918
+ setObjectValueByPath(this, alias, v);
919
+ } else {
920
+ this[alias] = v;
921
+ }
874
922
  }
875
923
  };
876
924
  Object.defineProperty(constructor.prototype, key, {
@@ -1215,8 +1263,8 @@ function isEqualStyle(style1, style2) {
1215
1263
  }
1216
1264
  function normalizeTextContent(value) {
1217
1265
  const paragraphs = [];
1218
- function getParagraph() {
1219
- return paragraphs[paragraphs.length - 1] || addParagraph();
1266
+ function lastParagraph() {
1267
+ return paragraphs[paragraphs.length - 1];
1220
1268
  }
1221
1269
  function addParagraph(style = {}) {
1222
1270
  let paragraph = paragraphs[paragraphs.length - 1];
@@ -1232,7 +1280,7 @@ function normalizeTextContent(value) {
1232
1280
  function addFragment(content = "", style = {}) {
1233
1281
  Array.from(content).forEach((c) => {
1234
1282
  if (isCRLF(c)) {
1235
- const { fragments, ...pStyle } = getParagraph();
1283
+ const { fragments, ...pStyle } = lastParagraph() || addParagraph();
1236
1284
  if (!fragments.length) {
1237
1285
  fragments.push({
1238
1286
  ...style,
@@ -1241,7 +1289,7 @@ function normalizeTextContent(value) {
1241
1289
  }
1242
1290
  addParagraph(pStyle);
1243
1291
  } else {
1244
- const paragraph = getParagraph();
1292
+ const paragraph = lastParagraph() || addParagraph();
1245
1293
  const fragment = paragraph.fragments[paragraph.fragments.length - 1];
1246
1294
  if (fragment) {
1247
1295
  const { content: content2, ...fStyle } = fragment;
@@ -1287,8 +1335,11 @@ function normalizeTextContent(value) {
1287
1335
  console.warn("Failed to parse text content", p);
1288
1336
  }
1289
1337
  });
1290
- if (!getParagraph().fragments.length) {
1291
- addFragment(NORMALIZED_CRLF);
1338
+ const lastP = lastParagraph();
1339
+ if (lastP && !lastP.fragments.length) {
1340
+ lastP.fragments.push({
1341
+ content: NORMALIZED_CRLF
1342
+ });
1292
1343
  }
1293
1344
  return paragraphs;
1294
1345
  }
@@ -1350,4 +1401,4 @@ function normalizeDocument(doc) {
1350
1401
  return normalizeElement(doc);
1351
1402
  }
1352
1403
 
1353
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, round, stringifyGradient, textContentToString };
1404
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, hasCRLF, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, 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.6.14",
4
+ "version": "0.6.16",
5
5
  "packageManager": "pnpm@9.15.1",
6
6
  "description": "Intermediate document for modern codec libs",
7
7
  "author": "wxm",