@player-ui/player 0.8.0-next.4 → 0.8.0-next.5
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/Player.native.js +240 -252
- package/dist/Player.native.js.map +1 -1
- package/dist/cjs/index.cjs +208 -268
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.legacy-esm.js +206 -270
- package/dist/index.mjs +206 -270
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/plugins/default-view-plugin.ts +4 -0
- package/src/view/__tests__/view.immutable.test.ts +8 -1
- package/src/view/__tests__/view.test.ts +4 -0
- package/src/view/parser/__tests__/parser.test.ts +16 -1
- package/src/view/parser/index.ts +46 -262
- package/src/view/parser/utils.ts +23 -3
- package/src/view/plugins/__tests__/__snapshots__/asset.test.ts.snap +215 -0
- package/src/view/plugins/__tests__/__snapshots__/multi-node.test.ts.snap +67 -0
- package/src/view/plugins/__tests__/__snapshots__/template.test.ts.snap +56 -54
- package/src/view/plugins/__tests__/applicability.test.ts +24 -16
- package/src/view/plugins/__tests__/asset.test.ts +140 -0
- package/src/view/plugins/__tests__/multi-node.test.ts +38 -0
- package/src/view/plugins/__tests__/template.test.ts +48 -388
- package/src/view/plugins/applicability.ts +39 -23
- package/src/view/plugins/asset.ts +42 -0
- package/src/view/plugins/index.ts +3 -1
- package/src/view/plugins/multi-node.ts +73 -0
- package/src/view/plugins/switch.ts +81 -50
- package/src/view/plugins/{template-plugin.ts → template.ts} +38 -24
- package/src/view/resolver/__tests__/edgecases.test.ts +14 -1
- package/src/view/view.ts +2 -7
- package/types/view/parser/index.d.ts +6 -11
- package/types/view/parser/utils.d.ts +11 -2
- package/types/view/plugins/applicability.d.ts +1 -0
- package/types/view/plugins/asset.d.ts +8 -0
- package/types/view/plugins/index.d.ts +3 -1
- package/types/view/plugins/multi-node.d.ts +8 -0
- package/types/view/plugins/switch.d.ts +2 -1
- package/types/view/plugins/{template-plugin.d.ts → template.d.ts} +2 -2
package/dist/index.legacy-esm.js
CHANGED
|
@@ -2386,7 +2386,7 @@ import dlv from "dlv";
|
|
|
2386
2386
|
import { dequal } from "dequal";
|
|
2387
2387
|
|
|
2388
2388
|
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/parser/index.ts
|
|
2389
|
-
import {
|
|
2389
|
+
import { setIn as setIn4 } from "timm";
|
|
2390
2390
|
import { SyncBailHook as SyncBailHook3, SyncWaterfallHook as SyncWaterfallHook4 } from "tapable-ts";
|
|
2391
2391
|
|
|
2392
2392
|
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/parser/types.ts
|
|
@@ -2405,8 +2405,14 @@ var NodeType = /* @__PURE__ */ ((NodeType2) => {
|
|
|
2405
2405
|
})(NodeType || {});
|
|
2406
2406
|
|
|
2407
2407
|
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/parser/utils.ts
|
|
2408
|
-
function
|
|
2409
|
-
return Object.
|
|
2408
|
+
function hasTemplateValues(obj, localKey) {
|
|
2409
|
+
return Object.hasOwnProperty.call(obj, "template") && Array.isArray(obj?.template) && obj.template.length && obj.template.find((tmpl) => tmpl.output === localKey);
|
|
2410
|
+
}
|
|
2411
|
+
function hasSwitchKey(localKey) {
|
|
2412
|
+
return localKey === "staticSwitch";
|
|
2413
|
+
}
|
|
2414
|
+
function hasTemplateKey(localKey) {
|
|
2415
|
+
return localKey === "template";
|
|
2410
2416
|
}
|
|
2411
2417
|
function getNodeID(node) {
|
|
2412
2418
|
if (!node) {
|
|
@@ -2443,7 +2449,6 @@ var Parser = class {
|
|
|
2443
2449
|
* If null, we ignore this node all together
|
|
2444
2450
|
*/
|
|
2445
2451
|
onCreateASTNode: new SyncWaterfallHook4(),
|
|
2446
|
-
determineNodeType: new SyncBailHook3(),
|
|
2447
2452
|
parseNode: new SyncBailHook3()
|
|
2448
2453
|
};
|
|
2449
2454
|
}
|
|
@@ -2454,21 +2459,6 @@ var Parser = class {
|
|
|
2454
2459
|
}
|
|
2455
2460
|
return viewNode;
|
|
2456
2461
|
}
|
|
2457
|
-
parseAsync(obj, type, options) {
|
|
2458
|
-
const parsedAsync = this.parseObject(omit2(obj, "async"), type, options);
|
|
2459
|
-
const parsedNodeId = getNodeID(parsedAsync);
|
|
2460
|
-
if (parsedAsync !== null && parsedNodeId) {
|
|
2461
|
-
return this.createASTNode(
|
|
2462
|
-
{
|
|
2463
|
-
id: parsedNodeId,
|
|
2464
|
-
type: "async" /* Async */,
|
|
2465
|
-
value: parsedAsync
|
|
2466
|
-
},
|
|
2467
|
-
obj
|
|
2468
|
-
);
|
|
2469
|
-
}
|
|
2470
|
-
return null;
|
|
2471
|
-
}
|
|
2472
2462
|
createASTNode(node, value) {
|
|
2473
2463
|
const tapped = this.hooks.onCreateASTNode.call(node, value);
|
|
2474
2464
|
if (tapped === void 0) {
|
|
@@ -2476,30 +2466,14 @@ var Parser = class {
|
|
|
2476
2466
|
}
|
|
2477
2467
|
return tapped;
|
|
2478
2468
|
}
|
|
2479
|
-
/**
|
|
2480
|
-
* Checks if there are templated values in the object
|
|
2481
|
-
*
|
|
2482
|
-
* @param obj - The Parsed Object to check to see if we have a template array type for
|
|
2483
|
-
* @param localKey - The key being checked
|
|
2484
|
-
*/
|
|
2485
|
-
hasTemplateValues(obj, localKey) {
|
|
2486
|
-
return Object.hasOwnProperty.call(obj, "template") && Array.isArray(obj?.template) && obj.template.length && obj.template.find((tmpl) => tmpl.output === localKey);
|
|
2487
|
-
}
|
|
2488
|
-
hasSwitchKey(localKey) {
|
|
2489
|
-
return localKey === "staticSwitch";
|
|
2490
|
-
}
|
|
2491
2469
|
parseObject(obj, type = "value" /* Value */, options = { templateDepth: 0 }) {
|
|
2492
|
-
const
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
);
|
|
2500
|
-
if (parsedNode) {
|
|
2501
|
-
return parsedNode;
|
|
2502
|
-
}
|
|
2470
|
+
const parsedNode = this.hooks.parseNode.call(
|
|
2471
|
+
obj,
|
|
2472
|
+
type,
|
|
2473
|
+
options
|
|
2474
|
+
);
|
|
2475
|
+
if (parsedNode || parsedNode === null) {
|
|
2476
|
+
return parsedNode;
|
|
2503
2477
|
}
|
|
2504
2478
|
const parseLocalObject = (currentValue, objToParse, path = []) => {
|
|
2505
2479
|
if (typeof objToParse !== "object" || objToParse === null) {
|
|
@@ -2521,182 +2495,44 @@ var Parser = class {
|
|
|
2521
2495
|
value: currentValue
|
|
2522
2496
|
};
|
|
2523
2497
|
const newValue = objEntries.reduce((accumulation, current) => {
|
|
2524
|
-
|
|
2498
|
+
let { value: value2 } = accumulation;
|
|
2499
|
+
const { children: children2 } = accumulation;
|
|
2525
2500
|
const [localKey, localValue] = current;
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
...rest,
|
|
2535
|
-
children: [
|
|
2536
|
-
...children2,
|
|
2537
|
-
{
|
|
2538
|
-
path: [...path, "asset"],
|
|
2539
|
-
value: assetAST
|
|
2540
|
-
}
|
|
2541
|
-
]
|
|
2542
|
-
};
|
|
2543
|
-
}
|
|
2544
|
-
} else if (this.hooks.determineNodeType.call(localKey) === "template" /* Template */ && Array.isArray(localValue)) {
|
|
2545
|
-
const templateChildren = localValue.map((template) => {
|
|
2546
|
-
const templateAST = this.hooks.onCreateASTNode.call(
|
|
2547
|
-
{
|
|
2548
|
-
type: "template" /* Template */,
|
|
2549
|
-
depth: options.templateDepth ?? 0,
|
|
2550
|
-
data: template.data,
|
|
2551
|
-
template: template.value,
|
|
2552
|
-
dynamic: template.dynamic ?? false
|
|
2553
|
-
},
|
|
2554
|
-
template
|
|
2555
|
-
);
|
|
2556
|
-
if (templateAST?.type === "multi-node" /* MultiNode */) {
|
|
2557
|
-
templateAST.values.forEach((v) => {
|
|
2558
|
-
v.parent = templateAST;
|
|
2559
|
-
});
|
|
2560
|
-
}
|
|
2561
|
-
if (templateAST) {
|
|
2562
|
-
return {
|
|
2563
|
-
path: [...path, template.output],
|
|
2564
|
-
value: templateAST
|
|
2565
|
-
};
|
|
2566
|
-
}
|
|
2567
|
-
return;
|
|
2568
|
-
}).filter((element) => !!element);
|
|
2569
|
-
return {
|
|
2570
|
-
...rest,
|
|
2571
|
-
children: [...children2, ...templateChildren]
|
|
2572
|
-
};
|
|
2573
|
-
} else if (localValue && this.hooks.determineNodeType.call(localValue) === "switch" /* Switch */ || this.hasSwitchKey(localKey)) {
|
|
2574
|
-
const localSwitch = this.hooks.parseNode.call(
|
|
2575
|
-
this.hasSwitchKey(localKey) ? { [localKey]: localValue } : localValue,
|
|
2576
|
-
"value" /* Value */,
|
|
2577
|
-
options,
|
|
2578
|
-
"switch" /* Switch */
|
|
2579
|
-
);
|
|
2580
|
-
if (localSwitch && localSwitch.type === "value" /* Value */ && localSwitch.children?.length === 1 && localSwitch.value === void 0) {
|
|
2581
|
-
const firstChild = localSwitch.children[0];
|
|
2582
|
-
return {
|
|
2583
|
-
...rest,
|
|
2584
|
-
children: [
|
|
2585
|
-
...children2,
|
|
2586
|
-
{
|
|
2587
|
-
path: [...path, localKey, ...firstChild.path],
|
|
2588
|
-
value: firstChild.value
|
|
2589
|
-
}
|
|
2590
|
-
]
|
|
2591
|
-
};
|
|
2592
|
-
}
|
|
2593
|
-
if (localSwitch) {
|
|
2594
|
-
return {
|
|
2595
|
-
...rest,
|
|
2596
|
-
children: [
|
|
2597
|
-
...children2,
|
|
2598
|
-
{
|
|
2599
|
-
path: [...path, localKey],
|
|
2600
|
-
value: localSwitch
|
|
2601
|
-
}
|
|
2602
|
-
]
|
|
2603
|
-
};
|
|
2604
|
-
}
|
|
2605
|
-
} else if (localValue && hasAsync(localValue)) {
|
|
2606
|
-
const localAsync = this.parseAsync(
|
|
2607
|
-
localValue,
|
|
2608
|
-
"value" /* Value */,
|
|
2609
|
-
options
|
|
2610
|
-
);
|
|
2611
|
-
if (localAsync) {
|
|
2612
|
-
children2.push({
|
|
2613
|
-
path: [...path, localKey],
|
|
2614
|
-
value: localAsync
|
|
2615
|
-
});
|
|
2616
|
-
}
|
|
2617
|
-
} else if (localValue && Array.isArray(localValue)) {
|
|
2618
|
-
const childValues = localValue.map(
|
|
2619
|
-
(childVal) => this.parseObject(childVal, "value" /* Value */, options)
|
|
2620
|
-
).filter((child) => !!child);
|
|
2621
|
-
if (childValues.length > 0) {
|
|
2622
|
-
const multiNode = this.hooks.onCreateASTNode.call(
|
|
2623
|
-
{
|
|
2624
|
-
type: "multi-node" /* MultiNode */,
|
|
2625
|
-
override: !this.hasTemplateValues(localObj, localKey),
|
|
2626
|
-
values: childValues
|
|
2627
|
-
},
|
|
2628
|
-
localValue
|
|
2629
|
-
);
|
|
2630
|
-
if (multiNode?.type === "multi-node" /* MultiNode */) {
|
|
2631
|
-
multiNode.values.forEach((v) => {
|
|
2632
|
-
v.parent = multiNode;
|
|
2633
|
-
});
|
|
2634
|
-
}
|
|
2635
|
-
if (multiNode) {
|
|
2636
|
-
return {
|
|
2637
|
-
...rest,
|
|
2638
|
-
children: [
|
|
2639
|
-
...children2,
|
|
2640
|
-
{
|
|
2641
|
-
path: [...path, localKey],
|
|
2642
|
-
value: multiNode
|
|
2643
|
-
}
|
|
2644
|
-
]
|
|
2645
|
-
};
|
|
2646
|
-
}
|
|
2501
|
+
const newChildren = this.hooks.parseNode.call(
|
|
2502
|
+
localValue,
|
|
2503
|
+
"value" /* Value */,
|
|
2504
|
+
options,
|
|
2505
|
+
{
|
|
2506
|
+
path,
|
|
2507
|
+
key: localKey,
|
|
2508
|
+
parentObj: localObj
|
|
2647
2509
|
}
|
|
2510
|
+
);
|
|
2511
|
+
if (newChildren) {
|
|
2512
|
+
children2.push(...newChildren);
|
|
2648
2513
|
} else if (localValue && typeof localValue === "object") {
|
|
2649
|
-
const
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
determineNodeType
|
|
2656
|
-
);
|
|
2657
|
-
if (parsedNode) {
|
|
2658
|
-
return {
|
|
2659
|
-
...rest,
|
|
2660
|
-
children: [
|
|
2661
|
-
...children2,
|
|
2662
|
-
{
|
|
2663
|
-
path: [...path, localKey],
|
|
2664
|
-
value: parsedNode
|
|
2665
|
-
}
|
|
2666
|
-
]
|
|
2667
|
-
};
|
|
2668
|
-
}
|
|
2669
|
-
} else {
|
|
2670
|
-
const result = parseLocalObject(accumulation.value, localValue, [
|
|
2671
|
-
...path,
|
|
2672
|
-
localKey
|
|
2673
|
-
]);
|
|
2674
|
-
return {
|
|
2675
|
-
value: result.value,
|
|
2676
|
-
children: [...children2, ...result.children]
|
|
2677
|
-
};
|
|
2678
|
-
}
|
|
2514
|
+
const result = parseLocalObject(accumulation.value, localValue, [
|
|
2515
|
+
...path,
|
|
2516
|
+
localKey
|
|
2517
|
+
]);
|
|
2518
|
+
value2 = result.value;
|
|
2519
|
+
children2.push(...result.children);
|
|
2679
2520
|
} else {
|
|
2680
|
-
|
|
2681
|
-
accumulation.value,
|
|
2682
|
-
[...path, localKey],
|
|
2683
|
-
localValue
|
|
2684
|
-
);
|
|
2685
|
-
return {
|
|
2686
|
-
children: children2,
|
|
2687
|
-
value: value2
|
|
2688
|
-
};
|
|
2521
|
+
value2 = setIn4(accumulation.value, [...path, localKey], localValue);
|
|
2689
2522
|
}
|
|
2690
|
-
return
|
|
2523
|
+
return {
|
|
2524
|
+
value: value2,
|
|
2525
|
+
children: children2
|
|
2526
|
+
};
|
|
2691
2527
|
}, defaultValue);
|
|
2692
2528
|
return newValue;
|
|
2693
2529
|
};
|
|
2694
2530
|
const { value, children } = parseLocalObject(void 0, obj);
|
|
2695
|
-
const baseAst = value === void 0 && children.length
|
|
2531
|
+
const baseAst = value === void 0 && !children.length ? void 0 : {
|
|
2696
2532
|
type,
|
|
2697
2533
|
value
|
|
2698
2534
|
};
|
|
2699
|
-
if (baseAst
|
|
2535
|
+
if (baseAst && children.length) {
|
|
2700
2536
|
const parent = baseAst;
|
|
2701
2537
|
parent.children = children;
|
|
2702
2538
|
children.forEach((child) => {
|
|
@@ -3206,7 +3042,7 @@ var Builder = class {
|
|
|
3206
3042
|
}
|
|
3207
3043
|
};
|
|
3208
3044
|
|
|
3209
|
-
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/plugins/template
|
|
3045
|
+
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/plugins/template.ts
|
|
3210
3046
|
import { SyncWaterfallHook as SyncWaterfallHook6 } from "tapable-ts";
|
|
3211
3047
|
var TemplatePlugin = class {
|
|
3212
3048
|
constructor(options) {
|
|
@@ -3272,28 +3108,33 @@ var TemplatePlugin = class {
|
|
|
3272
3108
|
}
|
|
3273
3109
|
return node;
|
|
3274
3110
|
});
|
|
3275
|
-
parser.hooks.determineNodeType.tap("template", (obj) => {
|
|
3276
|
-
if (obj === "template") {
|
|
3277
|
-
return "template" /* Template */;
|
|
3278
|
-
}
|
|
3279
|
-
});
|
|
3280
3111
|
parser.hooks.parseNode.tap(
|
|
3281
3112
|
"template",
|
|
3282
|
-
(obj, _nodeType, options,
|
|
3283
|
-
if (
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3113
|
+
(obj, _nodeType, options, childOptions) => {
|
|
3114
|
+
if (childOptions && hasTemplateKey(childOptions.key)) {
|
|
3115
|
+
return obj.map((template) => {
|
|
3116
|
+
const templateAST = parser.createASTNode(
|
|
3117
|
+
{
|
|
3118
|
+
type: "template" /* Template */,
|
|
3119
|
+
depth: options.templateDepth ?? 0,
|
|
3120
|
+
data: template.data,
|
|
3121
|
+
template: template.value,
|
|
3122
|
+
dynamic: template.dynamic ?? false
|
|
3123
|
+
},
|
|
3124
|
+
template
|
|
3125
|
+
);
|
|
3126
|
+
if (!templateAST)
|
|
3127
|
+
return;
|
|
3128
|
+
if (templateAST.type === "multi-node" /* MultiNode */) {
|
|
3129
|
+
templateAST.values.forEach((v) => {
|
|
3130
|
+
v.parent = templateAST;
|
|
3131
|
+
});
|
|
3132
|
+
}
|
|
3133
|
+
return {
|
|
3134
|
+
path: [...childOptions.path, template.output],
|
|
3135
|
+
value: templateAST
|
|
3136
|
+
};
|
|
3137
|
+
}).filter(Boolean);
|
|
3297
3138
|
}
|
|
3298
3139
|
}
|
|
3299
3140
|
);
|
|
@@ -3417,8 +3258,11 @@ var StringResolverPlugin = class {
|
|
|
3417
3258
|
};
|
|
3418
3259
|
|
|
3419
3260
|
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/plugins/applicability.ts
|
|
3420
|
-
import { omit as
|
|
3261
|
+
import { omit as omit2 } from "timm";
|
|
3421
3262
|
var ApplicabilityPlugin = class {
|
|
3263
|
+
isApplicability(obj) {
|
|
3264
|
+
return obj && Object.prototype.hasOwnProperty.call(obj, "applicability");
|
|
3265
|
+
}
|
|
3422
3266
|
applyResolver(resolver) {
|
|
3423
3267
|
resolver.hooks.beforeResolve.tap(
|
|
3424
3268
|
"applicability",
|
|
@@ -3436,34 +3280,38 @@ var ApplicabilityPlugin = class {
|
|
|
3436
3280
|
);
|
|
3437
3281
|
}
|
|
3438
3282
|
applyParser(parser) {
|
|
3439
|
-
parser.hooks.determineNodeType.tap("applicability", (obj) => {
|
|
3440
|
-
if (Object.prototype.hasOwnProperty.call(obj, "applicability")) {
|
|
3441
|
-
return "applicability" /* Applicability */;
|
|
3442
|
-
}
|
|
3443
|
-
});
|
|
3444
3283
|
parser.hooks.parseNode.tap(
|
|
3445
3284
|
"applicability",
|
|
3446
|
-
(obj, nodeType, options,
|
|
3447
|
-
if (
|
|
3285
|
+
(obj, nodeType, options, childOptions) => {
|
|
3286
|
+
if (this.isApplicability(obj)) {
|
|
3448
3287
|
const parsedApplicability = parser.parseObject(
|
|
3449
|
-
|
|
3288
|
+
omit2(obj, "applicability"),
|
|
3450
3289
|
nodeType,
|
|
3451
3290
|
options
|
|
3452
3291
|
);
|
|
3453
|
-
if (parsedApplicability
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
return
|
|
3292
|
+
if (!parsedApplicability) {
|
|
3293
|
+
return childOptions ? [] : null;
|
|
3294
|
+
}
|
|
3295
|
+
const applicabilityNode = parser.createASTNode(
|
|
3296
|
+
{
|
|
3297
|
+
type: "applicability" /* Applicability */,
|
|
3298
|
+
expression: obj.applicability,
|
|
3299
|
+
value: parsedApplicability
|
|
3300
|
+
},
|
|
3301
|
+
obj
|
|
3302
|
+
);
|
|
3303
|
+
if (!applicabilityNode) {
|
|
3304
|
+
return childOptions ? [] : null;
|
|
3305
|
+
}
|
|
3306
|
+
if (applicabilityNode.type === "applicability" /* Applicability */) {
|
|
3307
|
+
applicabilityNode.value.parent = applicabilityNode;
|
|
3466
3308
|
}
|
|
3309
|
+
return childOptions ? [
|
|
3310
|
+
{
|
|
3311
|
+
path: [...childOptions.path, childOptions.key],
|
|
3312
|
+
value: applicabilityNode
|
|
3313
|
+
}
|
|
3314
|
+
] : applicabilityNode;
|
|
3467
3315
|
}
|
|
3468
3316
|
}
|
|
3469
3317
|
);
|
|
@@ -3488,6 +3336,9 @@ var SwitchPlugin = class {
|
|
|
3488
3336
|
}
|
|
3489
3337
|
return EMPTY_NODE;
|
|
3490
3338
|
}
|
|
3339
|
+
isSwitch(obj) {
|
|
3340
|
+
return obj && (Object.prototype.hasOwnProperty.call(obj, "dynamicSwitch") || Object.prototype.hasOwnProperty.call(obj, "staticSwitch"));
|
|
3341
|
+
}
|
|
3491
3342
|
applyParser(parser) {
|
|
3492
3343
|
parser.hooks.onCreateASTNode.tap("switch", (node) => {
|
|
3493
3344
|
if (node && node.type === "switch" /* Switch */ && !node.dynamic) {
|
|
@@ -3495,19 +3346,14 @@ var SwitchPlugin = class {
|
|
|
3495
3346
|
}
|
|
3496
3347
|
return node;
|
|
3497
3348
|
});
|
|
3498
|
-
parser.hooks.determineNodeType.tap("switch", (obj) => {
|
|
3499
|
-
if (Object.prototype.hasOwnProperty.call(obj, "dynamicSwitch") || Object.prototype.hasOwnProperty.call(obj, "staticSwitch")) {
|
|
3500
|
-
return "switch" /* Switch */;
|
|
3501
|
-
}
|
|
3502
|
-
});
|
|
3503
3349
|
parser.hooks.parseNode.tap(
|
|
3504
3350
|
"switch",
|
|
3505
|
-
(obj, _nodeType, options,
|
|
3506
|
-
if (
|
|
3507
|
-
const
|
|
3508
|
-
const
|
|
3509
|
-
const
|
|
3510
|
-
switchContent.
|
|
3351
|
+
(obj, _nodeType, options, childOptions) => {
|
|
3352
|
+
if (this.isSwitch(obj) || childOptions && hasSwitchKey(childOptions.key)) {
|
|
3353
|
+
const objToParse = childOptions && hasSwitchKey(childOptions.key) ? { [childOptions.key]: obj } : obj;
|
|
3354
|
+
const dynamic = "dynamicSwitch" in objToParse;
|
|
3355
|
+
const switchContent = dynamic ? objToParse.dynamicSwitch : objToParse.staticSwitch;
|
|
3356
|
+
const cases = switchContent.map(
|
|
3511
3357
|
(switchCase) => {
|
|
3512
3358
|
const { case: switchCaseExpr, ...switchBody } = switchCase;
|
|
3513
3359
|
const value = parser.parseObject(
|
|
@@ -3516,30 +3362,41 @@ var SwitchPlugin = class {
|
|
|
3516
3362
|
options
|
|
3517
3363
|
);
|
|
3518
3364
|
if (value) {
|
|
3519
|
-
|
|
3365
|
+
return {
|
|
3520
3366
|
case: switchCaseExpr,
|
|
3521
3367
|
value
|
|
3522
|
-
}
|
|
3368
|
+
};
|
|
3523
3369
|
}
|
|
3370
|
+
return;
|
|
3524
3371
|
}
|
|
3525
|
-
);
|
|
3526
|
-
const switchAST = parser.
|
|
3372
|
+
).filter(Boolean);
|
|
3373
|
+
const switchAST = parser.createASTNode(
|
|
3527
3374
|
{
|
|
3528
3375
|
type: "switch" /* Switch */,
|
|
3529
3376
|
dynamic,
|
|
3530
3377
|
cases
|
|
3531
3378
|
},
|
|
3532
|
-
|
|
3379
|
+
objToParse
|
|
3533
3380
|
);
|
|
3534
|
-
if (switchAST
|
|
3381
|
+
if (!switchAST || switchAST.type === "empty" /* Empty */) {
|
|
3382
|
+
return childOptions ? [] : null;
|
|
3383
|
+
}
|
|
3384
|
+
if (switchAST.type === "switch" /* Switch */) {
|
|
3535
3385
|
switchAST.cases.forEach((sCase) => {
|
|
3536
3386
|
sCase.value.parent = switchAST;
|
|
3537
3387
|
});
|
|
3538
3388
|
}
|
|
3539
|
-
if (
|
|
3540
|
-
|
|
3389
|
+
if (childOptions) {
|
|
3390
|
+
let path = [...childOptions.path, childOptions.key];
|
|
3391
|
+
let value = switchAST;
|
|
3392
|
+
if (switchAST.type === "value" /* Value */ && switchAST.children?.length === 1 && switchAST.value === void 0) {
|
|
3393
|
+
const firstChild = switchAST.children[0];
|
|
3394
|
+
path = [...path, ...firstChild.path];
|
|
3395
|
+
value = firstChild.value;
|
|
3396
|
+
}
|
|
3397
|
+
return [{ path, value }];
|
|
3541
3398
|
}
|
|
3542
|
-
return switchAST
|
|
3399
|
+
return switchAST;
|
|
3543
3400
|
}
|
|
3544
3401
|
}
|
|
3545
3402
|
);
|
|
@@ -3558,6 +3415,79 @@ var SwitchPlugin = class {
|
|
|
3558
3415
|
}
|
|
3559
3416
|
};
|
|
3560
3417
|
|
|
3418
|
+
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/plugins/multi-node.ts
|
|
3419
|
+
var MultiNodePlugin = class {
|
|
3420
|
+
applyParser(parser) {
|
|
3421
|
+
parser.hooks.parseNode.tap(
|
|
3422
|
+
"multi-node",
|
|
3423
|
+
(obj, nodeType, options, childOptions) => {
|
|
3424
|
+
if (childOptions && !hasTemplateKey(childOptions.key) && Array.isArray(obj)) {
|
|
3425
|
+
const values = obj.map(
|
|
3426
|
+
(childVal) => parser.parseObject(childVal, "value" /* Value */, options)
|
|
3427
|
+
).filter((child) => !!child);
|
|
3428
|
+
if (!values.length) {
|
|
3429
|
+
return [];
|
|
3430
|
+
}
|
|
3431
|
+
const multiNode = parser.createASTNode(
|
|
3432
|
+
{
|
|
3433
|
+
type: "multi-node" /* MultiNode */,
|
|
3434
|
+
override: !hasTemplateValues(
|
|
3435
|
+
childOptions.parentObj,
|
|
3436
|
+
childOptions.key
|
|
3437
|
+
),
|
|
3438
|
+
values
|
|
3439
|
+
},
|
|
3440
|
+
obj
|
|
3441
|
+
);
|
|
3442
|
+
if (!multiNode) {
|
|
3443
|
+
return [];
|
|
3444
|
+
}
|
|
3445
|
+
if (multiNode.type === "multi-node" /* MultiNode */) {
|
|
3446
|
+
multiNode.values.forEach((v) => {
|
|
3447
|
+
v.parent = multiNode;
|
|
3448
|
+
});
|
|
3449
|
+
}
|
|
3450
|
+
return [
|
|
3451
|
+
{
|
|
3452
|
+
path: [...childOptions.path, childOptions.key],
|
|
3453
|
+
value: multiNode
|
|
3454
|
+
}
|
|
3455
|
+
];
|
|
3456
|
+
}
|
|
3457
|
+
}
|
|
3458
|
+
);
|
|
3459
|
+
}
|
|
3460
|
+
apply(view) {
|
|
3461
|
+
view.hooks.parser.tap("multi-node", this.applyParser.bind(this));
|
|
3462
|
+
}
|
|
3463
|
+
};
|
|
3464
|
+
|
|
3465
|
+
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/view/plugins/asset.ts
|
|
3466
|
+
var AssetPlugin = class {
|
|
3467
|
+
applyParser(parser) {
|
|
3468
|
+
parser.hooks.parseNode.tap(
|
|
3469
|
+
"asset",
|
|
3470
|
+
(obj, nodeType, options, childOptions) => {
|
|
3471
|
+
if (childOptions?.key === "asset" && typeof obj === "object") {
|
|
3472
|
+
const assetAST = parser.parseObject(obj, "asset" /* Asset */, options);
|
|
3473
|
+
if (!assetAST) {
|
|
3474
|
+
return [];
|
|
3475
|
+
}
|
|
3476
|
+
return [
|
|
3477
|
+
{
|
|
3478
|
+
path: [...childOptions.path, childOptions.key],
|
|
3479
|
+
value: assetAST
|
|
3480
|
+
}
|
|
3481
|
+
];
|
|
3482
|
+
}
|
|
3483
|
+
}
|
|
3484
|
+
);
|
|
3485
|
+
}
|
|
3486
|
+
apply(view) {
|
|
3487
|
+
view.hooks.parser.tap("asset", this.applyParser.bind(this));
|
|
3488
|
+
}
|
|
3489
|
+
};
|
|
3490
|
+
|
|
3561
3491
|
// ../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/core/player/src/player.ts
|
|
3562
3492
|
import { setIn as setIn7 } from "timm";
|
|
3563
3493
|
import deferred from "p-defer";
|
|
@@ -5047,12 +4977,14 @@ var DefaultViewPlugin = class {
|
|
|
5047
4977
|
player.hooks.viewController.tap(this.name, (viewController) => {
|
|
5048
4978
|
viewController.hooks.view.tap(this.name, (view) => {
|
|
5049
4979
|
const pluginOptions = toNodeResolveOptions(view.resolverOptions);
|
|
4980
|
+
new AssetPlugin().apply(view);
|
|
5050
4981
|
new SwitchPlugin(pluginOptions).apply(view);
|
|
5051
4982
|
new ApplicabilityPlugin().apply(view);
|
|
5052
4983
|
new StringResolverPlugin().apply(view);
|
|
5053
4984
|
const templatePlugin = new TemplatePlugin(pluginOptions);
|
|
5054
4985
|
templatePlugin.apply(view);
|
|
5055
4986
|
view.hooks.onTemplatePluginCreated.call(templatePlugin);
|
|
4987
|
+
new MultiNodePlugin().apply(view);
|
|
5056
4988
|
});
|
|
5057
4989
|
});
|
|
5058
4990
|
}
|
|
@@ -5397,6 +5329,7 @@ _Player.info = {
|
|
|
5397
5329
|
var Player = _Player;
|
|
5398
5330
|
export {
|
|
5399
5331
|
ApplicabilityPlugin,
|
|
5332
|
+
AssetPlugin,
|
|
5400
5333
|
AssetTransformCorePlugin,
|
|
5401
5334
|
BINDING_BRACKETS_REGEX,
|
|
5402
5335
|
BindingInstance,
|
|
@@ -5416,6 +5349,7 @@ export {
|
|
|
5416
5349
|
FlowInstance,
|
|
5417
5350
|
LocalModel,
|
|
5418
5351
|
LocalStateStore,
|
|
5352
|
+
MultiNodePlugin,
|
|
5419
5353
|
NOOPDataModel,
|
|
5420
5354
|
NOOP_MODEL,
|
|
5421
5355
|
NOT_STARTED_STATE,
|
|
@@ -5449,7 +5383,9 @@ export {
|
|
|
5449
5383
|
findNextExp,
|
|
5450
5384
|
getBindingSegments,
|
|
5451
5385
|
getNodeID,
|
|
5452
|
-
|
|
5386
|
+
hasSwitchKey,
|
|
5387
|
+
hasTemplateKey,
|
|
5388
|
+
hasTemplateValues,
|
|
5453
5389
|
isBinding,
|
|
5454
5390
|
isErrorWithLocation,
|
|
5455
5391
|
isExpressionNode,
|