@khorsheed/dsh-game 0.1.0 → 0.1.1
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/CHANGELOG.md +8 -0
- package/lib/client.js +637 -295
- package/lib/index.js +144 -1
- package/lib/typert.host.js +142 -35
- package/lib/typert.remote-client.d.ts +4 -1
- package/lib/typert.remote-client.js +81 -25
- package/lib/types/agent.js +2 -1
- package/lib/types/client/DesignView.js +3 -3
- package/lib/types/client/ElementsView.js +13 -5
- package/lib/types/client/GameTab.js +11 -6
- package/lib/types/client/PlayView.js +3 -1
- package/lib/types/client/Preview3D.d.ts +3 -1
- package/lib/types/client/Preview3D.js +4 -2
- package/lib/types/client/ProjectSwitcher.js +2 -2
- package/lib/types/client/contract.d.ts +7 -1
- package/lib/types/client/index.js +34 -0
- package/lib/types/client/locales.d.ts +3 -0
- package/lib/types/client/locales.js +6 -0
- package/lib/types/client/preview-entry.d.ts +1 -1
- package/lib/types/client/preview-entry.js +4 -1
- package/lib/types/client/reveal.d.ts +43 -0
- package/lib/types/client/reveal.js +73 -0
- package/lib/types/project.d.ts +6 -0
- package/lib/types/project.js +10 -0
- package/lib/types/remote.d.ts +3 -1
- package/lib/types/remote.js +7 -0
- package/lib/types/skills.js +1 -0
- package/lib/types/store.d.ts +22 -1
- package/lib/types/store.js +99 -1
- package/lib/types/tools.js +15 -7
- package/lib/types/types.d.ts +26 -0
- package/lib/types/vfs.d.ts +2 -0
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -18846,7 +18846,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18846
18846
|
xor: () => xor
|
|
18847
18847
|
});
|
|
18848
18848
|
//#endregion
|
|
18849
|
-
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.2.1-rc.
|
|
18849
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.2.1-rc.3_@deepseek-ai+cordis@4.0.4/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/remote-info.js
|
|
18850
18850
|
/** Lazy assembly of generated Remote definitions using caller-supplied Zod; no runtime imports. */
|
|
18851
18851
|
/**
|
|
18852
18852
|
* Retain one generated definition per endpoint without constructing parsers or projections.
|
|
@@ -19304,6 +19304,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19304
19304
|
literal("trash-failed")
|
|
19305
19305
|
]).readonly()
|
|
19306
19306
|
}), object({ "ok": literal(true).readonly() })]);
|
|
19307
|
+
let _khorsheed_dsh_game_game_liveVersion_parameter_0$schema$value;
|
|
19308
|
+
const _khorsheed_dsh_game_game_liveVersion_parameter_0$schema = () => _khorsheed_dsh_game_game_liveVersion_parameter_0$schema$value ??= string$1();
|
|
19309
|
+
let _khorsheed_dsh_game_game_liveVersion_result$schema$value;
|
|
19310
|
+
const _khorsheed_dsh_game_game_liveVersion_result$schema = () => _khorsheed_dsh_game_game_liveVersion_result$schema$value ??= union([literal(null), object({
|
|
19311
|
+
"projectId": string$1().readonly(),
|
|
19312
|
+
"version": number$1().readonly(),
|
|
19313
|
+
"kind": union([
|
|
19314
|
+
literal("none"),
|
|
19315
|
+
literal("candidate"),
|
|
19316
|
+
literal("deployed")
|
|
19317
|
+
]).readonly(),
|
|
19318
|
+
"at": union([literal(null), string$1()]).readonly(),
|
|
19319
|
+
"by": union([
|
|
19320
|
+
literal("user"),
|
|
19321
|
+
literal("agent"),
|
|
19322
|
+
literal("turn")
|
|
19323
|
+
]).readonly().optional(),
|
|
19324
|
+
"show": object({
|
|
19325
|
+
"seq": number$1().readonly(),
|
|
19326
|
+
"target": object({
|
|
19327
|
+
"view": union([
|
|
19328
|
+
literal("versions"),
|
|
19329
|
+
literal("play"),
|
|
19330
|
+
literal("elements"),
|
|
19331
|
+
literal("design")
|
|
19332
|
+
]).readonly(),
|
|
19333
|
+
"elementId": string$1().readonly().optional(),
|
|
19334
|
+
"chapterId": string$1().readonly().optional()
|
|
19335
|
+
}).readonly(),
|
|
19336
|
+
"note": string$1().readonly().describe("What to look at, in the agent's words (shown with the notice)."),
|
|
19337
|
+
"at": string$1().readonly()
|
|
19338
|
+
}).readonly().optional().describe("The agent's latest request to show the user something, if any since the host started.")
|
|
19339
|
+
})]);
|
|
19307
19340
|
let _khorsheed_dsh_game_game_logPlay_parameter_0$schema$value;
|
|
19308
19341
|
const _khorsheed_dsh_game_game_logPlay_parameter_0$schema = () => _khorsheed_dsh_game_game_logPlay_parameter_0$schema$value ??= string$1();
|
|
19309
19342
|
let _khorsheed_dsh_game_game_logPlay_parameter_1$schema$value;
|
|
@@ -19719,7 +19752,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19719
19752
|
}).readonly().optional()
|
|
19720
19753
|
})
|
|
19721
19754
|
]).readonly().describe("The 3D look, if the element has one (3d-three projects)."),
|
|
19722
|
-
"lore": string$1().readonly().describe("The 设定 text (the element's `lore` field): who it is, its temper, how it meets the player. '' when unwritten.")
|
|
19755
|
+
"lore": string$1().readonly().describe("The 设定 text (the element's `lore` field): who it is, its temper, how it meets the player. '' when unwritten."),
|
|
19756
|
+
"updatedAt": number$1().readonly().optional().describe("When its file last changed (ms), for listing the newest first.")
|
|
19723
19757
|
})).readonly(),
|
|
19724
19758
|
"elementErrors": array(object({
|
|
19725
19759
|
"where": string$1().readonly().describe("`smoke`, `data`, or the test file's project-relative path."),
|
|
@@ -20125,6 +20159,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20125
20159
|
const _khorsheed_dsh_game_game_finalizeParams_parameter_0_strict$schema = () => _khorsheed_dsh_game_game_finalizeParams_parameter_0_strict$schema$value ??= string$1();
|
|
20126
20160
|
let _khorsheed_dsh_game_game_finalizeParams_parameter_1_strict$schema$value;
|
|
20127
20161
|
const _khorsheed_dsh_game_game_finalizeParams_parameter_1_strict$schema = () => _khorsheed_dsh_game_game_finalizeParams_parameter_1_strict$schema$value ??= strictObject({ "projectId": string$1() });
|
|
20162
|
+
let _khorsheed_dsh_game_game_liveVersion_parameter_0_strict$schema$value;
|
|
20163
|
+
const _khorsheed_dsh_game_game_liveVersion_parameter_0_strict$schema = () => _khorsheed_dsh_game_game_liveVersion_parameter_0_strict$schema$value ??= string$1();
|
|
20128
20164
|
let _khorsheed_dsh_game_game_logPlay_parameter_0_strict$schema$value;
|
|
20129
20165
|
const _khorsheed_dsh_game_game_logPlay_parameter_0_strict$schema = () => _khorsheed_dsh_game_game_logPlay_parameter_0_strict$schema$value ??= string$1();
|
|
20130
20166
|
let _khorsheed_dsh_game_game_logPlay_parameter_1_strict$schema$value;
|
|
@@ -20315,7 +20351,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20315
20351
|
},
|
|
20316
20352
|
sourceLocation: {
|
|
20317
20353
|
"file": "packages/game/src/remote.ts",
|
|
20318
|
-
"line":
|
|
20354
|
+
"line": 73,
|
|
20319
20355
|
"column": 3
|
|
20320
20356
|
}
|
|
20321
20357
|
},
|
|
@@ -20372,7 +20408,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20372
20408
|
},
|
|
20373
20409
|
sourceLocation: {
|
|
20374
20410
|
"file": "packages/game/src/remote.ts",
|
|
20375
|
-
"line":
|
|
20411
|
+
"line": 85,
|
|
20376
20412
|
"column": 3
|
|
20377
20413
|
}
|
|
20378
20414
|
},
|
|
@@ -20546,7 +20582,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20546
20582
|
},
|
|
20547
20583
|
sourceLocation: {
|
|
20548
20584
|
"file": "packages/game/src/remote.ts",
|
|
20549
|
-
"line":
|
|
20585
|
+
"line": 97,
|
|
20550
20586
|
"column": 3
|
|
20551
20587
|
}
|
|
20552
20588
|
},
|
|
@@ -20632,7 +20668,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20632
20668
|
},
|
|
20633
20669
|
sourceLocation: {
|
|
20634
20670
|
"file": "packages/game/src/remote.ts",
|
|
20635
|
-
"line":
|
|
20671
|
+
"line": 204,
|
|
20636
20672
|
"column": 3
|
|
20637
20673
|
}
|
|
20638
20674
|
},
|
|
@@ -20786,7 +20822,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20786
20822
|
},
|
|
20787
20823
|
sourceLocation: {
|
|
20788
20824
|
"file": "packages/game/src/remote.ts",
|
|
20789
|
-
"line":
|
|
20825
|
+
"line": 103,
|
|
20790
20826
|
"column": 9
|
|
20791
20827
|
}
|
|
20792
20828
|
},
|
|
@@ -20883,7 +20919,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20883
20919
|
},
|
|
20884
20920
|
sourceLocation: {
|
|
20885
20921
|
"file": "packages/game/src/remote.ts",
|
|
20886
|
-
"line":
|
|
20922
|
+
"line": 91,
|
|
20887
20923
|
"column": 9
|
|
20888
20924
|
}
|
|
20889
20925
|
},
|
|
@@ -20993,7 +21029,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20993
21029
|
},
|
|
20994
21030
|
sourceLocation: {
|
|
20995
21031
|
"file": "packages/game/src/remote.ts",
|
|
20996
|
-
"line":
|
|
21032
|
+
"line": 67,
|
|
20997
21033
|
"column": 9
|
|
20998
21034
|
}
|
|
20999
21035
|
},
|
|
@@ -21111,7 +21147,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21111
21147
|
},
|
|
21112
21148
|
sourceLocation: {
|
|
21113
21149
|
"file": "packages/game/src/remote.ts",
|
|
21114
|
-
"line":
|
|
21150
|
+
"line": 198,
|
|
21115
21151
|
"column": 3
|
|
21116
21152
|
}
|
|
21117
21153
|
},
|
|
@@ -21211,7 +21247,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21211
21247
|
},
|
|
21212
21248
|
sourceLocation: {
|
|
21213
21249
|
"file": "packages/game/src/remote.ts",
|
|
21214
|
-
"line":
|
|
21250
|
+
"line": 121,
|
|
21215
21251
|
"column": 9
|
|
21216
21252
|
}
|
|
21217
21253
|
},
|
|
@@ -21318,7 +21354,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21318
21354
|
},
|
|
21319
21355
|
sourceLocation: {
|
|
21320
21356
|
"file": "packages/game/src/remote.ts",
|
|
21321
|
-
"line":
|
|
21357
|
+
"line": 145,
|
|
21322
21358
|
"column": 9
|
|
21323
21359
|
}
|
|
21324
21360
|
},
|
|
@@ -21412,10 +21448,118 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21412
21448
|
},
|
|
21413
21449
|
sourceLocation: {
|
|
21414
21450
|
"file": "packages/game/src/remote.ts",
|
|
21415
|
-
"line":
|
|
21451
|
+
"line": 133,
|
|
21416
21452
|
"column": 9
|
|
21417
21453
|
}
|
|
21418
21454
|
},
|
|
21455
|
+
"game/liveVersion": {
|
|
21456
|
+
service: "gameRemote",
|
|
21457
|
+
description: "The bound project's newest version (cheap; the page polls it).",
|
|
21458
|
+
invocation: { kind: "direct" },
|
|
21459
|
+
parameters: [{
|
|
21460
|
+
name: "sessionId",
|
|
21461
|
+
source: "json",
|
|
21462
|
+
codec: {
|
|
21463
|
+
mode: "strict",
|
|
21464
|
+
typeSymbol: "@deepseek-ai/dsh-session/types#SessionId",
|
|
21465
|
+
create: _khorsheed_dsh_game_game_liveVersion_parameter_0$schema,
|
|
21466
|
+
schema: _khorsheed_dsh_game_game_liveVersion_parameter_0$schema(),
|
|
21467
|
+
jsonSchema: { "type": "string" }
|
|
21468
|
+
},
|
|
21469
|
+
strictCodec: {
|
|
21470
|
+
mode: "strict",
|
|
21471
|
+
typeSymbol: "@deepseek-ai/dsh-session/types#SessionId",
|
|
21472
|
+
create: _khorsheed_dsh_game_game_liveVersion_parameter_0_strict$schema,
|
|
21473
|
+
schema: _khorsheed_dsh_game_game_liveVersion_parameter_0_strict$schema(),
|
|
21474
|
+
jsonSchema: { "type": "string" }
|
|
21475
|
+
}
|
|
21476
|
+
}],
|
|
21477
|
+
result: {
|
|
21478
|
+
mode: "strict",
|
|
21479
|
+
typeSymbol: "@khorsheed/dsh-game#game/liveVersion:result",
|
|
21480
|
+
create: _khorsheed_dsh_game_game_liveVersion_result$schema,
|
|
21481
|
+
schema: _khorsheed_dsh_game_game_liveVersion_result$schema(),
|
|
21482
|
+
jsonSchema: { "oneOf": [{
|
|
21483
|
+
"type": "null",
|
|
21484
|
+
"const": null
|
|
21485
|
+
}, {
|
|
21486
|
+
"type": "object",
|
|
21487
|
+
"properties": {
|
|
21488
|
+
"projectId": { "type": "string" },
|
|
21489
|
+
"version": { "type": "number" },
|
|
21490
|
+
"kind": {
|
|
21491
|
+
"type": "string",
|
|
21492
|
+
"enum": [
|
|
21493
|
+
"none",
|
|
21494
|
+
"candidate",
|
|
21495
|
+
"deployed"
|
|
21496
|
+
]
|
|
21497
|
+
},
|
|
21498
|
+
"at": { "oneOf": [{
|
|
21499
|
+
"type": "null",
|
|
21500
|
+
"const": null
|
|
21501
|
+
}, { "type": "string" }] },
|
|
21502
|
+
"by": {
|
|
21503
|
+
"type": "string",
|
|
21504
|
+
"enum": [
|
|
21505
|
+
"user",
|
|
21506
|
+
"agent",
|
|
21507
|
+
"turn"
|
|
21508
|
+
]
|
|
21509
|
+
},
|
|
21510
|
+
"show": {
|
|
21511
|
+
"type": "object",
|
|
21512
|
+
"properties": {
|
|
21513
|
+
"seq": { "type": "number" },
|
|
21514
|
+
"target": {
|
|
21515
|
+
"type": "object",
|
|
21516
|
+
"properties": {
|
|
21517
|
+
"view": {
|
|
21518
|
+
"type": "string",
|
|
21519
|
+
"enum": [
|
|
21520
|
+
"versions",
|
|
21521
|
+
"play",
|
|
21522
|
+
"elements",
|
|
21523
|
+
"design"
|
|
21524
|
+
]
|
|
21525
|
+
},
|
|
21526
|
+
"elementId": { "type": "string" },
|
|
21527
|
+
"chapterId": { "type": "string" }
|
|
21528
|
+
},
|
|
21529
|
+
"required": ["view"],
|
|
21530
|
+
"additionalProperties": true
|
|
21531
|
+
},
|
|
21532
|
+
"note": {
|
|
21533
|
+
"type": "string",
|
|
21534
|
+
"description": "What to look at, in the agent's words (shown with the notice)."
|
|
21535
|
+
},
|
|
21536
|
+
"at": { "type": "string" }
|
|
21537
|
+
},
|
|
21538
|
+
"required": [
|
|
21539
|
+
"seq",
|
|
21540
|
+
"target",
|
|
21541
|
+
"note",
|
|
21542
|
+
"at"
|
|
21543
|
+
],
|
|
21544
|
+
"additionalProperties": true,
|
|
21545
|
+
"description": "The agent's latest request to show the user something, if any since the host started."
|
|
21546
|
+
}
|
|
21547
|
+
},
|
|
21548
|
+
"required": [
|
|
21549
|
+
"projectId",
|
|
21550
|
+
"version",
|
|
21551
|
+
"kind",
|
|
21552
|
+
"at"
|
|
21553
|
+
],
|
|
21554
|
+
"additionalProperties": true
|
|
21555
|
+
}] }
|
|
21556
|
+
},
|
|
21557
|
+
sourceLocation: {
|
|
21558
|
+
"file": "packages/game/src/remote.ts",
|
|
21559
|
+
"line": 49,
|
|
21560
|
+
"column": 3
|
|
21561
|
+
}
|
|
21562
|
+
},
|
|
21419
21563
|
"game/logPlay": {
|
|
21420
21564
|
service: "gameRemote",
|
|
21421
21565
|
description: "Record one play session into the playtest log.",
|
|
@@ -21532,7 +21676,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21532
21676
|
},
|
|
21533
21677
|
sourceLocation: {
|
|
21534
21678
|
"file": "packages/game/src/remote.ts",
|
|
21535
|
-
"line":
|
|
21679
|
+
"line": 115,
|
|
21536
21680
|
"column": 9
|
|
21537
21681
|
}
|
|
21538
21682
|
},
|
|
@@ -21646,7 +21790,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21646
21790
|
},
|
|
21647
21791
|
sourceLocation: {
|
|
21648
21792
|
"file": "packages/game/src/remote.ts",
|
|
21649
|
-
"line":
|
|
21793
|
+
"line": 162,
|
|
21650
21794
|
"column": 9
|
|
21651
21795
|
}
|
|
21652
21796
|
},
|
|
@@ -21697,7 +21841,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21697
21841
|
},
|
|
21698
21842
|
sourceLocation: {
|
|
21699
21843
|
"file": "packages/game/src/remote.ts",
|
|
21700
|
-
"line":
|
|
21844
|
+
"line": 61,
|
|
21701
21845
|
"column": 3
|
|
21702
21846
|
}
|
|
21703
21847
|
},
|
|
@@ -21797,7 +21941,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21797
21941
|
},
|
|
21798
21942
|
sourceLocation: {
|
|
21799
21943
|
"file": "packages/game/src/remote.ts",
|
|
21800
|
-
"line":
|
|
21944
|
+
"line": 186,
|
|
21801
21945
|
"column": 9
|
|
21802
21946
|
}
|
|
21803
21947
|
},
|
|
@@ -21897,7 +22041,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21897
22041
|
},
|
|
21898
22042
|
sourceLocation: {
|
|
21899
22043
|
"file": "packages/game/src/remote.ts",
|
|
21900
|
-
"line":
|
|
22044
|
+
"line": 180,
|
|
21901
22045
|
"column": 9
|
|
21902
22046
|
}
|
|
21903
22047
|
},
|
|
@@ -21991,7 +22135,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21991
22135
|
},
|
|
21992
22136
|
sourceLocation: {
|
|
21993
22137
|
"file": "packages/game/src/remote.ts",
|
|
21994
|
-
"line":
|
|
22138
|
+
"line": 139,
|
|
21995
22139
|
"column": 9
|
|
21996
22140
|
}
|
|
21997
22141
|
},
|
|
@@ -22091,7 +22235,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22091
22235
|
},
|
|
22092
22236
|
sourceLocation: {
|
|
22093
22237
|
"file": "packages/game/src/remote.ts",
|
|
22094
|
-
"line":
|
|
22238
|
+
"line": 192,
|
|
22095
22239
|
"column": 9
|
|
22096
22240
|
}
|
|
22097
22241
|
},
|
|
@@ -22191,7 +22335,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22191
22335
|
},
|
|
22192
22336
|
sourceLocation: {
|
|
22193
22337
|
"file": "packages/game/src/remote.ts",
|
|
22194
|
-
"line":
|
|
22338
|
+
"line": 109,
|
|
22195
22339
|
"column": 9
|
|
22196
22340
|
}
|
|
22197
22341
|
},
|
|
@@ -22295,7 +22439,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22295
22439
|
},
|
|
22296
22440
|
sourceLocation: {
|
|
22297
22441
|
"file": "packages/game/src/remote.ts",
|
|
22298
|
-
"line":
|
|
22442
|
+
"line": 174,
|
|
22299
22443
|
"column": 9
|
|
22300
22444
|
}
|
|
22301
22445
|
},
|
|
@@ -22405,7 +22549,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22405
22549
|
},
|
|
22406
22550
|
sourceLocation: {
|
|
22407
22551
|
"file": "packages/game/src/remote.ts",
|
|
22408
|
-
"line":
|
|
22552
|
+
"line": 127,
|
|
22409
22553
|
"column": 9
|
|
22410
22554
|
}
|
|
22411
22555
|
},
|
|
@@ -22650,7 +22794,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22650
22794
|
},
|
|
22651
22795
|
sourceLocation: {
|
|
22652
22796
|
"file": "packages/game/src/remote.ts",
|
|
22653
|
-
"line":
|
|
22797
|
+
"line": 55,
|
|
22654
22798
|
"column": 3
|
|
22655
22799
|
}
|
|
22656
22800
|
},
|
|
@@ -22701,7 +22845,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22701
22845
|
},
|
|
22702
22846
|
sourceLocation: {
|
|
22703
22847
|
"file": "packages/game/src/remote.ts",
|
|
22704
|
-
"line":
|
|
22848
|
+
"line": 210,
|
|
22705
22849
|
"column": 3
|
|
22706
22850
|
}
|
|
22707
22851
|
},
|
|
@@ -22752,7 +22896,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22752
22896
|
},
|
|
22753
22897
|
sourceLocation: {
|
|
22754
22898
|
"file": "packages/game/src/remote.ts",
|
|
22755
|
-
"line":
|
|
22899
|
+
"line": 79,
|
|
22756
22900
|
"column": 3
|
|
22757
22901
|
}
|
|
22758
22902
|
},
|
|
@@ -22862,14 +23006,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22862
23006
|
},
|
|
22863
23007
|
sourceLocation: {
|
|
22864
23008
|
"file": "packages/game/src/remote.ts",
|
|
22865
|
-
"line":
|
|
23009
|
+
"line": 168,
|
|
22866
23010
|
"column": 9
|
|
22867
23011
|
}
|
|
22868
23012
|
}
|
|
22869
23013
|
}
|
|
22870
23014
|
}, external_exports);
|
|
22871
23015
|
//#endregion
|
|
22872
|
-
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-session@0.2.1-rc.
|
|
23016
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-session@0.2.1-rc.3_@deepseek-ai+cordis@4.0.4_@deepseek-ai+dsh-scope@0._a4f9aa29af8d436e2dcb9e4e85687430/node_modules/@deepseek-ai/dsh-session/lib/types/surface.js
|
|
22873
23017
|
/** Runtime counterpart of the message-producing event union. */
|
|
22874
23018
|
const SURFACE_EVENT_TYPES = /* @__PURE__ */ new Set([
|
|
22875
23019
|
"system/message",
|
|
@@ -22913,16 +23057,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22913
23057
|
document.head.appendChild(tag);
|
|
22914
23058
|
}
|
|
22915
23059
|
var ChatRow_module_css_default = {
|
|
22916
|
-
"list": "Zcoxaa_list",
|
|
22917
23060
|
"wrap": "Zcoxaa_wrap",
|
|
22918
|
-
"head": "Zcoxaa_head",
|
|
22919
23061
|
"summary": "Zcoxaa_summary",
|
|
23062
|
+
"list": "Zcoxaa_list",
|
|
22920
23063
|
"title": "Zcoxaa_title",
|
|
22921
|
-
"
|
|
23064
|
+
"note": "Zcoxaa_note",
|
|
22922
23065
|
"dot": "Zcoxaa_dot",
|
|
23066
|
+
"pre": "Zcoxaa_pre",
|
|
23067
|
+
"body": "Zcoxaa_body",
|
|
22923
23068
|
"chevron": "Zcoxaa_chevron",
|
|
22924
|
-
"
|
|
22925
|
-
"pre": "Zcoxaa_pre"
|
|
23069
|
+
"head": "Zcoxaa_head"
|
|
22926
23070
|
};
|
|
22927
23071
|
//#endregion
|
|
22928
23072
|
//#region src/client/chat-node.tsx
|
|
@@ -23763,7 +23907,10 @@ builtKey = rebuildKey(lookNow())
|
|
|
23763
23907
|
await fit()
|
|
23764
23908
|
addEventListener('dshelements', () => { setTimeout(edited) })
|
|
23765
23909
|
const canvas = world.canvas
|
|
23766
|
-
canvas.addEventListener('pointerdown', e => {
|
|
23910
|
+
canvas.addEventListener('pointerdown', e => {
|
|
23911
|
+
drag = { x: e.clientX, y: e.clientY }; spinning = false; canvas.setPointerCapture(e.pointerId)
|
|
23912
|
+
parent.postMessage({ gamedev: 'preview-turned' }, '*')
|
|
23913
|
+
})
|
|
23767
23914
|
canvas.addEventListener('pointermove', e => {
|
|
23768
23915
|
if (drag === null) return
|
|
23769
23916
|
yaw -= (e.clientX - drag.x) * 0.5
|
|
@@ -23783,7 +23930,7 @@ if (mode === 'still') {
|
|
|
23783
23930
|
const PREVIEW_HTML = "<style>html,body{margin:0;height:100%;overflow:hidden}canvas{width:100%;height:100%;display:block;touch-action:none}</style><canvas></canvas><script type=\"module\" src=\"_preview/main.js\"><\/script>";
|
|
23784
23931
|
//#endregion
|
|
23785
23932
|
//#region \0dsh-css:src/client/GameTab.module.css.mjs
|
|
23786
|
-
const css$7 = ".vNLA3W_root{--g-accent:var(--dsw-alias-brand-primary);--g-soft:color-mix(in srgb, var(--dsw-alias-brand-primary) 9%, var(--dsw-alias-bg-base));--g-line:var(--dsw-alias-border-l1);--g-card:var(--dsw-alias-bg-layer-1);--g-ok:var(--dsw-alias-state-success-primary);--g-warn:var(--dsw-alias-state-warn-primary);--g-err:var(--dsw-alias-state-error-primary);--g-screen:#0d1020;--g-screen-bar:#161b33;--g-screen-line:#2a3152;--g-screen-fg:#d6dcf5;--g-screen-dim:#8c95ba;background:var(--dsw-alias-bg-base);height:100%;color:var(--dsw-alias-label-primary);position:relative}.vNLA3W_scroll{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px 14px 56px;display:flex;overflow:auto}.vNLA3W_scroll>*{flex-shrink:0}.vNLA3W_spacer{flex:1}.vNLA3W_lead{color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-body,13px);margin:0;line-height:1.6}.vNLA3W_metaLine{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_count{color:var(--dsw-alias-label-tertiary);font-weight:400;font-size:var(--dsh-panel-text-meta,12px);margin-left:6px}.vNLA3W_eyebrow{font-size:var(--dsh-panel-text-meta,12px);letter-spacing:.06em;color:var(--g-accent);font-weight:600}.vNLA3W_warnText{color:var(--g-warn);font-size:var(--dsh-panel-text-body,13px);margin:0}.vNLA3W_badge{font-size:var(--dsh-panel-text-meta,12px);background:color-mix(in srgb, var(--g-warn) 14%, transparent);color:var(--g-warn);border-radius:8px;align-items:center;margin-left:6px;padding:0 6px;font-weight:500;display:inline-flex}.vNLA3W_primary,.vNLA3W_ghost,.vNLA3W_link,.vNLA3W_seg,.vNLA3W_stageBtn{box-sizing:border-box;font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border-radius:var(--dsw-radius-sm,6px);justify-content:center;align-items:center;gap:4px;min-height:28px;padding:0 10px;line-height:18px;display:inline-flex}.vNLA3W_primary{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);border:0}.vNLA3W_primary:disabled,.vNLA3W_ghost:disabled{opacity:.4;cursor:not-allowed}.vNLA3W_ghost{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.vNLA3W_ghost[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-active)}.vNLA3W_link{color:var(--dsw-alias-label-secondary);background:0 0;border:0;min-height:24px;padding:0 2px}.vNLA3W_link[aria-pressed=true]{color:var(--dsw-alias-label-primary)}.vNLA3W_primary:focus-visible,.vNLA3W_ghost:focus-visible,.vNLA3W_link:focus-visible,.vNLA3W_seg:focus-visible,.vNLA3W_stageBtn:focus-visible,.vNLA3W_elOpen:focus-visible,.vNLA3W_styleCard:focus-visible,.vNLA3W_chapterHead:focus-visible,.vNLA3W_swatchBtn:focus-visible,.vNLA3W_strip:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_input,.vNLA3W_textarea{font:inherit;font-size:var(--dsh-panel-text-body,13px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:7px;min-width:0;padding:6px 9px}.vNLA3W_textarea{box-sizing:border-box;resize:vertical;width:100%;line-height:1.55}.vNLA3W_rowEnd{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.vNLA3W_footRow{justify-content:center;display:flex}.vNLA3W_headMeta{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.vNLA3W_headChip{font-size:var(--dsh-panel-text-meta,12px);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:10px;padding:1px 8px}.vNLA3W_headChip[data-tone=ok]{color:var(--g-ok);background:color-mix(in srgb, var(--g-ok) 12%, transparent)}.vNLA3W_headChip[data-tone=info]{color:var(--g-accent);background:color-mix(in srgb, var(--g-accent) 12%, transparent)}.vNLA3W_switches{align-items:center;gap:12px;display:inline-flex}.vNLA3W_switch{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.vNLA3W_titleSwitch{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-items:center;gap:4px;min-height:28px;padding:2px 4px 2px 0;font-weight:600;display:inline-flex}.vNLA3W_root strong:has(>.vNLA3W_titleSwitch){flex-shrink:0}.vNLA3W_headMeta{flex-wrap:nowrap;min-width:0;overflow:hidden}.vNLA3W_titleSwitch span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:12em;overflow:hidden}.vNLA3W_titleSwitch:focus-visible{outline:2px solid var(--g-accent)}.vNLA3W_titleCaret{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_projectGrid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.vNLA3W_projectCard,.vNLA3W_newCard{border:1px solid var(--g-line);background:var(--g-card);font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:12px;flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.vNLA3W_projectCard[aria-current=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_projectCard[data-loading=true]{cursor:default;padding:16px}.vNLA3W_projectCardWrap{flex-direction:column;display:flex;position:relative}.vNLA3W_projectCardWrap>.vNLA3W_projectCard{flex:1}.vNLA3W_projectDelete{cursor:pointer;width:26px;height:26px;font:inherit;background:color-mix(in srgb, var(--g-screen) 70%, transparent);color:var(--g-screen-fg);border:0;border-radius:13px;place-items:center;font-size:16px;line-height:1;display:grid;position:absolute;top:6px;right:6px}.vNLA3W_projectDelete:hover{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-inverted)}.vNLA3W_projectDelete:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_projectCard[data-confirm=true]{cursor:default;border-color:var(--dsw-alias-state-error-primary)}.vNLA3W_deleteActions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.vNLA3W_deleteError{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-state-error-primary)}.vNLA3W_danger{box-sizing:border-box;font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-state-error-primary);min-height:28px;color:var(--dsw-alias-label-primary-inverted);border:0;padding:0 10px;line-height:18px}.vNLA3W_danger:disabled{opacity:.4;cursor:not-allowed}.vNLA3W_danger:focus-visible,.vNLA3W_projectCard:focus-visible,.vNLA3W_newCard:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_projectThumb{aspect-ratio:16/9;background:var(--g-screen);place-items:center;display:grid;position:relative;overflow:hidden}.vNLA3W_projectThumb img{object-fit:cover;width:100%;height:100%;image-rendering:pixelated}.vNLA3W_projectInitial{color:var(--g-screen-dim);font-size:32px;font-weight:700}.vNLA3W_projectHere{font-size:var(--dsh-panel-text-meta,12px);background:var(--g-accent);color:var(--dsw-alias-label-primary-inverted);border-radius:10px;padding:1px 8px;font-weight:600;position:absolute;top:8px;left:8px}.vNLA3W_projectBody{flex-direction:column;gap:6px;min-width:0;padding:10px 12px 12px;display:flex}.vNLA3W_projectTitle{font-size:var(--dsh-panel-text-title,14px)}.vNLA3W_projectChips{flex-wrap:wrap;gap:4px;display:flex}.vNLA3W_projectPitch{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.vNLA3W_newCard{text-align:center;border-style:dashed;border-color:color-mix(in srgb, var(--g-accent) 45%, var(--g-line));background:var(--g-soft);justify-content:center;align-items:center;gap:6px;min-height:160px;padding:18px 16px}.vNLA3W_newPlus{background:var(--g-accent);width:36px;height:36px;color:var(--dsw-alias-label-primary-inverted);border-radius:50%;place-items:center;font-size:18px;display:grid}.vNLA3W_commitBar{border-radius:var(--dsw-radius-md,10px);background:color-mix(in srgb, var(--g-accent) 8%, var(--dsw-alias-bg-layer-1));border:.5px solid color-mix(in srgb, var(--g-accent) 40%, var(--dsw-alias-border-l2));font-size:var(--dsh-panel-text-body,13px);flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 14px 0;padding:8px 10px 8px 12px;display:flex}.vNLA3W_commitBar[data-state=busy]{background:color-mix(in srgb, var(--g-warn) 9%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--g-warn) 45%, var(--dsw-alias-border-l2))}.vNLA3W_commitFiles{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:8px;margin:6px 14px 0;padding:6px 12px;font:12px/1.7 ui-monospace,monospace;overflow-x:auto}.vNLA3W_commitFiles div{white-space:nowrap}.vNLA3W_commitKind{width:1.5em;color:var(--g-warn);display:inline-block}.vNLA3W_commitBar[data-state=failed]{background:color-mix(in srgb, var(--g-err) 8%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--g-err) 40%, var(--dsw-alias-border-l2))}.vNLA3W_commitText{flex:220px;align-items:baseline;gap:8px;min-width:0;display:flex}.vNLA3W_commitText strong{color:var(--dsw-alias-label-primary);flex:none;font-weight:600}.vNLA3W_commitList{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);overflow:hidden}.vNLA3W_commitActions{align-items:center;gap:6px;margin-left:auto;display:flex}.vNLA3W_fold{border:1px solid var(--g-line);background:var(--g-card);border-radius:12px}.vNLA3W_fold>summary{cursor:pointer;font-weight:600;font-size:var(--dsh-panel-text-body,13px);padding:10px 12px;list-style-position:inside}.vNLA3W_fold[open]>summary{border-bottom:1px solid var(--g-line)}.vNLA3W_fold>:not(summary){padding:8px 12px 12px}.vNLA3W_poster{background:var(--g-screen);cursor:pointer;border:0;place-items:center;padding:0;display:grid;position:absolute;inset:0;overflow:hidden}.vNLA3W_poster img{object-fit:contain;opacity:.35;width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.vNLA3W_posterPlay{background:color-mix(in srgb, var(--g-screen) 70%, transparent);border:1px solid var(--g-screen-line);color:var(--g-screen-fg);font:inherit;font-size:var(--dsh-panel-text-body,13px);border-radius:999px;align-items:center;gap:8px;padding:8px 16px;display:inline-flex;position:relative}.vNLA3W_posterIcon{background:var(--g-screen-fg);width:26px;height:26px;color:var(--g-screen);border-radius:50%;place-items:center;padding-left:2px;font-size:11px;display:grid}.vNLA3W_poster:focus-visible{outline:2px solid var(--g-accent);outline-offset:-2px}.vNLA3W_hero{background:linear-gradient(135deg, var(--g-soft), var(--dsw-alias-bg-base));border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.vNLA3W_heroTitle{font-size:var(--dsh-panel-text-title,14px);text-wrap:balance;margin:0;font-weight:600}.vNLA3W_steps{counter-reset:step;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.vNLA3W_steps li{counter-increment:step;background:var(--g-card);border:1px solid var(--g-line);font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);border-radius:9px;flex-direction:column;gap:2px;padding:10px;display:flex}.vNLA3W_steps li:before{content:counter(step);color:var(--g-accent);font-weight:700;font-size:var(--dsh-panel-text-title,14px)}.vNLA3W_steps strong{color:var(--dsw-alias-label-primary);font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_hero .vNLA3W_primary{align-self:flex-start}.vNLA3W_block{flex-direction:column;gap:8px;display:flex}.vNLA3W_blockTitle{font-size:var(--dsh-panel-text-body,13px);margin:0;font-weight:600}.vNLA3W_emptyCard{text-align:center;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-body,13px);border:1px dashed var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;display:flex}.vNLA3W_emptyGlyph{color:var(--g-accent);font-size:22px}.vNLA3W_gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.vNLA3W_styleCard{border:1px solid var(--g-line);background:var(--g-card);cursor:pointer;text-align:left;font:inherit;color:inherit;border-radius:10px;flex-direction:column;gap:4px;padding:8px;display:flex}.vNLA3W_styleCard[aria-pressed=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_sample{aspect-ratio:200/112;width:100%;height:auto;image-rendering:pixelated;border-radius:6px;display:block}.vNLA3W_styleName{font-weight:600;font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_paletteStrip{border-radius:3px;height:6px;display:flex;overflow:hidden}.vNLA3W_paletteStrip span{flex:1}.vNLA3W_overlay{z-index:5;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 12px 32px color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex;position:absolute;inset:88px 8px 8px;overflow:auto}.vNLA3W_overlayHead{align-items:center;gap:8px;display:flex}.vNLA3W_banner{background:color-mix(in srgb, var(--g-warn) 8%, var(--dsw-alias-bg-base));border:1px solid color-mix(in srgb, var(--g-warn) 35%, var(--g-line));border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;display:flex}.vNLA3W_bannerText{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;flex:200px;gap:2px;display:flex}.vNLA3W_bannerText span{color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_bannerActions{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_rejectRow{gap:6px;width:100%;display:flex}.vNLA3W_rejectRow .vNLA3W_input{flex:1}.vNLA3W_strip{--s:var(--g-accent);font:inherit;font-size:var(--dsh-panel-text-body,13px);text-align:left;background:color-mix(in srgb, var(--s) 8%, var(--dsw-alias-bg-base));border:1px solid color-mix(in srgb, var(--s) 30%, var(--g-line));color:var(--dsw-alias-label-primary);border-radius:8px;align-items:center;gap:8px;padding:7px 10px;display:flex}button.vNLA3W_strip{cursor:pointer}.vNLA3W_strip[data-tone=error]{--s:var(--g-err)}.vNLA3W_strip[data-tone=warn]{--s:var(--g-warn)}.vNLA3W_stripDot{background:var(--s);border-radius:50%;flex:none;width:8px;height:8px}.vNLA3W_stripMeta{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vNLA3W_stripGo{color:var(--s);white-space:nowrap;font-size:var(--dsh-panel-text-meta,12px);margin-left:auto}.vNLA3W_stage{border:1px solid var(--dsw-alias-border-l2);background:var(--g-screen);border-radius:12px;flex-direction:column;flex:none;display:flex;overflow:hidden}.vNLA3W_stageBar{background:var(--g-screen-bar);border-bottom:1px solid var(--g-screen-line);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 8px;display:flex}.vNLA3W_versionPill{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-screen-fg);background:var(--g-screen-line);border-radius:10px;padding:1px 8px;font-weight:500}.vNLA3W_versionPill[data-tone=warn]{color:var(--g-warn);background:color-mix(in srgb, var(--g-warn) 18%, transparent)}.vNLA3W_stageHint{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-screen-dim)}.vNLA3W_errorPill{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-err);background:color-mix(in srgb, var(--g-err) 18%, transparent);cursor:help;border-radius:10px;padding:1px 8px}.vNLA3W_stageBtn{border:1px solid var(--g-screen-line);min-height:26px;color:var(--g-screen-fg);font-size:var(--dsh-panel-text-meta,12px);background:0 0;padding:2px 10px}.vNLA3W_stageBtn[aria-pressed=true]{border-color:var(--g-accent);color:var(--g-screen-fg);background:color-mix(in srgb, var(--g-accent) 55%, var(--g-screen))}.vNLA3W_screen{aspect-ratio:16/10;width:100%;max-height:62vh;position:relative}.vNLA3W_stageInner{position:absolute;inset:0}.vNLA3W_stageInner[data-picking=true]{cursor:crosshair}.vNLA3W_frame{border:0;width:100%;height:100%;display:block}.vNLA3W_pickLayer{cursor:crosshair;background:color-mix(in srgb, var(--g-accent) 6%, transparent);position:absolute;inset:0}.vNLA3W_screenEmpty{text-align:center;color:var(--g-screen-dim);font-size:var(--dsh-panel-text-body,13px);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;line-height:1.6;display:flex;position:absolute;inset:0}.vNLA3W_screenGlyph{opacity:.7;border:1px solid;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.vNLA3W_screenNote{color:var(--g-err);font-size:var(--dsh-panel-text-meta,12px);margin:0;position:absolute;top:10px;left:10px}.vNLA3W_pickCard{background:var(--g-card);border-top:1px solid var(--g-line);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}.vNLA3W_pickName{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;flex:1;display:flex}.vNLA3W_swatch{background:var(--dsw-alias-bg-layer-2);border-radius:6px;width:32px;height:32px}.vNLA3W_drawer{background:var(--g-card);border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.vNLA3W_drawerHead{font-size:var(--dsh-panel-text-body,13px);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.vNLA3W_param{font-size:var(--dsh-panel-text-body,13px);border-radius:7px;grid-template-columns:minmax(64px,7em) minmax(0,1fr) 4.5em auto;align-items:center;gap:10px;padding:4px 6px;display:grid}.vNLA3W_param[data-dirty=true]{background:color-mix(in srgb, var(--g-warn) 10%, transparent)}.vNLA3W_paramLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vNLA3W_param[data-dirty=true] .vNLA3W_paramLabel,.vNLA3W_param[data-dirty=true] .vNLA3W_paramValue{color:var(--g-warn);font-weight:600}.vNLA3W_range{width:100%;accent-color:var(--g-accent);min-height:24px}.vNLA3W_param[data-dirty=true] .vNLA3W_range{accent-color:var(--g-warn)}.vNLA3W_paramValue{text-align:right;font-variant-numeric:tabular-nums}.vNLA3W_paramValue small{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_paramWas{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-decoration:line-through}.vNLA3W_notice{font-size:var(--dsh-panel-text-body,13px);border:1px solid var(--g-line);border-left:3px solid var(--g-err);background:var(--g-card);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.vNLA3W_plainList{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);margin:0;padding-left:18px}.vNLA3W_plainList code{font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_cardGrid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;display:grid}.vNLA3W_elCard{border:1px solid var(--g-line);background:var(--g-card);border-radius:11px;position:relative}.vNLA3W_elCard[data-selected=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_elOpen{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:11px;flex-direction:column;gap:4px;padding:8px;display:flex}.vNLA3W_elArt{--t:var(--g-accent);aspect-ratio:1;background-color:color-mix(in srgb, var(--t) 10%, var(--dsw-alias-bg-layer-2));background-image:linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent) 75%);background-size:12px 12px;border-radius:8px;place-items:center;display:grid}.vNLA3W_elArt[data-tone=\"1\"],.vNLA3W_lookEmpty[data-tone=\"1\"]{--t:var(--g-err)}.vNLA3W_elArt[data-tone=\"2\"],.vNLA3W_lookEmpty[data-tone=\"2\"]{--t:var(--g-warn)}.vNLA3W_elArt[data-tone=\"3\"],.vNLA3W_lookEmpty[data-tone=\"3\"]{--t:var(--g-ok)}.vNLA3W_elArt[data-tone=\"4\"],.vNLA3W_lookEmpty[data-tone=\"4\"]{--t:var(--dsw-alias-label-secondary)}.vNLA3W_elInitial{color:var(--t);font-size:26px;font-weight:700}.vNLA3W_elName{font-weight:600;font-size:var(--dsh-panel-text-body,13px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vNLA3W_elMeta{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vNLA3W_elOpen .vNLA3W_badge{align-self:flex-start;margin-left:0}.vNLA3W_elCheck{background:color-mix(in srgb, var(--dsw-alias-bg-base) 80%, transparent);cursor:pointer;border-radius:6px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:6px;right:6px}.vNLA3W_elCheck input{accent-color:var(--g-accent);margin:0}.vNLA3W_selectBar{background:var(--dsw-alias-bg-base);border:1px solid var(--g-accent);font-size:var(--dsh-panel-text-body,13px);box-shadow:0 6px 20px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);border-radius:10px;align-items:center;gap:8px;padding:8px 10px;display:flex;position:sticky;bottom:0}.vNLA3W_detailHead{z-index:2;background:var(--dsw-alias-bg-base);border-bottom:1px solid var(--g-line);margin:-12px -14px 0;position:sticky;top:-12px}.vNLA3W_lookPanel{background:var(--g-card);border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:10px;padding:12px;display:flex}.vNLA3W_lookMain{flex-wrap:wrap;align-items:flex-start;gap:14px;display:flex}.vNLA3W_look{image-rendering:pixelated;max-width:100%;height:auto;display:block}.vNLA3W_lookEditor{touch-action:none;cursor:crosshair;background-color:var(--dsw-alias-bg-layer-2);background-image:linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 75%);background-size:16px 16px;border-radius:8px}.vNLA3W_lookSide{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.vNLA3W_lookPreview{background:var(--g-screen);border-radius:8px;padding:10px}.vNLA3W_lookEmpty{--t:var(--g-accent);background:color-mix(in srgb, var(--t) 8%, var(--dsw-alias-bg-layer-2));width:100%;font-size:var(--dsh-panel-text-body,13px);color:var(--dsw-alias-label-secondary);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;display:flex}.vNLA3W_lookEmpty p{margin:0}.vNLA3W_saveState{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary)}.vNLA3W_saveState[data-state=saved]{color:var(--g-ok)}.vNLA3W_saveState[data-state=failed]{color:var(--g-err)}.vNLA3W_toolRow{flex-wrap:wrap;align-items:center;gap:0;display:flex}.vNLA3W_seg{border:1px solid var(--dsw-alias-border-l2);background:var(--g-card);color:var(--dsw-alias-label-secondary);border-radius:0;min-height:28px}.vNLA3W_seg:first-child{border-radius:7px 0 0 7px}.vNLA3W_seg:nth-child(2){border-left:0;border-radius:0 7px 7px 0;margin-right:10px}.vNLA3W_seg[aria-pressed=true]{background:var(--g-soft);color:var(--g-accent);border-color:var(--g-accent)}.vNLA3W_swatches{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_swatchBtn{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;border-radius:6px;width:26px;height:26px;padding:0}.vNLA3W_swatchBtn[aria-pressed=true]{box-shadow:0 0 0 2px var(--dsw-alias-bg-base), 0 0 0 4px var(--g-accent)}.vNLA3W_swatchBtn[data-erase=true]{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(45deg, transparent 45%, var(--g-err) 45%, var(--g-err) 55%, transparent 55%)}.vNLA3W_proposals{flex-direction:column;gap:8px;padding-top:4px;display:flex}.vNLA3W_proposalGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.vNLA3W_proposalCard{border:1px solid var(--g-line);background:var(--g-card);font-size:var(--dsh-panel-text-body,13px);border-radius:10px;flex-direction:column;align-items:stretch;gap:4px;padding:8px;display:flex}.vNLA3W_proposalArt{background:var(--g-screen);border-radius:8px;place-items:center;padding:8px;display:grid}.vNLA3W_history{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary)}.vNLA3W_history summary{cursor:pointer;padding:4px 0}.vNLA3W_historyRow{border-top:1px solid var(--g-line);flex-wrap:wrap;gap:10px;padding:6px 0;display:flex}.vNLA3W_historyItem{opacity:.65;align-items:center;gap:4px;display:flex}.vNLA3W_historyItem[data-picked=true]{opacity:1}.vNLA3W_fieldGrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.vNLA3W_field{flex-direction:column;gap:3px;display:flex}.vNLA3W_fieldKey{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,monospace}.vNLA3W_onePager{background:linear-gradient(160deg, var(--g-soft), var(--dsw-alias-bg-base) 80%);border:1px solid color-mix(in srgb, var(--g-accent) 25%, var(--g-line));border-radius:12px;flex-direction:column;gap:8px;padding:14px;display:flex}.vNLA3W_onePagerHead{align-items:center;gap:8px;display:flex}.vNLA3W_styleChip{font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);border-radius:10px;min-height:24px;margin-left:auto;padding:2px 10px}.vNLA3W_notesChapter{border:1px solid var(--g-line);border-radius:12px;overflow:hidden}.vNLA3W_onePagerForm{flex-direction:column;gap:8px;display:flex}.vNLA3W_pitch{font-size:var(--dsh-panel-text-reading,14px);text-wrap:pretty;margin:0;font-weight:500;line-height:1.6}.vNLA3W_typeRow{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_typeTag{font-size:var(--dsh-panel-text-meta,12px);border:1px solid var(--g-line);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-base);border-radius:10px;padding:1px 8px}.vNLA3W_pillars{border-top:1px dashed color-mix(in srgb, var(--g-accent) 30%, var(--g-line));flex-direction:column;gap:4px;padding-top:6px;display:flex}.vNLA3W_pillarList{font-size:var(--dsh-panel-text-body,13px);flex-direction:column;gap:2px;margin:0;padding-left:20px;font-weight:600;display:flex}.vNLA3W_progressRow{align-items:center;gap:10px;display:flex}.vNLA3W_progressBar{background:var(--dsw-alias-bg-layer-2);border-radius:2px;flex:1;height:4px;overflow:hidden}.vNLA3W_progressBar span{background:var(--g-ok);height:100%;display:block}.vNLA3W_chapters{border:1px solid var(--g-line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.vNLA3W_chapter+.vNLA3W_chapter{border-top:1px solid var(--g-line)}.vNLA3W_chapter[data-open=true]{background:var(--g-card)}.vNLA3W_chapterHead{width:100%;min-height:40px;font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.vNLA3W_chevron{color:var(--dsw-alias-label-tertiary);flex:none;width:12px}.vNLA3W_chapterTitle{font-weight:600;font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_freshTag{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-accent);background:color-mix(in srgb, var(--g-accent) 12%, transparent);border-radius:8px;padding:0 6px}.vNLA3W_status{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:10px;padding:1px 8px}.vNLA3W_status[data-status=draft]{color:var(--g-warn);background:color-mix(in srgb, var(--g-warn) 10%, transparent)}.vNLA3W_status[data-status=done]{color:var(--g-ok);background:color-mix(in srgb, var(--g-ok) 10%, transparent)}.vNLA3W_status[data-status=generated]{color:var(--g-accent)}.vNLA3W_chapterBody{flex-direction:column;gap:8px;padding:0 14px 12px 32px;display:flex}.vNLA3W_numbers{flex-direction:column;gap:6px;display:flex}.vNLA3W_numbersTitle{font-size:var(--dsh-panel-text-body,13px);margin:6px 0 0;font-weight:600}.vNLA3W_bars{flex-direction:column;gap:3px;padding:6px 0;display:flex}.vNLA3W_barsKey{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,monospace}.vNLA3W_barRow{font-size:var(--dsh-panel-text-meta,12px);grid-template-columns:minmax(48px,6em) minmax(0,1fr) 3.5em;align-items:center;gap:8px;display:grid}.vNLA3W_barName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary);overflow:hidden}.vNLA3W_barTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;height:8px;overflow:hidden}.vNLA3W_barFill{background:var(--g-accent);border-radius:4px;height:100%;display:block}.vNLA3W_barValue{text-align:right;font-variant-numeric:tabular-nums}.vNLA3W_tableWrap,.vNLA3W_mdTableWrap{overflow-x:auto}.vNLA3W_table,.vNLA3W_mdTable{border-collapse:collapse;font-size:var(--dsh-panel-text-meta,12px);font-variant-numeric:tabular-nums;min-width:100%}.vNLA3W_table th,.vNLA3W_table td,.vNLA3W_mdTable th,.vNLA3W_mdTable td{border-bottom:1px solid var(--g-line);text-align:left;white-space:nowrap;padding:4px 8px}.vNLA3W_table th,.vNLA3W_mdTable th{color:var(--dsw-alias-label-secondary);font-weight:600}.vNLA3W_md{font-size:var(--dsh-panel-text-reading,14px);line-height:var(--dsh-panel-reading-line-height,1.65);flex-direction:column;gap:6px;display:flex}.vNLA3W_mdH1{font-size:var(--dsh-panel-text-title,14px);margin:4px 0 0;font-weight:600}.vNLA3W_mdH2{font-size:var(--dsh-panel-text-body,13px);margin:6px 0 0;font-weight:600}.vNLA3W_mdP{margin:0}.vNLA3W_mdList{margin:0;padding-left:20px}.vNLA3W_mdQuote{border-left:3px solid var(--g-accent);color:var(--dsw-alias-label-secondary);background:var(--g-soft);border-radius:0 6px 6px 0;margin:0;padding:4px 10px}.vNLA3W_checkCard{--c:var(--g-ok);background:var(--g-card);border:1px solid var(--g-line);border-left:3px solid var(--c);font-size:var(--dsh-panel-text-body,13px);border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex}.vNLA3W_checkCard[data-tone=error]{--c:var(--g-err)}.vNLA3W_checkCard[data-tone=warn]{--c:var(--g-warn)}.vNLA3W_checkHead{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.vNLA3W_checkHead strong{color:var(--c)}.vNLA3W_layers{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_layers li{font-size:var(--dsh-panel-text-meta,12px);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:10px;padding:2px 10px 2px 8px}.vNLA3W_layers li:before{content:\"✓ \";color:var(--g-ok)}.vNLA3W_layers li[data-ok=false]:before{content:\"✗ \";color:var(--g-err)}.vNLA3W_layers li[data-ok=skip]:before{content:\"– \";color:var(--dsw-alias-label-tertiary)}.vNLA3W_findings{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_findings li{border-top:1px solid var(--g-line);flex-direction:column;gap:2px;padding:6px 0;display:flex}.vNLA3W_findings code{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);word-break:break-all}.vNLA3W_shot{flex-direction:column;gap:4px;margin:0;display:flex}.vNLA3W_shot img{border:1px solid var(--g-line);background:var(--g-screen);border-radius:8px;max-width:100%}.vNLA3W_timeline{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_tlItem{--c:var(--dsw-alias-border-l2);grid-template-columns:14px minmax(0,1fr);gap:10px;padding-bottom:12px;display:grid;position:relative}.vNLA3W_tlItem:before{content:\"\";background:var(--g-line);width:2px;position:absolute;top:14px;bottom:0;left:6px}.vNLA3W_tlItem:last-child:before{display:none}.vNLA3W_tlItem[data-status=current]{--c:var(--g-ok)}.vNLA3W_tlItem[data-status=candidate]{--c:var(--g-warn)}.vNLA3W_tlItem[data-status=rejected]{--c:var(--g-err)}.vNLA3W_tlDot{background:var(--dsw-alias-bg-base);border:3px solid var(--c);box-sizing:border-box;z-index:1;border-radius:50%;width:14px;height:14px;margin-top:2px}.vNLA3W_tlBody{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;gap:2px;display:flex}.vNLA3W_tlHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.vNLA3W_tlBy{font-size:var(--dsh-panel-text-meta,12px);border:1px solid var(--g-line);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:6px;padding:0 7px}.vNLA3W_tlBy[data-by=user]{color:var(--g-accent);border-color:color-mix(in srgb, var(--g-accent) 45%, var(--g-line));background:color-mix(in srgb, var(--g-accent) 10%, transparent)}.vNLA3W_tlBy[data-by=turn]{color:var(--dsw-alias-label-tertiary);border-style:dashed}.vNLA3W_tlTag{font-size:var(--dsh-panel-text-meta,12px);color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent);border-radius:10px;padding:0 8px}.vNLA3W_tlItem[data-status=past] .vNLA3W_tlTag{color:var(--dsw-alias-label-tertiary)}.vNLA3W_tlActions{flex-wrap:wrap;gap:12px;display:flex}.vNLA3W_diff{background:var(--dsw-alias-bg-layer-2);font-family:ui-monospace,monospace;font-size:var(--dsh-panel-text-meta,12px);border-radius:8px;flex-direction:column;gap:2px;padding:6px 10px;display:flex}.vNLA3W_diff [data-kind=added]{color:var(--g-ok)}.vNLA3W_diff [data-kind=removed]{color:var(--g-err)}.vNLA3W_diff [data-kind=changed]{color:var(--g-warn)}.vNLA3W_logList{font-size:var(--dsh-panel-text-body,13px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_logList li{border-top:1px solid var(--g-line);grid-template-columns:6.5em minmax(0,1fr);gap:8px;padding:5px 0;display:grid}.vNLA3W_logTime{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px);font-variant-numeric:tabular-nums}.vNLA3W_toast{z-index:6;max-width:calc(100% - 32px);font-size:var(--dsh-panel-text-body,13px);background:var(--dsw-alias-label-primary);color:var(--dsw-alias-label-primary-inverted);box-shadow:0 6px 18px color-mix(in srgb, var(--dsw-alias-label-primary) 25%, transparent);border-radius:18px;padding:7px 14px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.vNLA3W_candBar{background:color-mix(in srgb, var(--g-warn) 10%, var(--g-card));border-top:1px solid color-mix(in srgb, var(--g-warn) 35%, var(--g-line));flex-wrap:wrap;align-items:center;gap:8px 12px;padding:9px 12px;display:flex}.vNLA3W_pickHover{z-index:2;pointer-events:none;white-space:nowrap;font-size:var(--dsh-panel-text-meta,12px);background:var(--g-screen-bar);color:var(--g-screen-fg);border:1px solid var(--g-screen-line);border-radius:6px;padding:3px 8px;position:absolute;transform:translate(12px,12px)}.vNLA3W_preview3d{background:var(--g-screen);border-radius:10px;place-items:center;display:grid;position:relative;overflow:hidden}.vNLA3W_preview3d img{object-fit:contain;width:100%;height:100%;display:block}.vNLA3W_preview3dFrame{border:0;width:100%;height:100%;display:block;position:absolute;inset:0}.vNLA3W_preview3dFrame[data-mode=still]{opacity:0;pointer-events:none}.vNLA3W_preview3dNote{text-align:center;color:var(--g-screen-dim);font-size:var(--dsh-panel-text-meta,12px);padding:12px}.vNLA3W_turntable{aspect-ratio:16/10;width:100%;max-height:300px}.vNLA3W_proposal3d{width:120px;height:96px}.vNLA3W_gltfRow{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.vNLA3W_gltfScale{align-items:center;gap:6px;display:inline-flex}.vNLA3W_gltfScale input{width:64px}.vNLA3W_elArt3d{background:0 0;border-radius:8px;width:100%;height:100%}.vNLA3W_recipe{flex-direction:column;gap:4px;display:flex}.vNLA3W_recipeGroup{border-top:1px solid var(--g-line);flex-direction:column;gap:2px;padding-top:6px;display:flex}.vNLA3W_recipePart{flex-direction:column;gap:2px;padding:4px 0 6px;display:flex}.vNLA3W_recipePartName{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);font-weight:600}.vNLA3W_recipeColors{flex-wrap:wrap;gap:8px 14px;display:flex}.vNLA3W_recipeColor{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:inline-flex}.vNLA3W_recipeColor input{border:1px solid var(--g-line);background:0 0;border-radius:6px;width:32px;height:22px;padding:0}@container dsh-panel (width<=560px){.vNLA3W_turntable{max-height:220px}.vNLA3W_proposal3d{width:96px;height:80px}.vNLA3W_scroll{padding:10px 12px 56px}.vNLA3W_steps{grid-template-columns:minmax(0,1fr)}.vNLA3W_primary,.vNLA3W_ghost,.vNLA3W_seg{min-height:36px}.vNLA3W_stageBtn{min-height:32px}.vNLA3W_param{grid-template-columns:minmax(0,1fr) 4.5em}.vNLA3W_param .vNLA3W_range{grid-area:2/1/auto/-1}.vNLA3W_paramWas{display:none}.vNLA3W_proposalGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.vNLA3W_cardGrid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.vNLA3W_overlay{inset:80px 4px 4px}.vNLA3W_swatchBtn{width:32px;height:32px}}";
|
|
23933
|
+
const css$7 = ".vNLA3W_root{--g-accent:var(--dsw-alias-brand-primary);--g-soft:color-mix(in srgb, var(--dsw-alias-brand-primary) 9%, var(--dsw-alias-bg-base));--g-line:var(--dsw-alias-border-l1);--g-card:var(--dsw-alias-bg-layer-1);--g-ok:var(--dsw-alias-state-success-primary);--g-warn:var(--dsw-alias-state-warn-primary);--g-err:var(--dsw-alias-state-error-primary);--g-screen:#0d1020;--g-screen-bar:#161b33;--g-screen-line:#2a3152;--g-screen-fg:#d6dcf5;--g-screen-dim:#8c95ba;background:var(--dsw-alias-bg-base);height:100%;color:var(--dsw-alias-label-primary);position:relative}.vNLA3W_scroll{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px 14px 56px;display:flex;overflow:auto}.vNLA3W_scroll>*{flex-shrink:0}.vNLA3W_spacer{flex:1}.vNLA3W_lead{color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-body,13px);margin:0;line-height:1.6}.vNLA3W_metaLine{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_count{color:var(--dsw-alias-label-tertiary);font-weight:400;font-size:var(--dsh-panel-text-meta,12px);margin-left:6px}.vNLA3W_eyebrow{font-size:var(--dsh-panel-text-meta,12px);letter-spacing:.06em;color:var(--g-accent);font-weight:600}.vNLA3W_warnText{color:var(--g-warn);font-size:var(--dsh-panel-text-body,13px);margin:0}.vNLA3W_badge{font-size:var(--dsh-panel-text-meta,12px);background:color-mix(in srgb, var(--g-warn) 14%, transparent);color:var(--g-warn);border-radius:8px;align-items:center;margin-left:6px;padding:0 6px;font-weight:500;display:inline-flex}.vNLA3W_primary,.vNLA3W_ghost,.vNLA3W_link,.vNLA3W_seg,.vNLA3W_stageBtn{box-sizing:border-box;font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border-radius:var(--dsw-radius-sm,6px);justify-content:center;align-items:center;gap:4px;min-height:28px;padding:0 10px;line-height:18px;display:inline-flex}.vNLA3W_primary{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);border:0}.vNLA3W_primary:disabled,.vNLA3W_ghost:disabled{opacity:.4;cursor:not-allowed}.vNLA3W_ghost{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.vNLA3W_ghost[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-active)}.vNLA3W_link{color:var(--dsw-alias-label-secondary);background:0 0;border:0;min-height:24px;padding:0 2px}.vNLA3W_link[aria-pressed=true]{color:var(--dsw-alias-label-primary)}.vNLA3W_primary:focus-visible,.vNLA3W_ghost:focus-visible,.vNLA3W_link:focus-visible,.vNLA3W_seg:focus-visible,.vNLA3W_stageBtn:focus-visible,.vNLA3W_elOpen:focus-visible,.vNLA3W_styleCard:focus-visible,.vNLA3W_chapterHead:focus-visible,.vNLA3W_swatchBtn:focus-visible,.vNLA3W_strip:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_input,.vNLA3W_textarea{font:inherit;font-size:var(--dsh-panel-text-body,13px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:7px;min-width:0;padding:6px 9px}.vNLA3W_textarea{box-sizing:border-box;resize:vertical;width:100%;line-height:1.55}.vNLA3W_rowEnd{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.vNLA3W_footRow{justify-content:center;display:flex}.vNLA3W_headMeta{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.vNLA3W_headChip{font-size:var(--dsh-panel-text-meta,12px);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:10px;padding:1px 8px}.vNLA3W_headChip[data-tone=ok]{color:var(--g-ok);background:color-mix(in srgb, var(--g-ok) 12%, transparent)}.vNLA3W_headChip[data-tone=info]{color:var(--g-accent);background:color-mix(in srgb, var(--g-accent) 12%, transparent)}.vNLA3W_switches{align-items:center;gap:12px;display:inline-flex}.vNLA3W_switch{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.vNLA3W_titleSwitch{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-items:center;gap:4px;min-height:28px;padding:2px 4px 2px 0;font-weight:600;display:inline-flex}.vNLA3W_root strong:has(>.vNLA3W_titleSwitch){flex-shrink:0}.vNLA3W_headMeta{flex-wrap:nowrap;min-width:0;overflow:hidden}.vNLA3W_titleSwitch span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:12em;overflow:hidden}.vNLA3W_titleSwitch:focus-visible{outline:2px solid var(--g-accent)}.vNLA3W_titleCaret{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_projectGrid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.vNLA3W_projectCard,.vNLA3W_newCard{border:1px solid var(--g-line);background:var(--g-card);font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:12px;flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.vNLA3W_projectCard[aria-current=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_projectCard[data-loading=true]{cursor:default;padding:16px}.vNLA3W_projectCardWrap{flex-direction:column;display:flex;position:relative}.vNLA3W_projectCardWrap>.vNLA3W_projectCard{flex:1}.vNLA3W_projectDelete{cursor:pointer;width:26px;height:26px;font:inherit;background:color-mix(in srgb, var(--g-screen) 70%, transparent);color:var(--g-screen-fg);border:0;border-radius:13px;place-items:center;font-size:16px;line-height:1;display:grid;position:absolute;top:6px;right:6px}.vNLA3W_projectDelete:hover{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-inverted)}.vNLA3W_projectDelete:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_projectCard[data-confirm=true]{cursor:default;border-color:var(--dsw-alias-state-error-primary)}.vNLA3W_deleteActions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.vNLA3W_deleteError{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-state-error-primary)}.vNLA3W_danger{box-sizing:border-box;font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-state-error-primary);min-height:28px;color:var(--dsw-alias-label-primary-inverted);border:0;padding:0 10px;line-height:18px}.vNLA3W_danger:disabled{opacity:.4;cursor:not-allowed}.vNLA3W_danger:focus-visible,.vNLA3W_projectCard:focus-visible,.vNLA3W_newCard:focus-visible{outline:2px solid var(--g-accent);outline-offset:1px}.vNLA3W_projectThumb{aspect-ratio:16/9;background:var(--g-screen);place-items:center;display:grid;position:relative;overflow:hidden}.vNLA3W_projectThumb img{object-fit:cover;width:100%;height:100%;image-rendering:pixelated}.vNLA3W_projectInitial{color:var(--g-screen-dim);font-size:32px;font-weight:700}.vNLA3W_projectHere{font-size:var(--dsh-panel-text-meta,12px);background:var(--g-accent);color:var(--dsw-alias-label-primary-inverted);border-radius:10px;padding:1px 8px;font-weight:600;position:absolute;top:8px;left:8px}.vNLA3W_projectBody{flex-direction:column;gap:6px;min-width:0;padding:10px 12px 12px;display:flex}.vNLA3W_projectTitle{font-size:var(--dsh-panel-text-title,14px)}.vNLA3W_projectChips{flex-wrap:wrap;gap:4px;display:flex}.vNLA3W_projectPitch{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.vNLA3W_newCard{text-align:center;border-style:dashed;border-color:color-mix(in srgb, var(--g-accent) 45%, var(--g-line));background:var(--g-soft);justify-content:center;align-items:center;gap:6px;min-height:160px;padding:18px 16px}.vNLA3W_newPlus{background:var(--g-accent);width:36px;height:36px;color:var(--dsw-alias-label-primary-inverted);border-radius:50%;place-items:center;font-size:18px;display:grid}.vNLA3W_commitBar{border-radius:var(--dsw-radius-md,10px);background:color-mix(in srgb, var(--g-accent) 8%, var(--dsw-alias-bg-layer-1));border:.5px solid color-mix(in srgb, var(--g-accent) 40%, var(--dsw-alias-border-l2));font-size:var(--dsh-panel-text-body,13px);flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 14px 0;padding:8px 10px 8px 12px;display:flex}.vNLA3W_commitBar[data-state=busy]{background:color-mix(in srgb, var(--g-warn) 9%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--g-warn) 45%, var(--dsw-alias-border-l2))}.vNLA3W_commitFiles{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:8px;margin:6px 14px 0;padding:6px 12px;font:12px/1.7 ui-monospace,monospace;overflow-x:auto}.vNLA3W_commitFiles div{white-space:nowrap}.vNLA3W_commitKind{width:1.5em;color:var(--g-warn);display:inline-block}.vNLA3W_commitBar[data-state=failed]{background:color-mix(in srgb, var(--g-err) 8%, var(--dsw-alias-bg-layer-1));border-color:color-mix(in srgb, var(--g-err) 40%, var(--dsw-alias-border-l2))}.vNLA3W_commitText{flex:220px;align-items:baseline;gap:8px;min-width:0;display:flex}.vNLA3W_commitText strong{color:var(--dsw-alias-label-primary);flex:none;font-weight:600}.vNLA3W_commitList{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);overflow:hidden}.vNLA3W_commitActions{align-items:center;gap:6px;margin-left:auto;display:flex}.vNLA3W_fold{border:1px solid var(--g-line);background:var(--g-card);border-radius:12px}.vNLA3W_fold>summary{cursor:pointer;font-weight:600;font-size:var(--dsh-panel-text-body,13px);padding:10px 12px;list-style-position:inside}.vNLA3W_fold[open]>summary{border-bottom:1px solid var(--g-line)}.vNLA3W_fold>:not(summary){padding:8px 12px 12px}.vNLA3W_poster{background:var(--g-screen);cursor:pointer;border:0;place-items:center;padding:0;display:grid;position:absolute;inset:0;overflow:hidden}.vNLA3W_poster img{object-fit:contain;opacity:.35;width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.vNLA3W_posterPlay{background:color-mix(in srgb, var(--g-screen) 70%, transparent);border:1px solid var(--g-screen-line);color:var(--g-screen-fg);font:inherit;font-size:var(--dsh-panel-text-body,13px);border-radius:999px;align-items:center;gap:8px;padding:8px 16px;display:inline-flex;position:relative}.vNLA3W_posterIcon{background:var(--g-screen-fg);width:26px;height:26px;color:var(--g-screen);border-radius:50%;place-items:center;padding-left:2px;font-size:11px;display:grid}.vNLA3W_poster:focus-visible{outline:2px solid var(--g-accent);outline-offset:-2px}.vNLA3W_hero{background:linear-gradient(135deg, var(--g-soft), var(--dsw-alias-bg-base));border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.vNLA3W_heroTitle{font-size:var(--dsh-panel-text-title,14px);text-wrap:balance;margin:0;font-weight:600}.vNLA3W_steps{counter-reset:step;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.vNLA3W_steps li{counter-increment:step;background:var(--g-card);border:1px solid var(--g-line);font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);border-radius:9px;flex-direction:column;gap:2px;padding:10px;display:flex}.vNLA3W_steps li:before{content:counter(step);color:var(--g-accent);font-weight:700;font-size:var(--dsh-panel-text-title,14px)}.vNLA3W_steps strong{color:var(--dsw-alias-label-primary);font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_hero .vNLA3W_primary{align-self:flex-start}.vNLA3W_block{flex-direction:column;gap:8px;display:flex}.vNLA3W_blockTitle{font-size:var(--dsh-panel-text-body,13px);margin:0;font-weight:600}.vNLA3W_emptyCard{text-align:center;color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-body,13px);border:1px dashed var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;display:flex}.vNLA3W_emptyGlyph{color:var(--g-accent);font-size:22px}.vNLA3W_gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.vNLA3W_styleCard{border:1px solid var(--g-line);background:var(--g-card);cursor:pointer;text-align:left;font:inherit;color:inherit;border-radius:10px;flex-direction:column;gap:4px;padding:8px;display:flex}.vNLA3W_styleCard[aria-pressed=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_sample{aspect-ratio:200/112;width:100%;height:auto;image-rendering:pixelated;border-radius:6px;display:block}.vNLA3W_styleName{font-weight:600;font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_paletteStrip{border-radius:3px;height:6px;display:flex;overflow:hidden}.vNLA3W_paletteStrip span{flex:1}.vNLA3W_overlay{z-index:5;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 12px 32px color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex;position:absolute;inset:88px 8px 8px;overflow:auto}.vNLA3W_overlayHead{align-items:center;gap:8px;display:flex}.vNLA3W_banner{background:color-mix(in srgb, var(--g-warn) 8%, var(--dsw-alias-bg-base));border:1px solid color-mix(in srgb, var(--g-warn) 35%, var(--g-line));border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;display:flex}.vNLA3W_bannerText{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;flex:200px;gap:2px;display:flex}.vNLA3W_bannerText span{color:var(--dsw-alias-label-secondary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_bannerActions{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_rejectRow{gap:6px;width:100%;display:flex}.vNLA3W_rejectRow .vNLA3W_input{flex:1}.vNLA3W_strip{--s:var(--g-accent);font:inherit;font-size:var(--dsh-panel-text-body,13px);text-align:left;background:color-mix(in srgb, var(--s) 8%, var(--dsw-alias-bg-base));border:1px solid color-mix(in srgb, var(--s) 30%, var(--g-line));color:var(--dsw-alias-label-primary);border-radius:8px;align-items:center;gap:8px;padding:7px 10px;display:flex}button.vNLA3W_strip{cursor:pointer}.vNLA3W_strip[data-tone=error]{--s:var(--g-err)}.vNLA3W_strip[data-tone=warn]{--s:var(--g-warn)}.vNLA3W_stripDot{background:var(--s);border-radius:50%;flex:none;width:8px;height:8px}.vNLA3W_stripMeta{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vNLA3W_stripGo{color:var(--s);white-space:nowrap;font-size:var(--dsh-panel-text-meta,12px);margin-left:auto}.vNLA3W_stage{border:1px solid var(--dsw-alias-border-l2);background:var(--g-screen);border-radius:12px;flex-direction:column;flex:none;display:flex;overflow:hidden}.vNLA3W_stageBar{background:var(--g-screen-bar);border-bottom:1px solid var(--g-screen-line);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 8px;display:flex}.vNLA3W_versionPill{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-screen-fg);background:var(--g-screen-line);border-radius:10px;padding:1px 8px;font-weight:500}.vNLA3W_versionPill[data-tone=warn]{color:var(--g-warn);background:color-mix(in srgb, var(--g-warn) 18%, transparent)}.vNLA3W_stageHint{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-screen-dim)}.vNLA3W_errorPill{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-err);background:color-mix(in srgb, var(--g-err) 18%, transparent);cursor:help;border-radius:10px;padding:1px 8px}.vNLA3W_stageBtn{border:1px solid var(--g-screen-line);min-height:26px;color:var(--g-screen-fg);font-size:var(--dsh-panel-text-meta,12px);background:0 0;padding:2px 10px}.vNLA3W_stageBtn[aria-pressed=true]{border-color:var(--g-accent);color:var(--g-screen-fg);background:color-mix(in srgb, var(--g-accent) 55%, var(--g-screen))}.vNLA3W_screen{aspect-ratio:16/10;width:100%;max-height:62vh;position:relative}.vNLA3W_stageInner{position:absolute;inset:0}.vNLA3W_stageInner[data-picking=true]{cursor:crosshair}.vNLA3W_frame{border:0;width:100%;height:100%;display:block}.vNLA3W_pickLayer{cursor:crosshair;background:color-mix(in srgb, var(--g-accent) 6%, transparent);position:absolute;inset:0}.vNLA3W_screenEmpty{text-align:center;color:var(--g-screen-dim);font-size:var(--dsh-panel-text-body,13px);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;line-height:1.6;display:flex;position:absolute;inset:0}.vNLA3W_screenGlyph{opacity:.7;border:1px solid;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.vNLA3W_screenNote{color:var(--g-err);font-size:var(--dsh-panel-text-meta,12px);margin:0;position:absolute;top:10px;left:10px}.vNLA3W_pickCard{background:var(--g-card);border-top:1px solid var(--g-line);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}.vNLA3W_pickName{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;flex:1;display:flex}.vNLA3W_swatch{background:var(--dsw-alias-bg-layer-2);border-radius:6px;width:32px;height:32px}.vNLA3W_drawer{background:var(--g-card);border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.vNLA3W_drawerHead{font-size:var(--dsh-panel-text-body,13px);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.vNLA3W_param{font-size:var(--dsh-panel-text-body,13px);border-radius:7px;grid-template-columns:minmax(64px,7em) minmax(0,1fr) 4.5em auto;align-items:center;gap:10px;padding:4px 6px;display:grid}.vNLA3W_param[data-dirty=true]{background:color-mix(in srgb, var(--g-warn) 10%, transparent)}.vNLA3W_paramLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vNLA3W_param[data-dirty=true] .vNLA3W_paramLabel,.vNLA3W_param[data-dirty=true] .vNLA3W_paramValue{color:var(--g-warn);font-weight:600}.vNLA3W_range{width:100%;accent-color:var(--g-accent);min-height:24px}.vNLA3W_param[data-dirty=true] .vNLA3W_range{accent-color:var(--g-warn)}.vNLA3W_paramValue{text-align:right;font-variant-numeric:tabular-nums}.vNLA3W_paramValue small{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_paramWas{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-decoration:line-through}.vNLA3W_notice{font-size:var(--dsh-panel-text-body,13px);border:1px solid var(--g-line);border-left:3px solid var(--g-err);background:var(--g-card);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.vNLA3W_plainList{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);margin:0;padding-left:18px}.vNLA3W_plainList code{font-size:var(--dsh-panel-text-meta,12px)}.vNLA3W_cardGrid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;display:grid}.vNLA3W_elCard{border:1px solid var(--g-line);background:var(--g-card);border-radius:11px;position:relative}.vNLA3W_elCard[data-selected=true]{border-color:var(--g-accent);box-shadow:0 0 0 1px var(--g-accent)}.vNLA3W_elOpen{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:11px;flex-direction:column;gap:4px;padding:8px;display:flex}.vNLA3W_elArt{--t:var(--g-accent);aspect-ratio:1;background-color:color-mix(in srgb, var(--t) 10%, var(--dsw-alias-bg-layer-2));background-image:linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent) 75%);background-size:12px 12px;border-radius:8px;place-items:center;display:grid}.vNLA3W_elArt[data-tone=\"1\"],.vNLA3W_lookEmpty[data-tone=\"1\"]{--t:var(--g-err)}.vNLA3W_elArt[data-tone=\"2\"],.vNLA3W_lookEmpty[data-tone=\"2\"]{--t:var(--g-warn)}.vNLA3W_elArt[data-tone=\"3\"],.vNLA3W_lookEmpty[data-tone=\"3\"]{--t:var(--g-ok)}.vNLA3W_elArt[data-tone=\"4\"],.vNLA3W_lookEmpty[data-tone=\"4\"]{--t:var(--dsw-alias-label-secondary)}.vNLA3W_elInitial{color:var(--t);font-size:26px;font-weight:700}.vNLA3W_elName{font-weight:600;font-size:var(--dsh-panel-text-body,13px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vNLA3W_elMeta{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vNLA3W_elOpen .vNLA3W_badge{align-self:flex-start;margin-left:0}.vNLA3W_elCheck{background:color-mix(in srgb, var(--dsw-alias-bg-base) 80%, transparent);cursor:pointer;border-radius:6px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:6px;right:6px}.vNLA3W_elCheck input{accent-color:var(--g-accent);margin:0}.vNLA3W_selectBar{background:var(--dsw-alias-bg-base);border:1px solid var(--g-accent);font-size:var(--dsh-panel-text-body,13px);box-shadow:0 6px 20px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);border-radius:10px;align-items:center;gap:8px;padding:8px 10px;display:flex;position:sticky;bottom:0}.vNLA3W_detailHead{z-index:2;background:var(--dsw-alias-bg-base);border-bottom:1px solid var(--g-line);margin:-12px -14px 0;position:sticky;top:-12px}.vNLA3W_lookPanel{background:var(--g-card);border:1px solid var(--g-line);border-radius:12px;flex-direction:column;gap:10px;padding:12px;display:flex}.vNLA3W_lookMain{flex-wrap:wrap;align-items:flex-start;gap:14px;display:flex}.vNLA3W_look{image-rendering:pixelated;max-width:100%;height:auto;display:block}.vNLA3W_lookEditor{touch-action:none;cursor:crosshair;background-color:var(--dsw-alias-bg-layer-2);background-image:linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 75%);background-size:16px 16px;border-radius:8px}.vNLA3W_lookSide{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.vNLA3W_lookPreview{background:var(--g-screen);border-radius:8px;padding:10px}.vNLA3W_lookEmpty{--t:var(--g-accent);background:color-mix(in srgb, var(--t) 8%, var(--dsw-alias-bg-layer-2));width:100%;font-size:var(--dsh-panel-text-body,13px);color:var(--dsw-alias-label-secondary);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;display:flex}.vNLA3W_lookEmpty p{margin:0}.vNLA3W_saveState{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary)}.vNLA3W_saveState[data-state=saved]{color:var(--g-ok)}.vNLA3W_saveState[data-state=failed]{color:var(--g-err)}.vNLA3W_toolRow{flex-wrap:wrap;align-items:center;gap:0;display:flex}.vNLA3W_tight{gap:8px 12px}.vNLA3W_navNotice{border-radius:var(--dsw-radius-md,10px);background:color-mix(in srgb, var(--g-ok) 9%, var(--dsw-alias-bg-layer-1));border:.5px solid color-mix(in srgb, var(--g-ok) 40%, var(--dsw-alias-border-l2));font-size:var(--dsh-panel-text-body,13px);flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 14px 0;padding:8px 10px 8px 12px;display:flex}.vNLA3W_navNoticeText{flex:160px;min-width:0;font-weight:600}.vNLA3W_segGroup{border:1px solid var(--dsw-alias-border-l2);background:var(--g-card);border-radius:8px;flex:none;display:inline-flex;overflow:hidden}.vNLA3W_seg{min-height:28px;color:var(--dsw-alias-label-secondary);font:inherit;font-size:var(--dsh-panel-text-body,13px);cursor:pointer;background:0 0;border:0;border-radius:0;margin:0;padding:0 12px}.vNLA3W_seg+.vNLA3W_seg{border-left:1px solid var(--dsw-alias-border-l2)}.vNLA3W_seg:hover{color:var(--dsw-alias-label-primary)}.vNLA3W_seg:focus-visible{outline:2px solid var(--g-accent);outline-offset:-2px}.vNLA3W_seg[aria-pressed=true]{background:color-mix(in srgb, var(--g-accent) 18%, var(--g-card));color:var(--g-accent);font-weight:600}.vNLA3W_swatches{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_swatchBtn{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;border-radius:6px;width:26px;height:26px;padding:0}.vNLA3W_swatchBtn[aria-pressed=true]{box-shadow:0 0 0 2px var(--dsw-alias-bg-base), 0 0 0 4px var(--g-accent)}.vNLA3W_swatchBtn[data-erase=true]{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(45deg, transparent 45%, var(--g-err) 45%, var(--g-err) 55%, transparent 55%)}.vNLA3W_proposals{flex-direction:column;gap:8px;padding-top:4px;display:flex}.vNLA3W_proposalGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.vNLA3W_proposalCard{border:1px solid var(--g-line);background:var(--g-card);font-size:var(--dsh-panel-text-body,13px);border-radius:10px;flex-direction:column;align-items:stretch;gap:4px;padding:8px;display:flex}.vNLA3W_proposalArt{background:var(--g-screen);border-radius:8px;place-items:center;padding:8px;display:grid}.vNLA3W_history{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary)}.vNLA3W_history summary{cursor:pointer;padding:4px 0}.vNLA3W_historyRow{border-top:1px solid var(--g-line);flex-wrap:wrap;gap:10px;padding:6px 0;display:flex}.vNLA3W_historyItem{opacity:.65;align-items:center;gap:4px;display:flex}.vNLA3W_historyItem[data-picked=true]{opacity:1}.vNLA3W_fieldGrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.vNLA3W_field{flex-direction:column;gap:3px;display:flex}.vNLA3W_fieldKey{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,monospace}.vNLA3W_onePager{background:linear-gradient(160deg, var(--g-soft), var(--dsw-alias-bg-base) 80%);border:1px solid color-mix(in srgb, var(--g-accent) 25%, var(--g-line));border-radius:12px;flex-direction:column;gap:8px;padding:14px;display:flex}.vNLA3W_onePagerHead{align-items:center;gap:8px;display:flex}.vNLA3W_styleChip{text-overflow:ellipsis;white-space:nowrap;max-width:14em;font:inherit;font-size:var(--dsh-panel-text-meta,12px);cursor:pointer;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);border-radius:10px;flex:none;min-height:24px;margin-left:auto;padding:2px 10px;overflow:hidden}.vNLA3W_notesChapter{border:1px solid var(--g-line);border-radius:12px;overflow:hidden}.vNLA3W_onePagerForm{flex-direction:column;gap:8px;display:flex}.vNLA3W_pitch{font-size:var(--dsh-panel-text-reading,14px);text-wrap:pretty;margin:0;font-weight:500;line-height:1.6}.vNLA3W_typeRow{flex-wrap:wrap;gap:6px;display:flex}.vNLA3W_typeTag{font-size:var(--dsh-panel-text-meta,12px);border:1px solid var(--g-line);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-base);border-radius:10px;padding:1px 8px}.vNLA3W_pillars{border-top:1px dashed color-mix(in srgb, var(--g-accent) 30%, var(--g-line));flex-direction:column;gap:4px;padding-top:6px;display:flex}.vNLA3W_pillarList{font-size:var(--dsh-panel-text-body,13px);flex-direction:column;gap:2px;margin:0;padding-left:20px;font-weight:600;display:flex}.vNLA3W_progressRow{align-items:center;gap:10px;display:flex}.vNLA3W_progressBar{background:var(--dsw-alias-bg-layer-2);border-radius:2px;flex:1;height:4px;overflow:hidden}.vNLA3W_progressBar span{background:var(--g-ok);height:100%;display:block}.vNLA3W_chapters{border:1px solid var(--g-line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.vNLA3W_chapter+.vNLA3W_chapter{border-top:1px solid var(--g-line)}.vNLA3W_chapter[data-open=true]{background:var(--g-card)}.vNLA3W_chapterHead{width:100%;min-height:40px;font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.vNLA3W_chevron{color:var(--dsw-alias-label-tertiary);flex:none;width:12px}.vNLA3W_chapterTitle{font-weight:600;font-size:var(--dsh-panel-text-body,13px)}.vNLA3W_freshTag{font-size:var(--dsh-panel-text-meta,12px);color:var(--g-accent);background:color-mix(in srgb, var(--g-accent) 12%, transparent);border-radius:8px;padding:0 6px}.vNLA3W_status{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:10px;padding:1px 8px}.vNLA3W_status[data-status=draft]{color:var(--g-warn);background:color-mix(in srgb, var(--g-warn) 10%, transparent)}.vNLA3W_status[data-status=done]{color:var(--g-ok);background:color-mix(in srgb, var(--g-ok) 10%, transparent)}.vNLA3W_status[data-status=generated]{color:var(--g-accent)}.vNLA3W_chapterBody{flex-direction:column;gap:8px;padding:0 14px 12px 32px;display:flex}.vNLA3W_numbers{flex-direction:column;gap:6px;display:flex}.vNLA3W_numbersTitle{font-size:var(--dsh-panel-text-body,13px);margin:6px 0 0;font-weight:600}.vNLA3W_bars{flex-direction:column;gap:3px;padding:6px 0;display:flex}.vNLA3W_barsKey{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,monospace}.vNLA3W_barRow{font-size:var(--dsh-panel-text-meta,12px);grid-template-columns:minmax(48px,6em) minmax(0,1fr) 3.5em;align-items:center;gap:8px;display:grid}.vNLA3W_barName{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary);overflow:hidden}.vNLA3W_barTrack{background:var(--dsw-alias-bg-layer-2);border-radius:4px;height:8px;overflow:hidden}.vNLA3W_barFill{background:var(--g-accent);border-radius:4px;height:100%;display:block}.vNLA3W_barValue{text-align:right;font-variant-numeric:tabular-nums}.vNLA3W_tableWrap,.vNLA3W_mdTableWrap{overflow-x:auto}.vNLA3W_table,.vNLA3W_mdTable{border-collapse:collapse;font-size:var(--dsh-panel-text-meta,12px);font-variant-numeric:tabular-nums;min-width:100%}.vNLA3W_table th,.vNLA3W_table td,.vNLA3W_mdTable th,.vNLA3W_mdTable td{border-bottom:1px solid var(--g-line);text-align:left;white-space:nowrap;padding:4px 8px}.vNLA3W_table th,.vNLA3W_mdTable th{color:var(--dsw-alias-label-secondary);font-weight:600}.vNLA3W_md{font-size:var(--dsh-panel-text-reading,14px);line-height:var(--dsh-panel-reading-line-height,1.65);flex-direction:column;gap:6px;display:flex}.vNLA3W_mdH1{font-size:var(--dsh-panel-text-title,14px);margin:4px 0 0;font-weight:600}.vNLA3W_mdH2{font-size:var(--dsh-panel-text-body,13px);margin:6px 0 0;font-weight:600}.vNLA3W_mdP{margin:0}.vNLA3W_mdList{margin:0;padding-left:20px}.vNLA3W_mdQuote{border-left:3px solid var(--g-accent);color:var(--dsw-alias-label-secondary);background:var(--g-soft);border-radius:0 6px 6px 0;margin:0;padding:4px 10px}.vNLA3W_checkCard{--c:var(--g-ok);background:var(--g-card);border:1px solid var(--g-line);border-left:3px solid var(--c);font-size:var(--dsh-panel-text-body,13px);border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex}.vNLA3W_checkCard[data-tone=error]{--c:var(--g-err)}.vNLA3W_checkCard[data-tone=warn]{--c:var(--g-warn)}.vNLA3W_checkHead{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.vNLA3W_checkHead strong{color:var(--c)}.vNLA3W_layers{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_layers li{font-size:var(--dsh-panel-text-meta,12px);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:10px;padding:2px 10px 2px 8px}.vNLA3W_layers li:before{content:\"✓ \";color:var(--g-ok)}.vNLA3W_layers li[data-ok=false]:before{content:\"✗ \";color:var(--g-err)}.vNLA3W_layers li[data-ok=skip]:before{content:\"– \";color:var(--dsw-alias-label-tertiary)}.vNLA3W_findings{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_findings li{border-top:1px solid var(--g-line);flex-direction:column;gap:2px;padding:6px 0;display:flex}.vNLA3W_findings code{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);word-break:break-all}.vNLA3W_shot{flex-direction:column;gap:4px;margin:0;display:flex}.vNLA3W_shot img{border:1px solid var(--g-line);background:var(--g-screen);border-radius:8px;max-width:100%}.vNLA3W_timeline{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_tlItem{--c:var(--dsw-alias-border-l2);grid-template-columns:14px minmax(0,1fr);gap:10px;padding-bottom:12px;display:grid;position:relative}.vNLA3W_tlItem:before{content:\"\";background:var(--g-line);width:2px;position:absolute;top:14px;bottom:0;left:6px}.vNLA3W_tlItem:last-child:before{display:none}.vNLA3W_tlItem[data-status=current]{--c:var(--g-ok)}.vNLA3W_tlItem[data-status=candidate]{--c:var(--g-warn)}.vNLA3W_tlItem[data-status=rejected]{--c:var(--g-err)}.vNLA3W_tlDot{background:var(--dsw-alias-bg-base);border:3px solid var(--c);box-sizing:border-box;z-index:1;border-radius:50%;width:14px;height:14px;margin-top:2px}.vNLA3W_tlBody{min-width:0;font-size:var(--dsh-panel-text-body,13px);flex-direction:column;gap:2px;display:flex}.vNLA3W_tlHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.vNLA3W_tlBy{font-size:var(--dsh-panel-text-meta,12px);border:1px solid var(--g-line);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:6px;padding:0 7px}.vNLA3W_tlBy[data-by=user]{color:var(--g-accent);border-color:color-mix(in srgb, var(--g-accent) 45%, var(--g-line));background:color-mix(in srgb, var(--g-accent) 10%, transparent)}.vNLA3W_tlBy[data-by=turn]{color:var(--dsw-alias-label-tertiary);border-style:dashed}.vNLA3W_tlTag{font-size:var(--dsh-panel-text-meta,12px);color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent);border-radius:10px;padding:0 8px}.vNLA3W_tlItem[data-status=past] .vNLA3W_tlTag{color:var(--dsw-alias-label-tertiary)}.vNLA3W_tlActions{flex-wrap:wrap;gap:12px;display:flex}.vNLA3W_diff{background:var(--dsw-alias-bg-layer-2);font-family:ui-monospace,monospace;font-size:var(--dsh-panel-text-meta,12px);border-radius:8px;flex-direction:column;gap:2px;padding:6px 10px;display:flex}.vNLA3W_diff [data-kind=added]{color:var(--g-ok)}.vNLA3W_diff [data-kind=removed]{color:var(--g-err)}.vNLA3W_diff [data-kind=changed]{color:var(--g-warn)}.vNLA3W_logList{font-size:var(--dsh-panel-text-body,13px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vNLA3W_logList li{border-top:1px solid var(--g-line);grid-template-columns:6.5em minmax(0,1fr);gap:8px;padding:5px 0;display:grid}.vNLA3W_logTime{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-panel-text-meta,12px);font-variant-numeric:tabular-nums}.vNLA3W_toast{z-index:6;max-width:calc(100% - 32px);font-size:var(--dsh-panel-text-body,13px);background:var(--dsw-alias-label-primary);color:var(--dsw-alias-label-primary-inverted);box-shadow:0 6px 18px color-mix(in srgb, var(--dsw-alias-label-primary) 25%, transparent);border-radius:18px;padding:7px 14px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.vNLA3W_candBar{background:color-mix(in srgb, var(--g-warn) 10%, var(--g-card));border-top:1px solid color-mix(in srgb, var(--g-warn) 35%, var(--g-line));flex-wrap:wrap;align-items:center;gap:8px 12px;padding:9px 12px;display:flex}.vNLA3W_pickHover{z-index:2;pointer-events:none;white-space:nowrap;font-size:var(--dsh-panel-text-meta,12px);background:var(--g-screen-bar);color:var(--g-screen-fg);border:1px solid var(--g-screen-line);border-radius:6px;padding:3px 8px;position:absolute;transform:translate(12px,12px)}.vNLA3W_preview3d{background:var(--g-screen);border-radius:10px;place-items:center;display:grid;position:relative;overflow:hidden}.vNLA3W_preview3d img{object-fit:contain;width:100%;height:100%;display:block}.vNLA3W_preview3dFrame{border:0;width:100%;height:100%;display:block;position:absolute;inset:0}.vNLA3W_preview3dFrame[data-mode=still]{opacity:0;pointer-events:none}.vNLA3W_preview3dNote{text-align:center;color:var(--g-screen-dim);font-size:var(--dsh-panel-text-meta,12px);padding:12px}.vNLA3W_turntable{aspect-ratio:16/10;width:100%;max-height:300px}.vNLA3W_proposal3d{width:120px;height:96px}.vNLA3W_gltfRow{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.vNLA3W_gltfScale{align-items:center;gap:6px;display:inline-flex}.vNLA3W_gltfScale input{width:64px}.vNLA3W_elArt3d{background:0 0;border-radius:8px;width:100%;height:100%}.vNLA3W_recipe{flex-direction:column;gap:4px;display:flex}.vNLA3W_recipeGroup{border-top:1px solid var(--g-line);flex-direction:column;gap:2px;padding-top:6px;display:flex}.vNLA3W_recipePart{flex-direction:column;gap:2px;padding:4px 0 6px;display:flex}.vNLA3W_recipePartName{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);font-weight:600}.vNLA3W_recipeColors{flex-wrap:wrap;gap:8px 14px;display:flex}.vNLA3W_recipeColor{font-size:var(--dsh-panel-text-meta,12px);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:inline-flex}.vNLA3W_recipeColor input{border:1px solid var(--g-line);background:0 0;border-radius:6px;width:32px;height:22px;padding:0}@container dsh-panel (width<=560px){.vNLA3W_turntable{max-height:220px}.vNLA3W_proposal3d{width:96px;height:80px}.vNLA3W_scroll{padding:10px 12px 56px}.vNLA3W_steps{grid-template-columns:minmax(0,1fr)}.vNLA3W_primary,.vNLA3W_ghost,.vNLA3W_seg{min-height:36px}.vNLA3W_stageBtn{min-height:32px}.vNLA3W_param{grid-template-columns:minmax(0,1fr) 4.5em}.vNLA3W_param .vNLA3W_range{grid-area:2/1/auto/-1}.vNLA3W_paramWas{display:none}.vNLA3W_proposalGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.vNLA3W_cardGrid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.vNLA3W_overlay{inset:80px 4px 4px}.vNLA3W_swatchBtn{width:32px;height:32px}}";
|
|
23787
23934
|
const tagId$7 = "@khorsheed/dsh-game/GameTab.module.css";
|
|
23788
23935
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
23789
23936
|
const tag = document.createElement("style");
|
|
@@ -23793,205 +23940,209 @@ if (mode === 'still') {
|
|
|
23793
23940
|
document.head.appendChild(tag);
|
|
23794
23941
|
}
|
|
23795
23942
|
var GameTab_module_css_default = {
|
|
23796
|
-
"
|
|
23797
|
-
"
|
|
23798
|
-
"
|
|
23799
|
-
"
|
|
23943
|
+
"pickCard": "vNLA3W_pickCard",
|
|
23944
|
+
"styleName": "vNLA3W_styleName",
|
|
23945
|
+
"projectInitial": "vNLA3W_projectInitial",
|
|
23946
|
+
"navNotice": "vNLA3W_navNotice",
|
|
23947
|
+
"historyRow": "vNLA3W_historyRow",
|
|
23948
|
+
"barRow": "vNLA3W_barRow",
|
|
23949
|
+
"field": "vNLA3W_field",
|
|
23950
|
+
"pickName": "vNLA3W_pickName",
|
|
23951
|
+
"historyItem": "vNLA3W_historyItem",
|
|
23952
|
+
"onePagerForm": "vNLA3W_onePagerForm",
|
|
23953
|
+
"pillars": "vNLA3W_pillars",
|
|
23800
23954
|
"mdP": "vNLA3W_mdP",
|
|
23801
|
-
"
|
|
23802
|
-
"
|
|
23955
|
+
"rejectRow": "vNLA3W_rejectRow",
|
|
23956
|
+
"mdTableWrap": "vNLA3W_mdTableWrap",
|
|
23957
|
+
"tlBody": "vNLA3W_tlBody",
|
|
23958
|
+
"preview3d": "vNLA3W_preview3d",
|
|
23959
|
+
"turntable": "vNLA3W_turntable",
|
|
23960
|
+
"logTime": "vNLA3W_logTime",
|
|
23961
|
+
"lookMain": "vNLA3W_lookMain",
|
|
23962
|
+
"table": "vNLA3W_table",
|
|
23963
|
+
"drawerHead": "vNLA3W_drawerHead",
|
|
23964
|
+
"overlay": "vNLA3W_overlay",
|
|
23803
23965
|
"lookPanel": "vNLA3W_lookPanel",
|
|
23804
|
-
"
|
|
23805
|
-
"
|
|
23806
|
-
"tlItem": "vNLA3W_tlItem",
|
|
23807
|
-
"mdQuote": "vNLA3W_mdQuote",
|
|
23808
|
-
"stageBtn": "vNLA3W_stageBtn",
|
|
23809
|
-
"screen": "vNLA3W_screen",
|
|
23810
|
-
"projectCard": "vNLA3W_projectCard",
|
|
23811
|
-
"mdH2": "vNLA3W_mdH2",
|
|
23966
|
+
"checkCard": "vNLA3W_checkCard",
|
|
23967
|
+
"progressRow": "vNLA3W_progressRow",
|
|
23812
23968
|
"tlHead": "vNLA3W_tlHead",
|
|
23813
|
-
"
|
|
23814
|
-
"
|
|
23815
|
-
"
|
|
23816
|
-
"
|
|
23817
|
-
"
|
|
23818
|
-
"
|
|
23819
|
-
"
|
|
23820
|
-
"
|
|
23821
|
-
"
|
|
23822
|
-
"
|
|
23823
|
-
"
|
|
23824
|
-
"mdTable": "vNLA3W_mdTable",
|
|
23969
|
+
"fold": "vNLA3W_fold",
|
|
23970
|
+
"headChip": "vNLA3W_headChip",
|
|
23971
|
+
"commitText": "vNLA3W_commitText",
|
|
23972
|
+
"stageBar": "vNLA3W_stageBar",
|
|
23973
|
+
"lookSide": "vNLA3W_lookSide",
|
|
23974
|
+
"notice": "vNLA3W_notice",
|
|
23975
|
+
"elOpen": "vNLA3W_elOpen",
|
|
23976
|
+
"sample": "vNLA3W_sample",
|
|
23977
|
+
"recipe": "vNLA3W_recipe",
|
|
23978
|
+
"projectPitch": "vNLA3W_projectPitch",
|
|
23979
|
+
"swatches": "vNLA3W_swatches",
|
|
23825
23980
|
"notesChapter": "vNLA3W_notesChapter",
|
|
23826
|
-
"
|
|
23827
|
-
"projectChips": "vNLA3W_projectChips",
|
|
23828
|
-
"emptyCard": "vNLA3W_emptyCard",
|
|
23829
|
-
"commitActions": "vNLA3W_commitActions",
|
|
23981
|
+
"segGroup": "vNLA3W_segGroup",
|
|
23830
23982
|
"chapters": "vNLA3W_chapters",
|
|
23831
|
-
"
|
|
23832
|
-
"
|
|
23833
|
-
"
|
|
23834
|
-
"
|
|
23835
|
-
"
|
|
23983
|
+
"checkHead": "vNLA3W_checkHead",
|
|
23984
|
+
"barValue": "vNLA3W_barValue",
|
|
23985
|
+
"posterPlay": "vNLA3W_posterPlay",
|
|
23986
|
+
"diff": "vNLA3W_diff",
|
|
23987
|
+
"bannerActions": "vNLA3W_bannerActions",
|
|
23988
|
+
"mdH2": "vNLA3W_mdH2",
|
|
23989
|
+
"commitFiles": "vNLA3W_commitFiles",
|
|
23836
23990
|
"stripDot": "vNLA3W_stripDot",
|
|
23837
|
-
"
|
|
23838
|
-
"
|
|
23839
|
-
"
|
|
23840
|
-
"
|
|
23841
|
-
"
|
|
23842
|
-
"
|
|
23843
|
-
"
|
|
23844
|
-
"textarea": "vNLA3W_textarea",
|
|
23845
|
-
"stage": "vNLA3W_stage",
|
|
23846
|
-
"tableWrap": "vNLA3W_tableWrap",
|
|
23847
|
-
"titleSwitch": "vNLA3W_titleSwitch",
|
|
23848
|
-
"fieldKey": "vNLA3W_fieldKey",
|
|
23849
|
-
"timeline": "vNLA3W_timeline",
|
|
23850
|
-
"steps": "vNLA3W_steps",
|
|
23991
|
+
"projectBody": "vNLA3W_projectBody",
|
|
23992
|
+
"switches": "vNLA3W_switches",
|
|
23993
|
+
"pillarList": "vNLA3W_pillarList",
|
|
23994
|
+
"seg": "vNLA3W_seg",
|
|
23995
|
+
"chapter": "vNLA3W_chapter",
|
|
23996
|
+
"tight": "vNLA3W_tight",
|
|
23997
|
+
"tlItem": "vNLA3W_tlItem",
|
|
23851
23998
|
"spacer": "vNLA3W_spacer",
|
|
23852
|
-
"
|
|
23853
|
-
"bannerText": "vNLA3W_bannerText",
|
|
23854
|
-
"logTime": "vNLA3W_logTime",
|
|
23855
|
-
"paletteStrip": "vNLA3W_paletteStrip",
|
|
23856
|
-
"pickHover": "vNLA3W_pickHover",
|
|
23999
|
+
"status": "vNLA3W_status",
|
|
23857
24000
|
"gallery": "vNLA3W_gallery",
|
|
23858
|
-
"
|
|
23859
|
-
"
|
|
23860
|
-
"
|
|
23861
|
-
"
|
|
23862
|
-
"proposalGrid": "vNLA3W_proposalGrid",
|
|
23863
|
-
"ghost": "vNLA3W_ghost",
|
|
23864
|
-
"numbers": "vNLA3W_numbers",
|
|
23865
|
-
"proposal3d": "vNLA3W_proposal3d",
|
|
23866
|
-
"lead": "vNLA3W_lead",
|
|
23867
|
-
"checkHead": "vNLA3W_checkHead",
|
|
23868
|
-
"mdList": "vNLA3W_mdList",
|
|
23869
|
-
"recipeGroup": "vNLA3W_recipeGroup",
|
|
23870
|
-
"recipeColors": "vNLA3W_recipeColors",
|
|
23871
|
-
"preview3d": "vNLA3W_preview3d",
|
|
23872
|
-
"table": "vNLA3W_table",
|
|
23873
|
-
"tlBody": "vNLA3W_tlBody",
|
|
23874
|
-
"recipePart": "vNLA3W_recipePart",
|
|
23875
|
-
"gltfRow": "vNLA3W_gltfRow",
|
|
23876
|
-
"elArt": "vNLA3W_elArt",
|
|
23877
|
-
"projectPitch": "vNLA3W_projectPitch",
|
|
23878
|
-
"chapter": "vNLA3W_chapter",
|
|
23879
|
-
"elMeta": "vNLA3W_elMeta",
|
|
23880
|
-
"look": "vNLA3W_look",
|
|
23881
|
-
"proposalArt": "vNLA3W_proposalArt",
|
|
23882
|
-
"posterIcon": "vNLA3W_posterIcon",
|
|
23883
|
-
"overlay": "vNLA3W_overlay",
|
|
23884
|
-
"progressRow": "vNLA3W_progressRow",
|
|
23885
|
-
"deleteError": "vNLA3W_deleteError",
|
|
23886
|
-
"titleCaret": "vNLA3W_titleCaret",
|
|
23887
|
-
"paramValue": "vNLA3W_paramValue",
|
|
24001
|
+
"typeRow": "vNLA3W_typeRow",
|
|
24002
|
+
"range": "vNLA3W_range",
|
|
24003
|
+
"mdTable": "vNLA3W_mdTable",
|
|
24004
|
+
"detailHead": "vNLA3W_detailHead",
|
|
23888
24005
|
"saveState": "vNLA3W_saveState",
|
|
23889
|
-
"
|
|
24006
|
+
"preview3dFrame": "vNLA3W_preview3dFrame",
|
|
24007
|
+
"fieldKey": "vNLA3W_fieldKey",
|
|
23890
24008
|
"plainList": "vNLA3W_plainList",
|
|
23891
|
-
"
|
|
23892
|
-
"
|
|
23893
|
-
"
|
|
23894
|
-
"
|
|
23895
|
-
"
|
|
23896
|
-
"md": "vNLA3W_md",
|
|
23897
|
-
"toast": "vNLA3W_toast",
|
|
24009
|
+
"poster": "vNLA3W_poster",
|
|
24010
|
+
"posterIcon": "vNLA3W_posterIcon",
|
|
24011
|
+
"stageHint": "vNLA3W_stageHint",
|
|
24012
|
+
"stageInner": "vNLA3W_stageInner",
|
|
24013
|
+
"gltfRow": "vNLA3W_gltfRow",
|
|
23898
24014
|
"tlDot": "vNLA3W_tlDot",
|
|
23899
|
-
"
|
|
23900
|
-
"
|
|
23901
|
-
"
|
|
23902
|
-
"
|
|
24015
|
+
"banner": "vNLA3W_banner",
|
|
24016
|
+
"paramLabel": "vNLA3W_paramLabel",
|
|
24017
|
+
"numbers": "vNLA3W_numbers",
|
|
24018
|
+
"proposals": "vNLA3W_proposals",
|
|
24019
|
+
"block": "vNLA3W_block",
|
|
24020
|
+
"emptyGlyph": "vNLA3W_emptyGlyph",
|
|
24021
|
+
"history": "vNLA3W_history",
|
|
24022
|
+
"md": "vNLA3W_md",
|
|
24023
|
+
"screen": "vNLA3W_screen",
|
|
24024
|
+
"proposalGrid": "vNLA3W_proposalGrid",
|
|
23903
24025
|
"pickLayer": "vNLA3W_pickLayer",
|
|
23904
|
-
"
|
|
23905
|
-
"
|
|
23906
|
-
"
|
|
23907
|
-
"
|
|
23908
|
-
"
|
|
23909
|
-
"
|
|
23910
|
-
"
|
|
24026
|
+
"projectCard": "vNLA3W_projectCard",
|
|
24027
|
+
"screenNote": "vNLA3W_screenNote",
|
|
24028
|
+
"onePager": "vNLA3W_onePager",
|
|
24029
|
+
"progressBar": "vNLA3W_progressBar",
|
|
24030
|
+
"param": "vNLA3W_param",
|
|
24031
|
+
"lookPreview": "vNLA3W_lookPreview",
|
|
24032
|
+
"selectBar": "vNLA3W_selectBar",
|
|
24033
|
+
"mdH1": "vNLA3W_mdH1",
|
|
23911
24034
|
"barFill": "vNLA3W_barFill",
|
|
23912
|
-
"
|
|
23913
|
-
"
|
|
23914
|
-
"
|
|
23915
|
-
"
|
|
24035
|
+
"tlTag": "vNLA3W_tlTag",
|
|
24036
|
+
"elMeta": "vNLA3W_elMeta",
|
|
24037
|
+
"commitKind": "vNLA3W_commitKind",
|
|
24038
|
+
"commitActions": "vNLA3W_commitActions",
|
|
24039
|
+
"paramValue": "vNLA3W_paramValue",
|
|
24040
|
+
"screenEmpty": "vNLA3W_screenEmpty",
|
|
24041
|
+
"swatch": "vNLA3W_swatch",
|
|
24042
|
+
"stageBtn": "vNLA3W_stageBtn",
|
|
24043
|
+
"strip": "vNLA3W_strip",
|
|
24044
|
+
"drawer": "vNLA3W_drawer",
|
|
23916
24045
|
"fieldGrid": "vNLA3W_fieldGrid",
|
|
23917
|
-
"
|
|
23918
|
-
"
|
|
23919
|
-
"
|
|
24046
|
+
"emptyCard": "vNLA3W_emptyCard",
|
|
24047
|
+
"pitch": "vNLA3W_pitch",
|
|
24048
|
+
"projectThumb": "vNLA3W_projectThumb",
|
|
24049
|
+
"mdList": "vNLA3W_mdList",
|
|
24050
|
+
"candBar": "vNLA3W_candBar",
|
|
24051
|
+
"projectCardWrap": "vNLA3W_projectCardWrap",
|
|
24052
|
+
"steps": "vNLA3W_steps",
|
|
24053
|
+
"screenGlyph": "vNLA3W_screenGlyph",
|
|
24054
|
+
"chapterHead": "vNLA3W_chapterHead",
|
|
24055
|
+
"input": "vNLA3W_input",
|
|
24056
|
+
"projectChips": "vNLA3W_projectChips",
|
|
24057
|
+
"projectDelete": "vNLA3W_projectDelete",
|
|
24058
|
+
"newPlus": "vNLA3W_newPlus",
|
|
24059
|
+
"lookEditor": "vNLA3W_lookEditor",
|
|
24060
|
+
"warnText": "vNLA3W_warnText",
|
|
24061
|
+
"chapterBody": "vNLA3W_chapterBody",
|
|
24062
|
+
"styleChip": "vNLA3W_styleChip",
|
|
24063
|
+
"projectGrid": "vNLA3W_projectGrid",
|
|
23920
24064
|
"headMeta": "vNLA3W_headMeta",
|
|
23921
|
-
"
|
|
24065
|
+
"overlayHead": "vNLA3W_overlayHead",
|
|
24066
|
+
"elCard": "vNLA3W_elCard",
|
|
24067
|
+
"tlBy": "vNLA3W_tlBy",
|
|
24068
|
+
"elInitial": "vNLA3W_elInitial",
|
|
24069
|
+
"footRow": "vNLA3W_footRow",
|
|
24070
|
+
"bannerText": "vNLA3W_bannerText",
|
|
24071
|
+
"eyebrow": "vNLA3W_eyebrow",
|
|
24072
|
+
"swatchBtn": "vNLA3W_swatchBtn",
|
|
24073
|
+
"elCheck": "vNLA3W_elCheck",
|
|
24074
|
+
"logList": "vNLA3W_logList",
|
|
24075
|
+
"deleteError": "vNLA3W_deleteError",
|
|
24076
|
+
"barTrack": "vNLA3W_barTrack",
|
|
24077
|
+
"proposal3d": "vNLA3W_proposal3d",
|
|
24078
|
+
"elArt3d": "vNLA3W_elArt3d",
|
|
24079
|
+
"styleCard": "vNLA3W_styleCard",
|
|
24080
|
+
"findings": "vNLA3W_findings",
|
|
24081
|
+
"titleSwitch": "vNLA3W_titleSwitch",
|
|
24082
|
+
"danger": "vNLA3W_danger",
|
|
24083
|
+
"bars": "vNLA3W_bars",
|
|
24084
|
+
"recipePart": "vNLA3W_recipePart",
|
|
24085
|
+
"recipePartName": "vNLA3W_recipePartName",
|
|
24086
|
+
"recipeColors": "vNLA3W_recipeColors",
|
|
24087
|
+
"frame": "vNLA3W_frame",
|
|
24088
|
+
"paramWas": "vNLA3W_paramWas",
|
|
24089
|
+
"onePagerHead": "vNLA3W_onePagerHead",
|
|
24090
|
+
"gltfScale": "vNLA3W_gltfScale",
|
|
24091
|
+
"mdQuote": "vNLA3W_mdQuote",
|
|
24092
|
+
"projectTitle": "vNLA3W_projectTitle",
|
|
24093
|
+
"commitBar": "vNLA3W_commitBar",
|
|
23922
24094
|
"chevron": "vNLA3W_chevron",
|
|
24095
|
+
"badge": "vNLA3W_badge",
|
|
24096
|
+
"stripMeta": "vNLA3W_stripMeta",
|
|
24097
|
+
"typeTag": "vNLA3W_typeTag",
|
|
24098
|
+
"timeline": "vNLA3W_timeline",
|
|
24099
|
+
"elName": "vNLA3W_elName",
|
|
24100
|
+
"switch": "vNLA3W_switch",
|
|
24101
|
+
"preview3dNote": "vNLA3W_preview3dNote",
|
|
23923
24102
|
"freshTag": "vNLA3W_freshTag",
|
|
24103
|
+
"numbersTitle": "vNLA3W_numbersTitle",
|
|
24104
|
+
"newCard": "vNLA3W_newCard",
|
|
24105
|
+
"navNoticeText": "vNLA3W_navNoticeText",
|
|
24106
|
+
"toolRow": "vNLA3W_toolRow",
|
|
24107
|
+
"tlActions": "vNLA3W_tlActions",
|
|
24108
|
+
"recipeGroup": "vNLA3W_recipeGroup",
|
|
24109
|
+
"proposalArt": "vNLA3W_proposalArt",
|
|
24110
|
+
"textarea": "vNLA3W_textarea",
|
|
24111
|
+
"hero": "vNLA3W_hero",
|
|
23924
24112
|
"cardGrid": "vNLA3W_cardGrid",
|
|
23925
|
-
"warnText": "vNLA3W_warnText",
|
|
23926
|
-
"overlayHead": "vNLA3W_overlayHead",
|
|
23927
|
-
"elCheck": "vNLA3W_elCheck",
|
|
23928
|
-
"styleChip": "vNLA3W_styleChip",
|
|
23929
24113
|
"lookEmpty": "vNLA3W_lookEmpty",
|
|
23930
|
-
"
|
|
24114
|
+
"elArt": "vNLA3W_elArt",
|
|
24115
|
+
"primary": "vNLA3W_primary",
|
|
23931
24116
|
"commitList": "vNLA3W_commitList",
|
|
23932
|
-
"range": "vNLA3W_range",
|
|
23933
|
-
"input": "vNLA3W_input",
|
|
23934
|
-
"numbersTitle": "vNLA3W_numbersTitle",
|
|
23935
|
-
"swatchBtn": "vNLA3W_swatchBtn",
|
|
23936
|
-
"drawer": "vNLA3W_drawer",
|
|
23937
|
-
"pitch": "vNLA3W_pitch",
|
|
23938
|
-
"bars": "vNLA3W_bars",
|
|
23939
|
-
"block": "vNLA3W_block",
|
|
23940
|
-
"frame": "vNLA3W_frame",
|
|
23941
|
-
"switches": "vNLA3W_switches",
|
|
23942
|
-
"barRow": "vNLA3W_barRow",
|
|
23943
|
-
"projectDelete": "vNLA3W_projectDelete",
|
|
23944
24117
|
"count": "vNLA3W_count",
|
|
24118
|
+
"barName": "vNLA3W_barName",
|
|
24119
|
+
"link": "vNLA3W_link",
|
|
24120
|
+
"layers": "vNLA3W_layers",
|
|
24121
|
+
"pickHover": "vNLA3W_pickHover",
|
|
24122
|
+
"recipeColor": "vNLA3W_recipeColor",
|
|
24123
|
+
"chapterTitle": "vNLA3W_chapterTitle",
|
|
24124
|
+
"toast": "vNLA3W_toast",
|
|
24125
|
+
"errorPill": "vNLA3W_errorPill",
|
|
24126
|
+
"lead": "vNLA3W_lead",
|
|
24127
|
+
"tableWrap": "vNLA3W_tableWrap",
|
|
23945
24128
|
"barsKey": "vNLA3W_barsKey",
|
|
23946
|
-
"findings": "vNLA3W_findings",
|
|
23947
|
-
"tlActions": "vNLA3W_tlActions",
|
|
23948
|
-
"root": "vNLA3W_root",
|
|
23949
|
-
"onePagerForm": "vNLA3W_onePagerForm",
|
|
23950
|
-
"checkCard": "vNLA3W_checkCard",
|
|
23951
|
-
"preview3dNote": "vNLA3W_preview3dNote",
|
|
23952
|
-
"styleCard": "vNLA3W_styleCard",
|
|
23953
|
-
"badge": "vNLA3W_badge",
|
|
23954
|
-
"historyItem": "vNLA3W_historyItem",
|
|
23955
|
-
"poster": "vNLA3W_poster",
|
|
23956
|
-
"fold": "vNLA3W_fold",
|
|
23957
|
-
"bannerActions": "vNLA3W_bannerActions",
|
|
23958
|
-
"barTrack": "vNLA3W_barTrack",
|
|
23959
|
-
"barValue": "vNLA3W_barValue",
|
|
23960
|
-
"turntable": "vNLA3W_turntable",
|
|
23961
|
-
"heroTitle": "vNLA3W_heroTitle",
|
|
23962
|
-
"swatches": "vNLA3W_swatches",
|
|
23963
24129
|
"rowEnd": "vNLA3W_rowEnd",
|
|
23964
|
-
"
|
|
23965
|
-
"
|
|
24130
|
+
"ghost": "vNLA3W_ghost",
|
|
24131
|
+
"heroTitle": "vNLA3W_heroTitle",
|
|
24132
|
+
"versionPill": "vNLA3W_versionPill",
|
|
24133
|
+
"shot": "vNLA3W_shot",
|
|
24134
|
+
"titleCaret": "vNLA3W_titleCaret",
|
|
23966
24135
|
"scroll": "vNLA3W_scroll",
|
|
23967
|
-
"historyRow": "vNLA3W_historyRow",
|
|
23968
|
-
"eyebrow": "vNLA3W_eyebrow",
|
|
23969
|
-
"pickName": "vNLA3W_pickName",
|
|
23970
|
-
"metaLine": "vNLA3W_metaLine",
|
|
23971
|
-
"projectInitial": "vNLA3W_projectInitial",
|
|
23972
|
-
"layers": "vNLA3W_layers",
|
|
23973
|
-
"preview3dFrame": "vNLA3W_preview3dFrame",
|
|
23974
|
-
"projectHere": "vNLA3W_projectHere",
|
|
23975
|
-
"newCard": "vNLA3W_newCard",
|
|
23976
|
-
"swatch": "vNLA3W_swatch",
|
|
23977
|
-
"newPlus": "vNLA3W_newPlus",
|
|
23978
|
-
"banner": "vNLA3W_banner",
|
|
23979
|
-
"pickCard": "vNLA3W_pickCard",
|
|
23980
|
-
"lookSide": "vNLA3W_lookSide",
|
|
23981
|
-
"onePager": "vNLA3W_onePager",
|
|
23982
|
-
"recipe": "vNLA3W_recipe",
|
|
23983
24136
|
"deleteActions": "vNLA3W_deleteActions",
|
|
23984
|
-
"
|
|
23985
|
-
"
|
|
24137
|
+
"look": "vNLA3W_look",
|
|
24138
|
+
"stripGo": "vNLA3W_stripGo",
|
|
24139
|
+
"metaLine": "vNLA3W_metaLine",
|
|
24140
|
+
"stage": "vNLA3W_stage",
|
|
24141
|
+
"paletteStrip": "vNLA3W_paletteStrip",
|
|
23986
24142
|
"proposalCard": "vNLA3W_proposalCard",
|
|
23987
|
-
"
|
|
23988
|
-
"
|
|
23989
|
-
"
|
|
23990
|
-
"toolRow": "vNLA3W_toolRow",
|
|
23991
|
-
"onePagerHead": "vNLA3W_onePagerHead",
|
|
23992
|
-
"headChip": "vNLA3W_headChip",
|
|
23993
|
-
"emptyGlyph": "vNLA3W_emptyGlyph",
|
|
23994
|
-
"lookPreview": "vNLA3W_lookPreview"
|
|
24143
|
+
"projectHere": "vNLA3W_projectHere",
|
|
24144
|
+
"blockTitle": "vNLA3W_blockTitle",
|
|
24145
|
+
"root": "vNLA3W_root"
|
|
23995
24146
|
};
|
|
23996
24147
|
//#endregion
|
|
23997
24148
|
//#region src/client/Preview3D.tsx
|
|
@@ -24071,7 +24222,7 @@ if (mode === 'still') {
|
|
|
24071
24222
|
};
|
|
24072
24223
|
}
|
|
24073
24224
|
/** One 3D look preview. */
|
|
24074
|
-
function Preview3D({ api, projectId, version, look, mode, className, emptyLabel, placeholder, onClips, clip, view }) {
|
|
24225
|
+
function Preview3D({ api, projectId, version, look, mode, className, emptyLabel, placeholder, onClips, onTurned, clip, view }) {
|
|
24075
24226
|
const lookJson = JSON.stringify(look);
|
|
24076
24227
|
const stillKey = `${projectId}:${version}:${lookJson}`;
|
|
24077
24228
|
const [files, setFiles] = (0, react.useState)(null);
|
|
@@ -24146,6 +24297,7 @@ if (mode === 'still') {
|
|
|
24146
24297
|
setImage(data.png);
|
|
24147
24298
|
}
|
|
24148
24299
|
if (data?.gamedev === "preview-clips" && mode === "spin") onClips?.(data.names, data.parts);
|
|
24300
|
+
if (data?.gamedev === "preview-turned" && mode === "spin") onTurned?.();
|
|
24149
24301
|
};
|
|
24150
24302
|
window.addEventListener("message", onMessage);
|
|
24151
24303
|
return () => {
|
|
@@ -24154,7 +24306,8 @@ if (mode === 'still') {
|
|
|
24154
24306
|
}, [
|
|
24155
24307
|
mode,
|
|
24156
24308
|
stillKey,
|
|
24157
|
-
onClips
|
|
24309
|
+
onClips,
|
|
24310
|
+
onTurned
|
|
24158
24311
|
]);
|
|
24159
24312
|
(0, react.useEffect)(() => {
|
|
24160
24313
|
if (view == null || mode !== "spin" || !booted.current) return;
|
|
@@ -24249,20 +24402,20 @@ if (mode === 'still') {
|
|
|
24249
24402
|
document.head.appendChild(tag);
|
|
24250
24403
|
}
|
|
24251
24404
|
var TurnCard_module_css_default = {
|
|
24252
|
-
"
|
|
24253
|
-
"
|
|
24405
|
+
"badge": "_8rBpeq_badge",
|
|
24406
|
+
"still": "_8rBpeq_still",
|
|
24407
|
+
"card": "_8rBpeq_card",
|
|
24408
|
+
"spacer": "_8rBpeq_spacer",
|
|
24409
|
+
"go": "_8rBpeq_go",
|
|
24410
|
+
"list": "_8rBpeq_list",
|
|
24254
24411
|
"icon": "_8rBpeq_icon",
|
|
24255
24412
|
"text": "_8rBpeq_text",
|
|
24256
|
-
"still": "_8rBpeq_still",
|
|
24257
24413
|
"arrow": "_8rBpeq_arrow",
|
|
24258
|
-
"
|
|
24414
|
+
"open": "_8rBpeq_open",
|
|
24259
24415
|
"head": "_8rBpeq_head",
|
|
24416
|
+
"row": "_8rBpeq_row",
|
|
24260
24417
|
"meta": "_8rBpeq_meta",
|
|
24261
|
-
"
|
|
24262
|
-
"spacer": "_8rBpeq_spacer",
|
|
24263
|
-
"beforeAfter": "_8rBpeq_beforeAfter",
|
|
24264
|
-
"card": "_8rBpeq_card",
|
|
24265
|
-
"badge": "_8rBpeq_badge"
|
|
24418
|
+
"beforeAfter": "_8rBpeq_beforeAfter"
|
|
24266
24419
|
};
|
|
24267
24420
|
//#endregion
|
|
24268
24421
|
//#region src/client/TurnCard.tsx
|
|
@@ -24545,6 +24698,93 @@ if (mode === 'still') {
|
|
|
24545
24698
|
});
|
|
24546
24699
|
}
|
|
24547
24700
|
//#endregion
|
|
24701
|
+
//#region src/client/reveal.ts
|
|
24702
|
+
/** A touch this recent means the user is busy in the panel. */
|
|
24703
|
+
const BUSY_MS = 2e4;
|
|
24704
|
+
/** Below this window width a closed panel is not opened: it would cover the conversation. */
|
|
24705
|
+
const WIDE_PX = 820;
|
|
24706
|
+
/** A request older than this, seen first on this page, is history (a reload). */
|
|
24707
|
+
const FRESH_MS = 9e4;
|
|
24708
|
+
/** The page-wide controller. */
|
|
24709
|
+
var Reveal = class {
|
|
24710
|
+
open;
|
|
24711
|
+
lastTouch = 0;
|
|
24712
|
+
playing = false;
|
|
24713
|
+
mounted = 0;
|
|
24714
|
+
noticeNow = null;
|
|
24715
|
+
listeners = /* @__PURE__ */ new Set();
|
|
24716
|
+
/** The last request sequence carried out per project. */
|
|
24717
|
+
done = /* @__PURE__ */ new Map();
|
|
24718
|
+
/** @param open - opens the game tab at a place (the plugin's openAt). */
|
|
24719
|
+
constructor(open) {
|
|
24720
|
+
this.open = open;
|
|
24721
|
+
}
|
|
24722
|
+
get notice() {
|
|
24723
|
+
return this.noticeNow;
|
|
24724
|
+
}
|
|
24725
|
+
dismiss() {
|
|
24726
|
+
this.noticeNow = null;
|
|
24727
|
+
this.changed();
|
|
24728
|
+
}
|
|
24729
|
+
follow() {
|
|
24730
|
+
const n = this.noticeNow;
|
|
24731
|
+
this.dismiss();
|
|
24732
|
+
if (n !== null) this.open(n.target);
|
|
24733
|
+
}
|
|
24734
|
+
/** The tab mounted; the result unmounts it. A mounted tab is navigated at any width. */
|
|
24735
|
+
mount() {
|
|
24736
|
+
this.mounted++;
|
|
24737
|
+
return () => {
|
|
24738
|
+
this.mounted--;
|
|
24739
|
+
};
|
|
24740
|
+
}
|
|
24741
|
+
touched() {
|
|
24742
|
+
this.lastTouch = Date.now();
|
|
24743
|
+
}
|
|
24744
|
+
setPlaying(on) {
|
|
24745
|
+
this.playing = on;
|
|
24746
|
+
}
|
|
24747
|
+
subscribe(listener) {
|
|
24748
|
+
this.listeners.add(listener);
|
|
24749
|
+
return () => {
|
|
24750
|
+
this.listeners.delete(listener);
|
|
24751
|
+
};
|
|
24752
|
+
}
|
|
24753
|
+
changed() {
|
|
24754
|
+
for (const l of this.listeners) l();
|
|
24755
|
+
}
|
|
24756
|
+
/** The agent's request for a project, as the poll returned it. */
|
|
24757
|
+
request(projectId, request, now = Date.now()) {
|
|
24758
|
+
const seen = this.done.get(projectId);
|
|
24759
|
+
this.done.set(projectId, Math.max(request.seq, seen ?? 0));
|
|
24760
|
+
if (seen !== void 0 ? request.seq <= seen : now - Date.parse(request.at) > FRESH_MS) return null;
|
|
24761
|
+
const target = {
|
|
24762
|
+
view: request.target.view,
|
|
24763
|
+
...request.target.elementId === void 0 ? {} : { elementId: request.target.elementId },
|
|
24764
|
+
...request.target.chapterId === void 0 ? {} : { chapterId: request.target.chapterId }
|
|
24765
|
+
};
|
|
24766
|
+
const busy = this.playing ? "a game is running" : now - this.lastTouch < BUSY_MS ? "the panel was just used" : null;
|
|
24767
|
+
const narrow = this.mounted === 0 && (typeof window === "undefined" || window.innerWidth < WIDE_PX);
|
|
24768
|
+
const outcome = busy !== null ? "notice" : narrow ? "skipped" : "opened";
|
|
24769
|
+
try {
|
|
24770
|
+
console.info(`[game:reveal] #${request.seq} ${request.note} → ${outcome}${busy === null ? "" : ` (${busy})`}${narrow && busy === null ? " (closed panel, narrow window)" : ""}`, target);
|
|
24771
|
+
} catch {}
|
|
24772
|
+
if (outcome === "notice") {
|
|
24773
|
+
this.noticeNow = {
|
|
24774
|
+
text: request.note,
|
|
24775
|
+
target
|
|
24776
|
+
};
|
|
24777
|
+
this.changed();
|
|
24778
|
+
}
|
|
24779
|
+
if (outcome === "opened") {
|
|
24780
|
+
this.noticeNow = null;
|
|
24781
|
+
this.open(target);
|
|
24782
|
+
this.changed();
|
|
24783
|
+
}
|
|
24784
|
+
return outcome;
|
|
24785
|
+
}
|
|
24786
|
+
};
|
|
24787
|
+
//#endregion
|
|
24548
24788
|
//#region src/client/refs.ts
|
|
24549
24789
|
/** The trigger-source name the chip codec registers under. */
|
|
24550
24790
|
const GAME_REF_SOURCE = "dsh-game-ref";
|
|
@@ -24803,10 +25043,10 @@ if (mode === 'still') {
|
|
|
24803
25043
|
}
|
|
24804
25044
|
var PanelHeader_module_css_default = {
|
|
24805
25045
|
"icon": "G-iMtW_icon",
|
|
25046
|
+
"titleAfterBack": "G-iMtW_titleAfterBack",
|
|
24806
25047
|
"header": "G-iMtW_header",
|
|
24807
25048
|
"meta": "G-iMtW_meta",
|
|
24808
|
-
"title": "G-iMtW_title"
|
|
24809
|
-
"titleAfterBack": "G-iMtW_titleAfterBack"
|
|
25049
|
+
"title": "G-iMtW_title"
|
|
24810
25050
|
};
|
|
24811
25051
|
/**
|
|
24812
25052
|
* Split actions into inline and overflow. `menuOnly` actions always overflow.
|
|
@@ -24924,12 +25164,12 @@ if (mode === 'still') {
|
|
|
24924
25164
|
document.head.appendChild(tag);
|
|
24925
25165
|
}
|
|
24926
25166
|
var UnderlineTabs_module_css_default = {
|
|
24927
|
-
"tab": "xGnkzq_tab",
|
|
24928
|
-
"label": "xGnkzq_label",
|
|
24929
|
-
"bar": "xGnkzq_bar",
|
|
24930
25167
|
"trailing": "xGnkzq_trailing",
|
|
25168
|
+
"label": "xGnkzq_label",
|
|
25169
|
+
"tabs": "xGnkzq_tabs",
|
|
24931
25170
|
"badge": "xGnkzq_badge",
|
|
24932
|
-
"
|
|
25171
|
+
"bar": "xGnkzq_bar",
|
|
25172
|
+
"tab": "xGnkzq_tab"
|
|
24933
25173
|
};
|
|
24934
25174
|
//#endregion
|
|
24935
25175
|
//#region ../client-ui-panel-kit/src/client/UnderlineTabs.tsx
|
|
@@ -25021,11 +25261,11 @@ if (mode === 'still') {
|
|
|
25021
25261
|
document.head.appendChild(tag);
|
|
25022
25262
|
}
|
|
25023
25263
|
var ChipRow_module_css_default = {
|
|
25264
|
+
"chip": "n9WOdq_chip",
|
|
25024
25265
|
"dot": "n9WOdq_dot",
|
|
25025
|
-
"count": "n9WOdq_count",
|
|
25026
25266
|
"tools": "n9WOdq_tools",
|
|
25027
25267
|
"row": "n9WOdq_row",
|
|
25028
|
-
"
|
|
25268
|
+
"count": "n9WOdq_count",
|
|
25029
25269
|
"withTools": "n9WOdq_withTools"
|
|
25030
25270
|
};
|
|
25031
25271
|
//#endregion
|
|
@@ -25098,6 +25338,16 @@ if (mode === 'still') {
|
|
|
25098
25338
|
if (id.startsWith("custom:")) return id.slice(7);
|
|
25099
25339
|
return [...ART_STYLES, ...ART_STYLES_3D].find((style) => style.id === id)?.label ?? id;
|
|
25100
25340
|
}
|
|
25341
|
+
/**
|
|
25342
|
+
* A style's short name for tight places (tags, chips): a custom description's
|
|
25343
|
+
* lead — up to its first dash, colon, comma or bracket — at most 10 characters.
|
|
25344
|
+
* The full label stays for the model and for hover text.
|
|
25345
|
+
*/
|
|
25346
|
+
function artStyleName(id) {
|
|
25347
|
+
const full = artStyleLabel(id).trim();
|
|
25348
|
+
const lead = full.split(/——|—|--|[::,,;;((]/)[0]?.trim() || full;
|
|
25349
|
+
return [...lead].length > 10 ? `${[...lead].slice(0, 10).join("")}…` : lead;
|
|
25350
|
+
}
|
|
25101
25351
|
//#endregion
|
|
25102
25352
|
//#region src/client/markdown.tsx
|
|
25103
25353
|
/** Split a pipe-table row into its cells. */
|
|
@@ -25368,8 +25618,8 @@ if (mode === 'still') {
|
|
|
25368
25618
|
type: "button",
|
|
25369
25619
|
className: GameTab_module_css_default.styleChip,
|
|
25370
25620
|
onClick: onStyle,
|
|
25371
|
-
title: t("style.change")
|
|
25372
|
-
children: t("design.style", { style: manifest === null ? "—" :
|
|
25621
|
+
title: manifest === null ? t("style.change") : `${artStyleLabel(manifest.artStyle)}\n${t("style.change")}`,
|
|
25622
|
+
children: t("design.style", { style: manifest === null ? "—" : artStyleName(manifest.artStyle) })
|
|
25373
25623
|
}),
|
|
25374
25624
|
!editing && manifest !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
25375
25625
|
type: "button",
|
|
@@ -25461,6 +25711,10 @@ if (mode === 'still') {
|
|
|
25461
25711
|
className: GameTab_module_css_default.pitch,
|
|
25462
25712
|
children: manifest?.pitch || t("design.noPitch")
|
|
25463
25713
|
}),
|
|
25714
|
+
manifest !== null && artStyleName(manifest.artStyle) !== artStyleLabel(manifest.artStyle) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
25715
|
+
className: GameTab_module_css_default.metaLine,
|
|
25716
|
+
children: t("design.styleFull", { style: artStyleLabel(manifest.artStyle) })
|
|
25717
|
+
}),
|
|
25464
25718
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
25465
25719
|
className: GameTab_module_css_default.typeRow,
|
|
25466
25720
|
children: (manifest?.elementTypes ?? []).map((type) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -25911,6 +26165,7 @@ if (mode === 'still') {
|
|
|
25911
26165
|
"fields.note": "改完离开输入框即保存;提交成新版本后进游戏。",
|
|
25912
26166
|
"design.onePager": "一页纸",
|
|
25913
26167
|
"design.style": "风格 · {style}",
|
|
26168
|
+
"design.styleFull": "画风:{style}",
|
|
25914
26169
|
"design.noPitch": "还没有一句话玩法。",
|
|
25915
26170
|
"design.pillars": "设计支柱",
|
|
25916
26171
|
"design.noPillars": "还没定支柱:和 agent 聊出 2–3 条「这个游戏一定要做到的体验」。",
|
|
@@ -26142,7 +26397,9 @@ if (mode === 'still') {
|
|
|
26142
26397
|
"gltf.bones": "骨骼比例",
|
|
26143
26398
|
"gltf.boneSearch": "找骨头…",
|
|
26144
26399
|
"gltf.rotate": "旋转",
|
|
26145
|
-
"gltf.moreBones": "另有 {count} 根,搜索名字找"
|
|
26400
|
+
"gltf.moreBones": "另有 {count} 根,搜索名字找",
|
|
26401
|
+
"nav.go": "去看看",
|
|
26402
|
+
"nav.dismiss": "不用了"
|
|
26146
26403
|
};
|
|
26147
26404
|
/** English dictionary. */
|
|
26148
26405
|
const en = {
|
|
@@ -26273,6 +26530,7 @@ if (mode === 'still') {
|
|
|
26273
26530
|
"fields.note": "Saved when you leave the box; reaches the game once you commit it as a new version.",
|
|
26274
26531
|
"design.onePager": "One-pager",
|
|
26275
26532
|
"design.style": "Style · {style}",
|
|
26533
|
+
"design.styleFull": "Look: {style}",
|
|
26276
26534
|
"design.noPitch": "No pitch yet.",
|
|
26277
26535
|
"design.pillars": "Design pillars",
|
|
26278
26536
|
"design.noPillars": "No pillars yet: find 2–3 experiences this game must deliver with the agent.",
|
|
@@ -26504,7 +26762,9 @@ if (mode === 'still') {
|
|
|
26504
26762
|
"gltf.bones": "Bone sizes",
|
|
26505
26763
|
"gltf.boneSearch": "Find a bone…",
|
|
26506
26764
|
"gltf.rotate": "Rotation",
|
|
26507
|
-
"gltf.moreBones": "{count} more; search by name"
|
|
26765
|
+
"gltf.moreBones": "{count} more; search by name",
|
|
26766
|
+
"nav.go": "Show me",
|
|
26767
|
+
"nav.dismiss": "Not now"
|
|
26508
26768
|
};
|
|
26509
26769
|
/** The dictionary namespace this view binds. */
|
|
26510
26770
|
const NS = "game";
|
|
@@ -26830,7 +27090,10 @@ if (mode === 'still') {
|
|
|
26830
27090
|
},
|
|
26831
27091
|
types
|
|
26832
27092
|
});
|
|
26833
|
-
const shown = project.elements.filter((e) => filter === "all" || e.type === filter)
|
|
27093
|
+
const shown = project.elements.filter((e) => filter === "all" || e.type === filter).map((e, i) => ({
|
|
27094
|
+
e,
|
|
27095
|
+
i
|
|
27096
|
+
})).sort((a, b) => (b.e.updatedAt ?? 0) - (a.e.updatedAt ?? 0) || a.i - b.i).map((x) => x.e);
|
|
26834
27097
|
const openProposals = new Set(project.proposals.filter((p) => p.picked === void 0).map((p) => p.elementId));
|
|
26835
27098
|
const toggle = (id) => {
|
|
26836
27099
|
setSelected((s) => s.includes(id) ? s.filter((x) => x !== id) : [...s, id]);
|
|
@@ -26988,11 +27251,13 @@ if (mode === 'still') {
|
|
|
26988
27251
|
const [parts, setParts] = (0, react.useState)(null);
|
|
26989
27252
|
const [clip, setClip] = (0, react.useState)(null);
|
|
26990
27253
|
const [view, setView] = (0, react.useState)(null);
|
|
27254
|
+
const viewN = (0, react.useRef)(0);
|
|
26991
27255
|
const turnTo = (yaw) => {
|
|
26992
|
-
|
|
27256
|
+
viewN.current++;
|
|
27257
|
+
setView({
|
|
26993
27258
|
yaw,
|
|
26994
|
-
n:
|
|
26995
|
-
})
|
|
27259
|
+
n: viewN.current
|
|
27260
|
+
});
|
|
26996
27261
|
};
|
|
26997
27262
|
(0, react.useEffect)(() => {
|
|
26998
27263
|
setClips([]);
|
|
@@ -27067,12 +27332,15 @@ if (mode === 'still') {
|
|
|
27067
27332
|
setClips(names);
|
|
27068
27333
|
setParts(found);
|
|
27069
27334
|
},
|
|
27335
|
+
onTurned: () => {
|
|
27336
|
+
setView(null);
|
|
27337
|
+
},
|
|
27070
27338
|
clip,
|
|
27071
27339
|
view
|
|
27072
27340
|
}),
|
|
27073
27341
|
clips.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChipRow, {
|
|
27074
27342
|
label: t("gltf.clips"),
|
|
27075
|
-
value: clip?.name ??
|
|
27343
|
+
value: clip?.name ?? autoClip(look3d, clips),
|
|
27076
27344
|
onSelect: (name) => {
|
|
27077
27345
|
setClip((c) => ({
|
|
27078
27346
|
name,
|
|
@@ -27085,43 +27353,30 @@ if (mode === 'still') {
|
|
|
27085
27353
|
}))
|
|
27086
27354
|
}),
|
|
27087
27355
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27088
|
-
className: GameTab_module_css_default.toolRow
|
|
27356
|
+
className: `${GameTab_module_css_default.toolRow} ${GameTab_module_css_default.tight}`,
|
|
27089
27357
|
children: [
|
|
27090
27358
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27091
27359
|
className: GameTab_module_css_default.metaLine,
|
|
27092
27360
|
children: t("look.drag3d")
|
|
27093
27361
|
}),
|
|
27094
27362
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: GameTab_module_css_default.spacer }),
|
|
27095
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
27363
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27096
27364
|
role: "group",
|
|
27097
27365
|
"aria-label": t("look.views"),
|
|
27098
|
-
className: GameTab_module_css_default.
|
|
27366
|
+
className: GameTab_module_css_default.segGroup,
|
|
27099
27367
|
children: [
|
|
27100
|
-
|
|
27101
|
-
|
|
27102
|
-
|
|
27103
|
-
|
|
27104
|
-
|
|
27105
|
-
|
|
27106
|
-
|
|
27107
|
-
|
|
27108
|
-
|
|
27109
|
-
|
|
27110
|
-
|
|
27111
|
-
|
|
27112
|
-
turnTo(90);
|
|
27113
|
-
},
|
|
27114
|
-
children: t("look.side")
|
|
27115
|
-
}),
|
|
27116
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27117
|
-
type: "button",
|
|
27118
|
-
className: GameTab_module_css_default.seg,
|
|
27119
|
-
onClick: () => {
|
|
27120
|
-
turnTo(180);
|
|
27121
|
-
},
|
|
27122
|
-
children: t("look.back")
|
|
27123
|
-
})
|
|
27124
|
-
]
|
|
27368
|
+
[0, "look.front"],
|
|
27369
|
+
[90, "look.side"],
|
|
27370
|
+
[180, "look.back"]
|
|
27371
|
+
].map(([yaw, key]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27372
|
+
type: "button",
|
|
27373
|
+
className: GameTab_module_css_default.seg,
|
|
27374
|
+
"aria-pressed": view?.yaw === yaw,
|
|
27375
|
+
onClick: () => {
|
|
27376
|
+
turnTo(yaw);
|
|
27377
|
+
},
|
|
27378
|
+
children: t(key)
|
|
27379
|
+
}, yaw))
|
|
27125
27380
|
}),
|
|
27126
27381
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27127
27382
|
className: GameTab_module_css_default.saveState,
|
|
@@ -27193,28 +27448,30 @@ if (mode === 'still') {
|
|
|
27193
27448
|
}),
|
|
27194
27449
|
look !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
27195
27450
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27196
|
-
className: GameTab_module_css_default.toolRow
|
|
27197
|
-
role: "group",
|
|
27198
|
-
"aria-label": t("look.tools"),
|
|
27451
|
+
className: `${GameTab_module_css_default.toolRow} ${GameTab_module_css_default.tight}`,
|
|
27199
27452
|
children: [
|
|
27200
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
27201
|
-
|
|
27202
|
-
|
|
27203
|
-
"aria-
|
|
27204
|
-
|
|
27205
|
-
|
|
27206
|
-
|
|
27207
|
-
|
|
27208
|
-
|
|
27209
|
-
|
|
27210
|
-
|
|
27211
|
-
|
|
27212
|
-
|
|
27213
|
-
|
|
27214
|
-
|
|
27215
|
-
|
|
27216
|
-
|
|
27217
|
-
|
|
27453
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
27454
|
+
className: GameTab_module_css_default.segGroup,
|
|
27455
|
+
role: "group",
|
|
27456
|
+
"aria-label": t("look.tools"),
|
|
27457
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27458
|
+
type: "button",
|
|
27459
|
+
className: GameTab_module_css_default.seg,
|
|
27460
|
+
"aria-pressed": tool === "pen",
|
|
27461
|
+
onClick: () => {
|
|
27462
|
+
setTool("pen");
|
|
27463
|
+
setRecolorFrom(null);
|
|
27464
|
+
},
|
|
27465
|
+
children: t("look.pen")
|
|
27466
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27467
|
+
type: "button",
|
|
27468
|
+
className: GameTab_module_css_default.seg,
|
|
27469
|
+
"aria-pressed": tool === "recolor",
|
|
27470
|
+
onClick: () => {
|
|
27471
|
+
setTool("recolor");
|
|
27472
|
+
},
|
|
27473
|
+
children: t("look.recolor")
|
|
27474
|
+
})]
|
|
27218
27475
|
}),
|
|
27219
27476
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: GameTab_module_css_default.spacer }),
|
|
27220
27477
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -27502,7 +27759,7 @@ if (mode === 'still') {
|
|
|
27502
27759
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
27503
27760
|
role: "group",
|
|
27504
27761
|
"aria-label": t("gltf.material"),
|
|
27505
|
-
className: GameTab_module_css_default.
|
|
27762
|
+
className: GameTab_module_css_default.segGroup,
|
|
27506
27763
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27507
27764
|
type: "button",
|
|
27508
27765
|
className: GameTab_module_css_default.seg,
|
|
@@ -27751,6 +28008,11 @@ if (mode === 'still') {
|
|
|
27751
28008
|
]
|
|
27752
28009
|
});
|
|
27753
28010
|
}
|
|
28011
|
+
/** The clip a model plays on its own (dsh3d's rule): the look's choice, else an idle-like name, else the first. */
|
|
28012
|
+
function autoClip(look, clips) {
|
|
28013
|
+
const chosen = look.kind === "gltf" ? look.animation : void 0;
|
|
28014
|
+
return chosen !== void 0 && clips.includes(chosen) ? chosen : clips.find((c) => /idle|待机|stand/i.test(c)) ?? clips[0] ?? "";
|
|
28015
|
+
}
|
|
27754
28016
|
//#endregion
|
|
27755
28017
|
//#region src/client/PlayFrame.tsx
|
|
27756
28018
|
/**
|
|
@@ -27957,7 +28219,7 @@ if (mode === 'still') {
|
|
|
27957
28219
|
}
|
|
27958
28220
|
/** The play view. */
|
|
27959
28221
|
function PlayView(props) {
|
|
27960
|
-
const { t, sessionId, api, project, refresh, toast, insertDraft, insertRef, onOpenElement, onOpenVersions } = props;
|
|
28222
|
+
const { t, sessionId, api, project, refresh, toast, insertDraft, insertRef, onOpenElement, onOpenVersions, reveal } = props;
|
|
27961
28223
|
const [which, setWhich] = (0, react.useState)("current");
|
|
27962
28224
|
const [bundle, setBundle] = (0, react.useState)(null);
|
|
27963
28225
|
const [error, setError] = (0, react.useState)(null);
|
|
@@ -27971,6 +28233,12 @@ if (mode === 'still') {
|
|
|
27971
28233
|
const version = (which === "candidate" ? project.candidate : project.current)?.version;
|
|
27972
28234
|
const loaded = (0, react.useRef)("");
|
|
27973
28235
|
const [playing, setPlaying] = (0, react.useState)(false);
|
|
28236
|
+
(0, react.useEffect)(() => {
|
|
28237
|
+
reveal.setPlaying(playing);
|
|
28238
|
+
return () => {
|
|
28239
|
+
reveal.setPlaying(false);
|
|
28240
|
+
};
|
|
28241
|
+
}, [reveal, playing]);
|
|
27974
28242
|
const [poster, setPoster] = (0, react.useState)(null);
|
|
27975
28243
|
(0, react.useEffect)(() => {
|
|
27976
28244
|
setPlaying(false);
|
|
@@ -28610,7 +28878,8 @@ if (mode === 'still') {
|
|
|
28610
28878
|
}),
|
|
28611
28879
|
card.artStyle !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
28612
28880
|
className: GameTab_module_css_default.headChip,
|
|
28613
|
-
|
|
28881
|
+
title: artStyleLabel(card.artStyle),
|
|
28882
|
+
children: artStyleName(card.artStyle)
|
|
28614
28883
|
}),
|
|
28615
28884
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
28616
28885
|
className: GameTab_module_css_default.headChip,
|
|
@@ -29382,7 +29651,7 @@ if (mode === 'still') {
|
|
|
29382
29651
|
});
|
|
29383
29652
|
/** The game tab body. */
|
|
29384
29653
|
function GameTab(props) {
|
|
29385
|
-
const { sessionId, t, api, insertDraft, subscribeSessionEvents, touch, subscribeNav, takeNav } = props;
|
|
29654
|
+
const { sessionId, t, api, insertDraft, subscribeSessionEvents, touch, subscribeNav, takeNav, reveal } = props;
|
|
29386
29655
|
const [state, setState] = (0, react.useState)(null);
|
|
29387
29656
|
const [error, setError] = (0, react.useState)(null);
|
|
29388
29657
|
const [rev, setRev] = (0, react.useState)(0);
|
|
@@ -29392,6 +29661,7 @@ if (mode === 'still') {
|
|
|
29392
29661
|
const [openElement, setOpenElement] = (0, react.useState)(null);
|
|
29393
29662
|
const [toastText, setToastText] = (0, react.useState)(null);
|
|
29394
29663
|
const [openChapter, setOpenChapter] = (0, react.useState)(null);
|
|
29664
|
+
(0, react.useEffect)(() => reveal.mount(), [reveal]);
|
|
29395
29665
|
const toastTimer = (0, react.useRef)();
|
|
29396
29666
|
const refresh = (0, react.useCallback)(() => {
|
|
29397
29667
|
touch(sessionId);
|
|
@@ -29445,7 +29715,8 @@ if (mode === 'still') {
|
|
|
29445
29715
|
refresh,
|
|
29446
29716
|
toast,
|
|
29447
29717
|
insertDraft: (text) => insertDraft(sessionId, text),
|
|
29448
|
-
insertRef: (ref) => props.insertRef(sessionId, ref)
|
|
29718
|
+
insertRef: (ref) => props.insertRef(sessionId, ref),
|
|
29719
|
+
reveal
|
|
29449
29720
|
};
|
|
29450
29721
|
const project = state?.bound ?? null;
|
|
29451
29722
|
const choose = (projectId) => {
|
|
@@ -29597,7 +29868,12 @@ if (mode === 'still') {
|
|
|
29597
29868
|
}
|
|
29598
29869
|
/** The bound-project workbench. */
|
|
29599
29870
|
function ProjectWorkbench(p) {
|
|
29600
|
-
const { t, sessionId, api, project, view, setView, styling, setStyling, refresh, toast, insertDraft } = p;
|
|
29871
|
+
const { t, sessionId, api, project, view, setView, styling, setStyling, refresh, toast, insertDraft, reveal } = p;
|
|
29872
|
+
const [, rerender] = (0, react.useState)(0);
|
|
29873
|
+
(0, react.useEffect)(() => reveal.subscribe(() => {
|
|
29874
|
+
rerender((n) => n + 1);
|
|
29875
|
+
}), [reveal]);
|
|
29876
|
+
const notice = reveal.notice;
|
|
29601
29877
|
const autoConfirm = project.manifest?.autoConfirm ?? true;
|
|
29602
29878
|
const style = project.manifest?.artStyle;
|
|
29603
29879
|
const exportCurrent = () => {
|
|
@@ -29663,6 +29939,12 @@ if (mode === 'still') {
|
|
|
29663
29939
|
const openProposals = project.proposals.filter((x) => x.picked === void 0).length;
|
|
29664
29940
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(PanelRoot, {
|
|
29665
29941
|
className: GameTab_module_css_default.root,
|
|
29942
|
+
onPointerDownCapture: () => {
|
|
29943
|
+
reveal.touched();
|
|
29944
|
+
},
|
|
29945
|
+
onKeyDownCapture: () => {
|
|
29946
|
+
reveal.touched();
|
|
29947
|
+
},
|
|
29666
29948
|
children: [
|
|
29667
29949
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PanelHeader, {
|
|
29668
29950
|
title: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -29679,9 +29961,12 @@ if (mode === 'still') {
|
|
|
29679
29961
|
}),
|
|
29680
29962
|
meta: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
29681
29963
|
className: GameTab_module_css_default.headMeta,
|
|
29682
|
-
children: [style !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
29683
|
-
|
|
29684
|
-
children:
|
|
29964
|
+
children: [style !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
29965
|
+
title: artStyleLabel(style),
|
|
29966
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tag, {
|
|
29967
|
+
tone: "quiet",
|
|
29968
|
+
children: artStyleName(style)
|
|
29969
|
+
})
|
|
29685
29970
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tag, {
|
|
29686
29971
|
tone: "quiet",
|
|
29687
29972
|
children: project.current === null ? t("meta.noVersion") : t("meta.version", { version: project.current.version })
|
|
@@ -29779,6 +30064,32 @@ if (mode === 'still') {
|
|
|
29779
30064
|
setView("versions");
|
|
29780
30065
|
}
|
|
29781
30066
|
}),
|
|
30067
|
+
notice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
30068
|
+
className: GameTab_module_css_default.navNotice,
|
|
30069
|
+
role: "status",
|
|
30070
|
+
children: [
|
|
30071
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
30072
|
+
className: GameTab_module_css_default.navNoticeText,
|
|
30073
|
+
children: notice.text
|
|
30074
|
+
}),
|
|
30075
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
30076
|
+
type: "button",
|
|
30077
|
+
className: GameTab_module_css_default.primary,
|
|
30078
|
+
onClick: () => {
|
|
30079
|
+
reveal.follow();
|
|
30080
|
+
},
|
|
30081
|
+
children: t("nav.go")
|
|
30082
|
+
}),
|
|
30083
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
30084
|
+
type: "button",
|
|
30085
|
+
className: GameTab_module_css_default.link,
|
|
30086
|
+
onClick: () => {
|
|
30087
|
+
reveal.dismiss();
|
|
30088
|
+
},
|
|
30089
|
+
children: t("nav.dismiss")
|
|
30090
|
+
})
|
|
30091
|
+
]
|
|
30092
|
+
}),
|
|
29782
30093
|
view === "play" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PlayView, {
|
|
29783
30094
|
...p,
|
|
29784
30095
|
onOpenElement: (id) => {
|
|
@@ -30112,6 +30423,7 @@ if (mode === 'still') {
|
|
|
30112
30423
|
}, "game: tab type visibility");
|
|
30113
30424
|
const api = {
|
|
30114
30425
|
state: (sid) => remote.state(sid),
|
|
30426
|
+
liveVersion: (sid) => remote.liveVersion(sid),
|
|
30115
30427
|
projectCards: () => remote.projectCards(),
|
|
30116
30428
|
turnReport: (sid, turn) => remote.turnReport(sid, { turn }),
|
|
30117
30429
|
bind: (sid, projectId) => remote.bind(sid, { projectId }),
|
|
@@ -30228,6 +30540,9 @@ if (mode === 'still') {
|
|
|
30228
30540
|
};
|
|
30229
30541
|
const navListeners = /* @__PURE__ */ new Set();
|
|
30230
30542
|
let parkedNav = null;
|
|
30543
|
+
const reveal = new Reveal((target) => {
|
|
30544
|
+
face.openAt(target);
|
|
30545
|
+
});
|
|
30231
30546
|
const face = {
|
|
30232
30547
|
openAt: (target) => {
|
|
30233
30548
|
parkedNav = target;
|
|
@@ -30297,8 +30612,35 @@ if (mode === 'still') {
|
|
|
30297
30612
|
},
|
|
30298
30613
|
touch: (sessionId) => {
|
|
30299
30614
|
emit(sessionId);
|
|
30300
|
-
}
|
|
30615
|
+
},
|
|
30616
|
+
reveal
|
|
30617
|
+
};
|
|
30618
|
+
const lastBound = /* @__PURE__ */ new Map();
|
|
30619
|
+
let lastLook = 0;
|
|
30620
|
+
const look = () => {
|
|
30621
|
+
const now = Date.now();
|
|
30622
|
+
if (now - lastLook < 3e3) return;
|
|
30623
|
+
lastLook = now;
|
|
30624
|
+
const sid = mainSessionId(ctx.sessions.list.getSnapshot());
|
|
30625
|
+
if (sid === void 0) return;
|
|
30626
|
+
api.liveVersion(sid).then((r) => {
|
|
30627
|
+
if (!r.ok) return;
|
|
30628
|
+
const bound = r.value?.projectId ?? null;
|
|
30629
|
+
const before = lastBound.get(sid);
|
|
30630
|
+
lastBound.set(sid, bound);
|
|
30631
|
+
if (before !== void 0 && before !== bound) emit(sid);
|
|
30632
|
+
if (r.value?.show !== void 0) reveal.request(r.value.projectId, r.value.show);
|
|
30633
|
+
}).catch(() => {});
|
|
30301
30634
|
};
|
|
30635
|
+
listeners.add(() => {
|
|
30636
|
+
look();
|
|
30637
|
+
});
|
|
30638
|
+
const pollTimer = setInterval(() => {
|
|
30639
|
+
if (document.visibilityState === "visible") look();
|
|
30640
|
+
}, 6e3);
|
|
30641
|
+
disposers.push(async () => {
|
|
30642
|
+
clearInterval(pollTimer);
|
|
30643
|
+
});
|
|
30302
30644
|
ctx.effect(() => ctx.slots.inject("sidebar.right.pane.tab", () => ctx.slots.register({
|
|
30303
30645
|
name: "sidebar.right.pane.tab",
|
|
30304
30646
|
key: GAME_TAB_ID,
|