modern-idoc 0.7.1 → 0.7.3

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
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const colord = require('colord');
4
+ const nanoid$1 = require('nanoid');
4
5
 
5
6
  function normalizeAudio(audio) {
6
7
  if (typeof audio === "string") {
@@ -942,6 +943,9 @@ function getPropertyDescriptor(key, declaration = {}) {
942
943
  };
943
944
  }
944
945
  function defineProperty(target, key, declaration = {}) {
946
+ getDeclarations(
947
+ typeof target === "function" ? target : target.constructor
948
+ ).set(key, declaration);
945
949
  const descriptor = getPropertyDescriptor(key, declaration);
946
950
  Object.defineProperty(target.prototype, key, {
947
951
  get() {
@@ -965,7 +969,7 @@ function property(declaration = {}) {
965
969
  const descriptor = getPropertyDescriptor(key, declaration);
966
970
  return {
967
971
  init(v) {
968
- getDeclarations(this).set(key, declaration);
972
+ getDeclarations(this.constructor).set(key, declaration);
969
973
  descriptor.set.call(this, v);
970
974
  return v;
971
975
  },
@@ -1039,6 +1043,11 @@ function normalizeForeground(foreground) {
1039
1043
  }
1040
1044
  }
1041
1045
 
1046
+ const nanoid = () => {
1047
+ return nanoid$1.nanoid(10);
1048
+ };
1049
+ const idGenerator = nanoid;
1050
+
1042
1051
  function normalizeOutline(outline) {
1043
1052
  if (typeof outline === "string") {
1044
1053
  return {
@@ -1413,6 +1422,7 @@ function normalizeVideo(video) {
1413
1422
  function normalizeElement(element) {
1414
1423
  return clearUndef({
1415
1424
  ...element,
1425
+ id: element.id ?? idGenerator(),
1416
1426
  style: isNone(element.style) ? void 0 : normalizeStyle(element.style),
1417
1427
  text: isNone(element.text) ? void 0 : normalizeText(element.text),
1418
1428
  background: isNone(element.background) ? void 0 : normalizeBackground(element.background),
@@ -1453,6 +1463,7 @@ exports.getNestedValue = getNestedValue;
1453
1463
  exports.getObjectValueByPath = getObjectValueByPath;
1454
1464
  exports.getPropertyDescriptor = getPropertyDescriptor;
1455
1465
  exports.hasCRLF = hasCRLF;
1466
+ exports.idGenerator = idGenerator;
1456
1467
  exports.isCRLF = isCRLF;
1457
1468
  exports.isColor = isColor;
1458
1469
  exports.isColorFill = isColorFill;
@@ -1466,6 +1477,7 @@ exports.isImageFillObject = isImageFillObject;
1466
1477
  exports.isNone = isNone;
1467
1478
  exports.isPresetFill = isPresetFill;
1468
1479
  exports.isPresetFillObject = isPresetFillObject;
1480
+ exports.nanoid = nanoid;
1469
1481
  exports.normalizeAudio = normalizeAudio;
1470
1482
  exports.normalizeBackground = normalizeBackground;
1471
1483
  exports.normalizeCRLF = normalizeCRLF;
package/dist/index.d.cts CHANGED
@@ -321,11 +321,11 @@ interface PropertyDeclaration {
321
321
  alias?: string;
322
322
  }
323
323
  interface ReactiveObject {
324
- getter?: (key: string, context: ReactiveObjectGetterSetterContext) => any;
325
- setter?: (key: string, value: any, context: ReactiveObjectGetterSetterContext) => void;
324
+ getter?: (key: string, context: ReactiveObjectPropertyAccessorContext) => any;
325
+ setter?: (key: string, value: any, context: ReactiveObjectPropertyAccessorContext) => void;
326
326
  onUpdateProperty?: (key: string, newValue: unknown, oldValue: unknown, declaration: PropertyDeclaration) => void;
327
327
  }
328
- interface ReactiveObjectGetterSetterContext {
328
+ interface ReactiveObjectPropertyAccessorContext {
329
329
  declaration: PropertyDeclaration;
330
330
  internalKey: symbol;
331
331
  }
@@ -715,6 +715,7 @@ type Video = string | NormalizedVideo;
715
715
  declare function normalizeVideo(video: Video): NormalizedVideo | undefined;
716
716
 
717
717
  interface Element<T = Meta> extends Node<T> {
718
+ id?: string;
718
719
  style?: WithNone<Style>;
719
720
  text?: WithNone<Text>;
720
721
  background?: WithNone<Background>;
@@ -729,6 +730,7 @@ interface Element<T = Meta> extends Node<T> {
729
730
  children?: Element[];
730
731
  }
731
732
  type NormalizedElement<T = Meta> = Node<T> & {
733
+ id: string;
732
734
  style?: Partial<NormalizedStyle>;
733
735
  text?: NormalizedText;
734
736
  background?: NormalizedBackground;
@@ -752,6 +754,10 @@ interface NormalizedDocument extends NormalizedElement {
752
754
  }
753
755
  declare function normalizeDocument(doc: Document): NormalizedDocument;
754
756
 
757
+ type IdGenerator = () => string;
758
+ declare const nanoid: IdGenerator;
759
+ declare const idGenerator: IdGenerator;
760
+
755
761
  declare function isNone<T>(value: T): value is Extract<T, null | undefined | 'none'>;
756
762
  declare function round(number: number, digits?: number, base?: number): number;
757
763
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
@@ -785,5 +791,5 @@ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
785
791
  set(key: K, value: V): this;
786
792
  }
787
793
 
788
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, 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 };
789
- export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectGetterSetterContext, 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 };
794
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, nanoid, 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 };
795
+ export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, 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, 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, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.mts CHANGED
@@ -321,11 +321,11 @@ interface PropertyDeclaration {
321
321
  alias?: string;
322
322
  }
323
323
  interface ReactiveObject {
324
- getter?: (key: string, context: ReactiveObjectGetterSetterContext) => any;
325
- setter?: (key: string, value: any, context: ReactiveObjectGetterSetterContext) => void;
324
+ getter?: (key: string, context: ReactiveObjectPropertyAccessorContext) => any;
325
+ setter?: (key: string, value: any, context: ReactiveObjectPropertyAccessorContext) => void;
326
326
  onUpdateProperty?: (key: string, newValue: unknown, oldValue: unknown, declaration: PropertyDeclaration) => void;
327
327
  }
328
- interface ReactiveObjectGetterSetterContext {
328
+ interface ReactiveObjectPropertyAccessorContext {
329
329
  declaration: PropertyDeclaration;
330
330
  internalKey: symbol;
331
331
  }
@@ -715,6 +715,7 @@ type Video = string | NormalizedVideo;
715
715
  declare function normalizeVideo(video: Video): NormalizedVideo | undefined;
716
716
 
717
717
  interface Element<T = Meta> extends Node<T> {
718
+ id?: string;
718
719
  style?: WithNone<Style>;
719
720
  text?: WithNone<Text>;
720
721
  background?: WithNone<Background>;
@@ -729,6 +730,7 @@ interface Element<T = Meta> extends Node<T> {
729
730
  children?: Element[];
730
731
  }
731
732
  type NormalizedElement<T = Meta> = Node<T> & {
733
+ id: string;
732
734
  style?: Partial<NormalizedStyle>;
733
735
  text?: NormalizedText;
734
736
  background?: NormalizedBackground;
@@ -752,6 +754,10 @@ interface NormalizedDocument extends NormalizedElement {
752
754
  }
753
755
  declare function normalizeDocument(doc: Document): NormalizedDocument;
754
756
 
757
+ type IdGenerator = () => string;
758
+ declare const nanoid: IdGenerator;
759
+ declare const idGenerator: IdGenerator;
760
+
755
761
  declare function isNone<T>(value: T): value is Extract<T, null | undefined | 'none'>;
756
762
  declare function round(number: number, digits?: number, base?: number): number;
757
763
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
@@ -785,5 +791,5 @@ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
785
791
  set(key: K, value: V): this;
786
792
  }
787
793
 
788
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, 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 };
789
- export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectGetterSetterContext, 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 };
794
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, nanoid, 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 };
795
+ export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, 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, 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, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.ts CHANGED
@@ -321,11 +321,11 @@ interface PropertyDeclaration {
321
321
  alias?: string;
322
322
  }
323
323
  interface ReactiveObject {
324
- getter?: (key: string, context: ReactiveObjectGetterSetterContext) => any;
325
- setter?: (key: string, value: any, context: ReactiveObjectGetterSetterContext) => void;
324
+ getter?: (key: string, context: ReactiveObjectPropertyAccessorContext) => any;
325
+ setter?: (key: string, value: any, context: ReactiveObjectPropertyAccessorContext) => void;
326
326
  onUpdateProperty?: (key: string, newValue: unknown, oldValue: unknown, declaration: PropertyDeclaration) => void;
327
327
  }
328
- interface ReactiveObjectGetterSetterContext {
328
+ interface ReactiveObjectPropertyAccessorContext {
329
329
  declaration: PropertyDeclaration;
330
330
  internalKey: symbol;
331
331
  }
@@ -715,6 +715,7 @@ type Video = string | NormalizedVideo;
715
715
  declare function normalizeVideo(video: Video): NormalizedVideo | undefined;
716
716
 
717
717
  interface Element<T = Meta> extends Node<T> {
718
+ id?: string;
718
719
  style?: WithNone<Style>;
719
720
  text?: WithNone<Text>;
720
721
  background?: WithNone<Background>;
@@ -729,6 +730,7 @@ interface Element<T = Meta> extends Node<T> {
729
730
  children?: Element[];
730
731
  }
731
732
  type NormalizedElement<T = Meta> = Node<T> & {
733
+ id: string;
732
734
  style?: Partial<NormalizedStyle>;
733
735
  text?: NormalizedText;
734
736
  background?: NormalizedBackground;
@@ -752,6 +754,10 @@ interface NormalizedDocument extends NormalizedElement {
752
754
  }
753
755
  declare function normalizeDocument(doc: Document): NormalizedDocument;
754
756
 
757
+ type IdGenerator = () => string;
758
+ declare const nanoid: IdGenerator;
759
+ declare const idGenerator: IdGenerator;
760
+
755
761
  declare function isNone<T>(value: T): value is Extract<T, null | undefined | 'none'>;
756
762
  declare function round(number: number, digits?: number, base?: number): number;
757
763
  declare function clearUndef<T>(obj: T, deep?: boolean): T;
@@ -785,5 +791,5 @@ declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
785
791
  set(key: K, value: V): this;
786
792
  }
787
793
 
788
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, 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 };
789
- export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineEndSize, LineEndType, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedForeground, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactiveObject, ReactiveObjectGetterSetterContext, 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 };
794
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, nanoid, 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 };
795
+ export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, ExtentKeywordNode, Fill, FillObject, FillRule, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, 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, 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, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(o,k){typeof exports=="object"&&typeof module<"u"?k(exports):typeof define=="function"&&define.amd?define(["exports"],k):(o=typeof globalThis<"u"?globalThis:o||self,k(o.modernIdoc={}))})(this,function(o){"use strict";function k(t){return typeof t=="string"?{src:t}:t}var se={grad:.9,turn:360,rad:360/(2*Math.PI)},_=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},v=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},S=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},lt=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},st=function(t){return{r:S(t.r,0,255),g:S(t.g,0,255),b:S(t.b,0,255),a:S(t.a)}},x=function(t){return{r:v(t.r),g:v(t.g),b:v(t.b),a:v(t.a,3)}},ce=/^#([0-9a-f]{3,8})$/i,A=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},ct=function(t){var e=t.r,n=t.g,r=t.b,i=t.a,l=Math.max(e,n,r),c=l-Math.min(e,n,r),u=c?l===e?(n-r)/c:l===n?2+(r-e)/c:4+(e-n)/c:0;return{h:60*(u<0?u+6:u),s:l?c/l*100:0,v:l/255*100,a:i}},ft=function(t){var e=t.h,n=t.s,r=t.v,i=t.a;e=e/360*6,n/=100,r/=100;var l=Math.floor(e),c=r*(1-n),u=r*(1-(e-l)*n),g=r*(1-(1-e+l)*n),y=l%6;return{r:255*[r,u,c,c,g,r][y],g:255*[g,r,r,u,c,c][y],b:255*[c,c,g,r,r,u][y],a:i}},dt=function(t){return{h:lt(t.h),s:S(t.s,0,100),l:S(t.l,0,100),a:S(t.a)}},gt=function(t){return{h:v(t.h),s:v(t.s),l:v(t.l),a:v(t.a,3)}},ht=function(t){return ft((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=ct(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},fe=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,de=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ge=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,he=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,vt={string:[[function(t){var e=ce.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?v(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?v(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ge.exec(t)||he.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:st({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=fe.exec(t)||de.exec(t);if(!e)return null;var n,r,i=dt({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(se[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return ht(i)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,i=t.a,l=i===void 0?1:i;return _(e)&&_(n)&&_(r)?st({r:Number(e),g:Number(n),b:Number(r),a:Number(l)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,i=t.a,l=i===void 0?1:i;if(!_(e)||!_(n)||!_(r))return null;var c=dt({h:Number(e),s:Number(n),l:Number(r),a:Number(l)});return ht(c)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,i=t.a,l=i===void 0?1:i;if(!_(e)||!_(n)||!_(r))return null;var c=function(u){return{h:lt(u.h),s:S(u.s,0,100),v:S(u.v,0,100),a:S(u.a)}}({h:Number(e),s:Number(n),v:Number(r),a:Number(l)});return ft(c)},"hsv"]]},mt=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]},ve=function(t){return typeof t=="string"?mt(t.trim(),vt.string):typeof t=="object"&&t!==null?mt(t,vt.object):[null,void 0]},K=function(t,e){var n=L(t);return{h:n.h,s:S(n.s+100*e,0,100),l:n.l,a:n.a}},X=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},pt=function(t,e){var n=L(t);return{h:n.h,s:n.s,l:S(n.l+100*e,0,100),a:n.a}},yt=function(){function t(e){this.parsed=ve(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return v(X(this.rgba),2)},t.prototype.isDark=function(){return X(this.rgba)<.5},t.prototype.isLight=function(){return X(this.rgba)>=.5},t.prototype.toHex=function(){return e=x(this.rgba),n=e.r,r=e.g,i=e.b,c=(l=e.a)<1?A(v(255*l)):"","#"+A(n)+A(r)+A(i)+c;var e,n,r,i,l,c},t.prototype.toRgb=function(){return x(this.rgba)},t.prototype.toRgbString=function(){return e=x(this.rgba),n=e.r,r=e.g,i=e.b,(l=e.a)<1?"rgba("+n+", "+r+", "+i+", "+l+")":"rgb("+n+", "+r+", "+i+")";var e,n,r,i,l},t.prototype.toHsl=function(){return gt(L(this.rgba))},t.prototype.toHslString=function(){return e=gt(L(this.rgba)),n=e.h,r=e.s,i=e.l,(l=e.a)<1?"hsla("+n+", "+r+"%, "+i+"%, "+l+")":"hsl("+n+", "+r+"%, "+i+"%)";var e,n,r,i,l},t.prototype.toHsv=function(){return e=ct(this.rgba),{h:v(e.h),s:v(e.s),v:v(e.v),a:v(e.a,3)};var e},t.prototype.invert=function(){return w({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),w(K(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),w(K(this.rgba,-e))},t.prototype.grayscale=function(){return w(K(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),w(pt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),w(pt(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"?w({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):v(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=L(this.rgba);return typeof e=="number"?w({h:e,s:n.s,l:n.l,a:n.a}):v(n.h)},t.prototype.isEqual=function(e){return this.toHex()===w(e).toHex()},t}(),w=function(t){return t instanceof yt?t:new yt(t)};function d(t){return t==null||t==="none"}function N(t,e=0,n=10**e){return Math.round(n*t)/n+0}function O(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>O(r,e)):t;const n={};for(const r in t){const i=t[r];i!=null&&(e?n[r]=O(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 St(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 Ct(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 wt(t,e,n){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),St(t,e.split("."),n)}class me{_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 Y(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,w(e)}function pe(t){return{r:N(t.r),g:N(t.g),b:N(t.b),a:N(t.a,3)}}function M(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const G="#000000FF";function zt(t){return Y(t).isValid()}function p(t,e=!1){const n=Y(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:i,b:l,a:c}=pe(n.rgba);return`#${M(r)}${M(i)}${M(l)}${M(N(c*255))}`}var $=$||{};$.parse=function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let e="";function n(a){const s=new Error(`${e}: ${a}`);throw s.source=e,s}function r(){const a=i();return e.length>0&&n("Invalid input not EOF"),a}function i(){return B(l)}function l(){return c("linear-gradient",t.linearGradient,g)||c("repeating-linear-gradient",t.repeatingLinearGradient,g)||c("radial-gradient",t.radialGradient,z)||c("repeating-radial-gradient",t.repeatingRadialGradient,z)}function c(a,s,f){return u(s,m=>{const R=f();return R&&(h(t.comma)||n("Missing comma before color stops")),{type:a,orientation:R,colorStops:B(Ee)}})}function u(a,s){const f=h(a);if(f){h(t.startCall)||n("Missing (");const m=s(f);return h(t.endCall)||n("Missing )"),m}}function g(){const a=y();if(a)return a;const s=b("position-keyword",t.positionKeywords,1);return s?{type:"directional",value:s.value}:C()}function y(){return b("directional",t.sideOrCorner,1)}function C(){return b("angular",t.angleValue,1)||b("angular",t.radianValue,1)}function z(){let a,s=D(),f;return s&&(a=[],a.push(s),f=e,h(t.comma)&&(s=D(),s?a.push(s):e=f)),a}function D(){let a=rt()||Re();if(a)a.at=ot();else{const s=it();if(s){a=s;const f=ot();f&&(a.at=f)}else{const f=ot();if(f)a={type:"default-radial",at:f};else{const m=at();m&&(a={type:"default-radial",at:m})}}}return a}function rt(){const a=b("shape",/^(circle)/i,0);return a&&(a.style=le()||it()),a}function Re(){const a=b("shape",/^(ellipse)/i,0);return a&&(a.style=at()||j()||it()),a}function it(){return b("extent-keyword",t.extentKeywords,1)}function ot(){if(b("position",/^at/,0)){const a=at();return a||n("Missing positioning value"),a}}function at(){const a=ke();if(a.x||a.y)return{type:"position",value:a}}function ke(){return{x:j(),y:j()}}function B(a){let s=a();const f=[];if(s)for(f.push(s);h(t.comma);)s=a(),s?f.push(s):n("One extra comma");return f}function Ee(){const a=De();return a||n("Expected color definition"),a.length=j(),a}function De(){return Ge()||Te()||Ae()||Pe()||Ie()||Ve()||Le()}function Le(){return b("literal",t.literalColor,0)}function Ge(){return b("hex",t.hexColor,1)}function Ie(){return u(t.rgbColor,()=>({type:"rgb",value:B(V)}))}function Pe(){return u(t.rgbaColor,()=>({type:"rgba",value:B(V)}))}function Ve(){return u(t.varColor,()=>({type:"var",value:Me()}))}function Ae(){return u(t.hslColor,()=>{h(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();h(t.comma);let f=h(t.percentageValue);const m=f?f[1]:null;h(t.comma),f=h(t.percentageValue);const R=f?f[1]:null;return(!m||!R)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[s,m,R]}})}function Te(){return u(t.hslaColor,()=>{const a=V();h(t.comma);let s=h(t.percentageValue);const f=s?s[1]:null;h(t.comma),s=h(t.percentageValue);const m=s?s[1]:null;h(t.comma);const R=V();return(!f||!m)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,f,m,R]}})}function Me(){return h(t.variableName)[1]}function V(){return h(t.number)[1]}function j(){return b("%",t.percentageValue,1)||$e()||He()||le()}function $e(){return b("position-keyword",t.positionKeywords,1)}function He(){return u(t.calcValue,()=>{let a=1,s=0;for(;a>0&&s<e.length;){const m=e.charAt(s);m==="("?a++:m===")"&&a--,s++}a>0&&n("Missing closing parenthesis in calc() expression");const f=e.substring(0,s-1);return ut(s-1),{type:"calc",value:f}})}function le(){return b("px",t.pixelValue,1)||b("em",t.emValue,1)}function b(a,s,f){const m=h(s);if(m)return{type:a,value:m[f]}}function h(a){let s,f;return f=/^\s+/.exec(e),f&&ut(f[0].length),s=a.exec(e),s&&ut(s[0].length),s}function ut(a){e=e.substr(a)}return function(a){return e=a.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}}();const _t=$.parse.bind($);var H=H||{};H.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,l){n+=t.visit(i),l<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=H.stringify.bind(H);function Ft(t){const e=t.length-1;return t.map((n,r)=>{const i=n.value;let l=N(r/e,3),c="#00000000";switch(n.type){case"rgb":c=p({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":c=p({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":c=p(n.value);break;case"hex":c=p(`#${n.value}`);break}switch(n.length?.type){case"%":l=Number(n.length.value)/100;break}return{offset:l,color:c}})}function Nt(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Ft(t.colorStops)}}function Ot(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Ft(t.colorStops)}}function I(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Rt(t){return _t(t).map(e=>{switch(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:p(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:d(e.foregroundColor)?void 0:p(e.foregroundColor),backgroundColor:d(e.backgroundColor)?void 0:p(e.backgroundColor)}}function Gt(t){return!d(t.color)}function It(t){return typeof t=="string"?zt(t):Gt(t)}function Pt(t){return!d(t.image)&&I(t.image)||!!t.linearGradient||!!t.radialGradient}function Vt(t){return typeof t=="string"?I(t):Pt(t)}function At(t){return!d(t.image)&&!I(t.image)}function Tt(t){return typeof t=="string"?!I(t):At(t)}function Mt(t){return!d(t.preset)}function $t(t){return typeof t=="string"?!1:Mt(t)}function F(t){return It(t)?kt(t):Vt(t)?Et(t):Tt(t)?Dt(t):$t(t)?Lt(t):{}}function Ht(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["fillWithShape"])}}const U=Symbol("properties");function q(t){const e=Object.getPrototypeOf(t);let n;return e&&Object.hasOwn(e,U)?n=e[U]:(n=new Map(e?q(e):void 0),e&&(e[U]=n)),n}function Z(t,e={}){const n=Symbol.for(t),{fallback:r,alias:i}=e,l={declaration:e,internalKey:n},c=()=>typeof r=="function"?r():r;return{get(){let u;return i&&i!==t?u=Ct(this,i):typeof this.getter<"u"?u=this.getter(t,l):u=this[n],u??c()},set(u){i&&i!==t?wt(this,i,u):typeof this.setter<"u"?this.setter(t,u,l):this[n]=u}}}function be(t,e,n={}){const r=Z(e,n);Object.defineProperty(t.prototype,e,{get(){return r.get.call(this)},set(i){const l=r.get?.call(this);r.set.call(this,i),this.onUpdateProperty?.(e,i,l,n)},configurable:!0,enumerable:!0})}function Se(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=Z(r,t);return{init(l){return q(this).set(r,t),i.set.call(this,l),l},get(){return i.get.call(this)},set(l){const c=i.get?.call(this);i.set.call(this,l),this.onUpdateProperty?.(r,l,c,t)}}}}function J(){return{color:G,offsetX:0,offsetY:0,blurRadius:1}}function Q(t){return{...J(),...O({...t,color:d(t.color)?G:p(t.color)})}}function Wt(){return{...J(),scaleX:1,scaleY:1}}function Bt(t){return{...Wt(),...Q(t)}}function Ce(t){return t}function jt(t){return O({...t,softEdge:d(t.softEdge)?void 0:t.softEdge,outerShadow:d(t.outerShadow)?void 0:Bt(t.outerShadow),innerShadow:d(t.innerShadow)?void 0:Q(t.innerShadow)})}function xt(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["fillWithShape"])}}function Kt(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["width","style","headEnd","tailEnd"])}}function Xt(t){return typeof t=="string"?{color:p(t)}:{...t,color:d(t.color)?G:p(t.color)}}function Yt(){return{boxShadow:"none"}}function Ut(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 qt(){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 Zt(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Jt(){return{...qt(),...Zt(),...Yt(),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 Qt(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function te(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ee(){return{...Qt(),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 ne(){return{...te(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function re(){return{...ne(),...ee(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function E(t){return O({...t,color:d(t.color)?void 0:p(t.color),backgroundColor:d(t.backgroundColor)?void 0:p(t.backgroundColor),borderColor:d(t.borderColor)?void 0:p(t.borderColor),outlineColor:d(t.outlineColor)?void 0:p(t.outlineColor),shadowColor:d(t.shadowColor)?void 0:p(t.shadowColor)})}function we(){return{...Jt(),...re()}}const tt=/\r\n|\n\r|\n|\r/,ze=new RegExp(`${tt.source}|<br\\/>`,"g"),_e=new RegExp(`^(${tt.source})$`),W=`
2
- `;function Fe(t){return tt.test(t)}function et(t){return _e.test(t)}function ie(t){return t.replace(ze,W)}function oe(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 g=e[e.length-1];return g?.fragments.length===0?(g={...u,fragments:[]},e[e.length-1]=g):(g={...u,fragments:[]},e.push(g)),g}function i(u="",g={}){Array.from(u).forEach(y=>{if(et(y)){const{fragments:C,...z}=n()||r();C.length||C.push({...g,content:W}),r(z)}else{const C=n()||r(),z=C.fragments[C.fragments.length-1];if(z){const{content:D,...rt}=z;if(oe(g,rt)){z.content=`${D}${y}`;return}}C.fragments.push({...g,content:y})}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")r(),i(u);else if("content"in u){const{content:g,...y}=u;r(E(y)),i(g)}else if("fragments"in u){const{fragments:g,...y}=u;r(E(y)),g.forEach(C=>{const{content:z,...D}=C;i(z,E(D))})}else Array.isArray(u)?(r(),u.forEach(g=>{if(typeof g=="string")i(g);else{const{content:y,...C}=g;i(y,E(C))}})):console.warn("Failed to parse text content",u)});const c=n();return c&&!c.fragments.length&&c.fragments.push({content:W}),e}function ae(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=ie(e.fragments.flatMap(r=>r.content).join(""));return et(n)?"":n}).join(W)}function ue(t){return typeof t=="string"?{src:t}:t}function nt(t){return O({...t,style:d(t.style)?void 0:E(t.style),text:d(t.text)?void 0:ae(t.text),background:d(t.background)?void 0:Ht(t.background),shape:d(t.shape)?void 0:Ut(t.shape),fill:d(t.fill)?void 0:F(t.fill),outline:d(t.outline)?void 0:Kt(t.outline),foreground:d(t.foreground)?void 0:xt(t.foreground),shadow:d(t.shadow)?void 0:Xt(t.shadow),video:d(t.video)?void 0:ue(t.video),audio:d(t.audio)?void 0:k(t.audio),effect:d(t.effect)?void 0:jt(t.effect),children:t.children?.map(e=>nt(e))})}function Oe(t){return nt(t)}o.RawWeakMap=me,o.clearUndef=O,o.defaultColor=G,o.defineProperty=be,o.getDeclarations=q,o.getDefaultElementStyle=Jt,o.getDefaultHighlightStyle=Qt,o.getDefaultInnerShadow=J,o.getDefaultLayoutStyle=qt,o.getDefaultListStyleStyle=te,o.getDefaultOuterShadow=Wt,o.getDefaultShadowStyle=Yt,o.getDefaultStyle=we,o.getDefaultTextInlineStyle=ee,o.getDefaultTextLineStyle=ne,o.getDefaultTextStyle=re,o.getDefaultTransformStyle=Zt,o.getNestedValue=bt,o.getObjectValueByPath=Ct,o.getPropertyDescriptor=Z,o.hasCRLF=Fe,o.isCRLF=et,o.isColor=zt,o.isColorFill=It,o.isColorFillObject=Gt,o.isEqualStyle=oe,o.isGradient=I,o.isGradientFill=Vt,o.isGradientFillObject=Pt,o.isImageFill=Tt,o.isImageFillObject=At,o.isNone=d,o.isPresetFill=$t,o.isPresetFillObject=Mt,o.normalizeAudio=k,o.normalizeBackground=Ht,o.normalizeCRLF=ie,o.normalizeColor=p,o.normalizeColorFill=kt,o.normalizeDocument=Oe,o.normalizeEffect=jt,o.normalizeElement=nt,o.normalizeFill=F,o.normalizeForeground=xt,o.normalizeGradient=Rt,o.normalizeGradientFill=Et,o.normalizeImageFill=Dt,o.normalizeInnerShadow=Q,o.normalizeOuterShadow=Bt,o.normalizeOutline=Kt,o.normalizePresetFill=Lt,o.normalizeShadow=Xt,o.normalizeShape=Ut,o.normalizeSoftEdge=Ce,o.normalizeStyle=E,o.normalizeText=ae,o.normalizeTextContent=P,o.normalizeVideo=ue,o.parseColor=Y,o.parseGradient=_t,o.pick=T,o.property=Se,o.round=N,o.setNestedValue=St,o.setObjectValueByPath=wt,o.stringifyGradient=ye,o.textContentToString=Ne,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
1
+ (function(o,E){typeof exports=="object"&&typeof module<"u"?E(exports):typeof define=="function"&&define.amd?define(["exports"],E):(o=typeof globalThis<"u"?globalThis:o||self,E(o.modernIdoc={}))})(this,function(o){"use strict";function E(t){return typeof t=="string"?{src:t}:t}var fe={grad:.9,turn:360,rad:360/(2*Math.PI)},z=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},v=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=Math.pow(10,e)),Math.round(n*t)/n+0},S=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),t>n?n:t>e?t:e},lt=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},st=function(t){return{r:S(t.r,0,255),g:S(t.g,0,255),b:S(t.b,0,255),a:S(t.a)}},K=function(t){return{r:v(t.r),g:v(t.g),b:v(t.b),a:v(t.a,3)}},de=/^#([0-9a-f]{3,8})$/i,A=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},ct=function(t){var e=t.r,n=t.g,r=t.b,i=t.a,l=Math.max(e,n,r),c=l-Math.min(e,n,r),u=c?l===e?(n-r)/c:l===n?2+(r-e)/c:4+(e-n)/c:0;return{h:60*(u<0?u+6:u),s:l?c/l*100:0,v:l/255*100,a:i}},ft=function(t){var e=t.h,n=t.s,r=t.v,i=t.a;e=e/360*6,n/=100,r/=100;var l=Math.floor(e),c=r*(1-n),u=r*(1-(e-l)*n),g=r*(1-(1-e+l)*n),y=l%6;return{r:255*[r,u,c,c,g,r][y],g:255*[g,r,r,u,c,c][y],b:255*[c,c,g,r,r,u][y],a:i}},dt=function(t){return{h:lt(t.h),s:S(t.s,0,100),l:S(t.l,0,100),a:S(t.a)}},gt=function(t){return{h:v(t.h),s:v(t.s),l:v(t.l),a:v(t.a,3)}},ht=function(t){return ft((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=ct(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,vt={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?v(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?v(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ve.exec(t)||me.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:st({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=dt({h:(n=e[1],r=e[2],r===void 0&&(r="deg"),Number(n)*(fe[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return ht(i)},"hsl"]],object:[[function(t){var e=t.r,n=t.g,r=t.b,i=t.a,l=i===void 0?1:i;return z(e)&&z(n)&&z(r)?st({r:Number(e),g:Number(n),b:Number(r),a:Number(l)}):null},"rgb"],[function(t){var e=t.h,n=t.s,r=t.l,i=t.a,l=i===void 0?1:i;if(!z(e)||!z(n)||!z(r))return null;var c=dt({h:Number(e),s:Number(n),l:Number(r),a:Number(l)});return ht(c)},"hsl"],[function(t){var e=t.h,n=t.s,r=t.v,i=t.a,l=i===void 0?1:i;if(!z(e)||!z(n)||!z(r))return null;var c=function(u){return{h:lt(u.h),s:S(u.s,0,100),v:S(u.v,0,100),a:S(u.a)}}({h:Number(e),s:Number(n),v:Number(r),a:Number(l)});return ft(c)},"hsv"]]},mt=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"?mt(t.trim(),vt.string):typeof t=="object"&&t!==null?mt(t,vt.object):[null,void 0]},U=function(t,e){var n=L(t);return{h:n.h,s:S(n.s+100*e,0,100),l:n.l,a:n.a}},X=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},pt=function(t,e){var n=L(t);return{h:n.h,s:n.s,l:S(n.l+100*e,0,100),a:n.a}},yt=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 v(X(this.rgba),2)},t.prototype.isDark=function(){return X(this.rgba)<.5},t.prototype.isLight=function(){return X(this.rgba)>=.5},t.prototype.toHex=function(){return e=K(this.rgba),n=e.r,r=e.g,i=e.b,c=(l=e.a)<1?A(v(255*l)):"","#"+A(n)+A(r)+A(i)+c;var e,n,r,i,l,c},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,(l=e.a)<1?"rgba("+n+", "+r+", "+i+", "+l+")":"rgb("+n+", "+r+", "+i+")";var e,n,r,i,l},t.prototype.toHsl=function(){return gt(L(this.rgba))},t.prototype.toHslString=function(){return e=gt(L(this.rgba)),n=e.h,r=e.s,i=e.l,(l=e.a)<1?"hsla("+n+", "+r+"%, "+i+"%, "+l+")":"hsl("+n+", "+r+"%, "+i+"%)";var e,n,r,i,l},t.prototype.toHsv=function(){return e=ct(this.rgba),{h:v(e.h),s:v(e.s),v:v(e.v),a:v(e.a,3)};var e},t.prototype.invert=function(){return w({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),w(U(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),w(U(this.rgba,-e))},t.prototype.grayscale=function(){return w(U(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),w(pt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),w(pt(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"?w({r:(n=this.rgba).r,g:n.g,b:n.b,a:e}):v(this.rgba.a,3);var n},t.prototype.hue=function(e){var n=L(this.rgba);return typeof e=="number"?w({h:e,s:n.s,l:n.l,a:n.a}):v(n.h)},t.prototype.isEqual=function(e){return this.toHex()===w(e).toHex()},t}(),w=function(t){return t instanceof yt?t:new yt(t)};function d(t){return t==null||t==="none"}function N(t,e=0,n=10**e){return Math.round(n*t)/n+0}function O(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(r=>O(r,e)):t;const n={};for(const r in t){const i=t[r];i!=null&&(e?n[r]=O(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 St(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 Ct(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 wt(t,e,n){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),St(t,e.split("."),n)}class ye{_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 Y(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,w(e)}function be(t){return{r:N(t.r),g:N(t.g),b:N(t.b),a:N(t.a,3)}}function M(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const G="#000000FF";function _t(t){return Y(t).isValid()}function p(t,e=!1){const n=Y(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:i,b:l,a:c}=be(n.rgba);return`#${M(r)}${M(i)}${M(l)}${M(N(c*255))}`}var $=$||{};$.parse=function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let e="";function n(a){const s=new Error(`${e}: ${a}`);throw s.source=e,s}function r(){const a=i();return e.length>0&&n("Invalid input not EOF"),a}function i(){return j(l)}function l(){return c("linear-gradient",t.linearGradient,g)||c("repeating-linear-gradient",t.repeatingLinearGradient,g)||c("radial-gradient",t.radialGradient,_)||c("repeating-radial-gradient",t.repeatingRadialGradient,_)}function c(a,s,f){return u(s,m=>{const R=f();return R&&(h(t.comma)||n("Missing comma before color stops")),{type:a,orientation:R,colorStops:j(Ie)}})}function u(a,s){const f=h(a);if(f){h(t.startCall)||n("Missing (");const m=s(f);return h(t.endCall)||n("Missing )"),m}}function g(){const a=y();if(a)return a;const s=b("position-keyword",t.positionKeywords,1);return s?{type:"directional",value:s.value}:C()}function y(){return b("directional",t.sideOrCorner,1)}function C(){return b("angular",t.angleValue,1)||b("angular",t.radianValue,1)}function _(){let a,s=D(),f;return s&&(a=[],a.push(s),f=e,h(t.comma)&&(s=D(),s?a.push(s):e=f)),a}function D(){let a=rt()||Le();if(a)a.at=ot();else{const s=it();if(s){a=s;const f=ot();f&&(a.at=f)}else{const f=ot();if(f)a={type:"default-radial",at:f};else{const m=at();m&&(a={type:"default-radial",at:m})}}}return a}function rt(){const a=b("shape",/^(circle)/i,0);return a&&(a.style=ce()||it()),a}function Le(){const a=b("shape",/^(ellipse)/i,0);return a&&(a.style=at()||x()||it()),a}function it(){return b("extent-keyword",t.extentKeywords,1)}function ot(){if(b("position",/^at/,0)){const a=at();return a||n("Missing positioning value"),a}}function at(){const a=Ge();if(a.x||a.y)return{type:"position",value:a}}function Ge(){return{x:x(),y:x()}}function j(a){let s=a();const f=[];if(s)for(f.push(s);h(t.comma);)s=a(),s?f.push(s):n("One extra comma");return f}function Ie(){const a=Pe();return a||n("Expected color definition"),a.length=x(),a}function Pe(){return Ae()||We()||He()||Me()||Te()||$e()||Ve()}function Ve(){return b("literal",t.literalColor,0)}function Ae(){return b("hex",t.hexColor,1)}function Te(){return u(t.rgbColor,()=>({type:"rgb",value:j(V)}))}function Me(){return u(t.rgbaColor,()=>({type:"rgba",value:j(V)}))}function $e(){return u(t.varColor,()=>({type:"var",value:Be()}))}function He(){return u(t.hslColor,()=>{h(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();h(t.comma);let f=h(t.percentageValue);const m=f?f[1]:null;h(t.comma),f=h(t.percentageValue);const R=f?f[1]:null;return(!m||!R)&&n("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[s,m,R]}})}function We(){return u(t.hslaColor,()=>{const a=V();h(t.comma);let s=h(t.percentageValue);const f=s?s[1]:null;h(t.comma),s=h(t.percentageValue);const m=s?s[1]:null;h(t.comma);const R=V();return(!f||!m)&&n("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[a,f,m,R]}})}function Be(){return h(t.variableName)[1]}function V(){return h(t.number)[1]}function x(){return b("%",t.percentageValue,1)||je()||xe()||ce()}function je(){return b("position-keyword",t.positionKeywords,1)}function xe(){return u(t.calcValue,()=>{let a=1,s=0;for(;a>0&&s<e.length;){const m=e.charAt(s);m==="("?a++:m===")"&&a--,s++}a>0&&n("Missing closing parenthesis in calc() expression");const f=e.substring(0,s-1);return ut(s-1),{type:"calc",value:f}})}function ce(){return b("px",t.pixelValue,1)||b("em",t.emValue,1)}function b(a,s,f){const m=h(s);if(m)return{type:a,value:m[f]}}function h(a){let s,f;return f=/^\s+/.exec(e),f&&ut(f[0].length),s=a.exec(e),s&&ut(s[0].length),s}function ut(a){e=e.substr(a)}return function(a){return e=a.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),r()}}();const zt=$.parse.bind($);var H=H||{};H.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,l){n+=t.visit(i),l<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 Se=H.stringify.bind(H);function Ft(t){const e=t.length-1;return t.map((n,r)=>{const i=n.value;let l=N(r/e,3),c="#00000000";switch(n.type){case"rgb":c=p({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":c=p({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":c=p(n.value);break;case"hex":c=p(`#${n.value}`);break}switch(n.length?.type){case"%":l=Number(n.length.value)/100;break}return{offset:l,color:c}})}function Nt(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:Ft(t.colorStops)}}function Ot(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:Ft(t.colorStops)}}function I(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Rt(t){return zt(t).map(e=>{switch(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 Et(t){let e;return typeof t=="string"?e={color:t}:e=t,{color:p(e.color)}}function kt(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:d(e.foregroundColor)?void 0:p(e.foregroundColor),backgroundColor:d(e.backgroundColor)?void 0:p(e.backgroundColor)}}function Gt(t){return!d(t.color)}function It(t){return typeof t=="string"?_t(t):Gt(t)}function Pt(t){return!d(t.image)&&I(t.image)||!!t.linearGradient||!!t.radialGradient}function Vt(t){return typeof t=="string"?I(t):Pt(t)}function At(t){return!d(t.image)&&!I(t.image)}function Tt(t){return typeof t=="string"?!I(t):At(t)}function Mt(t){return!d(t.preset)}function $t(t){return typeof t=="string"?!1:Mt(t)}function F(t){return It(t)?Et(t):Vt(t)?kt(t):Tt(t)?Dt(t):$t(t)?Lt(t):{}}function Ht(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["fillWithShape"])}}const q=Symbol("properties");function W(t){const e=Object.getPrototypeOf(t);let n;return e&&Object.hasOwn(e,q)?n=e[q]:(n=new Map(e?W(e):void 0),e&&(e[q]=n)),n}function Z(t,e={}){const n=Symbol.for(t),{fallback:r,alias:i}=e,l={declaration:e,internalKey:n},c=()=>typeof r=="function"?r():r;return{get(){let u;return i&&i!==t?u=Ct(this,i):typeof this.getter<"u"?u=this.getter(t,l):u=this[n],u??c()},set(u){i&&i!==t?wt(this,i,u):typeof this.setter<"u"?this.setter(t,u,l):this[n]=u}}}function Ce(t,e,n={}){W(typeof t=="function"?t:t.constructor).set(e,n);const r=Z(e,n);Object.defineProperty(t.prototype,e,{get(){return r.get.call(this)},set(i){const l=r.get?.call(this);r.set.call(this,i),this.onUpdateProperty?.(e,i,l,n)},configurable:!0,enumerable:!0})}function we(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=Z(r,t);return{init(l){return W(this.constructor).set(r,t),i.set.call(this,l),l},get(){return i.get.call(this)},set(l){const c=i.get?.call(this);i.set.call(this,l),this.onUpdateProperty?.(r,l,c,t)}}}}function J(){return{color:G,offsetX:0,offsetY:0,blurRadius:1}}function Q(t){return{...J(),...O({...t,color:d(t.color)?G:p(t.color)})}}function Wt(){return{...J(),scaleX:1,scaleY:1}}function Bt(t){return{...Wt(),...Q(t)}}function _e(t){return t}function jt(t){return O({...t,softEdge:d(t.softEdge)?void 0:t.softEdge,outerShadow:d(t.outerShadow)?void 0:Bt(t.outerShadow),innerShadow:d(t.innerShadow)?void 0:Q(t.innerShadow)})}function xt(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["fillWithShape"])}}const ze="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let Fe=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=ze[n[t]&63];return e};const Kt=()=>Fe(10),Ut=Kt;function Xt(t){return typeof t=="string"?{...F(t)}:{...F(t),...T(t,["width","style","headEnd","tailEnd"])}}function Yt(t){return typeof t=="string"?{color:p(t)}:{...t,color:d(t.color)?G:p(t.color)}}function qt(){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(),...qt(),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 k(t){return O({...t,color:d(t.color)?void 0:p(t.color),backgroundColor:d(t.backgroundColor)?void 0:p(t.backgroundColor),borderColor:d(t.borderColor)?void 0:p(t.borderColor),outlineColor:d(t.outlineColor)?void 0:p(t.outlineColor),shadowColor:d(t.shadowColor)?void 0:p(t.shadowColor)})}function Ne(){return{...te(),...oe()}}const tt=/\r\n|\n\r|\n|\r/,Oe=new RegExp(`${tt.source}|<br\\/>`,"g"),Re=new RegExp(`^(${tt.source})$`),B=`
2
+ `;function Ee(t){return tt.test(t)}function et(t){return Re.test(t)}function ae(t){return t.replace(Oe,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 g=e[e.length-1];return g?.fragments.length===0?(g={...u,fragments:[]},e[e.length-1]=g):(g={...u,fragments:[]},e.push(g)),g}function i(u="",g={}){Array.from(u).forEach(y=>{if(et(y)){const{fragments:C,..._}=n()||r();C.length||C.push({...g,content:B}),r(_)}else{const C=n()||r(),_=C.fragments[C.fragments.length-1];if(_){const{content:D,...rt}=_;if(ue(g,rt)){_.content=`${D}${y}`;return}}C.fragments.push({...g,content:y})}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")r(),i(u);else if("content"in u){const{content:g,...y}=u;r(k(y)),i(g)}else if("fragments"in u){const{fragments:g,...y}=u;r(k(y)),g.forEach(C=>{const{content:_,...D}=C;i(_,k(D))})}else Array.isArray(u)?(r(),u.forEach(g=>{if(typeof g=="string")i(g);else{const{content:y,...C}=g;i(y,k(C))}})):console.warn("Failed to parse text content",u)});const c=n();return c&&!c.fragments.length&&c.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 ke(t){return P(t).map(e=>{const n=ae(e.fragments.flatMap(r=>r.content).join(""));return et(n)?"":n}).join(B)}function se(t){return typeof t=="string"?{src:t}:t}function nt(t){return O({...t,id:t.id??Ut(),style:d(t.style)?void 0:k(t.style),text:d(t.text)?void 0:le(t.text),background:d(t.background)?void 0:Ht(t.background),shape:d(t.shape)?void 0:Zt(t.shape),fill:d(t.fill)?void 0:F(t.fill),outline:d(t.outline)?void 0:Xt(t.outline),foreground:d(t.foreground)?void 0:xt(t.foreground),shadow:d(t.shadow)?void 0:Yt(t.shadow),video:d(t.video)?void 0:se(t.video),audio:d(t.audio)?void 0:E(t.audio),effect:d(t.effect)?void 0:jt(t.effect),children:t.children?.map(e=>nt(e))})}function De(t){return nt(t)}o.RawWeakMap=ye,o.clearUndef=O,o.defaultColor=G,o.defineProperty=Ce,o.getDeclarations=W,o.getDefaultElementStyle=te,o.getDefaultHighlightStyle=ee,o.getDefaultInnerShadow=J,o.getDefaultLayoutStyle=Jt,o.getDefaultListStyleStyle=ne,o.getDefaultOuterShadow=Wt,o.getDefaultShadowStyle=qt,o.getDefaultStyle=Ne,o.getDefaultTextInlineStyle=re,o.getDefaultTextLineStyle=ie,o.getDefaultTextStyle=oe,o.getDefaultTransformStyle=Qt,o.getNestedValue=bt,o.getObjectValueByPath=Ct,o.getPropertyDescriptor=Z,o.hasCRLF=Ee,o.idGenerator=Ut,o.isCRLF=et,o.isColor=_t,o.isColorFill=It,o.isColorFillObject=Gt,o.isEqualStyle=ue,o.isGradient=I,o.isGradientFill=Vt,o.isGradientFillObject=Pt,o.isImageFill=Tt,o.isImageFillObject=At,o.isNone=d,o.isPresetFill=$t,o.isPresetFillObject=Mt,o.nanoid=Kt,o.normalizeAudio=E,o.normalizeBackground=Ht,o.normalizeCRLF=ae,o.normalizeColor=p,o.normalizeColorFill=Et,o.normalizeDocument=De,o.normalizeEffect=jt,o.normalizeElement=nt,o.normalizeFill=F,o.normalizeForeground=xt,o.normalizeGradient=Rt,o.normalizeGradientFill=kt,o.normalizeImageFill=Dt,o.normalizeInnerShadow=Q,o.normalizeOuterShadow=Bt,o.normalizeOutline=Xt,o.normalizePresetFill=Lt,o.normalizeShadow=Yt,o.normalizeShape=Zt,o.normalizeSoftEdge=_e,o.normalizeStyle=k,o.normalizeText=le,o.normalizeTextContent=P,o.normalizeVideo=se,o.parseColor=Y,o.parseGradient=zt,o.pick=T,o.property=we,o.round=N,o.setNestedValue=St,o.setObjectValueByPath=wt,o.stringifyGradient=Se,o.textContentToString=ke,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { colord } from 'colord';
2
+ import { nanoid as nanoid$1 } from 'nanoid';
2
3
 
3
4
  function normalizeAudio(audio) {
4
5
  if (typeof audio === "string") {
@@ -940,6 +941,9 @@ function getPropertyDescriptor(key, declaration = {}) {
940
941
  };
941
942
  }
942
943
  function defineProperty(target, key, declaration = {}) {
944
+ getDeclarations(
945
+ typeof target === "function" ? target : target.constructor
946
+ ).set(key, declaration);
943
947
  const descriptor = getPropertyDescriptor(key, declaration);
944
948
  Object.defineProperty(target.prototype, key, {
945
949
  get() {
@@ -963,7 +967,7 @@ function property(declaration = {}) {
963
967
  const descriptor = getPropertyDescriptor(key, declaration);
964
968
  return {
965
969
  init(v) {
966
- getDeclarations(this).set(key, declaration);
970
+ getDeclarations(this.constructor).set(key, declaration);
967
971
  descriptor.set.call(this, v);
968
972
  return v;
969
973
  },
@@ -1037,6 +1041,11 @@ function normalizeForeground(foreground) {
1037
1041
  }
1038
1042
  }
1039
1043
 
1044
+ const nanoid = () => {
1045
+ return nanoid$1(10);
1046
+ };
1047
+ const idGenerator = nanoid;
1048
+
1040
1049
  function normalizeOutline(outline) {
1041
1050
  if (typeof outline === "string") {
1042
1051
  return {
@@ -1411,6 +1420,7 @@ function normalizeVideo(video) {
1411
1420
  function normalizeElement(element) {
1412
1421
  return clearUndef({
1413
1422
  ...element,
1423
+ id: element.id ?? idGenerator(),
1414
1424
  style: isNone(element.style) ? void 0 : normalizeStyle(element.style),
1415
1425
  text: isNone(element.text) ? void 0 : normalizeText(element.text),
1416
1426
  background: isNone(element.background) ? void 0 : normalizeBackground(element.background),
@@ -1430,4 +1440,4 @@ function normalizeDocument(doc) {
1430
1440
  return normalizeElement(doc);
1431
1441
  }
1432
1442
 
1433
- export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, 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 };
1443
+ export { RawWeakMap, clearUndef, defaultColor, defineProperty, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualStyle, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isPresetFill, isPresetFillObject, nanoid, 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.7.1",
4
+ "version": "0.7.3",
5
5
  "packageManager": "pnpm@9.15.1",
6
6
  "description": "Intermediate document for modern codec libs",
7
7
  "author": "wxm",
@@ -54,7 +54,8 @@
54
54
  "prepare": "simple-git-hooks"
55
55
  },
56
56
  "dependencies": {
57
- "colord": "^2.9.3"
57
+ "colord": "^2.9.3",
58
+ "nanoid": "^5.1.5"
58
59
  },
59
60
  "devDependencies": {
60
61
  "@antfu/eslint-config": "^4.16.1",