Add selectable value face sources

Issue: #378
User-Visible: yes
This commit is contained in:
Sergey Matyunin
2026-08-29 22:20:18 +03:00
parent ad9c634901
commit 591f8f6ac9
51 changed files with 1415 additions and 562 deletions
+11
View File
@@ -178,6 +178,17 @@ export function checkReferences({ config, layout = {} } = {}, { notes = [] } = {
: 'активного маркера-источника не существует');
}
}
const valueSource = marker?.value_source;
if (valueSource?.kind === 'derived_marker_state') {
const ref = String(valueSource.ref ?? '');
const target = ref.startsWith('marker:') ? ref.slice('marker:'.length) : '';
if (!target || !activeLightMarkerIds.has(target)) {
add('marker_value_source', markerId, ref || '?',
target && activeMarkerIds.has(target)
? 'маркер-цель не является источником света'
: 'активного маркера-цели не существует');
}
}
}
for (const [key, position] of Object.entries(layout || {})) {
+11
View File
@@ -27,6 +27,17 @@
/** @type {SmokeLink[]} */
export const SMOKE_LINKS = [
{
symbols: [
'resolveValueSource', 'valueSourceWriteFields', 'valueBadgeCandidates',
'valueBadgeSourceKey', 'resolveDevicePresentation',
],
smokes: ['smoke_value_face_source.mjs'],
because: 'the #378 production-bundle scenario observes the shared source resolver through '
+ 'the real Device dialog, draft preview, persistence, both plan renderers, unavailable '
+ 'recovery, action dispatch and binding reset; those DOM effects do not call the pure '
+ 'source helpers by name',
},
{
symbols: ['roomClimateKey', 'roomClimateMap'],
smokes: ['smoke_room_climate_placement.mjs'],