« get me outta code hell

reference-list-helpers.js « helpers « wiki-properties « composite « data « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/composite/wiki-properties/helpers/reference-list-helpers.js
blob: dfdc6b41e56c340b4a6980948bdc97f7f5be5a00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {input} from '#composite';
import {anyOf, isString, isThingClass, validateArrayItems} from '#validators';

export function referenceListInputDescriptions() {
  return {
    class: input.staticValue({
      validate:
        anyOf(
          isThingClass,
          validateArrayItems(isThingClass)),

      acceptsNull: true,
      defaultValue: null,
    }),

    referenceType: input.staticValue({
      validate:
        anyOf(
          isString,
          validateArrayItems(isString)),

      acceptsNull: true,
      defaultValue: null,
    }),
  };
}

export function referenceListUpdateDescription({
  validateReferenceList,
}) {
  return ({
    [input.staticValue('class')]: thingClass,
    [input.staticValue('referenceType')]: referenceType,
  }) => ({
    validate:
      validateReferenceList(
        (Array.isArray(thingClass)
          ? thingClass.map(thingClass =>
              thingClass[Symbol.for('Thing.referenceType')])
       : thingClass
          ? thingClass[Symbol.for('Thing.referenceType')]
          : referenceType)),
  });
}