@wix/himalaya-cli 0.1617.0 → 0.1618.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/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/builder.d.ts +15 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +28 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +2 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/one-app-section.d.ts +39 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/one-app-visibility.d.ts +22 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +151 -24
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +8 -0
- package/dist/cli.mjs +1042 -389
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/component-reference.json +10 -1
- package/guides/component-reference.md +25 -2
- package/guides/designing-himi-screens.md +3 -1
- package/guides/hhp.md +3 -1
- package/guides/himi-json-output.md +11 -1
- package/guides/index.json +1 -1
- package/guides/one-app-section-mappings.md +32 -0
- package/guides/one-app-to-himi-app.md +133 -9
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -38,8 +38,8 @@ var init_define_HHP_CATALOG = __esm({
|
|
|
38
38
|
"<define:__HHP_CATALOG__>"() {
|
|
39
39
|
define_HHP_CATALOG_default = {
|
|
40
40
|
encoding: "gzip-base64",
|
|
41
|
-
sha256: "
|
|
42
|
-
data: "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"
|
|
41
|
+
sha256: "689bbc628cbf47f43d8560a42737642fff03dee0f7f1260a5a37c78c99c92e61",
|
|
42
|
+
data: "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"
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
});
|
|
@@ -2579,9 +2579,9 @@ function validateCmsConfig(cms, app, opts = {}) {
|
|
|
2579
2579
|
message: spec.readRole === "SITE_MEMBER_AUTHOR" ? `readRole is SITE_MEMBER_AUTHOR (row-level: a member reads only rows they authored) but the app boots as a visitor, so this collection renders empty for visitors \u2014 who author nothing. Gate the screen behind a login, or declare \`memberGated\`. Do NOT widen the read: "ANYONE"/"SITE_MEMBER" are collection-wide and would expose every member's rows.` : `readRole is SITE_MEMBER but the app boots as a visitor, so this collection renders empty for visitors. Use readRole "ANYONE", or gate the screen behind a login.`
|
|
2580
2580
|
});
|
|
2581
2581
|
}
|
|
2582
|
-
const
|
|
2582
|
+
const memberOnly2 = ["SITE_MEMBER", "SITE_MEMBER_AUTHOR"];
|
|
2583
2583
|
const effective = permissionsFor(spec);
|
|
2584
|
-
const gatedOps = ["insert", "update"].filter((op) =>
|
|
2584
|
+
const gatedOps = ["insert", "update"].filter((op) => memberOnly2.includes(effective[op]));
|
|
2585
2585
|
if (opts.bootAsVisitor && !cms.memberGated && !opts.hasSignInSurface && gatedOps.length > 0) {
|
|
2586
2586
|
const named = gatedOps.map((op) => `${op} is ${effective[op]}`).join(" and ");
|
|
2587
2587
|
const remedy = gatedOps.map((op) => `${op}Role "ANYONE"`).join(" + ");
|
|
@@ -5865,15 +5865,15 @@ function analyzeController(source, file2, profile, diagnostics) {
|
|
|
5865
5865
|
error(declaration ?? sf2, "Default-export defineController({ initialState, handlers }).");
|
|
5866
5866
|
return;
|
|
5867
5867
|
}
|
|
5868
|
-
const
|
|
5869
|
-
if (!
|
|
5868
|
+
const object15 = declaration.expression.arguments[0];
|
|
5869
|
+
if (!object15 || !ts2.isObjectLiteralExpression(object15)) {
|
|
5870
5870
|
error(declaration, "Controller definition must be an object literal.");
|
|
5871
5871
|
return;
|
|
5872
5872
|
}
|
|
5873
|
-
const props2 = new Map(
|
|
5873
|
+
const props2 = new Map(object15.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
|
|
5874
5874
|
const state = props2.get("initialState"), handlers = props2.get("handlers");
|
|
5875
5875
|
if (!state || !ts2.isPropertyAssignment(state) || !handlers || !ts2.isPropertyAssignment(handlers) || !ts2.isObjectLiteralExpression(handlers.initializer)) {
|
|
5876
|
-
error(
|
|
5876
|
+
error(object15, "initialState and handlers must be object literals.");
|
|
5877
5877
|
return;
|
|
5878
5878
|
}
|
|
5879
5879
|
function literal(n2) {
|
|
@@ -12724,9 +12724,9 @@ function manualPaginationIssues(descriptor) {
|
|
|
12724
12724
|
while (pending.length) {
|
|
12725
12725
|
const { value: value2, path: path2 } = pending.pop();
|
|
12726
12726
|
if (!value2 || typeof value2 !== "object") continue;
|
|
12727
|
-
const
|
|
12728
|
-
if (
|
|
12729
|
-
for (const [key3, child] of Object.entries(
|
|
12727
|
+
const object15 = value2;
|
|
12728
|
+
if (object15.body?.props) nodes2.push({ path: path2, type: object15.body.type, props: object15.body.props });
|
|
12729
|
+
for (const [key3, child] of Object.entries(object15)) {
|
|
12730
12730
|
if (key3 === "args" || key3 === "input") continue;
|
|
12731
12731
|
if (child && typeof child === "object") pending.push({ value: child, path: path2 ? `${path2}.${key3}` : key3 });
|
|
12732
12732
|
}
|
|
@@ -14211,6 +14211,7 @@ var init_validator = __esm({
|
|
|
14211
14211
|
"himalaya.Spacer",
|
|
14212
14212
|
"himalaya.EmptyState",
|
|
14213
14213
|
"himalaya.ErrorState",
|
|
14214
|
+
"himalaya.QrCode",
|
|
14214
14215
|
"himalaya.Text",
|
|
14215
14216
|
"himalaya.Image",
|
|
14216
14217
|
"himalaya.Icon",
|
|
@@ -14588,6 +14589,370 @@ var init_declared_navigation_lint = __esm({
|
|
|
14588
14589
|
}
|
|
14589
14590
|
});
|
|
14590
14591
|
|
|
14592
|
+
// ../../core/ts/src/qr-code.ts
|
|
14593
|
+
function qrErrorCorrection(raw) {
|
|
14594
|
+
const s2 = typeof raw === "string" ? raw.trim().toUpperCase() : "";
|
|
14595
|
+
return s2 === "L" || s2 === "M" || s2 === "Q" || s2 === "H" ? s2 : QR_DEFAULT_ERROR_CORRECTION;
|
|
14596
|
+
}
|
|
14597
|
+
function rawDataModules(ver) {
|
|
14598
|
+
let result = (16 * ver + 128) * ver + 64;
|
|
14599
|
+
if (ver >= 2) {
|
|
14600
|
+
const numAlign = Math.floor(ver / 7) + 2;
|
|
14601
|
+
result -= (25 * numAlign - 10) * numAlign - 55;
|
|
14602
|
+
if (ver >= 7) result -= 36;
|
|
14603
|
+
}
|
|
14604
|
+
return result;
|
|
14605
|
+
}
|
|
14606
|
+
function dataCodewords(ver, ecl) {
|
|
14607
|
+
return Math.floor(rawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[ecl][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl][ver];
|
|
14608
|
+
}
|
|
14609
|
+
function qrByteCapacity(version5, level = QR_DEFAULT_ERROR_CORRECTION) {
|
|
14610
|
+
const lenBits = version5 < 10 ? 8 : 16;
|
|
14611
|
+
return Math.floor((dataCodewords(version5, ECL_INDEX[level]) * 8 - 4 - lenBits) / 8);
|
|
14612
|
+
}
|
|
14613
|
+
function qrPayloadBytes(text13) {
|
|
14614
|
+
return new TextEncoder().encode(text13).length;
|
|
14615
|
+
}
|
|
14616
|
+
function qrFitVersion(byteLength, level = QR_DEFAULT_ERROR_CORRECTION) {
|
|
14617
|
+
for (let v2 = QR_MIN_VERSION; v2 <= QR_MAX_VERSION; v2++) if (qrByteCapacity(v2, level) >= byteLength) return v2;
|
|
14618
|
+
return void 0;
|
|
14619
|
+
}
|
|
14620
|
+
function qrFits(text13, level = QR_DEFAULT_ERROR_CORRECTION) {
|
|
14621
|
+
return qrFitVersion(qrPayloadBytes(text13), level) !== void 0;
|
|
14622
|
+
}
|
|
14623
|
+
function gfMul(x2, y2) {
|
|
14624
|
+
let z5 = 0;
|
|
14625
|
+
for (let i2 = 7; i2 >= 0; i2--) {
|
|
14626
|
+
z5 = z5 << 1 ^ (z5 >>> 7) * 285;
|
|
14627
|
+
z5 ^= (y2 >>> i2 & 1) * x2;
|
|
14628
|
+
}
|
|
14629
|
+
return z5 & 255;
|
|
14630
|
+
}
|
|
14631
|
+
function rsDivisor(degree) {
|
|
14632
|
+
const result = new Array(degree).fill(0);
|
|
14633
|
+
result[degree - 1] = 1;
|
|
14634
|
+
let root = 1;
|
|
14635
|
+
for (let i2 = 0; i2 < degree; i2++) {
|
|
14636
|
+
for (let j2 = 0; j2 < degree; j2++) {
|
|
14637
|
+
result[j2] = gfMul(result[j2], root);
|
|
14638
|
+
if (j2 + 1 < degree) result[j2] ^= result[j2 + 1];
|
|
14639
|
+
}
|
|
14640
|
+
root = gfMul(root, 2);
|
|
14641
|
+
}
|
|
14642
|
+
return result;
|
|
14643
|
+
}
|
|
14644
|
+
function rsRemainder(data, divisor) {
|
|
14645
|
+
const result = new Array(divisor.length).fill(0);
|
|
14646
|
+
for (const b2 of data) {
|
|
14647
|
+
const factor = b2 ^ result.shift();
|
|
14648
|
+
result.push(0);
|
|
14649
|
+
for (let i2 = 0; i2 < divisor.length; i2++) result[i2] ^= gfMul(divisor[i2], factor);
|
|
14650
|
+
}
|
|
14651
|
+
return result;
|
|
14652
|
+
}
|
|
14653
|
+
function encodeQrCode(text13, level = QR_DEFAULT_ERROR_CORRECTION) {
|
|
14654
|
+
const ecl = ECL_INDEX[level];
|
|
14655
|
+
const bytes2 = [...new TextEncoder().encode(text13)];
|
|
14656
|
+
const version5 = qrFitVersion(bytes2.length, level);
|
|
14657
|
+
if (version5 === void 0) throw new QrCapacityError(bytes2.length, level);
|
|
14658
|
+
const bits = [];
|
|
14659
|
+
const push = (val, len) => {
|
|
14660
|
+
for (let i3 = len - 1; i3 >= 0; i3--) bits.push(val >>> i3 & 1);
|
|
14661
|
+
};
|
|
14662
|
+
push(4, 4);
|
|
14663
|
+
push(bytes2.length, version5 < 10 ? 8 : 16);
|
|
14664
|
+
for (const b2 of bytes2) push(b2, 8);
|
|
14665
|
+
const capacityBits = dataCodewords(version5, ecl) * 8;
|
|
14666
|
+
push(0, Math.min(4, capacityBits - bits.length));
|
|
14667
|
+
push(0, (8 - bits.length % 8) % 8);
|
|
14668
|
+
for (let pad3 = 236; bits.length < capacityBits; pad3 ^= 236 ^ 17) push(pad3, 8);
|
|
14669
|
+
const data = [];
|
|
14670
|
+
for (let i3 = 0; i3 < bits.length; i3 += 8) {
|
|
14671
|
+
let byte2 = 0;
|
|
14672
|
+
for (let j2 = 0; j2 < 8; j2++) byte2 = byte2 << 1 | bits[i3 + j2];
|
|
14673
|
+
data.push(byte2);
|
|
14674
|
+
}
|
|
14675
|
+
const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[ecl][version5];
|
|
14676
|
+
const blockEccLen = ECC_CODEWORDS_PER_BLOCK[ecl][version5];
|
|
14677
|
+
const rawCodewords = Math.floor(rawDataModules(version5) / 8);
|
|
14678
|
+
const numShortBlocks = numBlocks - rawCodewords % numBlocks;
|
|
14679
|
+
const shortBlockLen = Math.floor(rawCodewords / numBlocks);
|
|
14680
|
+
const divisor = rsDivisor(blockEccLen);
|
|
14681
|
+
const blocks = [];
|
|
14682
|
+
for (let i3 = 0, k2 = 0; i3 < numBlocks; i3++) {
|
|
14683
|
+
const dat = data.slice(k2, k2 + shortBlockLen - blockEccLen + (i3 < numShortBlocks ? 0 : 1));
|
|
14684
|
+
k2 += dat.length;
|
|
14685
|
+
const ecc = rsRemainder(dat, divisor);
|
|
14686
|
+
if (i3 < numShortBlocks) dat.push(0);
|
|
14687
|
+
blocks.push(dat.concat(ecc));
|
|
14688
|
+
}
|
|
14689
|
+
const codewords = [];
|
|
14690
|
+
for (let i3 = 0; i3 < blocks[0].length; i3++) {
|
|
14691
|
+
blocks.forEach((block, j2) => {
|
|
14692
|
+
if (i3 !== shortBlockLen - blockEccLen || j2 >= numShortBlocks) codewords.push(block[i3]);
|
|
14693
|
+
});
|
|
14694
|
+
}
|
|
14695
|
+
const size = version5 * 4 + 17;
|
|
14696
|
+
const modules = Array.from({ length: size }, () => new Array(size).fill(false));
|
|
14697
|
+
const isFunction = Array.from({ length: size }, () => new Array(size).fill(false));
|
|
14698
|
+
const setFn = (x2, y2, dark) => {
|
|
14699
|
+
modules[y2][x2] = dark;
|
|
14700
|
+
isFunction[y2][x2] = true;
|
|
14701
|
+
};
|
|
14702
|
+
for (let i3 = 0; i3 < size; i3++) {
|
|
14703
|
+
setFn(6, i3, i3 % 2 === 0);
|
|
14704
|
+
setFn(i3, 6, i3 % 2 === 0);
|
|
14705
|
+
}
|
|
14706
|
+
const finder = (cx, cy) => {
|
|
14707
|
+
for (let dy = -4; dy <= 4; dy++)
|
|
14708
|
+
for (let dx = -4; dx <= 4; dx++) {
|
|
14709
|
+
const dist = Math.max(Math.abs(dx), Math.abs(dy));
|
|
14710
|
+
const x2 = cx + dx, y2 = cy + dy;
|
|
14711
|
+
if (x2 >= 0 && x2 < size && y2 >= 0 && y2 < size) setFn(x2, y2, dist !== 2 && dist !== 4);
|
|
14712
|
+
}
|
|
14713
|
+
};
|
|
14714
|
+
finder(3, 3);
|
|
14715
|
+
finder(size - 4, 3);
|
|
14716
|
+
finder(3, size - 4);
|
|
14717
|
+
const align = alignmentPositions(version5);
|
|
14718
|
+
const numAlign = align.length;
|
|
14719
|
+
for (let i3 = 0; i3 < numAlign; i3++)
|
|
14720
|
+
for (let j2 = 0; j2 < numAlign; j2++) {
|
|
14721
|
+
if (i3 === 0 && j2 === 0 || i3 === 0 && j2 === numAlign - 1 || i3 === numAlign - 1 && j2 === 0) continue;
|
|
14722
|
+
for (let dy = -2; dy <= 2; dy++)
|
|
14723
|
+
for (let dx = -2; dx <= 2; dx++) setFn(align[i3] + dx, align[j2] + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
|
|
14724
|
+
}
|
|
14725
|
+
drawFormat(0, ECL_FORMAT_BITS[ecl], size, setFn);
|
|
14726
|
+
drawVersion(version5, size, setFn);
|
|
14727
|
+
let i2 = 0;
|
|
14728
|
+
for (let right = size - 1; right >= 1; right -= 2) {
|
|
14729
|
+
if (right === 6) right = 5;
|
|
14730
|
+
for (let vert = 0; vert < size; vert++)
|
|
14731
|
+
for (let j2 = 0; j2 < 2; j2++) {
|
|
14732
|
+
const x2 = right - j2;
|
|
14733
|
+
const upward = (right + 1 & 2) === 0;
|
|
14734
|
+
const y2 = upward ? size - 1 - vert : vert;
|
|
14735
|
+
if (!isFunction[y2][x2] && i2 < codewords.length * 8) {
|
|
14736
|
+
modules[y2][x2] = (codewords[i2 >>> 3] >>> 7 - (i2 & 7) & 1) === 1;
|
|
14737
|
+
i2++;
|
|
14738
|
+
}
|
|
14739
|
+
}
|
|
14740
|
+
}
|
|
14741
|
+
let bestMask = 0, bestPenalty = Infinity, best = modules;
|
|
14742
|
+
for (let mask = 0; mask < 8; mask++) {
|
|
14743
|
+
const cand = modules.map((row2) => row2.slice());
|
|
14744
|
+
applyMask(cand, isFunction, mask, size);
|
|
14745
|
+
drawFormat(mask, ECL_FORMAT_BITS[ecl], size, (x2, y2, dark) => {
|
|
14746
|
+
cand[y2][x2] = dark;
|
|
14747
|
+
});
|
|
14748
|
+
const p2 = penaltyScore(cand, size);
|
|
14749
|
+
if (p2 < bestPenalty) {
|
|
14750
|
+
bestPenalty = p2;
|
|
14751
|
+
bestMask = mask;
|
|
14752
|
+
best = cand;
|
|
14753
|
+
}
|
|
14754
|
+
}
|
|
14755
|
+
return { size, version: version5, level, mask: bestMask, modules: best };
|
|
14756
|
+
}
|
|
14757
|
+
function alignmentPositions(ver) {
|
|
14758
|
+
if (ver === 1) return [];
|
|
14759
|
+
const numAlign = Math.floor(ver / 7) + 2;
|
|
14760
|
+
const step = ver === 32 ? 26 : Math.ceil((ver * 4 + 4) / (numAlign * 2 - 2)) * 2;
|
|
14761
|
+
const result = [6];
|
|
14762
|
+
for (let pos = ver * 4 + 10; result.length < numAlign; pos -= step) result.splice(1, 0, pos);
|
|
14763
|
+
return result;
|
|
14764
|
+
}
|
|
14765
|
+
function drawFormat(mask, eclBits, size, set2) {
|
|
14766
|
+
const data = eclBits << 3 | mask;
|
|
14767
|
+
let rem = data;
|
|
14768
|
+
for (let i2 = 0; i2 < 10; i2++) rem = rem << 1 ^ (rem >>> 9) * 1335;
|
|
14769
|
+
const bits = (data << 10 | rem) ^ 21522;
|
|
14770
|
+
const bit = (i2) => (bits >>> i2 & 1) !== 0;
|
|
14771
|
+
for (let i2 = 0; i2 <= 5; i2++) set2(8, i2, bit(i2));
|
|
14772
|
+
set2(8, 7, bit(6));
|
|
14773
|
+
set2(8, 8, bit(7));
|
|
14774
|
+
set2(7, 8, bit(8));
|
|
14775
|
+
for (let i2 = 9; i2 < 15; i2++) set2(14 - i2, 8, bit(i2));
|
|
14776
|
+
for (let i2 = 0; i2 < 8; i2++) set2(size - 1 - i2, 8, bit(i2));
|
|
14777
|
+
for (let i2 = 8; i2 < 15; i2++) set2(8, size - 15 + i2, bit(i2));
|
|
14778
|
+
set2(8, size - 8, true);
|
|
14779
|
+
}
|
|
14780
|
+
function drawVersion(ver, size, set2) {
|
|
14781
|
+
if (ver < 7) return;
|
|
14782
|
+
let rem = ver;
|
|
14783
|
+
for (let i2 = 0; i2 < 12; i2++) rem = rem << 1 ^ (rem >>> 11) * 7973;
|
|
14784
|
+
const bits = ver << 12 | rem;
|
|
14785
|
+
for (let i2 = 0; i2 < 18; i2++) {
|
|
14786
|
+
const dark = (bits >>> i2 & 1) !== 0;
|
|
14787
|
+
const a2 = size - 11 + i2 % 3, b2 = Math.floor(i2 / 3);
|
|
14788
|
+
set2(a2, b2, dark);
|
|
14789
|
+
set2(b2, a2, dark);
|
|
14790
|
+
}
|
|
14791
|
+
}
|
|
14792
|
+
function applyMask(m2, fn2, mask, size) {
|
|
14793
|
+
for (let y2 = 0; y2 < size; y2++)
|
|
14794
|
+
for (let x2 = 0; x2 < size; x2++) {
|
|
14795
|
+
let invert;
|
|
14796
|
+
switch (mask) {
|
|
14797
|
+
case 0:
|
|
14798
|
+
invert = (x2 + y2) % 2 === 0;
|
|
14799
|
+
break;
|
|
14800
|
+
case 1:
|
|
14801
|
+
invert = y2 % 2 === 0;
|
|
14802
|
+
break;
|
|
14803
|
+
case 2:
|
|
14804
|
+
invert = x2 % 3 === 0;
|
|
14805
|
+
break;
|
|
14806
|
+
case 3:
|
|
14807
|
+
invert = (x2 + y2) % 3 === 0;
|
|
14808
|
+
break;
|
|
14809
|
+
case 4:
|
|
14810
|
+
invert = (Math.floor(x2 / 3) + Math.floor(y2 / 2)) % 2 === 0;
|
|
14811
|
+
break;
|
|
14812
|
+
case 5:
|
|
14813
|
+
invert = x2 * y2 % 2 + x2 * y2 % 3 === 0;
|
|
14814
|
+
break;
|
|
14815
|
+
case 6:
|
|
14816
|
+
invert = (x2 * y2 % 2 + x2 * y2 % 3) % 2 === 0;
|
|
14817
|
+
break;
|
|
14818
|
+
default:
|
|
14819
|
+
invert = ((x2 + y2) % 2 + x2 * y2 % 3) % 2 === 0;
|
|
14820
|
+
break;
|
|
14821
|
+
}
|
|
14822
|
+
if (!fn2[y2][x2] && invert) m2[y2][x2] = !m2[y2][x2];
|
|
14823
|
+
}
|
|
14824
|
+
}
|
|
14825
|
+
function penaltyScore(m2, size) {
|
|
14826
|
+
let result = 0;
|
|
14827
|
+
const line = (get) => {
|
|
14828
|
+
for (let a2 = 0; a2 < size; a2++) {
|
|
14829
|
+
let runColor = false, runLen = 0;
|
|
14830
|
+
const history = [0, 0, 0, 0, 0, 0, 0];
|
|
14831
|
+
for (let b2 = 0; b2 < size; b2++) {
|
|
14832
|
+
if (get(a2, b2) === runColor) {
|
|
14833
|
+
runLen++;
|
|
14834
|
+
if (runLen === 5) result += N1;
|
|
14835
|
+
else if (runLen > 5) result++;
|
|
14836
|
+
} else {
|
|
14837
|
+
addHistory(runLen, history, size);
|
|
14838
|
+
if (!runColor) result += countPatterns(history) * N3;
|
|
14839
|
+
runColor = get(a2, b2);
|
|
14840
|
+
runLen = 1;
|
|
14841
|
+
}
|
|
14842
|
+
}
|
|
14843
|
+
result += terminateAndCount(runColor, runLen, history, size) * N3;
|
|
14844
|
+
}
|
|
14845
|
+
};
|
|
14846
|
+
line((y2, x2) => m2[y2][x2]);
|
|
14847
|
+
line((x2, y2) => m2[y2][x2]);
|
|
14848
|
+
for (let y2 = 0; y2 < size - 1; y2++)
|
|
14849
|
+
for (let x2 = 0; x2 < size - 1; x2++) {
|
|
14850
|
+
const c2 = m2[y2][x2];
|
|
14851
|
+
if (c2 === m2[y2][x2 + 1] && c2 === m2[y2 + 1][x2] && c2 === m2[y2 + 1][x2 + 1]) result += N2;
|
|
14852
|
+
}
|
|
14853
|
+
let dark = 0;
|
|
14854
|
+
for (const row2 of m2) for (const c2 of row2) if (c2) dark++;
|
|
14855
|
+
const total = size * size;
|
|
14856
|
+
const k2 = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;
|
|
14857
|
+
result += k2 * N4;
|
|
14858
|
+
return result;
|
|
14859
|
+
}
|
|
14860
|
+
function addHistory(runLen, history, size) {
|
|
14861
|
+
if (history[0] === 0) runLen += size;
|
|
14862
|
+
history.pop();
|
|
14863
|
+
history.unshift(runLen);
|
|
14864
|
+
}
|
|
14865
|
+
function countPatterns(h2) {
|
|
14866
|
+
const n2 = h2[1];
|
|
14867
|
+
const core2 = n2 > 0 && h2[2] === n2 && h2[3] === n2 * 3 && h2[4] === n2 && h2[5] === n2;
|
|
14868
|
+
return (core2 && h2[0] >= n2 * 4 && h2[6] >= n2 ? 1 : 0) + (core2 && h2[6] >= n2 * 4 && h2[0] >= n2 ? 1 : 0);
|
|
14869
|
+
}
|
|
14870
|
+
function terminateAndCount(runColor, runLen, history, size) {
|
|
14871
|
+
if (runColor) {
|
|
14872
|
+
addHistory(runLen, history, size);
|
|
14873
|
+
runLen = 0;
|
|
14874
|
+
}
|
|
14875
|
+
runLen += size;
|
|
14876
|
+
addHistory(runLen, history, size);
|
|
14877
|
+
return countPatterns(history);
|
|
14878
|
+
}
|
|
14879
|
+
function qrRelativeLuminance(hex2) {
|
|
14880
|
+
const m2 = /^#?([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(hex2.trim());
|
|
14881
|
+
if (!m2) return void 0;
|
|
14882
|
+
let h2 = m2[1];
|
|
14883
|
+
if (h2.length === 3) h2 = h2.split("").map((c2) => c2 + c2).join("");
|
|
14884
|
+
const ch2 = (i2) => {
|
|
14885
|
+
const c2 = parseInt(h2.slice(i2, i2 + 2), 16) / 255;
|
|
14886
|
+
return c2 <= 0.03928 ? c2 / 12.92 : Math.pow((c2 + 0.055) / 1.055, 2.4);
|
|
14887
|
+
};
|
|
14888
|
+
return 0.2126 * ch2(0) + 0.7152 * ch2(2) + 0.0722 * ch2(4);
|
|
14889
|
+
}
|
|
14890
|
+
function qrIsOpaque(hex2) {
|
|
14891
|
+
const h2 = hex2.trim().replace(/^#/, "");
|
|
14892
|
+
return h2.length !== 8 || h2.slice(6).toLowerCase() === "ff";
|
|
14893
|
+
}
|
|
14894
|
+
function qrContrastRatio(a2, b2) {
|
|
14895
|
+
const la2 = qrRelativeLuminance(a2), lb = qrRelativeLuminance(b2);
|
|
14896
|
+
if (la2 === void 0 || lb === void 0) return void 0;
|
|
14897
|
+
return (Math.max(la2, lb) + 0.05) / (Math.min(la2, lb) + 0.05);
|
|
14898
|
+
}
|
|
14899
|
+
function resolveQrColors(opts) {
|
|
14900
|
+
if (opts.dark && !(opts.colorGiven && opts.backgroundGiven)) {
|
|
14901
|
+
return { color: QR_FALLBACK_COLOR, background: QR_FALLBACK_BACKGROUND, fellBack: true };
|
|
14902
|
+
}
|
|
14903
|
+
const color = opts.color, background = opts.background;
|
|
14904
|
+
if (color && background && qrIsOpaque(color) && qrIsOpaque(background)) {
|
|
14905
|
+
const ratio = qrContrastRatio(color, background);
|
|
14906
|
+
const lc2 = qrRelativeLuminance(color), lb = qrRelativeLuminance(background);
|
|
14907
|
+
if (ratio !== void 0 && ratio >= QR_MIN_CONTRAST && lc2 < lb) return { color, background, fellBack: false };
|
|
14908
|
+
}
|
|
14909
|
+
return { color: QR_FALLBACK_COLOR, background: QR_FALLBACK_BACKGROUND, fellBack: true };
|
|
14910
|
+
}
|
|
14911
|
+
var QR_ERROR_CORRECTION_LEVELS, QR_DEFAULT_ERROR_CORRECTION, QR_MIN_VERSION, QR_MAX_VERSION, ECL_INDEX, ECL_FORMAT_BITS, ECC_CODEWORDS_PER_BLOCK, NUM_ERROR_CORRECTION_BLOCKS, QrCapacityError, N1, N2, N3, N4, QR_MIN_CONTRAST, QR_DEFAULT_COLOR_TOKEN, QR_DEFAULT_BACKGROUND_TOKEN, QR_DEFAULT_SIZE, QR_DEFAULT_QUIET_ZONE, QR_DEFAULT_ACCESSIBILITY_LABEL, QR_FALLBACK_COLOR, QR_FALLBACK_BACKGROUND;
|
|
14912
|
+
var init_qr_code = __esm({
|
|
14913
|
+
"../../core/ts/src/qr-code.ts"() {
|
|
14914
|
+
init_define_HHP_CATALOG();
|
|
14915
|
+
QR_ERROR_CORRECTION_LEVELS = ["L", "M", "Q", "H"];
|
|
14916
|
+
QR_DEFAULT_ERROR_CORRECTION = "M";
|
|
14917
|
+
QR_MIN_VERSION = 1;
|
|
14918
|
+
QR_MAX_VERSION = 40;
|
|
14919
|
+
ECL_INDEX = { L: 0, M: 1, Q: 2, H: 3 };
|
|
14920
|
+
ECL_FORMAT_BITS = [1, 0, 3, 2];
|
|
14921
|
+
ECC_CODEWORDS_PER_BLOCK = [
|
|
14922
|
+
[-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
|
|
14923
|
+
[-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
|
|
14924
|
+
[-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
|
|
14925
|
+
[-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]
|
|
14926
|
+
];
|
|
14927
|
+
NUM_ERROR_CORRECTION_BLOCKS = [
|
|
14928
|
+
[-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],
|
|
14929
|
+
[-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],
|
|
14930
|
+
[-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],
|
|
14931
|
+
[-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]
|
|
14932
|
+
];
|
|
14933
|
+
QrCapacityError = class extends RangeError {
|
|
14934
|
+
constructor(bytes2, level) {
|
|
14935
|
+
super(`QR payload too long: ${bytes2} bytes exceeds ${qrByteCapacity(QR_MAX_VERSION, level)} (version 40, level ${level})`);
|
|
14936
|
+
this.bytes = bytes2;
|
|
14937
|
+
this.level = level;
|
|
14938
|
+
this.name = "QrCapacityError";
|
|
14939
|
+
}
|
|
14940
|
+
};
|
|
14941
|
+
N1 = 3;
|
|
14942
|
+
N2 = 3;
|
|
14943
|
+
N3 = 40;
|
|
14944
|
+
N4 = 10;
|
|
14945
|
+
QR_MIN_CONTRAST = 3;
|
|
14946
|
+
QR_DEFAULT_COLOR_TOKEN = "textPrimary";
|
|
14947
|
+
QR_DEFAULT_BACKGROUND_TOKEN = "surfacePrimary";
|
|
14948
|
+
QR_DEFAULT_SIZE = 160;
|
|
14949
|
+
QR_DEFAULT_QUIET_ZONE = 4;
|
|
14950
|
+
QR_DEFAULT_ACCESSIBILITY_LABEL = "QR code";
|
|
14951
|
+
QR_FALLBACK_COLOR = "#000000";
|
|
14952
|
+
QR_FALLBACK_BACKGROUND = "#FFFFFF";
|
|
14953
|
+
}
|
|
14954
|
+
});
|
|
14955
|
+
|
|
14591
14956
|
// ../../core/dev-server/src/token-suggest.ts
|
|
14592
14957
|
function suggestTokenNames(name, known, max = 3) {
|
|
14593
14958
|
return suggestNames(name, known, max, true);
|
|
@@ -15030,6 +15395,9 @@ var init_a11y_contract = __esm({
|
|
|
15030
15395
|
// RFC 0065 §5 — a drawn shape has no content of its own to announce; a meaningful one
|
|
15031
15396
|
// (a status dot) is named through `accessibilityLabel`, exactly like an Icon.
|
|
15032
15397
|
Shape: { role: "decorative", name: "conditional", state: [], decorative: true },
|
|
15398
|
+
// #4671 — an IMAGE named by `accessibilityLabel`, defaulting to "QR code" on every renderer, so a
|
|
15399
|
+
// bare node already has a name. The encoded value is never read out.
|
|
15400
|
+
QrCode: { role: "image", name: "conditional", state: [], decorative: false },
|
|
15033
15401
|
Banner: { role: "status", name: "required", state: ["dismissible"], decorative: false },
|
|
15034
15402
|
Snackbar: { role: "status", name: "required", state: [], decorative: false },
|
|
15035
15403
|
AlertDialog: { role: "alert", name: "required", state: ["modal"], decorative: false },
|
|
@@ -17893,6 +18261,52 @@ function mediaFieldFindings(descriptor) {
|
|
|
17893
18261
|
visit(descriptor, "", true);
|
|
17894
18262
|
return out2;
|
|
17895
18263
|
}
|
|
18264
|
+
function qrCodeFindings(descriptor) {
|
|
18265
|
+
const out2 = [];
|
|
18266
|
+
const visit = (v2, path2, atRoot) => {
|
|
18267
|
+
if (Array.isArray(v2)) {
|
|
18268
|
+
v2.forEach((x2, i2) => visit(x2, `${path2}[${i2}]`, false));
|
|
18269
|
+
return;
|
|
18270
|
+
}
|
|
18271
|
+
if (!v2 || typeof v2 !== "object") return;
|
|
18272
|
+
const record3 = v2;
|
|
18273
|
+
const body = record3.body;
|
|
18274
|
+
if (body?.package === "himalaya" && body.type === "QrCode") {
|
|
18275
|
+
const p2 = body.props ?? {};
|
|
18276
|
+
const base = path2 ? `${path2}.body.props` : "body.props";
|
|
18277
|
+
const hasValue = typeof p2.value === "string" && p2.value !== "";
|
|
18278
|
+
const hasPath = typeof p2.valuePath === "string" && p2.valuePath !== "";
|
|
18279
|
+
if (!hasValue && !hasPath) {
|
|
18280
|
+
out2.push({ path: base, message: "QrCode needs a payload: set `value` (a literal string) or `valuePath` (a `$service:` / `$item.` binding)" });
|
|
18281
|
+
}
|
|
18282
|
+
if (hasPath && !p2.valuePath.startsWith("$service:") && !p2.valuePath.startsWith("$item.")) {
|
|
18283
|
+
out2.push({ path: `${base}.valuePath`, message: `QrCode.valuePath must be a "$service:<service>.<field>" or "$item.<field>" binding, got ${JSON.stringify(p2.valuePath)}. Put a literal payload in \`value\`` });
|
|
18284
|
+
}
|
|
18285
|
+
if (p2.errorCorrection !== void 0 && !(typeof p2.errorCorrection === "string" && QR_ERROR_CORRECTION_LEVELS.includes(p2.errorCorrection))) {
|
|
18286
|
+
out2.push({ path: `${base}.errorCorrection`, message: `QrCode.errorCorrection must be "L", "M", "Q" or "H", got ${JSON.stringify(p2.errorCorrection)}` });
|
|
18287
|
+
}
|
|
18288
|
+
const level = qrErrorCorrection(p2.errorCorrection);
|
|
18289
|
+
if (hasValue && !qrFits(p2.value, level)) {
|
|
18290
|
+
out2.push({
|
|
18291
|
+
path: `${base}.value`,
|
|
18292
|
+
message: `QrCode.value is ${qrPayloadBytes(p2.value)} bytes, over the ${qrByteCapacity(QR_MAX_VERSION, level)}-byte capacity of a level-${level} QR code \u2014 every renderer draws a placeholder instead. Shorten the payload (a short link) or lower \`errorCorrection\``
|
|
18293
|
+
});
|
|
18294
|
+
}
|
|
18295
|
+
if (p2.size !== void 0 && !(typeof p2.size === "number" && p2.size > 0)) {
|
|
18296
|
+
out2.push({ path: `${base}.size`, message: `QrCode.size must be a positive number, got ${JSON.stringify(p2.size)}` });
|
|
18297
|
+
}
|
|
18298
|
+
if (p2.quietZone !== void 0 && !(typeof p2.quietZone === "number" && Number.isInteger(p2.quietZone) && p2.quietZone >= 0)) {
|
|
18299
|
+
out2.push({ path: `${base}.quietZone`, message: `QrCode.quietZone must be a non-negative integer number of modules, got ${JSON.stringify(p2.quietZone)}` });
|
|
18300
|
+
}
|
|
18301
|
+
}
|
|
18302
|
+
for (const [key3, child] of Object.entries(record3)) {
|
|
18303
|
+
if (isOpaqueAuthorJson(key3, child, atRoot)) continue;
|
|
18304
|
+
visit(child, path2 ? `${path2}.${key3}` : key3, false);
|
|
18305
|
+
}
|
|
18306
|
+
};
|
|
18307
|
+
visit(descriptor, "", true);
|
|
18308
|
+
return out2;
|
|
18309
|
+
}
|
|
17896
18310
|
function bottomSheetFindings(descriptor) {
|
|
17897
18311
|
const out2 = [];
|
|
17898
18312
|
const visit = (v2, path2, atRoot) => {
|
|
@@ -18370,6 +18784,9 @@ function validateScreenDescriptor(screenId, descriptor, opts = {}) {
|
|
|
18370
18784
|
for (const finding2 of richTextFieldFindings(descriptor)) {
|
|
18371
18785
|
issues.push({ severity: "error", pass: "rich-text-field", path: finding2.path, message: finding2.message });
|
|
18372
18786
|
}
|
|
18787
|
+
for (const finding2 of qrCodeFindings(descriptor)) {
|
|
18788
|
+
issues.push({ severity: "error", pass: "qr-code", path: finding2.path, message: finding2.message });
|
|
18789
|
+
}
|
|
18373
18790
|
for (const finding2 of buttonVariantFindings(descriptor)) {
|
|
18374
18791
|
issues.push({ severity: "warning", pass: "button-variants", path: finding2.path, message: finding2.message });
|
|
18375
18792
|
}
|
|
@@ -18973,6 +19390,7 @@ var init_validate_descriptor_core = __esm({
|
|
|
18973
19390
|
init_validator();
|
|
18974
19391
|
init_declared_navigation_lint();
|
|
18975
19392
|
init_validator();
|
|
19393
|
+
init_qr_code();
|
|
18976
19394
|
init_tokens();
|
|
18977
19395
|
init_token_suggest();
|
|
18978
19396
|
init_allowlist();
|
|
@@ -19548,6 +19966,15 @@ var init_validate_descriptor_core = __esm({
|
|
|
19548
19966
|
trackColorPath: "string",
|
|
19549
19967
|
value: "number"
|
|
19550
19968
|
},
|
|
19969
|
+
QrCode: {
|
|
19970
|
+
background: "string",
|
|
19971
|
+
color: "string",
|
|
19972
|
+
errorCorrection: "string",
|
|
19973
|
+
quietZone: "number",
|
|
19974
|
+
size: "number",
|
|
19975
|
+
value: "string",
|
|
19976
|
+
valuePath: "string"
|
|
19977
|
+
},
|
|
19551
19978
|
Rating: {
|
|
19552
19979
|
color: "string",
|
|
19553
19980
|
icon: "string",
|
|
@@ -19814,6 +20241,7 @@ var init_validate_descriptor_core = __esm({
|
|
|
19814
20241
|
PageControl: ["count", "currentIndex"],
|
|
19815
20242
|
Pager: ["currentIndex", "liveWindow"],
|
|
19816
20243
|
PdfView: ["startPage"],
|
|
20244
|
+
QrCode: ["quietZone"],
|
|
19817
20245
|
Rating: ["max"],
|
|
19818
20246
|
SearchField: ["debounceMs"],
|
|
19819
20247
|
Shape: ["cornerRadius"],
|
|
@@ -22667,7 +23095,7 @@ function fixedNavigations(bundleJs, ts16) {
|
|
|
22667
23095
|
}
|
|
22668
23096
|
function literalTargets(bundleJs, ts16) {
|
|
22669
23097
|
const name = (n2) => n2 && (ts16.isIdentifier(n2) || ts16.isStringLiteral(n2) || ts16.isNoSubstitutionTemplateLiteral(n2)) ? n2.text : void 0;
|
|
22670
|
-
const
|
|
23098
|
+
const object15 = (n2) => {
|
|
22671
23099
|
while (n2 && ts16.isParenthesizedExpression(n2)) n2 = n2.expression;
|
|
22672
23100
|
return n2 && ts16.isObjectLiteralExpression(n2) ? n2 : void 0;
|
|
22673
23101
|
};
|
|
@@ -22702,7 +23130,7 @@ function literalTargets(bundleJs, ts16) {
|
|
|
22702
23130
|
const results = /* @__PURE__ */ new Map();
|
|
22703
23131
|
const fixed = /* @__PURE__ */ new Map();
|
|
22704
23132
|
const literalNav = (expr) => {
|
|
22705
|
-
const o2 =
|
|
23133
|
+
const o2 = object15(expr);
|
|
22706
23134
|
if (!o2 || o2.properties.length === 0) return void 0;
|
|
22707
23135
|
const nav = {};
|
|
22708
23136
|
for (const p2 of o2.properties) {
|
|
@@ -22766,7 +23194,7 @@ function literalTargets(bundleJs, ts16) {
|
|
|
22766
23194
|
if (!helper?.body || !plain2(helper) || helper.parameters.length !== 2 || !plainParams(helper)) return false;
|
|
22767
23195
|
const [stateParam, navParam] = helper.parameters.map((p2) => name(p2.name));
|
|
22768
23196
|
const body = ts16.isBlock(helper.body) ? helper.body.statements.length === 1 && ts16.isReturnStatement(helper.body.statements[0]) ? helper.body.statements[0].expression : void 0 : helper.body;
|
|
22769
|
-
const o2 =
|
|
23197
|
+
const o2 = object15(body);
|
|
22770
23198
|
if (!o2 || o2.properties.length !== 2 || !stateParam || !navParam) return false;
|
|
22771
23199
|
const [spread, nav] = o2.properties;
|
|
22772
23200
|
return ts16.isSpreadAssignment(spread) && ts16.isIdentifier(spread.expression) && spread.expression.text === stateParam && ts16.isPropertyAssignment(nav) && name(nav.name) === "_nav" && ts16.isIdentifier(nav.initializer) && nav.initializer.text === navParam;
|
|
@@ -22802,14 +23230,14 @@ function literalTargets(bundleJs, ts16) {
|
|
|
22802
23230
|
const callee = ts16.isPropertyAccessExpression(node.expression) ? node.expression.name.text : name(node.expression);
|
|
22803
23231
|
const service = node.arguments[0];
|
|
22804
23232
|
if (callee && /^defineService[0-9]*$/.test(callee) && service && ts16.isStringLiteralLike(service)) {
|
|
22805
|
-
const actions =
|
|
23233
|
+
const actions = object15(initializer(property2(object15(node.arguments[1]), "actions")));
|
|
22806
23234
|
for (const member of actions?.properties ?? []) {
|
|
22807
23235
|
const action = name(member.name);
|
|
22808
23236
|
const fn2 = ts16.isMethodDeclaration(member) ? member : resolve95(ts16.isShorthandPropertyAssignment(member) ? member.name : initializer(member));
|
|
22809
23237
|
if (!action || !fn2?.body) continue;
|
|
22810
23238
|
const targets = [];
|
|
22811
23239
|
const target = (expr) => {
|
|
22812
|
-
const sid = initializer(property2(
|
|
23240
|
+
const sid = initializer(property2(object15(expr), "screenId"));
|
|
22813
23241
|
if (!sid || !ts16.isStringLiteralLike(sid)) return;
|
|
22814
23242
|
const position = file2.getLineAndCharacterOfPosition(sid.getStart(file2));
|
|
22815
23243
|
targets.push({ screenId: sid.text, line: position.line + 1, column: position.character });
|
|
@@ -29029,14 +29457,25 @@ var init_stream_policy = __esm({
|
|
|
29029
29457
|
});
|
|
29030
29458
|
|
|
29031
29459
|
// ../../core/ts/src/locale.ts
|
|
29460
|
+
function primarySubtag(tag) {
|
|
29461
|
+
return (tag ?? "").trim().split(/[-_]/)[0].toLowerCase();
|
|
29462
|
+
}
|
|
29032
29463
|
function isSupportedLocale(tag) {
|
|
29033
29464
|
return SUPPORTED_LOCALES.includes(tag);
|
|
29034
29465
|
}
|
|
29035
|
-
|
|
29466
|
+
function coerceSupportedLocale(tag) {
|
|
29467
|
+
const t2 = primarySubtag(tag);
|
|
29468
|
+
return isSupportedLocale(t2) ? t2 : void 0;
|
|
29469
|
+
}
|
|
29470
|
+
function isRTL(locale) {
|
|
29471
|
+
return RTL_LOCALES.has(primarySubtag(locale));
|
|
29472
|
+
}
|
|
29473
|
+
var SUPPORTED_LOCALES, RTL_LOCALES;
|
|
29036
29474
|
var init_locale = __esm({
|
|
29037
29475
|
"../../core/ts/src/locale.ts"() {
|
|
29038
29476
|
init_define_HHP_CATALOG();
|
|
29039
29477
|
SUPPORTED_LOCALES = ["en", "he", "es"];
|
|
29478
|
+
RTL_LOCALES = /* @__PURE__ */ new Set(["he", "ar", "fa", "ur"]);
|
|
29040
29479
|
}
|
|
29041
29480
|
});
|
|
29042
29481
|
|
|
@@ -36030,8 +36469,8 @@ function browserIsRTL() {
|
|
|
36030
36469
|
}
|
|
36031
36470
|
return false;
|
|
36032
36471
|
}
|
|
36033
|
-
function ambientIsRTL(
|
|
36034
|
-
return
|
|
36472
|
+
function ambientIsRTL(isRTL2) {
|
|
36473
|
+
return isRTL2 ?? browserIsRTL();
|
|
36035
36474
|
}
|
|
36036
36475
|
function layoutIsRTL(ctx) {
|
|
36037
36476
|
return ctx.layoutRTL ?? ambientIsRTL(ctx.isRTL);
|
|
@@ -36773,7 +37212,7 @@ function variantStyle(variant, tk, baseBackground) {
|
|
|
36773
37212
|
return {};
|
|
36774
37213
|
}
|
|
36775
37214
|
}
|
|
36776
|
-
function makeModStyle(tk,
|
|
37215
|
+
function makeModStyle(tk, isRTL2 = () => false, glassPreview = false, scheme = "light") {
|
|
36777
37216
|
return function modStyle(mods) {
|
|
36778
37217
|
if (!mods) return {};
|
|
36779
37218
|
if (mods.hidden === true) return { display: "none" };
|
|
@@ -36894,7 +37333,7 @@ function makeModStyle(tk, isRTL = () => false, glassPreview = false, scheme = "l
|
|
|
36894
37333
|
const ox = pick(mods.offsetX, mods.offset_x);
|
|
36895
37334
|
const oy = pick(mods.offsetY, mods.offset_y);
|
|
36896
37335
|
if (ox != null && ox !== 0 || oy != null && oy !== 0) {
|
|
36897
|
-
const tx = ox != null && ox !== 0 &&
|
|
37336
|
+
const tx = ox != null && ox !== 0 && isRTL2() ? -ox : ox ?? 0;
|
|
36898
37337
|
const tr2 = `translate(${tx}px, ${oy ?? 0}px)`;
|
|
36899
37338
|
s2.transform = s2.transform ? `${s2.transform} ${tr2}` : tr2;
|
|
36900
37339
|
}
|
|
@@ -44762,11 +45201,11 @@ var init_pdf = __esm({
|
|
|
44762
45201
|
var DESCRIPTORS = __webpack_require__3(3724);
|
|
44763
45202
|
var definePropertyModule = __webpack_require__3(4913);
|
|
44764
45203
|
var createPropertyDescriptor = __webpack_require__3(6980);
|
|
44765
|
-
module.exports = DESCRIPTORS ? function(
|
|
44766
|
-
return definePropertyModule.f(
|
|
44767
|
-
} : function(
|
|
44768
|
-
|
|
44769
|
-
return
|
|
45204
|
+
module.exports = DESCRIPTORS ? function(object15, key3, value2) {
|
|
45205
|
+
return definePropertyModule.f(object15, key3, createPropertyDescriptor(1, value2));
|
|
45206
|
+
} : function(object15, key3, value2) {
|
|
45207
|
+
object15[key3] = value2;
|
|
45208
|
+
return object15;
|
|
44770
45209
|
};
|
|
44771
45210
|
},
|
|
44772
45211
|
/***/
|
|
@@ -44785,9 +45224,9 @@ var init_pdf = __esm({
|
|
|
44785
45224
|
var DESCRIPTORS = __webpack_require__3(3724);
|
|
44786
45225
|
var definePropertyModule = __webpack_require__3(4913);
|
|
44787
45226
|
var createPropertyDescriptor = __webpack_require__3(6980);
|
|
44788
|
-
module.exports = function(
|
|
44789
|
-
if (DESCRIPTORS) definePropertyModule.f(
|
|
44790
|
-
else
|
|
45227
|
+
module.exports = function(object15, key3, value2) {
|
|
45228
|
+
if (DESCRIPTORS) definePropertyModule.f(object15, key3, createPropertyDescriptor(0, value2));
|
|
45229
|
+
else object15[key3] = value2;
|
|
44791
45230
|
};
|
|
44792
45231
|
},
|
|
44793
45232
|
/***/
|
|
@@ -45077,9 +45516,9 @@ var init_pdf = __esm({
|
|
|
45077
45516
|
6706(module, __unused_webpack_exports, __webpack_require__3) {
|
|
45078
45517
|
var uncurryThis = __webpack_require__3(9504);
|
|
45079
45518
|
var aCallable = __webpack_require__3(9306);
|
|
45080
|
-
module.exports = function(
|
|
45519
|
+
module.exports = function(object15, key3, method) {
|
|
45081
45520
|
try {
|
|
45082
|
-
return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(
|
|
45521
|
+
return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object15, key3)[method]));
|
|
45083
45522
|
} catch (error) {
|
|
45084
45523
|
}
|
|
45085
45524
|
};
|
|
@@ -46047,13 +46486,13 @@ var init_pdf = __esm({
|
|
|
46047
46486
|
var $Object = Object;
|
|
46048
46487
|
var ObjectPrototype = $Object.prototype;
|
|
46049
46488
|
module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
|
|
46050
|
-
var
|
|
46051
|
-
if (hasOwn(
|
|
46052
|
-
var constructor =
|
|
46053
|
-
if (isCallable(constructor) &&
|
|
46489
|
+
var object15 = toObject(O2);
|
|
46490
|
+
if (hasOwn(object15, IE_PROTO)) return object15[IE_PROTO];
|
|
46491
|
+
var constructor = object15.constructor;
|
|
46492
|
+
if (isCallable(constructor) && object15 instanceof constructor) {
|
|
46054
46493
|
return constructor.prototype;
|
|
46055
46494
|
}
|
|
46056
|
-
return
|
|
46495
|
+
return object15 instanceof $Object ? ObjectPrototype : null;
|
|
46057
46496
|
};
|
|
46058
46497
|
},
|
|
46059
46498
|
/***/
|
|
@@ -46069,8 +46508,8 @@ var init_pdf = __esm({
|
|
|
46069
46508
|
var indexOf = __webpack_require__3(9617).indexOf;
|
|
46070
46509
|
var hiddenKeys = __webpack_require__3(421);
|
|
46071
46510
|
var push = uncurryThis([].push);
|
|
46072
|
-
module.exports = function(
|
|
46073
|
-
var O2 = toIndexedObject(
|
|
46511
|
+
module.exports = function(object15, names2) {
|
|
46512
|
+
var O2 = toIndexedObject(object15);
|
|
46074
46513
|
var i2 = 0;
|
|
46075
46514
|
var result = [];
|
|
46076
46515
|
var key3;
|
|
@@ -47513,13 +47952,13 @@ var init_pdf = __esm({
|
|
|
47513
47952
|
}
|
|
47514
47953
|
return call(reviver, holder, name, val, context);
|
|
47515
47954
|
};
|
|
47516
|
-
var internalizeProperty = function(
|
|
47955
|
+
var internalizeProperty = function(object15, key3, value2) {
|
|
47517
47956
|
if (DESCRIPTORS) {
|
|
47518
|
-
var descriptor = getOwnPropertyDescriptor(
|
|
47957
|
+
var descriptor = getOwnPropertyDescriptor(object15, key3);
|
|
47519
47958
|
if (descriptor && !descriptor.configurable) return;
|
|
47520
47959
|
}
|
|
47521
|
-
if (value2 === void 0) delete
|
|
47522
|
-
else createProperty(
|
|
47960
|
+
if (value2 === void 0) delete object15[key3];
|
|
47961
|
+
else createProperty(object15, key3, value2);
|
|
47523
47962
|
};
|
|
47524
47963
|
var Node2 = function(value2, end, source, nodes2) {
|
|
47525
47964
|
this.value = value2;
|
|
@@ -47564,7 +48003,7 @@ var init_pdf = __esm({
|
|
|
47564
48003
|
var source = this.source;
|
|
47565
48004
|
var i2 = this.index + 1;
|
|
47566
48005
|
var expectKeypair = false;
|
|
47567
|
-
var
|
|
48006
|
+
var object15 = {};
|
|
47568
48007
|
var nodes2 = {};
|
|
47569
48008
|
var closed = false;
|
|
47570
48009
|
while (i2 < source.length) {
|
|
@@ -47581,7 +48020,7 @@ var init_pdf = __esm({
|
|
|
47581
48020
|
i2 = this.skip(IS_WHITESPACE, i2);
|
|
47582
48021
|
result = this.fork(i2).parse();
|
|
47583
48022
|
createProperty(nodes2, key3, result);
|
|
47584
|
-
createProperty(
|
|
48023
|
+
createProperty(object15, key3, result.value);
|
|
47585
48024
|
i2 = this.until([",", "}"], result.end);
|
|
47586
48025
|
var chr = at2(source, i2);
|
|
47587
48026
|
if (chr === ",") {
|
|
@@ -47594,7 +48033,7 @@ var init_pdf = __esm({
|
|
|
47594
48033
|
}
|
|
47595
48034
|
}
|
|
47596
48035
|
if (!closed) throw new SyntaxError2("Unterminated object at: " + i2);
|
|
47597
|
-
return this.node(OBJECT,
|
|
48036
|
+
return this.node(OBJECT, object15, this.index, i2, nodes2);
|
|
47598
48037
|
},
|
|
47599
48038
|
array: function() {
|
|
47600
48039
|
var source = this.source;
|
|
@@ -69702,8 +70141,8 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
|
69702
70141
|
return this.#getOutlineTwoPoints(points);
|
|
69703
70142
|
}
|
|
69704
70143
|
const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);
|
|
69705
|
-
let
|
|
69706
|
-
for (let i2 = 0; i2 <
|
|
70144
|
+
let N5 = top.length;
|
|
70145
|
+
for (let i2 = 0; i2 < N5; i2 += 2) {
|
|
69707
70146
|
if (isNaN(top[i2])) {
|
|
69708
70147
|
outline[i2] = outline[i2 + 1] = NaN;
|
|
69709
70148
|
continue;
|
|
@@ -69711,20 +70150,20 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
|
69711
70150
|
outline[i2] = top[i2];
|
|
69712
70151
|
outline[i2 + 1] = top[i2 + 1];
|
|
69713
70152
|
}
|
|
69714
|
-
|
|
70153
|
+
N5 = this.#getOutlineEnd(outline, N5);
|
|
69715
70154
|
for (let i2 = bottom.length - 6; i2 >= 6; i2 -= 6) {
|
|
69716
70155
|
for (let j2 = 0; j2 < 6; j2 += 2) {
|
|
69717
70156
|
if (isNaN(bottom[i2 + j2])) {
|
|
69718
|
-
outline[
|
|
69719
|
-
|
|
70157
|
+
outline[N5] = outline[N5 + 1] = NaN;
|
|
70158
|
+
N5 += 2;
|
|
69720
70159
|
continue;
|
|
69721
70160
|
}
|
|
69722
|
-
outline[
|
|
69723
|
-
outline[
|
|
69724
|
-
|
|
70161
|
+
outline[N5] = bottom[i2 + j2];
|
|
70162
|
+
outline[N5 + 1] = bottom[i2 + j2 + 1];
|
|
70163
|
+
N5 += 2;
|
|
69725
70164
|
}
|
|
69726
70165
|
}
|
|
69727
|
-
this.#getOutlineStart(outline,
|
|
70166
|
+
this.#getOutlineStart(outline, N5);
|
|
69728
70167
|
return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);
|
|
69729
70168
|
}
|
|
69730
70169
|
#getOutlineTwoPoints(points) {
|
|
@@ -71763,9 +72202,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
|
71763
72202
|
return -1;
|
|
71764
72203
|
}
|
|
71765
72204
|
static #findContours(buf, width, height, threshold) {
|
|
71766
|
-
const
|
|
71767
|
-
const types2 = new Int32Array(
|
|
71768
|
-
for (let i2 = 0; i2 <
|
|
72205
|
+
const N5 = buf.length;
|
|
72206
|
+
const types2 = new Int32Array(N5);
|
|
72207
|
+
for (let i2 = 0; i2 < N5; i2++) {
|
|
71769
72208
|
types2[i2] = buf[i2] <= threshold ? 1 : 0;
|
|
71770
72209
|
}
|
|
71771
72210
|
for (let i2 = 1; i2 < height - 1; i2++) {
|
|
@@ -71931,8 +72370,8 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
|
71931
72370
|
for (let i2 = 0; i2 < 256; i2++) {
|
|
71932
72371
|
rangeValues[i2] = Math.exp(i2 ** 2 / sigmaR2);
|
|
71933
72372
|
}
|
|
71934
|
-
const
|
|
71935
|
-
const out2 = new Uint8Array(
|
|
72373
|
+
const N5 = buf.length;
|
|
72374
|
+
const out2 = new Uint8Array(N5);
|
|
71936
72375
|
const histogram = new Uint32Array(256);
|
|
71937
72376
|
for (let i2 = 0; i2 < height; i2++) {
|
|
71938
72377
|
for (let j2 = 0; j2 < width; j2++) {
|
|
@@ -71970,8 +72409,8 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
|
71970
72409
|
return histogram;
|
|
71971
72410
|
}
|
|
71972
72411
|
static #toUint8(buf) {
|
|
71973
|
-
const
|
|
71974
|
-
const out2 = new Uint8ClampedArray(
|
|
72412
|
+
const N5 = buf.length;
|
|
72413
|
+
const out2 = new Uint8ClampedArray(N5 >> 2);
|
|
71975
72414
|
let max = -Infinity;
|
|
71976
72415
|
let min = Infinity;
|
|
71977
72416
|
for (let i2 = 0, ii2 = out2.length; i2 < ii2; i2++) {
|
|
@@ -79348,7 +79787,7 @@ var init_pdf_worker_min = __esm({
|
|
|
79348
79787
|
return e3;
|
|
79349
79788
|
};
|
|
79350
79789
|
}, 4644(e2, t2, n2) {
|
|
79351
|
-
var a2, r3, s2, i2 = n2(7811), o2 = n2(3724), l2 = n2(4576), f2 = n2(4901), c2 = n2(34), h2 = n2(9297), u2 = n2(6955), m2 = n2(6823), p2 = n2(6699), d2 = n2(6840), g2 = n2(2106), b2 = n2(1625), w2 = n2(2787), j2 = n2(2967), k2 = n2(8227), y2 = n2(3392), q3 = n2(1181), v2 = q3.enforce, S2 = q3.get, x2 = l2.Int8Array, C2 = x2 && x2.prototype, T2 = l2.Uint8ClampedArray, O2 = T2 && T2.prototype, R2 = x2 && w2(x2), D2 = C2 && w2(C2), H2 = Object.prototype, M2 = l2.TypeError,
|
|
79790
|
+
var a2, r3, s2, i2 = n2(7811), o2 = n2(3724), l2 = n2(4576), f2 = n2(4901), c2 = n2(34), h2 = n2(9297), u2 = n2(6955), m2 = n2(6823), p2 = n2(6699), d2 = n2(6840), g2 = n2(2106), b2 = n2(1625), w2 = n2(2787), j2 = n2(2967), k2 = n2(8227), y2 = n2(3392), q3 = n2(1181), v2 = q3.enforce, S2 = q3.get, x2 = l2.Int8Array, C2 = x2 && x2.prototype, T2 = l2.Uint8ClampedArray, O2 = T2 && T2.prototype, R2 = x2 && w2(x2), D2 = C2 && w2(C2), H2 = Object.prototype, M2 = l2.TypeError, N5 = k2("toStringTag"), _2 = y2("TYPED_ARRAY_TAG"), E2 = "TypedArrayConstructor", z5 = i2 && !!j2 && "Opera" !== u2(l2.opera), L2 = false, U2 = { Int8Array: 1, Uint8Array: 1, Uint8ClampedArray: 1, Int16Array: 2, Uint16Array: 2, Int32Array: 4, Uint32Array: 4, Float32Array: 4, Float64Array: 8 }, W2 = { BigInt64Array: 8, BigUint64Array: 8 }, getTypedArrayConstructor = function(e3) {
|
|
79352
79791
|
var t3 = w2(e3);
|
|
79353
79792
|
if (c2(t3)) {
|
|
79354
79793
|
var n3 = S2(t3);
|
|
@@ -79372,9 +79811,9 @@ var init_pdf_worker_min = __esm({
|
|
|
79372
79811
|
if (z5) for (a2 in U2) l2[a2] && j2(l2[a2].prototype, D2);
|
|
79373
79812
|
}
|
|
79374
79813
|
z5 && w2(O2) !== D2 && j2(O2, D2);
|
|
79375
|
-
if (o2 && !h2(D2,
|
|
79814
|
+
if (o2 && !h2(D2, N5)) {
|
|
79376
79815
|
L2 = true;
|
|
79377
|
-
g2(D2,
|
|
79816
|
+
g2(D2, N5, { configurable: true, get: function() {
|
|
79378
79817
|
return c2(this) ? this[_2] : void 0;
|
|
79379
79818
|
} });
|
|
79380
79819
|
for (a2 in U2) l2[a2] && p2(l2[a2].prototype, _2, a2);
|
|
@@ -80874,7 +81313,7 @@ var init_pdf_worker_min = __esm({
|
|
|
80874
81313
|
return e3;
|
|
80875
81314
|
} });
|
|
80876
81315
|
}, 3110(e2, t2, n2) {
|
|
80877
|
-
var a2 = n2(6518), r3 = n2(7751), s2 = n2(9565), i2 = n2(9504), o2 = n2(9039), l2 = n2(4376), f2 = n2(4901), c2 = n2(34), h2 = n2(2360), u2 = n2(5810), m2 = n2(757), p2 = n2(2195), d2 = n2(1240), g2 = n2(9617).includes, b2 = n2(9297), w2 = n2(655), j2 = n2(8235), k2 = n2(3392), y2 = n2(4495), q3 = n2(7819), v2 = String, S2 = TypeError, x2 = r3("JSON", "stringify"), C2 = r3("BigInt"), T2 = i2("".valueOf), O2 = i2(true.valueOf), R2 = C2 && i2(C2.prototype.valueOf), D2 = i2(/./.exec), H2 = i2("".charAt), M2 = i2("".charCodeAt),
|
|
81316
|
+
var a2 = n2(6518), r3 = n2(7751), s2 = n2(9565), i2 = n2(9504), o2 = n2(9039), l2 = n2(4376), f2 = n2(4901), c2 = n2(34), h2 = n2(2360), u2 = n2(5810), m2 = n2(757), p2 = n2(2195), d2 = n2(1240), g2 = n2(9617).includes, b2 = n2(9297), w2 = n2(655), j2 = n2(8235), k2 = n2(3392), y2 = n2(4495), q3 = n2(7819), v2 = String, S2 = TypeError, x2 = r3("JSON", "stringify"), C2 = r3("BigInt"), T2 = i2("".valueOf), O2 = i2(true.valueOf), R2 = C2 && i2(C2.prototype.valueOf), D2 = i2(/./.exec), H2 = i2("".charAt), M2 = i2("".charCodeAt), N5 = i2("".replace), _2 = i2("".slice), E2 = i2([].push), z5 = i2([].pop), L2 = i2(1.1.toString), U2 = /[\uD800-\uDFFF]/g, W2 = /^[\uD800-\uDBFF]$/, X2 = /^[\uDC00-\uDFFF]$/, K3 = /^\d+$/, G2 = k2(), V2 = k2(), $2 = k2(), Y2 = G2.length, J2 = V2.length, Q2 = !y2 || o2(function() {
|
|
80878
81317
|
var e3 = r3("Symbol")("stringify detection");
|
|
80879
81318
|
return "[null]" !== x2([e3]) || "{}" !== x2({ a: e3 }) || "{}" !== x2(Object(e3));
|
|
80880
81319
|
}), Z2 = o2(function() {
|
|
@@ -80969,7 +81408,7 @@ var init_pdf_worker_min = __esm({
|
|
|
80969
81408
|
return t4;
|
|
80970
81409
|
}, n3);
|
|
80971
81410
|
if ("string" != typeof y3) return y3;
|
|
80972
|
-
Z2 && (y3 =
|
|
81411
|
+
Z2 && (y3 = N5(y3, U2, fixIllFormedJSON));
|
|
80973
81412
|
if (!d3) return y3;
|
|
80974
81413
|
for (var x3 = "", C3 = y3.length, T3 = 0; T3 < C3; T3++) {
|
|
80975
81414
|
var O3 = H2(y3, T3);
|
|
@@ -83748,13 +84187,13 @@ var init_pdf_worker_min = __esm({
|
|
|
83748
84187
|
255 !== e2[i2] && i2--;
|
|
83749
84188
|
break;
|
|
83750
84189
|
default:
|
|
83751
|
-
const
|
|
83752
|
-
if (
|
|
83753
|
-
warn2("JpegImage.parse - unexpected data, current marker is: " +
|
|
83754
|
-
i2 =
|
|
84190
|
+
const N5 = findNextFileMarker(e2, n2, i2 - 2, i2 - 3);
|
|
84191
|
+
if (N5?.invalid) {
|
|
84192
|
+
warn2("JpegImage.parse - unexpected data, current marker is: " + N5.invalid);
|
|
84193
|
+
i2 = N5.offset;
|
|
83755
84194
|
break;
|
|
83756
84195
|
}
|
|
83757
|
-
if (!
|
|
84196
|
+
if (!N5 || i2 >= a2) {
|
|
83758
84197
|
warn2("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");
|
|
83759
84198
|
break e;
|
|
83760
84199
|
}
|
|
@@ -84470,20 +84909,20 @@ var init_pdf_worker_min = __esm({
|
|
|
84470
84909
|
}
|
|
84471
84910
|
let S2 = 0, x2 = v2[0], C2 = v2[1], T2 = v2[2];
|
|
84472
84911
|
w2.push([0, Util2.makeHexColor(x2, C2, T2)]);
|
|
84473
|
-
let O2 = 1, R2 = v2[3], D2 = v2[4], H2 = v2[5], M2 = R2 - x2 + 1,
|
|
84912
|
+
let O2 = 1, R2 = v2[3], D2 = v2[4], H2 = v2[5], M2 = R2 - x2 + 1, N5 = D2 - C2 + 1, _2 = H2 - T2 + 1, E2 = R2 - x2 - 1, z5 = D2 - C2 - 1, L2 = H2 - T2 - 1;
|
|
84474
84913
|
for (let e3 = 2; e3 < g2; e3++) {
|
|
84475
84914
|
const t3 = 3 * e3, n3 = v2[t3], a3 = v2[t3 + 1], r4 = v2[t3 + 2], s3 = e3 - S2;
|
|
84476
84915
|
M2 = Math.min(M2, (n3 - x2 + 1) / s3);
|
|
84477
|
-
|
|
84916
|
+
N5 = Math.min(N5, (a3 - C2 + 1) / s3);
|
|
84478
84917
|
_2 = Math.min(_2, (r4 - T2 + 1) / s3);
|
|
84479
84918
|
E2 = Math.max(E2, (n3 - x2 - 1) / s3);
|
|
84480
84919
|
z5 = Math.max(z5, (a3 - C2 - 1) / s3);
|
|
84481
84920
|
L2 = Math.max(L2, (r4 - T2 - 1) / s3);
|
|
84482
|
-
if (!(E2 <= M2 && z5 <=
|
|
84921
|
+
if (!(E2 <= M2 && z5 <= N5 && L2 <= _2)) {
|
|
84483
84922
|
const e4 = Util2.makeHexColor(R2, D2, H2);
|
|
84484
84923
|
w2.push([O2 / g2, e4]);
|
|
84485
84924
|
M2 = n3 - R2 + 1;
|
|
84486
|
-
|
|
84925
|
+
N5 = a3 - D2 + 1;
|
|
84487
84926
|
_2 = r4 - H2 + 1;
|
|
84488
84927
|
E2 = n3 - R2 - 1;
|
|
84489
84928
|
z5 = a3 - D2 - 1;
|
|
@@ -84542,15 +84981,15 @@ var init_pdf_worker_min = __esm({
|
|
|
84542
84981
|
this.bounds = a.slice();
|
|
84543
84982
|
Util2.axialAlignedBoundingBox([c2, u2, h2, m2], p2, this.bounds);
|
|
84544
84983
|
const d2 = this.bounds[2] - this.bounds[0], g2 = this.bounds[3] - this.bounds[1], b2 = MathClamp2(Math.ceil(d2), 1, _FunctionBasedShading.MAX_STEP_COUNT), w2 = MathClamp2(Math.ceil(g2), 1, _FunctionBasedShading.MAX_STEP_COUNT), j2 = b2 + 1, k2 = (w2 + 1) * j2, y2 = this.coords = new Float32Array(2 * k2), q3 = this.colors = new Uint8ClampedArray(4 * k2), { numComps: v2 } = o2, x2 = new Float32Array(2), C2 = getColorConversionBatchSize(k2, v2), T2 = new Float32Array(C2 * v2), O2 = (h2 - c2) / b2, R2 = (m2 - u2) / w2, D2 = O2 / 2, H2 = R2 / 2;
|
|
84545
|
-
let M2 = 0,
|
|
84984
|
+
let M2 = 0, N5 = 0, _2 = 0, E2 = 0;
|
|
84546
84985
|
for (let e3 = 0; e3 <= w2; e3++) {
|
|
84547
84986
|
const t3 = u2 + R2 * e3;
|
|
84548
84987
|
x2[1] = e3 === w2 ? t3 - H2 : t3;
|
|
84549
84988
|
for (let e4 = 0; e4 <= b2; e4++) {
|
|
84550
84989
|
const n3 = c2 + O2 * e4;
|
|
84551
84990
|
x2[0] = e4 === b2 ? n3 - D2 : n3;
|
|
84552
|
-
f2(x2, 0, T2,
|
|
84553
|
-
|
|
84991
|
+
f2(x2, 0, T2, N5);
|
|
84992
|
+
N5 += v2;
|
|
84554
84993
|
_2++;
|
|
84555
84994
|
y2[M2] = n3;
|
|
84556
84995
|
y2[M2 + 1] = t3;
|
|
@@ -84559,7 +84998,7 @@ var init_pdf_worker_min = __esm({
|
|
|
84559
84998
|
if (_2 === C2) {
|
|
84560
84999
|
o2.getRgbItems(T2, _2, q3, E2, 1);
|
|
84561
85000
|
E2 += 4 * _2;
|
|
84562
|
-
|
|
85001
|
+
N5 = _2 = 0;
|
|
84563
85002
|
}
|
|
84564
85003
|
}
|
|
84565
85004
|
}
|
|
@@ -106331,9 +106770,9 @@ var init_pdf_worker_min = __esm({
|
|
|
106331
106770
|
M2.cMap = t3;
|
|
106332
106771
|
M2.vertical = M2.cMap.vertical;
|
|
106333
106772
|
}
|
|
106334
|
-
const
|
|
106335
|
-
this.extractWidths(t2, e2,
|
|
106336
|
-
const _2 = new Font(h2.name, d2,
|
|
106773
|
+
const N5 = await this.extractDataStructures(t2, M2);
|
|
106774
|
+
this.extractWidths(t2, e2, N5);
|
|
106775
|
+
const _2 = new Font(h2.name, d2, N5, this.options);
|
|
106337
106776
|
if (_2.missingFile && !_2.systemFontInfo && !c2 && this.options.useSystemFonts) {
|
|
106338
106777
|
const e3 = getStandardFontName(h2.name), t3 = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, h2.name, e3, r3);
|
|
106339
106778
|
if (t3) {
|
|
@@ -117946,15 +118385,15 @@ var init_pdf_worker_min = __esm({
|
|
|
117946
118385
|
H2 = [-l2[3], l2[0], w2, j2];
|
|
117947
118386
|
D2 = [-l2[3], l2[2] - T2];
|
|
117948
118387
|
}
|
|
117949
|
-
const
|
|
117950
|
-
|
|
118388
|
+
const N5 = ["q", `${M2.join(" ")} 0 0 cm`, `${H2.join(" ")} re W n`, "BT", `${getPdfColor(i2, true)}`, `0 Tc /Helv ${numberToString(R2)} Tf`];
|
|
118389
|
+
N5.push(`${D2.join(" ")} Td (${escapeString(v2[0])}) Tj`);
|
|
117951
118390
|
const _2 = numberToString(C2);
|
|
117952
118391
|
for (let e3 = 1, t3 = v2.length; e3 < t3; e3++) {
|
|
117953
118392
|
const t4 = v2[e3];
|
|
117954
|
-
|
|
118393
|
+
N5.push(`0 -${_2} Td (${escapeString(t4)}) Tj`);
|
|
117955
118394
|
}
|
|
117956
|
-
|
|
117957
|
-
const E2 =
|
|
118395
|
+
N5.push("ET", "Q");
|
|
118396
|
+
const E2 = N5.join("\n"), z5 = new Dict(t2);
|
|
117958
118397
|
z5.set("FormType", 1);
|
|
117959
118398
|
z5.setIfName("Subtype", "Form");
|
|
117960
118399
|
z5.setIfName("Type", "XObject");
|
|
@@ -120096,13 +120535,13 @@ var init_pdf_worker_min = __esm({
|
|
|
120096
120535
|
return { opList: null, separateForm: false, separateCanvas: false };
|
|
120097
120536
|
}));
|
|
120098
120537
|
const M2 = await Promise.all(H2);
|
|
120099
|
-
let
|
|
120538
|
+
let N5 = false, _2 = false;
|
|
120100
120539
|
for (const { opList: e3, separateForm: t3, separateCanvas: n3 } of M2) {
|
|
120101
120540
|
v2.addOpList(e3);
|
|
120102
|
-
|
|
120541
|
+
N5 ||= t3;
|
|
120103
120542
|
_2 ||= n3;
|
|
120104
120543
|
}
|
|
120105
|
-
v2.flush(true, { form:
|
|
120544
|
+
v2.flush(true, { form: N5, canvas: _2 });
|
|
120106
120545
|
return { length: v2.totalLength };
|
|
120107
120546
|
}
|
|
120108
120547
|
async extractTextContent({ handler: e2, task: t2, includeMarkedContent: n2, disableNormalization: a2, sink: r3, intersector: s2 = null }) {
|
|
@@ -123794,9 +124233,9 @@ function ensureConfettiRuntime() {
|
|
|
123794
124233
|
if (el2.dataset.himalayaConfettiDone === "1") return;
|
|
123795
124234
|
el2.dataset.himalayaConfettiDone = "1";
|
|
123796
124235
|
const w2 = el2.clientWidth || 200;
|
|
123797
|
-
const
|
|
124236
|
+
const N5 = 26;
|
|
123798
124237
|
const parts = [];
|
|
123799
|
-
for (let i2 = 0; i2 <
|
|
124238
|
+
for (let i2 = 0; i2 < N5; i2++) {
|
|
123800
124239
|
const p2 = document.createElement("div");
|
|
123801
124240
|
p2.style.cssText = `position:absolute;top:38%;left:${(20 + rnd() * 60).toFixed(0)}%;width:8px;height:8px;border-radius:${rnd() > 0.5 ? "50%" : "1px"};background:${COLORS[i2 % COLORS.length]};will-change:transform,opacity`;
|
|
123802
124241
|
el2.appendChild(p2);
|
|
@@ -126461,6 +126900,8 @@ function renderInner(node, ctx) {
|
|
|
126461
126900
|
// RFC 0065 §5 — a basic shape (fill / gradient / dashed stroke).
|
|
126462
126901
|
case "Shape":
|
|
126463
126902
|
return /* @__PURE__ */ jsx12(ShapeNode, { props: props2, ctx, wrap });
|
|
126903
|
+
case "QrCode":
|
|
126904
|
+
return /* @__PURE__ */ jsx12(QrCodeNode, { props: props2, ctx, wrap });
|
|
126464
126905
|
// RFC 0063 — Wix Ricos rich content (never a WebView; binding + fallback inside).
|
|
126465
126906
|
case "RichContent":
|
|
126466
126907
|
return /* @__PURE__ */ jsx12(RichContentNode, { props: props2, ctx, wrap, nodeId: resolvedComponentId(node.id, ctx) ?? "" });
|
|
@@ -126697,7 +127138,7 @@ function reportUnknownComponent(ctx, pkg, type2) {
|
|
|
126697
127138
|
function unknownComponentShowsDeveloperLabel(ctx) {
|
|
126698
127139
|
return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
|
|
126699
127140
|
}
|
|
126700
|
-
var AppearanceActionContext, rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, GridColumnsContext, GridBoundList, GRID_SPAN_ALL, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, asBoundCopy, useBoundCopy, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, substituteItemDeep, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, dataTableProbe, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, ECHO_WINDOW_MS, heldPageIndex, LiveWindowMeasured, LiveWindowPage, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, railScrollLeft, carouselScrollLeft, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, rowRenderers, railRowFrame, renderRailRow, RowAnchors, reportedUnknownComponents, UnknownComponentNode, WebRenderer, ScrollIntoViewNode;
|
|
127141
|
+
var AppearanceActionContext, rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, GridColumnsContext, GridBoundList, GRID_SPAN_ALL, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, asBoundCopy, useBoundCopy, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, substituteItemDeep, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, QrCodeNode, ShapeNode, LegendMarker, LegendNode, cellAlign, dataTableProbe, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, ECHO_WINDOW_MS, heldPageIndex, LiveWindowMeasured, LiveWindowPage, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, railScrollLeft, carouselScrollLeft, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, rowRenderers, railRowFrame, renderRailRow, RowAnchors, reportedUnknownComponents, UnknownComponentNode, WebRenderer, ScrollIntoViewNode;
|
|
126701
127142
|
var init_renderNode = __esm({
|
|
126702
127143
|
"../../core/web-renderer/src/renderNode.tsx"() {
|
|
126703
127144
|
"use strict";
|
|
@@ -126720,6 +127161,7 @@ var init_renderNode = __esm({
|
|
|
126720
127161
|
init_bindings();
|
|
126721
127162
|
init_tokens();
|
|
126722
127163
|
init_message_format();
|
|
127164
|
+
init_qr_code();
|
|
126723
127165
|
init_validation();
|
|
126724
127166
|
init_formBag();
|
|
126725
127167
|
init_form_bag();
|
|
@@ -128723,7 +129165,7 @@ var init_renderNode = __esm({
|
|
|
128723
129165
|
const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
|
|
128724
129166
|
const label3 = typeof props2.title === "string" && props2.title ? props2.title : "PDF document";
|
|
128725
129167
|
const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
|
|
128726
|
-
const
|
|
129168
|
+
const object15 = typeof window === "undefined" ? /* @__PURE__ */ jsx12("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx12(React17.Suspense, { fallback: /* @__PURE__ */ jsx12("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx12(
|
|
128727
129169
|
PdfDocumentCanvas,
|
|
128728
129170
|
{
|
|
128729
129171
|
src: loadSrc ?? src,
|
|
@@ -128737,7 +129179,7 @@ var init_renderNode = __esm({
|
|
|
128737
129179
|
style: documentStyle
|
|
128738
129180
|
}
|
|
128739
129181
|
) });
|
|
128740
|
-
if (!showPageControls && !zoomable && !allowShare) return
|
|
129182
|
+
if (!showPageControls && !zoomable && !allowShare) return object15;
|
|
128741
129183
|
const C2 = ctx.color;
|
|
128742
129184
|
const go2 = (p2) => setNav({ from: rawUrl, page: Math.max(1, pageCount != null ? Math.min(p2, pageCount) : p2), zoom: view.zoom });
|
|
128743
129185
|
const zoomBy = (d2) => setNav({ from: rawUrl, page: view.page, zoom: pdfZoomStep(view.zoom ?? sourceZoomPercent(sourceHash) ?? null, d2) });
|
|
@@ -128755,7 +129197,7 @@ var init_renderNode = __esm({
|
|
|
128755
129197
|
const downloadHref = plan?.mode === "retype" ? base : directDoc?.blobUrl ?? null;
|
|
128756
129198
|
const openHref = base + pdfOpenFragment(sourceHash, { page: shownPage, zoom: zoomable ? view.zoom : null, viewerChrome: true });
|
|
128757
129199
|
return /* @__PURE__ */ jsxs10("div", { "data-himalaya-pdf": "reader", style: { ...frame, display: "flex", flexDirection: "column", background: C2("surfaceTertiary", "#f4f4f4") }, children: [
|
|
128758
|
-
|
|
129200
|
+
object15,
|
|
128759
129201
|
/* @__PURE__ */ jsxs10(
|
|
128760
129202
|
"div",
|
|
128761
129203
|
{
|
|
@@ -131201,6 +131643,69 @@ var init_renderNode = __esm({
|
|
|
131201
131643
|
] })
|
|
131202
131644
|
] }) });
|
|
131203
131645
|
});
|
|
131646
|
+
QrCodeNode = withExtras("QrCodeNode", ({ props: props2, ctx, wrap }) => {
|
|
131647
|
+
const hasPath = typeof props2.valuePath === "string" && props2.valuePath !== "";
|
|
131648
|
+
const bound2 = useResolvedScalar(hasPath ? props2.valuePath : void 0, ctx);
|
|
131649
|
+
const boundText = bound2 == null ? "" : String(bound2);
|
|
131650
|
+
const value2 = hasPath && boundText !== "" ? boundText : typeof props2.value === "string" ? props2.value : "";
|
|
131651
|
+
const level = qrErrorCorrection(props2.errorCorrection);
|
|
131652
|
+
const matrix = React17.useMemo(() => {
|
|
131653
|
+
if (!value2) return null;
|
|
131654
|
+
try {
|
|
131655
|
+
return encodeQrCode(value2, level);
|
|
131656
|
+
} catch {
|
|
131657
|
+
return null;
|
|
131658
|
+
}
|
|
131659
|
+
}, [value2, level]);
|
|
131660
|
+
const side2 = typeof props2.size === "number" && props2.size > 0 ? props2.size : QR_DEFAULT_SIZE;
|
|
131661
|
+
const quietZone = typeof props2.quietZone === "number" && props2.quietZone >= 0 ? Math.floor(props2.quietZone) : QR_DEFAULT_QUIET_ZONE;
|
|
131662
|
+
const colorGiven = typeof props2.color === "string" && props2.color !== "";
|
|
131663
|
+
const backgroundGiven = typeof props2.background === "string" && props2.background !== "";
|
|
131664
|
+
const colors = resolveQrColors({
|
|
131665
|
+
color: ctx.color(colorGiven ? props2.color : QR_DEFAULT_COLOR_TOKEN, ""),
|
|
131666
|
+
background: ctx.color(backgroundGiven ? props2.background : QR_DEFAULT_BACKGROUND_TOKEN, ""),
|
|
131667
|
+
colorGiven,
|
|
131668
|
+
backgroundGiven,
|
|
131669
|
+
dark: ctx.scheme === "dark"
|
|
131670
|
+
});
|
|
131671
|
+
const path2 = React17.useMemo(() => {
|
|
131672
|
+
if (!matrix) return "";
|
|
131673
|
+
let d2 = "";
|
|
131674
|
+
for (let y2 = 0; y2 < matrix.size; y2++) {
|
|
131675
|
+
const row2 = matrix.modules[y2];
|
|
131676
|
+
for (let x2 = 0; x2 < matrix.size; ) {
|
|
131677
|
+
if (!row2[x2]) {
|
|
131678
|
+
x2++;
|
|
131679
|
+
continue;
|
|
131680
|
+
}
|
|
131681
|
+
const start = x2;
|
|
131682
|
+
while (x2 < matrix.size && row2[x2]) x2++;
|
|
131683
|
+
d2 += `M${start + quietZone} ${y2 + quietZone}h${x2 - start}v1h${start - x2}z`;
|
|
131684
|
+
}
|
|
131685
|
+
}
|
|
131686
|
+
return d2;
|
|
131687
|
+
}, [matrix, quietZone]);
|
|
131688
|
+
const dim = matrix ? matrix.size + quietZone * 2 : 21 + quietZone * 2;
|
|
131689
|
+
return /* @__PURE__ */ jsxs10(
|
|
131690
|
+
"svg",
|
|
131691
|
+
{
|
|
131692
|
+
role: "img",
|
|
131693
|
+
"aria-label": QR_DEFAULT_ACCESSIBILITY_LABEL,
|
|
131694
|
+
"data-qr-version": matrix?.version,
|
|
131695
|
+
"data-qr-placeholder": matrix ? void 0 : "",
|
|
131696
|
+
...{ [SELF_RENDERED_LEAF]: true },
|
|
131697
|
+
width: side2,
|
|
131698
|
+
height: side2,
|
|
131699
|
+
viewBox: `0 0 ${dim} ${dim}`,
|
|
131700
|
+
shapeRendering: "crispEdges",
|
|
131701
|
+
style: { display: "block", flex: "none", background: colors.background, ...wrap },
|
|
131702
|
+
children: [
|
|
131703
|
+
/* @__PURE__ */ jsx12("rect", { width: dim, height: dim, fill: colors.background }),
|
|
131704
|
+
matrix ? /* @__PURE__ */ jsx12("path", { d: path2, fill: colors.color }) : /* @__PURE__ */ jsx12("g", { fill: colors.color, fillOpacity: 0.25, children: [[0, 0], [14, 0], [0, 14]].map(([x2, y2]) => /* @__PURE__ */ jsx12("rect", { x: x2 + quietZone, y: y2 + quietZone, width: 7, height: 7 }, `${x2}-${y2}`)) })
|
|
131705
|
+
]
|
|
131706
|
+
}
|
|
131707
|
+
);
|
|
131708
|
+
});
|
|
131204
131709
|
ShapeNode = withExtras("ShapeNode", ({ props: props2, ctx, wrap }) => {
|
|
131205
131710
|
const ref = React17.useRef(null);
|
|
131206
131711
|
const [box, setBox] = React17.useState(null);
|
|
@@ -133622,12 +134127,12 @@ function renderSchemeFor(requested, tokens2) {
|
|
|
133622
134127
|
if (requested === "dark" || requested === "light") return requested;
|
|
133623
134128
|
return kitColorScheme(tokens2?.kit) === "dark" ? "dark" : "light";
|
|
133624
134129
|
}
|
|
133625
|
-
function clientEnvFor(scheme, width,
|
|
134130
|
+
function clientEnvFor(scheme, width, isRTL2) {
|
|
133626
134131
|
return {
|
|
133627
134132
|
scheme,
|
|
133628
134133
|
reduceMotion: false,
|
|
133629
134134
|
sizeClass: width === void 0 ? "compact" : sizeClassFromWidth(width),
|
|
133630
|
-
isRTL:
|
|
134135
|
+
isRTL: isRTL2 === true,
|
|
133631
134136
|
// #4674 — a server render has no software keyboard: `$env:keyboardVisible` draws the resting screen.
|
|
133632
134137
|
keyboardVisible: false
|
|
133633
134138
|
};
|
|
@@ -133816,7 +134321,7 @@ function composeStickyTree(payload, header, footer) {
|
|
|
133816
134321
|
if (footer) children.push(footer);
|
|
133817
134322
|
return { id: "screen", type: "ScreenChrome", children };
|
|
133818
134323
|
}
|
|
133819
|
-
async function renderDescriptorWeb(descriptor, tokens2, scheme, wantPng, services = null, width,
|
|
134324
|
+
async function renderDescriptorWeb(descriptor, tokens2, scheme, wantPng, services = null, width, isRTL2, idiomContext, assetBaseUrl) {
|
|
133820
134325
|
const desc = descriptor;
|
|
133821
134326
|
const tooDeep = rawJsonDepthFinding(descriptor);
|
|
133822
134327
|
if (tooDeep) return { renderable: false, reason: `depth_budget_exceeded: ${tooDeep.message}` };
|
|
@@ -133833,7 +134338,7 @@ async function renderDescriptorWeb(descriptor, tokens2, scheme, wantPng, service
|
|
|
133833
134338
|
const provider = services ? new FakeServiceProvider(services) : null;
|
|
133834
134339
|
const stickyHeader = isSduiNode(desc.stickyHeader) ? desc.stickyHeader : void 0;
|
|
133835
134340
|
const stickyFooter = isSduiNode(desc.stickyFooter) ? desc.stickyFooter : void 0;
|
|
133836
|
-
const clientEnv = clientEnvFor(scheme, width,
|
|
134341
|
+
const clientEnv = clientEnvFor(scheme, width, isRTL2);
|
|
133837
134342
|
const treeOf = (node, path2, prov) => buildRenderTree(node, path2, prov, void 0, true, clientEnv);
|
|
133838
134343
|
const renderTree = composeStickyTree(
|
|
133839
134344
|
treeOf(payload, "$", null) ?? void 0,
|
|
@@ -133857,7 +134362,7 @@ async function renderDescriptorWeb(descriptor, tokens2, scheme, wantPng, service
|
|
|
133857
134362
|
stickyHeader || stickyFooter ? { stickyHeader, stickyFooter } : void 0,
|
|
133858
134363
|
// #4497 — the agent fast loop is a dev tool: an unknown component type keeps its
|
|
133859
134364
|
// developer label here (a shipped web app renders nothing for it).
|
|
133860
|
-
{ ...
|
|
134365
|
+
{ ...isRTL2 ? { isRTL: true } : {}, ...idiomContext ? { idiomContext } : {}, ...assetBaseUrl ? { assetBaseUrl } : {}, debugUnknownComponents: true }
|
|
133861
134366
|
);
|
|
133862
134367
|
} catch (err) {
|
|
133863
134368
|
return {
|
|
@@ -133871,7 +134376,7 @@ async function renderDescriptorWeb(descriptor, tokens2, scheme, wantPng, service
|
|
|
133871
134376
|
const nativeOnly = collectNativeOnly(renderTree);
|
|
133872
134377
|
if (nativeOnly.length) result.nativeOnly = nativeOnly;
|
|
133873
134378
|
if (wantPng) {
|
|
133874
|
-
const png = await renderPng(html, scheme, width,
|
|
134379
|
+
const png = await renderPng(html, scheme, width, isRTL2, tokens2, idiomContext, !!stickyFooter);
|
|
133875
134380
|
if (png) result.pngBase64 = png;
|
|
133876
134381
|
else result.pngUnavailable = true;
|
|
133877
134382
|
}
|
|
@@ -133888,8 +134393,8 @@ async function withRetry(op, attempts = 2) {
|
|
|
133888
134393
|
}
|
|
133889
134394
|
throw lastErr;
|
|
133890
134395
|
}
|
|
133891
|
-
async function renderPng(html, scheme, width,
|
|
133892
|
-
const out2 = await renderPngBatch([{ html, scheme, width, isRTL, tokens: tokens2, idiomContext, hasStickyFooter }]);
|
|
134396
|
+
async function renderPng(html, scheme, width, isRTL2, tokens2, idiomContext, hasStickyFooter) {
|
|
134397
|
+
const out2 = await renderPngBatch([{ html, scheme, width, isRTL: isRTL2, tokens: tokens2, idiomContext, hasStickyFooter }]);
|
|
133893
134398
|
return out2?.[0] ?? null;
|
|
133894
134399
|
}
|
|
133895
134400
|
function setPngFontCss(source) {
|
|
@@ -139213,8 +139718,8 @@ function sha256hex(b2) {
|
|
|
139213
139718
|
function stableStringify(value2) {
|
|
139214
139719
|
if (value2 === null || typeof value2 !== "object") return JSON.stringify(value2);
|
|
139215
139720
|
if (Array.isArray(value2)) return "[" + value2.map(stableStringify).join(",") + "]";
|
|
139216
|
-
const
|
|
139217
|
-
return "{" + Object.keys(
|
|
139721
|
+
const object15 = value2;
|
|
139722
|
+
return "{" + Object.keys(object15).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object15[key3])).join(",") + "}";
|
|
139218
139723
|
}
|
|
139219
139724
|
function manifestContent(m2) {
|
|
139220
139725
|
const {
|
|
@@ -144991,7 +145496,7 @@ var init_studio_page = __esm({
|
|
|
144991
145496
|
});
|
|
144992
145497
|
|
|
144993
145498
|
// ../../core/admin-web/src/utils/qr.ts
|
|
144994
|
-
function
|
|
145499
|
+
function rawDataModules2(ver) {
|
|
144995
145500
|
let result = (16 * ver + 128) * ver + 64;
|
|
144996
145501
|
if (ver >= 2) {
|
|
144997
145502
|
const numAlign = Math.floor(ver / 7) + 2;
|
|
@@ -145002,32 +145507,32 @@ function rawDataModules(ver) {
|
|
|
145002
145507
|
}
|
|
145003
145508
|
function byteCapacity(ver) {
|
|
145004
145509
|
const lenBits = ver < 10 ? 8 : 16;
|
|
145005
|
-
return
|
|
145510
|
+
return dataCodewords2(ver) - Math.ceil((4 + lenBits) / 8);
|
|
145006
145511
|
}
|
|
145007
145512
|
function fitVersion(len) {
|
|
145008
|
-
for (let v2 = 1; v2 <=
|
|
145513
|
+
for (let v2 = 1; v2 <= QR_MAX_VERSION2; v2++) if (byteCapacity(v2) >= len) return v2;
|
|
145009
145514
|
return void 0;
|
|
145010
145515
|
}
|
|
145011
|
-
function
|
|
145516
|
+
function rsDivisor2(degree) {
|
|
145012
145517
|
const result = new Array(degree).fill(0);
|
|
145013
145518
|
result[degree - 1] = 1;
|
|
145014
145519
|
let root = 1;
|
|
145015
145520
|
for (let i2 = 0; i2 < degree; i2++) {
|
|
145016
145521
|
for (let j2 = 0; j2 < degree; j2++) {
|
|
145017
|
-
result[j2] =
|
|
145522
|
+
result[j2] = gfMul2(result[j2], root);
|
|
145018
145523
|
if (j2 + 1 < degree) result[j2] ^= result[j2 + 1];
|
|
145019
145524
|
}
|
|
145020
|
-
root =
|
|
145525
|
+
root = gfMul2(root, 2);
|
|
145021
145526
|
}
|
|
145022
145527
|
return result;
|
|
145023
145528
|
}
|
|
145024
|
-
function
|
|
145025
|
-
const divisor =
|
|
145529
|
+
function rsRemainder2(data, degree) {
|
|
145530
|
+
const divisor = rsDivisor2(degree);
|
|
145026
145531
|
const res = new Array(degree).fill(0);
|
|
145027
145532
|
for (const b2 of data) {
|
|
145028
145533
|
const factor = b2 ^ res.shift();
|
|
145029
145534
|
res.push(0);
|
|
145030
|
-
for (let i2 = 0; i2 < degree; i2++) res[i2] ^=
|
|
145535
|
+
for (let i2 = 0; i2 < degree; i2++) res[i2] ^= gfMul2(divisor[i2], factor);
|
|
145031
145536
|
}
|
|
145032
145537
|
return res;
|
|
145033
145538
|
}
|
|
@@ -145039,7 +145544,7 @@ function encodeData(bytes2, ver) {
|
|
|
145039
145544
|
push(4, 4);
|
|
145040
145545
|
push(bytes2.length, ver < 10 ? 8 : 16);
|
|
145041
145546
|
for (const b2 of bytes2) push(b2, 8);
|
|
145042
|
-
const capacityBits =
|
|
145547
|
+
const capacityBits = dataCodewords2(ver) * 8;
|
|
145043
145548
|
push(0, Math.min(4, capacityBits - bits.length));
|
|
145044
145549
|
while (bits.length % 8 !== 0) bits.push(0);
|
|
145045
145550
|
const out2 = [];
|
|
@@ -145048,7 +145553,7 @@ function encodeData(bytes2, ver) {
|
|
|
145048
145553
|
for (let j2 = 0; j2 < 8; j2++) byte2 = byte2 << 1 | bits[i2 + j2];
|
|
145049
145554
|
out2.push(byte2);
|
|
145050
145555
|
}
|
|
145051
|
-
for (let pad3 = 236; out2.length <
|
|
145556
|
+
for (let pad3 = 236; out2.length < dataCodewords2(ver); pad3 ^= 236 ^ 17) out2.push(pad3);
|
|
145052
145557
|
return out2;
|
|
145053
145558
|
}
|
|
145054
145559
|
function interleave(data, ver) {
|
|
@@ -145064,7 +145569,7 @@ function interleave(data, ver) {
|
|
|
145064
145569
|
const blk = data.slice(off, off + len);
|
|
145065
145570
|
off += len;
|
|
145066
145571
|
blocks.push(blk);
|
|
145067
|
-
eccs.push(
|
|
145572
|
+
eccs.push(rsRemainder2(blk, eccLen));
|
|
145068
145573
|
}
|
|
145069
145574
|
const out2 = [];
|
|
145070
145575
|
for (let i2 = 0; i2 < shortLen + 1; i2++) {
|
|
@@ -145076,7 +145581,7 @@ function interleave(data, ver) {
|
|
|
145076
145581
|
for (let i2 = 0; i2 < eccLen; i2++) for (let b2 = 0; b2 < numBlocks; b2++) out2.push(eccs[b2][i2]);
|
|
145077
145582
|
return out2;
|
|
145078
145583
|
}
|
|
145079
|
-
function
|
|
145584
|
+
function alignmentPositions2(ver) {
|
|
145080
145585
|
if (ver === 1) return [];
|
|
145081
145586
|
const num4 = Math.floor(ver / 7) + 2;
|
|
145082
145587
|
const size = ver * 4 + 17;
|
|
@@ -145130,7 +145635,7 @@ function encodeQr(text13) {
|
|
|
145130
145635
|
const bytes2 = [...new TextEncoder().encode(text13)];
|
|
145131
145636
|
const version5 = fitVersion(bytes2.length);
|
|
145132
145637
|
if (!version5) {
|
|
145133
|
-
throw new RangeError(`QR payload too long: ${bytes2.length} bytes exceeds version ${
|
|
145638
|
+
throw new RangeError(`QR payload too long: ${bytes2.length} bytes exceeds version ${QR_MAX_VERSION2} at EC level L`);
|
|
145134
145639
|
}
|
|
145135
145640
|
const codewords = interleave(encodeData(bytes2, version5), version5);
|
|
145136
145641
|
const size = version5 * 4 + 17;
|
|
@@ -145156,8 +145661,8 @@ function encodeQr(text13) {
|
|
|
145156
145661
|
set2(i2, 6, i2 % 2 === 0);
|
|
145157
145662
|
set2(6, i2, i2 % 2 === 0);
|
|
145158
145663
|
}
|
|
145159
|
-
for (const ay of
|
|
145160
|
-
for (const ax of
|
|
145664
|
+
for (const ay of alignmentPositions2(version5))
|
|
145665
|
+
for (const ax of alignmentPositions2(version5)) {
|
|
145161
145666
|
if (ax === 6 && ay === 6 || ax === 6 && ay === size - 7 || ax === size - 7 && ay === 6) continue;
|
|
145162
145667
|
for (let dy = -2; dy <= 2; dy++)
|
|
145163
145668
|
for (let dx = -2; dx <= 2; dx++) set2(ax + dx, ay + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
|
|
@@ -145232,15 +145737,15 @@ function applyVersion(m2, size, version5) {
|
|
|
145232
145737
|
m2[b2][a2] = on4;
|
|
145233
145738
|
}
|
|
145234
145739
|
}
|
|
145235
|
-
var ECC_PER_BLOCK_L, NUM_BLOCKS_L,
|
|
145740
|
+
var ECC_PER_BLOCK_L, NUM_BLOCKS_L, QR_MAX_VERSION2, totalCodewords, dataCodewords2, EXP, LOG, gfMul2, MASKS;
|
|
145236
145741
|
var init_qr = __esm({
|
|
145237
145742
|
"../../core/admin-web/src/utils/qr.ts"() {
|
|
145238
145743
|
init_define_HHP_CATALOG();
|
|
145239
145744
|
ECC_PER_BLOCK_L = [0, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28];
|
|
145240
145745
|
NUM_BLOCKS_L = [0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8];
|
|
145241
|
-
|
|
145242
|
-
totalCodewords = (ver) => Math.floor(
|
|
145243
|
-
|
|
145746
|
+
QR_MAX_VERSION2 = 20;
|
|
145747
|
+
totalCodewords = (ver) => Math.floor(rawDataModules2(ver) / 8);
|
|
145748
|
+
dataCodewords2 = (ver) => totalCodewords(ver) - ECC_PER_BLOCK_L[ver] * NUM_BLOCKS_L[ver];
|
|
145244
145749
|
EXP = new Uint8Array(512);
|
|
145245
145750
|
LOG = new Uint8Array(256);
|
|
145246
145751
|
(() => {
|
|
@@ -145253,7 +145758,7 @@ var init_qr = __esm({
|
|
|
145253
145758
|
}
|
|
145254
145759
|
for (let i2 = 255; i2 < 512; i2++) EXP[i2] = EXP[i2 - 255];
|
|
145255
145760
|
})();
|
|
145256
|
-
|
|
145761
|
+
gfMul2 = (a2, b2) => a2 === 0 || b2 === 0 ? 0 : EXP[LOG[a2] + LOG[b2]];
|
|
145257
145762
|
MASKS = [
|
|
145258
145763
|
(x2, y2) => (x2 + y2) % 2 === 0,
|
|
145259
145764
|
(_x, y2) => y2 % 2 === 0,
|
|
@@ -153929,22 +154434,22 @@ function resolveTagName2(name, isAttribute2, options, matcher, xmlVersion) {
|
|
|
153929
154434
|
if (qName(name, { xmlVersion })) return name;
|
|
153930
154435
|
return options.sanitizeName(name, { isAttribute: isAttribute2, matcher: matcher.readOnly() });
|
|
153931
154436
|
}
|
|
153932
|
-
function processTextOrObjNode(
|
|
153933
|
-
const attrValues = this.extractAttributes(
|
|
154437
|
+
function processTextOrObjNode(object15, key3, level, matcher, xmlVersion) {
|
|
154438
|
+
const attrValues = this.extractAttributes(object15);
|
|
153934
154439
|
matcher.push(key3, attrValues);
|
|
153935
154440
|
const isStopNode = this.checkStopNode(matcher);
|
|
153936
154441
|
if (isStopNode) {
|
|
153937
|
-
const rawContent = this.buildRawContent(
|
|
153938
|
-
const attrStr = this.buildAttributesForStopNode(
|
|
154442
|
+
const rawContent = this.buildRawContent(object15);
|
|
154443
|
+
const attrStr = this.buildAttributesForStopNode(object15);
|
|
153939
154444
|
matcher.pop();
|
|
153940
154445
|
return this.buildObjectNode(rawContent, key3, attrStr, level);
|
|
153941
154446
|
}
|
|
153942
|
-
const result = this.j2x(
|
|
154447
|
+
const result = this.j2x(object15, level + 1, matcher, xmlVersion);
|
|
153943
154448
|
matcher.pop();
|
|
153944
154449
|
if (key3[0] === "?") {
|
|
153945
154450
|
return this.buildTextValNode("", key3, result.attrStr, level, matcher);
|
|
153946
|
-
} else if (
|
|
153947
|
-
return this.buildTextValNode(
|
|
154451
|
+
} else if (object15[this.options.textNodeName] !== void 0 && Object.keys(object15).length === 1) {
|
|
154452
|
+
return this.buildTextValNode(object15[this.options.textNodeName], key3, result.attrStr, level, matcher);
|
|
153948
154453
|
} else {
|
|
153949
154454
|
return this.buildObjectNode(result.val, key3, result.attrStr, level);
|
|
153950
154455
|
}
|
|
@@ -164089,8 +164594,8 @@ function require_null() {
|
|
|
164089
164594
|
function constructYamlNull() {
|
|
164090
164595
|
return null;
|
|
164091
164596
|
}
|
|
164092
|
-
function isNull(
|
|
164093
|
-
return
|
|
164597
|
+
function isNull(object15) {
|
|
164598
|
+
return object15 === null;
|
|
164094
164599
|
}
|
|
164095
164600
|
_null = new Type22("tag:yaml.org,2002:null", {
|
|
164096
164601
|
kind: "scalar",
|
|
@@ -164130,8 +164635,8 @@ function requireBool() {
|
|
|
164130
164635
|
function constructYamlBoolean(data) {
|
|
164131
164636
|
return data === "true" || data === "True" || data === "TRUE";
|
|
164132
164637
|
}
|
|
164133
|
-
function isBoolean(
|
|
164134
|
-
return Object.prototype.toString.call(
|
|
164638
|
+
function isBoolean(object15) {
|
|
164639
|
+
return Object.prototype.toString.call(object15) === "[object Boolean]";
|
|
164135
164640
|
}
|
|
164136
164641
|
bool2 = new Type22("tag:yaml.org,2002:bool", {
|
|
164137
164642
|
kind: "scalar",
|
|
@@ -164139,14 +164644,14 @@ function requireBool() {
|
|
|
164139
164644
|
construct: constructYamlBoolean,
|
|
164140
164645
|
predicate: isBoolean,
|
|
164141
164646
|
represent: {
|
|
164142
|
-
lowercase: function(
|
|
164143
|
-
return
|
|
164647
|
+
lowercase: function(object15) {
|
|
164648
|
+
return object15 ? "true" : "false";
|
|
164144
164649
|
},
|
|
164145
|
-
uppercase: function(
|
|
164146
|
-
return
|
|
164650
|
+
uppercase: function(object15) {
|
|
164651
|
+
return object15 ? "TRUE" : "FALSE";
|
|
164147
164652
|
},
|
|
164148
|
-
camelcase: function(
|
|
164149
|
-
return
|
|
164653
|
+
camelcase: function(object15) {
|
|
164654
|
+
return object15 ? "True" : "False";
|
|
164150
164655
|
}
|
|
164151
164656
|
},
|
|
164152
164657
|
defaultStyle: "lowercase"
|
|
@@ -164235,8 +164740,8 @@ function requireInt() {
|
|
|
164235
164740
|
function constructYamlInteger(data) {
|
|
164236
164741
|
return parseYamlInteger(data);
|
|
164237
164742
|
}
|
|
164238
|
-
function isInteger(
|
|
164239
|
-
return Object.prototype.toString.call(
|
|
164743
|
+
function isInteger(object15) {
|
|
164744
|
+
return Object.prototype.toString.call(object15) === "[object Number]" && (object15 % 1 === 0 && !common2.isNegativeZero(object15));
|
|
164240
164745
|
}
|
|
164241
164746
|
int2 = new Type22("tag:yaml.org,2002:int", {
|
|
164242
164747
|
kind: "scalar",
|
|
@@ -164303,8 +164808,8 @@ function requireFloat() {
|
|
|
164303
164808
|
return sign3 * parseFloat(value2, 10);
|
|
164304
164809
|
}
|
|
164305
164810
|
const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
|
|
164306
|
-
function representYamlFloat(
|
|
164307
|
-
if (isNaN(
|
|
164811
|
+
function representYamlFloat(object15, style) {
|
|
164812
|
+
if (isNaN(object15)) {
|
|
164308
164813
|
switch (style) {
|
|
164309
164814
|
case "lowercase":
|
|
164310
164815
|
return ".nan";
|
|
@@ -164313,7 +164818,7 @@ function requireFloat() {
|
|
|
164313
164818
|
case "camelcase":
|
|
164314
164819
|
return ".NaN";
|
|
164315
164820
|
}
|
|
164316
|
-
} else if (Number.POSITIVE_INFINITY ===
|
|
164821
|
+
} else if (Number.POSITIVE_INFINITY === object15) {
|
|
164317
164822
|
switch (style) {
|
|
164318
164823
|
case "lowercase":
|
|
164319
164824
|
return ".inf";
|
|
@@ -164322,7 +164827,7 @@ function requireFloat() {
|
|
|
164322
164827
|
case "camelcase":
|
|
164323
164828
|
return ".Inf";
|
|
164324
164829
|
}
|
|
164325
|
-
} else if (Number.NEGATIVE_INFINITY ===
|
|
164830
|
+
} else if (Number.NEGATIVE_INFINITY === object15) {
|
|
164326
164831
|
switch (style) {
|
|
164327
164832
|
case "lowercase":
|
|
164328
164833
|
return "-.inf";
|
|
@@ -164331,14 +164836,14 @@ function requireFloat() {
|
|
|
164331
164836
|
case "camelcase":
|
|
164332
164837
|
return "-.Inf";
|
|
164333
164838
|
}
|
|
164334
|
-
} else if (common2.isNegativeZero(
|
|
164839
|
+
} else if (common2.isNegativeZero(object15)) {
|
|
164335
164840
|
return "-0.0";
|
|
164336
164841
|
}
|
|
164337
|
-
const res =
|
|
164842
|
+
const res = object15.toString(10);
|
|
164338
164843
|
return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res;
|
|
164339
164844
|
}
|
|
164340
|
-
function isFloat(
|
|
164341
|
-
return Object.prototype.toString.call(
|
|
164845
|
+
function isFloat(object15) {
|
|
164846
|
+
return Object.prototype.toString.call(object15) === "[object Number]" && (object15 % 1 !== 0 || common2.isNegativeZero(object15));
|
|
164342
164847
|
}
|
|
164343
164848
|
float = new Type22("tag:yaml.org,2002:float", {
|
|
164344
164849
|
kind: "scalar",
|
|
@@ -164417,8 +164922,8 @@ function requireTimestamp() {
|
|
|
164417
164922
|
if (delta) date.setTime(date.getTime() - delta);
|
|
164418
164923
|
return date;
|
|
164419
164924
|
}
|
|
164420
|
-
function representYamlTimestamp(
|
|
164421
|
-
return
|
|
164925
|
+
function representYamlTimestamp(object15) {
|
|
164926
|
+
return object15.toISOString();
|
|
164422
164927
|
}
|
|
164423
164928
|
timestamp = new Type22("tag:yaml.org,2002:timestamp", {
|
|
164424
164929
|
kind: "scalar",
|
|
@@ -164487,10 +164992,10 @@ function requireBinary() {
|
|
|
164487
164992
|
}
|
|
164488
164993
|
return new Uint8Array(result);
|
|
164489
164994
|
}
|
|
164490
|
-
function representYamlBinary(
|
|
164995
|
+
function representYamlBinary(object15) {
|
|
164491
164996
|
let result = "";
|
|
164492
164997
|
let bits = 0;
|
|
164493
|
-
const max =
|
|
164998
|
+
const max = object15.length;
|
|
164494
164999
|
const map2 = BASE64_MAP;
|
|
164495
165000
|
for (let idx = 0; idx < max; idx++) {
|
|
164496
165001
|
if (idx % 3 === 0 && idx) {
|
|
@@ -164499,7 +165004,7 @@ function requireBinary() {
|
|
|
164499
165004
|
result += map2[bits >> 6 & 63];
|
|
164500
165005
|
result += map2[bits & 63];
|
|
164501
165006
|
}
|
|
164502
|
-
bits = (bits << 8) +
|
|
165007
|
+
bits = (bits << 8) + object15[idx];
|
|
164503
165008
|
}
|
|
164504
165009
|
const tail = max % 3;
|
|
164505
165010
|
if (tail === 0) {
|
|
@@ -164541,9 +165046,9 @@ function requireOmap() {
|
|
|
164541
165046
|
function resolveYamlOmap(data) {
|
|
164542
165047
|
if (data === null) return true;
|
|
164543
165048
|
const objectKeys = [];
|
|
164544
|
-
const
|
|
164545
|
-
for (let index = 0, length =
|
|
164546
|
-
const pair =
|
|
165049
|
+
const object15 = data;
|
|
165050
|
+
for (let index = 0, length = object15.length; index < length; index += 1) {
|
|
165051
|
+
const pair = object15[index];
|
|
164547
165052
|
let pairHasKey = false;
|
|
164548
165053
|
if (_toString.call(pair) !== "[object Object]") return false;
|
|
164549
165054
|
let pairKey;
|
|
@@ -164576,10 +165081,10 @@ function requirePairs() {
|
|
|
164576
165081
|
const _toString = Object.prototype.toString;
|
|
164577
165082
|
function resolveYamlPairs(data) {
|
|
164578
165083
|
if (data === null) return true;
|
|
164579
|
-
const
|
|
164580
|
-
const result = new Array(
|
|
164581
|
-
for (let index = 0, length =
|
|
164582
|
-
const pair =
|
|
165084
|
+
const object15 = data;
|
|
165085
|
+
const result = new Array(object15.length);
|
|
165086
|
+
for (let index = 0, length = object15.length; index < length; index += 1) {
|
|
165087
|
+
const pair = object15[index];
|
|
164583
165088
|
if (_toString.call(pair) !== "[object Object]") return false;
|
|
164584
165089
|
const keys = Object.keys(pair);
|
|
164585
165090
|
if (keys.length !== 1) return false;
|
|
@@ -164589,10 +165094,10 @@ function requirePairs() {
|
|
|
164589
165094
|
}
|
|
164590
165095
|
function constructYamlPairs(data) {
|
|
164591
165096
|
if (data === null) return [];
|
|
164592
|
-
const
|
|
164593
|
-
const result = new Array(
|
|
164594
|
-
for (let index = 0, length =
|
|
164595
|
-
const pair =
|
|
165097
|
+
const object15 = data;
|
|
165098
|
+
const result = new Array(object15.length);
|
|
165099
|
+
for (let index = 0, length = object15.length; index < length; index += 1) {
|
|
165100
|
+
const pair = object15[index];
|
|
164596
165101
|
const keys = Object.keys(pair);
|
|
164597
165102
|
result[index] = [keys[0], pair[keys[0]]];
|
|
164598
165103
|
}
|
|
@@ -164612,10 +165117,10 @@ function requireSet() {
|
|
|
164612
165117
|
const _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
164613
165118
|
function resolveYamlSet(data) {
|
|
164614
165119
|
if (data === null) return true;
|
|
164615
|
-
const
|
|
164616
|
-
for (const key3 in
|
|
164617
|
-
if (_hasOwnProperty.call(
|
|
164618
|
-
if (
|
|
165120
|
+
const object15 = data;
|
|
165121
|
+
for (const key3 in object15) {
|
|
165122
|
+
if (_hasOwnProperty.call(object15, key3)) {
|
|
165123
|
+
if (object15[key3] !== null) return false;
|
|
164619
165124
|
}
|
|
164620
165125
|
}
|
|
164621
165126
|
return true;
|
|
@@ -164761,16 +165266,16 @@ function requireLoader() {
|
|
|
164761
165266
|
(c2 - 65536 & 1023) + 56320
|
|
164762
165267
|
);
|
|
164763
165268
|
}
|
|
164764
|
-
function setProperty(
|
|
165269
|
+
function setProperty(object15, key3, value2) {
|
|
164765
165270
|
if (key3 === "__proto__") {
|
|
164766
|
-
Object.defineProperty(
|
|
165271
|
+
Object.defineProperty(object15, key3, {
|
|
164767
165272
|
configurable: true,
|
|
164768
165273
|
enumerable: true,
|
|
164769
165274
|
writable: true,
|
|
164770
165275
|
value: value2
|
|
164771
165276
|
});
|
|
164772
165277
|
} else {
|
|
164773
|
-
|
|
165278
|
+
object15[key3] = value2;
|
|
164774
165279
|
}
|
|
164775
165280
|
}
|
|
164776
165281
|
const simpleEscapeCheck = new Array(256);
|
|
@@ -166394,13 +166899,13 @@ function requireDumper() {
|
|
|
166394
166899
|
}
|
|
166395
166900
|
return result;
|
|
166396
166901
|
}
|
|
166397
|
-
function writeFlowSequence(state, level,
|
|
166902
|
+
function writeFlowSequence(state, level, object15) {
|
|
166398
166903
|
let _result = "";
|
|
166399
166904
|
const _tag = state.tag;
|
|
166400
|
-
for (let index = 0, length =
|
|
166401
|
-
let value2 =
|
|
166905
|
+
for (let index = 0, length = object15.length; index < length; index += 1) {
|
|
166906
|
+
let value2 = object15[index];
|
|
166402
166907
|
if (state.replacer) {
|
|
166403
|
-
value2 = state.replacer.call(
|
|
166908
|
+
value2 = state.replacer.call(object15, String(index), value2);
|
|
166404
166909
|
}
|
|
166405
166910
|
if (writeNode(state, level, value2, false, false) || typeof value2 === "undefined" && writeNode(state, level, null, false, false)) {
|
|
166406
166911
|
if (_result !== "") _result += "," + (!state.condenseFlow ? " " : "");
|
|
@@ -166410,13 +166915,13 @@ function requireDumper() {
|
|
|
166410
166915
|
state.tag = _tag;
|
|
166411
166916
|
state.dump = "[" + _result + "]";
|
|
166412
166917
|
}
|
|
166413
|
-
function writeBlockSequence(state, level,
|
|
166918
|
+
function writeBlockSequence(state, level, object15, compact) {
|
|
166414
166919
|
let _result = "";
|
|
166415
166920
|
const _tag = state.tag;
|
|
166416
|
-
for (let index = 0, length =
|
|
166417
|
-
let value2 =
|
|
166921
|
+
for (let index = 0, length = object15.length; index < length; index += 1) {
|
|
166922
|
+
let value2 = object15[index];
|
|
166418
166923
|
if (state.replacer) {
|
|
166419
|
-
value2 = state.replacer.call(
|
|
166924
|
+
value2 = state.replacer.call(object15, String(index), value2);
|
|
166420
166925
|
}
|
|
166421
166926
|
if (writeNode(state, level + 1, value2, true, true, false, true) || typeof value2 === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) {
|
|
166422
166927
|
if (!compact || _result !== "") {
|
|
@@ -166433,18 +166938,18 @@ function requireDumper() {
|
|
|
166433
166938
|
state.tag = _tag;
|
|
166434
166939
|
state.dump = _result || "[]";
|
|
166435
166940
|
}
|
|
166436
|
-
function writeFlowMapping(state, level,
|
|
166941
|
+
function writeFlowMapping(state, level, object15) {
|
|
166437
166942
|
let _result = "";
|
|
166438
166943
|
const _tag = state.tag;
|
|
166439
|
-
const objectKeyList = Object.keys(
|
|
166944
|
+
const objectKeyList = Object.keys(object15);
|
|
166440
166945
|
for (let index = 0, length = objectKeyList.length; index < length; index += 1) {
|
|
166441
166946
|
let pairBuffer = "";
|
|
166442
166947
|
if (_result !== "") pairBuffer += ", ";
|
|
166443
166948
|
if (state.condenseFlow) pairBuffer += '"';
|
|
166444
166949
|
const objectKey = objectKeyList[index];
|
|
166445
|
-
let objectValue =
|
|
166950
|
+
let objectValue = object15[objectKey];
|
|
166446
166951
|
if (state.replacer) {
|
|
166447
|
-
objectValue = state.replacer.call(
|
|
166952
|
+
objectValue = state.replacer.call(object15, objectKey, objectValue);
|
|
166448
166953
|
}
|
|
166449
166954
|
if (!writeNode(state, level, objectKey, false, false)) {
|
|
166450
166955
|
continue;
|
|
@@ -166460,10 +166965,10 @@ function requireDumper() {
|
|
|
166460
166965
|
state.tag = _tag;
|
|
166461
166966
|
state.dump = "{" + _result + "}";
|
|
166462
166967
|
}
|
|
166463
|
-
function writeBlockMapping(state, level,
|
|
166968
|
+
function writeBlockMapping(state, level, object15, compact) {
|
|
166464
166969
|
let _result = "";
|
|
166465
166970
|
const _tag = state.tag;
|
|
166466
|
-
const objectKeyList = Object.keys(
|
|
166971
|
+
const objectKeyList = Object.keys(object15);
|
|
166467
166972
|
if (state.sortKeys === true) {
|
|
166468
166973
|
objectKeyList.sort();
|
|
166469
166974
|
} else if (typeof state.sortKeys === "function") {
|
|
@@ -166477,9 +166982,9 @@ function requireDumper() {
|
|
|
166477
166982
|
pairBuffer += generateNextLine(state, level);
|
|
166478
166983
|
}
|
|
166479
166984
|
const objectKey = objectKeyList[index];
|
|
166480
|
-
let objectValue =
|
|
166985
|
+
let objectValue = object15[objectKey];
|
|
166481
166986
|
if (state.replacer) {
|
|
166482
|
-
objectValue = state.replacer.call(
|
|
166987
|
+
objectValue = state.replacer.call(object15, objectKey, objectValue);
|
|
166483
166988
|
}
|
|
166484
166989
|
if (!writeNode(state, level + 1, objectKey, true, true, true)) {
|
|
166485
166990
|
continue;
|
|
@@ -166510,14 +167015,14 @@ function requireDumper() {
|
|
|
166510
167015
|
state.tag = _tag;
|
|
166511
167016
|
state.dump = _result || "{}";
|
|
166512
167017
|
}
|
|
166513
|
-
function detectType(state,
|
|
167018
|
+
function detectType(state, object15, explicit2) {
|
|
166514
167019
|
const typeList = explicit2 ? state.explicitTypes : state.implicitTypes;
|
|
166515
167020
|
for (let index = 0, length = typeList.length; index < length; index += 1) {
|
|
166516
167021
|
const type2 = typeList[index];
|
|
166517
|
-
if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof
|
|
167022
|
+
if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object15 === "object" && object15 instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object15))) {
|
|
166518
167023
|
if (explicit2) {
|
|
166519
167024
|
if (type2.multi && type2.representName) {
|
|
166520
|
-
state.tag = type2.representName(
|
|
167025
|
+
state.tag = type2.representName(object15);
|
|
166521
167026
|
} else {
|
|
166522
167027
|
state.tag = type2.tag;
|
|
166523
167028
|
}
|
|
@@ -166528,9 +167033,9 @@ function requireDumper() {
|
|
|
166528
167033
|
const style = state.styleMap[type2.tag] || type2.defaultStyle;
|
|
166529
167034
|
let _result;
|
|
166530
167035
|
if (_toString.call(type2.represent) === "[object Function]") {
|
|
166531
|
-
_result = type2.represent(
|
|
167036
|
+
_result = type2.represent(object15, style);
|
|
166532
167037
|
} else if (_hasOwnProperty.call(type2.represent, style)) {
|
|
166533
|
-
_result = type2.represent[style](
|
|
167038
|
+
_result = type2.represent[style](object15, style);
|
|
166534
167039
|
} else {
|
|
166535
167040
|
throw new YAMLException2("!<" + type2.tag + '> tag resolver accepts not "' + style + '" style');
|
|
166536
167041
|
}
|
|
@@ -166541,11 +167046,11 @@ function requireDumper() {
|
|
|
166541
167046
|
}
|
|
166542
167047
|
return false;
|
|
166543
167048
|
}
|
|
166544
|
-
function writeNode(state, level,
|
|
167049
|
+
function writeNode(state, level, object15, block, compact, iskey, isblockseq) {
|
|
166545
167050
|
state.tag = null;
|
|
166546
|
-
state.dump =
|
|
166547
|
-
if (!detectType(state,
|
|
166548
|
-
detectType(state,
|
|
167051
|
+
state.dump = object15;
|
|
167052
|
+
if (!detectType(state, object15, false)) {
|
|
167053
|
+
detectType(state, object15, true);
|
|
166549
167054
|
}
|
|
166550
167055
|
const type2 = _toString.call(state.dump);
|
|
166551
167056
|
const inblock = block;
|
|
@@ -166556,7 +167061,7 @@ function requireDumper() {
|
|
|
166556
167061
|
let duplicateIndex;
|
|
166557
167062
|
let duplicate;
|
|
166558
167063
|
if (objectOrArray) {
|
|
166559
|
-
duplicateIndex = state.duplicates.indexOf(
|
|
167064
|
+
duplicateIndex = state.duplicates.indexOf(object15);
|
|
166560
167065
|
duplicate = duplicateIndex !== -1;
|
|
166561
167066
|
}
|
|
166562
167067
|
if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) {
|
|
@@ -166622,33 +167127,33 @@ function requireDumper() {
|
|
|
166622
167127
|
}
|
|
166623
167128
|
return true;
|
|
166624
167129
|
}
|
|
166625
|
-
function getDuplicateReferences(
|
|
167130
|
+
function getDuplicateReferences(object15, state) {
|
|
166626
167131
|
const objects = [];
|
|
166627
167132
|
const duplicatesIndexes = [];
|
|
166628
|
-
inspectNode(
|
|
167133
|
+
inspectNode(object15, objects, duplicatesIndexes);
|
|
166629
167134
|
const length = duplicatesIndexes.length;
|
|
166630
167135
|
for (let index = 0; index < length; index += 1) {
|
|
166631
167136
|
state.duplicates.push(objects[duplicatesIndexes[index]]);
|
|
166632
167137
|
}
|
|
166633
167138
|
state.usedDuplicates = new Array(length);
|
|
166634
167139
|
}
|
|
166635
|
-
function inspectNode(
|
|
166636
|
-
if (
|
|
166637
|
-
const index = objects.indexOf(
|
|
167140
|
+
function inspectNode(object15, objects, duplicatesIndexes) {
|
|
167141
|
+
if (object15 !== null && typeof object15 === "object") {
|
|
167142
|
+
const index = objects.indexOf(object15);
|
|
166638
167143
|
if (index !== -1) {
|
|
166639
167144
|
if (duplicatesIndexes.indexOf(index) === -1) {
|
|
166640
167145
|
duplicatesIndexes.push(index);
|
|
166641
167146
|
}
|
|
166642
167147
|
} else {
|
|
166643
|
-
objects.push(
|
|
166644
|
-
if (Array.isArray(
|
|
166645
|
-
for (let i2 = 0, length =
|
|
166646
|
-
inspectNode(
|
|
167148
|
+
objects.push(object15);
|
|
167149
|
+
if (Array.isArray(object15)) {
|
|
167150
|
+
for (let i2 = 0, length = object15.length; i2 < length; i2 += 1) {
|
|
167151
|
+
inspectNode(object15[i2], objects, duplicatesIndexes);
|
|
166647
167152
|
}
|
|
166648
167153
|
} else {
|
|
166649
|
-
const objectKeyList = Object.keys(
|
|
167154
|
+
const objectKeyList = Object.keys(object15);
|
|
166650
167155
|
for (let i2 = 0, length = objectKeyList.length; i2 < length; i2 += 1) {
|
|
166651
|
-
inspectNode(
|
|
167156
|
+
inspectNode(object15[objectKeyList[i2]], objects, duplicatesIndexes);
|
|
166652
167157
|
}
|
|
166653
167158
|
}
|
|
166654
167159
|
}
|
|
@@ -179602,55 +180107,107 @@ var init_write_artifacts = __esm({
|
|
|
179602
180107
|
}
|
|
179603
180108
|
});
|
|
179604
180109
|
|
|
180110
|
+
// ../../stdlib/flows/screens/src/one-app-visibility.ts
|
|
180111
|
+
function oneAppSectionVisibility(id, definition) {
|
|
180112
|
+
const d2 = object6(definition);
|
|
180113
|
+
const present = definition !== null && typeof definition === "object" && !Array.isArray(definition);
|
|
180114
|
+
const list2 = (key3) => d2[key3] === void 0 ? [] : Array.isArray(d2[key3]) && d2[key3].every((v2) => typeof v2 === "string" && v2.length > 0) ? [...d2[key3]] : null;
|
|
180115
|
+
const visitorExperiments = list2("visitorModeExperiments"), experiments = list2("experiments");
|
|
180116
|
+
const valid = visitorExperiments !== null && experiments !== null && (d2.visitorModeEnabled === void 0 || typeof d2.visitorModeEnabled === "boolean");
|
|
180117
|
+
const enabled2 = present && valid ? d2.visitorModeEnabled === true : definition === void 0 && id && memberOnly.has(id) ? false : null;
|
|
180118
|
+
return {
|
|
180119
|
+
authentication: enabled2 === null ? "unresolved" : enabled2 ? "visitor-enabled" : "signed-in-only",
|
|
180120
|
+
visitorModeEnabled: enabled2,
|
|
180121
|
+
visitorModeExperiments: visitorExperiments ?? [],
|
|
180122
|
+
experiments: experiments ?? [],
|
|
180123
|
+
source: enabled2 === null ? "unresolved" : present ? "collected-definition" : "pinned-definition"
|
|
180124
|
+
};
|
|
180125
|
+
}
|
|
180126
|
+
var ONE_APP_MEMBER_ONLY_SECTIONS, memberOnly, object6;
|
|
180127
|
+
var init_one_app_visibility = __esm({
|
|
180128
|
+
"../../stdlib/flows/screens/src/one-app-visibility.ts"() {
|
|
180129
|
+
init_define_HHP_CATALOG();
|
|
180130
|
+
ONE_APP_MEMBER_ONLY_SECTIONS = [
|
|
180131
|
+
"food_section",
|
|
180132
|
+
"newBlog_submit_post_section",
|
|
180133
|
+
"selections",
|
|
180134
|
+
"file_share_section",
|
|
180135
|
+
"events_guests_section",
|
|
180136
|
+
"events_discussion_section",
|
|
180137
|
+
"performance_tracker_section",
|
|
180138
|
+
"achievements_participant_carousel_section",
|
|
180139
|
+
"memberships_packages_section",
|
|
180140
|
+
"upcoming_bookings_section",
|
|
180141
|
+
"loyalty_status_section"
|
|
180142
|
+
];
|
|
180143
|
+
memberOnly = /* @__PURE__ */ new Set(ONE_APP_MEMBER_ONLY_SECTIONS);
|
|
180144
|
+
object6 = (v2) => v2 !== null && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
|
|
180145
|
+
}
|
|
180146
|
+
});
|
|
180147
|
+
|
|
179605
180148
|
// src/one-app/graph.ts
|
|
179606
180149
|
function buildSourceGraph(raw, enriched = {}) {
|
|
179607
180150
|
const enrichedStructures = Object.values(enriched).filter((value2) => value2 !== void 0);
|
|
179608
180151
|
function sourceMap2(key3) {
|
|
179609
180152
|
const result = {};
|
|
179610
180153
|
for (const structure of enrichedStructures) {
|
|
179611
|
-
for (const [id, value2] of Object.entries(
|
|
180154
|
+
for (const [id, value2] of Object.entries(object7(structure[key3]))) {
|
|
179612
180155
|
if (!own5(result, id)) result[id] = value2;
|
|
179613
180156
|
}
|
|
179614
180157
|
}
|
|
179615
|
-
for (const [id, value2] of Object.entries(
|
|
179616
|
-
result[id] = own5(result, id) ? { ...
|
|
180158
|
+
for (const [id, value2] of Object.entries(object7(raw[key3]))) {
|
|
180159
|
+
result[id] = own5(result, id) ? { ...object7(result[id]), ...object7(value2) } : value2;
|
|
179617
180160
|
}
|
|
179618
180161
|
return result;
|
|
179619
180162
|
}
|
|
179620
180163
|
function definitionMap(key3) {
|
|
179621
180164
|
const result = {};
|
|
179622
180165
|
for (const structure of enrichedStructures) {
|
|
179623
|
-
for (const [id, value2] of Object.entries(
|
|
180166
|
+
for (const [id, value2] of Object.entries(object7(object7(structure.definitions)[key3]))) {
|
|
179624
180167
|
if (!own5(result, id)) result[id] = value2;
|
|
179625
180168
|
}
|
|
179626
180169
|
}
|
|
179627
|
-
for (const [id, value2] of Object.entries(
|
|
179628
|
-
result[id] = own5(result, id) ? { ...
|
|
180170
|
+
for (const [id, value2] of Object.entries(object7(object7(raw.definitions)[key3]))) {
|
|
180171
|
+
result[id] = own5(result, id) ? { ...object7(result[id]), ...object7(value2) } : value2;
|
|
179629
180172
|
}
|
|
179630
180173
|
return result;
|
|
179631
180174
|
}
|
|
179632
180175
|
function platformMap(platformStructure, key3) {
|
|
179633
|
-
const result = { ...
|
|
179634
|
-
for (const [id, value2] of Object.entries(
|
|
179635
|
-
result[id] = own5(result, id) ? { ...
|
|
180176
|
+
const result = { ...object7(raw[key3]) };
|
|
180177
|
+
for (const [id, value2] of Object.entries(object7(platformStructure[key3]))) {
|
|
180178
|
+
result[id] = own5(result, id) ? { ...object7(result[id]), ...object7(value2) } : value2;
|
|
179636
180179
|
}
|
|
179637
180180
|
return result;
|
|
179638
180181
|
}
|
|
179639
180182
|
function platformDefinitionMap(platformStructure, key3) {
|
|
179640
|
-
const result = { ...
|
|
179641
|
-
for (const [id, value2] of Object.entries(
|
|
179642
|
-
result[id] = own5(result, id) ? { ...
|
|
180183
|
+
const result = { ...object7(object7(raw.definitions)[key3]) };
|
|
180184
|
+
for (const [id, value2] of Object.entries(object7(object7(platformStructure.definitions)[key3]))) {
|
|
180185
|
+
result[id] = own5(result, id) ? { ...object7(result[id]), ...object7(value2) } : value2;
|
|
179643
180186
|
}
|
|
179644
180187
|
return result;
|
|
179645
180188
|
}
|
|
179646
180189
|
const screens = sourceMap2("screens");
|
|
179647
|
-
const layouts =
|
|
179648
|
-
const allSections =
|
|
180190
|
+
const layouts = object7(raw.layoutItems);
|
|
180191
|
+
const allSections = object7(raw.sections);
|
|
179649
180192
|
const sections = Object.fromEntries(Object.entries(allSections).filter(([, v2]) => !sectionType(v2)?.startsWith("ntt.")));
|
|
179650
|
-
const headers2 =
|
|
180193
|
+
const headers2 = object7(raw.headers);
|
|
179651
180194
|
const topBars = sourceMap2("topBars");
|
|
179652
180195
|
const topBarButtonDefinitions = definitionMap("topBarButtons");
|
|
179653
180196
|
const actionDefinitions = definitionMap("actions");
|
|
180197
|
+
const sectionDefinitions = definitionMap("sections");
|
|
180198
|
+
for (const [id, value2] of Object.entries(object7(object7(raw.definitions).sections))) {
|
|
180199
|
+
sectionDefinitions[id] = value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? {
|
|
180200
|
+
...object7(sectionDefinitions[id]),
|
|
180201
|
+
...object7(value2),
|
|
180202
|
+
visitorModeEnabled: own5(object7(value2), "visitorModeEnabled") ? object7(value2).visitorModeEnabled : false
|
|
180203
|
+
} : value2;
|
|
180204
|
+
}
|
|
180205
|
+
const memberOnlySections = new Set(ONE_APP_MEMBER_ONLY_SECTIONS);
|
|
180206
|
+
const sectionVisibility = Object.fromEntries(Object.entries(sections).flatMap(([id, value2]) => {
|
|
180207
|
+
const type2 = sectionType(value2);
|
|
180208
|
+
if (!type2 || !memberOnlySections.has(type2)) return [];
|
|
180209
|
+
return [[id, oneAppSectionVisibility(type2, own5(sectionDefinitions, type2) ? sectionDefinitions[type2] : void 0)]];
|
|
180210
|
+
}));
|
|
179654
180211
|
const warnings = [];
|
|
179655
180212
|
const usedSections = /* @__PURE__ */ new Set();
|
|
179656
180213
|
const usedLayouts = /* @__PURE__ */ new Set();
|
|
@@ -179659,23 +180216,23 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179659
180216
|
const layoutAliases = /* @__PURE__ */ new Map();
|
|
179660
180217
|
const interactions = [];
|
|
179661
180218
|
for (const [id, value2] of Object.entries(layouts)) {
|
|
179662
|
-
const slug = string5(
|
|
180219
|
+
const slug = string5(object7(value2).slug);
|
|
179663
180220
|
if (slug) layoutAliases.set(slug, [...layoutAliases.get(slug) ?? [], id]);
|
|
179664
180221
|
}
|
|
179665
180222
|
for (const [id, value2] of Object.entries(screens)) {
|
|
179666
|
-
for (const ref of array3(
|
|
179667
|
-
const layoutId = string5(
|
|
180223
|
+
for (const ref of array3(object7(object7(value2).layout).items)) {
|
|
180224
|
+
const layoutId = string5(object7(ref).layoutItemId);
|
|
179668
180225
|
if (layoutId) parents.set(layoutId, [.../* @__PURE__ */ new Set([...parents.get(layoutId) ?? [], id])]);
|
|
179669
180226
|
}
|
|
179670
180227
|
}
|
|
179671
180228
|
for (const [name, values] of Object.entries({ screens, layoutItems: layouts, sections, headers: headers2 })) {
|
|
179672
180229
|
for (const [id, value2] of Object.entries(values)) {
|
|
179673
|
-
const declared = string5(
|
|
180230
|
+
const declared = string5(object7(value2).id);
|
|
179674
180231
|
if (declared !== void 0 && declared !== id) warnings.push({ code: "id_conflict", pointer: `/${name}/${part(id)}/id`, reference: declared });
|
|
179675
180232
|
}
|
|
179676
180233
|
}
|
|
179677
180234
|
function order(refs, pointer3) {
|
|
179678
|
-
const indexes = refs.map((ref) =>
|
|
180235
|
+
const indexes = refs.map((ref) => object7(ref).orderIndex).filter((v2) => typeof v2 === "number");
|
|
179679
180236
|
if (indexes.some((v2, i2) => i2 > 0 && v2 <= indexes[i2 - 1])) warnings.push({ code: "order_conflict", pointer: pointer3 });
|
|
179680
180237
|
}
|
|
179681
180238
|
function route(value2, contract, pointer3) {
|
|
@@ -179705,7 +180262,7 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179705
180262
|
warnings.push({ code: "action_depth_limit", pointer: current.pointer });
|
|
179706
180263
|
continue;
|
|
179707
180264
|
}
|
|
179708
|
-
const item =
|
|
180265
|
+
const item = object7(current.value);
|
|
179709
180266
|
const kind = string5(item.type);
|
|
179710
180267
|
if (kind && ["goToScreen", "vertical", "form", "url", "tel", "mailto"].includes(kind)) {
|
|
179711
180268
|
const dest = string5(item.screenId);
|
|
@@ -179717,12 +180274,12 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179717
180274
|
function placements(value2, pointer3, context = pointer3) {
|
|
179718
180275
|
const refs = array3(value2);
|
|
179719
180276
|
const inScope = refs.filter((ref) => {
|
|
179720
|
-
const id = string5(
|
|
180277
|
+
const id = string5(object7(ref).elementId);
|
|
179721
180278
|
return !id || !sectionType(allSections[id])?.startsWith("ntt.");
|
|
179722
180279
|
});
|
|
179723
180280
|
order(inScope, pointer3);
|
|
179724
180281
|
return refs.flatMap((value3, index) => {
|
|
179725
|
-
const ref =
|
|
180282
|
+
const ref = object7(value3);
|
|
179726
180283
|
const id = string5(ref.elementId);
|
|
179727
180284
|
if (id && sectionType(allSections[id])?.startsWith("ntt.")) return [];
|
|
179728
180285
|
const refPointer = `${pointer3}/${index}`;
|
|
@@ -179741,15 +180298,15 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179741
180298
|
});
|
|
179742
180299
|
}
|
|
179743
180300
|
function topBarButtons(value2, side2, pointer3, context, buttonDefinitions = topBarButtonDefinitions, availableActions = actionDefinitions, trackInteractions = true) {
|
|
179744
|
-
const bar =
|
|
180301
|
+
const bar = object7(value2);
|
|
179745
180302
|
const idsKey = `${side2}ButtonIds`;
|
|
179746
180303
|
const definitionsKey = `${side2}ButtonDefinitions`;
|
|
179747
180304
|
const refs = own5(bar, idsKey) ? array3(bar[idsKey]) : array3(bar[definitionsKey]);
|
|
179748
180305
|
return refs.map((ref, index) => {
|
|
179749
|
-
const refObject =
|
|
180306
|
+
const refObject = object7(ref);
|
|
179750
180307
|
const id = typeof ref === "string" ? ref : string5(refObject.topBarButtonDefinitionId) ?? string5(refObject.id);
|
|
179751
180308
|
const definition = id && own5(buttonDefinitions, id) ? buttonDefinitions[id] : typeof ref === "object" && ref !== null ? ref : void 0;
|
|
179752
|
-
const actionDefinitionId = string5(
|
|
180309
|
+
const actionDefinitionId = string5(object7(definition).actionDefinitionId) ?? string5(refObject.actionDefinitionId);
|
|
179753
180310
|
const actionDefinition = actionDefinitionId && own5(availableActions, actionDefinitionId) ? availableActions[actionDefinitionId] : void 0;
|
|
179754
180311
|
const buttonPointer = `${pointer3}/${side2}/${index}`;
|
|
179755
180312
|
if (trackInteractions) {
|
|
@@ -179765,8 +180322,8 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179765
180322
|
});
|
|
179766
180323
|
}
|
|
179767
180324
|
const screenGraph = Object.entries(screens).map(([screenId, source]) => {
|
|
179768
|
-
const screen =
|
|
179769
|
-
const layout =
|
|
180325
|
+
const screen = object7(source);
|
|
180326
|
+
const layout = object7(screen.layout);
|
|
179770
180327
|
const type2 = string5(layout.type);
|
|
179771
180328
|
const refs = array3(layout.items);
|
|
179772
180329
|
const pointer3 = `/screens/${part(screenId)}`;
|
|
@@ -179789,7 +180346,7 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179789
180346
|
};
|
|
179790
180347
|
const topBarByPlatform = Object.fromEntries(Object.entries(enriched).flatMap(([platform, platformStructure]) => {
|
|
179791
180348
|
if (!platformStructure) return [];
|
|
179792
|
-
const platformScreen = { ...
|
|
180349
|
+
const platformScreen = { ...object7(object7(raw.screens)[screenId]), ...object7(object7(platformStructure.screens)[screenId]) };
|
|
179793
180350
|
const platformTopBarId = string5(platformScreen.topBarId);
|
|
179794
180351
|
if (!platformTopBarId) return [];
|
|
179795
180352
|
const platformTopBar = platformMap(platformStructure, "topBars")[platformTopBarId];
|
|
@@ -179808,13 +180365,13 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179808
180365
|
}]];
|
|
179809
180366
|
}));
|
|
179810
180367
|
const pages2 = refs.flatMap((value2, index) => {
|
|
179811
|
-
const ref =
|
|
180368
|
+
const ref = object7(value2), id = string5(ref.layoutItemId);
|
|
179812
180369
|
if (!id || !own5(layouts, id)) {
|
|
179813
180370
|
warnings.push({ code: "missing_reference", pointer: `${pointer3}/layout/items/${index}`, ...id ? { reference: id } : {} });
|
|
179814
180371
|
return [];
|
|
179815
180372
|
}
|
|
179816
180373
|
usedLayouts.add(id);
|
|
179817
|
-
const item =
|
|
180374
|
+
const item = object7(layouts[id]);
|
|
179818
180375
|
return [{
|
|
179819
180376
|
layoutItemId: id,
|
|
179820
180377
|
arrayIndex: index,
|
|
@@ -179844,7 +180401,7 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179844
180401
|
};
|
|
179845
180402
|
});
|
|
179846
180403
|
const detachedLayouts = Object.entries(layouts).filter(([id]) => !usedLayouts.has(id)).map(([id, value2]) => {
|
|
179847
|
-
const item =
|
|
180404
|
+
const item = object7(value2);
|
|
179848
180405
|
return {
|
|
179849
180406
|
layoutItemId: id,
|
|
179850
180407
|
title: item.title,
|
|
@@ -179854,31 +180411,34 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179854
180411
|
placements: placements(item.elements, `/layoutItems/${part(id)}/elements`)
|
|
179855
180412
|
};
|
|
179856
180413
|
});
|
|
179857
|
-
const bottomTabs = array3(
|
|
180414
|
+
const bottomTabs = array3(object7(raw.navigation).bottomTabs);
|
|
179858
180415
|
order(bottomTabs, "/navigation/bottomTabs");
|
|
179859
180416
|
const navigation = bottomTabs.map((value2, index) => {
|
|
179860
|
-
const entry =
|
|
180417
|
+
const entry = object7(value2), id = string5(entry.screenId);
|
|
179861
180418
|
if (!id) warnings.push({ code: "missing_reference", pointer: `/navigation/bottomTabs/${index}/screenId` });
|
|
179862
180419
|
return { arrayIndex: index, entry, ...id ? { destination: route(id, "screen", `/navigation/bottomTabs/${index}/screenId`) } : {} };
|
|
179863
180420
|
});
|
|
179864
|
-
const overrides = Object.entries(
|
|
179865
|
-
const id = string5(
|
|
180421
|
+
const overrides = Object.entries(object7(raw.screenOverrides)).map(([alias2, value2]) => {
|
|
180422
|
+
const id = string5(object7(value2).screenId);
|
|
179866
180423
|
if (!id) warnings.push({ code: "missing_reference", pointer: `/screenOverrides/${part(alias2)}/screenId` });
|
|
179867
180424
|
return { alias: alias2, source: value2, ...id ? { destination: route(id, "screen", `/screenOverrides/${part(alias2)}/screenId`) } : {} };
|
|
179868
180425
|
});
|
|
179869
|
-
const profile =
|
|
180426
|
+
const profile = object7(raw.businessProfile);
|
|
179870
180427
|
const profilePlacements = placements(profile.elements, "/businessProfile/elements");
|
|
180428
|
+
const usedSectionVisibility = Object.fromEntries(Object.entries(sectionVisibility).filter(([id]) => usedSections.has(id)));
|
|
179871
180429
|
return {
|
|
179872
180430
|
schemaVersion: 1,
|
|
179873
180431
|
interpretation: "authored-evidence-not-evaluated-access",
|
|
179874
180432
|
ordering: "source-array-order",
|
|
179875
180433
|
appSettings: raw.settings,
|
|
179876
|
-
navigation: { entries: navigation, settings:
|
|
180434
|
+
navigation: { entries: navigation, settings: object7(raw.navigation).settings, firstAuthoredScreenId: string5(object7(bottomTabs[0]).screenId) },
|
|
179877
180435
|
screens: screenGraph,
|
|
179878
180436
|
detachedLayouts,
|
|
179879
180437
|
businessProfile: { settings: profile.settings, placements: profilePlacements },
|
|
179880
180438
|
screenOverrides: overrides,
|
|
179881
180439
|
sections: Object.fromEntries(Object.entries(sections).filter(([id]) => usedSections.has(id))),
|
|
180440
|
+
// No reviewed placements means no output change for an unrelated migration.
|
|
180441
|
+
...Object.keys(usedSectionVisibility).length ? { sectionVisibility: usedSectionVisibility } : {},
|
|
179882
180442
|
interactions,
|
|
179883
180443
|
layoutAliases: Object.fromEntries(layoutAliases),
|
|
179884
180444
|
unreferencedScreenIds: Object.keys(screens).filter((id) => !incoming.has(id)),
|
|
@@ -179887,17 +180447,18 @@ function buildSourceGraph(raw, enriched = {}) {
|
|
|
179887
180447
|
next: "Interpret source settings, definition CTAs, top bars and runtime conditions with himi docs one-app-to-himi-app. This graph indexes basic actions; it does not claim complete business-journey coverage."
|
|
179888
180448
|
};
|
|
179889
180449
|
}
|
|
179890
|
-
var
|
|
180450
|
+
var object7, array3, string5, part, own5, sectionType;
|
|
179891
180451
|
var init_graph = __esm({
|
|
179892
180452
|
"src/one-app/graph.ts"() {
|
|
179893
180453
|
init_define_HHP_CATALOG();
|
|
179894
|
-
|
|
180454
|
+
init_one_app_visibility();
|
|
180455
|
+
object7 = (value2) => value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
|
|
179895
180456
|
array3 = (value2) => Array.isArray(value2) ? value2 : [];
|
|
179896
180457
|
string5 = (value2) => typeof value2 === "string" ? value2 : void 0;
|
|
179897
180458
|
part = (value2) => value2.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
179898
180459
|
own5 = (value2, key3) => Object.hasOwn(value2, key3);
|
|
179899
180460
|
sectionType = (value2) => {
|
|
179900
|
-
const section3 =
|
|
180461
|
+
const section3 = object7(value2);
|
|
179901
180462
|
return string5(section3.sectionDefinitionId ?? section3.section_definition_id);
|
|
179902
180463
|
};
|
|
179903
180464
|
}
|
|
@@ -180026,12 +180587,12 @@ function nativeWidgetObligations(sectionDefinitionId) {
|
|
|
180026
180587
|
}
|
|
180027
180588
|
function nativeWidgetSettingObligations(sectionDefinitionId, settings) {
|
|
180028
180589
|
if (!sectionDefinitionId || !BLOG_LIST_SECTIONS.has(sectionDefinitionId)) return [];
|
|
180029
|
-
const root =
|
|
180590
|
+
const root = object8(settings);
|
|
180030
180591
|
const out2 = [];
|
|
180031
|
-
const display =
|
|
180592
|
+
const display = object8(root.displayOptions);
|
|
180032
180593
|
const shown2 = BLOG_ROW_OPTIONS.filter(([key3]) => display[key3] === true).map(([, label3]) => label3);
|
|
180033
180594
|
if (shown2.length) out2.push(`Post rows show exactly the authored display options (${shown2.join(", ")}); a generated row that drops one is a gap`);
|
|
180034
|
-
const content =
|
|
180595
|
+
const content = object8(root.contentSettings);
|
|
180035
180596
|
const category = typeof content.categoryId === "string" && content.categoryId.trim() ? `category ${content.categoryId.trim()}` : "all categories";
|
|
180036
180597
|
const scope2 = `${category}, ${content.featuredOnly === true ? "featured posts only" : "all posts"}`;
|
|
180037
180598
|
const limit = content.postsPerCategory;
|
|
@@ -180042,7 +180603,7 @@ function nativeWidgetSettingObligations(sectionDefinitionId, settings) {
|
|
|
180042
180603
|
if (typeof root.postsLayout === "string" && root.postsLayout) out2.push(`Post list layout "${root.postsLayout}": thumbnail side and row density match the source on device`);
|
|
180043
180604
|
return out2;
|
|
180044
180605
|
}
|
|
180045
|
-
var bookings, groupFeed, programs, contact, members, blogList, NATIVE_WIDGET_DEFAULTS, BLOG_LIST_SECTIONS, BLOG_ROW_OPTIONS,
|
|
180606
|
+
var bookings, groupFeed, programs, contact, members, blogList, NATIVE_WIDGET_DEFAULTS, BLOG_LIST_SECTIONS, BLOG_ROW_OPTIONS, object8;
|
|
180046
180607
|
var init_native_defaults = __esm({
|
|
180047
180608
|
"src/one-app/native-defaults.ts"() {
|
|
180048
180609
|
init_define_HHP_CATALOG();
|
|
@@ -180080,7 +180641,15 @@ var init_native_defaults = __esm({
|
|
|
180080
180641
|
newBlog_compact_post_list_vertical_section: blogList,
|
|
180081
180642
|
events_list_section: ["Date badge", "Share event", "RSVP or ticket action appropriate to the event and visitor state"],
|
|
180082
180643
|
platform_general_members_section: members,
|
|
180083
|
-
platform_general_members_section_bp: members
|
|
180644
|
+
platform_general_members_section_bp: members,
|
|
180645
|
+
file_share_section: ["Signed-in-only visibility; preserve file/folder access and the View All action (media.openFileShareListScreen)"],
|
|
180646
|
+
events_guests_section: ["Signed-in-only event-scoped guest list; preserve event selector, guest privacy and display settings"],
|
|
180647
|
+
events_discussion_section: ["Signed-in-only event-scoped discussion; preserve event selector, discussion settings and actions"],
|
|
180648
|
+
performance_tracker_section: ["Signed-in-only performance tracker; preserve member data, settings and wix.bookings.performanceTrackerCTA"],
|
|
180649
|
+
achievements_participant_carousel_section: ["Signed-in-only participating-programs carousel; preserve member progress, selection/settings, default limit 5 and ParticipantChallengesScreen CTA"],
|
|
180650
|
+
memberships_packages_section: ["Signed-in-only memberships/packages; preserve plan orders, package balances/session credits, source settings and MyMemberships CTA"],
|
|
180651
|
+
upcoming_bookings_section: ["Signed-in-only upcoming bookings; preserve upcoming-only selection, source settings, limit and ActivityFeedCards CTA"],
|
|
180652
|
+
loyalty_status_section: ["Signed-in-only member loyalty status; preserve points, tier/status and authored display settings; a rewards catalog is not status"]
|
|
180084
180653
|
};
|
|
180085
180654
|
BLOG_LIST_SECTIONS = /* @__PURE__ */ new Set(["newBlog_postlist_vertical_section", "newBlog_compact_post_list_vertical_section"]);
|
|
180086
180655
|
BLOG_ROW_OPTIONS = [
|
|
@@ -180092,7 +180661,7 @@ var init_native_defaults = __esm({
|
|
|
180092
180661
|
["reading_time", "reading time"],
|
|
180093
180662
|
["cover_image", "cover image"]
|
|
180094
180663
|
];
|
|
180095
|
-
|
|
180664
|
+
object8 = (value2) => value2 && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
|
|
180096
180665
|
}
|
|
180097
180666
|
});
|
|
180098
180667
|
|
|
@@ -180102,6 +180671,7 @@ __export(coverage_exports2, {
|
|
|
180102
180671
|
COVERAGE_FILE: () => COVERAGE_FILE,
|
|
180103
180672
|
NATIVE_PROOF_FILE: () => NATIVE_PROOF_FILE,
|
|
180104
180673
|
REQUIRED_CHECK: () => REQUIRED_CHECK,
|
|
180674
|
+
SECTION_VISIBILITY_STATES: () => SECTION_VISIBILITY_STATES,
|
|
180105
180675
|
deriveRequirements: () => deriveRequirements,
|
|
180106
180676
|
requirementId: () => requirementId,
|
|
180107
180677
|
syncCoverage: () => syncCoverage,
|
|
@@ -180112,6 +180682,17 @@ __export(coverage_exports2, {
|
|
|
180112
180682
|
import { createHash as createHash40 } from "node:crypto";
|
|
180113
180683
|
import { existsSync as existsSync87, readFileSync as readFileSync99, writeFileSync as writeFileSync39 } from "node:fs";
|
|
180114
180684
|
import { isAbsolute as isAbsolute9, join as join91, resolve as resolve68 } from "node:path";
|
|
180685
|
+
function sectionVisibilityProof(record3, contentDir2) {
|
|
180686
|
+
const proof = obj4(record3.sectionVisibility);
|
|
180687
|
+
const states = obj4(proof.states), report4 = obj4(proof.testReport);
|
|
180688
|
+
const path2 = report4.path;
|
|
180689
|
+
if (proof.kind !== "automated" || typeof proof.command !== "string" || !proof.command.trim() || proof.hiddenMemberReads !== 0 || !Object.entries(SECTION_VISIBILITY_STATES).every(([key3, value2]) => states[key3] === value2) || typeof path2 !== "string" || !path2.trim() || isAbsolute9(path2) || path2.split(/[\\/]/).includes("..") || typeof report4.sha256 !== "string" || !/^[a-f0-9]{64}$/.test(report4.sha256)) return false;
|
|
180690
|
+
try {
|
|
180691
|
+
return sha(readFileSync99(join91(resolve68(contentDir2), path2))) === report4.sha256;
|
|
180692
|
+
} catch {
|
|
180693
|
+
return false;
|
|
180694
|
+
}
|
|
180695
|
+
}
|
|
180115
180696
|
function verifiedEvidence(evidenceDir) {
|
|
180116
180697
|
const manifest2 = obj4(JSON.parse(readFileSync99(join91(evidenceDir, "manifest.json"), "utf8")));
|
|
180117
180698
|
if (manifest2.workflow !== "one-app-to-himi-app" || manifest2.stage !== "collected") throw Error("One App evidence is not collected.");
|
|
@@ -180147,6 +180728,17 @@ function deriveRequirements(evidenceDir) {
|
|
|
180147
180728
|
};
|
|
180148
180729
|
const placement = (entry) => {
|
|
180149
180730
|
add("placement", entry.context, `Section ${entry.sectionDefinitionId ?? entry.sectionId}`, void 0, `${entry.sectionId}:${entry.sectionDefinitionId ?? "unknown"}`);
|
|
180731
|
+
const visibility = graph.sectionVisibility?.[entry.sectionId];
|
|
180732
|
+
if (visibility) {
|
|
180733
|
+
const row2 = add(
|
|
180734
|
+
"access",
|
|
180735
|
+
`${entry.context}/sectionVisibility`,
|
|
180736
|
+
`Section ${entry.sectionDefinitionId ?? entry.sectionId} visibility: ${visibility.authentication}; preserve experiments and other permissions; verify visitor \u2192 sign-in \u2192 sign-out, failed/cancelled login and restored sessions; no hidden member reads`,
|
|
180737
|
+
void 0,
|
|
180738
|
+
JSON.stringify({ sectionId: entry.sectionId, sectionDefinitionId: entry.sectionDefinitionId, visibility })
|
|
180739
|
+
);
|
|
180740
|
+
row2.sectionVisibility = visibility;
|
|
180741
|
+
}
|
|
180150
180742
|
const settings = obj4(obj4(obj4(graph.sections)[entry.sectionId]).settings);
|
|
180151
180743
|
for (const behavior of [...nativeWidgetObligations(entry.sectionDefinitionId), ...nativeWidgetSettingObligations(entry.sectionDefinitionId, settings)]) {
|
|
180152
180744
|
add(
|
|
@@ -180362,6 +180954,8 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
|
|
|
180362
180954
|
if (result.hashesChanged) issues.push({ message: "Saved source hashes differ from the collected evidence." });
|
|
180363
180955
|
const saved = result.existed ? obj4(JSON.parse(readFileSync99(join91(resolve68(contentDir2), COVERAGE_FILE), "utf8"))) : {};
|
|
180364
180956
|
const rows = Array.isArray(saved.requirements) ? saved.requirements.map(obj4) : [];
|
|
180957
|
+
const memberSectionIds = new Set(result.coverage.requirements.filter((row2) => row2.sectionVisibility?.authentication === "signed-in-only").map((row2) => row2.id));
|
|
180958
|
+
const unresolvedSectionIds = new Set(result.coverage.requirements.filter((row2) => row2.sectionVisibility?.authentication === "unresolved").map((row2) => row2.id));
|
|
180365
180959
|
const contentManifest = join91(resolve68(contentDir2), "himalaya.content.json");
|
|
180366
180960
|
const declaredScreens = existsSync87(contentManifest) ? obj4(obj4(JSON.parse(readFileSync99(contentManifest, "utf8"))).screens) : void 0;
|
|
180367
180961
|
const availableScreens = builtScreenIds ? new Set(builtScreenIds) : declaredScreens && Object.keys(declaredScreens).length ? new Set(Object.keys(declaredScreens)) : void 0;
|
|
@@ -180372,6 +180966,9 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
|
|
|
180372
180966
|
issues.push({ id, message: "Invalid requirement identity or kind." });
|
|
180373
180967
|
continue;
|
|
180374
180968
|
}
|
|
180969
|
+
if (unresolvedSectionIds.has(id)) {
|
|
180970
|
+
issues.push({ id, message: "Section visibility source definition is unresolved; a supported status or generic check cannot establish its access rule." });
|
|
180971
|
+
}
|
|
180375
180972
|
const status = row2.status;
|
|
180376
180973
|
if (status !== "supported" && status !== "adapted" && status !== "conditional") {
|
|
180377
180974
|
issues.push({ id, message: "Requirement is unresolved or has no status." });
|
|
@@ -180411,6 +181008,9 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
|
|
|
180411
181008
|
if (!record3 || record3.status !== "passed") {
|
|
180412
181009
|
issues.push({ id, message: `Check ${required3} has no latest passed record for this requirement and target.` });
|
|
180413
181010
|
} else {
|
|
181011
|
+
if (memberSectionIds.has(id) && !sectionVisibilityProof(record3, contentDir2)) {
|
|
181012
|
+
issues.push({ id, message: "Member-only section visibility needs deterministic automated transition assertions, zero hidden member reads and a hashed test report." });
|
|
181013
|
+
}
|
|
180414
181014
|
const artifact = record3.artifact;
|
|
180415
181015
|
if (typeof artifact !== "string" || !artifact.trim() || isAbsolute9(artifact) || artifact.split(/[\\/]/).includes("..") || !existsSync87(join91(resolve68(contentDir2), artifact))) {
|
|
180416
181016
|
issues.push({ id, message: `Check ${required3} needs a reviewable artifact file.` });
|
|
@@ -180438,13 +181038,23 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
|
|
|
180438
181038
|
}
|
|
180439
181039
|
return { ok: issues.length === 0, count: rows.length, requirementIds: rows.map((row2) => String(row2.id ?? "")), issues };
|
|
180440
181040
|
}
|
|
180441
|
-
var obj4, sha, REQUIRED_CHECK, COVERAGE_FILE, NATIVE_PROOF_FILE;
|
|
181041
|
+
var SECTION_VISIBILITY_STATES, obj4, sha, REQUIRED_CHECK, COVERAGE_FILE, NATIVE_PROOF_FILE;
|
|
180442
181042
|
var init_coverage2 = __esm({
|
|
180443
181043
|
"src/one-app/coverage.ts"() {
|
|
180444
181044
|
init_define_HHP_CATALOG();
|
|
180445
181045
|
init_graph();
|
|
180446
181046
|
init_design_rules();
|
|
180447
181047
|
init_native_defaults();
|
|
181048
|
+
SECTION_VISIBILITY_STATES = {
|
|
181049
|
+
unresolved: "hidden",
|
|
181050
|
+
visitor: "hidden",
|
|
181051
|
+
signedIn: "visible",
|
|
181052
|
+
signedOut: "hidden",
|
|
181053
|
+
cancelled: "hidden",
|
|
181054
|
+
failed: "hidden",
|
|
181055
|
+
restored: "visible",
|
|
181056
|
+
otherRestricted: "hidden"
|
|
181057
|
+
};
|
|
180448
181058
|
obj4 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
|
|
180449
181059
|
sha = (v2) => createHash40("sha256").update(v2).digest("hex");
|
|
180450
181060
|
REQUIRED_CHECK = {
|
|
@@ -180679,7 +181289,7 @@ function isBadgeWorkerUrl(url) {
|
|
|
180679
181289
|
const name = (url ?? "").split("/").filter(Boolean).pop() ?? "";
|
|
180680
181290
|
return NAV_WORKER_BUNDLES.includes(name);
|
|
180681
181291
|
}
|
|
180682
|
-
function
|
|
181292
|
+
function object9(value2) {
|
|
180683
181293
|
return value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : void 0;
|
|
180684
181294
|
}
|
|
180685
181295
|
function planHeaderBadges(raw, views) {
|
|
@@ -180689,7 +181299,7 @@ function planHeaderBadges(raw, views) {
|
|
|
180689
181299
|
for (const screen of graph.screens) {
|
|
180690
181300
|
const visit = (buttons, platform, side2) => {
|
|
180691
181301
|
for (const [index, button] of buttons.entries()) {
|
|
180692
|
-
const definition =
|
|
181302
|
+
const definition = object9(button.definition);
|
|
180693
181303
|
const hasBadge = [definition?.badgeObserverId, definition?.badgeListenerId].some((value2) => typeof value2 === "string" && value2.trim());
|
|
180694
181304
|
if (!hasBadge) continue;
|
|
180695
181305
|
const words = `${button.id ?? ""} ${definition?.iconId ?? ""} ${definition?.accessibilityLabel ?? ""}`.toLowerCase();
|
|
@@ -180742,8 +181352,8 @@ function headerBadgesBundleRef() {
|
|
|
180742
181352
|
function propName5(node) {
|
|
180743
181353
|
return ts11.isIdentifier(node) || ts11.isStringLiteral(node) ? node.text : void 0;
|
|
180744
181354
|
}
|
|
180745
|
-
function findProperty(
|
|
180746
|
-
return
|
|
181355
|
+
function findProperty(object15, name) {
|
|
181356
|
+
return object15.properties.find((property2) => ts11.isPropertyAssignment(property2) && propName5(property2.name) === name);
|
|
180747
181357
|
}
|
|
180748
181358
|
function appObject(source) {
|
|
180749
181359
|
const exported = source.statements.find(ts11.isExportAssignment);
|
|
@@ -180842,7 +181452,7 @@ function enrichedControls(raw, views) {
|
|
|
180842
181452
|
badges.set(screen.screenId, badgeButtons);
|
|
180843
181453
|
const addButtons = (buttons, side2, platform) => {
|
|
180844
181454
|
for (const [index, button] of buttons.entries()) {
|
|
180845
|
-
const definition =
|
|
181455
|
+
const definition = object10(button.definition);
|
|
180846
181456
|
const id = `${button.id ?? ""} ${definition?.iconId ?? ""} ${definition?.accessibilityLabel ?? ""}`.toLowerCase();
|
|
180847
181457
|
let recognized = false;
|
|
180848
181458
|
const matched = /* @__PURE__ */ new Set();
|
|
@@ -180882,11 +181492,11 @@ function enrichedControls(raw, views) {
|
|
|
180882
181492
|
}
|
|
180883
181493
|
return { controls: result, badges };
|
|
180884
181494
|
}
|
|
180885
|
-
function
|
|
181495
|
+
function object10(value2) {
|
|
180886
181496
|
return value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : void 0;
|
|
180887
181497
|
}
|
|
180888
181498
|
function readJson7(path2) {
|
|
180889
|
-
return
|
|
181499
|
+
return object10(JSON.parse(readFileSync102(path2, "utf8"))) ?? {};
|
|
180890
181500
|
}
|
|
180891
181501
|
function parseArgs(args) {
|
|
180892
181502
|
let evidenceDir;
|
|
@@ -180914,8 +181524,8 @@ function parseArgs(args) {
|
|
|
180914
181524
|
return { evidenceDir: resolve70(evidenceDir), contentDir: resolve70(contentDir2), json: json9 };
|
|
180915
181525
|
}
|
|
180916
181526
|
function authoredControls(raw) {
|
|
180917
|
-
const screens =
|
|
180918
|
-
const headers2 =
|
|
181527
|
+
const screens = object10(raw.screens);
|
|
181528
|
+
const headers2 = object10(raw.headers) ?? {};
|
|
180919
181529
|
if (!screens || !Object.keys(screens).length) {
|
|
180920
181530
|
return { controls: /* @__PURE__ */ new Set(), byScreen: /* @__PURE__ */ new Map(), inviteDisabled: /* @__PURE__ */ new Set(), screens: 0, error: "raw-structure.json is missing authored screens." };
|
|
180921
181531
|
}
|
|
@@ -180924,16 +181534,16 @@ function authoredControls(raw) {
|
|
|
180924
181534
|
const inviteDisabled = /* @__PURE__ */ new Set();
|
|
180925
181535
|
let count2 = 0;
|
|
180926
181536
|
for (const [screenId, rawScreen] of Object.entries(screens)) {
|
|
180927
|
-
const screen =
|
|
181537
|
+
const screen = object10(rawScreen);
|
|
180928
181538
|
const headerId = typeof screen?.headerId === "string" ? screen.headerId : void 0;
|
|
180929
181539
|
const screenControls = /* @__PURE__ */ new Set();
|
|
180930
181540
|
byScreen.set(screenId, screenControls);
|
|
180931
181541
|
if (!headerId) continue;
|
|
180932
181542
|
count2++;
|
|
180933
|
-
const header =
|
|
181543
|
+
const header = object10(headers2[headerId]);
|
|
180934
181544
|
if (!header) return { controls, byScreen, inviteDisabled, screens: count2, error: `Authored header ${headerId} is missing for screen ${screenId}.` };
|
|
180935
|
-
const settings =
|
|
180936
|
-
const topBarSettings =
|
|
181545
|
+
const settings = object10(header?.settings) ?? header;
|
|
181546
|
+
const topBarSettings = object10(settings?.topBarSettings);
|
|
180937
181547
|
const choice = (modern, legacy) => {
|
|
180938
181548
|
const current = topBarSettings?.[modern];
|
|
180939
181549
|
if (current !== void 0) return typeof current === "boolean" ? current : void 0;
|
|
@@ -181069,8 +181679,8 @@ function itemTokens(topBar, source) {
|
|
|
181069
181679
|
const out2 = /* @__PURE__ */ new Set();
|
|
181070
181680
|
if (!list2 || !ts12.isArrayLiteralExpression(list2)) return out2;
|
|
181071
181681
|
for (const item of list2.elements) {
|
|
181072
|
-
const
|
|
181073
|
-
if (
|
|
181682
|
+
const object15 = ts12.isExpression(item) ? resolveObject(item, source) : void 0;
|
|
181683
|
+
if (object15) for (const token of actionTokens(object15)) out2.add(token);
|
|
181074
181684
|
}
|
|
181075
181685
|
return out2;
|
|
181076
181686
|
}
|
|
@@ -181204,13 +181814,13 @@ function readVerifiedEvidence(evidenceDir) {
|
|
|
181204
181814
|
const manifest2 = readJson7(join94(evidenceDir, "manifest.json"));
|
|
181205
181815
|
if (manifest2.workflow !== "one-app-to-himi-app") throw new Error("manifest.json is not for the one-app-to-himi-app workflow.");
|
|
181206
181816
|
if (manifest2.stage !== "collected") throw new Error('manifest.json must have stage "collected".');
|
|
181207
|
-
const unavailable = (Array.isArray(manifest2.warnings) ? manifest2.warnings : []).map(
|
|
181817
|
+
const unavailable = (Array.isArray(manifest2.warnings) ? manifest2.warnings : []).map(object10).filter((warning) => warning?.code === "runtime_context_unavailable" && (warning.platform === "ios" || warning.platform === "android"));
|
|
181208
181818
|
if (unavailable.length) {
|
|
181209
181819
|
throw new Error(`Platform top-bar behavior is unverified: ${unavailable.map((warning) => warning.platform).join(", ")} runtime context unavailable.`);
|
|
181210
181820
|
}
|
|
181211
181821
|
const rawPath = join94(evidenceDir, "raw-structure.json");
|
|
181212
181822
|
const rawBytes = readFileSync102(rawPath);
|
|
181213
|
-
const expectedHash =
|
|
181823
|
+
const expectedHash = object10(manifest2.sha256)?.["raw-structure.json"];
|
|
181214
181824
|
if (typeof expectedHash !== "string" || !/^[a-f0-9]{64}$/i.test(expectedHash)) {
|
|
181215
181825
|
throw new Error("manifest.json is missing a valid raw-structure.json hash.");
|
|
181216
181826
|
}
|
|
@@ -181221,7 +181831,7 @@ function readVerifiedEvidence(evidenceDir) {
|
|
|
181221
181831
|
const views = {};
|
|
181222
181832
|
for (const platform of ["ios", "android"]) {
|
|
181223
181833
|
const name = `enriched-${platform}.json`;
|
|
181224
|
-
const hash3 =
|
|
181834
|
+
const hash3 = object10(manifest2.sha256)?.[name];
|
|
181225
181835
|
if (hash3 === void 0) continue;
|
|
181226
181836
|
if (typeof hash3 !== "string" || !/^[a-f0-9]{64}$/i.test(hash3)) throw new Error(`Invalid ${name} hash.`);
|
|
181227
181837
|
const bytes2 = readFileSync102(join94(evidenceDir, name));
|
|
@@ -181286,15 +181896,15 @@ function validate3(evidenceDir, contentDir2) {
|
|
|
181286
181896
|
try {
|
|
181287
181897
|
const coverage = readJson7(coveragePath);
|
|
181288
181898
|
for (const row2 of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
|
|
181289
|
-
const entry =
|
|
181899
|
+
const entry = object10(row2) ?? {};
|
|
181290
181900
|
const badge = typeof entry.id === "string" ? badgeDefinitions.get(entry.id) : void 0;
|
|
181291
|
-
const destination =
|
|
181901
|
+
const destination = object10(entry.target);
|
|
181292
181902
|
if (entry.kind === "top-bar" && badge && entry.source === badge.source && entry.platform === badge.platform && typeof destination?.screenId === "string" && destination.screenId.trim() && typeof destination.controlId === "string" && destination.controlId.trim()) {
|
|
181293
181903
|
badgeTargets.set(badge.requirementId, { screenId: destination.screenId, controlId: destination.controlId });
|
|
181294
181904
|
}
|
|
181295
181905
|
if (entry.kind !== "route" || typeof entry.source !== "string" || !/^\/screens\/[^/]+$/.test(entry.source)) continue;
|
|
181296
181906
|
const screenId = entry.source.slice(9).replaceAll("~1", "/").replaceAll("~0", "~");
|
|
181297
|
-
const targetScreen =
|
|
181907
|
+
const targetScreen = object10(entry.target)?.screenId;
|
|
181298
181908
|
if (typeof targetScreen === "string" && targetScreen) mappings.set(screenId, targetScreen);
|
|
181299
181909
|
}
|
|
181300
181910
|
} catch (error) {
|
|
@@ -184970,46 +185580,46 @@ var init_preview_assets_generated = __esm({
|
|
|
184970
185580
|
init_define_HHP_CATALOG();
|
|
184971
185581
|
init_preview_assets_format();
|
|
184972
185582
|
PREVIEW_ASSET_MANIFEST = [
|
|
184973
|
-
{ key: "assets/DashboardHost-
|
|
184974
|
-
{ key: "assets/DevDrawer-
|
|
184975
|
-
{ key: "assets/IdiomCompare-
|
|
184976
|
-
{ key: "assets/LightboxViewer-
|
|
184977
|
-
{ key: "assets/OfflineReadingBar-
|
|
184978
|
-
{ key: "assets/PhonePreviewControl-
|
|
184979
|
-
{ key: "assets/SchemeCompare-
|
|
184980
|
-
{ key: "assets/WixFrogTelemetrySink-
|
|
185583
|
+
{ key: "assets/DashboardHost-Bub_QE7K.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "d497906fe33e2552a60fb4bb23cf21f6f4afeff265fb83002bcfb46314cbe819" },
|
|
185584
|
+
{ key: "assets/DevDrawer-o5QbggjK.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "07623e7279d3dc709674777c556d5a9093a102a5097898007bb3b28fa50eec94" },
|
|
185585
|
+
{ key: "assets/IdiomCompare-Bsv5Or-x.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "871113ec4773a5dc68e3b4fbc9e6ff46d4a593729655823a220d75aa692ee8b2" },
|
|
185586
|
+
{ key: "assets/LightboxViewer-BOS3Ifbo.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "b167db1eff3e134f838b5c919f109fe3fbe5e790e61e1899e3065a35c76b07e9" },
|
|
185587
|
+
{ key: "assets/OfflineReadingBar-CI8cuY_-.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "e7c1c32f218ec674827579c40d5d123d6651efd5b1ba35c5f4bf27e1cc622f25" },
|
|
185588
|
+
{ key: "assets/PhonePreviewControl-BRkX4YEr.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37851, sha256: "c7e6d4a6eca09e93d4832203ef71b36ae02b1f0a0b4281afac8dbc0a122fb9dd" },
|
|
185589
|
+
{ key: "assets/SchemeCompare-CJX24Kd_.js", contentType: "application/javascript; charset=utf-8", offset: 69417, length: 1858, sha256: "51be6ee0a840ac8afbfa6da978c04441d899ceffccda12eb86cf72b234d4c194" },
|
|
185590
|
+
{ key: "assets/WixFrogTelemetrySink-kv9vvuRJ.js", contentType: "application/javascript; charset=utf-8", offset: 71275, length: 3165, sha256: "9fdcc47b4120ecd65260a91f158ef1b2593b2cf9e15b6f92362a206c113bce50" },
|
|
184981
185591
|
{ key: "assets/calendar-ics-BvfIYWjG.js", contentType: "application/javascript; charset=utf-8", offset: 74440, length: 2192, sha256: "1636167041e9829ceccd3544297b86b8475c38bd2f759c4dbc17c813dc6e9254" },
|
|
184982
185592
|
{ key: "assets/catalog-CAoUWITw.js", contentType: "application/javascript; charset=utf-8", offset: 76632, length: 26046, sha256: "4c270ca3051f77d761aef1297125e02339d48493dd2b84a0cacf0faf41aa8cb3" },
|
|
184983
|
-
{ key: "assets/catalogFontFaces-
|
|
184984
|
-
{ key: "assets/files-transfer-
|
|
185593
|
+
{ key: "assets/catalogFontFaces-Chz9pfUq.js", contentType: "application/javascript; charset=utf-8", offset: 102678, length: 1111, sha256: "23367aac710fa244159da3d71e2a022230f0b452bab9815aa88faad6376e7e20" },
|
|
185594
|
+
{ key: "assets/files-transfer-Bb0VLayU.js", contentType: "application/javascript; charset=utf-8", offset: 103789, length: 6446, sha256: "52cf1ca122cc955d5b1c2bfb202a29b02e2c5e370cfd082fd6cba2cd2da73e0e" },
|
|
184985
185595
|
{ key: "assets/glassPreviewBrowser-DONaOehd.js", contentType: "application/javascript; charset=utf-8", offset: 110235, length: 6578, sha256: "4402c4cddd2a564e7466cdf1e12a0e0277c0400b288e1e5eda1d23e797599d31" },
|
|
184986
185596
|
{ key: "assets/image-preparation-Cj4gldm6.js", contentType: "application/javascript; charset=utf-8", offset: 116813, length: 2704, sha256: "32944ea587c2f3b84389b66b50a850437560238f1c8d33b6275973ee04eee865" },
|
|
184987
|
-
{ key: "assets/index-
|
|
184988
|
-
{ key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
184989
|
-
{ key: "assets/pdf-
|
|
184990
|
-
{ key: "assets/pdf.worker.min-BGnVRhRG.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
184991
|
-
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset:
|
|
184992
|
-
{ key: "assets/pdfDocument-
|
|
184993
|
-
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
184994
|
-
{ key: "assets/webviewBridgeHost-
|
|
184995
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
184996
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
184997
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
184998
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
184999
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
185000
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
185001
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
185002
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
185003
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
185004
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
185005
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
185006
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
185007
|
-
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
185008
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
185009
|
-
{ key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset:
|
|
185010
|
-
{ key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset:
|
|
185011
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
185012
|
-
{ key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
185597
|
+
{ key: "assets/index-BZkAPpdD.js", contentType: "application/javascript; charset=utf-8", offset: 119517, length: 1513407, sha256: "34552fa052e5b62073d6311dd64efc184e6bb88c3e6f5ba87f9ed0d3be16dcfc" },
|
|
185598
|
+
{ key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1632924, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
|
|
185599
|
+
{ key: "assets/pdf-lJy5xbZO.js", contentType: "application/javascript; charset=utf-8", offset: 1640548, length: 488215, sha256: "375f88fac226b68a7989752ae84b8052c3e08ed0b27ab745cddc1da628527edb" },
|
|
185600
|
+
{ key: "assets/pdf.worker.min-BGnVRhRG.js", contentType: "application/javascript; charset=utf-8", offset: 2128763, length: 90, sha256: "521a0e528916d678d7588b2cddf3dadd3bb959a6d62426382f61c77a82017e35" },
|
|
185601
|
+
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 2128853, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
|
|
185602
|
+
{ key: "assets/pdfDocument-BMBxWNC0.js", contentType: "application/javascript; charset=utf-8", offset: 3445887, length: 3470, sha256: "7035f6e4b3ed1cba1df616f97650b82b0f33bc1054682cafd2140bc4eceb8f4f" },
|
|
185603
|
+
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3449357, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
|
|
185604
|
+
{ key: "assets/webviewBridgeHost-Cq4rUBlZ.js", contentType: "application/javascript; charset=utf-8", offset: 3451623, length: 9888, sha256: "89a3cb4b9723c69be4a5f40f33dbaae5898ebcadb5d27f8f18e9cc53cd1d4e8f" },
|
|
185605
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3461511, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
185606
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3466121, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
185607
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3954705, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
185608
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 4045629, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
185609
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 4136613, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
185610
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4227593, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
185611
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4318465, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
185612
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4409445, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
185613
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4518081, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
185614
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4627165, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
185615
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4736213, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
185616
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4843913, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
185617
|
+
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4932021, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
|
|
185618
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 4938839, length: 4924, sha256: "6643e87006b2fe4e0ae2eb2475d124e6af2c6fd12fc4b75cb1ba322d48c84774" },
|
|
185619
|
+
{ key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4943763, length: 11457, sha256: "6cb2b75264fa5fa2b4d28851878a5eab0712900e8b3a6c2370cc661d6d820805" },
|
|
185620
|
+
{ key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4955220, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
|
|
185621
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4956391, length: 23047, sha256: "20d1459e3f896f344e478e613d0c979a0de02e81a929a45d3a0ef6a53af36441" },
|
|
185622
|
+
{ key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4979438, length: 23064, sha256: "8655cfe9c74212ec5dafecb49d2fdeb48b19f1bd8a710091e3e55631f9b4ab06" }
|
|
185013
185623
|
];
|
|
185014
185624
|
}
|
|
185015
185625
|
});
|
|
@@ -188877,21 +189487,21 @@ function fixedPriceRoute(item, currency) {
|
|
|
188877
189487
|
return typeof amount === "string" && /^\d+(?:\.\d+)?$/.test(amount) && Number.isFinite(Number(amount)) && Number(amount) > 0 && /^[A-Z]{3}$/.test(currency) && item.currency === currency ? "appleIap" : "decide";
|
|
188878
189488
|
}
|
|
188879
189489
|
function bookingAttendanceOf(raw) {
|
|
188880
|
-
const s2 =
|
|
188881
|
-
const payment =
|
|
188882
|
-
const fixed =
|
|
188883
|
-
const price =
|
|
188884
|
-
const options =
|
|
188885
|
-
const policy =
|
|
189490
|
+
const s2 = object11(raw);
|
|
189491
|
+
const payment = object11(s2.payment);
|
|
189492
|
+
const fixed = object11(payment.fixed);
|
|
189493
|
+
const price = object11(fixed.price);
|
|
189494
|
+
const options = object11(payment.options);
|
|
189495
|
+
const policy = object11(object11(s2.bookingPolicy).participantsPolicy);
|
|
188886
189496
|
return {
|
|
188887
189497
|
kind: "bookingsService",
|
|
188888
189498
|
type: text10(s2.type),
|
|
188889
189499
|
capacity: numeric(s2.defaultCapacity),
|
|
188890
189500
|
maxParticipantsPerBooking: policy.enabled === true ? numeric(policy.maxParticipantsPerBooking) : void 0,
|
|
188891
189501
|
hidden: boolean3(s2.hidden),
|
|
188892
|
-
conferencing: boolean3(
|
|
189502
|
+
conferencing: boolean3(object11(s2.conferencing).enabled),
|
|
188893
189503
|
locations: Array.isArray(s2.locations) ? s2.locations.map(locationType) : void 0,
|
|
188894
|
-
onlineBooking: boolean3(
|
|
189504
|
+
onlineBooking: boolean3(object11(s2.onlineBooking).enabled),
|
|
188895
189505
|
onlinePayment: boolean3(options.online),
|
|
188896
189506
|
deposit: options.deposit === true || fixed.deposit !== void 0,
|
|
188897
189507
|
priceType: text10(payment.rateType),
|
|
@@ -188900,9 +189510,9 @@ function bookingAttendanceOf(raw) {
|
|
|
188900
189510
|
};
|
|
188901
189511
|
}
|
|
188902
189512
|
function locationType(raw) {
|
|
188903
|
-
const location =
|
|
189513
|
+
const location = object11(raw);
|
|
188904
189514
|
const type2 = text10(location.type) ?? "UNKNOWN";
|
|
188905
|
-
const addresses = [
|
|
189515
|
+
const addresses = [object11(location.custom).address, location.calculatedAddress].map(object11);
|
|
188906
189516
|
return type2 === "CUSTOM" && addresses.every(describesNoPlace) ? ADDRESSLESS_CUSTOM : type2;
|
|
188907
189517
|
}
|
|
188908
189518
|
function describesNoPlace(address) {
|
|
@@ -188915,16 +189525,16 @@ function describesNoPlace(address) {
|
|
|
188915
189525
|
});
|
|
188916
189526
|
}
|
|
188917
189527
|
function ticketAttendanceOf(event, definition) {
|
|
188918
|
-
const e2 =
|
|
188919
|
-
const t2 =
|
|
188920
|
-
const pricing =
|
|
188921
|
-
const price =
|
|
188922
|
-
const registration =
|
|
189528
|
+
const e2 = object11(event);
|
|
189529
|
+
const t2 = object11(definition);
|
|
189530
|
+
const pricing = object11(t2.pricingMethod);
|
|
189531
|
+
const price = object11(pricing.fixedPrice);
|
|
189532
|
+
const registration = object11(e2.registration);
|
|
188923
189533
|
const type2 = text10(registration.type) ?? text10(registration.initialType) ?? text10(e2.eventType);
|
|
188924
189534
|
const status = text10(e2.status) ?? text10(e2.eventStatus);
|
|
188925
189535
|
return {
|
|
188926
189536
|
kind: "eventsTicket",
|
|
188927
|
-
location: text10(
|
|
189537
|
+
location: text10(object11(e2.location).type),
|
|
188928
189538
|
registration: type2 === "TICKETS" || type2 === "RSVP_AND_TICKETS" ? "TICKETING" : type2,
|
|
188929
189539
|
eventStatus: status === "SCHEDULED" ? "UPCOMING" : status,
|
|
188930
189540
|
saleStatus: text10(t2.saleStatus),
|
|
@@ -188934,7 +189544,7 @@ function ticketAttendanceOf(event, definition) {
|
|
|
188934
189544
|
currency: text10(price.currency)
|
|
188935
189545
|
};
|
|
188936
189546
|
}
|
|
188937
|
-
function
|
|
189547
|
+
function object11(value2) {
|
|
188938
189548
|
return value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
|
|
188939
189549
|
}
|
|
188940
189550
|
var ADDRESSLESS_CUSTOM, PHYSICAL_LOCATIONS, ONLINE_LABEL, text10, numeric, boolean3, zeroPrice;
|
|
@@ -200265,41 +200875,41 @@ function normalizeWebsiteLinks(nodes2) {
|
|
|
200265
200875
|
};
|
|
200266
200876
|
for (const node of nodes2) {
|
|
200267
200877
|
for (const path2 of linkFields[node.type ?? ""] ?? []) {
|
|
200268
|
-
const parent =
|
|
200878
|
+
const parent = object12(path2.slice(0, -1).reduce((value2, key4) => object12(value2)[key4], node));
|
|
200269
200879
|
const key3 = path2[path2.length - 1];
|
|
200270
200880
|
const holder = { url: parent[key3] };
|
|
200271
200881
|
normalize5(holder);
|
|
200272
200882
|
if (typeof holder.url === "string") parent[key3] = holder.url;
|
|
200273
200883
|
}
|
|
200274
200884
|
if (Array.isArray(node.textData?.decorations)) for (const decoration of node.textData.decorations) {
|
|
200275
|
-
if (
|
|
200885
|
+
if (object12(decoration).type === "LINK") normalize5(object12(object12(decoration).linkData).link);
|
|
200276
200886
|
}
|
|
200277
200887
|
if (Array.isArray(node.nodes)) changed += normalizeWebsiteLinks(node.nodes);
|
|
200278
200888
|
}
|
|
200279
200889
|
return changed;
|
|
200280
200890
|
}
|
|
200281
200891
|
function draftDocument(value2) {
|
|
200282
|
-
const draft =
|
|
200892
|
+
const draft = object12(value2);
|
|
200283
200893
|
if (!Array.isArray(draft.blocks) || draft.blocks.length > 5e3) return invalid();
|
|
200284
200894
|
if (draft.entityMap !== void 0 && (!draft.entityMap || typeof draft.entityMap !== "object" || Array.isArray(draft.entityMap))) return invalid();
|
|
200285
|
-
const entities =
|
|
200895
|
+
const entities = object12(draft.entityMap);
|
|
200286
200896
|
const nodes2 = [];
|
|
200287
200897
|
for (const raw of draft.blocks) {
|
|
200288
|
-
const block =
|
|
200898
|
+
const block = object12(raw);
|
|
200289
200899
|
if (typeof block.text !== "string") return invalid();
|
|
200290
200900
|
if (block.depth !== void 0 && block.depth !== 0) return unsupported();
|
|
200291
200901
|
const text13 = block.text;
|
|
200292
200902
|
const styles = block.inlineStyleRanges ?? [];
|
|
200293
200903
|
const ranges = block.entityRanges ?? [];
|
|
200294
200904
|
if (!Array.isArray(styles) || !Array.isArray(ranges) || styles.length + ranges.length > 500) return invalid();
|
|
200295
|
-
const spans = [...styles.map((v2) => ({ ...
|
|
200905
|
+
const spans = [...styles.map((v2) => ({ ...object12(v2), kind: "style" })), ...ranges.map((v2) => ({ ...object12(v2), kind: "entity" }))];
|
|
200296
200906
|
for (const span of spans) {
|
|
200297
200907
|
if (!Number.isInteger(span.offset) || !Number.isInteger(span.length) || Number(span.offset) < 0 || Number(span.length) < 0 || Number(span.offset) + Number(span.length) > text13.length) return invalid();
|
|
200298
200908
|
}
|
|
200299
200909
|
if (block.type === "atomic") {
|
|
200300
200910
|
if (ranges.length !== 1) return unsupported();
|
|
200301
|
-
const entity =
|
|
200302
|
-
const data =
|
|
200911
|
+
const entity = object12(entities[String(object12(ranges[0]).key)]);
|
|
200912
|
+
const data = object12(entity.data);
|
|
200303
200913
|
if (entity.type !== "IMAGE" && entity.type !== "wix-draft-plugin-image") return unsupported();
|
|
200304
200914
|
const url = data.src ?? data.url;
|
|
200305
200915
|
if (typeof url !== "string" || !url) return invalid();
|
|
@@ -200316,9 +200926,9 @@ function draftDocument(value2) {
|
|
|
200316
200926
|
if (!["BOLD", "ITALIC", "UNDERLINE", "STRIKETHROUGH"].includes(String(span.style))) return unsupported();
|
|
200317
200927
|
decorations.push({ type: String(span.style) });
|
|
200318
200928
|
} else {
|
|
200319
|
-
const entity =
|
|
200320
|
-
if (entity.type !== "LINK" || typeof
|
|
200321
|
-
decorations.push({ type: "LINK", linkData: { link: { url:
|
|
200929
|
+
const entity = object12(entities[String(span.key)]);
|
|
200930
|
+
if (entity.type !== "LINK" || typeof object12(entity.data).url !== "string") return unsupported();
|
|
200931
|
+
decorations.push({ type: "LINK", linkData: { link: { url: object12(entity.data).url } } });
|
|
200322
200932
|
}
|
|
200323
200933
|
}
|
|
200324
200934
|
runs.push({ type: "TEXT", textData: { text: text13.slice(start, end), decorations } });
|
|
@@ -200338,7 +200948,7 @@ function draftDocument(value2) {
|
|
|
200338
200948
|
return { nodes: nodes2 };
|
|
200339
200949
|
}
|
|
200340
200950
|
function decodeOneAppPage(response, expectedPageId) {
|
|
200341
|
-
const dto =
|
|
200951
|
+
const dto = object12(response), content = object12(dto.content), body = object12(content.body);
|
|
200342
200952
|
if (!isOneAppPageId(expectedPageId) || dto.pageId !== expectedPageId || typeof body.content !== "string" || content.title !== void 0 && typeof content.title !== "string") return invalid();
|
|
200343
200953
|
const raw = body.content;
|
|
200344
200954
|
if (richContentOverLimits(raw, null)) return invalid();
|
|
@@ -200355,13 +200965,13 @@ function decodeOneAppPage(response, expectedPageId) {
|
|
|
200355
200965
|
if (richContentOverLimits(raw, parsed)) return invalid();
|
|
200356
200966
|
if (contentType === "DRAFTJS") document2 = draftDocument(parsed);
|
|
200357
200967
|
else {
|
|
200358
|
-
if (!Array.isArray(
|
|
200968
|
+
if (!Array.isArray(object12(parsed).nodes)) return invalid();
|
|
200359
200969
|
document2 = parsed;
|
|
200360
200970
|
}
|
|
200361
200971
|
} else return unsupported();
|
|
200362
200972
|
const validNodes = (nodes2) => nodes2.every((value2) => {
|
|
200363
|
-
const n2 =
|
|
200364
|
-
return typeof n2.type === "string" && n2.type.length > 0 && (n2.type !== "TEXT" || typeof
|
|
200973
|
+
const n2 = object12(value2);
|
|
200974
|
+
return typeof n2.type === "string" && n2.type.length > 0 && (n2.type !== "TEXT" || typeof object12(n2.textData).text === "string") && (n2.nodes === void 0 || Array.isArray(n2.nodes) && validNodes(n2.nodes));
|
|
200365
200975
|
});
|
|
200366
200976
|
if (!validNodes(document2.nodes)) return invalid();
|
|
200367
200977
|
const normalizedWebsiteLinks = normalizeWebsiteLinks(document2.nodes);
|
|
@@ -200387,7 +200997,7 @@ function oneAppPageSection(page, options) {
|
|
|
200387
200997
|
documentJson: page.documentJson
|
|
200388
200998
|
} } };
|
|
200389
200999
|
}
|
|
200390
|
-
var failure,
|
|
201000
|
+
var failure, object12, invalid, unsupported, isOneAppPageId;
|
|
200391
201001
|
var init_one_app_page = __esm({
|
|
200392
201002
|
"../../stdlib/flows/screens/src/one-app-page.ts"() {
|
|
200393
201003
|
init_define_HHP_CATALOG();
|
|
@@ -200395,7 +201005,7 @@ var init_one_app_page = __esm({
|
|
|
200395
201005
|
failure = (code, message2) => {
|
|
200396
201006
|
throw Object.assign(new Error(message2), { name: "OneAppPageContentError", code });
|
|
200397
201007
|
};
|
|
200398
|
-
|
|
201008
|
+
object12 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
|
|
200399
201009
|
invalid = () => failure("invalid", "The referenced page returned malformed content.");
|
|
200400
201010
|
unsupported = () => failure("unsupported", "The referenced page uses an unsupported content format.");
|
|
200401
201011
|
isOneAppPageId = (value2) => typeof value2 === "string" && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value2);
|
|
@@ -200405,16 +201015,16 @@ var init_one_app_page = __esm({
|
|
|
200405
201015
|
// src/one-app/pages.ts
|
|
200406
201016
|
import { createHash as createHash54 } from "node:crypto";
|
|
200407
201017
|
function oneAppPagePlacements(raw) {
|
|
200408
|
-
const sections =
|
|
201018
|
+
const sections = object13(raw.sections);
|
|
200409
201019
|
const placements = [];
|
|
200410
201020
|
const read = (elements, base, layoutItemId) => {
|
|
200411
201021
|
if (!Array.isArray(elements)) return;
|
|
200412
201022
|
elements.forEach((value2, arrayIndex) => {
|
|
200413
|
-
const ref =
|
|
201023
|
+
const ref = object13(value2);
|
|
200414
201024
|
if (ref.elementType !== "SECTION" || typeof ref.elementId !== "string") return;
|
|
200415
|
-
const section3 =
|
|
201025
|
+
const section3 = object13(sections[ref.elementId]);
|
|
200416
201026
|
if ((section3.sectionDefinitionId ?? section3.section_definition_id) !== "pages_section") return;
|
|
200417
|
-
const selected =
|
|
201027
|
+
const selected = object13(object13(section3.settings).value).pageId;
|
|
200418
201028
|
placements.push({
|
|
200419
201029
|
sectionId: ref.elementId,
|
|
200420
201030
|
...layoutItemId ? { layoutItemId } : {},
|
|
@@ -200425,8 +201035,8 @@ function oneAppPagePlacements(raw) {
|
|
|
200425
201035
|
});
|
|
200426
201036
|
});
|
|
200427
201037
|
};
|
|
200428
|
-
for (const [id, layout] of Object.entries(
|
|
200429
|
-
read(
|
|
201038
|
+
for (const [id, layout] of Object.entries(object13(raw.layoutItems))) read(object13(layout).elements, `/layoutItems/${pointer(id)}/elements`, id);
|
|
201039
|
+
read(object13(raw.businessProfile).elements, "/businessProfile/elements");
|
|
200430
201040
|
return placements;
|
|
200431
201041
|
}
|
|
200432
201042
|
async function collectOneAppPages(raw, source, read) {
|
|
@@ -200457,13 +201067,13 @@ async function collectOneAppPages(raw, source, read) {
|
|
|
200457
201067
|
}
|
|
200458
201068
|
return { version: 1, source, placements, documents: [...documents.values()] };
|
|
200459
201069
|
}
|
|
200460
|
-
var
|
|
201070
|
+
var object13, pointer, hash2, ONE_APP_PAGES_BASE;
|
|
200461
201071
|
var init_pages = __esm({
|
|
200462
201072
|
"src/one-app/pages.ts"() {
|
|
200463
201073
|
init_define_HHP_CATALOG();
|
|
200464
201074
|
init_one_app_page();
|
|
200465
201075
|
init_errors2();
|
|
200466
|
-
|
|
201076
|
+
object13 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
|
|
200467
201077
|
pointer = (s2) => s2.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
200468
201078
|
hash2 = (s2) => createHash54("sha256").update(s2).digest("hex");
|
|
200469
201079
|
ONE_APP_PAGES_BASE = "https://apps.wix.com/social-content/api/v1/pages/";
|
|
@@ -201177,9 +201787,13 @@ var init_header_badges_cli = __esm({
|
|
|
201177
201787
|
// src/one-app/payment-review.ts
|
|
201178
201788
|
import { readFileSync as readFileSync136 } from "node:fs";
|
|
201179
201789
|
import { join as join126, resolve as resolve88 } from "node:path";
|
|
201790
|
+
function preservesUnverifiedFlow(flow) {
|
|
201791
|
+
const checkout = obj6(flow.checkout);
|
|
201792
|
+
return flow.payment === "online-paid" && obj6(flow.readiness).state === "unverified" && checkout.state === "supported" && text12(checkout.evidence) && (flow.decision === void 0 || obj6(flow.decision).action === "proceed");
|
|
201793
|
+
}
|
|
201180
201794
|
function initialPaymentReview(metaSiteId) {
|
|
201181
201795
|
return {
|
|
201182
|
-
schemaVersion:
|
|
201796
|
+
schemaVersion: 2,
|
|
201183
201797
|
metaSiteId,
|
|
201184
201798
|
inventoryReviewed: false,
|
|
201185
201799
|
inventoryEvidence: "",
|
|
@@ -201194,7 +201808,7 @@ function initialPaymentReview(metaSiteId) {
|
|
|
201194
201808
|
function paymentReviewIssues(value2, metaSiteId) {
|
|
201195
201809
|
const review = obj6(value2);
|
|
201196
201810
|
const issues = [];
|
|
201197
|
-
if (review.schemaVersion !== 1 || !sameSite(review.metaSiteId, metaSiteId)) issues.push("Review must name the collected site and schemaVersion 1.");
|
|
201811
|
+
if (review.schemaVersion !== 1 && review.schemaVersion !== 2 || !sameSite(review.metaSiteId, metaSiteId)) issues.push("Review must name the collected site and schemaVersion 2 (or 1 for a legacy review).");
|
|
201198
201812
|
if (review.inventoryReviewed !== true || !text12(review.inventoryEvidence)) issues.push("Review the source actions and live read-only catalog/payment options, including free and offline flows, before generation.");
|
|
201199
201813
|
if (!Array.isArray(review.flows)) return [...issues, "List the reviewed flows (an empty list requires inventory evidence that there are no purchase flows)."];
|
|
201200
201814
|
if (review.flows.length === 0 && review.noPurchaseFlows !== true) issues.push("An empty inventory requires an explicit noPurchaseFlows: true finding supported by inventoryEvidence.");
|
|
@@ -201213,11 +201827,15 @@ function paymentReviewIssues(value2, metaSiteId) {
|
|
|
201213
201827
|
}
|
|
201214
201828
|
const readiness = obj6(flow.readiness);
|
|
201215
201829
|
const decision = obj6(flow.decision);
|
|
201830
|
+
const checkout = obj6(flow.checkout);
|
|
201831
|
+
if ((review.schemaVersion === 2 || flow.checkout !== void 0) && (typeof checkout.state !== "string" || !["supported", "unsupported", "unverified"].includes(checkout.state) || !text12(checkout.evidence))) issues.push(`${label3} needs supported, unsupported or unverified target checkout compatibility with evidence.`);
|
|
201216
201832
|
if (!sameSite(readiness.metaSiteId, metaSiteId)) issues.push(`${label3} readiness must name the collected site; evidence from another site cannot authorize checkout.`);
|
|
201217
201833
|
if (typeof readiness.state !== "string" || !["ready", "missing", "unverified"].includes(readiness.state) || !text12(readiness.evidence)) issues.push(`${label3} needs ready, missing or unverified readiness with site-bound evidence.`);
|
|
201218
|
-
|
|
201834
|
+
const checkoutProblem = flow.checkout !== void 0 && checkout.state !== "supported";
|
|
201835
|
+
if (!checkoutProblem && readiness.state === "ready" && decision.action === "proceed") continue;
|
|
201836
|
+
if (preservesUnverifiedFlow(flow)) continue;
|
|
201219
201837
|
if (typeof decision.action !== "string" || !["retain", "hide", "connect-provider"].includes(decision.action) || !text12(decision.instruction)) {
|
|
201220
|
-
issues.push(`${label3} needs the owner's explicit connect-provider, retain or hide decision; do not choose for them.`);
|
|
201838
|
+
issues.push(checkoutProblem ? `${label3} needs an owner decision for the target checkout gap: retain with an explanation or hide the affected interaction.` : readiness.state === "unverified" ? `${label3} needs reviewed target checkout support or an existing owner decision; unknown payment status alone does not require reconnecting payments.` : `${label3} needs the owner's explicit connect-provider, retain or hide decision; do not choose for them.`);
|
|
201221
201839
|
continue;
|
|
201222
201840
|
}
|
|
201223
201841
|
if (decision.action === "connect-provider") issues.push(`${label3} is waiting for owner setup and a new readiness review; do not generate its paid UI yet.`);
|
|
@@ -201252,7 +201870,12 @@ function runPaymentReview(args, io2) {
|
|
|
201252
201870
|
const review = JSON.parse(readFileSync136(join126(evidenceDir, "payment-review.json"), "utf8"));
|
|
201253
201871
|
const issues = paymentReviewIssues(review, metaSiteId);
|
|
201254
201872
|
if (issues.length) return fail7("payment_decision_required", issues, 1);
|
|
201255
|
-
|
|
201873
|
+
const warnings = obj6(review).flows.map(obj6).filter(preservesUnverifiedFlow).map((flow) => ({
|
|
201874
|
+
code: "payment_readiness_unverified",
|
|
201875
|
+
flowId: flow.id,
|
|
201876
|
+
message: "Payment setup could not be verified. Preserve the existing purchase flow with its supported checkout; do not claim payments are disconnected."
|
|
201877
|
+
}));
|
|
201878
|
+
io2.log(JSON.stringify({ ok: true, stage: "payment-decisions-reviewed", evidenceDir, warnings, verification: "Recorded evidence and decisions checked; merchant readiness is not independently verified by this command." }));
|
|
201256
201879
|
return 0;
|
|
201257
201880
|
} catch {
|
|
201258
201881
|
return fail7("payment_review_unreadable", ["Read the collected manifest and source evidence, then prepare payment-review.json for that site."], 1);
|
|
@@ -201272,27 +201895,27 @@ var init_payment_review = __esm({
|
|
|
201272
201895
|
|
|
201273
201896
|
// src/one-app/navigation.ts
|
|
201274
201897
|
function sourceNavigationKind(raw) {
|
|
201275
|
-
const navigation =
|
|
201276
|
-
if (
|
|
201898
|
+
const navigation = object14(raw.navigation);
|
|
201899
|
+
if (object14(navigation.settings).drawerMode === true) return "side-menu";
|
|
201277
201900
|
const entries = array4(navigation.bottomTabs);
|
|
201278
201901
|
if (entries.length > 1) return "bottom-tabs";
|
|
201279
|
-
const screens =
|
|
201280
|
-
const screenId = string6(
|
|
201281
|
-
const screen = screenId && Object.hasOwn(screens, screenId) ?
|
|
201282
|
-
return
|
|
201902
|
+
const screens = object14(raw.screens);
|
|
201903
|
+
const screenId = string6(object14(entries[0]).screenId);
|
|
201904
|
+
const screen = screenId && Object.hasOwn(screens, screenId) ? object14(screens[screenId]) : {};
|
|
201905
|
+
return object14(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
|
|
201283
201906
|
}
|
|
201284
201907
|
function planNavigation(raw, policy = "bottom-tabs") {
|
|
201285
|
-
const navigation =
|
|
201908
|
+
const navigation = object14(raw.navigation);
|
|
201286
201909
|
const entries = array4(navigation.bottomTabs);
|
|
201287
|
-
const screens =
|
|
201288
|
-
const layouts =
|
|
201910
|
+
const screens = object14(raw.screens);
|
|
201911
|
+
const layouts = object14(raw.layoutItems);
|
|
201289
201912
|
const kind = sourceNavigationKind(raw);
|
|
201290
201913
|
const warnings = [];
|
|
201291
|
-
const firstEntry =
|
|
201914
|
+
const firstEntry = object14(entries[0]);
|
|
201292
201915
|
const rootScreenId = string6(firstEntry.screenId) ?? null;
|
|
201293
|
-
const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ?
|
|
201294
|
-
const rootLayout =
|
|
201295
|
-
const settings =
|
|
201916
|
+
const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object14(screens[rootScreenId]) : {};
|
|
201917
|
+
const rootLayout = object14(rootScreen.layout);
|
|
201918
|
+
const settings = object14(navigation.settings);
|
|
201296
201919
|
const appInstance = string6(raw.appInstance) ?? null;
|
|
201297
201920
|
const source = {
|
|
201298
201921
|
kind,
|
|
@@ -201304,8 +201927,8 @@ function planNavigation(raw, policy = "bottom-tabs") {
|
|
|
201304
201927
|
const next = "Build navigation from this plan with himi docs one-app-to-himi-app. Report every warning; the plan does not replace the source graph.";
|
|
201305
201928
|
if (kind === "bottom-tabs") {
|
|
201306
201929
|
entries.forEach((value2, index) => {
|
|
201307
|
-
const id = string6(
|
|
201308
|
-
if (id && Object.hasOwn(screens, id) &&
|
|
201930
|
+
const id = string6(object14(value2).screenId);
|
|
201931
|
+
if (id && Object.hasOwn(screens, id) && object14(object14(screens[id]).layout).type === "TOP_TABS") {
|
|
201309
201932
|
warnings.push({ code: "nested_top_tabs", pointer: `/screens/${part3(id)}/layout/type`, reference: `/navigation/bottomTabs/${index}` });
|
|
201310
201933
|
}
|
|
201311
201934
|
});
|
|
@@ -201316,14 +201939,14 @@ function planNavigation(raw, policy = "bottom-tabs") {
|
|
|
201316
201939
|
const tabs = [];
|
|
201317
201940
|
const hiddenPages = [];
|
|
201318
201941
|
array4(rootLayout.items).forEach((value2, index) => {
|
|
201319
|
-
const layoutItemId = string6(
|
|
201942
|
+
const layoutItemId = string6(object14(value2).layoutItemId);
|
|
201320
201943
|
const itemPointer = `${pointer3}/${index}`;
|
|
201321
201944
|
if (!layoutItemId || !Object.hasOwn(layouts, layoutItemId)) {
|
|
201322
201945
|
warnings.push({ code: "missing_reference", pointer: itemPointer, ...layoutItemId ? { reference: layoutItemId } : {} });
|
|
201323
201946
|
return;
|
|
201324
201947
|
}
|
|
201325
|
-
const layout =
|
|
201326
|
-
if (
|
|
201948
|
+
const layout = object14(layouts[layoutItemId]);
|
|
201949
|
+
if (object14(layout.settings).hideFromNavigation === true) {
|
|
201327
201950
|
hiddenPages.push({ layoutItemId, pointer: itemPointer });
|
|
201328
201951
|
return;
|
|
201329
201952
|
}
|
|
@@ -201368,11 +201991,11 @@ function planNavigation(raw, policy = "bottom-tabs") {
|
|
|
201368
201991
|
next
|
|
201369
201992
|
};
|
|
201370
201993
|
}
|
|
201371
|
-
var
|
|
201994
|
+
var object14, array4, string6, part3, TOP_TABS_POLICIES, MAX_BAR_TABS;
|
|
201372
201995
|
var init_navigation = __esm({
|
|
201373
201996
|
"src/one-app/navigation.ts"() {
|
|
201374
201997
|
init_define_HHP_CATALOG();
|
|
201375
|
-
|
|
201998
|
+
object14 = (value2) => value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
|
|
201376
201999
|
array4 = (value2) => Array.isArray(value2) ? value2 : [];
|
|
201377
202000
|
string6 = (value2) => typeof value2 === "string" && value2 ? value2 : void 0;
|
|
201378
202001
|
part3 = (value2) => value2.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
@@ -201933,7 +202556,7 @@ validate-payments checks site-bound payment evidence and explicit paid-flow deci
|
|
|
201933
202556
|
warnings: collected.warnings,
|
|
201934
202557
|
next: [
|
|
201935
202558
|
`Continue now in this agent session. Read \`himi docs ${ONE_APP_WORKFLOW}\` and the migration manifest at ${artifacts["manifest.json"]}.`,
|
|
201936
|
-
"Use the source as evidence and user-prompt.txt as the user's requested changes. Before scaffolding, review actual payment intents and
|
|
202559
|
+
"Use the source as evidence and user-prompt.txt as the user's requested changes. Before scaffolding, review actual payment intents, site binding and target checkout support in payment-review.json. Preserve supported existing paid flows when payment readiness is unverified; record the uncertainty without asking the owner to reconnect payments. Resolve confirmed payment setup or checkout gaps with the owner, honor existing decisions, and run one-app validate-payments. Then generate, validate and publish a hosted draft within the recorded scope.",
|
|
201937
202560
|
"This command collected the source. A coding agent must perform the remaining workflow; no model or build was launched by the command."
|
|
201938
202561
|
]
|
|
201939
202562
|
}).trimEnd());
|
|
@@ -207168,11 +207791,22 @@ __export(run_exports2, {
|
|
|
207168
207791
|
isFidelityComment: () => isFidelityComment,
|
|
207169
207792
|
prCommentBody: () => prCommentBody,
|
|
207170
207793
|
rowStatus: () => rowStatus,
|
|
207794
|
+
rtlVariant: () => rtlVariant,
|
|
207171
207795
|
runFidelity: () => runFidelity,
|
|
207172
207796
|
runId: () => runId
|
|
207173
207797
|
});
|
|
207174
207798
|
import { mkdirSync as mkdirSync55, writeFileSync as writeFileSync59 } from "node:fs";
|
|
207175
207799
|
import { basename as basename30, join as join134 } from "node:path";
|
|
207800
|
+
function rtlVariant(config) {
|
|
207801
|
+
const locale = config?.locale;
|
|
207802
|
+
const pinned = locale?.pin === true && typeof locale.default === "string" && coerceSupportedLocale(locale.default) !== void 0;
|
|
207803
|
+
const tags = [locale?.default, ...!pinned && Array.isArray(locale?.translations) ? locale.translations : []].filter((t2) => typeof t2 === "string");
|
|
207804
|
+
if (pinned && !isRTL(locale.default)) return { skipped: `the app pins the left-to-right language ${locale.default} (config.ts locale.pin)` };
|
|
207805
|
+
const rtl = tags.filter((t2) => isRTL(t2));
|
|
207806
|
+
const shown2 = rtl.map((t2) => coerceSupportedLocale(t2)).find((t2) => t2 !== void 0);
|
|
207807
|
+
if (shown2) return { locale: shown2 };
|
|
207808
|
+
return { skipped: rtl.length ? `the app's right-to-left language (${rtl.join(", ")}) is not one the Player supports` : "the app ships no right-to-left language (config.ts locale.default / locale.translations)" };
|
|
207809
|
+
}
|
|
207176
207810
|
function runId(now = /* @__PURE__ */ new Date()) {
|
|
207177
207811
|
return now.toISOString().replace(/[-:]/g, "").replace(/\..*/, "").replace("T", "-");
|
|
207178
207812
|
}
|
|
@@ -207217,6 +207851,14 @@ async function runFidelity(root, opts = {}) {
|
|
|
207217
207851
|
const rows = [];
|
|
207218
207852
|
try {
|
|
207219
207853
|
for (const variant of variants) {
|
|
207854
|
+
if (variant === "rtl" && opts.rtl && "skipped" in opts.rtl) {
|
|
207855
|
+
const reason = opts.rtl.skipped;
|
|
207856
|
+
for (const screen of screens) {
|
|
207857
|
+
const row2 = { screen, variant, frames: [{ surface: "web", screen, variant, skipped: { reason } }], scores: [], judge: skippedJudge(reason) };
|
|
207858
|
+
rows.push({ ...row2, ...rowStatus(row2, fidelityThresholds(manifest2, screen)) });
|
|
207859
|
+
}
|
|
207860
|
+
continue;
|
|
207861
|
+
}
|
|
207220
207862
|
let webFrames;
|
|
207221
207863
|
try {
|
|
207222
207864
|
webFrames = await web(root, variant, framesDir, screens);
|
|
@@ -207302,6 +207944,7 @@ var init_run2 = __esm({
|
|
|
207302
207944
|
init_judge();
|
|
207303
207945
|
init_score();
|
|
207304
207946
|
init_strip();
|
|
207947
|
+
init_locale();
|
|
207305
207948
|
NATIVE_MASK = { top: 60, bottom: 0 };
|
|
207306
207949
|
worst = (rows) => rows.some((r3) => r3.status === "fail") ? "fail" : rows.some((r3) => r3.status === "warn") ? "warn" : "pass";
|
|
207307
207950
|
skippedJudge = (reason) => ({ verdict: "cannot_tell", design: "cannot_tell", parity: "cannot_tell", findings: [], confidence: "low", reason });
|
|
@@ -207698,6 +208341,16 @@ async function fidelityCommand(ctx) {
|
|
|
207698
208341
|
return 2;
|
|
207699
208342
|
}
|
|
207700
208343
|
}
|
|
208344
|
+
let rtl;
|
|
208345
|
+
if (!variants.length || variants.includes("rtl")) {
|
|
208346
|
+
const { rtlVariant: rtlVariant2 } = await Promise.resolve().then(() => (init_run2(), run_exports2));
|
|
208347
|
+
const { loadAppConfigModule: loadAppConfigModule2 } = await Promise.resolve().then(() => (init_app_config_loader(), app_config_loader_exports));
|
|
208348
|
+
try {
|
|
208349
|
+
rtl = rtlVariant2(await loadAppConfigModule2(dir));
|
|
208350
|
+
} catch (e2) {
|
|
208351
|
+
rtl = { skipped: `config.ts did not load: ${e2.message.split("\n")[0]}` };
|
|
208352
|
+
}
|
|
208353
|
+
}
|
|
207701
208354
|
let plane;
|
|
207702
208355
|
let native;
|
|
207703
208356
|
if (flags["no-native"] === true) native = false;
|
|
@@ -207719,7 +208372,7 @@ async function fidelityCommand(ctx) {
|
|
|
207719
208372
|
return 1;
|
|
207720
208373
|
}
|
|
207721
208374
|
}
|
|
207722
|
-
const capture = nativeCapture2(devices, { appId: app, ...release2 ? { release: release2 } : {}, ...plane ? { serveOrigin: plane.origin } : {} });
|
|
208375
|
+
const capture = nativeCapture2(devices, { appId: app, ...release2 ? { release: release2 } : {}, ...plane ? { serveOrigin: plane.origin } : {}, ...rtl && "locale" in rtl ? { rtlLanguage: rtl.locale } : {} });
|
|
207723
208376
|
native = capture;
|
|
207724
208377
|
const onSignal = () => {
|
|
207725
208378
|
void capture.restore().finally(() => plane?.close()).finally(() => process.exit(130));
|
|
@@ -207729,7 +208382,7 @@ async function fidelityCommand(ctx) {
|
|
|
207729
208382
|
}
|
|
207730
208383
|
let report4;
|
|
207731
208384
|
try {
|
|
207732
|
-
report4 = await runFidelity2(dir, { judgeDir, screens: list(flags.screen), variants, ...native !== void 0 ? { native } : {} });
|
|
208385
|
+
report4 = await runFidelity2(dir, { judgeDir, screens: list(flags.screen), variants, ...native !== void 0 ? { native } : {}, ...rtl ? { rtl } : {} });
|
|
207733
208386
|
} catch (e2) {
|
|
207734
208387
|
const code = e2.code;
|
|
207735
208388
|
if (code === "fidelity_not_hhp" || code === "fidelity_unknown_screen") {
|