@pixi-ui-editor/schema 0.1.0 → 0.2.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.
- package/README.md +11 -0
- package/dist/assetPaths.d.ts +7 -2
- package/dist/assetPaths.d.ts.map +1 -1
- package/dist/assetPaths.js +32 -12
- package/dist/assetPaths.js.map +1 -1
- package/dist/assetPaths.test.js +3 -3
- package/dist/assetPaths.test.js.map +1 -1
- package/dist/index.d.ts +11370 -5079
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +380 -27
- package/dist/index.js.map +1 -1
- package/dist/index.test-fixtures.d.ts.map +1 -1
- package/dist/index.test-fixtures.js +4 -0
- package/dist/index.test-fixtures.js.map +1 -1
- package/dist/index.test.js +124 -4
- package/dist/index.test.js.map +1 -1
- package/dist/prefabs.d.ts +88 -0
- package/dist/prefabs.d.ts.map +1 -0
- package/dist/prefabs.js +332 -0
- package/dist/prefabs.js.map +1 -0
- package/package.json +2 -1
package/dist/prefabs.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
const STRUCTURAL_OVERRIDE_KEYS = new Set(["id", "type", "parentId", "children", "editorOnly", "locked", "prefabId", "propertyOverrides", "locallyAddedNodes"]);
|
|
2
|
+
/**
|
|
3
|
+
* Разделитель сегментов адреса внутри инстанса пресета.
|
|
4
|
+
*
|
|
5
|
+
* Адрес — это путь по вложенным пресетам: `defA` — узел определения самого инстанса,
|
|
6
|
+
* `defA::prefab-node::defB` — узел `defB` внутри инстанса `defA`, вложенного в определение. Документ
|
|
7
|
+
* до вложенных пресетов хранил ровно один сегмент, поэтому старые адреса остаются валидными путями.
|
|
8
|
+
*/
|
|
9
|
+
export const PREFAB_NODE_PATH_SEPARATOR = "::prefab-node::";
|
|
10
|
+
export function materializedPrefabNodeId(instanceId, nodePath) {
|
|
11
|
+
return `${instanceId}${PREFAB_NODE_PATH_SEPARATOR}${nodePath}`;
|
|
12
|
+
}
|
|
13
|
+
/** Первый разделитель отделяет персистентный инстанс от адреса узла внутри него. */
|
|
14
|
+
export function parseMaterializedPrefabNodeId(id) {
|
|
15
|
+
const separator = id.indexOf(PREFAB_NODE_PATH_SEPARATOR);
|
|
16
|
+
if (separator < 0)
|
|
17
|
+
return undefined;
|
|
18
|
+
return { instanceId: id.slice(0, separator), nodePath: id.slice(separator + PREFAB_NODE_PATH_SEPARATOR.length) };
|
|
19
|
+
}
|
|
20
|
+
/** Склеивает адрес узла с адресом инстанса, внутри которого он объявлен. */
|
|
21
|
+
export function composePrefabNodePath(prefix, address) {
|
|
22
|
+
return prefix === "" ? address : `${prefix}${PREFAB_NODE_PATH_SEPARATOR}${address}`;
|
|
23
|
+
}
|
|
24
|
+
function isRecord(value) {
|
|
25
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
26
|
+
}
|
|
27
|
+
/** Applies a persisted sparse patch without allowing prefab hierarchy identity to change. */
|
|
28
|
+
export function applyPrefabNodePatch(base, patch) {
|
|
29
|
+
const merge = (current, next, root = false) => {
|
|
30
|
+
if (!isRecord(next))
|
|
31
|
+
return structuredClone(next);
|
|
32
|
+
const result = isRecord(current) ? structuredClone(current) : {};
|
|
33
|
+
for (const [key, value] of Object.entries(next)) {
|
|
34
|
+
if (root && STRUCTURAL_OVERRIDE_KEYS.has(key))
|
|
35
|
+
continue;
|
|
36
|
+
if (value === null)
|
|
37
|
+
delete result[key];
|
|
38
|
+
else
|
|
39
|
+
result[key] = isRecord(value) ? merge(result[key], value) : structuredClone(value);
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
return merge(base, patch, true);
|
|
44
|
+
}
|
|
45
|
+
/** Produces the smallest deterministic merge patch used by instance property overrides. */
|
|
46
|
+
export function createPrefabNodePatch(base, effective) {
|
|
47
|
+
const diff = (before, after, root = false) => {
|
|
48
|
+
if (Object.is(before, after))
|
|
49
|
+
return undefined;
|
|
50
|
+
if (!isRecord(before) || !isRecord(after))
|
|
51
|
+
return structuredClone(after);
|
|
52
|
+
const patch = {};
|
|
53
|
+
const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
|
|
54
|
+
for (const key of [...keys].sort()) {
|
|
55
|
+
if (root && STRUCTURAL_OVERRIDE_KEYS.has(key))
|
|
56
|
+
continue;
|
|
57
|
+
if (!Object.hasOwn(after, key))
|
|
58
|
+
patch[key] = null;
|
|
59
|
+
else {
|
|
60
|
+
const value = diff(before[key], after[key]);
|
|
61
|
+
if (value !== undefined)
|
|
62
|
+
patch[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return Object.keys(patch).length === 0 ? undefined : patch;
|
|
66
|
+
};
|
|
67
|
+
return diff(base, effective, true) ?? {};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Разворачивает один персистентный инстанс во все его узлы, включая вложенные пресеты.
|
|
71
|
+
*
|
|
72
|
+
* Приоритет патчей — как у Unity: чем ближе инстанс к сцене, тем он старше. Слои идут от владельца
|
|
73
|
+
* (индекс 0) к самым глубоким определениям, поэтому применяются в обратном порядке.
|
|
74
|
+
*/
|
|
75
|
+
function materializeInstance(document, instance, expandingPrefabIds, applyInstanceOverrides) {
|
|
76
|
+
const rootPrefab = document.prefabs.find((candidate) => candidate.id === instance.prefabId);
|
|
77
|
+
if (rootPrefab === undefined)
|
|
78
|
+
return undefined;
|
|
79
|
+
const ownerId = instance.id;
|
|
80
|
+
const localNodes = instance.locallyAddedNodes ?? [];
|
|
81
|
+
const editableLocalIds = new Set(localNodes.map((node) => node.id));
|
|
82
|
+
// Локальный узел персистентен сам по себе, поэтому сохраняет собственный stable ID; всё
|
|
83
|
+
// унаследованное получает ID, привязанный к инстансу, чтобы два инстанса не конфликтовали.
|
|
84
|
+
const idOf = (address) => (editableLocalIds.has(address) ? address : materializedPrefabNodeId(ownerId, address));
|
|
85
|
+
const nodes = [];
|
|
86
|
+
const nodesById = new Map();
|
|
87
|
+
const origins = new Map();
|
|
88
|
+
const emit = (source, effective, prefix, address, origin) => {
|
|
89
|
+
const id = idOf(address);
|
|
90
|
+
const node = {
|
|
91
|
+
...structuredClone(effective),
|
|
92
|
+
id,
|
|
93
|
+
parentId: source.parentId === null
|
|
94
|
+
? (prefix === "" ? null : idOf(prefix))
|
|
95
|
+
: idOf(composePrefabNodePath(prefix, source.parentId)),
|
|
96
|
+
children: source.children.map((childId) => idOf(composePrefabNodePath(prefix, childId))),
|
|
97
|
+
};
|
|
98
|
+
nodes.push(node);
|
|
99
|
+
nodesById.set(id, node);
|
|
100
|
+
origins.set(id, origin);
|
|
101
|
+
};
|
|
102
|
+
const patched = (base, address, layers) => {
|
|
103
|
+
let effective = base;
|
|
104
|
+
for (let index = layers.length - 1; index >= 0; index -= 1) {
|
|
105
|
+
const patch = layers[index].get(address);
|
|
106
|
+
if (patch !== undefined)
|
|
107
|
+
effective = applyPrefabNodePatch(effective, patch);
|
|
108
|
+
}
|
|
109
|
+
return effective;
|
|
110
|
+
};
|
|
111
|
+
const layerOf = (node, prefix) => new Map((node.propertyOverrides ?? []).map((override) => [composePrefabNodePath(prefix, override.nodeId), override.patch]));
|
|
112
|
+
/**
|
|
113
|
+
* Разворачивает локально добавленный инстанс: он персистентен и владеет собственной конфигурацией.
|
|
114
|
+
*
|
|
115
|
+
* Развёртка начинается с чистого набора: бесконечной иерархия становится только если определение
|
|
116
|
+
* пресета содержит само себя, а локальное добавление — конечные данные документа. Инстанс пресета
|
|
117
|
+
* внутри развёртки того же пресета поэтому допустим, как и в Unity.
|
|
118
|
+
*/
|
|
119
|
+
const mergeOwnedInstance = (local) => {
|
|
120
|
+
const sub = materializeInstance(document, local, new Set(), true);
|
|
121
|
+
if (sub === undefined)
|
|
122
|
+
return;
|
|
123
|
+
const host = nodesById.get(local.id);
|
|
124
|
+
for (const subNode of sub.nodes) {
|
|
125
|
+
if (subNode.parentId === null)
|
|
126
|
+
subNode.parentId = local.id;
|
|
127
|
+
nodes.push(subNode);
|
|
128
|
+
nodesById.set(subNode.id, subNode);
|
|
129
|
+
}
|
|
130
|
+
sub.origins.forEach((origin, id) => origins.set(id, origin));
|
|
131
|
+
if (host === undefined)
|
|
132
|
+
return;
|
|
133
|
+
for (const rootId of sub.rootNodeIds)
|
|
134
|
+
if (!host.children.includes(rootId))
|
|
135
|
+
host.children.push(rootId);
|
|
136
|
+
};
|
|
137
|
+
const expandContent = (host, prefix, layers, expanding) => {
|
|
138
|
+
const prefab = document.prefabs.find((candidate) => candidate.id === host.prefabId);
|
|
139
|
+
const expandable = prefab !== undefined && !expanding.has(prefab.id);
|
|
140
|
+
const nextExpanding = prefab === undefined ? expanding : new Set([...expanding, prefab.id]);
|
|
141
|
+
const nested = [];
|
|
142
|
+
if (expandable) {
|
|
143
|
+
for (const definitionNode of prefab.nodes) {
|
|
144
|
+
const address = composePrefabNodePath(prefix, definitionNode.id);
|
|
145
|
+
emit(definitionNode, patched(definitionNode, address, layers), prefix, address, { kind: "inherited", instanceId: ownerId, nodePath: address });
|
|
146
|
+
if (definitionNode.type === "prefab-instance")
|
|
147
|
+
nested.push({ node: definitionNode, address });
|
|
148
|
+
}
|
|
149
|
+
// Корни определения становятся детьми самого узла-инстанса; на верхнем уровне их забирает владелец.
|
|
150
|
+
const hostNode = prefix === "" ? undefined : nodesById.get(idOf(prefix));
|
|
151
|
+
if (hostNode !== undefined) {
|
|
152
|
+
for (const rootId of prefab.rootNodeIds) {
|
|
153
|
+
const childId = idOf(composePrefabNodePath(prefix, rootId));
|
|
154
|
+
if (nodesById.has(childId) && !hostNode.children.includes(childId))
|
|
155
|
+
hostNode.children.push(childId);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (const item of nested)
|
|
159
|
+
expandContent(item.node, item.address, [...layers, layerOf(item.node, item.address)], nextExpanding);
|
|
160
|
+
nested.length = 0;
|
|
161
|
+
}
|
|
162
|
+
// Локальные добавления владельца редактируемы; те, что пришли из определения, унаследованы.
|
|
163
|
+
const editable = prefix === "";
|
|
164
|
+
for (const local of host.locallyAddedNodes ?? []) {
|
|
165
|
+
const address = composePrefabNodePath(prefix, local.id);
|
|
166
|
+
emit(local, editable ? local : patched(local, address, layers), prefix, address, editable
|
|
167
|
+
? { kind: "local", instanceId: ownerId, localNodeId: local.id }
|
|
168
|
+
: { kind: "inherited", instanceId: ownerId, nodePath: address });
|
|
169
|
+
if (local.type !== "prefab-instance")
|
|
170
|
+
continue;
|
|
171
|
+
if (editable)
|
|
172
|
+
mergeOwnedInstance(local);
|
|
173
|
+
else
|
|
174
|
+
nested.push({ node: local, address });
|
|
175
|
+
}
|
|
176
|
+
for (const item of nested)
|
|
177
|
+
expandContent(item.node, item.address, [...layers, layerOf(item.node, item.address)], nextExpanding);
|
|
178
|
+
};
|
|
179
|
+
expandContent(instance, "", [applyInstanceOverrides ? layerOf(instance, "") : new Map()], expandingPrefabIds);
|
|
180
|
+
// Единая до-привязка: локальные узлы и корни вложенных развёрток попадают в children родителя,
|
|
181
|
+
// если тот их ещё не перечисляет. Порядок повторяет порядок выпуска узлов: сначала структура
|
|
182
|
+
// определения, затем локальные добавления от самого глубокого пресета к сцене.
|
|
183
|
+
for (const node of nodes) {
|
|
184
|
+
if (node.parentId === null)
|
|
185
|
+
continue;
|
|
186
|
+
const parent = nodesById.get(node.parentId);
|
|
187
|
+
if (parent !== undefined && !parent.children.includes(node.id))
|
|
188
|
+
parent.children.push(node.id);
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
rootNodeIds: [
|
|
192
|
+
...rootPrefab.rootNodeIds.map((id) => idOf(id)).filter((id) => nodesById.has(id)),
|
|
193
|
+
...localNodes.filter((node) => node.parentId === null).map((node) => node.id),
|
|
194
|
+
],
|
|
195
|
+
nodes,
|
|
196
|
+
origins,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
export function materializePrefabInstance(document, instance) {
|
|
200
|
+
return materializeInstance(document, instance, new Set(), true);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Узлы инстанса до применения его собственных property overrides, по адресам.
|
|
204
|
+
*
|
|
205
|
+
* Это «база» для нормализации и валидации: она уже включает конфигурацию вложенных инстансов,
|
|
206
|
+
* записанную в определениях пресетов, поэтому override, повторяющий её значение, схлопывается.
|
|
207
|
+
*/
|
|
208
|
+
export function resolvePrefabInstanceBaseNodes(document, instance) {
|
|
209
|
+
const base = new Map();
|
|
210
|
+
const materialized = materializeInstance(document, instance, new Set(), false);
|
|
211
|
+
if (materialized === undefined)
|
|
212
|
+
return base;
|
|
213
|
+
for (const node of materialized.nodes) {
|
|
214
|
+
const origin = materialized.origins.get(node.id);
|
|
215
|
+
if (origin?.kind === "inherited" && origin.instanceId === instance.id)
|
|
216
|
+
base.set(origin.nodePath, node);
|
|
217
|
+
}
|
|
218
|
+
return base;
|
|
219
|
+
}
|
|
220
|
+
export function normalizePrefabNodeOverrides(document, instance) {
|
|
221
|
+
const base = resolvePrefabInstanceBaseNodes(document, instance);
|
|
222
|
+
const normalized = [];
|
|
223
|
+
for (const override of instance.propertyOverrides ?? []) {
|
|
224
|
+
const baseNode = base.get(override.nodeId);
|
|
225
|
+
if (baseNode === undefined) {
|
|
226
|
+
normalized.push(override);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const patch = createPrefabNodePatch(baseNode, applyPrefabNodePatch(baseNode, override.patch));
|
|
230
|
+
if (Object.keys(patch).length > 0)
|
|
231
|
+
normalized.push({ nodeId: override.nodeId, patch });
|
|
232
|
+
}
|
|
233
|
+
if (normalized.length === 0)
|
|
234
|
+
delete instance.propertyOverrides;
|
|
235
|
+
else
|
|
236
|
+
instance.propertyOverrides = normalized;
|
|
237
|
+
if (instance.locallyAddedNodes?.length === 0)
|
|
238
|
+
delete instance.locallyAddedNodes;
|
|
239
|
+
}
|
|
240
|
+
/** Обходит все персистентные инстансы владельца, включая локально добавленные. */
|
|
241
|
+
export function forEachPrefabInstanceInOwner(owner, visit) {
|
|
242
|
+
const walk = (nodes) => {
|
|
243
|
+
for (const node of nodes) {
|
|
244
|
+
if (node.type !== "prefab-instance")
|
|
245
|
+
continue;
|
|
246
|
+
visit(node);
|
|
247
|
+
walk(node.locallyAddedNodes ?? []);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
walk(owner.nodes);
|
|
251
|
+
}
|
|
252
|
+
export function forEachPrefabInstance(document, visit) {
|
|
253
|
+
for (const owner of [...document.scenes, ...document.prefabs])
|
|
254
|
+
forEachPrefabInstanceInOwner(owner, visit);
|
|
255
|
+
}
|
|
256
|
+
export function findPrefabInstanceInOwner(owner, instanceId) {
|
|
257
|
+
let found;
|
|
258
|
+
forEachPrefabInstanceInOwner(owner, (instance) => {
|
|
259
|
+
if (found === undefined && instance.id === instanceId)
|
|
260
|
+
found = instance;
|
|
261
|
+
});
|
|
262
|
+
return found;
|
|
263
|
+
}
|
|
264
|
+
export function findPrefabInstance(document, instanceId) {
|
|
265
|
+
for (const owner of [...document.scenes, ...document.prefabs]) {
|
|
266
|
+
const instance = findPrefabInstanceInOwner(owner, instanceId);
|
|
267
|
+
if (instance !== undefined)
|
|
268
|
+
return instance;
|
|
269
|
+
}
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Ссылается ли пресет на другой — сам собой или через любую цепочку вложенных инстансов.
|
|
274
|
+
*
|
|
275
|
+
* Так проверяется рекурсия: вставлять инстанс пресета туда, где он уже раскрывается, нельзя, иначе
|
|
276
|
+
* иерархия стала бы бесконечной.
|
|
277
|
+
*/
|
|
278
|
+
export function prefabReferencesPrefab(document, prefabId, searchedPrefabId) {
|
|
279
|
+
const visited = new Set();
|
|
280
|
+
const visit = (id) => {
|
|
281
|
+
if (id === searchedPrefabId)
|
|
282
|
+
return true;
|
|
283
|
+
if (visited.has(id))
|
|
284
|
+
return false;
|
|
285
|
+
visited.add(id);
|
|
286
|
+
const prefab = document.prefabs.find((candidate) => candidate.id === id);
|
|
287
|
+
if (prefab === undefined)
|
|
288
|
+
return false;
|
|
289
|
+
let found = false;
|
|
290
|
+
forEachPrefabInstanceInOwner(prefab, (instance) => { found ||= visit(instance.prefabId); });
|
|
291
|
+
return found;
|
|
292
|
+
};
|
|
293
|
+
return visit(prefabId);
|
|
294
|
+
}
|
|
295
|
+
/** Сколько раз пресет используется в документе, включая вложенные и локально добавленные инстансы. */
|
|
296
|
+
export function countPrefabInstances(document, prefabId) {
|
|
297
|
+
let count = 0;
|
|
298
|
+
forEachPrefabInstance(document, (instance) => {
|
|
299
|
+
if (instance.prefabId === prefabId)
|
|
300
|
+
count += 1;
|
|
301
|
+
});
|
|
302
|
+
return count;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Плоский граф авторинга владельца: его собственные узлы плюс развёрнутые поддеревья всех инстансов.
|
|
306
|
+
*
|
|
307
|
+
* Единственный резолвер иерархии: им пользуются и редактор (иерархия, selection, gizmos), и runtime
|
|
308
|
+
* (сборка Pixi-дерева, сбор ассетов), поэтому расхождений между ними быть не может.
|
|
309
|
+
*/
|
|
310
|
+
export function resolveOwnerNodeGraph(document, owner) {
|
|
311
|
+
const nodes = structuredClone(owner.nodes);
|
|
312
|
+
const nodesById = new Map(nodes.map((node) => [node.id, node]));
|
|
313
|
+
const origins = new Map();
|
|
314
|
+
for (const ownerNode of owner.nodes) {
|
|
315
|
+
if (ownerNode.type !== "prefab-instance")
|
|
316
|
+
continue;
|
|
317
|
+
const instanceCopy = nodesById.get(ownerNode.id);
|
|
318
|
+
const materialized = materializePrefabInstance(document, ownerNode);
|
|
319
|
+
if (materialized === undefined || instanceCopy === undefined)
|
|
320
|
+
continue;
|
|
321
|
+
instanceCopy.children = [...materialized.rootNodeIds];
|
|
322
|
+
for (const materializedNode of materialized.nodes) {
|
|
323
|
+
if (materializedNode.parentId === null)
|
|
324
|
+
materializedNode.parentId = ownerNode.id;
|
|
325
|
+
nodes.push(materializedNode);
|
|
326
|
+
nodesById.set(materializedNode.id, materializedNode);
|
|
327
|
+
}
|
|
328
|
+
materialized.origins.forEach((origin, id) => origins.set(id, origin));
|
|
329
|
+
}
|
|
330
|
+
return { rootNodeIds: [...owner.rootNodeIds], nodes, origins };
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=prefabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefabs.js","sourceRoot":"","sources":["../src/prefabs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED