modern-idoc 0.8.8 → 0.8.10

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
@@ -187,6 +187,40 @@ function setObjectValueByPath(obj, path, value) {
187
187
  return setNestedValue(obj, path.split("."), value);
188
188
  }
189
189
 
190
+ class Observable {
191
+ _observers = /* @__PURE__ */ new Map();
192
+ on(name, f) {
193
+ let set = this._observers.get(name);
194
+ if (set === void 0) {
195
+ this._observers.set(name, set = /* @__PURE__ */ new Set());
196
+ }
197
+ set.add(f);
198
+ return f;
199
+ }
200
+ once(name, f) {
201
+ const _f = (...args) => {
202
+ this.off(name, _f);
203
+ f(...args);
204
+ };
205
+ this.on(name, _f);
206
+ }
207
+ off(name, f) {
208
+ const observers = this._observers.get(name);
209
+ if (observers !== void 0) {
210
+ observers.delete(f);
211
+ if (observers.size === 0) {
212
+ this._observers.delete(name);
213
+ }
214
+ }
215
+ }
216
+ emit(name, ...args) {
217
+ return Array.from((this._observers.get(name) || /* @__PURE__ */ new Map()).values()).forEach((f) => f(...args));
218
+ }
219
+ destroy() {
220
+ this._observers = /* @__PURE__ */ new Map();
221
+ }
222
+ }
223
+
190
224
  class RawWeakMap {
191
225
  _map = /* @__PURE__ */ new WeakMap();
192
226
  // fix: vue reactive object
@@ -199,29 +233,15 @@ class RawWeakMap {
199
233
  }
200
234
  return value;
201
235
  }
202
- /**
203
- * Removes the specified element from the WeakMap.
204
- * @returns true if the element was successfully removed, or false if it was not present.
205
- */
206
236
  delete(key) {
207
237
  return this._map.delete(this._toRaw(key));
208
238
  }
209
- /**
210
- * @returns a specified element.
211
- */
212
239
  get(key) {
213
240
  return this._map.get(this._toRaw(key));
214
241
  }
215
- /**
216
- * @returns a boolean indicating whether an element with the specified key exists or not.
217
- */
218
242
  has(key) {
219
243
  return this._map.has(this._toRaw(key));
220
244
  }
221
- /**
222
- * Adds a new element with a specified key and value.
223
- * @param key Must be an object or symbol.
224
- */
225
245
  set(key, value) {
226
246
  this._map.set(this._toRaw(key), this._toRaw(value));
227
247
  return this;
@@ -1503,7 +1523,7 @@ function normalizeTextContent(value) {
1503
1523
  const lastP = lastParagraph();
1504
1524
  if (lastP && !lastP.fragments.length) {
1505
1525
  lastP.fragments.push({
1506
- content: NORMALIZED_CRLF
1526
+ content: ""
1507
1527
  });
1508
1528
  }
1509
1529
  return paragraphs;
@@ -1628,6 +1648,7 @@ function flatDocumentToDocument(flatDoc) {
1628
1648
  }
1629
1649
 
1630
1650
  exports.EventEmitter = EventEmitter;
1651
+ exports.Observable = Observable;
1631
1652
  exports.RawWeakMap = RawWeakMap;
1632
1653
  exports.clearUndef = clearUndef;
1633
1654
  exports.defaultColor = defaultColor;
package/dist/index.d.cts CHANGED
@@ -841,28 +841,25 @@ declare function setNestedValue(obj: any, path: (string | number)[], value: any)
841
841
  declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
842
842
  declare function setObjectValueByPath(obj: any, path: string, value: any): void;
843
843
 
844
+ declare class Observable<EVENTS extends {
845
+ [key in keyof EVENTS]: (...args: any[]) => void;
846
+ }> {
847
+ _observers: Map<string, Set<any>>;
848
+ on<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): EVENTS[NAME];
849
+ once<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
850
+ off<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
851
+ emit<NAME extends keyof EVENTS & string>(name: NAME, ...args: Parameters<EVENTS[NAME]>): void;
852
+ destroy(): void;
853
+ }
854
+
844
855
  declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
845
856
  protected _map: WeakMap<K, V>;
846
857
  protected _toRaw(value: any): any;
847
- /**
848
- * Removes the specified element from the WeakMap.
849
- * @returns true if the element was successfully removed, or false if it was not present.
850
- */
851
858
  delete(key: K): boolean;
852
- /**
853
- * @returns a specified element.
854
- */
855
859
  get(key: K): V | undefined;
856
- /**
857
- * @returns a boolean indicating whether an element with the specified key exists or not.
858
- */
859
860
  has(key: K): boolean;
860
- /**
861
- * Adds a new element with a specified key and value.
862
- * @param key Must be an object or symbol.
863
- */
864
861
  set(key: K, value: V): this;
865
862
  }
866
863
 
867
- export { EventEmitter, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
864
+ export { EventEmitter, Observable, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
868
865
  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, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectPropertyAccessorContext, 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
@@ -841,28 +841,25 @@ declare function setNestedValue(obj: any, path: (string | number)[], value: any)
841
841
  declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
842
842
  declare function setObjectValueByPath(obj: any, path: string, value: any): void;
843
843
 
844
+ declare class Observable<EVENTS extends {
845
+ [key in keyof EVENTS]: (...args: any[]) => void;
846
+ }> {
847
+ _observers: Map<string, Set<any>>;
848
+ on<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): EVENTS[NAME];
849
+ once<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
850
+ off<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
851
+ emit<NAME extends keyof EVENTS & string>(name: NAME, ...args: Parameters<EVENTS[NAME]>): void;
852
+ destroy(): void;
853
+ }
854
+
844
855
  declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
845
856
  protected _map: WeakMap<K, V>;
846
857
  protected _toRaw(value: any): any;
847
- /**
848
- * Removes the specified element from the WeakMap.
849
- * @returns true if the element was successfully removed, or false if it was not present.
850
- */
851
858
  delete(key: K): boolean;
852
- /**
853
- * @returns a specified element.
854
- */
855
859
  get(key: K): V | undefined;
856
- /**
857
- * @returns a boolean indicating whether an element with the specified key exists or not.
858
- */
859
860
  has(key: K): boolean;
860
- /**
861
- * Adds a new element with a specified key and value.
862
- * @param key Must be an object or symbol.
863
- */
864
861
  set(key: K, value: V): this;
865
862
  }
866
863
 
867
- export { EventEmitter, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
864
+ export { EventEmitter, Observable, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
868
865
  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, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectPropertyAccessorContext, 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
@@ -841,28 +841,25 @@ declare function setNestedValue(obj: any, path: (string | number)[], value: any)
841
841
  declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
842
842
  declare function setObjectValueByPath(obj: any, path: string, value: any): void;
843
843
 
844
+ declare class Observable<EVENTS extends {
845
+ [key in keyof EVENTS]: (...args: any[]) => void;
846
+ }> {
847
+ _observers: Map<string, Set<any>>;
848
+ on<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): EVENTS[NAME];
849
+ once<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
850
+ off<NAME extends keyof EVENTS & string>(name: NAME, f: EVENTS[NAME]): void;
851
+ emit<NAME extends keyof EVENTS & string>(name: NAME, ...args: Parameters<EVENTS[NAME]>): void;
852
+ destroy(): void;
853
+ }
854
+
844
855
  declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
845
856
  protected _map: WeakMap<K, V>;
846
857
  protected _toRaw(value: any): any;
847
- /**
848
- * Removes the specified element from the WeakMap.
849
- * @returns true if the element was successfully removed, or false if it was not present.
850
- */
851
858
  delete(key: K): boolean;
852
- /**
853
- * @returns a specified element.
854
- */
855
859
  get(key: K): V | undefined;
856
- /**
857
- * @returns a boolean indicating whether an element with the specified key exists or not.
858
- */
859
860
  has(key: K): boolean;
860
- /**
861
- * Adds a new element with a specified key and value.
862
- * @param key Must be an object or symbol.
863
- */
864
861
  set(key: K, value: V): this;
865
862
  }
