-
-
Notifications
You must be signed in to change notification settings - Fork 612
/
Copy pathcollection-view.ts
131 lines (111 loc) · 2.56 KB
/
collection-view.ts
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import { ID, PropertyID, PropertyType } from './core'
/** Types of collection views supported by Notion */
export type CollectionViewType =
| 'table'
| 'gallery'
| 'list'
| 'board'
| 'calendar'
export type CollectionCardCoverType =
| 'page_cover'
| 'page_content'
| 'property'
| 'none'
| 'file'
export type CollectionCardCoverSize = 'small' | 'medium' | 'large'
export type CollectionCardCoverAspect = 'cover' | 'contain'
export interface BaseCollectionView {
id: ID
type: CollectionViewType
name: string
format: any
version: number
alive: boolean
parent_id: ID
parent_table: string
query?: any
query2: {
// TODO
filter?: any
aggregations?: object[]
group_by: PropertyID
}
}
export interface TableCollectionView extends BaseCollectionView {
type: 'table'
format: {
table_wrap: boolean
table_properties: Array<{
property: PropertyID
visible: boolean
width: number
}>
}
page_sort: ID[]
}
export interface GalleryCollectionView extends BaseCollectionView {
type: 'gallery'
format: {
gallery_cover: CollectionCardCover
gallery_cover_size: CollectionCardCoverSize
gallery_cover_aspect: CollectionCardCoverAspect
gallery_properties: Array<{
property: PropertyID
visible: boolean
}>
}
}
export interface ListCollectionView extends BaseCollectionView {
type: 'list'
format: {
list_properties: Array<{
property: PropertyID
visible: boolean
}>
}
}
export interface CollectionCardCover {
type: CollectionCardCoverType
property?: PropertyID
}
export interface BoardCollectionView extends BaseCollectionView {
type: 'board'
format: {
board_cover: CollectionCardCover
board_cover_size: CollectionCardCoverSize
board_cover_aspect: CollectionCardCoverAspect
board_properties: Array<{
property: PropertyID
visible: boolean
}>
board_groups2: Array<{
property: PropertyID
hidden: boolean
value: {
type: PropertyType
value: string
// TODO: needs testing for more cases
}
}>
board_columns: Array<{
property: PropertyID
hidden: boolean
value: {
type: PropertyType
value: string
// TODO: needs testing for more cases
}
}>
}
}
export interface CalendarCollectionView extends BaseCollectionView {
type: 'calendar'
visible: boolean
property?: PropertyID
}
export type CollectionView =
| TableCollectionView
| GalleryCollectionView
| ListCollectionView
| BoardCollectionView
| CalendarCollectionView