« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/data/things/flash.js28
-rw-r--r--src/data/yaml.js1
2 files changed, 18 insertions, 11 deletions
diff --git a/src/data/things/flash.js b/src/data/things/flash.js
index 511ff19c..71174931 100644
--- a/src/data/things/flash.js
+++ b/src/data/things/flash.js
@@ -10,6 +10,10 @@ import {
 } from '#validators';
 
 import {
+  exposeUpdateValueOrContinue,
+} from '#composite/control-flow';
+
+import {
   color,
   contributionList,
   directory,
@@ -58,6 +62,19 @@ export class Flash extends Thing {
       },
     },
 
+    color: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isColor),
+      }),
+
+      {
+        flags: {expose: true},
+        dependencies: ['this', 'flashActData'],
+        compute: ({this: flash, flashActData}) =>
+          flashActData.find((act) => act.flashes.includes(flash))?.color ?? null,
+      },
+    ],
+
     date: simpleDate(),
 
     coverArtFileExtension: fileExtension('jpg'),
@@ -90,17 +107,6 @@ export class Flash extends Thing {
           flashActData.find((act) => act.flashes.includes(flash)) ?? null,
       },
     },
-
-    color: {
-      flags: {expose: true},
-
-      expose: {
-        dependencies: ['this', 'flashActData'],
-
-        compute: ({this: flash, flashActData}) =>
-          flashActData.find((act) => act.flashes.includes(flash))?.color ?? null,
-      },
-    },
   });
 
   static [Thing.getSerializeDescriptors] = ({
diff --git a/src/data/yaml.js b/src/data/yaml.js
index 16303a64..f7856cb7 100644
--- a/src/data/yaml.js
+++ b/src/data/yaml.js
@@ -544,6 +544,7 @@ export const processFlashDocument = makeProcessDocument(T.Flash, {
     name: 'Flash',
     directory: 'Directory',
     page: 'Page',
+    color: 'Color',
     urls: 'URLs',
 
     date: 'Date',