866
863
 
867
- export { EventEmitter, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
864
+ export { EventEmitter, Observable, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
868
865
  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, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectPropertyAccessorContext, 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,G){typeof exports=="object"&&typeof module<"u"?G(exports):typeof define=="function"&&define.amd?define(["exports"],G):(o=typeof globalThis<"u"?globalThis:o||self,G(o.modernIdoc={}))})(this,(function(o){"use strict";function G(t){return typeof t=="string"?{src:t}:t}var ye={grad:.9,turn:360,rad:360/(2*Math.PI)},N=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},b=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},F=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},ht=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},vt=function(t){return{r:F(t.r,0,255),g:F(t.g,0,255),b:F(t.b,0,255),a:F(t.a)}},et=function(t){return{r:b(t.r),g:b(t.g),b:b(t.b),a:b(t.a,3)}},be=/^#([0-9a-f]{3,8})$/i,B=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},pt=function(t){var e=t.r,n=t.g,r=t.b,i=t.a,a=Math.max(e,n,r),u=a-Math.min(e,n,r),s=u?a===e?(n-r)/u:a===n?2+(r-e)/u:4+(e-n)/u:0;return{h:60*(s<0?s+6:s),s:a?u/a*100:0,v:a/255*100,a:i}},mt=function(t){var e=t.h,n=t.s,r=t.v,i=t.a;e=e/360*6,n/=100,r/=100;var a=Math.floor(e),u=r*(1-n),s=r*(1-(e-a)*n),f=r*(1-(1-e+a)*n),v=a%6;return{r:255*[r,s,u,u,f,r][v],g:255*[f,r,r,s,u,u][v],b:255*[u,u,f,r,r,s][v],a:i}},yt=function(t){return{h:ht(t.h),s:F(t.s,0,100),l:F(t.l,0,100),a:F(t.a)}},bt=function(t){return{h:b(t.h),s:b(t.s),l:b(t.l),a:b(t.a,3)}},St=function(t){return mt((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},j=function(t){return{h:(e=pt(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},Se=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ce=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,we=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_e=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ct={string:[[function(t){var e=be.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?b(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?b(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=we.exec(t)||_e.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:vt({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=Se.exec(t)||Ce.exec(t);if(!e)return null;var n,r,i=yt({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(ye[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return St(i)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,i=t.a,a=i===void 0?1:i;return N(e)&&N(n)&&N(r)?vt({r:Number(e),g:Number(n),b:Number(r),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,i=t.a,a=i===void 0?1:i;if(!N(e)||!N(n)||!N(r))return null;var u=yt({h:Number(e),s:Number(n),l:Number(r),a:Number(a)});return St(u)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,i=t.a,a=i===void 0?1:i;if(!N(e)||!N(n)||!N(r))return null;var u=(function(s){return{h:ht(s.h),s:F(s.s,0,100),v:F(s.v,0,100),a:F(s.a)}})({h:Number(e),s:Number(n),v:Number(r),a:Number(a)});return mt(u)},"hsv"]]},wt=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]},ze=function(t){return typeof t=="string"?wt(t.trim(),Ct.string):typeof t=="object"&&t!==null?wt(t,Ct.object):[null,void 0]},nt=function(t,e){var n=j(t);return{h:n.h,s:F(n.s+100*e,0,100),l:n.l,a:n.a}},rt=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},_t=function(t,e){var n=j(t);return{h:n.h,s:n.s,l:F(n.l+100*e,0,100),a:n.a}},zt=(function(){function t(e){this.parsed=ze(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 b(rt(this.rgba),2)},t.prototype.isDark=function(){return rt(this.rgba)<.5},t.prototype.isLight=function(){return rt(this.rgba)>=.5},t.prototype.toHex=function(){return e=et(this.rgba),n=e.r,r=e.g,i=e.b,u=(a=e.a)<1?B(b(255*a)):"","#"+B(n)+B(r)+B(i)+u;var e,n,r,i,a,u},t.prototype.toRgb=function(){return et(this.rgba)},t.prototype.toRgbString=function(){return e=et(this.rgba),n=e.r,r=e.g,i=e.b,(a=e.a)<1?"rgba("+n+", "+r+", "+i+", "+a+")":"rgb("+n+", "+r+", "+i+")";var e,n,r,i,a},t.prototype.toHsl=function(){return bt(j(this.rgba))},t.prototype.toHslString=function(){return e=bt(j(this.rgba)),n=e.h,r=e.s,i=e.l,(a=e.a)<1?"hsla("+n+", "+r+"%, "+i+"%, "+a+")":"hsl("+n+", "+r+"%, "+i+"%)";var e,n,r,i,a},t.prototype.toHsv=function(){return e=pt(this.rgba),{h:b(e.h),s:b(e.s),v:b(e.v),a:b(e.a,3)};var e},t.prototype.invert=function(){return D({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),D(nt(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),D(nt(this.rgba,-e))},t.prototype.grayscale=function(){return D(nt(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),D(_t(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),D(_t(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"?D({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):b(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=j(this.rgba);return typeof e=="number"?D({h:e,s:n.s,l:n.l,a:n.a}):b(n.h)},t.prototype.isEqual=function(e){return this.toHex()===D(e).toHex()},t})(),D=function(t){return t instanceof zt?t:new zt(t)};class Fe{eventListeners=new Map;addEventListener(e,n,r){const i={value:n,options:r},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,n,r){if(!n)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let u=0,s=i.length;u<s;u++){const f=i[u];(f.value!==n||typeof r=="object"&&r?.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===n&&(typeof r=="boolean"||!r?.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,...n){const r=this.eventListeners.get(e);if(r){if(Array.isArray(r))for(let i=r.length,a=0;a<i;a++){const u=r[a];typeof u.options=="object"&&u.options?.once&&this.off(e,u.value,u.options),u.value.apply(this,n)}else typeof r.options=="object"&&r.options?.once&&this.off(e,r.value,r.options),r.value.apply(this,n);return!0}else return!1}on(e,n,r){return this.addEventListener(e,n,r)}once(e,n){return this.addEventListener(e,n,{once:!0})}off(e,n,r){return this.removeEventListener(e,n,r)}emit(e,...n){this.dispatchEvent(e,...n)}}function h(t){return t==null||t==="none"}function R(t,e=0,n=10**e){return Math.round(n*t)/n+0}function w(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>w(r,e)):t;const n={};for(const r in t){const i=t[r];i!=null&&(e?n[r]=w(i,e):n[r]=i)}return n}function K(t,e){const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function x(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const n=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!n.length||n.every(r=>t[r]===e[r])}return!1}function Ft(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 Et(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 Lt(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(/^\./,""),Ft(t,e.split("."),n))}function Ot(t,e,n){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Et(t,e.split("."),n)}class Ee{_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 it(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,D(e)}function Le(t){return{r:R(t.r),g:R(t.g),b:R(t.b),a:R(t.a,3)}}function U(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const T="#000000FF";function Dt(t){return it(t).isValid()}function C(t,e=!1){const n=it(t);if(!n.isValid()){if(typeof t=="string")return t;const s=`Failed to normalizeColor ${t}`;if(e)throw new Error(s);return console.warn(s),T}const{r,g:i,b:a,a:u}=Le(n.rgba);return`#${U(r)}${U(i)}${U(a)}${U(R(u*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 n(l){const c=new Error(`${e}: ${l}`);throw c.source=e,c}function r(){const l=i();return e.length>0&&n("Invalid input not EOF"),l}function i(){return V(a)}function a(){return u("linear-gradient",t.linearGradient,f)||u("repeating-linear-gradient",t.repeatingLinearGradient,f)||u("radial-gradient",t.radialGradient,d)||u("repeating-radial-gradient",t.repeatingRadialGradient,d)}function u(l,c,g){return s(c,S=>{const A=g();return A&&(y(t.comma)||n("Missing comma before color stops")),{type:l,orientation:A,colorStops:V(dt)}})}function s(l,c){const g=y(l);if(g){y(t.startCall)||n("Missing (");const S=c(g);return y(t.endCall)||n("Missing )"),S}}function f(){const l=v();if(l)return l;const c=z("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:p()}function v(){return z("directional",t.sideOrCorner,1)}function p(){return z("angular",t.angleValue,1)||z("angular",t.radianValue,1)}function d(){let l,c=m(),g;return c&&(l=[],l.push(c),g=e,y(t.comma)&&(c=m(),c?l.push(c):e=g)),l}function m(){let l=_()||I();if(l)l.at=O();else{const c=E();if(c){l=c;const g=O();g&&(l.at=g)}else{const g=O();if(g)l={type:"default-radial",at:g};else{const S=k();S&&(l={type:"default-radial",at:S})}}}return l}function _(){const l=z("shape",/^(circle)/i,0);return l&&(l.style=me()||E()),l}function I(){const l=z("shape",/^(ellipse)/i,0);return l&&(l.style=k()||tt()||E()),l}function E(){return z("extent-keyword",t.extentKeywords,1)}function O(){if(z("position",/^at/,0)){const l=k();return l||n("Missing positioning value"),l}}function k(){const l=H();if(l.x||l.y)return{type:"position",value:l}}function H(){return{x:tt(),y:tt()}}function V(l){let c=l();const g=[];if(c)for(g.push(c);y(t.comma);)c=l(),c?g.push(c):n("One extra comma");return g}function dt(){const l=He();return l||n("Expected color definition"),l.length=tt(),l}function He(){return Be()||Ye()||Xe()||xe()||Ke()||Ue()||We()}function We(){return z("literal",t.literalColor,0)}function Be(){return z("hex",t.hexColor,1)}function Ke(){return s(t.rgbColor,()=>({type:"rgb",value:V(W)}))}function xe(){return s(t.rgbaColor,()=>({type:"rgba",value:V(W)}))}function Ue(){return s(t.varColor,()=>({type:"var",value:qe()}))}function Xe(){return s(t.hslColor,()=>{y(t.percentageValue)&&n("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=W();y(t.comma);let g=y(t.percentageValue);const S=g?g[1]:null;y(t.comma),g=y(t.percentageValue);const A=g?g[1]:null;return(!S||!A)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,S,A]}})}function Ye(){return s(t.hslaColor,()=>{const l=W();y(t.comma);let c=y(t.percentageValue);const g=c?c[1]:null;y(t.comma),c=y(t.percentageValue);const S=c?c[1]:null;y(t.comma);const A=W();return(!g||!S)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[l,g,S,A]}})}function qe(){return y(t.variableName)[1]}function W(){return y(t.number)[1]}function tt(){return z("%",t.percentageValue,1)||Ze()||Je()||me()}function Ze(){return z("position-keyword",t.positionKeywords,1)}function Je(){return s(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&&n("Missing closing parenthesis in calc() expression");const g=e.substring(0,c-1);return gt(c-1),{type:"calc",value:g}})}function me(){return z("px",t.pixelValue,1)||z("em",t.emValue,1)}function z(l,c,g){const S=y(c);if(S)return{type:l,value:S[g]}}function y(l){let c,g;return g=/^\s+/.exec(e),g&&gt(g[0].length),c=l.exec(e),c&&gt(c[0].length),c}function gt(l){e=e.substr(l)}return function(l){return e=l.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}})();const Nt=X.parse.bind(X);var Y=Y||{};Y.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,a){n+=t.visit(i),a<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 Oe=Y.stringify.bind(Y);function Rt(t){const e=t.length-1;return t.map((n,r)=>{const i=n.value;let a=R(r/e,3),u="#00000000";switch(n.type){case"rgb":u=C({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":u=C({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":u=C(n.value);break;case"hex":u=C(`#${n.value}`);break}switch(n.length?.type){case"%":a=Number(n.length.value)/100;break}return{offset:a,color:u}})}function It(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Rt(t.colorStops)}}function kt(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Rt(t.colorStops)}}function M(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function At(t){return Nt(t).map(e=>{switch(e?.type){case"linear-gradient":return It(e);case"repeating-linear-gradient":return{...It(e),repeat:!0};case"radial-gradient":return kt(e);case"repeating-radial-gradient":return{...kt(e),repeat:!0};default:return}}).filter(Boolean)}function Gt(t){let e;return typeof t=="string"?e={color:t}:e=t,{color:C(e.color)}}function Pt(t){let e;if(typeof t=="string"?e={image:t}:e=t,e.image){const{type:n,...r}=At(e.image)[0]??{};switch(n){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return e}function Vt(t){let e;return typeof t=="string"?e={image:t}:e=t,e}function jt(t){let e;return typeof t=="string"?e={preset:t}:e=t,{preset:e.preset,foregroundColor:h(e.foregroundColor)?void 0:C(e.foregroundColor),backgroundColor:h(e.backgroundColor)?void 0:C(e.backgroundColor)}}function Tt(t){return!h(t.color)}function Mt(t){return typeof t=="string"?Dt(t):Tt(t)}function $t(t){return!h(t.image)&&M(t.image)||!!t.linearGradient||!!t.radialGradient}function Ht(t){return typeof t=="string"?M(t):$t(t)}function Wt(t){return!h(t.image)&&!M(t.image)}function Bt(t){return typeof t=="string"?!M(t):Wt(t)}function Kt(t){return!h(t.preset)}function xt(t){return typeof t=="string"?!1:Kt(t)}function L(t){const e=t&&typeof t=="object"?t.enabled:void 0;return Mt(t)?w({enabled:e,...Gt(t)}):Ht(t)?w({enabled:e,...Pt(t)}):Bt(t)?w({enabled:e,...Vt(t)}):xt(t)?w({enabled:e,...jt(t)}):{}}function Ut(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["fillWithShape"])}}const ot=Symbol("properties"),Xt=Symbol("defaultValueInited");function q(t){let e;if(Object.hasOwn(t,ot))e=t[ot];else{const n=Object.getPrototypeOf(t);e=new Map(n?q(n):void 0),t[ot]=e}return e}function at(t,e={}){const n=Symbol.for(t),{default:r,fallback:i,alias:a}=e,u={declaration:e,internalKey:n},s=()=>typeof r=="function"?r():r,f=()=>typeof i=="function"?i():i;function v(){let d;if(a&&a!==t?d=Lt(this,a):typeof this.getter<"u"?d=this.getter(t,u):d=this[n],d=d??f(),d===void 0&&r!==void 0&&!this[Xt]){this[Xt]=!0;const m=s();m!==void 0&&(p.call(this,m),d=m)}return d}function p(d){a&&a!==t?Ot(this,a,d):typeof this.setter<"u"?this.setter(t,d,u):this[n]=d}return{get:v,set:p}}function Yt(t,e,n={}){q(t).set(e,n);const r=at(e,n);Object.defineProperty(t.prototype,e,{get(){return r.get.call(this)},set(i){const a=r.get.call(this);r.set.call(this,i),this.onUpdateProperty?.(e,i,a,n)},configurable:!0,enumerable:!0})}function De(t){return function(e,n){if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Yt(e.constructor,n,t)}}function Ne(t={}){return function(e,n){const r=n.name;if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i=at(r,t);return{init(a){return q(this.constructor).set(r,t),i.set.call(this,a),a},get(){return i.get.call(this)},set(a){const u=i.get?.call(this);i.set.call(this,a),this.onUpdateProperty?.(r,a,u,t)}}}}function lt(){return{color:T,offsetX:0,offsetY:0,blurRadius:1}}function ut(t){return{...lt(),...w({...t,color:h(t.color)?T:C(t.color)})}}function qt(){return{...lt(),scaleX:1,scaleY:1}}function Zt(t){return{...qt(),...ut(t)}}function Re(t){return t}function Jt(t){return w({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:Zt(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:ut(t.innerShadow)})}function Qt(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["fillWithShape"])}}const Ie="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let ke=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=Ie[n[t]&63];return e};const te=()=>ke(10),ee=te;function $(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function ne(t){return typeof t=="string"?{color:C(t)}:{...t,color:h(t.color)?T:C(t.color)}}function re(){return{boxShadow:"none"}}function ie(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 oe(){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 ae(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function le(){return{...oe(),...ae(),...re(),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 ue(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function se(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ce(){return{...ue(),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 fe(){return{...se(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function de(){return{...fe(),...ce(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function P(t){return w({...t,color:h(t.color)?void 0:C(t.color),backgroundColor:h(t.backgroundColor)?void 0:C(t.backgroundColor),borderColor:h(t.borderColor)?void 0:C(t.borderColor),outlineColor:h(t.outlineColor)?void 0:C(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:C(t.shadowColor)})}function Ae(){return{...le(),...de()}}const st=/\r\n|\n\r|\n|\r/,Ge=new RegExp(`${st.source}|<br\\/>`,"g"),Pe=new RegExp(`^(${st.source})$`),Z=`
