Skip to content

Commit ebcc450

Browse files
committed
🩹 Add null check for Display Panel when selecting a new node
Also renamed `selectedThing` to `selectedNode`
1 parent c7efe35 commit ebcc450

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

src/ui/panels/display-panel/displayPanel.svelte

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,31 @@
55
import { CommonDisplayConfig } from '@aj/systems/node-configs'
66
import EVENTS from '@aj/util/events'
77
import { translate } from '@aj/util/translation'
8-
import { slide } from 'svelte/transition'
98
import { MODE_ICONS, type CommonOptionMode } from '.'
109
import TextDisplayPage from './textDisplayPage.svelte'
1110
12-
let selectedThing: TextDisplay | BlockDisplay | ItemDisplay | Group | undefined
11+
let selectedNode: TextDisplay | BlockDisplay | ItemDisplay | Group | undefined
1312
let commonConfig: CommonDisplayConfig | undefined
1413
let commonOptionModes: Map<string, CommonOptionMode>
1514
let commonTabSelected: boolean
1615
1716
EVENTS.UPDATE_SELECTION.subscribe(() => {
18-
selectedThing = undefined
17+
selectedNode = undefined
1918
commonConfig = undefined
2019
commonOptionModes = new Map()
2120
2221
if (Group.first_selected) {
23-
selectedThing = Group.first_selected
22+
selectedNode = Group.first_selected
2423
} else if (TextDisplay.selected.length > 0) {
25-
selectedThing = TextDisplay.selected.at(0)
24+
selectedNode = TextDisplay.selected.at(0)
2625
} else if (BlockDisplay.selected.length > 0) {
27-
selectedThing = BlockDisplay.selected.at(0)
26+
selectedNode = BlockDisplay.selected.at(0)
2827
} else if (ItemDisplay.selected.length > 0) {
29-
selectedThing = ItemDisplay.selected.at(0)
28+
selectedNode = ItemDisplay.selected.at(0)
3029
}
3130
32-
if (selectedThing) {
33-
commonConfig = new CommonDisplayConfig().fromJSON(selectedThing?.commonConfig)
31+
if (selectedNode?.commonConfig) {
32+
commonConfig = new CommonDisplayConfig().fromJSON(selectedNode.commonConfig)
3433
commonOptionModes = new Map<string, CommonOptionMode>(
3534
commonConfig.keys().map(key => {
3635
if (commonConfig!.getKeyInheritance(key)) {
@@ -46,7 +45,7 @@
4645
4746
// Key is a string, but I need it to be any to make TypeScript happy when indexing into the config object.
4847
function cycleCommonMode(key: any) {
49-
if (!selectedThing) {
48+
if (!selectedNode) {
5049
console.error('Attempted to cycle common mode without a selected thing')
5150
return
5251
}
@@ -70,10 +69,10 @@
7069
}
7170
7271
console.log('Set', key, 'inheritance mode to', mode?.toUpperCase())
73-
Undo.initEdit({ elements: [selectedThing] })
74-
selectedThing.commonConfig = commonConfig.toJSON()
72+
Undo.initEdit({ elements: [selectedNode] })
73+
selectedNode.commonConfig = commonConfig.toJSON()
7574
Undo.finishEdit(`Set ${key} inheritance mode to ${mode?.toUpperCase()}`, {
76-
elements: [selectedThing],
75+
elements: [selectedNode],
7776
})
7877
7978
commonConfig = commonConfig
@@ -82,8 +81,8 @@
8281

8382
<!-- Make sure that we update the panel every time selected thing is assigned, even if it's the same value. -->
8483
<!-- This makes certain that we have the most up-to-date properties of the text display from undo / redo events -->
85-
{#if selectedThing}
86-
<div class="tab-buttons" in:slide={{ duration: 200 }}>
84+
{#if selectedNode}
85+
<div class="tab-buttons">
8786
<!-- svelte-ignore a11y-click-events-have-key-events -->
8887
<p
8988
class={'tab-button' + (!commonTabSelected ? ' tab-button-selected' : '')}
@@ -92,7 +91,7 @@
9291
}}
9392
>
9493
{translate(
95-
`panel.display.${selectedThing && Object.getPrototypeOf(selectedThing).constructor.type}.label`
94+
`panel.display.${selectedNode && Object.getPrototypeOf(selectedNode).constructor.type}.label`
9695
)}
9796
</p>
9897
<!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -134,15 +133,15 @@
134133
{/each}
135134
</ul>
136135
{:else}
137-
{#key selectedThing}
136+
{#key selectedNode}
138137
<!-- svelte-ignore missing-declaration -->
139-
{#if selectedThing instanceof Group}
138+
{#if selectedNode instanceof Group}
140139
<!-- <div>{selectedThing.name}</div> -->
141-
{:else if selectedThing instanceof TextDisplay}
142-
<TextDisplayPage textDisplay={selectedThing} />
143-
{:else if selectedThing instanceof BlockDisplay}
140+
{:else if selectedNode instanceof TextDisplay}
141+
<TextDisplayPage textDisplay={selectedNode} />
142+
{:else if selectedNode instanceof BlockDisplay}
144143
<!-- <div>{selectedThing.name}</div> -->
145-
{:else if selectedThing instanceof ItemDisplay}
144+
{:else if selectedNode instanceof ItemDisplay}
146145
<!-- <div>{selectedThing.name}</div> -->
147146
{:else}
148147
<div>Selection has no Display Options</div>

0 commit comments

Comments
 (0)