@pixldocs/canvas-renderer 0.5.86 → 0.5.87
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 +39 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +39 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10694,6 +10694,7 @@ function flattenSectionStateToFormData(sectionState, sections) {
|
|
|
10694
10694
|
flat[`${sectionPrefix}_${oneBased}_sectionLabel`] = sectionLabel;
|
|
10695
10695
|
flat[`${sectionPrefix}_${oneBased}_label`] = sectionLabel;
|
|
10696
10696
|
for (const f of section.entryFields) {
|
|
10697
|
+
if (f.key === "__entryId" || f.key === "__entryName") continue;
|
|
10697
10698
|
const v = entry[f.key];
|
|
10698
10699
|
if (f.templateKey) {
|
|
10699
10700
|
if (f.type === "list" && Array.isArray(v)) {
|
|
@@ -10742,12 +10743,25 @@ function baseId(id) {
|
|
|
10742
10743
|
const REPEATABLE_KEY_REGEX = /^field_(.+)_(\d+)_(.+)$/;
|
|
10743
10744
|
const NESTED_REPEATABLE_KEY_REGEX = /^field_(.+)_(\d+)_field_(.+)_(\d+)_(.+)$/;
|
|
10744
10745
|
const FORMDEF_CANONICAL_KEY_REGEX = /^field_.+_N_.+$/;
|
|
10745
|
-
function parseEntryRange(range, max) {
|
|
10746
|
+
function parseEntryRange(range, max, entryMeta) {
|
|
10746
10747
|
if (!range || !range.trim()) return null;
|
|
10747
10748
|
const out = /* @__PURE__ */ new Set();
|
|
10748
10749
|
for (const partRaw of range.split(",")) {
|
|
10749
10750
|
const part = partRaw.trim();
|
|
10750
10751
|
if (!part) continue;
|
|
10752
|
+
if (part.startsWith("#")) {
|
|
10753
|
+
const token = part.slice(1).trim().toLowerCase();
|
|
10754
|
+
if (!token || !(entryMeta == null ? void 0 : entryMeta.length)) continue;
|
|
10755
|
+
for (let i = 0; i < entryMeta.length; i++) {
|
|
10756
|
+
const m2 = entryMeta[i];
|
|
10757
|
+
if (!m2) continue;
|
|
10758
|
+
if (m2.id && m2.id.toLowerCase() === token || m2.name && m2.name.toLowerCase() === token) {
|
|
10759
|
+
const idx = i + 1;
|
|
10760
|
+
if (idx >= 1 && idx <= max) out.add(idx);
|
|
10761
|
+
}
|
|
10762
|
+
}
|
|
10763
|
+
continue;
|
|
10764
|
+
}
|
|
10751
10765
|
if (/^\d+$/.test(part)) {
|
|
10752
10766
|
const n = parseInt(part, 10);
|
|
10753
10767
|
if (n >= 1 && n <= max) out.add(n);
|
|
@@ -11162,6 +11176,10 @@ function applyFormDataToConfig(config, mappings, formValues, repeatableSectionsF
|
|
|
11162
11176
|
const filter = item == null ? void 0 : item.entryFilter;
|
|
11163
11177
|
return (filter == null ? void 0 : filter.mode) === "range" && ((_a2 = filter.range) == null ? void 0 : _a2.trim()) ? filter : void 0;
|
|
11164
11178
|
};
|
|
11179
|
+
const entryMetaFromList = (baseNodeId) => {
|
|
11180
|
+
const item = repeatableList.find((r) => baseId(r.nodeId) === baseNodeId || r.nodeId === baseNodeId);
|
|
11181
|
+
return item == null ? void 0 : item.entryMeta;
|
|
11182
|
+
};
|
|
11165
11183
|
const resolvedIdMap = /* @__PURE__ */ new Map();
|
|
11166
11184
|
const addResolved = (key, id) => {
|
|
11167
11185
|
const arr = resolvedIdMap.get(key);
|
|
@@ -11248,7 +11266,7 @@ function applyFormDataToConfig(config, mappings, formValues, repeatableSectionsF
|
|
|
11248
11266
|
const entryFilter = ((_b = node.repeatableSection) == null ? void 0 : _b.entryFilter) ?? entryFilterFromList(baseNodeId);
|
|
11249
11267
|
let entryIndices;
|
|
11250
11268
|
if (entryFilter && entryFilter.mode === "range" && entryFilter.range) {
|
|
11251
|
-
const parsed = parseEntryRange(entryFilter.range, N);
|
|
11269
|
+
const parsed = parseEntryRange(entryFilter.range, N, entryMetaFromList(baseNodeId));
|
|
11252
11270
|
entryIndices = parsed && parsed.length ? parsed : Array.from({ length: N }, (_, k) => k + 1);
|
|
11253
11271
|
} else {
|
|
11254
11272
|
entryIndices = Array.from({ length: N }, (_, k) => k + 1);
|
|
@@ -11293,7 +11311,7 @@ function applyFormDataToConfig(config, mappings, formValues, repeatableSectionsF
|
|
|
11293
11311
|
const nestedEntryFilter = ((_a2 = node.repeatableSection) == null ? void 0 : _a2.entryFilter) ?? entryFilterFromList(baseNodeId);
|
|
11294
11312
|
let nestedEntryIndices;
|
|
11295
11313
|
if (nestedEntryFilter && nestedEntryFilter.mode === "range" && nestedEntryFilter.range) {
|
|
11296
|
-
const parsed = parseEntryRange(nestedEntryFilter.range, N);
|
|
11314
|
+
const parsed = parseEntryRange(nestedEntryFilter.range, N, entryMetaFromList(baseNodeId));
|
|
11297
11315
|
nestedEntryIndices = parsed && parsed.length ? parsed : Array.from({ length: N }, (_, k) => k + 1);
|
|
11298
11316
|
} else {
|
|
11299
11317
|
nestedEntryIndices = Array.from({ length: N }, (_, k) => k + 1);
|
|
@@ -12476,12 +12494,28 @@ async function resolveFromForm(options) {
|
|
|
12476
12494
|
const entries = mergedSectionState[s.id] ?? [];
|
|
12477
12495
|
const nodeId = s.treeNodeId ?? s.id;
|
|
12478
12496
|
const schemaRepeatable = repeatableFromSchemaByBase.get(baseId(nodeId));
|
|
12479
|
-
|
|
12497
|
+
const entryMeta = entries.map((e) => ({
|
|
12498
|
+
id: typeof (e == null ? void 0 : e.__entryId) === "string" ? e.__entryId : void 0,
|
|
12499
|
+
name: typeof (e == null ? void 0 : e.__entryName) === "string" ? e.__entryName : void 0
|
|
12500
|
+
}));
|
|
12501
|
+
return { nodeId, label: s.label, entryCount: Math.max(1, entries.length), entryFilter: schemaRepeatable == null ? void 0 : schemaRepeatable.entryFilter, entryMeta };
|
|
12480
12502
|
});
|
|
12481
12503
|
const nestedRepeatables = inferredSections.filter((s) => s.type === "repeatable" && s.parentId != null).map((s) => {
|
|
12482
12504
|
const nodeId = s.treeNodeId ?? s.id;
|
|
12483
12505
|
const schemaRepeatable = repeatableFromSchemaByBase.get(baseId(nodeId));
|
|
12484
|
-
|
|
12506
|
+
const parentId = s.parentId;
|
|
12507
|
+
const parentEntries = mergedSectionState[parentId] ?? [];
|
|
12508
|
+
const merged = [];
|
|
12509
|
+
for (let pi = 0; pi < parentEntries.length; pi++) {
|
|
12510
|
+
const childEntries = mergedSectionState[`${parentId}_${pi}_${s.id}`] ?? [];
|
|
12511
|
+
for (const e of childEntries) {
|
|
12512
|
+
merged.push({
|
|
12513
|
+
id: typeof (e == null ? void 0 : e.__entryId) === "string" ? e.__entryId : void 0,
|
|
12514
|
+
name: typeof (e == null ? void 0 : e.__entryName) === "string" ? e.__entryName : void 0
|
|
12515
|
+
});
|
|
12516
|
+
}
|
|
12517
|
+
}
|
|
12518
|
+
return { nodeId, label: s.label, entryFilter: schemaRepeatable == null ? void 0 : schemaRepeatable.entryFilter, entryMeta: merged };
|
|
12485
12519
|
});
|
|
12486
12520
|
const inferredRepeatableList = [...topLevelRepeatables, ...nestedRepeatables];
|
|
12487
12521
|
const entryCountForLabel = (label) => {
|