2
- `;function Ve(t){return st.test(t)}function ct(t){return Pe.test(t)}function ge(t){return t.replace(Ge,Z)}function J(t){const e=[];function n(){return e[e.length-1]}function r(s,f,v){const p=s?P(s):{},d=f?L(f):void 0,m=v?$(v):void 0,_=w({...p,fill:d,outline:m,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=_:e.push(_),_}function i(s="",f,v,p){const d=f?P(f):{},m=v?L(v):void 0,_=p?$(p):void 0;Array.from(s).forEach(I=>{if(ct(I)){const{fragments:E,fill:O,outline:k,...H}=n()||r();E.length||E.push(w({...d,fill:m,outline:_,content:Z})),r(H,O,k)}else{const E=n()||r(),O=E.fragments[E.fragments.length-1];if(O){const{content:k,fill:H,outline:V,...dt}=O;if(x(m,H)&&x(_,V)&&x(d,dt)){O.content=`${k}${I}`;return}}E.fragments.push(w({...d,fill:m,outline:_,content:I}))}})}(Array.isArray(t)?t:[t]).forEach(s=>{if(typeof s=="string")r(),i(s);else if(ft(s)){const{content:f,fill:v,outline:p,...d}=s;r(d,v,p),i(f)}else if(he(s)){const{fragments:f,fill:v,outline:p,...d}=s;r(d,v,p),f.forEach(m=>{const{content:_,fill:I,outline:E,...O}=m;i(_,O,I,E)})}else Array.isArray(s)?(r(),s.forEach(f=>{if(typeof f=="string")i(f);else if(ft(f)){const{content:v,fill:p,outline:d,...m}=f;i(v,m,p,d)}})):console.warn("Failed to parse text content",s)});const u=n();return u&&!u.fragments.length&&u.fragments.push({content:Z}),e}function he(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function ft(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function ve(t){return typeof t=="string"||Array.isArray(t)?{content:J(t)}:w({...t,content:J(t.content??""),style:t.style?P(t.style):void 0,effects:t.effects?t.effects.map(e=>P(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?L(t.fill):void 0,outline:t.outline?$(t.outline):void 0})}function je(t){return J(t).map(e=>{const n=ge(e.fragments.flatMap(r=>r.content).join(""));return ct(n)?"":n}).join(Z)}function pe(t){return typeof t=="string"?{src:t}:t}function Q(t){return w({...t,id:t.id??ee(),style:h(t.style)?void 0:P(t.style),text:h(t.text)?void 0:ve(t.text),background:h(t.background)?void 0:Ut(t.background),shape:h(t.shape)?void 0:ie(t.shape),fill:h(t.fill)?void 0:L(t.fill),outline:h(t.outline)?void 0:$(t.outline),foreground:h(t.foreground)?void 0:Qt(t.foreground),shadow:h(t.shadow)?void 0:ne(t.shadow),video:h(t.video)?void 0:pe(t.video),audio:h(t.audio)?void 0:G(t.audio),effect:h(t.effect)?void 0:Jt(t.effect),children:t.children?.map(e=>Q(e))})}function Te(t){return Q(t)}function Me(t){const e={};for(const n in t.children){const r=Q(t.children[n]);delete r.children,e[n]=r}return{...t,children:e}}function $e(t){const{children:e,...n}=t;function r(f){const{parentId:v,childrenIds:p,...d}=f;return{...d,children:[]}}const i={},a=[],u={...n,children:a};function s(f){if(!e[f]||i[f])return;const v=e[f],p=r(v);i[f]=p;const d=v.parentId;if(d){s(d);const m=e[d],_=i[d];if(!_)return;m?.childrenIds&&_?.children&&(_.children[m.childrenIds.indexOf(f)]=p)}else a.push(p)}for(const f in e)s(f);return u}o.EventEmitter=Fe,o.RawWeakMap=Ee,o.clearUndef=w,o.defaultColor=T,o.defineProperty=Yt,o.flatDocumentToDocument=$e,o.getDeclarations=q,o.getDefaultElementStyle=le,o.getDefaultHighlightStyle=ue,o.getDefaultInnerShadow=lt,o.getDefaultLayoutStyle=oe,o.getDefaultListStyleStyle=se,o.getDefaultOuterShadow=qt,o.getDefaultShadowStyle=re,o.getDefaultStyle=Ae,o.getDefaultTextInlineStyle=ce,o.getDefaultTextLineStyle=fe,o.getDefaultTextStyle=de,o.getDefaultTransformStyle=ae,o.getNestedValue=Ft,o.getObjectValueByPath=Lt,o.getPropertyDescriptor=at,o.hasCRLF=Ve,o.idGenerator=ee,o.isCRLF=ct,o.isColor=Dt,o.isColorFill=Mt,o.isColorFillObject=Tt,o.isEqualObject=x,o.isFragmentObject=ft,o.isGradient=M,o.isGradientFill=Ht,o.isGradientFillObject=$t,o.isImageFill=Bt,o.isImageFillObject=Wt,o.isNone=h,o.isParagraphObject=he,o.isPresetFill=xt,o.isPresetFillObject=Kt,o.nanoid=te,o.normalizeAudio=G,o.normalizeBackground=Ut,o.normalizeCRLF=ge,o.normalizeColor=C,o.normalizeColorFill=Gt,o.normalizeDocument=Te,o.normalizeEffect=Jt,o.normalizeElement=Q,o.normalizeFill=L,o.normalizeFlatDocument=Me,o.normalizeForeground=Qt,o.normalizeGradient=At,o.normalizeGradientFill=Pt,o.normalizeImageFill=Vt,o.normalizeInnerShadow=ut,o.normalizeOuterShadow=Zt,o.normalizeOutline=$,o.normalizePresetFill=jt,o.normalizeShadow=ne,o.normalizeShape=ie,o.normalizeSoftEdge=Re,o.normalizeStyle=P,o.normalizeText=ve,o.normalizeTextContent=J,o.normalizeVideo=pe,o.parseColor=it,o.parseGradient=Nt,o.pick=K,o.property=De,o.property2=Ne,o.round=R,o.setNestedValue=Et,o.setObjectValueByPath=Ot,o.stringifyGradient=Oe,o.textContentToString=je,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(o,G){typeof exports=="object"&&typeof module<"u"?G(exports):typeof define=="function"&&define.amd?define(["exports"],G):(o=typeof globalThis<"u"?globalThis:o||self,G(o.modernIdoc={}))})(this,(function(o){"use strict";function G(t){return typeof t=="string"?{src:t}:t}var ye={grad:.9,turn:360,rad:360/(2*Math.PI)},N=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},b=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},E=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},ht=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},vt=function(t){return{r:E(t.r,0,255),g:E(t.g,0,255),b:E(t.b,0,255),a:E(t.a)}},tt=function(t){return{r:b(t.r),g:b(t.g),b:b(t.b),a:b(t.a,3)}},be=/^#([0-9a-f]{3,8})$/i,B=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},pt=function(t){var e=t.r,n=t.g,r=t.b,i=t.a,a=Math.max(e,n,r),l=a-Math.min(e,n,r),u=l?a===e?(n-r)/l:a===n?2+(r-e)/l:4+(e-n)/l:0;return{h:60*(u<0?u+6:u),s:a?l/a*100:0,v:a/255*100,a:i}},mt=function(t){var e=t.h,n=t.s,r=t.v,i=t.a;e=e/360*6,n/=100,r/=100;var a=Math.floor(e),l=r*(1-n),u=r*(1-(e-a)*n),f=r*(1-(1-e+a)*n),v=a%6;return{r:255*[r,u,l,l,f,r][v],g:255*[f,r,r,u,l,l][v],b:255*[l,l,f,r,r,u][v],a:i}},yt=function(t){return{h:ht(t.h),s:E(t.s,0,100),l:E(t.l,0,100),a:E(t.a)}},bt=function(t){return{h:b(t.h),s:b(t.s),l:b(t.l),a:b(t.a,3)}},St=function(t){return mt((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},j=function(t){return{h:(e=pt(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},Se=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ce=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,we=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_e=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ct={string:[[function(t){var e=be.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?b(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?b(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=we.exec(t)||_e.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:vt({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=Se.exec(t)||Ce.exec(t);if(!e)return null;var n,r,i=yt({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(ye[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return St(i)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,i=t.a,a=i===void 0?1:i;return N(e)&&N(n)&&N(r)?vt({r:Number(e),g:Number(n),b:Number(r),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,i=t.a,a=i===void 0?1:i;if(!N(e)||!N(n)||!N(r))return null;var l=yt({h:Number(e),s:Number(n),l:Number(r),a:Number(a)});return St(l)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,i=t.a,a=i===void 0?1:i;if(!N(e)||!N(n)||!N(r))return null;var l=(function(u){return{h:ht(u.h),s:E(u.s,0,100),v:E(u.v,0,100),a:E(u.a)}})({h:Number(e),s:Number(n),v:Number(r),a:Number(a)});return mt(l)},"hsv"]]},wt=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]},ze=function(t){return typeof t=="string"?wt(t.trim(),Ct.string):typeof t=="object"&&t!==null?wt(t,Ct.object):[null,void 0]},et=function(t,e){var n=j(t);return{h:n.h,s:E(n.s+100*e,0,100),l:n.l,a:n.a}},nt=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},_t=function(t,e){var n=j(t);return{h:n.h,s:n.s,l:E(n.l+100*e,0,100),a:n.a}},zt=(function(){function t(e){this.parsed=ze(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 b(nt(this.rgba),2)},t.prototype.isDark=function(){return nt(this.rgba)<.5},t.prototype.isLight=function(){return nt(this.rgba)>=.5},t.prototype.toHex=function(){return e=tt(this.rgba),n=e.r,r=e.g,i=e.b,l=(a=e.a)<1?B(b(255*a)):"","#"+B(n)+B(r)+B(i)+l;var e,n,r,i,a,l},t.prototype.toRgb=function(){return tt(this.rgba)},t.prototype.toRgbString=function(){return e=tt(this.rgba),n=e.r,r=e.g,i=e.b,(a=e.a)<1?"rgba("+n+", "+r+", "+i+", "+a+")":"rgb("+n+", "+r+", "+i+")";var e,n,r,i,a},t.prototype.toHsl=function(){return bt(j(this.rgba))},t.prototype.toHslString=function(){return e=bt(j(this.rgba)),n=e.h,r=e.s,i=e.l,(a=e.a)<1?"hsla("+n+", "+r+"%, "+i+"%, "+a+")":"hsl("+n+", "+r+"%, "+i+"%)";var e,n,r,i,a},t.prototype.toHsv=function(){return e=pt(this.rgba),{h:b(e.h),s:b(e.s),v:b(e.v),a:b(e.a,3)};var e},t.prototype.invert=function(){return D({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),D(et(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),D(et(this.rgba,-e))},t.prototype.grayscale=function(){return D(et(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),D(_t(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),D(_t(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"?D({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):b(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=j(this.rgba);return typeof e=="number"?D({h:e,s:n.s,l:n.l,a:n.a}):b(n.h)},t.prototype.isEqual=function(e){return this.toHex()===D(e).toHex()},t})(),D=function(t){return t instanceof zt?t:new zt(t)};class Ee{eventListeners=new Map;addEventListener(e,n,r){const i={value:n,options:r},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,n,r){if(!n)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let l=0,u=i.length;l<u;l++){const f=i[l];(f.value!==n||typeof r=="object"&&r?.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===n&&(typeof r=="boolean"||!r?.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,...n){const r=this.eventListeners.get(e);if(r){if(Array.isArray(r))for(let i=r.length,a=0;a<i;a++){const l=r[a];typeof l.options=="object"&&l.options?.once&&this.off(e,l.value,l.options),l.value.apply(this,n)}else typeof r.options=="object"&&r.options?.once&&this.off(e,r.value,r.options),r.value.apply(this,n);return!0}else return!1}on(e,n,r){return this.addEventListener(e,n,r)}once(e,n){return this.addEventListener(e,n,{once:!0})}off(e,n,r){return this.removeEventListener(e,n,r)}emit(e,...n){this.dispatchEvent(e,...n)}}function h(t){return t==null||t==="none"}function R(t,e=0,n=10**e){return Math.round(n*t)/n+0}function w(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>w(r,e)):t;const n={};for(const r in t){const i=t[r];i!=null&&(e?n[r]=w(i,e):n[r]=i)}return n}function K(t,e){const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function x(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const n=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!n.length||n.every(r=>t[r]===e[r])}return!1}function Et(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 Ft(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 Lt(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(/^\./,""),Et(t,e.split("."),n))}function Ot(t,e,n){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Ft(t,e.split("."),n)}class Fe{_observers=new Map;on(e,n){let r=this._observers.get(e);return r===void 0&&this._observers.set(e,r=new Set),r.add(n),n}once(e,n){const r=(...i)=>{this.off(e,r),n(...i)};this.on(e,r)}off(e,n){const r=this._observers.get(e);r!==void 0&&(r.delete(n),r.size===0&&this._observers.delete(e))}emit(e,...n){return Array.from((this._observers.get(e)||new Map).values()).forEach(r=>r(...n))}destroy(){this._observers=new Map}}class Le{_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 rt(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,D(e)}function Oe(t){return{r:R(t.r),g:R(t.g),b:R(t.b),a:R(t.a,3)}}function U(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const M="#000000FF";function Dt(t){return rt(t).isValid()}function C(t,e=!1){const n=rt(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),M}const{r,g:i,b:a,a:l}=Oe(n.rgba);return`#${U(r)}${U(i)}${U(a)}${U(R(l*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 n(s){const c=new Error(`${e}: ${s}`);throw c.source=e,c}function r(){const s=i();return e.length>0&&n("Invalid input not EOF"),s}function i(){return V(a)}function a(){return l("linear-gradient",t.linearGradient,f)||l("repeating-linear-gradient",t.repeatingLinearGradient,f)||l("radial-gradient",t.radialGradient,d)||l("repeating-radial-gradient",t.repeatingRadialGradient,d)}function l(s,c,g){return u(c,S=>{const A=g();return A&&(y(t.comma)||n("Missing comma before color stops")),{type:s,orientation:A,colorStops:V(dt)}})}function u(s,c){const g=y(s);if(g){y(t.startCall)||n("Missing (");const S=c(g);return y(t.endCall)||n("Missing )"),S}}function f(){const s=v();if(s)return s;const c=z("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:p()}function v(){return z("directional",t.sideOrCorner,1)}function p(){return z("angular",t.angleValue,1)||z("angular",t.radianValue,1)}function d(){let s,c=m(),g;return c&&(s=[],s.push(c),g=e,y(t.comma)&&(c=m(),c?s.push(c):e=g)),s}function m(){let s=_()||I();if(s)s.at=O();else{const c=F();if(c){s=c;const g=O();g&&(s.at=g)}else{const g=O();if(g)s={type:"default-radial",at:g};else{const S=k();S&&(s={type:"default-radial",at:S})}}}return s}function _(){const s=z("shape",/^(circle)/i,0);return s&&(s.style=me()||F()),s}function I(){const s=z("shape",/^(ellipse)/i,0);return s&&(s.style=k()||Q()||F()),s}function F(){return z("extent-keyword",t.extentKeywords,1)}function O(){if(z("position",/^at/,0)){const s=k();return s||n("Missing positioning value"),s}}function k(){const s=H();if(s.x||s.y)return{type:"position",value:s}}function H(){return{x:Q(),y:Q()}}function V(s){let c=s();const g=[];if(c)for(g.push(c);y(t.comma);)c=s(),c?g.push(c):n("One extra comma");return g}function dt(){const s=We();return s||n("Expected color definition"),s.length=Q(),s}function We(){return Ke()||qe()||Ye()||Ue()||xe()||Xe()||Be()}function Be(){return z("literal",t.literalColor,0)}function Ke(){return z("hex",t.hexColor,1)}function xe(){return u(t.rgbColor,()=>({type:"rgb",value:V(W)}))}function Ue(){return u(t.rgbaColor,()=>({type:"rgba",value:V(W)}))}function Xe(){return u(t.varColor,()=>({type:"var",value:Ze()}))}function Ye(){return u(t.hslColor,()=>{y(t.percentageValue)&&n("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=W();y(t.comma);let g=y(t.percentageValue);const S=g?g[1]:null;y(t.comma),g=y(t.percentageValue);const A=g?g[1]:null;return(!S||!A)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,S,A]}})}function qe(){return u(t.hslaColor,()=>{const s=W();y(t.comma);let c=y(t.percentageValue);const g=c?c[1]:null;y(t.comma),c=y(t.percentageValue);const S=c?c[1]:null;y(t.comma);const A=W();return(!g||!S)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[s,g,S,A]}})}function Ze(){return y(t.variableName)[1]}function W(){return y(t.number)[1]}function Q(){return z("%",t.percentageValue,1)||Je()||Qe()||me()}function Je(){return z("position-keyword",t.positionKeywords,1)}function Qe(){return u(t.calcValue,()=>{let s=1,c=0;for(;s>0&&c<e.length;){const S=e.charAt(c);S==="("?s++:S===")"&&s--,c++}s>0&&n("Missing closing parenthesis in calc() expression");const g=e.substring(0,c-1);return gt(c-1),{type:"calc",value:g}})}function me(){return z("px",t.pixelValue,1)||z("em",t.emValue,1)}function z(s,c,g){const S=y(c);if(S)return{type:s,value:S[g]}}function y(s){let c,g;return g=/^\s+/.exec(e),g&&gt(g[0].length),c=s.exec(e),c&&gt(c[0].length),c}function gt(s){e=e.substr(s)}return function(s){return e=s.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}})();const Nt=X.parse.bind(X);var Y=Y||{};Y.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,a){n+=t.visit(i),a<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 De=Y.stringify.bind(Y);function Rt(t){const e=t.length-1;return t.map((n,r)=>{const i=n.value;let a=R(r/e,3),l="#00000000";switch(n.type){case"rgb":l=C({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":l=C({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":l=C(n.value);break;case"hex":l=C(`#${n.value}`);break}switch(n.length?.type){case"%":a=Number(n.length.value)/100;break}return{offset:a,color:l}})}function It(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Rt(t.colorStops)}}function kt(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Rt(t.colorStops)}}function T(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function At(t){return Nt(t).map(e=>{switch(e?.type){case"linear-gradient":return It(e);case"repeating-linear-gradient":return{...It(e),repeat:!0};case"radial-gradient":return kt(e);case"repeating-radial-gradient":return{...kt(e),repeat:!0};default:return}}).filter(Boolean)}function Gt(t){let e;return typeof t=="string"?e={color:t}:e=t,{color:C(e.color)}}function Pt(t){let e;if(typeof t=="string"?e={image:t}:e=t,e.image){const{type:n,...r}=At(e.image)[0]??{};switch(n){case"radial-gradient":return{radialGradient:r};case"linear-gradient":return{linearGradient:r}}}return e}function Vt(t){let e;return typeof t=="string"?e={image:t}:e=t,e}function jt(t){let e;return typeof t=="string"?e={preset:t}:e=t,{preset:e.preset,foregroundColor:h(e.foregroundColor)?void 0:C(e.foregroundColor),backgroundColor:h(e.backgroundColor)?void 0:C(e.backgroundColor)}}function Mt(t){return!h(t.color)}function Tt(t){return typeof t=="string"?Dt(t):Mt(t)}function $t(t){return!h(t.image)&&T(t.image)||!!t.linearGradient||!!t.radialGradient}function Ht(t){return typeof t=="string"?T(t):$t(t)}function Wt(t){return!h(t.image)&&!T(t.image)}function Bt(t){return typeof t=="string"?!T(t):Wt(t)}function Kt(t){return!h(t.preset)}function xt(t){return typeof t=="string"?!1:Kt(t)}function L(t){const e=t&&typeof t=="object"?t.enabled:void 0;return Tt(t)?w({enabled:e,...Gt(t)}):Ht(t)?w({enabled:e,...Pt(t)}):Bt(t)?w({enabled:e,...Vt(t)}):xt(t)?w({enabled:e,...jt(t)}):{}}function Ut(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["fillWithShape"])}}const it=Symbol("properties"),Xt=Symbol("defaultValueInited");function q(t){let e;if(Object.hasOwn(t,it))e=t[it];else{const n=Object.getPrototypeOf(t);e=new Map(n?q(n):void 0),t[it]=e}return e}function ot(t,e={}){const n=Symbol.for(t),{default:r,fallback:i,alias:a}=e,l={declaration:e,internalKey:n},u=()=>typeof r=="function"?r():r,f=()=>typeof i=="function"?i():i;function v(){let d;if(a&&a!==t?d=Lt(this,a):typeof this.getter<"u"?d=this.getter(t,l):d=this[n],d=d??f(),d===void 0&&r!==void 0&&!this[Xt]){this[Xt]=!0;const m=u();m!==void 0&&(p.call(this,m),d=m)}return d}function p(d){a&&a!==t?Ot(this,a,d):typeof this.setter<"u"?this.setter(t,d,l):this[n]=d}return{get:v,set:p}}function Yt(t,e,n={}){q(t).set(e,n);const r=ot(e,n);Object.defineProperty(t.prototype,e,{get(){return r.get.call(this)},set(i){const a=r.get.call(this);r.set.call(this,i),this.onUpdateProperty?.(e,i,a,n)},configurable:!0,enumerable:!0})}function Ne(t){return function(e,n){if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Yt(e.constructor,n,t)}}function Re(t={}){return function(e,n){const r=n.name;if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i=ot(r,t);return{init(a){return q(this.constructor).set(r,t),i.set.call(this,a),a},get(){return i.get.call(this)},set(a){const l=i.get?.call(this);i.set.call(this,a),this.onUpdateProperty?.(r,a,l,t)}}}}function at(){return{color:M,offsetX:0,offsetY:0,blurRadius:1}}function st(t){return{...at(),...w({...t,color:h(t.color)?M:C(t.color)})}}function qt(){return{...at(),scaleX:1,scaleY:1}}function Zt(t){return{...qt(),...st(t)}}function Ie(t){return t}function Jt(t){return w({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:Zt(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:st(t.innerShadow)})}function Qt(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["fillWithShape"])}}const ke="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let Ae=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=ke[n[t]&63];return e};const te=()=>Ae(10),ee=te;function $(t){return typeof t=="string"?{...L(t)}:{...L(t),...K(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function ne(t){return typeof t=="string"?{color:C(t)}:{...t,color:h(t.color)?M:C(t.color)}}function re(){return{boxShadow:"none"}}function ie(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 oe(){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 ae(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function se(){return{...oe(),...ae(),...re(),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 le(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function ue(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ce(){return{...le(),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 fe(){return{...ue(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function de(){return{...fe(),...ce(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function P(t){return w({...t,color:h(t.color)?void 0:C(t.color),backgroundColor:h(t.backgroundColor)?void 0:C(t.backgroundColor),borderColor:h(t.borderColor)?void 0:C(t.borderColor),outlineColor:h(t.outlineColor)?void 0:C(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:C(t.shadowColor)})}function Ge(){return{...se(),...de()}}const lt=/\r\n|\n\r|\n|\r/,Pe=new RegExp(`${lt.source}|<br\\/>`,"g"),Ve=new RegExp(`^(${lt.source})$`),ut=`
2
+ `;function je(t){return lt.test(t)}function ct(t){return Ve.test(t)}function ge(t){return t.replace(Pe,ut)}function Z(t){const e=[];function n(){return e[e.length-1]}function r(u,f,v){const p=u?P(u):{},d=f?L(f):void 0,m=v?$(v):void 0,_=w({...p,fill:d,outline:m,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=_:e.push(_),_}function i(u="",f,v,p){const d=f?P(f):{},m=v?L(v):void 0,_=p?$(p):void 0;Array.from(u).forEach(I=>{if(ct(I)){const{fragments:F,fill:O,outline:k,...H}=n()||r();F.length||F.push(w({...d,fill:m,outline:_,content:ut})),r(H,O,k)}else{const F=n()||r(),O=F.fragments[F.fragments.length-1];if(O){const{content:k,fill:H,outline:V,...dt}=O;if(x(m,H)&&x(_,V)&&x(d,dt)){O.content=`${k}${I}`;return}}F.fragments.push(w({...d,fill:m,outline:_,content:I}))}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")r(),i(u);else if(ft(u)){const{content:f,fill:v,outline:p,...d}=u;r(d,v,p),i(f)}else if(he(u)){const{fragments:f,fill:v,outline:p,...d}=u;r(d,v,p),f.forEach(m=>{const{content:_,fill:I,outline:F,...O}=m;i(_,O,I,F)})}else Array.isArray(u)?(r(),u.forEach(f=>{if(typeof f=="string")i(f);else if(ft(f)){const{content:v,fill:p,outline:d,...m}=f;i(v,m,p,d)}})):console.warn("Failed to parse text content",u)});const l=n();return l&&!l.fragments.length&&l.fragments.push({content:""}),e}function he(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function ft(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function ve(t){return typeof t=="string"||Array.isArray(t)?{content:Z(t)}:w({...t,content:Z(t.content??""),style:t.style?P(t.style):void 0,effects:t.effects?t.effects.map(e=>P(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?L(t.fill):void 0,outline:t.outline?$(t.outline):void 0})}function Me(t){return Z(t).map(e=>{const n=ge(e.fragments.flatMap(r=>r.content).join(""));return ct(n)?"":n}).join(ut)}function pe(t){return typeof t=="string"?{src:t}:t}function J(t){return w({...t,id:t.id??ee(),style:h(t.style)?void 0:P(t.style),text:h(t.text)?void 0:ve(t.text),background:h(t.background)?void 0:Ut(t.background),shape:h(t.shape)?void 0:ie(t.shape),fill:h(t.fill)?void 0:L(t.fill),outline:h(t.outline)?void 0:$(t.outline),foreground:h(t.foreground)?void 0:Qt(t.foreground),shadow:h(t.shadow)?void 0:ne(t.shadow),video:h(t.video)?void 0:pe(t.video),audio:h(t.audio)?void 0:G(t.audio),effect:h(t.effect)?void 0:Jt(t.effect),children:t.children?.map(e=>J(e))})}function Te(t){return J(t)}function $e(t){const e={};for(const n in t.children){const r=J(t.children[n]);delete r.children,e[n]=r}return{...t,children:e}}function He(t){const{children:e,...n}=t;function r(f){const{parentId:v,childrenIds:p,...d}=f;return{...d,children:[]}}const i={},a=[],l={...n,children:a};function u(f){if(!e[f]||i[f])return;const v=e[f],p=r(v);i[f]=p;const d=v.parentId;if(d){u(d);const m=e[d],_=i[d];if(!_)return;m?.childrenIds&&_?.children&&(_.children[m.childrenIds.indexOf(f)]=p)}else a.push(p)}for(const f in e)u(f);return l}o.EventEmitter=Ee,o.Observable=Fe,o.RawWeakMap=Le,o.clearUndef=w,o.defaultColor=M,o.defineProperty=Yt,o.flatDocumentToDocument=He,o.getDeclarations=q,o.getDefaultElementStyle=se,o.getDefaultHighlightStyle=le,o.getDefaultInnerShadow=at,o.getDefaultLayoutStyle=oe,o.getDefaultListStyleStyle=ue,o.getDefaultOuterShadow=qt,o.getDefaultShadowStyle=re,o.getDefaultStyle=Ge,o.getDefaultTextInlineStyle=ce,o.getDefaultTextLineStyle=fe,o.getDefaultTextStyle=de,o.getDefaultTransformStyle=ae,o.getNestedValue=Et,o.getObjectValueByPath=Lt,o.getPropertyDescriptor=ot,o.hasCRLF=je,o.idGenerator=ee,o.isCRLF=ct,o.isColor=Dt,o.isColorFill=Tt,o.isColorFillObject=Mt,o.isEqualObject=x,o.isFragmentObject=ft,o.isGradient=T,o.isGradientFill=Ht,o.isGradientFillObject=$t,o.isImageFill=Bt,o.isImageFillObject=Wt,o.isNone=h,o.isParagraphObject=he,o.isPresetFill=xt,o.isPresetFillObject=Kt,o.nanoid=te,o.normalizeAudio=G,o.normalizeBackground=Ut,o.normalizeCRLF=ge,o.normalizeColor=C,o.normalizeColorFill=Gt,o.normalizeDocument=Te,o.normalizeEffect=Jt,o.normalizeElement=J,o.normalizeFill=L,o.normalizeFlatDocument=$e,o.normalizeForeground=Qt,o.normalizeGradient=At,o.normalizeGradientFill=Pt,o.normalizeImageFill=Vt,o.normalizeInnerShadow=st,o.normalizeOuterShadow=Zt,o.normalizeOutline=$,o.normalizePresetFill=jt,o.normalizeShadow=ne,o.normalizeShape=ie,o.normalizeSoftEdge=Ie,o.normalizeStyle=P,o.normalizeText=ve,o.normalizeTextContent=Z,o.normalizeVideo=pe,o.parseColor=rt,o.parseGradient=Nt,o.pick=K,o.property=Ne,o.property2=Re,o.round=R,o.setNestedValue=Ft,o.setObjectValueByPath=Ot,o.stringifyGradient=De,o.textContentToString=Me,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
package/dist/index.mjs CHANGED
@@ -185,6 +185,40 @@ function setObjectValueByPath(obj, path, value) {
185
185
  return setNestedValue(obj, path.split("."), value);
186
186
  }
187
187
 
188
+ class Observable {
189
+ _observers = /* @__PURE__ */ new Map();
190
+ on(name, f) {
191
+ let set = this._observers.get(name);
192
+ if (set === void 0) {
193
+ this._observers.set(name, set = /* @__PURE__ */ new Set());
194
+ }
195
+ set.add(f);
196
+ return f;
197
+ }
198
+ once(name, f) {
199
+ const _f = (...args) => {
200
+ this.off(name, _f);
201
+ f(...args);
202
+ };
203
+ this.on(name, _f);
204
+ }
205
+ off(name, f) {
206
+ const observers = this._observers.get(name);
207
+ if (observers !== void 0) {
208
+ observers.delete(f);
209
+ if (observers.size === 0) {
210
+ this._observers.delete(name);
211
+ }
212
+ }
213
+ }
214
+ emit(name, ...args) {
215
+ return Array.from((this._observers.get(name) || /* @__PURE__ */ new Map()).values()).forEach((f) => f(...args));
216
+ }
217
+ destroy() {
218
+ this._observers = /* @__PURE__ */ new Map();
219
+ }
220
+ }
221
+
188
222
  class RawWeakMap {
189
223
  _map = /* @__PURE__ */ new WeakMap();
190
224
  // fix: vue reactive object
@@ -197,29 +231,15 @@ class RawWeakMap {
197
231
  }
198
232
  return value;
199
233
  }
200
- /**
201
- * Removes the specified element from the WeakMap.
202
- * @returns true if the element was successfully removed, or false if it was not present.
203
- */
204
234
  delete(key) {
205
235
  return this._map.delete(this._toRaw(key));
206
236
  }
207
- /**
208
- * @returns a specified element.
209
- */
210
237
  get(key) {
211
238
  return this._map.get(this._toRaw(key));
212
239
  }
213
- /**
214
- * @returns a boolean indicating whether an element with the specified key exists or not.
215
- */
216
240
  has(key) {
217
241
  return this._map.has(this._toRaw(key));
218
242
  }
219
- /**
220
- * Adds a new element with a specified key and value.
221
- * @param key Must be an object or symbol.
222
- */
223
243
  set(key, value) {
224
244
  this._map.set(this._toRaw(key), this._toRaw(value));
225
245
  return this;
@@ -1501,7 +1521,7 @@ function normalizeTextContent(value) {
1501
1521
  const lastP = lastParagraph();
1502
1522
  if (lastP && !lastP.fragments.length) {
1503
1523
  lastP.fragments.push({
1504
- content: NORMALIZED_CRLF
1524
+ content: ""
1505
1525
  });
1506
1526
  }
1507
1527
  return paragraphs;
@@ -1625,4 +1645,4 @@ function flatDocumentToDocument(flatDoc) {
1625
1645
  return doc;
1626
1646
  }
1627
1647
 
1628
- export { EventEmitter, RawWeakMap, 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, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
1648
+ export { EventEmitter, Observable, RawWeakMap, 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, 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.8.8",
4
+ "version": "0.8.10",
5
5
  "packageManager": "pnpm@9.15.1",
6
6
  "description": "Intermediate document for modern codec libs",
7
7
  "author": "wxm",
@@ -44,6 +44,7 @@
44
44
  ],
45
45
  "scripts": {
46
46
  "build": "vite build && unbuild",
47
+ "build:schema": "npx ts-json-schema-generator --minify --expose 'export' --no-top-ref --path 'src/index.ts' --type 'NormalizedDocument' --tsconfig=./tsconfig.json > dist/schema.json",
47
48
  "dev": "vite docs",
48
49
  "lint": "eslint .",
49
50
  "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",
@@ -58,16 +59,16 @@
58
59
  "nanoid": "^5.1.5"
59
60
  },
60
61
  "devDependencies": {
61
- "@antfu/eslint-config": "^5.2.1",
62
- "@types/node": "^24.3.0",
62
+ "@antfu/eslint-config": "^5.3.0",
63
+ "@types/node": "^24.5.0",
63
64
  "bumpp": "^10.2.3",
64
65
  "conventional-changelog-cli": "^5.0.0",
65
- "eslint": "^9.33.0",
66
- "lint-staged": "^16.1.5",
66
+ "eslint": "^9.35.0",
67
+ "lint-staged": "^16.1.6",
67
68
  "simple-git-hooks": "^2.13.1",
68
69
  "typescript": "^5.9.2",
69
70
  "unbuild": "^3.6.1",
70
- "vite": "^7.1.2",
71
+ "vite": "^7.1.5",
71
72
  "vitest": "^3.2.4"
72
73
  },
73
74
  "simple-git-hooks": {