|
1 | | -<script lang="ts" context="module"> |
| 1 | +<script lang="ts"> |
2 | 2 | import { VanillaBlockDisplay } from '../outliner/vanillaBlockDisplay' |
3 | 3 | import { events } from '../util/events' |
4 | 4 | import { Valuable } from '../util/stores' |
5 | 5 | import { translate } from '../util/translation' |
6 | | -</script> |
7 | 6 |
|
8 | | -<script lang="ts"> |
9 | 7 | let selectedDisplay = VanillaBlockDisplay.selected.at(0) |
| 8 | + let lastSelected = selectedDisplay |
10 | 9 |
|
11 | 10 | let block = new Valuable<string>('') |
12 | 11 | let error = new Valuable<string>('') |
13 | 12 | let visible = false |
14 | 13 |
|
| 14 | + let unsub: (() => void) | undefined |
| 15 | +
|
15 | 16 | events.UPDATE_SELECTION.subscribe(() => { |
| 17 | + unsub?.() |
| 18 | +
|
| 19 | + lastSelected = selectedDisplay |
16 | 20 | selectedDisplay = VanillaBlockDisplay.selected.at(0) |
17 | | - if (!selectedDisplay || selected.length > 1) { |
18 | | - block = new Valuable('') |
19 | | - error = new Valuable('') |
| 21 | +
|
| 22 | + if (!selectedDisplay) { |
20 | 23 | visible = false |
21 | 24 | return |
22 | 25 | } |
23 | | - block = selectedDisplay._block |
| 26 | +
|
| 27 | + $block = selectedDisplay.block |
24 | 28 | error = selectedDisplay.error |
25 | 29 | visible = true |
| 30 | +
|
| 31 | + unsub = block.subscribe(value => { |
| 32 | + if (selectedDisplay == undefined || selectedDisplay !== lastSelected) { |
| 33 | + lastSelected = selectedDisplay |
| 34 | + return |
| 35 | + } |
| 36 | + if (value === selectedDisplay.block) return |
| 37 | +
|
| 38 | + Undo.initEdit({ elements: VanillaBlockDisplay.selected }) |
| 39 | +
|
| 40 | + if (VanillaBlockDisplay.selected.length > 1) { |
| 41 | + for (const display of VanillaBlockDisplay.selected) { |
| 42 | + display.block = value |
| 43 | + } |
| 44 | + } else { |
| 45 | + selectedDisplay.block = value |
| 46 | + } |
| 47 | + Project!.saved = false |
| 48 | +
|
| 49 | + Undo.finishEdit(`Change Block Display Block to "${$block}"`, { |
| 50 | + elements: VanillaBlockDisplay.selected, |
| 51 | + }) |
| 52 | + }) |
26 | 53 | }) |
27 | 54 | </script> |
28 | 55 |
|
|
0 commit comments