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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
export default {
contentDependencies: ['generateContentHeading'],
extraDependencies: ['html', 'language'],
relations: (relation, _thing) => ({
contentHeading:
relation('generateContentHeading'),
}),
data: (thing) => ({
name:
(thing
? thing.name
: null),
}),
slots: {
attributes: {
type: 'attributes',
mutable: false,
},
string: {
type: 'string',
},
summary: {
type: 'boolean',
default: false,
},
},
generate: (data, relations, slots, {html, language}) =>
relations.contentHeading.slots({
attributes: slots.attributes,
title:
(() => {
if (!slots.string) return html.blank();
const options = {};
if (slots.summary) {
options.cue =
html.tag('span', {class: 'cue'},
language.$(slots.string, 'cue'));
}
if (data.name) {
options.thing = html.tag('i', data.name);
}
if (slots.summary) {
return html.tags([
html.tag('span', {class: 'when-open'},
language.$(slots.string, options)),
html.tag('span', {class: 'when-collapsed'},
language.$(slots.string, 'collapsed', options)),
]);
} else {
return language.$(slots.string, options);
}
})(),
stickyTitle:
(slots.string
? language.$(slots.string, 'sticky')
: html.blank()),
tag:
(slots.summary
? 'summary'
: 'p'),
}),
};
|