@openfairygui/cli 0.3.0-alpha.2 → 0.3.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +126 -19
- package/package.json +4 -4
package/dist/cli.mjs
CHANGED
|
@@ -821,7 +821,7 @@ var ExtensibleProperty = class extends Property {
|
|
|
821
821
|
};
|
|
822
822
|
//#endregion
|
|
823
823
|
//#region ../core/src/constants.ts
|
|
824
|
-
const VERSION = `v0.3.0-alpha.
|
|
824
|
+
const VERSION = `v0.3.0-alpha.3`;
|
|
825
825
|
/** Binary package file magic number: "FGUI" as uint32. */
|
|
826
826
|
const FGUI_MAGIC = 1179080009;
|
|
827
827
|
/** Null string index in the binary string table. */
|
|
@@ -20447,6 +20447,84 @@ function getXmlNode(value) {
|
|
|
20447
20447
|
if (!node || typeof node !== "object" || Array.isArray(node)) return null;
|
|
20448
20448
|
return node;
|
|
20449
20449
|
}
|
|
20450
|
+
const COMPONENT_INT32_RULES = [
|
|
20451
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.size, 2],
|
|
20452
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, 4],
|
|
20453
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, 4],
|
|
20454
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, 4],
|
|
20455
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness, 2],
|
|
20456
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX, 1],
|
|
20457
|
+
[PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY, 1]
|
|
20458
|
+
];
|
|
20459
|
+
const DISPLAY_OBJECT_INT32_RULES = [
|
|
20460
|
+
[PROJECT_XML_PROTOCOL.list.attrs.xy, 2],
|
|
20461
|
+
[PROJECT_XML_PROTOCOL.list.attrs.size, 2],
|
|
20462
|
+
[PROJECT_XML_PROTOCOL.list.attrs.restrictSize, 4]
|
|
20463
|
+
];
|
|
20464
|
+
const LIST_INT32_RULES = [
|
|
20465
|
+
[PROJECT_XML_PROTOCOL.list.attrs.margin, 4],
|
|
20466
|
+
[PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, 4],
|
|
20467
|
+
[PROJECT_XML_PROTOCOL.list.attrs.clipSoftness, 2]
|
|
20468
|
+
];
|
|
20469
|
+
function isProjectInt32(value) {
|
|
20470
|
+
const trimmed = value.trim();
|
|
20471
|
+
if (!/^[+-]?\d+$/.test(trimmed)) return false;
|
|
20472
|
+
const parsed = BigInt(trimmed);
|
|
20473
|
+
return parsed >= -2147483648n && parsed <= 2147483647n;
|
|
20474
|
+
}
|
|
20475
|
+
function hasInvalidProjectInt32Parts(value, partCount, allowSuffix = false) {
|
|
20476
|
+
const parts = String(value).split(",");
|
|
20477
|
+
if (allowSuffix ? parts.length < partCount : parts.length !== partCount) return true;
|
|
20478
|
+
return parts.slice(0, partCount).some((part) => !isProjectInt32(part));
|
|
20479
|
+
}
|
|
20480
|
+
function validateComponentXmlGeometry(ctx, comp, sourcePath, componentNode) {
|
|
20481
|
+
const addDiagnostics = (attrs, rules, path, nodeId) => {
|
|
20482
|
+
for (const [spec, partCount] of rules) {
|
|
20483
|
+
const value = readXmlAttr(attrs, spec);
|
|
20484
|
+
if (value === void 0 || !hasInvalidProjectInt32Parts(value, partCount)) continue;
|
|
20485
|
+
ctx.addDiagnostic({
|
|
20486
|
+
severity: "error",
|
|
20487
|
+
code: "desktop_incompatible_geometry",
|
|
20488
|
+
path: `${path}.${spec.canonical}`,
|
|
20489
|
+
message: `FairyGUI Desktop requires "${spec.canonical}" to contain ${partCount} signed 32-bit integer value(s); received ${JSON.stringify(String(value))}.`,
|
|
20490
|
+
resourceId: comp.getId(),
|
|
20491
|
+
...nodeId ? { nodeId } : {},
|
|
20492
|
+
sourcePath
|
|
20493
|
+
});
|
|
20494
|
+
}
|
|
20495
|
+
};
|
|
20496
|
+
const componentPath = `components.${comp.getId()}`;
|
|
20497
|
+
addDiagnostics(componentNode, COMPONENT_INT32_RULES, `${componentPath}.component`);
|
|
20498
|
+
const displayList = getXmlNode(componentNode.displayList);
|
|
20499
|
+
if (!displayList) return;
|
|
20500
|
+
let nodeIndex = 0;
|
|
20501
|
+
for (const [tagName, definitions] of Object.entries(displayList)) for (const definition of ensureArray(definitions)) {
|
|
20502
|
+
const attrs = getXmlNode(definition);
|
|
20503
|
+
if (!attrs) continue;
|
|
20504
|
+
const nodeId = readXmlAttr(attrs, PROJECT_XML_PROTOCOL.displayObject.attrs.id);
|
|
20505
|
+
const nodePath = `${componentPath}.displayList.${nodeIndex++}`;
|
|
20506
|
+
addDiagnostics(attrs, DISPLAY_OBJECT_INT32_RULES, nodePath, nodeId);
|
|
20507
|
+
const normalizedTagName = tagName.toLowerCase();
|
|
20508
|
+
if (normalizedTagName === "list" || normalizedTagName === "tree") addDiagnostics(attrs, LIST_INT32_RULES, nodePath, nodeId);
|
|
20509
|
+
for (const gearTag of ["gearXY", "gearSize"]) for (const [gearIndex, gearDefinition] of ensureArray(attrs[gearTag]).entries()) {
|
|
20510
|
+
const gear = getXmlNode(gearDefinition);
|
|
20511
|
+
if (!gear) continue;
|
|
20512
|
+
for (const spec of [PROJECT_XML_PROTOCOL.gear.attrs.values, PROJECT_XML_PROTOCOL.gear.attrs.default]) {
|
|
20513
|
+
const value = readXmlAttr(gear, spec);
|
|
20514
|
+
if (value === void 0 || !String(value).split("|").some((segment) => segment.trim() !== "-" && hasInvalidProjectInt32Parts(segment, 2, true))) continue;
|
|
20515
|
+
ctx.addDiagnostic({
|
|
20516
|
+
severity: "error",
|
|
20517
|
+
code: "desktop_incompatible_geometry",
|
|
20518
|
+
path: `${nodePath}.${gearTag}.${gearIndex}.${spec.canonical}`,
|
|
20519
|
+
message: `FairyGUI Desktop requires each "${gearTag}.${spec.canonical}" segment to start with two signed 32-bit integers; received ${JSON.stringify(String(value))}.`,
|
|
20520
|
+
resourceId: comp.getId(),
|
|
20521
|
+
...nodeId ? { nodeId } : {},
|
|
20522
|
+
sourcePath
|
|
20523
|
+
});
|
|
20524
|
+
}
|
|
20525
|
+
}
|
|
20526
|
+
}
|
|
20527
|
+
}
|
|
20450
20528
|
function assignSetting(settings, key, value) {
|
|
20451
20529
|
switch (key) {
|
|
20452
20530
|
case "publish":
|
|
@@ -20569,7 +20647,9 @@ var ProjectReader = class {
|
|
|
20569
20647
|
const compContent = await fs.readFile(compPath);
|
|
20570
20648
|
if (diagnostics) {
|
|
20571
20649
|
assertWellFormedXml(compContent);
|
|
20572
|
-
|
|
20650
|
+
const componentNode = getXmlNode(parseXML(compContent).component);
|
|
20651
|
+
if (!componentNode) throw new Error("Component XML must contain a component root element.");
|
|
20652
|
+
validateComponentXmlGeometry(ctx, comp, compPath, componentNode);
|
|
20573
20653
|
}
|
|
20574
20654
|
readComponentXml(ctx, comp, compContent);
|
|
20575
20655
|
} catch (err) {
|
|
@@ -21297,6 +21377,17 @@ function formatTrimmedFixed$1(value, precision = 2) {
|
|
|
21297
21377
|
if (precision === 0) return value.toFixed(0);
|
|
21298
21378
|
return value.toFixed(precision).replace(/(?:\.0+|(\.\d*?[1-9])0+)$/, "$1");
|
|
21299
21379
|
}
|
|
21380
|
+
const INT32_MIN = -2147483648;
|
|
21381
|
+
const INT32_MAX = 2147483647;
|
|
21382
|
+
function formatProjectInt32(value, field = "project XML integer") {
|
|
21383
|
+
if (!Number.isFinite(value)) throw new Error(`${field} must be finite.`);
|
|
21384
|
+
const normalized = Math.trunc(value);
|
|
21385
|
+
if (normalized < INT32_MIN || normalized > INT32_MAX) throw new Error(`${field} must fit a signed 32-bit integer.`);
|
|
21386
|
+
return Object.is(normalized, -0) ? "0" : String(normalized);
|
|
21387
|
+
}
|
|
21388
|
+
function formatProjectInt32List(values, field) {
|
|
21389
|
+
return values.map((value) => formatProjectInt32(value, field)).join(",");
|
|
21390
|
+
}
|
|
21300
21391
|
function formatDisplayAlpha(value) {
|
|
21301
21392
|
return formatTrimmedFixed$1(value, 2);
|
|
21302
21393
|
}
|
|
@@ -21354,7 +21445,7 @@ function normalizeGearSizeSegment(segment, fixedScale, omitIdentityScale) {
|
|
|
21354
21445
|
if (!segment || segment === "-") return segment;
|
|
21355
21446
|
const parts = segment.split(",");
|
|
21356
21447
|
if (parts.length < 2) return segment;
|
|
21357
|
-
const normalized = [
|
|
21448
|
+
const normalized = [formatProjectInt32(Number(parts[0] ?? 0), "gearSize width"), formatProjectInt32(Number(parts[1] ?? 0), "gearSize height")];
|
|
21358
21449
|
if (parts.length >= 4) {
|
|
21359
21450
|
if (omitIdentityScale && isIdentityGearSizeScale(segment)) return normalized.join(",");
|
|
21360
21451
|
const scaleFormatter = fixedScale ? (value) => {
|
|
@@ -21365,12 +21456,23 @@ function normalizeGearSizeSegment(segment, fixedScale, omitIdentityScale) {
|
|
|
21365
21456
|
}
|
|
21366
21457
|
return normalized.join(",");
|
|
21367
21458
|
}
|
|
21459
|
+
function normalizeGearXYSegment(segment) {
|
|
21460
|
+
if (!segment || segment === "-") return segment;
|
|
21461
|
+
const parts = segment.split(",");
|
|
21462
|
+
if (parts.length < 2) return segment;
|
|
21463
|
+
return [
|
|
21464
|
+
formatProjectInt32(Number(parts[0] ?? 0), "gearXY x"),
|
|
21465
|
+
formatProjectInt32(Number(parts[1] ?? 0), "gearXY y"),
|
|
21466
|
+
...parts.slice(2)
|
|
21467
|
+
].join(",");
|
|
21468
|
+
}
|
|
21368
21469
|
function shouldCompactTextGearColor(ownerType, ownerName) {
|
|
21369
21470
|
return (ownerType === "GTextField" || ownerType === "GRichTextField" || ownerType === "GTextInput") && ownerName === "title";
|
|
21370
21471
|
}
|
|
21371
21472
|
function normalizeGearXmlValue(gearType, value, ownerType, ownerName, gear) {
|
|
21372
21473
|
const raw = String(value ?? "");
|
|
21373
21474
|
switch (gearType) {
|
|
21475
|
+
case GearType.XY: return raw.split("|").map((segment) => normalizeGearXYSegment(segment)).join("|");
|
|
21374
21476
|
case GearType.Size: {
|
|
21375
21477
|
const fixedScale = !gear?.getTween();
|
|
21376
21478
|
const segments = raw.split("|");
|
|
@@ -21390,10 +21492,10 @@ function normalizeGearXmlValue(gearType, value, ownerType, ownerName, gear) {
|
|
|
21390
21492
|
}
|
|
21391
21493
|
function writeCommonDisplayState(target, object, protocol) {
|
|
21392
21494
|
const specs = protocol.attrs;
|
|
21393
|
-
if (specs.xy) writeXmlAttr(target, specs.xy,
|
|
21495
|
+
if (specs.xy) writeXmlAttr(target, specs.xy, formatProjectInt32List([object.getX?.() ?? 0, object.getY?.() ?? 0], "display object xy"));
|
|
21394
21496
|
const width = object.getWidth?.() ?? 0;
|
|
21395
21497
|
const height = object.getHeight?.() ?? 0;
|
|
21396
|
-
if (specs.size && (width !== 0 || height !== 0)) writeXmlAttr(target, specs.size,
|
|
21498
|
+
if (specs.size && (width !== 0 || height !== 0)) writeXmlAttr(target, specs.size, formatProjectInt32List([width, height], "display object size"));
|
|
21397
21499
|
if (specs.locked && object.getLocked?.()) writeXmlAttr(target, specs.locked, "true");
|
|
21398
21500
|
const restrictSize = [
|
|
21399
21501
|
object.getMinWidth?.() ?? 0,
|
|
@@ -21401,7 +21503,7 @@ function writeCommonDisplayState(target, object, protocol) {
|
|
|
21401
21503
|
object.getMinHeight?.() ?? 0,
|
|
21402
21504
|
object.getMaxHeight?.() ?? 0
|
|
21403
21505
|
];
|
|
21404
|
-
if (specs.restrictSize && restrictSize.some((value) => value !== 0)) writeXmlAttr(target, specs.restrictSize, restrictSize
|
|
21506
|
+
if (specs.restrictSize && restrictSize.some((value) => value !== 0)) writeXmlAttr(target, specs.restrictSize, formatProjectInt32List(restrictSize, "display object restrictSize"));
|
|
21405
21507
|
if (specs.aspect && object.getAspect?.()) writeXmlAttr(target, specs.aspect, "true");
|
|
21406
21508
|
const pivotX = object.getPivotX?.() ?? 0;
|
|
21407
21509
|
const pivotY = object.getPivotY?.() ?? 0;
|
|
@@ -21431,8 +21533,13 @@ function writeCommonDisplayState(target, object, protocol) {
|
|
|
21431
21533
|
function hasNonZeroInsets(value) {
|
|
21432
21534
|
return !!value && !!(value.top || value.bottom || value.left || value.right);
|
|
21433
21535
|
}
|
|
21434
|
-
function formatInsets(value) {
|
|
21435
|
-
return
|
|
21536
|
+
function formatInsets(value, field = "margin") {
|
|
21537
|
+
return formatProjectInt32List([
|
|
21538
|
+
value.top ?? 0,
|
|
21539
|
+
value.bottom ?? 0,
|
|
21540
|
+
value.left ?? 0,
|
|
21541
|
+
value.right ?? 0
|
|
21542
|
+
], field);
|
|
21436
21543
|
}
|
|
21437
21544
|
function formatFillMethod(fillMethod) {
|
|
21438
21545
|
return {
|
|
@@ -21950,7 +22057,7 @@ function serializeChild(obj) {
|
|
|
21950
22057
|
const scrollBarFlags = typedObj.getScrollBarFlags?.() ?? 0;
|
|
21951
22058
|
if (scrollBarFlags !== 0) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarFlags, String(scrollBarFlags));
|
|
21952
22059
|
const scrollBarMargin = typedObj.getScrollBarMargin?.();
|
|
21953
|
-
if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, formatInsets(scrollBarMargin));
|
|
22060
|
+
if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarMargin, formatInsets(scrollBarMargin, "list scrollBarMargin"));
|
|
21954
22061
|
const vtScrollBarRes = typedObj.getVtScrollBarRes?.() ?? "";
|
|
21955
22062
|
const hzScrollBarRes = typedObj.getHzScrollBarRes?.() ?? "";
|
|
21956
22063
|
if (vtScrollBarRes || hzScrollBarRes) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollBarRes, `${vtScrollBarRes},${hzScrollBarRes}`);
|
|
@@ -21958,9 +22065,9 @@ function serializeChild(obj) {
|
|
|
21958
22065
|
const footerRes = typedObj.getFooterRes?.() ?? "";
|
|
21959
22066
|
if (headerRes || footerRes) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.ptrRes, `${headerRes},${footerRes}`);
|
|
21960
22067
|
const margin = typedObj.getMargin?.();
|
|
21961
|
-
if (hasNonZeroInsets(margin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.margin, formatInsets(margin));
|
|
22068
|
+
if (hasNonZeroInsets(margin)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.margin, formatInsets(margin, "list margin"));
|
|
21962
22069
|
const clipSoftness = typedObj.getClipSoftness?.();
|
|
21963
|
-
if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.clipSoftness,
|
|
22070
|
+
if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.clipSoftness, formatProjectInt32List([clipSoftness.x ?? 0, clipSoftness.y ?? 0], "list clipSoftness"));
|
|
21964
22071
|
if (typedObj.getScrollItemToViewOnClick?.() === false) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.scrollItemToViewOnClick, "false");
|
|
21965
22072
|
if (typedObj.getFoldInvisibleItems?.() === true) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.foldInvisibleItems, "true");
|
|
21966
22073
|
if (typedObj.getAutoClearItems?.() === true) writeXmlAttr(attrs, PROJECT_XML_PROTOCOL.list.attrs.autoClearItems, "true");
|
|
@@ -22202,7 +22309,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
|
|
|
22202
22309
|
await fs.mkdir(fs.dirname(targetPath));
|
|
22203
22310
|
const compAttrs = {};
|
|
22204
22311
|
const [w, h] = [typedComp.getWidth?.() ?? 0, typedComp.getHeight?.() ?? 0];
|
|
22205
|
-
if (w || h) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.size,
|
|
22312
|
+
if (w || h) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.size, formatProjectInt32List([w, h], "component size"));
|
|
22206
22313
|
const [pivotX, pivotY] = [typedComp.getPivotX?.() ?? 0, typedComp.getPivotY?.() ?? 0];
|
|
22207
22314
|
if (pivotX !== 0 || pivotY !== 0) {
|
|
22208
22315
|
writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.pivot, `${pivotX},${pivotY}`);
|
|
@@ -22215,14 +22322,14 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
|
|
|
22215
22322
|
2: "scroll"
|
|
22216
22323
|
}[overflow] ?? "visible");
|
|
22217
22324
|
const margin = typedComp.getMargin?.();
|
|
22218
|
-
if (hasNonZeroInsets(margin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, formatInsets(margin));
|
|
22325
|
+
if (hasNonZeroInsets(margin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.margin, formatInsets(margin, "component margin"));
|
|
22219
22326
|
const restrictSize = [
|
|
22220
22327
|
typedComp.getMinWidth?.() ?? 0,
|
|
22221
22328
|
typedComp.getMaxWidth?.() ?? 0,
|
|
22222
22329
|
typedComp.getMinHeight?.() ?? 0,
|
|
22223
22330
|
typedComp.getMaxHeight?.() ?? 0
|
|
22224
22331
|
];
|
|
22225
|
-
if (restrictSize.some((value) => value !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, restrictSize
|
|
22332
|
+
if (restrictSize.some((value) => value !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.restrictSize, formatProjectInt32List(restrictSize, "component restrictSize"));
|
|
22226
22333
|
if (typedComp.getBgColorEnabled?.()) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.bgColorEnabled, "true");
|
|
22227
22334
|
const bgColor = typedComp.getBgColor?.();
|
|
22228
22335
|
if (bgColor) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.bgColor, bgColor);
|
|
@@ -22231,9 +22338,9 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
|
|
|
22231
22338
|
const designImageLayer = typedComp.getDesignImageLayer?.() ?? 0;
|
|
22232
22339
|
if (designImageLayer !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageLayer, String(designImageLayer));
|
|
22233
22340
|
const designImageOffsetX = typedComp.getDesignImageOffsetX?.() ?? 0;
|
|
22234
|
-
if (designImageOffsetX !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX,
|
|
22341
|
+
if (designImageOffsetX !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetX, formatProjectInt32(designImageOffsetX, "designImageOffsetX"));
|
|
22235
22342
|
const designImageOffsetY = typedComp.getDesignImageOffsetY?.() ?? 0;
|
|
22236
|
-
if (designImageOffsetY !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY,
|
|
22343
|
+
if (designImageOffsetY !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.designImageOffsetY, formatProjectInt32(designImageOffsetY, "designImageOffsetY"));
|
|
22237
22344
|
const idNum = typedComp.getIdNum?.() ?? 0;
|
|
22238
22345
|
if (idNum !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.idnum, String(idNum));
|
|
22239
22346
|
const initName = typedComp.getInitName?.();
|
|
@@ -22241,7 +22348,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
|
|
|
22241
22348
|
const remark = typedComp.getRemark?.();
|
|
22242
22349
|
if (remark) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.remark, remark);
|
|
22243
22350
|
const clipSoftness = typedComp.getClipSoftness?.();
|
|
22244
|
-
if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness,
|
|
22351
|
+
if (clipSoftness && ((clipSoftness.x ?? 0) !== 0 || (clipSoftness.y ?? 0) !== 0)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.clipSoftness, formatProjectInt32List([clipSoftness.x ?? 0, clipSoftness.y ?? 0], "component clipSoftness"));
|
|
22245
22352
|
if (typedComp.getOpaque?.() === false) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.opaque, "false");
|
|
22246
22353
|
const mask = typedComp.getMask?.();
|
|
22247
22354
|
if (mask) {
|
|
@@ -22271,7 +22378,7 @@ async function writeComponent(fs, comp, pkgDir, sourceRelativePath) {
|
|
|
22271
22378
|
const scrollBarFlags = typedComp.getScrollBarFlags?.() ?? 0;
|
|
22272
22379
|
if (scrollBarFlags !== 0) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarFlags, String(scrollBarFlags));
|
|
22273
22380
|
const scrollBarMargin = typedComp.getScrollBarMargin?.();
|
|
22274
|
-
if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, formatInsets(scrollBarMargin));
|
|
22381
|
+
if (hasNonZeroInsets(scrollBarMargin)) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarMargin, formatInsets(scrollBarMargin, "component scrollBarMargin"));
|
|
22275
22382
|
const vtScrollBarRes = typedComp.getVtScrollBarRes?.() ?? "";
|
|
22276
22383
|
const hzScrollBarRes = typedComp.getHzScrollBarRes?.() ?? "";
|
|
22277
22384
|
if (vtScrollBarRes || hzScrollBarRes) writeXmlAttr(compAttrs, PROJECT_XML_PROTOCOL.componentRoot.attrs.scrollBarRes, `${vtScrollBarRes},${hzScrollBarRes}`);
|
|
@@ -31403,7 +31510,7 @@ function registerValidateCommand(program) {
|
|
|
31403
31510
|
//#region src/utils/package-version.ts
|
|
31404
31511
|
const require$1 = createRequire(import.meta.url);
|
|
31405
31512
|
function getInjectedPackageVersion() {
|
|
31406
|
-
const version = "0.3.0-alpha.
|
|
31513
|
+
const version = "0.3.0-alpha.3";
|
|
31407
31514
|
return typeof version === "string" && true ? version : null;
|
|
31408
31515
|
}
|
|
31409
31516
|
function readPackageVersion() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfairygui/cli",
|
|
3
|
-
"version": "0.3.0-alpha.
|
|
3
|
+
"version": "0.3.0-alpha.3",
|
|
4
4
|
"description": "FairyGUI Headless Authoring SDK — command-line interface.",
|
|
5
5
|
"author": "OpenFairyGUI Contributors",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"restore"
|
|
34
34
|
],
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@openfairygui/functions": "0.3.0-alpha.
|
|
37
|
-
"@openfairygui/core": "0.3.0-alpha.
|
|
36
|
+
"@openfairygui/functions": "0.3.0-alpha.3",
|
|
37
|
+
"@openfairygui/core": "0.3.0-alpha.3"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"commander": "^14.0.2",
|
|
41
41
|
"jiti": "^2.7.0",
|
|
42
|
-
"@openfairygui/backend": "0.3.0-alpha.
|
|
42
|
+
"@openfairygui/backend": "0.3.0-alpha.3"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
45
|
"sharp": ">=0.33.0"
|