« get me outta code hell

data: MORE composite wip - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/composite.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-09-18 13:26:18 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-09-18 13:26:18 -0300
commitfd102ee597e2ad2ba8f0950ce1a16fd34029963d (patch)
tree09c1ee833e9d8cc1cc9f01503ef3d584dd034d1e /src/data/things/composite.js
parentb4dd9d3f288130acdd9fefa2321b4b547f348b32 (diff)
data: MORE composite wip
Diffstat (limited to 'src/data/things/composite.js')
-rw-r--r--src/data/things/composite.js44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/data/things/composite.js b/src/data/things/composite.js
index f2ca2c7..c33fc03 100644
--- a/src/data/things/composite.js
+++ b/src/data/things/composite.js
@@ -1349,7 +1349,7 @@ export function exposeConstant({
 //            for values like zero and the empty string!
 //
 
-const availabilityCheckMode = {
+const availabilityCheckModeInput = {
   validate: oneOf('null', 'empty', 'falsy'),
   defaultValue: 'null',
 };
@@ -1359,7 +1359,7 @@ export const withResultOfAvailabilityCheck = templateCompositeFrom({
 
   inputs: {
     from: input(),
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
   },
 
   outputs: {
@@ -1403,7 +1403,7 @@ export const exposeDependencyOrContinue = templateCompositeFrom({
 
   inputs: {
     dependency: input(),
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
   },
 
   steps: () => [
@@ -1432,7 +1432,7 @@ export const exposeUpdateValueOrContinue = templateCompositeFrom({
   annotation: `exposeUpdateValueOrContinue`,
 
   inputs: {
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
   },
 
   steps: () => [
@@ -1450,7 +1450,7 @@ export const exitWithoutDependency = templateCompositeFrom({
 
   inputs: {
     dependency: input(),
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
     value: input({null: true}),
   },
 
@@ -1479,7 +1479,7 @@ export const exitWithoutUpdateValue = templateCompositeFrom({
   annotation: `exitWithoutUpdateValue`,
 
   inputs: {
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
     value: input({defaultValue: null}),
   },
 
@@ -1498,7 +1498,7 @@ export const raiseOutputWithoutDependency = templateCompositeFrom({
 
   inputs: {
     dependency: input(),
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
     output: input({defaultValue: {}}),
   },
 
@@ -1527,7 +1527,7 @@ export const raiseOutputWithoutUpdateValue = templateCompositeFrom({
   annotation: `raiseOutputWithoutUpdateValue`,
 
   inputs: {
-    mode: input(availabilityCheckMode),
+    mode: input(availabilityCheckModeInput),
     output: input({defaultValue: {}}),
   },
 
@@ -1562,19 +1562,21 @@ export const withPropertyFromObject = templateCompositeFrom({
   },
 
   outputs: {
-    into: {
-      dependencies: [
-        input.staticDependency('object'),
-        input.staticValue('property'),
-      ],
-
-      default: ({
-        [input.staticDependency('object')]: object,
-        [input.staticValue('property')]: property,
-      }) =>
-        (object.startsWith('#')
-          ? `${object}.${property}`
-          : `#${object}.${property}`),
+    dependencies: [
+      input.staticDependency('object'),
+      input.staticValue('property'),
+    ],
+
+    compute: ({
+      [input.staticDependency('object')]: object,
+      [input.staticValue('property')]: property,
+    }) => {
+      return (
+        (object && property
+          ? (object.startsWith('#')
+              ? `${object}.${property}`
+              : `#${object}.${property}`)
+          : '#value'));
     },
   },