@pixi-ui-editor/schema 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAgB,MAAM,mBAAmB,CAAC;AAKpE,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAGjD,eAAO,MAAM,qBAAqB,uIAAgE,CAAC;AACnG,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAKnE,QAAA,MAAM,SAAS,sgBAAuR,CAAC;AACvS,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;AACvD,QAAA,MAAM,OAAO;;;;;EAAgK,CAAC;AAC9K,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AACnD,QAAA,MAAM,UAAU;;;;;EAAuU,CAAC;AACxV,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAC7D,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;EAA+Q,CAAC;AAC1S,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;EAA2oB,CAAC;AACpqB,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAUnE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;EAAivB,CAAC;AACxxB,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAI3E,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,qDAAsD,CAAC;AACrF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAUhE,QAAA,MAAM,mBAAmB,0LAA2F,CAAC;AACrH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;EAStB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,QAAA,MAAM,UAAU,mLAAoF,CAAC;AACrG,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AA8CnD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS/B,CAAC;AACL,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACrE,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AACxF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,wBAAwB,CAAwC;AAEtI,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6K,CAAC;AACvM,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,aAAa,CAAA;CAAE,CAAC,CAAC;AACjH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,eAAe,CAAgH;AACpL,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,eAAe,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,CAE/I;AACD,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AACtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAAwC;AAC1G,uIAAuI;AACvI,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAsD;AACxH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAAC;AAChF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,mBAAmB,CAA6C;AAG7H,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyO,CAAC;AAClQ,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAC/C,eAAO,MAAM,eAAe;;;;EAA4G,CAAC;AACzI,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAOvD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA0E,CAAC;AACnG,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAC/C,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgT,CAAC;AACpV,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqb,CAAC;AACxd,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEnE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAAC;AAC7G,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAC7E,qBAAa,6BAA8B,SAAQ,KAAK;IAAG,QAAQ,CAAC,IAAI,gCAAgC;gBAAa,OAAO,EAAE,MAAM;CAAoE;AAIxM,wBAAgB,cAAc,IAAI,MAAM,CAAgC;AAgBxE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAAqE;AAqE9I,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAub;AAChgB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAAwL;AAwB/Q,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAqsB;AAM5wB,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAA+F;AAE1K,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,394 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import Ajv from "ajv";
3
+ import addFormats from "ajv-formats";
4
+ export const CURRENT_SCHEMA_VERSION = 7;
5
+ const Id = Type.String({ format: "uuid" });
6
+ const Name = Type.String({ minLength: 1 });
7
+ export const LayoutProfileIdSchema = Type.Union([Type.Literal("desktop"), Type.Literal("mobile")]);
8
+ // width/height допускают любые значения: на растянутой оси (anchorMin < anchorMax) они хранят
9
+ // дельту к якорному прямоугольнику родителя и могут быть нулевыми или отрицательными.
10
+ // Для нерастянутой оси положительность размера проверяет semantic-валидация (NON_POSITIVE_SIZE).
11
+ const Transform = Type.Object({ x: Type.Number(), y: Type.Number(), width: Type.Number(), height: Type.Number(), scaleX: Type.Number(), scaleY: Type.Number(), rotation: Type.Number(), pivotX: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), pivotY: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), anchorMinX: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), anchorMinY: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), anchorMaxX: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), anchorMaxY: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })) });
12
+ const Alignment = Type.Union([Type.Literal("upper-left"), Type.Literal("upper-center"), Type.Literal("upper-right"), Type.Literal("middle-left"), Type.Literal("middle-center"), Type.Literal("middle-right"), Type.Literal("lower-left"), Type.Literal("lower-center"), Type.Literal("lower-right")]);
13
+ const Padding = Type.Object({ left: Type.Number({ minimum: 0 }), right: Type.Number({ minimum: 0 }), top: Type.Number({ minimum: 0 }), bottom: Type.Number({ minimum: 0 }) });
14
+ const LayoutItem = Type.Object({ flexGrow: Type.Number({ minimum: 0 }), flexShrink: Type.Number({ minimum: 0 }), flexBasis: Type.Optional(Type.Number({ exclusiveMinimum: 0 })), alignSelf: Type.Optional(Type.Union([Type.Literal("auto"), Type.Literal("flex-start"), Type.Literal("center"), Type.Literal("flex-end"), Type.Literal("stretch")])) });
15
+ const LinearLayoutSettings = Type.Object({ padding: Padding, spacing: Type.Number({ minimum: 0 }), childAlignment: Alignment, reverseOrder: Type.Boolean(), controlChildWidth: Type.Boolean(), controlChildHeight: Type.Boolean(), forceExpandWidth: Type.Boolean(), forceExpandHeight: Type.Boolean() });
16
+ const GridLayoutSettings = Type.Object({ padding: Padding, spacingX: Type.Number({ minimum: 0 }), spacingY: Type.Number({ minimum: 0 }), cellWidth: Type.Number({ exclusiveMinimum: 0 }), cellHeight: Type.Number({ exclusiveMinimum: 0 }), startCorner: Type.Union([Type.Literal("upper-left"), Type.Literal("upper-right"), Type.Literal("lower-left"), Type.Literal("lower-right")]), startAxis: Type.Union([Type.Literal("horizontal"), Type.Literal("vertical")]), childAlignment: Alignment, constraint: Type.Union([Type.Literal("flexible"), Type.Literal("fixed-column-count"), Type.Literal("fixed-row-count")]), constraintCount: Type.Optional(Type.Number({ exclusiveMinimum: 0 })) });
17
+ const ProfiledLayout = (settings) => Type.Object({ base: settings, overrides: Type.Optional(Type.Partial(Type.Object({ desktop: Type.Partial(settings), mobile: Type.Partial(settings) }))) });
18
+ const Override = Type.Object({ visible: Type.Optional(Type.Boolean()), transform: Type.Optional(Type.Partial(Transform)) });
19
+ const NodeBase = Type.Object({ id: Id, name: Name, parentId: Type.Union([Id, Type.Null()]), children: Type.Array(Id), visible: Type.Boolean(), transform: Transform, layoutOverrides: Type.Optional(Type.Partial(Type.Object({ desktop: Override, mobile: Override }))), layoutItem: Type.Optional(LayoutItem), binding: Type.Optional(Type.String()) });
20
+ const Container = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("container") })]);
21
+ const HorizontalLayout = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("horizontal-layout"), backgroundAssetId: Type.Optional(Id), layoutGroup: ProfiledLayout(LinearLayoutSettings) })]);
22
+ const VerticalLayout = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("vertical-layout"), backgroundAssetId: Type.Optional(Id), layoutGroup: ProfiledLayout(LinearLayoutSettings) })]);
23
+ const GridLayout = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("grid-layout"), backgroundAssetId: Type.Optional(Id), layoutGroup: ProfiledLayout(GridLayoutSettings) })]);
24
+ const Image = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("image"), assetId: Id, opacity: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })) })]);
25
+ const TextStroke = Type.Object({ color: Type.String({ pattern: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" }), width: Type.Number({ minimum: 0 }) });
26
+ export const TextStyleDefinitionSchema = Type.Object({ fontAssetId: Type.Optional(Id), fontFamily: Type.String({ minLength: 1 }), fontSize: Type.Number({ exclusiveMinimum: 0 }), fontWeight: Type.Union([Type.Literal("normal"), Type.Literal("bold")]), fontStyle: Type.Union([Type.Literal("normal"), Type.Literal("italic")]), fill: Type.String({ pattern: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" }), align: Type.Union([Type.Literal("left"), Type.Literal("center"), Type.Literal("right"), Type.Literal("justify")]), verticalAlign: Type.Union([Type.Literal("top"), Type.Literal("middle"), Type.Literal("bottom")]), wordWrap: Type.Boolean(), breakWords: Type.Boolean(), lineHeight: Type.Optional(Type.Number({ exclusiveMinimum: 0 })), letterSpacing: Type.Number(), stroke: Type.Optional(TextStroke) });
27
+ const Text = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("text"), text: Type.String(), style: Type.Optional(TextStyleDefinitionSchema) })]);
28
+ const Spine = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("spine"), assetId: Id, animation: Type.Optional(Type.String({ minLength: 1 })), loop: Type.Optional(Type.Boolean()) })]);
29
+ const PrefabInstance = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("prefab-instance"), prefabId: Id })]);
30
+ /** Состояния кнопки. `normal` обязателен; остальные при отсутствии используют его изображение. */
31
+ export const BUTTON_STATE_KEYS = ["normal", "hover", "pressed", "disabled"];
32
+ /** Discriminated transition: в v0 поддержан только `instant`, чтобы позже добавить bump/slide/fade без неявных полей. */
33
+ const ButtonTransition = Type.Object({ kind: Type.Literal("instant") });
34
+ const ButtonStates = Type.Object({ normalAssetId: Id, hoverAssetId: Type.Optional(Id), pressedAssetId: Type.Optional(Id), disabledAssetId: Type.Optional(Id) });
35
+ const ButtonSounds = Type.Object({ pressAssetId: Type.Optional(Id), hoverAssetId: Type.Optional(Id) });
36
+ const ButtonTransitions = Type.Partial(Type.Object({ normal: ButtonTransition, hover: ButtonTransition, pressed: ButtonTransition, disabled: ButtonTransition }));
37
+ // `enabled` — сериализованное начальное presentation-состояние; runtime setter документ не меняет.
38
+ const Button = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("button"), states: ButtonStates, sounds: Type.Optional(ButtonSounds), enabled: Type.Boolean(), transitions: Type.Optional(ButtonTransitions) })]);
39
+ // Прямые children — scroll items; их позицию владеет `@pixi/ui` List, поэтому per-profile overrides
40
+ // настроек не нужны (как у text style) — только собственные transform/visibility остаются profile-aware.
41
+ const ScrollViewDirection = Type.Union([Type.Literal("vertical"), Type.Literal("horizontal"), Type.Literal("both")]);
42
+ const ScrollViewSettings = Type.Object({
43
+ direction: ScrollViewDirection,
44
+ padding: Padding,
45
+ itemSpacing: Type.Number({ minimum: 0 }),
46
+ backgroundColor: Type.Optional(Type.String({ pattern: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" })),
47
+ cornerRadius: Type.Number({ minimum: 0 }),
48
+ easingEnabled: Type.Boolean(),
49
+ // Значим только при direction "horizontal"; для остальных направлений безопасно игнорируется.
50
+ shiftWheelHorizontal: Type.Optional(Type.Boolean()),
51
+ });
52
+ const ScrollView = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("scroll-view"), scrollView: ScrollViewSettings })]);
53
+ const InputAlign = Type.Union([Type.Literal("left"), Type.Literal("center"), Type.Literal("right")]);
54
+ // Reuses the shared `TextStyleDefinition` (TASK-029) so an input never grows an incompatible parallel
55
+ // font/style field set; fields that don't apply to a single line (wordWrap, verticalAlign, ...) are
56
+ // simply ignored by the runtime view, the same way a button ignores unused optional state assets.
57
+ const Input = Type.Composite([NodeBase, Type.Object({
58
+ type: Type.Literal("input"),
59
+ backgroundAssetId: Type.Optional(Id),
60
+ placeholder: Type.String(),
61
+ defaultValue: Type.String(),
62
+ // Positive integer: a character-count limit can't be fractional or non-positive.
63
+ maxLength: Type.Optional(Type.Integer({ exclusiveMinimum: 0 })),
64
+ secure: Type.Boolean(),
65
+ align: InputAlign,
66
+ padding: Padding,
67
+ cleanOnFocus: Type.Boolean(),
68
+ clipText: Type.Boolean(),
69
+ textStyle: TextStyleDefinitionSchema,
70
+ })]);
71
+ const Slider = Type.Composite([NodeBase, Type.Object({
72
+ type: Type.Literal("slider"),
73
+ backgroundAssetId: Id,
74
+ fillAssetId: Id,
75
+ handleAssetId: Id,
76
+ min: Type.Number(),
77
+ max: Type.Number(),
78
+ step: Type.Number(),
79
+ defaultValue: Type.Number(),
80
+ fillPadding: Padding,
81
+ showValue: Type.Optional(Type.Boolean()),
82
+ valueTextStyle: Type.Optional(TextStyleDefinitionSchema),
83
+ })]);
84
+ const ProgressBar = Type.Composite([NodeBase, Type.Object({
85
+ type: Type.Literal("progress-bar"),
86
+ backgroundAssetId: Id,
87
+ fillAssetId: Id,
88
+ defaultProgress: Type.Number(),
89
+ fillPadding: Padding,
90
+ })]);
91
+ const Range = Type.Object({ min: Type.Number(), max: Type.Number() });
92
+ const PositiveRange = Type.Object({ min: Type.Number({ exclusiveMinimum: 0 }), max: Type.Number({ exclusiveMinimum: 0 }) });
93
+ const Color = Type.String({ pattern: "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$" });
94
+ const ParticleSource = Type.Union([
95
+ Type.Object({ type: Type.Literal("single"), assetId: Id }),
96
+ Type.Object({ type: Type.Literal("random"), assetIds: Type.Array(Id, { minItems: 1 }) }),
97
+ Type.Object({ type: Type.Literal("sequence"), assetIds: Type.Array(Id, { minItems: 1 }), fps: Type.Number({ exclusiveMinimum: 0 }), loop: Type.Boolean(), randomStartFrame: Type.Boolean() }),
98
+ ]);
99
+ export const EffectDefinitionSchema = Type.Union([Type.Object({
100
+ id: Id, name: Name, type: Type.Literal("particles"), maxParticles: Type.Integer({ minimum: 1, maximum: 10000 }), seed: Type.Integer({ minimum: 0, maximum: 4294967295 }),
101
+ emission: Type.Object({ delay: Type.Number({ minimum: 0 }), duration: Type.Number({ exclusiveMinimum: 0 }), loop: Type.Boolean(), rate: Type.Number({ minimum: 0 }), bursts: Type.Array(Type.Object({ time: Type.Number({ minimum: 0 }), count: Type.Integer({ minimum: 1 }) })) }),
102
+ particle: Type.Object({
103
+ lifetime: PositiveRange,
104
+ spawnShape: Type.Object({ type: Type.Union([Type.Literal("point"), Type.Literal("rectangle"), Type.Literal("circle")]) }),
105
+ movement: Type.Object({ speed: Range, directionDegrees: Type.Number({ minimum: 0, maximum: 360 }), spreadDegrees: Type.Number({ minimum: 0, maximum: 360 }), accelerationX: Type.Number(), accelerationY: Type.Number(), drag: Type.Number({ minimum: 0 }) }),
106
+ visual: Type.Object({ source: ParticleSource, alpha: Type.Object({ start: Type.Number({ minimum: 0, maximum: 1 }), end: Type.Number({ minimum: 0, maximum: 1 }) }), scale: Type.Object({ start: PositiveRange, end: PositiveRange }), tint: Type.Object({ start: Color, end: Color }), rotation: Type.Object({ initialDegrees: Range, angularVelocityDegrees: Range }), blendMode: Type.Union([Type.Literal("normal"), Type.Literal("add"), Type.Literal("multiply"), Type.Literal("screen")]) }),
107
+ }),
108
+ })]);
109
+ export function isParticleEffect(effect) { return effect.type === "particles"; }
110
+ const ParticleEmitter = Type.Composite([NodeBase, Type.Object({ type: Type.Literal("particle-emitter"), effectId: Id, autoplay: Type.Boolean(), simulationSpace: Type.Union([Type.Literal("local"), Type.Literal("world")]) })]);
111
+ export const UINodeSchema = Type.Union([Container, HorizontalLayout, VerticalLayout, GridLayout, Image, Text, Spine, Button, PrefabInstance, ScrollView, Input, Slider, ProgressBar, ParticleEmitter]);
112
+ export function isLayoutGroup(node) { return node.type === "horizontal-layout" || node.type === "vertical-layout" || node.type === "grid-layout"; }
113
+ export function resolveLayoutGroupSettings(node, profile) {
114
+ return { ...node.layoutGroup.base, ...node.layoutGroup.overrides?.[profile] };
115
+ }
116
+ export function isScrollView(node) { return node.type === "scroll-view"; }
117
+ /** A direct child of this node does not own its own position: a layout group's Yoga solver or a scroll-view's `@pixi/ui` List does. */
118
+ export function isPositionManagingContainer(node) { return isLayoutGroup(node) || isScrollView(node); }
119
+ export function isParticleEmitterNode(node) { return node.type === "particle-emitter"; }
120
+ const Viewport = Type.Object({ width: Type.Number({ exclusiveMinimum: 0 }), height: Type.Number({ exclusiveMinimum: 0 }) });
121
+ const SceneAudio = Type.Object({ backgroundMusicAssetId: Type.Optional(Id), volume: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })) });
122
+ export const SceneSchema = Type.Object({ id: Id, name: Name, rootNodeIds: Type.Array(Id), nodes: Type.Array(UINodeSchema), layout: Type.Object({ referenceViewports: Type.Object({ desktop: Viewport, mobile: Viewport }) }), audio: Type.Optional(SceneAudio) });
123
+ export const AssetFileSchema = Type.Object({ name: Name, uri: Type.String({ minLength: 1 }), mediaType: Type.String({ minLength: 1 }) });
124
+ const ImageAsset = Type.Object({ id: Id, name: Name, type: Type.Literal("image"), source: Type.Object({ uri: Type.String({ minLength: 1 }), mediaType: Type.String({ minLength: 1 }), version: Type.Optional(Type.String({ minLength: 1 })) }) });
125
+ const SpineAsset = Type.Object({ id: Id, name: Name, type: Type.Literal("spine"), files: Type.Object({ skeleton: AssetFileSchema, atlas: AssetFileSchema, textures: Type.Array(AssetFileSchema, { minItems: 1 }) }) });
126
+ const FontAsset = Type.Object({ id: Id, name: Name, type: Type.Literal("font"), family: Name, weight: Type.Union([Type.Literal("normal"), Type.Literal("bold")]), style: Type.Union([Type.Literal("normal"), Type.Literal("italic")]), source: Type.Object({ uri: Type.String({ minLength: 1 }), mediaType: Type.String({ minLength: 1 }), version: Type.Optional(Type.String({ minLength: 1 })) }) });
127
+ // Имя фрейма из spritesheet JSON → стабильный id фрейма; nodes ссылаются на этот id как на обычный image assetId.
128
+ const AtlasAsset = Type.Object({ id: Id, name: Name, type: Type.Literal("atlas"), files: Type.Object({ json: AssetFileSchema, texture: AssetFileSchema }), frames: Type.Record(Type.String({ minLength: 1 }), Id) });
129
+ const SoundAsset = Type.Object({ id: Id, name: Name, type: Type.Literal("sound"), source: Type.Object({ uri: Type.String({ minLength: 1 }), mediaType: Type.String({ minLength: 1 }), version: Type.Optional(Type.String({ minLength: 1 })) }) });
130
+ export const AssetSchema = Type.Union([ImageAsset, SpineAsset, FontAsset, AtlasAsset, SoundAsset]);
131
+ export const PrefabDefinitionSchema = Type.Object({ id: Id, name: Name, rootNodeIds: Type.Array(Id), nodes: Type.Array(UINodeSchema), exposedProperties: Type.Array(Type.Object({ name: Name, type: Type.Union([Type.Literal("string"), Type.Literal("number"), Type.Literal("boolean"), Type.Literal("asset"), Type.Literal("visibility")]) })) });
132
+ export const ProjectDocumentSchema = Type.Object({ schemaVersion: Type.Literal(CURRENT_SCHEMA_VERSION), project: Type.Object({ id: Id, name: Name }), settings: Type.Object({ layoutProfileSelection: Type.Object({ mode: Type.Literal("aspect-ratio"), mobileMaxAspectRatio: Type.Number({ exclusiveMinimum: 0 }) }) }), assets: Type.Array(AssetSchema), effects: Type.Array(EffectDefinitionSchema), prefabs: Type.Array(PrefabDefinitionSchema), scenes: Type.Array(SceneSchema) });
133
+ export class ProjectDocumentMigrationError extends Error {
134
+ code = "UNSUPPORTED_SCHEMA_VERSION";
135
+ constructor(message) { super(message); this.name = "ProjectDocumentMigrationError"; }
136
+ }
137
+ const AjvConstructor = Ajv;
138
+ const addAjvFormats = addFormats;
139
+ const ajv = new AjvConstructor({ allErrors: true, strict: false });
140
+ addAjvFormats(ajv);
141
+ const structural = ajv.compile(ProjectDocumentSchema);
142
+ export function createStableId() { return crypto.randomUUID(); }
143
+ const add = (issues, code, path, message) => issues.push({ code, path, message, severity: "error" });
144
+ /** На нерастянутой оси width/height — абсолютный размер и обязан быть положительным; на растянутой это дельта к якорному прямоугольнику. */
145
+ function checkResolvedSizes(node, nodePath, issues) {
146
+ for (const profile of ["desktop", "mobile"]) {
147
+ const merged = { ...node.transform, ...node.layoutOverrides?.[profile]?.transform };
148
+ const minX = merged.anchorMinX ?? 0, maxX = merged.anchorMaxX ?? minX;
149
+ const minY = merged.anchorMinY ?? 0, maxY = merged.anchorMaxY ?? minY;
150
+ if (maxX <= minX && merged.width <= 0)
151
+ add(issues, "NON_POSITIVE_SIZE", `${nodePath}/transform/width`, `Width must be positive when the '${profile}' X axis is not stretched.`);
152
+ if (maxY <= minY && merged.height <= 0)
153
+ add(issues, "NON_POSITIVE_SIZE", `${nodePath}/transform/height`, `Height must be positive when the '${profile}' Y axis is not stretched.`);
154
+ }
155
+ }
156
+ function particleAssetIds(effect) { const source = effect.particle.visual.source; return source.type === "single" ? [source.assetId] : source.assetIds; }
157
+ export function collectEffectAssetIds(effect) { return isParticleEffect(effect) ? particleAssetIds(effect) : []; }
158
+ function hierarchy(owner, path, assets, prefabs, effects, issues) {
159
+ const nodes = new Map();
160
+ owner.nodes.forEach((node, i) => { if (nodes.has(node.id))
161
+ add(issues, "DUPLICATE_ID", `${path}/nodes/${i}/id`, `Duplicate node ID '${node.id}'.`); nodes.set(node.id, node); });
162
+ const childOwners = new Map();
163
+ owner.rootNodeIds.forEach((id, i) => { const node = nodes.get(id); if (!node)
164
+ add(issues, "MISSING_NODE_REFERENCE", `${path}/rootNodeIds/${i}`, `Root node '${id}' does not exist.`);
165
+ else if (node.parentId !== null)
166
+ add(issues, "HIERARCHY_PARENT_MISMATCH", `${path}/rootNodeIds/${i}`, "A root node must have parentId null."); });
167
+ owner.nodes.forEach((node, i) => {
168
+ const nodePath = `${path}/nodes/${i}`;
169
+ if (node.parentId !== null && !nodes.has(node.parentId))
170
+ add(issues, "MISSING_PARENT_REFERENCE", `${nodePath}/parentId`, `Parent '${node.parentId}' does not exist.`);
171
+ node.children.forEach((childId, childIndex) => { const child = nodes.get(childId), childPath = `${nodePath}/children/${childIndex}`; if (!child)
172
+ add(issues, "MISSING_CHILD_REFERENCE", childPath, `Child '${childId}' does not exist.`);
173
+ else {
174
+ const prior = childOwners.get(childId);
175
+ if (prior && prior !== node.id)
176
+ add(issues, "MULTIPLE_PARENTS", childPath, `Node '${childId}' belongs to more than one parent.`);
177
+ childOwners.set(childId, node.id);
178
+ if (child.parentId !== node.id)
179
+ add(issues, "HIERARCHY_PARENT_MISMATCH", childPath, `Child '${childId}' does not point back to parent '${node.id}'.`);
180
+ } });
181
+ if (node.parentId !== null) {
182
+ const parent = nodes.get(node.parentId);
183
+ if (parent && !parent.children.includes(node.id))
184
+ add(issues, "HIERARCHY_CHILD_MISMATCH", `${nodePath}/parentId`, `Parent '${node.parentId}' does not list node '${node.id}'.`);
185
+ }
186
+ if (node.type === "image" || node.type === "spine") {
187
+ const asset = assets.get(node.assetId);
188
+ if (!asset)
189
+ add(issues, "MISSING_ASSET_REFERENCE", `${nodePath}/assetId`, `Asset '${node.assetId}' does not exist.`);
190
+ else if (asset.type !== node.type)
191
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", `${nodePath}/assetId`, `A ${node.type} node requires a ${node.type} asset.`);
192
+ }
193
+ if (isLayoutGroup(node) && node.backgroundAssetId !== undefined) {
194
+ const asset = assets.get(node.backgroundAssetId);
195
+ if (!asset)
196
+ add(issues, "MISSING_ASSET_REFERENCE", `${nodePath}/backgroundAssetId`, `Background asset '${node.backgroundAssetId}' does not exist.`);
197
+ else if (asset.type !== "image")
198
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", `${nodePath}/backgroundAssetId`, "A layout group background requires an image asset.");
199
+ }
200
+ // Путь ошибки сохраняется до конкретного state field, чтобы Inspector мог подсветить нужный picker.
201
+ if (node.type === "button")
202
+ BUTTON_STATE_KEYS.forEach((state) => { const field = `${state}AssetId`; const assetId = node.states[field]; if (assetId === undefined)
203
+ return; const asset = assets.get(assetId), path = `${nodePath}/states/${field}`; if (!asset)
204
+ add(issues, "MISSING_ASSET_REFERENCE", path, `Asset '${assetId}' does not exist.`);
205
+ else if (asset.type !== "image")
206
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", path, `A button '${state}' state requires an image asset.`); });
207
+ if (node.type === "button")
208
+ for (const field of ["pressAssetId", "hoverAssetId"]) {
209
+ const assetId = node.sounds?.[field];
210
+ if (assetId === undefined)
211
+ continue;
212
+ const asset = assets.get(assetId), soundPath = `${nodePath}/sounds/${field}`;
213
+ if (!asset)
214
+ add(issues, "MISSING_ASSET_REFERENCE", soundPath, `Asset '${assetId}' does not exist.`);
215
+ else if (asset.type !== "sound")
216
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", soundPath, `A button ${field} requires a sound asset.`);
217
+ }
218
+ if (node.type === "text" && node.style?.fontAssetId !== undefined) {
219
+ const asset = assets.get(node.style.fontAssetId), path = `${nodePath}/style/fontAssetId`;
220
+ if (!asset)
221
+ add(issues, "MISSING_ASSET_REFERENCE", path, `Asset '${node.style.fontAssetId}' does not exist.`);
222
+ else if (asset.type !== "font")
223
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", path, "A text node fontAssetId requires a font asset.");
224
+ }
225
+ if (node.type === "input" && node.backgroundAssetId !== undefined) {
226
+ const asset = assets.get(node.backgroundAssetId);
227
+ if (!asset)
228
+ add(issues, "MISSING_ASSET_REFERENCE", `${nodePath}/backgroundAssetId`, `Background asset '${node.backgroundAssetId}' does not exist.`);
229
+ else if (asset.type !== "image")
230
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", `${nodePath}/backgroundAssetId`, "An input background requires an image asset.");
231
+ }
232
+ if (node.type === "input" && node.textStyle.fontAssetId !== undefined) {
233
+ const asset = assets.get(node.textStyle.fontAssetId), path = `${nodePath}/textStyle/fontAssetId`;
234
+ if (!asset)
235
+ add(issues, "MISSING_ASSET_REFERENCE", path, `Asset '${node.textStyle.fontAssetId}' does not exist.`);
236
+ else if (asset.type !== "font")
237
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", path, "An input node textStyle fontAssetId requires a font asset.");
238
+ }
239
+ if (node.type === "slider" || node.type === "progress-bar") {
240
+ const imageReferences = [["backgroundAssetId", node.backgroundAssetId], ["fillAssetId", node.fillAssetId]];
241
+ if (node.type === "slider")
242
+ imageReferences.push(["handleAssetId", node.handleAssetId]);
243
+ for (const [field, assetId] of imageReferences) {
244
+ const asset = assets.get(assetId);
245
+ const assetPath = `${nodePath}/${field}`;
246
+ if (!asset)
247
+ add(issues, "MISSING_ASSET_REFERENCE", assetPath, `Asset '${assetId}' does not exist.`);
248
+ else if (asset.type !== "image")
249
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", assetPath, `A ${node.type} ${field} requires an image asset.`);
250
+ }
251
+ }
252
+ if (node.type === "slider") {
253
+ if (!(node.min < node.max) || !(node.step > 0))
254
+ add(issues, "INVALID_VALUE_RANGE", nodePath, "A slider requires min < max and step > 0.");
255
+ if (node.defaultValue < node.min || node.defaultValue > node.max)
256
+ add(issues, "VALUE_OUT_OF_RANGE", `${nodePath}/defaultValue`, "Slider defaultValue must be inside the inclusive min/max range.");
257
+ if (node.valueTextStyle?.fontAssetId !== undefined) {
258
+ const asset = assets.get(node.valueTextStyle.fontAssetId), fontPath = `${nodePath}/valueTextStyle/fontAssetId`;
259
+ if (!asset)
260
+ add(issues, "MISSING_ASSET_REFERENCE", fontPath, `Asset '${node.valueTextStyle.fontAssetId}' does not exist.`);
261
+ else if (asset.type !== "font")
262
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", fontPath, "A slider valueTextStyle fontAssetId requires a font asset.");
263
+ }
264
+ }
265
+ if (node.type === "progress-bar" && (node.defaultProgress < 0 || node.defaultProgress > 100))
266
+ add(issues, "VALUE_OUT_OF_RANGE", `${nodePath}/defaultProgress`, "Progress bar defaultProgress must be inside the inclusive 0..100 range.");
267
+ if (node.type === "prefab-instance" && !prefabs.has(node.prefabId))
268
+ add(issues, "MISSING_PREFAB_REFERENCE", `${nodePath}/prefabId`, `Prefab '${node.prefabId}' does not exist.`);
269
+ if (node.type === "particle-emitter") {
270
+ const effect = effects.get(node.effectId);
271
+ if (!effect)
272
+ add(issues, "MISSING_EFFECT_REFERENCE", `${nodePath}/effectId`, `Effect '${node.effectId}' does not exist.`);
273
+ else if (effect.type !== "particles")
274
+ add(issues, "INCOMPATIBLE_EFFECT_REFERENCE", `${nodePath}/effectId`, "Particle emitter requires a particle effect.");
275
+ }
276
+ if (node.type === "grid-layout" && node.layoutGroup.base.constraint !== "flexible" && node.layoutGroup.base.constraintCount === undefined)
277
+ add(issues, "MISSING_GRID_CONSTRAINT_COUNT", `${nodePath}/layoutGroup/base/constraintCount`, "A fixed grid constraint requires constraintCount.");
278
+ for (const profile of ["desktop", "mobile"]) {
279
+ const grid = node.type === "grid-layout" ? { ...node.layoutGroup.base, ...node.layoutGroup.overrides?.[profile] } : undefined;
280
+ if (grid !== undefined && grid.constraint !== "flexible" && grid.constraintCount === undefined)
281
+ add(issues, "MISSING_GRID_CONSTRAINT_COUNT", `${nodePath}/layoutGroup/overrides/${profile}/constraintCount`, "A fixed grid constraint requires constraintCount.");
282
+ }
283
+ checkResolvedSizes(node, nodePath, issues);
284
+ });
285
+ const visiting = new Set(), visited = new Set();
286
+ const visit = (id) => { if (visiting.has(id)) {
287
+ add(issues, "HIERARCHY_CYCLE", path, `Hierarchy contains a cycle through '${id}'.`);
288
+ return;
289
+ } if (visited.has(id))
290
+ return; const node = nodes.get(id); if (!node)
291
+ return; visiting.add(id); node.children.forEach(visit); visiting.delete(id); visited.add(id); };
292
+ nodes.forEach((_, id) => visit(id));
293
+ }
294
+ function semantic(document) {
295
+ const issues = [], ids = new Set(), register = (id, path) => { if (ids.has(id))
296
+ add(issues, "DUPLICATE_ID", path, `Duplicate entity ID '${id}'.`); ids.add(id); };
297
+ register(document.project.id, "/project/id");
298
+ const assets = new Map(), prefabs = new Set(), effects = new Map();
299
+ const fontMediaTypes = new Set(["font/woff2", "font/woff", "font/ttf", "font/otf", "application/font-woff", "application/x-font-ttf", "application/x-font-opentype"]);
300
+ document.assets.forEach((asset, i) => { register(asset.id, `/assets/${i}/id`); assets.set(asset.id, asset); if (asset.type === "font" && !fontMediaTypes.has(asset.source.mediaType))
301
+ add(issues, "INVALID_FONT_MEDIA_TYPE", `/assets/${i}/source/mediaType`, `Unsupported font media type '${asset.source.mediaType}'.`); });
302
+ // Каждый atlas-фрейм ведёт себя как обычный image-ассет во всех местах, где нода ссылается на assetId:
303
+ // виртуальная запись позволяет существующим MISSING_ASSET_REFERENCE/INCOMPATIBLE_ASSET_REFERENCE проверкам
304
+ // работать без изменений в каждой ветке hierarchy().
305
+ document.assets.forEach((asset) => { if (asset.type !== "atlas")
306
+ return; for (const frameId of Object.values(asset.frames)) {
307
+ if (!assets.has(frameId))
308
+ assets.set(frameId, { id: frameId, name: frameId, type: "image", source: { uri: "", mediaType: "image/png" } });
309
+ } });
310
+ document.effects.forEach((effect, i) => { register(effect.id, `/effects/${i}/id`); effects.set(effect.id, effect); if (!isParticleEffect(effect))
311
+ return; const p = `/effects/${i}`, e = effect.emission, v = effect.particle.visual; const ranges = [["particle/lifetime", effect.particle.lifetime], ["particle/movement/speed", effect.particle.movement.speed], ["particle/visual/scale/start", v.scale.start], ["particle/visual/scale/end", v.scale.end], ["particle/visual/rotation/initialDegrees", v.rotation.initialDegrees], ["particle/visual/rotation/angularVelocityDegrees", v.rotation.angularVelocityDegrees]]; ranges.forEach(([field, range]) => { if (range.min > range.max)
312
+ add(issues, "INVALID_PARTICLE_RANGE", `${p}/${field}`, "Particle range min must not exceed max."); }); if (e.rate === 0 && e.bursts.length === 0)
313
+ add(issues, "EMPTY_PARTICLE_EMISSION", `${p}/emission`, "Particle emission needs a rate or a burst."); e.bursts.forEach((burst, j) => { if (burst.time > e.duration)
314
+ add(issues, "PARTICLE_BURST_OUTSIDE_DURATION", `${p}/emission/bursts/${j}/time`, "Particle burst time must be inside emission duration."); }); const source = v.source; particleAssetIds(effect).forEach((id, j) => { const asset = assets.get(id), sourcePath = source.type === "single" ? `${p}/particle/visual/source/assetId` : `${p}/particle/visual/source/assetIds/${j}`; if (!asset)
315
+ add(issues, "MISSING_ASSET_REFERENCE", sourcePath, `Asset '${id}' does not exist.`);
316
+ else if (asset.type !== "image")
317
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", sourcePath, "Particle visual source requires an image asset or atlas frame."); }); });
318
+ document.prefabs.forEach((prefab, i) => { register(prefab.id, `/prefabs/${i}/id`); prefabs.add(prefab.id); });
319
+ document.scenes.forEach((scene, i) => register(scene.id, `/scenes/${i}/id`));
320
+ document.prefabs.forEach((prefab, i) => { prefab.nodes.forEach((node, j) => register(node.id, `/prefabs/${i}/nodes/${j}/id`)); hierarchy(prefab, `/prefabs/${i}`, assets, prefabs, effects, issues); });
321
+ document.scenes.forEach((scene, i) => { scene.nodes.forEach((node, j) => register(node.id, `/scenes/${i}/nodes/${j}/id`)); hierarchy(scene, `/scenes/${i}`, assets, prefabs, effects, issues); const musicAssetId = scene.audio?.backgroundMusicAssetId; if (musicAssetId !== undefined) {
322
+ const asset = assets.get(musicAssetId), musicPath = `/scenes/${i}/audio/backgroundMusicAssetId`;
323
+ if (!asset)
324
+ add(issues, "MISSING_ASSET_REFERENCE", musicPath, `Asset '${musicAssetId}' does not exist.`);
325
+ else if (asset.type !== "sound")
326
+ add(issues, "INCOMPATIBLE_ASSET_REFERENCE", musicPath, "Background music requires a sound asset.");
327
+ } const bindings = new Set(); scene.nodes.forEach((node, j) => { if (node.binding !== undefined) {
328
+ const binding = node.binding.trim();
329
+ if (!binding)
330
+ add(issues, "EMPTY_BINDING", `/scenes/${i}/nodes/${j}/binding`, "Binding must not be empty after trimming.");
331
+ else if (bindings.has(binding))
332
+ add(issues, "DUPLICATE_BINDING", `/scenes/${i}/nodes/${j}/binding`, `Binding '${binding}' is duplicated in this scene.`);
333
+ else
334
+ bindings.add(binding);
335
+ } }); });
336
+ return issues;
337
+ }
338
+ function collectNonFiniteNumbers(input, path, issues) {
339
+ if (typeof input === "number") {
340
+ if (!Number.isFinite(input))
341
+ add(issues, "NON_FINITE_NUMBER", path, "Numbers must be finite.");
342
+ return;
343
+ }
344
+ if (Array.isArray(input))
345
+ input.forEach((value, index) => collectNonFiniteNumbers(value, `${path}/${index}`, issues));
346
+ else if (typeof input === "object" && input !== null)
347
+ Object.entries(input).forEach(([key, value]) => collectNonFiniteNumbers(value, `${path}/${key}`, issues));
348
+ }
349
+ export function validateProjectDocument(input) { if (!structural(input))
350
+ return { valid: false, issues: (structural.errors ?? []).map((error) => ({ code: "STRUCTURAL_SCHEMA", path: error.instancePath || "/", message: error.message ?? "Invalid document structure.", severity: "error" })) }; const issues = []; collectNonFiniteNumbers(input, "", issues); issues.push(...semantic(input)); return { valid: issues.length === 0, issues }; }
351
+ export function assertProjectDocument(input) { const result = validateProjectDocument(input); if (!result.valid)
352
+ throw new TypeError(`Invalid ProjectDocument: ${result.issues.map((x) => `${x.code} at ${x.path}`).join(", ")}`); }
353
+ /** v1 хранил точечный якорь anchorX/anchorY; v2 заменяет его парой anchorMin/anchorMax с тем же значением. */
354
+ function migrateTransformV1(transform) {
355
+ for (const axis of ["X", "Y"]) {
356
+ const value = transform[`anchor${axis}`];
357
+ delete transform[`anchor${axis}`];
358
+ if (typeof value !== "number")
359
+ continue;
360
+ transform[`anchorMin${axis}`] = value;
361
+ transform[`anchorMax${axis}`] = value;
362
+ }
363
+ }
364
+ function migrateV1ToV2(document) {
365
+ const owners = [...(document.scenes ?? []), ...(document.prefabs ?? [])];
366
+ for (const owner of owners) {
367
+ for (const node of owner.nodes) {
368
+ if (typeof node.transform === "object" && node.transform !== null)
369
+ migrateTransformV1(node.transform);
370
+ const overrides = node.layoutOverrides;
371
+ for (const profile of ["desktop", "mobile"]) {
372
+ const transform = overrides?.[profile]?.transform;
373
+ if (typeof transform === "object" && transform !== null)
374
+ migrateTransformV1(transform);
375
+ }
376
+ }
377
+ }
378
+ }
379
+ export function migrateProjectDocument(input) { if (typeof input !== "object" || input === null || !Object.hasOwn(input, "schemaVersion"))
380
+ throw new ProjectDocumentMigrationError("A schemaVersion is required for migration."); const version = input.schemaVersion; if (typeof version !== "number" || !Number.isInteger(version) || version < 1 || version > CURRENT_SCHEMA_VERSION)
381
+ throw new ProjectDocumentMigrationError(`Unsupported schemaVersion '${String(version)}'.`); const migrated = structuredClone(input); if (version <= 1)
382
+ migrateV1ToV2(migrated); if (version <= 6)
383
+ migrated.effects = []; migrated.schemaVersion = CURRENT_SCHEMA_VERSION; assertProjectDocument(migrated); return migrated; }
384
+ function canonicalizeJson(value) {
385
+ if (Array.isArray(value))
386
+ return value.map(canonicalizeJson);
387
+ if (typeof value === "object" && value !== null)
388
+ return Object.fromEntries(Object.keys(value).sort().map((key) => [key, canonicalizeJson(value[key])]));
389
+ return value;
390
+ }
391
+ export function serializeProjectDocument(document) { assertProjectDocument(document); return `${JSON.stringify(canonicalizeJson(document))}\n`; }
392
+ export * from "./assetPaths.js";
393
+ export * from "./manifest.js";
394
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type ProjectDocument, type UINode, type ValidationResult } from "./index.js";
2
+ export type ButtonNode = Extract<UINode, {
3
+ type: "button";
4
+ }>;
5
+ /** Appends a button whose four states each reference their own image asset, wired into the fixture's scene root. */
6
+ export declare function addButtonNode(document: ProjectDocument): ButtonNode;
7
+ export declare const stableId: (value: number) => string;
8
+ /** Appends an atlas asset with one named frame and points an existing image node at that frame id. */
9
+ export declare function addAtlasAssetWithFrame(document: ProjectDocument): {
10
+ atlasId: string;
11
+ frameId: string;
12
+ };
13
+ export declare function createProjectDocumentFixture(): ProjectDocument;
14
+ export declare function validateFixtureMutation(mutate: (document: ProjectDocument) => void): ValidationResult;
15
+ //# sourceMappingURL=index.test-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test-fixtures.d.ts","sourceRoot":"","sources":["../src/index.test-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE7D,oHAAoH;AACpH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,CAuBnE;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,MACqB,CAAC;AAE/D,sGAAsG;AACtG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAetG;AAED,wBAAgB,4BAA4B,IAAI,eAAe,CAmF9D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,gBAAgB,CAIrG"}