modern-idoc 0.9.8 → 0.9.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
@@ -251,7 +251,6 @@ class RawWeakMap {
251
251
  }
252
252
  }
253
253
 
254
- const internalSymbol = Symbol("internal");
255
254
  const propertiesSymbol = Symbol("properties");
256
255
  const initedSymbol = Symbol("inited");
257
256
  function getDeclarations(constructor) {
@@ -265,60 +264,57 @@ function getDeclarations(constructor) {
265
264
  }
266
265
  return declarations;
267
266
  }
268
- function getPropertyInternalKey(obj, key) {
269
- if (!Object.hasOwn(obj, internalSymbol)) {
270
- obj[internalSymbol] = /* @__PURE__ */ new Map();
271
- }
272
- let internalKey = obj[internalSymbol].get(key);
273
- if (!internalKey) {
274
- internalKey = Symbol(key);
275
- obj[internalSymbol].set(key, internalKey);
267
+ function propertyOffsetSet(target, key, newValue, declaration) {
268
+ const {
269
+ alias,
270
+ internalKey
271
+ } = declaration;
272
+ const oldValue = target[key];
273
+ if (alias) {
274
+ setObjectValueByPath(target, alias, newValue);
275
+ } else {
276
+ target[internalKey] = newValue;
276
277
  }
277
- return internalKey;
278
+ target.onUpdateProperty?.(key, newValue, oldValue);
278
279
  }
279
- function getPropertyDescriptor(key, declaration = {}) {
280
+ function propertyOffsetGet(target, key, declaration) {
280
281
  const {
281
282
  default: _default,
282
283
  fallback,
283
284
  alias,
284
- internal
285
+ internalKey
285
286
  } = declaration;
286
- const getDefaultValue = () => {
287
- return typeof _default === "function" ? _default() : _default;
288
- };
289
- const getFallbackValue = () => {
290
- return typeof fallback === "function" ? fallback() : fallback;
291
- };
287
+ let result;
288
+ if (alias) {
289
+ result = getObjectValueByPath(target, alias);
290
+ } else {
291
+ result = target[internalKey];
292
+ }
293
+ result = result ?? (typeof fallback === "function" ? fallback() : fallback);
294
+ if (result === void 0 && _default !== void 0 && !target[initedSymbol]) {
295
+ target[initedSymbol] = true;
296
+ const defaultValue = typeof _default === "function" ? _default() : _default;
297
+ if (defaultValue !== void 0) {
298
+ target[key] = defaultValue;
299
+ result = defaultValue;
300
+ }
301
+ }
302
+ return result;
303
+ }
304
+ function getPropertyDescriptor(key, declaration) {
292
305
  function get() {
293
- let result;
294
- if (alias && alias !== key) {
295
- result = getObjectValueByPath(this, alias);
296
- } else if (!internal && typeof this.getProperty !== "undefined") {
297
- result = this.getProperty(key);
306
+ if (typeof this.getProperty !== "undefined") {
307
+ return this.getProperty(key);
298
308
  } else {
299
- result = this[getPropertyInternalKey(this, key)];
309
+ return propertyOffsetGet(this, key, declaration);
300
310
  }
301
- result = result ?? getFallbackValue();
302
- if (result === void 0 && _default !== void 0 && !this[initedSymbol]) {
303
- this[initedSymbol] = true;
304
- const defaultValue = getDefaultValue();
305
- if (defaultValue !== void 0) {
306
- set.call(this, defaultValue);
307
- result = defaultValue;
308
- }
309
- }
310
- return result;
311
311
  }
312
312
  function set(newValue) {
313
- const oldValue = get.call(this);
314
- if (alias && alias !== key) {
315
- setObjectValueByPath(this, alias, newValue);
316
- } else if (!internal && typeof this.setProperty !== "undefined") {
313
+ if (typeof this.setProperty !== "undefined") {
317
314
  this.setProperty(key, newValue);
318
315
  } else {
319
- this[getPropertyInternalKey(this, key)] = newValue;
316
+ propertyOffsetSet(this, key, newValue, declaration);
320
317
  }
321
- this.onUpdateProperty?.(key, newValue, oldValue);
322
318
  }
323
319
  return {
324
320
  get,
@@ -326,8 +322,12 @@ function getPropertyDescriptor(key, declaration = {}) {
326
322
  };
327
323
  }
328
324
  function defineProperty(constructor, key, declaration = {}) {
329
- getDeclarations(constructor).set(key, declaration);
330
- const descriptor = getPropertyDescriptor(key, declaration);
325
+ const _declaration = {
326
+ ...declaration,
327
+ internalKey: Symbol(key)
328
+ };
329
+ getDeclarations(constructor).set(key, _declaration);
330
+ const descriptor = getPropertyDescriptor(key, _declaration);
331
331
  Object.defineProperty(constructor.prototype, key, {
332
332
  get() {
333
333
  return descriptor.get.call(this);
@@ -353,10 +353,14 @@ function property2(declaration = {}) {
353
353
  if (typeof key !== "string") {
354
354
  throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");
355
355
  }
356
- const descriptor = getPropertyDescriptor(key, declaration);
356
+ const _declaration = {
357
+ ...declaration,
358
+ internalKey: Symbol(key)
359
+ };
360
+ const descriptor = getPropertyDescriptor(key, _declaration);
357
361
  return {
358
362
  init(v) {
359
- getDeclarations(this.constructor).set(key, declaration);
363
+ getDeclarations(this.constructor).set(key, _declaration);
360
364
  descriptor.set.call(this, v);
361
365
  return v;
362
366
  },
@@ -384,27 +388,38 @@ class Reactivable extends Observable {
384
388
  isDirty(key) {
385
389
  return key ? this._updatedProperties.has(key) : this._updatedProperties.size > 0;
386
390
  }
387
- offsetGet(key) {
388
- return this[key];
389
- }
390
- offsetSet(key, newValue) {
391
- this[key] = newValue;
392
- }
393
391
  getProperty(key, defaultValue) {
394
- if (this._propertyAccessor?.getProperty) {
395
- return this._propertyAccessor.getProperty(key, defaultValue);
396
- } else {
397
- return this._properties.get(key) ?? defaultValue;
392
+ const declaration = this.getPropertyDeclaration(key);
393
+ if (declaration) {
394
+ if (declaration.internal || declaration.alias) {
395
+ return propertyOffsetGet(this, key, declaration);
396
+ } else {
397
+ if (this._propertyAccessor?.getProperty) {
398
+ return this._propertyAccessor.getProperty(key, defaultValue);
399
+ } else {
400
+ return this._properties.get(key) ?? defaultValue;
401
+ }
402
+ }
398
403
  }
404
+ return void 0;
399
405
  }
400
406
  setProperty(key, newValue) {
401
- this._propertyAccessor?.setProperty?.(key, newValue);
402
- this._properties.set(key, newValue);
407
+ const declaration = this.getPropertyDeclaration(key);
408
+ if (declaration) {
409
+ if (declaration.internal || declaration.alias) {
410
+ propertyOffsetSet(this, key, newValue, declaration);
411
+ } else {
412
+ const oldValue = this.getProperty(key);
413
+ this._propertyAccessor?.setProperty?.(key, newValue);
414
+ this._properties.set(key, newValue);
415
+ this.onUpdateProperty?.(key, newValue, oldValue);
416
+ }
417
+ }
403
418
  }
404
419
  getProperties(keys) {
405
420
  const properties = {};
406
- for (const [name, property] of this.getPropertyDeclarations()) {
407
- if (!property.internal && !property.alias && (!keys || keys.includes(name))) {
421
+ for (const [name, declaration] of this.getPropertyDeclarations()) {
422
+ if (!declaration.internal && !declaration.alias && (!keys || keys.includes(name))) {
408
423
  properties[name] = this.getProperty(name);
409
424
  }
410
425
  }
@@ -412,19 +427,17 @@ class Reactivable extends Observable {
412
427
  }
413
428
  setProperties(properties) {
414
429
  if (properties && typeof properties === "object") {
415
- for (const [name] of this.getPropertyDeclarations()) {
416
- if (name in properties) {
417
- this.offsetSet(name, properties[name]);
418
- }
430
+ for (const name in properties) {
431
+ this.setProperty(name, properties[name]);
419
432
  }
420
433
  }
421
434
  return this;
422
435
  }
423
436
  resetProperties() {
424
- for (const [name, property] of this.getPropertyDeclarations()) {
425
- this.offsetSet(
437
+ for (const [name, declaration] of this.getPropertyDeclarations()) {
438
+ this.setProperty(
426
439
  name,
427
- typeof property.default === "function" ? property.default() : property.default
440
+ typeof declaration.default === "function" ? declaration.default() : declaration.default
428
441
  );
429
442
  }
430
443
  return this;
@@ -436,21 +449,19 @@ class Reactivable extends Observable {
436
449
  return this.getPropertyDeclarations().get(key);
437
450
  }
438
451
  setPropertyAccessor(accessor) {
452
+ const declarations = this.getPropertyDeclarations();
453
+ this._propertyAccessor = void 0;
454
+ const oldValues = {};
455
+ declarations.forEach((_declaration, key) => {
456
+ oldValues[key] = this.getProperty(key);
457
+ });
439
458
  this._propertyAccessor = accessor;
440
- this.getPropertyDeclarations().forEach((declaration, key) => {
441
- const proxyed = declaration.internal || declaration.alias && declaration.alias !== key;
442
- const newValue = accessor.getProperty?.(key);
443
- let oldValue;
444
- if (proxyed) {
445
- oldValue = this.offsetGet(key);
446
- } else {
447
- oldValue = this._properties.get(key);
448
- }
459
+ declarations.forEach((declaration, key) => {
460
+ const newValue = this.getProperty(key);
461
+ const oldValue = oldValues[key];
449
462
  if (newValue !== void 0 && !Object.is(newValue, oldValue)) {
450
- if (proxyed) {
451
- this.offsetSet(key, newValue);
452
- } else {
453
- this._properties.set(key, newValue);
463
+ this.setProperty(key, newValue);
464
+ if (!declaration.internal && !declaration.alias) {
454
465
  this.requestUpdate(key, newValue, oldValue);
455
466
  }
456
467
  }
@@ -1865,7 +1876,6 @@ exports.getDefaultTransformStyle = getDefaultTransformStyle;
1865
1876
  exports.getNestedValue = getNestedValue;
1866
1877
  exports.getObjectValueByPath = getObjectValueByPath;
1867
1878
  exports.getPropertyDescriptor = getPropertyDescriptor;
1868
- exports.getPropertyInternalKey = getPropertyInternalKey;
1869
1879
  exports.hasCRLF = hasCRLF;
1870
1880
  exports.idGenerator = idGenerator;
1871
1881
  exports.isCRLF = isCRLF;
@@ -1914,6 +1924,8 @@ exports.parseGradient = parseGradient;
1914
1924
  exports.pick = pick;
1915
1925
  exports.property = property;
1916
1926
  exports.property2 = property2;
1927
+ exports.propertyOffsetGet = propertyOffsetGet;
1928
+ exports.propertyOffsetSet = propertyOffsetSet;
1917
1929
  exports.round = round;
1918
1930
  exports.setNestedValue = setNestedValue;
1919
1931
  exports.setObjectValueByPath = setObjectValueByPath;
package/dist/index.d.cts CHANGED
@@ -327,6 +327,7 @@ interface PropertyDeclaration {
327
327
  fallback?: unknown | (() => unknown);
328
328
  alias?: string;
329
329
  internal?: boolean;
330
+ internalKey: symbol;
330
331
  }
331
332
  interface PropertyAccessor {
332
333
  getProperty?: (key: string, defaultValue?: any) => any;
@@ -334,14 +335,15 @@ interface PropertyAccessor {
334
335
  onUpdateProperty?: (key: string, newValue: any, oldValue: any) => void;
335
336
  }
336
337
  declare function getDeclarations(constructor: any): Map<string, PropertyDeclaration>;
337
- declare function getPropertyInternalKey(obj: any, key: string): string;
338
- declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration?: PropertyDeclaration): {
338
+ declare function propertyOffsetSet(target: any & PropertyAccessor, key: string, newValue: any, declaration: PropertyDeclaration): void;
339
+ declare function propertyOffsetGet(target: any & PropertyAccessor, key: string, declaration: PropertyDeclaration): any;
340
+ declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration: PropertyDeclaration): {
339
341
  get: () => any;
340
342
  set: (v: any) => void;
341
343
  };
342
- declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: PropertyDeclaration): void;
344
+ declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: Partial<PropertyDeclaration>): void;
343
345
  declare function property<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): PropertyDecorator;
344
- declare function property2<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
346
+ declare function property2<V, T extends PropertyAccessor>(declaration?: Partial<PropertyDeclaration>): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
345
347
 
346
348
  interface NormalizedInnerShadow {
347
349
  color: NormalizedColor;
@@ -879,8 +881,6 @@ declare class Reactivable extends Observable implements PropertyAccessor {
879
881
  protected _updating: boolean;
880
882
  constructor(properties?: Record<string, any>);
881
883
  isDirty(key?: string): boolean;
882
- offsetGet(key: string): any;
883
- offsetSet(key: string, newValue: any): void;
884
884
  getProperty(key: string, defaultValue?: any): any;
885
885
  setProperty(key: string, newValue: any): void;
886
886
  getProperties(keys?: string[]): Record<string, any>;
@@ -900,5 +900,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
900
900
  clone(): this;
901
901
  }
902
902
 
903
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, getPropertyInternalKey, 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 };
903
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
904
904
  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, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.mts CHANGED
@@ -327,6 +327,7 @@ interface PropertyDeclaration {
327
327
  fallback?: unknown | (() => unknown);
328
328
  alias?: string;
329
329
  internal?: boolean;
330
+ internalKey: symbol;
330
331
  }
331
332
  interface PropertyAccessor {
332
333
  getProperty?: (key: string, defaultValue?: any) => any;
@@ -334,14 +335,15 @@ interface PropertyAccessor {
334
335
  onUpdateProperty?: (key: string, newValue: any, oldValue: any) => void;
335
336
  }
336
337
  declare function getDeclarations(constructor: any): Map<string, PropertyDeclaration>;
337
- declare function getPropertyInternalKey(obj: any, key: string): string;
338
- declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration?: PropertyDeclaration): {
338
+ declare function propertyOffsetSet(target: any & PropertyAccessor, key: string, newValue: any, declaration: PropertyDeclaration): void;
339
+ declare function propertyOffsetGet(target: any & PropertyAccessor, key: string, declaration: PropertyDeclaration): any;
340
+ declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration: PropertyDeclaration): {
339
341
  get: () => any;
340
342
  set: (v: any) => void;
341
343
  };
342
- declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: PropertyDeclaration): void;
344
+ declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: Partial<PropertyDeclaration>): void;
343
345
  declare function property<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): PropertyDecorator;
344
- declare function property2<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
346
+ declare function property2<V, T extends PropertyAccessor>(declaration?: Partial<PropertyDeclaration>): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
345
347
 
346
348
  interface NormalizedInnerShadow {
347
349
  color: NormalizedColor;
@@ -879,8 +881,6 @@ declare class Reactivable extends Observable implements PropertyAccessor {
879
881
  protected _updating: boolean;
880
882
  constructor(properties?: Record<string, any>);
881
883
  isDirty(key?: string): boolean;
882
- offsetGet(key: string): any;
883
- offsetSet(key: string, newValue: any): void;
884
884
  getProperty(key: string, defaultValue?: any): any;
885
885
  setProperty(key: string, newValue: any): void;
886
886
  getProperties(keys?: string[]): Record<string, any>;
@@ -900,5 +900,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
900
900
  clone(): this;
901
901
  }
902
902
 
903
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, getPropertyInternalKey, 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 };
903
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
904
904
  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, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.d.ts CHANGED
@@ -327,6 +327,7 @@ interface PropertyDeclaration {
327
327
  fallback?: unknown | (() => unknown);
328
328
  alias?: string;
329
329
  internal?: boolean;
330
+ internalKey: symbol;
330
331
  }
331
332
  interface PropertyAccessor {
332
333
  getProperty?: (key: string, defaultValue?: any) => any;
@@ -334,14 +335,15 @@ interface PropertyAccessor {
334
335
  onUpdateProperty?: (key: string, newValue: any, oldValue: any) => void;
335
336
  }
336
337
  declare function getDeclarations(constructor: any): Map<string, PropertyDeclaration>;
337
- declare function getPropertyInternalKey(obj: any, key: string): string;
338
- declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration?: PropertyDeclaration): {
338
+ declare function propertyOffsetSet(target: any & PropertyAccessor, key: string, newValue: any, declaration: PropertyDeclaration): void;
339
+ declare function propertyOffsetGet(target: any & PropertyAccessor, key: string, declaration: PropertyDeclaration): any;
340
+ declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration: PropertyDeclaration): {
339
341
  get: () => any;
340
342
  set: (v: any) => void;
341
343
  };
342
- declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: PropertyDeclaration): void;
344
+ declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: Partial<PropertyDeclaration>): void;
343
345
  declare function property<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): PropertyDecorator;
344
- declare function property2<V, T extends PropertyAccessor>(declaration?: PropertyDeclaration): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
346
+ declare function property2<V, T extends PropertyAccessor>(declaration?: Partial<PropertyDeclaration>): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
345
347
 
346
348
  interface NormalizedInnerShadow {
347
349
  color: NormalizedColor;
@@ -879,8 +881,6 @@ declare class Reactivable extends Observable implements PropertyAccessor {
879
881
  protected _updating: boolean;
880
882
  constructor(properties?: Record<string, any>);
881
883
  isDirty(key?: string): boolean;
882
- offsetGet(key: string): any;
883
- offsetSet(key: string, newValue: any): void;
884
884
  getProperty(key: string, defaultValue?: any): any;
885
885
  setProperty(key: string, newValue: any): void;
886
886
  getProperties(keys?: string[]): Record<string, any>;
@@ -900,5 +900,5 @@ declare class Reactivable extends Observable implements PropertyAccessor {
900
900
  clone(): this;
901
901
  }
902
902
 
903
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, getPropertyInternalKey, 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 };
903
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
904
904
  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, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(o,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(o=typeof globalThis<"u"?globalThis:o||self,j(o.modernIdoc={}))})(this,(function(o){"use strict";function j(t){return typeof t=="string"?{src:t}:t}var _e={grad:.9,turn:360,rad:360/(2*Math.PI)},D=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},y=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},z=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},mt=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},vt=function(t){return{r:z(t.r,0,255),g:z(t.g,0,255),b:z(t.b,0,255),a:z(t.a)}},et=function(t){return{r:y(t.r),g:y(t.g),b:y(t.b),a:y(t.a,3)}},we=/^#([0-9a-f]{3,8})$/i,K=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},yt=function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=Math.max(e,r,n),u=a-Math.min(e,r,n),l=u?a===e?(r-n)/u:a===r?2+(n-e)/u:4+(e-r)/u:0;return{h:60*(l<0?l+6:l),s:a?u/a*100:0,v:a/255*100,a:i}},bt=function(t){var e=t.h,r=t.s,n=t.v,i=t.a;e=e/360*6,r/=100,n/=100;var a=Math.floor(e),u=n*(1-r),l=n*(1-(e-a)*r),f=n*(1-(1-e+a)*r),m=a%6;return{r:255*[n,l,u,u,f,n][m],g:255*[f,n,n,l,u,u][m],b:255*[u,u,f,n,n,l][m],a:i}},St=function(t){return{h:mt(t.h),s:z(t.s,0,100),l:z(t.l,0,100),a:z(t.a)}},_t=function(t){return{h:y(t.h),s:y(t.s),l:y(t.l),a:y(t.a,3)}},wt=function(t){return bt((r=(e=t).s,{h:e.h,s:(r*=((n=e.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:e.a}));var e,r,n},V=function(t){return{h:(e=yt(t)).h,s:(i=(200-(r=e.s))*(n=e.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,r,n,i},Ce=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pe=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ze=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ee=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ct={string:[[function(t){var e=we.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?y(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?y(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ze.exec(t)||Ee.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=Ce.exec(t)||Pe.exec(t);if(!e)return null;var r,n,i=St({h:(r=e[1],n=e[2],n===void 0&&(n="deg"),Number(r)*(_e[n]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return wt(i)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=i===void 0?1:i;return D(e)&&D(r)&&D(n)?vt({r:Number(e),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,n=t.l,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var u=St({h:Number(e),s:Number(r),l:Number(n),a:Number(a)});return wt(u)},"hsl"],[function(t){var e=t.h,r=t.s,n=t.v,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var u=(function(l){return{h:mt(l.h),s:z(l.s,0,100),v:z(l.v,0,100),a:z(l.a)}})({h:Number(e),s:Number(r),v:Number(n),a:Number(a)});return bt(u)},"hsv"]]},Pt=function(t,e){for(var r=0;r<e.length;r++){var n=e[r][0](t);if(n)return[n,e[r][1]]}return[null,void 0]},Fe=function(t){return typeof t=="string"?Pt(t.trim(),Ct.string):typeof t=="object"&&t!==null?Pt(t,Ct.object):[null,void 0]},rt=function(t,e){var r=V(t);return{h:r.h,s:z(r.s+100*e,0,100),l:r.l,a:r.a}},nt=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},zt=function(t,e){var r=V(t);return{h:r.h,s:r.s,l:z(r.l+100*e,0,100),a:r.a}},Et=(function(){function t(e){this.parsed=Fe(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return y(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=et(this.rgba),r=e.r,n=e.g,i=e.b,u=(a=e.a)<1?K(y(255*a)):"","#"+K(r)+K(n)+K(i)+u;var e,r,n,i,a,u},t.prototype.toRgb=function(){return et(this.rgba)},t.prototype.toRgbString=function(){return e=et(this.rgba),r=e.r,n=e.g,i=e.b,(a=e.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var e,r,n,i,a},t.prototype.toHsl=function(){return _t(V(this.rgba))},t.prototype.toHslString=function(){return e=_t(V(this.rgba)),r=e.h,n=e.s,i=e.l,(a=e.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var e,r,n,i,a},t.prototype.toHsv=function(){return e=yt(this.rgba),{h:y(e.h),s:y(e.s),v:y(e.v),a:y(e.a,3)};var e},t.prototype.invert=function(){return L({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),L(rt(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),L(rt(this.rgba,-e))},t.prototype.grayscale=function(){return L(rt(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),L(zt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),L(zt(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?L({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):y(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=V(this.rgba);return typeof e=="number"?L({h:e,s:r.s,l:r.l,a:r.a}):y(r.h)},t.prototype.isEqual=function(e){return this.toHex()===L(e).toHex()},t})(),L=function(t){return t instanceof Et?t:new Et(t)};class Oe{eventListeners=new Map;addEventListener(e,r,n){const i={value:r,options:n},a=this.eventListeners.get(e);return a?Array.isArray(a)?a.push(i):this.eventListeners.set(e,[a,i]):this.eventListeners.set(e,i),this}removeEventListener(e,r,n){if(!r)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let u=0,l=i.length;u<l;u++){const f=i[u];(f.value!==r||typeof n=="object"&&n?.once&&(typeof f.options=="boolean"||!f.options?.once))&&a.push(f)}a.length?this.eventListeners.set(e,a.length===1?a[0]:a):this.eventListeners.delete(e)}else i.value===r&&(typeof n=="boolean"||!n?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...r){const n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let i=n.length,a=0;a<i;a++){const u=n[a];typeof u.options=="object"&&u.options?.once&&this.off(e,u.value,u.options),u.value.apply(this,r)}else typeof n.options=="object"&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,r);return!0}else return!1}on(e,r,n){return this.addEventListener(e,r,n)}once(e,r){return this.addEventListener(e,r,{once:!0})}off(e,r,n){return this.removeEventListener(e,r,n)}emit(e,...r){this.dispatchEvent(e,...r)}}function h(t){return t==null||t==="none"}function N(t,e=0,r=10**e){return Math.round(r*t)/r+0}function _(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(n=>_(n,e)):t;const r={};for(const n in t){const i=t[n];i!=null&&(e?r[n]=_(i,e):r[n]=i)}return r}function A(t,e){const r={};return e.forEach(n=>{n in t&&(r[n]=t[n])}),r}function q(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const r=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!r.length||r.every(n=>t[n]===e[n])}return!1}function Ft(t,e,r){const n=e.length-1;if(n<0)return t===void 0?r:t;for(let i=0;i<n;i++){if(t==null)return r;t=t[e[i]]}return t==null||t[e[n]]===void 0?r:t[e[n]]}function Ot(t,e,r){const n=e.length-1;for(let i=0;i<n;i++)typeof t[e[i]]!="object"&&(t[e[i]]={}),t=t[e[i]];t[e[n]]=r}function Lt(t,e,r){return t==null||!e||typeof e!="string"?r:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Ft(t,e.split("."),r))}function Dt(t,e,r){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Ot(t,e.split("."),r)}class Nt{_observers=new Map;on(e,r){let n=this._observers.get(e);return n===void 0&&this._observers.set(e,n=new Set),n.add(r),this}once(e,r){const n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n),this}off(e,r){const n=this._observers.get(e);return n!==void 0&&(n.delete(r),n.size===0&&this._observers.delete(e)),this}emit(e,...r){return Array.from((this._observers.get(e)||new Map).values()).forEach(n=>n(...r)),this}destroy(){this._observers=new Map}}class Le{_map=new WeakMap;_toRaw(e){if(e&&typeof e=="object"){const r=e.__v_raw;r&&(e=this._toRaw(r))}return e}delete(e){return this._map.delete(this._toRaw(e))}get(e){return this._map.get(this._toRaw(e))}has(e){return this._map.has(this._toRaw(e))}set(e,r){return this._map.set(this._toRaw(e),this._toRaw(r)),this}}const x=Symbol("internal"),it=Symbol("properties"),At=Symbol("inited");function k(t){let e;if(Object.hasOwn(t,it))e=t[it];else{const r=Object.getPrototypeOf(t);e=new Map(r?k(r):void 0),t[it]=e}return e}function ot(t,e){Object.hasOwn(t,x)||(t[x]=new Map);let r=t[x].get(e);return r||(r=Symbol(e),t[x].set(e,r)),r}function at(t,e={}){const{default:r,fallback:n,alias:i,internal:a}=e,u=()=>typeof r=="function"?r():r,l=()=>typeof n=="function"?n():n;function f(){let g;if(i&&i!==t?g=Lt(this,i):!a&&typeof this.getProperty<"u"?g=this.getProperty(t):g=this[ot(this,t)],g=g??l(),g===void 0&&r!==void 0&&!this[At]){this[At]=!0;const p=u();p!==void 0&&(m.call(this,p),g=p)}return g}function m(g){const p=f.call(this);i&&i!==t?Dt(this,i,g):!a&&typeof this.setProperty<"u"?this.setProperty(t,g):this[ot(this,t)]=g,this.onUpdateProperty?.(t,g,p)}return{get:f,set:m}}function Rt(t,e,r={}){k(t).set(e,r);const n=at(e,r);Object.defineProperty(t.prototype,e,{get(){return n.get.call(this)},set(i){n.set.call(this,i)},configurable:!0,enumerable:!0})}function De(t){return function(e,r){if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Rt(e.constructor,r,t)}}function Ne(t={}){return function(e,r){const n=r.name;if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i=at(n,t);return{init(a){return k(this.constructor).set(n,t),i.set.call(this,a),a},get(){return i.get.call(this)},set(a){i.set.call(this,a)}}}}class Ae extends Nt{_propertyAccessor;_properties=new Map;_updatedProperties=new Map;_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?this._updatedProperties.has(e):this._updatedProperties.size>0}offsetGet(e){return this[e]}offsetSet(e,r){this[e]=r}getProperty(e,r){return this._propertyAccessor?.getProperty?this._propertyAccessor.getProperty(e,r):this._properties.get(e)??r}setProperty(e,r){this._propertyAccessor?.setProperty?.(e,r),this._properties.set(e,r)}getProperties(e){const r={};for(const[n,i]of this.getPropertyDeclarations())!i.internal&&!i.alias&&(!e||e.includes(n))&&(r[n]=this.getProperty(n));return r}setProperties(e){if(e&&typeof e=="object")for(const[r]of this.getPropertyDeclarations())r in e&&this.offsetSet(r,e[r]);return this}resetProperties(){for(const[e,r]of this.getPropertyDeclarations())this.offsetSet(e,typeof r.default=="function"?r.default():r.default);return this}getPropertyDeclarations(){return k(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}setPropertyAccessor(e){return this._propertyAccessor=e,this.getPropertyDeclarations().forEach((r,n)=>{const i=r.internal||r.alias&&r.alias!==n,a=e.getProperty?.(n);let u;i?u=this.offsetGet(n):u=this._properties.get(n),a!==void 0&&!Object.is(a,u)&&(i?this.offsetSet(n,a):(this._properties.set(n,a),this.requestUpdate(n,a,u)))}),this}async _nextTick(){return"requestAnimationFrame"in globalThis?new Promise(e=>globalThis.requestAnimationFrame(e)):Promise.resolve()}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await this._nextTick(),this._updating&&(this.onUpdate(),this._updating=!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties=new Map}onUpdateProperty(e,r,n){Object.is(r,n)||this.requestUpdate(e,r,n)}requestUpdate(e,r,n){e!==void 0&&(this._updatedProperties.set(e,n),this._changedProperties.add(e),this._updateProperty(e,r,n),this.emit("updateProperty",e,r,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,r,n){}toJSON(){const e={};return this._properties.forEach((r,n)=>{r!==void 0&&(r&&typeof r=="object"?"toJSON"in r&&typeof r.toJSON=="function"?e[n]=r.toJSON():Array.isArray(r)?e[n]=[...r]:e[n]={...r}:e[n]=r)}),e}clone(){return new this.constructor(this.toJSON())}}function st(t){let e;return typeof t=="number"?e={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:e=t,L(e)}function Re(t){return{r:N(t.r),g:N(t.g),b:N(t.b),a:N(t.a,3)}}function J(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const $="#000000FF";function It(t){return st(t).isValid()}function S(t,e=!1){const r=st(t);if(!r.isValid()){if(typeof t=="string")return t;const l=`Failed to normalizeColor ${t}`;if(e)throw new Error(l);return console.warn(l),$}const{r:n,g:i,b:a,a:u}=Re(r.rgba);return`#${J(n)}${J(i)}${J(a)}${J(N(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 r(s){const c=new Error(`${e}: ${s}`);throw c.source=e,c}function n(){const s=i();return e.length>0&&r("Invalid input not EOF"),s}function i(){return T(a)}function a(){return u("linear-gradient",t.linearGradient,f)||u("repeating-linear-gradient",t.repeatingLinearGradient,f)||u("radial-gradient",t.radialGradient,p)||u("repeating-radial-gradient",t.repeatingRadialGradient,p)}function u(s,c,d){return l(c,b=>{const G=d();return G&&(v(t.comma)||r("Missing comma before color stops")),{type:s,orientation:G,colorStops:T(ht)}})}function l(s,c){const d=v(s);if(d){v(t.startCall)||r("Missing (");const b=c(d);return v(t.endCall)||r("Missing )"),b}}function f(){const s=m();if(s)return s;const c=P("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:g()}function m(){return P("directional",t.sideOrCorner,1)}function g(){return P("angular",t.angleValue,1)||P("angular",t.radianValue,1)}function p(){let s,c=w(),d;return c&&(s=[],s.push(c),d=e,v(t.comma)&&(c=w(),c?s.push(c):e=d)),s}function w(){let s=C()||R();if(s)s.at=O();else{const c=E();if(c){s=c;const d=O();d&&(s.at=d)}else{const d=O();if(d)s={type:"default-radial",at:d};else{const b=I();b&&(s={type:"default-radial",at:b})}}}return s}function C(){const s=P("shape",/^(circle)/i,0);return s&&(s.style=Se()||E()),s}function R(){const s=P("shape",/^(ellipse)/i,0);return s&&(s.style=I()||tt()||E()),s}function E(){return P("extent-keyword",t.extentKeywords,1)}function O(){if(P("position",/^at/,0)){const s=I();return s||r("Missing positioning value"),s}}function I(){const s=B();if(s.x||s.y)return{type:"position",value:s}}function B(){return{x:tt(),y:tt()}}function T(s){let c=s();const d=[];if(c)for(d.push(c);v(t.comma);)c=s(),c?d.push(c):r("One extra comma");return d}function ht(){const s=Ke();return s||r("Expected color definition"),s.length=tt(),s}function Ke(){return xe()||Qe()||Ze()||Xe()||Je()||Ye()||qe()}function qe(){return P("literal",t.literalColor,0)}function xe(){return P("hex",t.hexColor,1)}function Je(){return l(t.rgbColor,()=>({type:"rgb",value:T(U)}))}function Xe(){return l(t.rgbaColor,()=>({type:"rgba",value:T(U)}))}function Ye(){return l(t.varColor,()=>({type:"var",value:tr()}))}function Ze(){return l(t.hslColor,()=>{v(t.percentageValue)&&r("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=U();v(t.comma);let d=v(t.percentageValue);const b=d?d[1]:null;v(t.comma),d=v(t.percentageValue);const G=d?d[1]:null;return(!b||!G)&&r("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,b,G]}})}function Qe(){return l(t.hslaColor,()=>{const s=U();v(t.comma);let c=v(t.percentageValue);const d=c?c[1]:null;v(t.comma),c=v(t.percentageValue);const b=c?c[1]:null;v(t.comma);const G=U();return(!d||!b)&&r("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[s,d,b,G]}})}function tr(){return v(t.variableName)[1]}function U(){return v(t.number)[1]}function tt(){return P("%",t.percentageValue,1)||er()||rr()||Se()}function er(){return P("position-keyword",t.positionKeywords,1)}function rr(){return l(t.calcValue,()=>{let s=1,c=0;for(;s>0&&c<e.length;){const b=e.charAt(c);b==="("?s++:b===")"&&s--,c++}s>0&&r("Missing closing parenthesis in calc() expression");const d=e.substring(0,c-1);return pt(c-1),{type:"calc",value:d}})}function Se(){return P("px",t.pixelValue,1)||P("em",t.emValue,1)}function P(s,c,d){const b=v(c);if(b)return{type:s,value:b[d]}}function v(s){let c,d;return d=/^\s+/.exec(e),d&&pt(d[0].length),c=s.exec(e),c&&pt(c[0].length),c}function pt(s){e=e.substr(s)}return function(s){return e=s.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),n()}})();const Gt=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 r=t.visit(e.orientation);return r&&(r+=", "),e.type+"("+r+t.visit(e.colorStops)+")"},visit_shape:function(e){var r=e.value,n=t.visit(e.at),i=t.visit(e.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(e){var r="",n=t.visit(e.at);return n&&(r+=n),r},"visit_extent-keyword":function(e){var r=e.value,n=t.visit(e.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return t.visit(e.value.x)+" "+t.visit(e.value.y)},"visit_%":function(e){return e.value+"%"},visit_em:function(e){return e.value+"em"},visit_px:function(e){return e.value+"px"},visit_calc:function(e){return"calc("+e.value+")"},visit_literal:function(e){return t.visit_color(e.value,e)},visit_hex:function(e){return t.visit_color("#"+e.value,e)},visit_rgb:function(e){return t.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return t.visit_color("rgba("+e.value.join(", ")+")",e)},visit_hsl:function(e){return t.visit_color("hsl("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%)",e)},visit_hsla:function(e){return t.visit_color("hsla("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%, "+e.value[3]+")",e)},visit_var:function(e){return t.visit_color("var("+e.value+")",e)},visit_color:function(e,r){var n=e,i=t.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var r="",n=e.length;return e.forEach(function(i,a){r+=t.visit(i),a<n-1&&(r+=", ")}),r},visit_object:function(e){return e.width&&e.height?t.visit(e.width)+" "+t.visit(e.height):""},visit:function(e){if(!e)return"";if(e instanceof Array)return t.visit_array(e);if(typeof e=="object"&&!e.type)return t.visit_object(e);if(e.type){var r=t["visit_"+e.type];if(r)return r(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}})();const Ie=Y.stringify.bind(Y);function jt(t){const e=t.length-1;return t.map((r,n)=>{const i=r.value;let a=N(n/e,3),u="#00000000";switch(r.type){case"rgb":u=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":u=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":u=S(r.value);break;case"hex":u=S(`#${r.value}`);break}switch(r.length?.type){case"%":a=Number(r.length.value)/100;break}return{offset:a,color:u}})}function Mt(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:jt(t.colorStops)}}function Tt(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:jt(t.colorStops)}}function W(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Vt(t){return Gt(t).map(e=>{switch(e?.type){case"linear-gradient":return Mt(e);case"repeating-linear-gradient":return{...Mt(e),repeat:!0};case"radial-gradient":return Tt(e);case"repeating-radial-gradient":return{...Tt(e),repeat:!0};default:return}}).filter(Boolean)}function kt(t){let e;return typeof t=="string"?e={color:t}:e={...t},{color:S(e.color)}}function $t(t){let e;if(typeof t=="string"?e={image:t}:e={...t},e.image){const{type:r,...n}=Vt(e.image)[0]??{};switch(r){case"radial-gradient":return{radialGradient:n};case"linear-gradient":return{linearGradient:n}}}return A(e,["linearGradient","radialGradient","rotateWithShape"])}function Wt(t){let e;return typeof t=="string"?e={image:t}:e={...t},A(e,["image","cropRect","stretchRect","tile","dpi","opacity","rotateWithShape"])}function Ht(t){let e;return typeof t=="string"?e={preset:t}:e={...t},h(e.foregroundColor)?delete e.foregroundColor:e.foregroundColor=S(e.foregroundColor),h(e.backgroundColor)?delete e.backgroundColor:e.backgroundColor=S(e.backgroundColor),A(e,["preset","foregroundColor","backgroundColor"])}function Bt(t){return!h(t.color)}function Ut(t){return typeof t=="string"?It(t):Bt(t)}function Kt(t){return!h(t.image)&&W(t.image)||!!t.linearGradient||!!t.radialGradient}function qt(t){return typeof t=="string"?W(t):Kt(t)}function xt(t){return!h(t.image)&&!W(t.image)}function Jt(t){return typeof t=="string"?!W(t):xt(t)}function Xt(t){return!h(t.preset)}function Yt(t){return typeof t=="string"?!1:Xt(t)}function F(t){const e=t&&typeof t=="object"?t.enabled:void 0;return Ut(t)?_({enabled:e,...kt(t)}):qt(t)?_({enabled:e,...$t(t)}):Jt(t)?_({enabled:e,...Wt(t)}):Yt(t)?_({enabled:e,...Ht(t)}):{}}function Zt(t){return typeof t=="string"?{...F(t)}:{...F(t),...A(t,["fillWithShape"])}}function ut(){return{color:$,offsetX:0,offsetY:0,blurRadius:1}}function lt(t){return{...ut(),..._({...t,color:h(t.color)?$:S(t.color)})}}function Qt(){return{...ut(),scaleX:1,scaleY:1}}function te(t){return{...Qt(),...lt(t)}}function Ge(t){return t}function ee(t){return _({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:te(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:lt(t.innerShadow)})}function re(t){return typeof t=="string"?{...F(t)}:{...F(t),...A(t,["fillWithShape"])}}const je="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let Me=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=je[r[t]&63];return e};const ne=()=>Me(10),ie=ne;function H(t){return typeof t=="string"?{...F(t)}:{...F(t),...A(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function oe(t){return typeof t=="string"?{color:S(t)}:{...t,color:h(t.color)?$:S(t.color)}}function ae(){return{boxShadow:"none"}}function se(t){return typeof t=="string"?t.startsWith("<svg")?{svg:t}:{paths:[{data:t}]}:Array.isArray(t)?{paths:t.map(e=>typeof e=="string"?{data:e}:e)}:t}function ue(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function le(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function ce(){return{...ue(),...le(),...ae(),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 fe(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function de(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function ge(){return{...fe(),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 he(){return{...de(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function pe(){return{...he(),...ge(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function M(t){return _({...t,color:h(t.color)?void 0:S(t.color),backgroundColor:h(t.backgroundColor)?void 0:S(t.backgroundColor),borderColor:h(t.borderColor)?void 0:S(t.borderColor),outlineColor:h(t.outlineColor)?void 0:S(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:S(t.shadowColor)})}function Te(){return{...ce(),...pe()}}const ct=/\r\n|\n\r|\n|\r/,Ve=new RegExp(`${ct.source}|<br\\/>`,"g"),ke=new RegExp(`^(${ct.source})$`),ft=`
2
- `;function $e(t){return ct.test(t)}function dt(t){return ke.test(t)}function me(t){return t.replace(Ve,ft)}function Z(t){const e=[];function r(){return e[e.length-1]}function n(l,f,m){const g=l?M(l):{},p=f?F(f):void 0,w=m?H(m):void 0,C=_({...g,fill:p,outline:w,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=C:e.push(C),C}function i(l="",f,m,g){const p=f?M(f):{},w=m?F(m):void 0,C=g?H(g):void 0;Array.from(l).forEach(R=>{if(dt(R)){const{fragments:E,fill:O,outline:I,...B}=r()||n();E.length||E.push(_({...p,fill:w,outline:C,content:ft})),n(B,O,I)}else{const E=r()||n(),O=E.fragments[E.fragments.length-1];if(O){const{content:I,fill:B,outline:T,...ht}=O;if(q(w,B)&&q(C,T)&&q(p,ht)){O.content=`${I}${R}`;return}}E.fragments.push(_({...p,fill:w,outline:C,content:R}))}})}(Array.isArray(t)?t:[t]).forEach(l=>{if(typeof l=="string")n(),i(l);else if(gt(l)){const{content:f,fill:m,outline:g,...p}=l;n(p,m,g),i(f)}else if(ve(l)){const{fragments:f,fill:m,outline:g,...p}=l;n(p,m,g),f.forEach(w=>{const{content:C,fill:R,outline:E,...O}=w;i(C,O,R,E)})}else Array.isArray(l)?(n(),l.forEach(f=>{if(typeof f=="string")i(f);else if(gt(f)){const{content:m,fill:g,outline:p,...w}=f;i(m,w,g,p)}})):console.warn("Failed to parse text content",l)});const u=r();return u&&!u.fragments.length&&u.fragments.push({content:""}),e}function ve(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function gt(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function ye(t){return typeof t=="string"||Array.isArray(t)?{content:Z(t)}:_({...t,content:Z(t.content??""),style:t.style?M(t.style):void 0,effects:t.effects?t.effects.map(e=>M(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?F(t.fill):void 0,outline:t.outline?H(t.outline):void 0})}function We(t){return Z(t).map(e=>{const r=me(e.fragments.flatMap(n=>n.content).join(""));return dt(r)?"":r}).join(ft)}function be(t){return typeof t=="string"?{src:t}:t}function Q(t){return _({...t,id:t.id??ie(),style:h(t.style)?void 0:M(t.style),text:h(t.text)?void 0:ye(t.text),background:h(t.background)?void 0:Zt(t.background),shape:h(t.shape)?void 0:se(t.shape),fill:h(t.fill)?void 0:F(t.fill),outline:h(t.outline)?void 0:H(t.outline),foreground:h(t.foreground)?void 0:re(t.foreground),shadow:h(t.shadow)?void 0:oe(t.shadow),video:h(t.video)?void 0:be(t.video),audio:h(t.audio)?void 0:j(t.audio),effect:h(t.effect)?void 0:ee(t.effect),children:t.children?.map(e=>Q(e))})}function He(t){return Q(t)}function Be(t){const e={};for(const r in t.children){const n=Q(t.children[r]);delete n.children,e[r]=n}return{...t,children:e}}function Ue(t){const{children:e,...r}=t;function n(f){const{parentId:m,childrenIds:g,...p}=f;return{...p,children:[]}}const i={},a=[],u={...r,children:a};function l(f){if(!e[f]||i[f])return;const m=e[f],g=n(m);i[f]=g;const p=m.parentId;if(p){l(p);const w=e[p],C=i[p];if(!C)return;w?.childrenIds&&C?.children&&(C.children[w.childrenIds.indexOf(f)]=g)}else a.push(g)}for(const f in e)l(f);return u}o.EventEmitter=Oe,o.Observable=Nt,o.RawWeakMap=Le,o.Reactivable=Ae,o.clearUndef=_,o.defaultColor=$,o.defineProperty=Rt,o.flatDocumentToDocument=Ue,o.getDeclarations=k,o.getDefaultElementStyle=ce,o.getDefaultHighlightStyle=fe,o.getDefaultInnerShadow=ut,o.getDefaultLayoutStyle=ue,o.getDefaultListStyleStyle=de,o.getDefaultOuterShadow=Qt,o.getDefaultShadowStyle=ae,o.getDefaultStyle=Te,o.getDefaultTextInlineStyle=ge,o.getDefaultTextLineStyle=he,o.getDefaultTextStyle=pe,o.getDefaultTransformStyle=le,o.getNestedValue=Ft,o.getObjectValueByPath=Lt,o.getPropertyDescriptor=at,o.getPropertyInternalKey=ot,o.hasCRLF=$e,o.idGenerator=ie,o.isCRLF=dt,o.isColor=It,o.isColorFill=Ut,o.isColorFillObject=Bt,o.isEqualObject=q,o.isFragmentObject=gt,o.isGradient=W,o.isGradientFill=qt,o.isGradientFillObject=Kt,o.isImageFill=Jt,o.isImageFillObject=xt,o.isNone=h,o.isParagraphObject=ve,o.isPresetFill=Yt,o.isPresetFillObject=Xt,o.nanoid=ne,o.normalizeAudio=j,o.normalizeBackground=Zt,o.normalizeCRLF=me,o.normalizeColor=S,o.normalizeColorFill=kt,o.normalizeDocument=He,o.normalizeEffect=ee,o.normalizeElement=Q,o.normalizeFill=F,o.normalizeFlatDocument=Be,o.normalizeForeground=re,o.normalizeGradient=Vt,o.normalizeGradientFill=$t,o.normalizeImageFill=Wt,o.normalizeInnerShadow=lt,o.normalizeOuterShadow=te,o.normalizeOutline=H,o.normalizePresetFill=Ht,o.normalizeShadow=oe,o.normalizeShape=se,o.normalizeSoftEdge=Ge,o.normalizeStyle=M,o.normalizeText=ye,o.normalizeTextContent=Z,o.normalizeVideo=be,o.parseColor=st,o.parseGradient=Gt,o.pick=A,o.property=De,o.property2=Ne,o.round=N,o.setNestedValue=Ot,o.setObjectValueByPath=Dt,o.stringifyGradient=Ie,o.textContentToString=We,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(o,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(o=typeof globalThis<"u"?globalThis:o||self,j(o.modernIdoc={}))})(this,(function(o){"use strict";function j(t){return typeof t=="string"?{src:t}:t}var _e={grad:.9,turn:360,rad:360/(2*Math.PI)},D=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},v=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},z=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},mt=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},vt=function(t){return{r:z(t.r,0,255),g:z(t.g,0,255),b:z(t.b,0,255),a:z(t.a)}},tt=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,K=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},yt=function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=Math.max(e,r,n),s=a-Math.min(e,r,n),u=s?a===e?(r-n)/s:a===r?2+(n-e)/s:4+(e-r)/s:0;return{h:60*(u<0?u+6:u),s:a?s/a*100:0,v:a/255*100,a:i}},bt=function(t){var e=t.h,r=t.s,n=t.v,i=t.a;e=e/360*6,r/=100,n/=100;var a=Math.floor(e),s=n*(1-r),u=n*(1-(e-a)*r),f=n*(1-(1-e+a)*r),g=a%6;return{r:255*[n,u,s,s,f,n][g],g:255*[f,n,n,u,s,s][g],b:255*[s,s,f,n,n,u][g],a:i}},St=function(t){return{h:mt(t.h),s:z(t.s,0,100),l:z(t.l,0,100),a:z(t.a)}},_t=function(t){return{h:v(t.h),s:v(t.s),l:v(t.l),a:v(t.a,3)}},Ct=function(t){return bt((r=(e=t).s,{h:e.h,s:(r*=((n=e.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:e.a}));var e,r,n},V=function(t){return{h:(e=yt(t)).h,s:(i=(200-(r=e.s))*(n=e.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,r,n,i},we=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pe=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ze=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Oe=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,wt={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=ze.exec(t)||Oe.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=we.exec(t)||Pe.exec(t);if(!e)return null;var r,n,i=St({h:(r=e[1],n=e[2],n===void 0&&(n="deg"),Number(r)*(_e[n]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Ct(i)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,n=t.b,i=t.a,a=i===void 0?1:i;return D(e)&&D(r)&&D(n)?vt({r:Number(e),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,n=t.l,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=St({h:Number(e),s:Number(r),l:Number(n),a:Number(a)});return Ct(s)},"hsl"],[function(t){var e=t.h,r=t.s,n=t.v,i=t.a,a=i===void 0?1:i;if(!D(e)||!D(r)||!D(n))return null;var s=(function(u){return{h:mt(u.h),s:z(u.s,0,100),v:z(u.v,0,100),a:z(u.a)}})({h:Number(e),s:Number(r),v:Number(n),a:Number(a)});return bt(s)},"hsv"]]},Pt=function(t,e){for(var r=0;r<e.length;r++){var n=e[r][0](t);if(n)return[n,e[r][1]]}return[null,void 0]},Ee=function(t){return typeof t=="string"?Pt(t.trim(),wt.string):typeof t=="object"&&t!==null?Pt(t,wt.object):[null,void 0]},et=function(t,e){var r=V(t);return{h:r.h,s:z(r.s+100*e,0,100),l:r.l,a:r.a}},rt=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},zt=function(t,e){var r=V(t);return{h:r.h,s:r.s,l:z(r.l+100*e,0,100),a:r.a}},Ot=(function(){function t(e){this.parsed=Ee(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(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=tt(this.rgba),r=e.r,n=e.g,i=e.b,s=(a=e.a)<1?K(v(255*a)):"","#"+K(r)+K(n)+K(i)+s;var e,r,n,i,a,s},t.prototype.toRgb=function(){return tt(this.rgba)},t.prototype.toRgbString=function(){return e=tt(this.rgba),r=e.r,n=e.g,i=e.b,(a=e.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var e,r,n,i,a},t.prototype.toHsl=function(){return _t(V(this.rgba))},t.prototype.toHslString=function(){return e=_t(V(this.rgba)),r=e.h,n=e.s,i=e.l,(a=e.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var e,r,n,i,a},t.prototype.toHsv=function(){return e=yt(this.rgba),{h:v(e.h),s:v(e.s),v:v(e.v),a:v(e.a,3)};var e},t.prototype.invert=function(){return L({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),L(et(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),L(et(this.rgba,-e))},t.prototype.grayscale=function(){return L(et(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),L(zt(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),L(zt(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?L({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):v(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=V(this.rgba);return typeof e=="number"?L({h:e,s:r.s,l:r.l,a:r.a}):v(r.h)},t.prototype.isEqual=function(e){return this.toHex()===L(e).toHex()},t})(),L=function(t){return t instanceof Ot?t:new Ot(t)};class Fe{eventListeners=new Map;addEventListener(e,r,n){const i={value:r,options:n},a=this.eventListeners.get(e);return a?Array.isArray(a)?a.push(i):this.eventListeners.set(e,[a,i]):this.eventListeners.set(e,i),this}removeEventListener(e,r,n){if(!r)return this.eventListeners.delete(e),this;const i=this.eventListeners.get(e);if(!i)return this;if(Array.isArray(i)){const a=[];for(let s=0,u=i.length;s<u;s++){const f=i[s];(f.value!==r||typeof n=="object"&&n?.once&&(typeof f.options=="boolean"||!f.options?.once))&&a.push(f)}a.length?this.eventListeners.set(e,a.length===1?a[0]:a):this.eventListeners.delete(e)}else i.value===r&&(typeof n=="boolean"||!n?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(e);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(e){return this.eventListeners.has(e)}dispatchEvent(e,...r){const n=this.eventListeners.get(e);if(n){if(Array.isArray(n))for(let i=n.length,a=0;a<i;a++){const s=n[a];typeof s.options=="object"&&s.options?.once&&this.off(e,s.value,s.options),s.value.apply(this,r)}else typeof n.options=="object"&&n.options?.once&&this.off(e,n.value,n.options),n.value.apply(this,r);return!0}else return!1}on(e,r,n){return this.addEventListener(e,r,n)}once(e,r){return this.addEventListener(e,r,{once:!0})}off(e,r,n){return this.removeEventListener(e,r,n)}emit(e,...r){this.dispatchEvent(e,...r)}}function h(t){return t==null||t==="none"}function A(t,e=0,r=10**e){return Math.round(r*t)/r+0}function _(t,e=!1){if(typeof t!="object"||!t)return t;if(Array.isArray(t))return e?t.map(n=>_(n,e)):t;const r={};for(const n in t){const i=t[n];i!=null&&(e?r[n]=_(i,e):r[n]=i)}return r}function N(t,e){const r={};return e.forEach(n=>{n in t&&(r[n]=t[n])}),r}function q(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){const r=Array.from(new Set([...Object.keys(t),...Object.keys(e)]));return!r.length||r.every(n=>t[n]===e[n])}return!1}function Et(t,e,r){const n=e.length-1;if(n<0)return t===void 0?r:t;for(let i=0;i<n;i++){if(t==null)return r;t=t[e[i]]}return t==null||t[e[n]]===void 0?r:t[e[n]]}function Ft(t,e,r){const n=e.length-1;for(let i=0;i<n;i++)typeof t[e[i]]!="object"&&(t[e[i]]={}),t=t[e[i]];t[e[n]]=r}function Lt(t,e,r){return t==null||!e||typeof e!="string"?r:t[e]!==void 0?t[e]:(e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Et(t,e.split("."),r))}function Dt(t,e,r){if(!(typeof t!="object"||!e))return e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,""),Ft(t,e.split("."),r)}class At{_observers=new Map;on(e,r){let n=this._observers.get(e);return n===void 0&&this._observers.set(e,n=new Set),n.add(r),this}once(e,r){const n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n),this}off(e,r){const n=this._observers.get(e);return n!==void 0&&(n.delete(r),n.size===0&&this._observers.delete(e)),this}emit(e,...r){return Array.from((this._observers.get(e)||new Map).values()).forEach(n=>n(...r)),this}destroy(){this._observers=new Map}}class Le{_map=new WeakMap;_toRaw(e){if(e&&typeof e=="object"){const r=e.__v_raw;r&&(e=this._toRaw(r))}return e}delete(e){return this._map.delete(this._toRaw(e))}get(e){return this._map.get(this._toRaw(e))}has(e){return this._map.has(this._toRaw(e))}set(e,r){return this._map.set(this._toRaw(e),this._toRaw(r)),this}}const nt=Symbol("properties"),Nt=Symbol("inited");function k(t){let e;if(Object.hasOwn(t,nt))e=t[nt];else{const r=Object.getPrototypeOf(t);e=new Map(r?k(r):void 0),t[nt]=e}return e}function it(t,e,r,n){const{alias:i,internalKey:a}=n,s=t[e];i?Dt(t,i,r):t[a]=r,t.onUpdateProperty?.(e,r,s)}function ot(t,e,r){const{default:n,fallback:i,alias:a,internalKey:s}=r;let u;if(a?u=Lt(t,a):u=t[s],u=u??(typeof i=="function"?i():i),u===void 0&&n!==void 0&&!t[Nt]){t[Nt]=!0;const f=typeof n=="function"?n():n;f!==void 0&&(t[e]=f,u=f)}return u}function at(t,e){function r(){return typeof this.getProperty<"u"?this.getProperty(t):ot(this,t,e)}function n(i){typeof this.setProperty<"u"?this.setProperty(t,i):it(this,t,i,e)}return{get:r,set:n}}function Rt(t,e,r={}){const n={...r,internalKey:Symbol(e)};k(t).set(e,n);const i=at(e,n);Object.defineProperty(t.prototype,e,{get(){return i.get.call(this)},set(a){i.set.call(this,a)},configurable:!0,enumerable:!0})}function De(t){return function(e,r){if(typeof r!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");Rt(e.constructor,r,t)}}function Ae(t={}){return function(e,r){const n=r.name;if(typeof n!="string")throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");const i={...t,internalKey:Symbol(n)},a=at(n,i);return{init(s){return k(this.constructor).set(n,i),a.set.call(this,s),s},get(){return a.get.call(this)},set(s){a.set.call(this,s)}}}}class Ne extends At{_propertyAccessor;_properties=new Map;_updatedProperties=new Map;_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;constructor(e){super(),this.setProperties(e)}isDirty(e){return e?this._updatedProperties.has(e):this._updatedProperties.size>0}getProperty(e,r){const n=this.getPropertyDeclaration(e);if(n)return n.internal||n.alias?ot(this,e,n):this._propertyAccessor?.getProperty?this._propertyAccessor.getProperty(e,r):this._properties.get(e)??r}setProperty(e,r){const n=this.getPropertyDeclaration(e);if(n)if(n.internal||n.alias)it(this,e,r,n);else{const i=this.getProperty(e);this._propertyAccessor?.setProperty?.(e,r),this._properties.set(e,r),this.onUpdateProperty?.(e,r,i)}}getProperties(e){const r={};for(const[n,i]of this.getPropertyDeclarations())!i.internal&&!i.alias&&(!e||e.includes(n))&&(r[n]=this.getProperty(n));return r}setProperties(e){if(e&&typeof e=="object")for(const r in e)this.setProperty(r,e[r]);return this}resetProperties(){for(const[e,r]of this.getPropertyDeclarations())this.setProperty(e,typeof r.default=="function"?r.default():r.default);return this}getPropertyDeclarations(){return k(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}setPropertyAccessor(e){const r=this.getPropertyDeclarations();this._propertyAccessor=void 0;const n={};return r.forEach((i,a)=>{n[a]=this.getProperty(a)}),this._propertyAccessor=e,r.forEach((i,a)=>{const s=this.getProperty(a),u=n[a];s!==void 0&&!Object.is(s,u)&&(this.setProperty(a,s),!i.internal&&!i.alias&&this.requestUpdate(a,s,u))}),this}async _nextTick(){return"requestAnimationFrame"in globalThis?new Promise(e=>globalThis.requestAnimationFrame(e)):Promise.resolve()}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await this._nextTick(),this._updating&&(this.onUpdate(),this._updating=!1)}onUpdate(){this._update(this._updatedProperties),this._updatedProperties=new Map}onUpdateProperty(e,r,n){Object.is(r,n)||this.requestUpdate(e,r,n)}requestUpdate(e,r,n){e!==void 0&&(this._updatedProperties.set(e,n),this._changedProperties.add(e),this._updateProperty(e,r,n),this.emit("updateProperty",e,r,n)),this._updating||(this._updatingPromise=this._enqueueUpdate())}_update(e){}_updateProperty(e,r,n){}toJSON(){const e={};return this._properties.forEach((r,n)=>{r!==void 0&&(r&&typeof r=="object"?"toJSON"in r&&typeof r.toJSON=="function"?e[n]=r.toJSON():Array.isArray(r)?e[n]=[...r]:e[n]={...r}:e[n]=r)}),e}clone(){return new this.constructor(this.toJSON())}}function st(t){let e;return typeof t=="number"?e={r:t>>24&255,g:t>>16&255,b:t>>8&255,a:(t&255)/255}:e=t,L(e)}function Re(t){return{r:A(t.r),g:A(t.g),b:A(t.b),a:A(t.a,3)}}function J(t){const e=t.toString(16);return e.length<2?`0${e}`:e}const $="#000000FF";function Gt(t){return st(t).isValid()}function S(t,e=!1){const r=st(t);if(!r.isValid()){if(typeof t=="string")return t;const u=`Failed to normalizeColor ${t}`;if(e)throw new Error(u);return console.warn(u),$}const{r:n,g:i,b:a,a:s}=Re(r.rgba);return`#${J(n)}${J(i)}${J(a)}${J(A(s*255))}`}var x=x||{};x.parse=(function(){const t={linearGradient:/^(-(webkit|o|ms|moz)-)?(linear-gradient)/i,repeatingLinearGradient:/^(-(webkit|o|ms|moz)-)?(repeating-linear-gradient)/i,radialGradient:/^(-(webkit|o|ms|moz)-)?(radial-gradient)/i,repeatingRadialGradient:/^(-(webkit|o|ms|moz)-)?(repeating-radial-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let e="";function r(l){const c=new Error(`${e}: ${l}`);throw c.source=e,c}function n(){const l=i();return e.length>0&&r("Invalid input not EOF"),l}function i(){return M(a)}function a(){return s("linear-gradient",t.linearGradient,f)||s("repeating-linear-gradient",t.repeatingLinearGradient,f)||s("radial-gradient",t.radialGradient,p)||s("repeating-radial-gradient",t.repeatingRadialGradient,p)}function s(l,c,d){return u(c,b=>{const I=d();return I&&(m(t.comma)||r("Missing comma before color stops")),{type:l,orientation:I,colorStops:M(gt)}})}function u(l,c){const d=m(l);if(d){m(t.startCall)||r("Missing (");const b=c(d);return m(t.endCall)||r("Missing )"),b}}function f(){const l=g();if(l)return l;const c=P("position-keyword",t.positionKeywords,1);return c?{type:"directional",value:c.value}:y()}function g(){return P("directional",t.sideOrCorner,1)}function y(){return P("angular",t.angleValue,1)||P("angular",t.radianValue,1)}function p(){let l,c=C(),d;return c&&(l=[],l.push(c),d=e,m(t.comma)&&(c=C(),c?l.push(c):e=d)),l}function C(){let l=w()||R();if(l)l.at=F();else{const c=O();if(c){l=c;const d=F();d&&(l.at=d)}else{const d=F();if(d)l={type:"default-radial",at:d};else{const b=G();b&&(l={type:"default-radial",at:b})}}}return l}function w(){const l=P("shape",/^(circle)/i,0);return l&&(l.style=Se()||O()),l}function R(){const l=P("shape",/^(ellipse)/i,0);return l&&(l.style=G()||Q()||O()),l}function O(){return P("extent-keyword",t.extentKeywords,1)}function F(){if(P("position",/^at/,0)){const l=G();return l||r("Missing positioning value"),l}}function G(){const l=B();if(l.x||l.y)return{type:"position",value:l}}function B(){return{x:Q(),y:Q()}}function M(l){let c=l();const d=[];if(c)for(d.push(c);m(t.comma);)c=l(),c?d.push(c):r("One extra comma");return d}function gt(){const l=Ke();return l||r("Expected color definition"),l.length=Q(),l}function Ke(){return Je()||Qe()||Ze()||Xe()||xe()||Ye()||qe()}function qe(){return P("literal",t.literalColor,0)}function Je(){return P("hex",t.hexColor,1)}function xe(){return u(t.rgbColor,()=>({type:"rgb",value:M(U)}))}function Xe(){return u(t.rgbaColor,()=>({type:"rgba",value:M(U)}))}function Ye(){return u(t.varColor,()=>({type:"var",value:tr()}))}function Ze(){return u(t.hslColor,()=>{m(t.percentageValue)&&r("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const c=U();m(t.comma);let d=m(t.percentageValue);const b=d?d[1]:null;m(t.comma),d=m(t.percentageValue);const I=d?d[1]:null;return(!b||!I)&&r("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[c,b,I]}})}function Qe(){return u(t.hslaColor,()=>{const l=U();m(t.comma);let c=m(t.percentageValue);const d=c?c[1]:null;m(t.comma),c=m(t.percentageValue);const b=c?c[1]:null;m(t.comma);const I=U();return(!d||!b)&&r("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[l,d,b,I]}})}function tr(){return m(t.variableName)[1]}function U(){return m(t.number)[1]}function Q(){return P("%",t.percentageValue,1)||er()||rr()||Se()}function er(){return P("position-keyword",t.positionKeywords,1)}function rr(){return u(t.calcValue,()=>{let l=1,c=0;for(;l>0&&c<e.length;){const b=e.charAt(c);b==="("?l++:b===")"&&l--,c++}l>0&&r("Missing closing parenthesis in calc() expression");const d=e.substring(0,c-1);return pt(c-1),{type:"calc",value:d}})}function Se(){return P("px",t.pixelValue,1)||P("em",t.emValue,1)}function P(l,c,d){const b=m(c);if(b)return{type:l,value:b[d]}}function m(l){let c,d;return d=/^\s+/.exec(e),d&&pt(d[0].length),c=l.exec(e),c&&pt(c[0].length),c}function pt(l){e=e.substr(l)}return function(l){return e=l.toString().trim(),e.endsWith(";")&&(e=e.slice(0,-1)),n()}})();const It=x.parse.bind(x);var X=X||{};X.stringify=(function(){var t={"visit_linear-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-linear-gradient":function(e){return t.visit_gradient(e)},"visit_radial-gradient":function(e){return t.visit_gradient(e)},"visit_repeating-radial-gradient":function(e){return t.visit_gradient(e)},visit_gradient:function(e){var r=t.visit(e.orientation);return r&&(r+=", "),e.type+"("+r+t.visit(e.colorStops)+")"},visit_shape:function(e){var r=e.value,n=t.visit(e.at),i=t.visit(e.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(e){var r="",n=t.visit(e.at);return n&&(r+=n),r},"visit_extent-keyword":function(e){var r=e.value,n=t.visit(e.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return t.visit(e.value.x)+" "+t.visit(e.value.y)},"visit_%":function(e){return e.value+"%"},visit_em:function(e){return e.value+"em"},visit_px:function(e){return e.value+"px"},visit_calc:function(e){return"calc("+e.value+")"},visit_literal:function(e){return t.visit_color(e.value,e)},visit_hex:function(e){return t.visit_color("#"+e.value,e)},visit_rgb:function(e){return t.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return t.visit_color("rgba("+e.value.join(", ")+")",e)},visit_hsl:function(e){return t.visit_color("hsl("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%)",e)},visit_hsla:function(e){return t.visit_color("hsla("+e.value[0]+", "+e.value[1]+"%, "+e.value[2]+"%, "+e.value[3]+")",e)},visit_var:function(e){return t.visit_color("var("+e.value+")",e)},visit_color:function(e,r){var n=e,i=t.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var r="",n=e.length;return e.forEach(function(i,a){r+=t.visit(i),a<n-1&&(r+=", ")}),r},visit_object:function(e){return e.width&&e.height?t.visit(e.width)+" "+t.visit(e.height):""},visit:function(e){if(!e)return"";if(e instanceof Array)return t.visit_array(e);if(typeof e=="object"&&!e.type)return t.visit_object(e);if(e.type){var r=t["visit_"+e.type];if(r)return r(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return t.visit(e)}})();const Ge=X.stringify.bind(X);function jt(t){const e=t.length-1;return t.map((r,n)=>{const i=r.value;let a=A(n/e,3),s="#00000000";switch(r.type){case"rgb":s=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":s=S({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":s=S(r.value);break;case"hex":s=S(`#${r.value}`);break}switch(r.length?.type){case"%":a=Number(r.length.value)/100;break}return{offset:a,color:s}})}function Tt(t){let e=0;switch(t.orientation?.type){case"angular":e=Number(t.orientation.value);break}return{type:"linear-gradient",angle:e,stops:jt(t.colorStops)}}function Mt(t){return t.orientation?.map(e=>{switch(e?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:jt(t.colorStops)}}function W(t){return t.startsWith("linear-gradient(")||t.startsWith("radial-gradient(")}function Vt(t){return It(t).map(e=>{switch(e?.type){case"linear-gradient":return Tt(e);case"repeating-linear-gradient":return{...Tt(e),repeat:!0};case"radial-gradient":return Mt(e);case"repeating-radial-gradient":return{...Mt(e),repeat:!0};default:return}}).filter(Boolean)}function kt(t){let e;return typeof t=="string"?e={color:t}:e={...t},{color:S(e.color)}}function $t(t){let e;if(typeof t=="string"?e={image:t}:e={...t},e.image){const{type:r,...n}=Vt(e.image)[0]??{};switch(r){case"radial-gradient":return{radialGradient:n};case"linear-gradient":return{linearGradient:n}}}return N(e,["linearGradient","radialGradient","rotateWithShape"])}function Wt(t){let e;return typeof t=="string"?e={image:t}:e={...t},N(e,["image","cropRect","stretchRect","tile","dpi","opacity","rotateWithShape"])}function Ht(t){let e;return typeof t=="string"?e={preset:t}:e={...t},h(e.foregroundColor)?delete e.foregroundColor:e.foregroundColor=S(e.foregroundColor),h(e.backgroundColor)?delete e.backgroundColor:e.backgroundColor=S(e.backgroundColor),N(e,["preset","foregroundColor","backgroundColor"])}function Bt(t){return!h(t.color)}function Ut(t){return typeof t=="string"?Gt(t):Bt(t)}function Kt(t){return!h(t.image)&&W(t.image)||!!t.linearGradient||!!t.radialGradient}function qt(t){return typeof t=="string"?W(t):Kt(t)}function Jt(t){return!h(t.image)&&!W(t.image)}function xt(t){return typeof t=="string"?!W(t):Jt(t)}function Xt(t){return!h(t.preset)}function Yt(t){return typeof t=="string"?!1:Xt(t)}function E(t){const e=t&&typeof t=="object"?t.enabled:void 0;return Ut(t)?_({enabled:e,...kt(t)}):qt(t)?_({enabled:e,...$t(t)}):xt(t)?_({enabled:e,...Wt(t)}):Yt(t)?_({enabled:e,...Ht(t)}):{}}function Zt(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["fillWithShape"])}}function lt(){return{color:$,offsetX:0,offsetY:0,blurRadius:1}}function ut(t){return{...lt(),..._({...t,color:h(t.color)?$:S(t.color)})}}function Qt(){return{...lt(),scaleX:1,scaleY:1}}function te(t){return{...Qt(),...ut(t)}}function Ie(t){return t}function ee(t){return _({...t,softEdge:h(t.softEdge)?void 0:t.softEdge,outerShadow:h(t.outerShadow)?void 0:te(t.outerShadow),innerShadow:h(t.innerShadow)?void 0:ut(t.innerShadow)})}function re(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["fillWithShape"])}}const je="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let Te=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=je[r[t]&63];return e};const ne=()=>Te(10),ie=ne;function H(t){return typeof t=="string"?{...E(t)}:{...E(t),...N(t,["width","style","lineCap","lineJoin","headEnd","tailEnd"])}}function oe(t){return typeof t=="string"?{color:S(t)}:{...t,color:h(t.color)?$:S(t.color)}}function ae(){return{boxShadow:"none"}}function se(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 le(){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 ue(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function ce(){return{...le(),...ue(),...ae(),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 fe(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function de(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function he(){return{...fe(),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 ge(){return{...de(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function pe(){return{...ge(),...he(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function T(t){return _({...t,color:h(t.color)?void 0:S(t.color),backgroundColor:h(t.backgroundColor)?void 0:S(t.backgroundColor),borderColor:h(t.borderColor)?void 0:S(t.borderColor),outlineColor:h(t.outlineColor)?void 0:S(t.outlineColor),shadowColor:h(t.shadowColor)?void 0:S(t.shadowColor)})}function Me(){return{...ce(),...pe()}}const ct=/\r\n|\n\r|\n|\r/,Ve=new RegExp(`${ct.source}|<br\\/>`,"g"),ke=new RegExp(`^(${ct.source})$`),ft=`
2
+ `;function $e(t){return ct.test(t)}function dt(t){return ke.test(t)}function me(t){return t.replace(Ve,ft)}function Y(t){const e=[];function r(){return e[e.length-1]}function n(u,f,g){const y=u?T(u):{},p=f?E(f):void 0,C=g?H(g):void 0,w=_({...y,fill:p,outline:C,fragments:[]});return e[e.length-1]?.fragments.length===0?e[e.length-1]=w:e.push(w),w}function i(u="",f,g,y){const p=f?T(f):{},C=g?E(g):void 0,w=y?H(y):void 0;Array.from(u).forEach(R=>{if(dt(R)){const{fragments:O,fill:F,outline:G,...B}=r()||n();O.length||O.push(_({...p,fill:C,outline:w,content:ft})),n(B,F,G)}else{const O=r()||n(),F=O.fragments[O.fragments.length-1];if(F){const{content:G,fill:B,outline:M,...gt}=F;if(q(C,B)&&q(w,M)&&q(p,gt)){F.content=`${G}${R}`;return}}O.fragments.push(_({...p,fill:C,outline:w,content:R}))}})}(Array.isArray(t)?t:[t]).forEach(u=>{if(typeof u=="string")n(),i(u);else if(ht(u)){const{content:f,fill:g,outline:y,...p}=u;n(p,g,y),i(f)}else if(ve(u)){const{fragments:f,fill:g,outline:y,...p}=u;n(p,g,y),f.forEach(C=>{const{content:w,fill:R,outline:O,...F}=C;i(w,F,R,O)})}else Array.isArray(u)?(n(),u.forEach(f=>{if(typeof f=="string")i(f);else if(ht(f)){const{content:g,fill:y,outline:p,...C}=f;i(g,C,y,p)}})):console.warn("Failed to parse text content",u)});const s=r();return s&&!s.fragments.length&&s.fragments.push({content:""}),e}function ve(t){return t&&typeof t=="object"&&"fragments"in t&&Array.isArray(t.fragments)}function ht(t){return t&&typeof t=="object"&&"content"in t&&typeof t.content=="string"}function ye(t){return typeof t=="string"||Array.isArray(t)?{content:Y(t)}:_({...t,content:Y(t.content??""),style:t.style?T(t.style):void 0,effects:t.effects?t.effects.map(e=>T(e)):void 0,measureDom:t.measureDom,fonts:t.fonts,fill:t.fill?E(t.fill):void 0,outline:t.outline?H(t.outline):void 0})}function We(t){return Y(t).map(e=>{const r=me(e.fragments.flatMap(n=>n.content).join(""));return dt(r)?"":r}).join(ft)}function be(t){return typeof t=="string"?{src:t}:t}function Z(t){return _({...t,id:t.id??ie(),style:h(t.style)?void 0:T(t.style),text:h(t.text)?void 0:ye(t.text),background:h(t.background)?void 0:Zt(t.background),shape:h(t.shape)?void 0:se(t.shape),fill:h(t.fill)?void 0:E(t.fill),outline:h(t.outline)?void 0:H(t.outline),foreground:h(t.foreground)?void 0:re(t.foreground),shadow:h(t.shadow)?void 0:oe(t.shadow),video:h(t.video)?void 0:be(t.video),audio:h(t.audio)?void 0:j(t.audio),effect:h(t.effect)?void 0:ee(t.effect),children:t.children?.map(e=>Z(e))})}function He(t){return Z(t)}function Be(t){const e={};for(const r in t.children){const n=Z(t.children[r]);delete n.children,e[r]=n}return{...t,children:e}}function Ue(t){const{children:e,...r}=t;function n(f){const{parentId:g,childrenIds:y,...p}=f;return{...p,children:[]}}const i={},a=[],s={...r,children:a};function u(f){if(!e[f]||i[f])return;const g=e[f],y=n(g);i[f]=y;const p=g.parentId;if(p){u(p);const C=e[p],w=i[p];if(!w)return;C?.childrenIds&&w?.children&&(w.children[C.childrenIds.indexOf(f)]=y)}else a.push(y)}for(const f in e)u(f);return s}o.EventEmitter=Fe,o.Observable=At,o.RawWeakMap=Le,o.Reactivable=Ne,o.clearUndef=_,o.defaultColor=$,o.defineProperty=Rt,o.flatDocumentToDocument=Ue,o.getDeclarations=k,o.getDefaultElementStyle=ce,o.getDefaultHighlightStyle=fe,o.getDefaultInnerShadow=lt,o.getDefaultLayoutStyle=le,o.getDefaultListStyleStyle=de,o.getDefaultOuterShadow=Qt,o.getDefaultShadowStyle=ae,o.getDefaultStyle=Me,o.getDefaultTextInlineStyle=he,o.getDefaultTextLineStyle=ge,o.getDefaultTextStyle=pe,o.getDefaultTransformStyle=ue,o.getNestedValue=Et,o.getObjectValueByPath=Lt,o.getPropertyDescriptor=at,o.hasCRLF=$e,o.idGenerator=ie,o.isCRLF=dt,o.isColor=Gt,o.isColorFill=Ut,o.isColorFillObject=Bt,o.isEqualObject=q,o.isFragmentObject=ht,o.isGradient=W,o.isGradientFill=qt,o.isGradientFillObject=Kt,o.isImageFill=xt,o.isImageFillObject=Jt,o.isNone=h,o.isParagraphObject=ve,o.isPresetFill=Yt,o.isPresetFillObject=Xt,o.nanoid=ne,o.normalizeAudio=j,o.normalizeBackground=Zt,o.normalizeCRLF=me,o.normalizeColor=S,o.normalizeColorFill=kt,o.normalizeDocument=He,o.normalizeEffect=ee,o.normalizeElement=Z,o.normalizeFill=E,o.normalizeFlatDocument=Be,o.normalizeForeground=re,o.normalizeGradient=Vt,o.normalizeGradientFill=$t,o.normalizeImageFill=Wt,o.normalizeInnerShadow=ut,o.normalizeOuterShadow=te,o.normalizeOutline=H,o.normalizePresetFill=Ht,o.normalizeShadow=oe,o.normalizeShape=se,o.normalizeSoftEdge=Ie,o.normalizeStyle=T,o.normalizeText=ye,o.normalizeTextContent=Y,o.normalizeVideo=be,o.parseColor=st,o.parseGradient=It,o.pick=N,o.property=De,o.property2=Ae,o.propertyOffsetGet=ot,o.propertyOffsetSet=it,o.round=A,o.setNestedValue=Ft,o.setObjectValueByPath=Dt,o.stringifyGradient=Ge,o.textContentToString=We,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
package/dist/index.mjs CHANGED
@@ -249,7 +249,6 @@ class RawWeakMap {
249
249
  }
250
250
  }
251
251
 
252
- const internalSymbol = Symbol("internal");
253
252
  const propertiesSymbol = Symbol("properties");
254
253
  const initedSymbol = Symbol("inited");
255
254
  function getDeclarations(constructor) {
@@ -263,60 +262,57 @@ function getDeclarations(constructor) {
263
262
  }
264
263
  return declarations;
265
264
  }
266
- function getPropertyInternalKey(obj, key) {
267
- if (!Object.hasOwn(obj, internalSymbol)) {
268
- obj[internalSymbol] = /* @__PURE__ */ new Map();
269
- }
270
- let internalKey = obj[internalSymbol].get(key);
271
- if (!internalKey) {
272
- internalKey = Symbol(key);
273
- obj[internalSymbol].set(key, internalKey);
265
+ function propertyOffsetSet(target, key, newValue, declaration) {
266
+ const {
267
+ alias,
268
+ internalKey
269
+ } = declaration;
270
+ const oldValue = target[key];
271
+ if (alias) {
272
+ setObjectValueByPath(target, alias, newValue);
273
+ } else {
274
+ target[internalKey] = newValue;
274
275
  }
275
- return internalKey;
276
+ target.onUpdateProperty?.(key, newValue, oldValue);
276
277
  }
277
- function getPropertyDescriptor(key, declaration = {}) {
278
+ function propertyOffsetGet(target, key, declaration) {
278
279
  const {
279
280
  default: _default,
280
281
  fallback,
281
282
  alias,
282
- internal
283
+ internalKey
283
284
  } = declaration;
284
- const getDefaultValue = () => {
285
- return typeof _default === "function" ? _default() : _default;
286
- };
287
- const getFallbackValue = () => {
288
- return typeof fallback === "function" ? fallback() : fallback;
289
- };
285
+ let result;
286
+ if (alias) {
287
+ result = getObjectValueByPath(target, alias);
288
+ } else {
289
+ result = target[internalKey];
290
+ }
291
+ result = result ?? (typeof fallback === "function" ? fallback() : fallback);
292
+ if (result === void 0 && _default !== void 0 && !target[initedSymbol]) {
293
+ target[initedSymbol] = true;
294
+ const defaultValue = typeof _default === "function" ? _default() : _default;
295
+ if (defaultValue !== void 0) {
296
+ target[key] = defaultValue;
297
+ result = defaultValue;
298
+ }
299
+ }
300
+ return result;
301
+ }
302
+ function getPropertyDescriptor(key, declaration) {
290
303
  function get() {
291
- let result;
292
- if (alias && alias !== key) {
293
- result = getObjectValueByPath(this, alias);
294
- } else if (!internal && typeof this.getProperty !== "undefined") {
295
- result = this.getProperty(key);
304
+ if (typeof this.getProperty !== "undefined") {
305
+ return this.getProperty(key);
296
306
  } else {
297
- result = this[getPropertyInternalKey(this, key)];
307
+ return propertyOffsetGet(this, key, declaration);
298
308
  }
299
- result = result ?? getFallbackValue();
300
- if (result === void 0 && _default !== void 0 && !this[initedSymbol]) {
301
- this[initedSymbol] = true;
302
- const defaultValue = getDefaultValue();
303
- if (defaultValue !== void 0) {
304
- set.call(this, defaultValue);
305
- result = defaultValue;
306
- }
307
- }
308
- return result;
309
309
  }
310
310
  function set(newValue) {
311
- const oldValue = get.call(this);
312
- if (alias && alias !== key) {
313
- setObjectValueByPath(this, alias, newValue);
314
- } else if (!internal && typeof this.setProperty !== "undefined") {
311
+ if (typeof this.setProperty !== "undefined") {
315
312
  this.setProperty(key, newValue);
316
313
  } else {
317
- this[getPropertyInternalKey(this, key)] = newValue;
314
+ propertyOffsetSet(this, key, newValue, declaration);
318
315
  }
319
- this.onUpdateProperty?.(key, newValue, oldValue);
320
316
  }
321
317
  return {
322
318
  get,
@@ -324,8 +320,12 @@ function getPropertyDescriptor(key, declaration = {}) {
324
320
  };
325
321
  }
326
322
  function defineProperty(constructor, key, declaration = {}) {
327
- getDeclarations(constructor).set(key, declaration);
328
- const descriptor = getPropertyDescriptor(key, declaration);
323
+ const _declaration = {
324
+ ...declaration,
325
+ internalKey: Symbol(key)
326
+ };
327
+ getDeclarations(constructor).set(key, _declaration);
328
+ const descriptor = getPropertyDescriptor(key, _declaration);
329
329
  Object.defineProperty(constructor.prototype, key, {
330
330
  get() {
331
331
  return descriptor.get.call(this);
@@ -351,10 +351,14 @@ function property2(declaration = {}) {
351
351
  if (typeof key !== "string") {
352
352
  throw new TypeError("Failed to @property decorator, prop name cannot be a symbol");
353
353
  }
354
- const descriptor = getPropertyDescriptor(key, declaration);
354
+ const _declaration = {
355
+ ...declaration,
356
+ internalKey: Symbol(key)
357
+ };
358
+ const descriptor = getPropertyDescriptor(key, _declaration);
355
359
  return {
356
360
  init(v) {
357
- getDeclarations(this.constructor).set(key, declaration);
361
+ getDeclarations(this.constructor).set(key, _declaration);
358
362
  descriptor.set.call(this, v);
359
363
  return v;
360
364
  },
@@ -382,27 +386,38 @@ class Reactivable extends Observable {
382
386
  isDirty(key) {
383
387
  return key ? this._updatedProperties.has(key) : this._updatedProperties.size > 0;
384
388
  }
385
- offsetGet(key) {
386
- return this[key];
387
- }
388
- offsetSet(key, newValue) {
389
- this[key] = newValue;
390
- }
391
389
  getProperty(key, defaultValue) {
392
- if (this._propertyAccessor?.getProperty) {
393
- return this._propertyAccessor.getProperty(key, defaultValue);
394
- } else {
395
- return this._properties.get(key) ?? defaultValue;
390
+ const declaration = this.getPropertyDeclaration(key);
391
+ if (declaration) {
392
+ if (declaration.internal || declaration.alias) {
393
+ return propertyOffsetGet(this, key, declaration);
394
+ } else {
395
+ if (this._propertyAccessor?.getProperty) {
396
+ return this._propertyAccessor.getProperty(key, defaultValue);
397
+ } else {
398
+ return this._properties.get(key) ?? defaultValue;
399
+ }
400
+ }
396
401
  }
402
+ return void 0;
397
403
  }
398
404
  setProperty(key, newValue) {
399
- this._propertyAccessor?.setProperty?.(key, newValue);
400
- this._properties.set(key, newValue);
405
+ const declaration = this.getPropertyDeclaration(key);
406
+ if (declaration) {
407
+ if (declaration.internal || declaration.alias) {
408
+ propertyOffsetSet(this, key, newValue, declaration);
409
+ } else {
410
+ const oldValue = this.getProperty(key);
411
+ this._propertyAccessor?.setProperty?.(key, newValue);
412
+ this._properties.set(key, newValue);
413
+ this.onUpdateProperty?.(key, newValue, oldValue);
414
+ }
415
+ }
401
416
  }
402
417
  getProperties(keys) {
403
418
  const properties = {};
404
- for (const [name, property] of this.getPropertyDeclarations()) {
405
- if (!property.internal && !property.alias && (!keys || keys.includes(name))) {
419
+ for (const [name, declaration] of this.getPropertyDeclarations()) {
420
+ if (!declaration.internal && !declaration.alias && (!keys || keys.includes(name))) {
406
421
  properties[name] = this.getProperty(name);
407
422
  }
408
423
  }
@@ -410,19 +425,17 @@ class Reactivable extends Observable {
410
425
  }
411
426
  setProperties(properties) {
412
427
  if (properties && typeof properties === "object") {
413
- for (const [name] of this.getPropertyDeclarations()) {
414
- if (name in properties) {
415
- this.offsetSet(name, properties[name]);
416
- }
428
+ for (const name in properties) {
429
+ this.setProperty(name, properties[name]);
417
430
  }
418
431
  }
419
432
  return this;
420
433
  }
421
434
  resetProperties() {
422
- for (const [name, property] of this.getPropertyDeclarations()) {
423
- this.offsetSet(
435
+ for (const [name, declaration] of this.getPropertyDeclarations()) {
436
+ this.setProperty(
424
437
  name,
425
- typeof property.default === "function" ? property.default() : property.default
438
+ typeof declaration.default === "function" ? declaration.default() : declaration.default
426
439
  );
427
440
  }
428
441
  return this;
@@ -434,21 +447,19 @@ class Reactivable extends Observable {
434
447
  return this.getPropertyDeclarations().get(key);
435
448
  }
436
449
  setPropertyAccessor(accessor) {
450
+ const declarations = this.getPropertyDeclarations();
451
+ this._propertyAccessor = void 0;
452
+ const oldValues = {};
453
+ declarations.forEach((_declaration, key) => {
454
+ oldValues[key] = this.getProperty(key);
455
+ });
437
456
  this._propertyAccessor = accessor;
438
- this.getPropertyDeclarations().forEach((declaration, key) => {
439
- const proxyed = declaration.internal || declaration.alias && declaration.alias !== key;
440
- const newValue = accessor.getProperty?.(key);
441
- let oldValue;
442
- if (proxyed) {
443
- oldValue = this.offsetGet(key);
444
- } else {
445
- oldValue = this._properties.get(key);
446
- }
457
+ declarations.forEach((declaration, key) => {
458
+ const newValue = this.getProperty(key);
459
+ const oldValue = oldValues[key];
447
460
  if (newValue !== void 0 && !Object.is(newValue, oldValue)) {
448
- if (proxyed) {
449
- this.offsetSet(key, newValue);
450
- } else {
451
- this._properties.set(key, newValue);
461
+ this.setProperty(key, newValue);
462
+ if (!declaration.internal && !declaration.alias) {
452
463
  this.requestUpdate(key, newValue, oldValue);
453
464
  }
454
465
  }
@@ -1839,4 +1850,4 @@ function flatDocumentToDocument(flatDoc) {
1839
1850
  return doc;
1840
1851
  }
1841
1852
 
1842
- export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, getPropertyInternalKey, 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 };
1853
+ export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-idoc",
3
3
  "type": "module",
4
- "version": "0.9.8",
4
+ "version": "0.9.10",
5
5
  "packageManager": "pnpm@9.15.1",
6
6
  "description": "Intermediate document for modern codec libs",
7
7
  "author": "wxm",