diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-16 18:10:39 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-22 15:36:37 -0300 |
commit | 450526565e92a5c914268bfcc653a95b44752393 (patch) | |
tree | 95fd7237e04244a9caecca0734a486c194ad2dfd /src/data/things | |
parent | 46c4c299e50d9ad0262b660254b4f1c2e8ef1880 (diff) |
data: Artwork.{isMainArtwork,mainArtwork,siblingArtworks}
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/artwork.js | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js index 197cd5d4..0ef257fe 100644 --- a/src/data/things/artwork.js +++ b/src/data/things/artwork.js @@ -24,7 +24,7 @@ import { parseDimensions, } from '#yaml'; -import {withPropertyFromObject} from '#composite/data'; +import {withIndexInList, withPropertyFromObject} from '#composite/data'; import { exitWithoutDependency, @@ -52,7 +52,7 @@ import { wikiData, } from '#composite/wiki-properties'; -import {withDate} from '#composite/things/artwork'; +import {withContainingArtworkList, withDate} from '#composite/things/artwork'; export class Artwork extends Thing { static [Thing.referenceType] = 'artwork'; @@ -303,6 +303,70 @@ export class Artwork extends Thing { referencedByArtworks: reverseReferenceList({ reverse: soupyReverse.input('artworksWhichReference'), }), + + isMainArtwork: [ + withContainingArtworkList(), + + exitWithoutDependency({ + dependency: '#containingArtworkList', + value: input.value(null), + }), + + { + dependencies: [input.myself(), '#containingArtworkList'], + compute: ({ + [input.myself()]: myself, + ['#containingArtworkList']: list, + }) => + list[0] === myself, + }, + ], + + mainArtwork: [ + withContainingArtworkList(), + + exitWithoutDependency({ + dependency: '#containingArtworkList', + value: input.value(null), + }), + + { + dependencies: ['#containingArtworkList'], + compute: ({'#containingArtworkList': list}) => + list[0], + }, + ], + + siblingArtworks: [ + withContainingArtworkList(), + + exitWithoutDependency({ + dependency: '#containingArtworkList', + value: input.value(null), + }), + + withIndexInList({ + list: '#containingArtworkList', + item: input.myself(), + }), + + exitWithoutDependency({ + dependency: '#index', + mode: input.value('index'), + value: input.value(null), + }), + + { + dependencies: ['#containingArtworkList', '#index'], + compute: ({ + ['#containingArtworkList']: list, + ['#index']: index, + }) => [ + ...list.slice(0, index), + ...list.slice(index + 1), + ], + }, + ], }); static [Thing.yamlDocumentSpec] = { |