Skip to content

Commit 14fbbf8

Browse files
committed
Preliminary fix in rune mode for remapping
Based on sveltejs/svelte#15107 (comment)
1 parent e17271b commit 14fbbf8

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

src/settings/PropertyMappingModelComponent.svelte

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@
33
import { capitalizeFirstLetter } from '../utils/Utils';
44
import Icon from './Icon.svelte';
55
6-
export let model: PropertyMappingModel;
7-
export let save: (model: PropertyMappingModel) => void;
6+
interface Props {
7+
model: PropertyMappingModel;
8+
save: (model: PropertyMappingModel) => void;
9+
}
810
9-
let validationResult: { res: boolean; err?: Error } | undefined;
11+
let { model, save }: Props = $props();
1012
11-
$: validationResult = model.validate();
13+
let validationResult: { res: boolean; err?: Error } | undefined = $derived(model.validate());
14+
15+
// Use $state as a variable declaration initializer
16+
let propertyStates = $state(model.properties.map(p => ({ ...p })));
1217
</script>
1318

1419
<div class="media-db-plugin-property-mappings-model-container">
1520
<div class="setting-item-name">{capitalizeFirstLetter(model.type)}</div>
1621
<div class="media-db-plugin-property-mappings-container">
17-
{#each model.properties as property}
22+
{#each propertyStates as property, i}
1823
<div class="media-db-plugin-property-mapping-element">
1924
<div class="media-db-plugin-property-mapping-element-property-name-wrapper">
2025
<pre class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
@@ -48,6 +53,10 @@
4853
<button
4954
class="media-db-plugin-property-mappings-save-button {validationResult?.res ? 'mod-cta' : 'mod-muted'}"
5055
onclick={() => {
56+
// Sync propertyStates back to model.properties
57+
model.properties.forEach((p, i) => {
58+
Object.assign(p, propertyStates[i]);
59+
});
5160
if (model.validate().res) save(model);
5261
}}
5362
>Save

src/settings/PropertyMappingModelsComponent.svelte

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22
import { PropertyMappingModel } from './PropertyMapping';
33
import PropertyMappingModelComponent from './PropertyMappingModelComponent.svelte';
44
5-
export let models: PropertyMappingModel[] = [];
6-
export let save: (model: PropertyMappingModel) => void;
5+
interface Props {
6+
models?: PropertyMappingModel[];
7+
save: (model: PropertyMappingModel) => void;
8+
}
9+
10+
let { models = [], save }: Props = $props();
711
</script>
812

913
<div class="setting-item" style="display: flex; gap: 10px; flex-direction: column; align-items: stretch;">

0 commit comments

Comments
 (0)