@adminide-stack/yantra-mobile 12.0.141-alpha.1 → 12.0.142-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/features/agent-chat/NativeAgentChat.js +21 -4
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/chat/ApprovalCard.js +353 -0
- package/lib/features/chat/ApprovalCard.js.map +1 -0
- package/lib/features/chat/AskUserCard.js +9 -2
- package/lib/features/chat/AskUserCard.js.map +1 -1
- package/lib/features/chat/askUser.js +25 -3
- package/lib/features/chat/askUser.js.map +1 -1
- package/lib/features/chat/queuedFollowUpRows.js +13 -0
- package/lib/features/chat/queuedFollowUpRows.js.map +1 -0
- package/lib/features/dictate/DictateExperience.js +59 -7
- package/lib/features/dictate/DictateExperience.js.map +1 -1
- package/lib/features/dictate/components/NoteView.js +227 -12
- package/lib/features/dictate/components/NoteView.js.map +1 -1
- package/lib/features/dictate/dictateClient.js +93 -23
- package/lib/features/dictate/dictateClient.js.map +1 -1
- package/lib/features/dictate/dictatePreference.js +19 -0
- package/lib/features/dictate/dictatePreference.js.map +1 -0
- package/lib/features/dictate/noteText.js +17 -2
- package/lib/features/dictate/noteText.js.map +1 -1
- package/lib/features/dictate/privacy.js +96 -0
- package/lib/features/dictate/privacy.js.map +1 -0
- package/lib/features/dictate/shownNote.js +24 -0
- package/lib/features/dictate/shownNote.js.map +1 -0
- package/lib/features/discover/DiscoverArticle.js +105 -92
- package/lib/features/discover/DiscoverArticle.js.map +1 -1
- package/lib/features/discover/DiscoverFeed.js +97 -48
- package/lib/features/discover/DiscoverFeed.js.map +1 -1
- package/lib/features/discover/DiscoverFollowUp.js +135 -0
- package/lib/features/discover/DiscoverFollowUp.js.map +1 -0
- package/lib/features/discover/DiscoverSidebar.js +555 -0
- package/lib/features/discover/DiscoverSidebar.js.map +1 -0
- package/lib/features/discover/DiscoverSkeletons.js +123 -0
- package/lib/features/discover/DiscoverSkeletons.js.map +1 -0
- package/lib/features/discover/DiscoverStoryCards.js +193 -87
- package/lib/features/discover/DiscoverStoryCards.js.map +1 -1
- package/lib/features/discover/followUpQuery.js +42 -0
- package/lib/features/discover/followUpQuery.js.map +1 -0
- package/lib/features/discover/markets.js +37 -0
- package/lib/features/discover/markets.js.map +1 -0
- package/lib/features/discover/useDiscoverSidebar.js +148 -0
- package/lib/features/discover/useDiscoverSidebar.js.map +1 -0
- package/lib/features/discover/weather.js +42 -0
- package/lib/features/discover/weather.js.map +1 -0
- package/lib/features/expenses/ExpensesAgentChatPane.js +1 -1
- package/lib/features/expenses/ExpensesAgentChatPane.js.map +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js.map +1 -1
- package/lib/features/job-search/JobSearchAgentChatPane.js +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js.map +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js.map +1 -1
- package/lib/features/notion/NotionBlockSheets.js +206 -0
- package/lib/features/notion/NotionBlockSheets.js.map +1 -0
- package/lib/features/notion/NotionBlockView.js +36 -0
- package/lib/features/notion/NotionBlockView.js.map +1 -0
- package/lib/features/notion/NotionCommentsSheet.js +461 -0
- package/lib/features/notion/NotionCommentsSheet.js.map +1 -0
- package/lib/features/notion/NotionConnectionsSheet.js +244 -0
- package/lib/features/notion/NotionConnectionsSheet.js.map +1 -0
- package/lib/features/notion/NotionHistorySheet.js +439 -0
- package/lib/features/notion/NotionHistorySheet.js.map +1 -0
- package/lib/features/notion/NotionMediaBlocks.js +803 -0
- package/lib/features/notion/NotionMediaBlocks.js.map +1 -0
- package/lib/features/notion/NotionMentionSheet.js +279 -0
- package/lib/features/notion/NotionMentionSheet.js.map +1 -0
- package/lib/features/notion/NotionPageMenu.js +585 -0
- package/lib/features/notion/NotionPageMenu.js.map +1 -0
- package/lib/features/notion/NotionPageTree.js +220 -0
- package/lib/features/notion/NotionPageTree.js.map +1 -0
- package/lib/features/notion/NotionPageView.js +1253 -152
- package/lib/features/notion/NotionPageView.js.map +1 -1
- package/lib/features/notion/NotionShareSheet.js +606 -0
- package/lib/features/notion/NotionShareSheet.js.map +1 -0
- package/lib/features/notion/NotionSheets.js +87 -15
- package/lib/features/notion/NotionSheets.js.map +1 -1
- package/lib/features/notion/NotionSidebarSections.js +492 -0
- package/lib/features/notion/NotionSidebarSections.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js +659 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceView.js +257 -45
- package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
- package/lib/features/notion/database/DatabaseCells.js +554 -0
- package/lib/features/notion/database/DatabaseCells.js.map +1 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js +792 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseLayouts.js +461 -0
- package/lib/features/notion/database/DatabaseLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseSheets.js +791 -0
- package/lib/features/notion/database/DatabaseSheets.js.map +1 -0
- package/lib/features/notion/database/NotionDatabaseView.js +817 -0
- package/lib/features/notion/database/NotionDatabaseView.js.map +1 -0
- package/lib/features/notion/database/RowPropertiesPanel.js +162 -0
- package/lib/features/notion/database/RowPropertiesPanel.js.map +1 -0
- package/lib/features/notion/database/chartData.js +89 -0
- package/lib/features/notion/database/chartData.js.map +1 -0
- package/lib/features/notion/database/chartView.js +112 -0
- package/lib/features/notion/database/chartView.js.map +1 -0
- package/lib/features/notion/database/connectorButton.js +33 -0
- package/lib/features/notion/database/connectorButton.js.map +1 -0
- package/lib/features/notion/database/databaseCalc.js +208 -0
- package/lib/features/notion/database/databaseCalc.js.map +1 -0
- package/lib/features/notion/database/databaseCalendar.js +157 -0
- package/lib/features/notion/database/databaseCalendar.js.map +1 -0
- package/lib/features/notion/database/databaseCsv.js +98 -0
- package/lib/features/notion/database/databaseCsv.js.map +1 -0
- package/lib/features/notion/database/databaseCsvActions.js +58 -0
- package/lib/features/notion/database/databaseCsvActions.js.map +1 -0
- package/lib/features/notion/database/databaseFilter.js +473 -0
- package/lib/features/notion/database/databaseFilter.js.map +1 -0
- package/lib/features/notion/database/databaseFormula.js +1072 -0
- package/lib/features/notion/database/databaseFormula.js.map +1 -0
- package/lib/features/notion/database/databaseGroup.js +151 -0
- package/lib/features/notion/database/databaseGroup.js.map +1 -0
- package/lib/features/notion/database/databaseRollup.js +58 -0
- package/lib/features/notion/database/databaseRollup.js.map +1 -0
- package/lib/features/notion/database/databaseTimeline.js +156 -0
- package/lib/features/notion/database/databaseTimeline.js.map +1 -0
- package/lib/features/notion/database/databaseView.js +1188 -0
- package/lib/features/notion/database/databaseView.js.map +1 -0
- package/lib/features/notion/database/databaseViews.js +310 -0
- package/lib/features/notion/database/databaseViews.js.map +1 -0
- package/lib/features/notion/database/relationSource.js +92 -0
- package/lib/features/notion/database/relationSource.js.map +1 -0
- package/lib/features/notion/database/uniqueId.js +17 -0
- package/lib/features/notion/database/uniqueId.js.map +1 -0
- package/lib/features/notion/database/useNotionDatabase.js +617 -0
- package/lib/features/notion/database/useNotionDatabase.js.map +1 -0
- package/lib/features/notion/notionAgentRunStatus.js +39 -0
- package/lib/features/notion/notionAgentRunStatus.js.map +1 -0
- package/lib/features/notion/notionCodeLanguages.js +112 -0
- package/lib/features/notion/notionCodeLanguages.js.map +1 -0
- package/lib/features/notion/notionComments.js +86 -0
- package/lib/features/notion/notionComments.js.map +1 -0
- package/lib/features/notion/notionConnections.js +74 -0
- package/lib/features/notion/notionConnections.js.map +1 -0
- package/lib/features/notion/notionDocuments.js +453 -1
- package/lib/features/notion/notionDocuments.js.map +1 -1
- package/lib/features/notion/notionEditorModel.js +142 -7
- package/lib/features/notion/notionEditorModel.js.map +1 -1
- package/lib/features/notion/notionMarkdownShortcuts.js +51 -0
- package/lib/features/notion/notionMarkdownShortcuts.js.map +1 -0
- package/lib/features/notion/notionMedia.js +119 -0
- package/lib/features/notion/notionMedia.js.map +1 -0
- package/lib/features/notion/notionMentionDate.js +32 -0
- package/lib/features/notion/notionMentionDate.js.map +1 -0
- package/lib/features/notion/notionMentionOptions.js +162 -0
- package/lib/features/notion/notionMentionOptions.js.map +1 -0
- package/lib/features/notion/notionNotesAgent.js +445 -0
- package/lib/features/notion/notionNotesAgent.js.map +1 -0
- package/lib/features/notion/notionPageAccess.js +168 -0
- package/lib/features/notion/notionPageAccess.js.map +1 -0
- package/lib/features/notion/notionPageActions.js +138 -0
- package/lib/features/notion/notionPageActions.js.map +1 -0
- package/lib/features/notion/notionPageHistory.js +154 -0
- package/lib/features/notion/notionPageHistory.js.map +1 -0
- package/lib/features/notion/notionPageKinds.js +200 -0
- package/lib/features/notion/notionPageKinds.js.map +1 -0
- package/lib/features/notion/notionRecents.js +48 -0
- package/lib/features/notion/notionRecents.js.map +1 -0
- package/lib/features/notion/notionRichText.js +177 -0
- package/lib/features/notion/notionRichText.js.map +1 -0
- package/lib/features/notion/notionRichTitle.js +336 -0
- package/lib/features/notion/notionRichTitle.js.map +1 -0
- package/lib/features/notion/useNotionWorkspace.js +272 -13
- package/lib/features/notion/useNotionWorkspace.js.map +1 -1
- package/lib/features/notion/usePageActions.js +155 -0
- package/lib/features/notion/usePageActions.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +1 -1
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -1
- package/lib/features/study/StudyAgentChatPane.js +1 -1
- package/lib/features/study/StudyAgentChatPane.js.map +1 -1
- package/lib/features/travel/TravelAgentChatPane.js +1 -1
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +40 -8
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +1 -1
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/codeFiles.js +302 -0
- package/lib/features/webbuilder/codeFiles.js.map +1 -0
- package/lib/features/webbuilder/codeHighlight.js +209 -0
- package/lib/features/webbuilder/codeHighlight.js.map +1 -0
- package/lib/features/webbuilder/components/CodeView.js +682 -52
- package/lib/features/webbuilder/components/CodeView.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewScreen.js +59 -38
- package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectChat.js +3 -3
- package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
- package/lib/features/webbuilder/stepLabels.js +68 -0
- package/lib/features/webbuilder/stepLabels.js.map +1 -0
- package/lib/hooks/useHostChatSteering.js +45 -0
- package/lib/hooks/useHostChatSteering.js.map +1 -0
- package/lib/screens/Chat/index.js +2 -12
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/ExpensesNative/useExpensesHostChat.js +25 -5
- package/lib/screens/ExpensesNative/useExpensesHostChat.js.map +1 -1
- package/lib/screens/InboxNative/useInboxHostChat.js +25 -5
- package/lib/screens/InboxNative/useInboxHostChat.js.map +1 -1
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js +25 -5
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js +25 -5
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js.map +1 -1
- package/lib/screens/MoviesNative/useMoviesHostChat.js +25 -5
- package/lib/screens/MoviesNative/useMoviesHostChat.js.map +1 -1
- package/lib/screens/NotionPage/index.js +2 -2
- package/lib/screens/NotionPage/index.js.map +1 -1
- package/lib/screens/ResumeNative/useResumeHostChat.js +25 -5
- package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
- package/lib/screens/ShoppingNative/useShoppingHostChat.js +25 -5
- package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
- package/lib/screens/StudyNative/useStudyHostChat.js +25 -5
- package/lib/screens/StudyNative/useStudyHostChat.js.map +1 -1
- package/lib/screens/TravelNative/useTravelHostChat.js +25 -5
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +222 -0
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -0
- package/lib/screens/WebBuilderNative/index.js +1 -1
- package/lib/screens/WebBuilderNative/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js +126 -4
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +120 -11
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseDateLayouts.js","sources":["../../../../src/features/notion/database/DatabaseDateLayouts.tsx"],"sourcesContent":["/**\n * Calendar, timeline and chart layouts - the web Database{Calendar,Timeline,Chart}View on a phone.\n *\n * - Calendar: a month grid (or one week, view setting `calendarMode`) of the view's date property;\n * days show their rows as dots, the chosen day lists them below with \"+ New\" on that day; rows\n * with no date are listed after. Week start and weekends follow the view settings.\n * - Timeline: bars on a day axis (Day / Week / Month zoom), scrolled to today; ranges\n * (`{ start, end }`) span their days; rows without a date are listed below.\n * - Chart: vertical / horizontal bars or a donut of rows per group (count or sum of a number\n * property), with the chart settings (`settings.chart`) editable in place.\n */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { Pressable, ScrollView, StyleSheet, Text, useWindowDimensions, View } from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport Svg, { Circle } from 'react-native-svg';\nimport type { NotionPalette } from '../notionTheme';\nimport { textColorOf } from '../notionRichText';\nimport { ui } from '../notionUi';\nimport { CellValue, rowTitle } from './DatabaseCells';\nimport { ChoiceSheet } from './DatabaseSheets';\nimport {\n bucketRowsByDay,\n calendarDateProperty,\n dayLabel,\n dayNumber,\n isSameMonth,\n isWeekend,\n monthGrid,\n monthLabel,\n monthOf,\n readCalendarSettings,\n shiftMonth,\n weekdayLabels,\n weekLabel,\n weekOf,\n type MonthRef,\n} from './databaseCalendar';\nimport { localDayKey, shiftDayKey } from './databaseFilter';\nimport {\n DAY_WIDTH,\n TIMELINE_ZOOMS,\n axisTicks,\n barGeometry,\n dayOffset,\n splitRowsBySpan,\n timelineRange,\n type TimelineZoom,\n} from './databaseTimeline';\nimport {\n CHART_VIEW_KINDS,\n CHART_VIEW_SORTS,\n chartGroupColumns,\n chartValueColumns,\n chartViewItems,\n readChartViewSettings,\n type ChartViewSettings,\n} from './chartView';\nimport { defaultChartColor, formatChartValue } from './chartData';\nimport type { ViewSettings } from './databaseViews';\nimport type { LayoutProps } from './DatabaseLayouts';\nimport type { DatabaseRow } from './useNotionDatabase';\n\ntype Palette = NotionPalette;\n\nexport interface DateLayoutProps extends LayoutProps {\n /** New row with these property values (a calendar day). */\n onAddRowWith: (values: Record<string, unknown>) => void;\n onChangeSettings: (patch: Partial<ViewSettings>) => void;\n rowProps: LayoutProps['columns'];\n}\n\nfunction Segmented<T extends string>({\n palette,\n items,\n value,\n onChange,\n}: {\n palette: Palette;\n items: Array<{ id: T; label: string }>;\n value: T;\n onChange: (id: T) => void;\n}) {\n return (\n <View style={[styles.segmented, { backgroundColor: palette.fill }]}>\n {items.map((it) => {\n const on = it.id === value;\n return (\n <Pressable\n key={it.id}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n onPress={() => onChange(it.id)}\n style={[styles.segment, on && { backgroundColor: palette.card }]}\n >\n <Text style={[styles.segmentText, { color: on ? palette.text : palette.textMuted }]}>\n {it.label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n );\n}\n\nfunction RowLine({ p, row }: { p: DateLayoutProps; row: DatabaseRow }) {\n const { palette } = p;\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${rowTitle(row) || 'Untitled'}`}\n onPress={() => p.onOpenRow(row)}\n onLongPress={() => p.onRowMenu(row)}\n style={({ pressed }) => [\n styles.rowLine,\n { backgroundColor: pressed ? palette.pressed : palette.card, borderColor: palette.hairline },\n ]}\n >\n <Ionicons name=\"document-text-outline\" size={17} color={palette.textMuted} />\n <View style={ui.flex}>\n <Text\n numberOfLines={1}\n style={[styles.rowTitle, { color: rowTitle(row) ? palette.text : palette.textFaint }]}\n >\n {rowTitle(row) || 'Untitled'}\n </Text>\n {p.rowProps.length ? (\n <View style={styles.rowProps}>\n {p.rowProps.map((c) => (\n <CellValue\n key={c.name}\n row={row}\n column={c}\n getValue={p.getValue}\n isDark={p.isDark}\n palette={palette}\n />\n ))}\n </View>\n ) : null}\n </View>\n </Pressable>\n );\n}\n\nfunction NoDateProperty({ palette, what }: { palette: Palette; what: string }) {\n return (\n <View style={styles.emptyLayout}>\n <Ionicons name=\"calendar-outline\" size={34} color={palette.textFaint} />\n <Text style={[styles.emptyTitle, { color: palette.text }]}>{`A ${what} needs a Date property`}</Text>\n <Text style={[styles.emptyText, { color: palette.textMuted }]}>\n Add a Date property under Properties, then pick it in View options.\n </Text>\n </View>\n );\n}\n\n// ---- Calendar ------------------------------------------------------------------------------\n\nexport function CalendarLayout(p: DateLayoutProps) {\n const { palette } = p;\n const column = useMemo(() => calendarDateProperty(p.allColumns, p.groupBy), [p.allColumns, p.groupBy]);\n const cal = readCalendarSettings(p.settings);\n const today = localDayKey(new Date());\n const [month, setMonth] = useState<MonthRef>(() => monthOf(new Date()));\n const [day, setDay] = useState(today);\n const buckets = useMemo(\n () => (column ? bucketRowsByDay(p.rows, column, p.getValue) : null),\n [column, p.getValue, p.rows],\n );\n if (!column || !buckets) return <NoDateProperty palette={palette} what=\"calendar\" />;\n\n const weekdays = weekdayLabels(cal.weekStartsOn, 'narrow');\n const weeks = cal.mode === 'week' ? [weekOf(day, cal.weekStartsOn)] : monthGrid(month, cal.weekStartsOn);\n const keep = (d: string) => cal.showWeekends || !isWeekend(d);\n const dayRows = buckets.byDay.get(day) ?? [];\n const editable = column.type === 'date';\n\n const go = (delta: number) => {\n if (cal.mode === 'week') {\n const next = shiftDayKey(day, delta * 7);\n setDay(next);\n setMonth(monthOf(new Date(`${next}T12:00:00`)));\n } else setMonth((m) => shiftMonth(m, delta));\n };\n\n return (\n <ScrollView contentContainerStyle={styles.calendar}>\n <View style={styles.calHead}>\n <Text style={[styles.calTitle, { color: palette.text }]}>\n {cal.mode === 'week' ? weekLabel(weeks[0]) : monthLabel(month)}\n </Text>\n <View style={ui.flex} />\n <Pressable accessibilityLabel=\"Previous\" onPress={() => go(-1)} hitSlop={8} style={styles.navBtn}>\n <Ionicons name=\"chevron-back\" size={20} color={palette.text} />\n </Pressable>\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => {\n setMonth(monthOf(new Date()));\n setDay(today);\n }}\n style={[styles.todayBtn, { backgroundColor: palette.fill }]}\n >\n <Text style={[styles.todayText, { color: palette.text }]}>Today</Text>\n </Pressable>\n <Pressable accessibilityLabel=\"Next\" onPress={() => go(1)} hitSlop={8} style={styles.navBtn}>\n <Ionicons name=\"chevron-forward\" size={20} color={palette.text} />\n </Pressable>\n </View>\n <View style={styles.modeRow}>\n <Segmented\n palette={palette}\n items={[\n { id: 'month', label: 'Month' },\n { id: 'week', label: 'Week' },\n ]}\n value={cal.mode}\n onChange={(mode) => p.onChangeSettings({ calendarMode: mode === 'week' ? 'week' : undefined })}\n />\n </View>\n <View style={styles.weekRow}>\n {weeks[0]\n .map((d, i) => ({ d, i }))\n .filter(({ d }) => keep(d))\n .map(({ i }) => (\n <Text key={i} style={[styles.weekday, { color: palette.textMuted }]}>\n {weekdays[i]}\n </Text>\n ))}\n </View>\n {weeks.map((week) => (\n <View key={week[0]} style={styles.weekRow}>\n {week\n .filter((d) => keep(d))\n .map((d) => {\n const rows = buckets.byDay.get(d) ?? [];\n const on = d === day;\n const isToday = d === today;\n const dim = cal.mode === 'month' && !isSameMonth(d, month);\n return (\n <Pressable\n key={d}\n accessibilityRole=\"button\"\n accessibilityLabel={`${dayLabel(d)}, ${rows.length} ${rows.length === 1 ? 'row' : 'rows'}`}\n accessibilityState={{ selected: on }}\n onPress={() => setDay(d)}\n style={[styles.dayCell, on && { backgroundColor: palette.primarySoft }]}\n >\n <View style={[styles.dayNum, isToday && { backgroundColor: palette.primary }]}>\n <Text\n style={[\n styles.dayNumText,\n {\n color: isToday\n ? palette.onPrimary\n : dim\n ? palette.textFaint\n : palette.text,\n },\n ]}\n >\n {dayNumber(d)}\n </Text>\n </View>\n <View style={styles.dots}>\n {rows.slice(0, 3).map((r) => (\n <View\n key={r.id}\n style={[styles.dot, { backgroundColor: palette.primary }]}\n />\n ))}\n </View>\n {rows.length > 3 ? (\n <Text\n style={[styles.more, { color: palette.textMuted }]}\n >{`+${rows.length - 3}`}</Text>\n ) : null}\n </Pressable>\n );\n })}\n </View>\n ))}\n\n <View style={styles.dayHead}>\n <Text style={[styles.dayTitle, { color: palette.text }]}>{dayLabel(day)}</Text>\n {editable ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => p.onAddRowWith({ [column.name]: day })}\n style={[styles.addSmall, { backgroundColor: palette.primarySoft }]}\n >\n <Ionicons name=\"add\" size={16} color={palette.primary} />\n <Text style={[styles.addSmallText, { color: palette.primary }]}>New</Text>\n </Pressable>\n ) : null}\n </View>\n {dayRows.length ? (\n dayRows.map((r) => <RowLine key={r.id} p={p} row={r} />)\n ) : (\n <Text style={[styles.none, { color: palette.textMuted }]}>Nothing on this day.</Text>\n )}\n {buckets.undated.length ? (\n <>\n <Text\n style={[styles.section, { color: palette.textMuted }]}\n >{`No ${column.name} · ${buckets.undated.length}`}</Text>\n {buckets.undated.map((r) => (\n <RowLine key={r.id} p={p} row={r} />\n ))}\n </>\n ) : null}\n </ScrollView>\n );\n}\n\n// ---- Timeline -------------------------------------------------------------------------------\n\nconst BAR_HEIGHT = 30;\nconst LANE = 42;\n\nexport function TimelineLayout(p: DateLayoutProps) {\n const { palette } = p;\n const { width } = useWindowDimensions();\n const column = useMemo(() => calendarDateProperty(p.allColumns, p.groupBy), [p.allColumns, p.groupBy]);\n const [zoom, setZoom] = useState<TimelineZoom>('week');\n const today = localDayKey(new Date());\n const split = useMemo(\n () => (column ? splitRowsBySpan(p.rows, column, p.getValue) : null),\n [column, p.getValue, p.rows],\n );\n const range = useMemo(\n () => timelineRange(split?.dated.map((d) => d.span) ?? [], today, zoom),\n [split, today, zoom],\n );\n const dw = DAY_WIDTH[zoom];\n const ticks = useMemo(() => axisTicks(range, zoom), [range, zoom]);\n const scroller = useRef<ScrollView>(null);\n useEffect(() => {\n const x = Math.max(0, dayOffset(range, today) * dw - width / 3);\n const t = setTimeout(() => scroller.current?.scrollTo({ x, animated: false }), 0);\n return () => clearTimeout(t);\n }, [dw, range, today, width]);\n\n if (!column || !split) return <NoDateProperty palette={palette} what=\"timeline\" />;\n const contentWidth = range.days * dw;\n const todayX = dayOffset(range, today) * dw;\n\n return (\n <ScrollView contentContainerStyle={styles.timelineWrap}>\n <View style={styles.modeRow}>\n <Segmented palette={palette} items={TIMELINE_ZOOMS} value={zoom} onChange={setZoom} />\n <View style={ui.flex} />\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => scroller.current?.scrollTo({ x: Math.max(0, todayX - width / 3), animated: true })}\n style={[styles.todayBtn, { backgroundColor: palette.fill }]}\n >\n <Text style={[styles.todayText, { color: palette.text }]}>Today</Text>\n </Pressable>\n </View>\n <ScrollView ref={scroller} horizontal showsHorizontalScrollIndicator={false}>\n <View style={{ width: contentWidth }}>\n <View style={[styles.axis, { borderBottomColor: palette.hairline }]}>\n {ticks.map((t) => (\n <View key={t.day} style={[styles.tick, { left: t.offset * dw }]}>\n {t.major ? (\n <Text numberOfLines={1} style={[styles.tickMajor, { color: palette.text }]}>\n {t.major}\n </Text>\n ) : (\n <View style={styles.tickSpacer} />\n )}\n <Text style={[styles.tickLabel, { color: palette.textMuted }]}>{t.label}</Text>\n </View>\n ))}\n </View>\n <View style={{ height: Math.max(split.dated.length * LANE + 16, 120) }}>\n <View style={[styles.todayLine, { left: todayX, backgroundColor: palette.primary }]} />\n {split.dated.map(({ row, span }, i) => {\n const g = barGeometry(range, span, dw);\n const title = rowTitle(row) || 'Untitled';\n const inside = g.width > 90;\n return (\n <Pressable\n key={row.id}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${title}`}\n onPress={() => p.onOpenRow(row)}\n onLongPress={() => p.onRowMenu(row)}\n style={[styles.barLane, { top: 8 + i * LANE, left: g.left }]}\n >\n <View\n style={[\n styles.bar,\n {\n width: Math.max(g.width, 8),\n backgroundColor: palette.primarySoft,\n borderColor: palette.primary,\n },\n ]}\n >\n {inside ? (\n <Text numberOfLines={1} style={[styles.barText, { color: palette.text }]}>\n {title}\n </Text>\n ) : null}\n </View>\n {!inside ? (\n <Text numberOfLines={1} style={[styles.barOutside, { color: palette.text }]}>\n {title}\n </Text>\n ) : null}\n </Pressable>\n );\n })}\n </View>\n </View>\n </ScrollView>\n {split.undated.length ? (\n <View style={styles.undated}>\n <Text\n style={[styles.section, { color: palette.textMuted }]}\n >{`No ${column.name} · ${split.undated.length}`}</Text>\n {split.undated.map((r) => (\n <RowLine key={r.id} p={p} row={r} />\n ))}\n </View>\n ) : null}\n </ScrollView>\n );\n}\n\n// ---- Chart ----------------------------------------------------------------------------------\n\nfunction chartColor(color: string | undefined, index: number, isDark: boolean): string {\n if (color && color.startsWith('#')) return color;\n return (color && textColorOf(color, isDark)) || defaultChartColor(index);\n}\n\nexport function ChartLayout(p: DateLayoutProps) {\n const { palette } = p;\n const { width } = useWindowDimensions();\n const s = readChartViewSettings(p.settings, p.allColumns);\n const items = useMemo(\n () => chartViewItems(p.rows, p.allColumns, p.getValue, s),\n [p.allColumns, p.getValue, p.rows, s],\n );\n const groups = chartGroupColumns(p.allColumns);\n const values = chartValueColumns(p.allColumns);\n const [picker, setPicker] = useState<'kind' | 'group' | 'measure' | 'sort' | null>(null);\n const set = (patch: Partial<ChartViewSettings>) =>\n p.onChangeSettings({ chart: { ...((p.settings.chart as object) ?? {}), ...s, ...patch } });\n const max = Math.max(1, ...items.map((i) => i.value));\n const total = items.reduce((n, i) => n + i.value, 0);\n\n const control = (label: string, value: string, which: typeof picker) => (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => setPicker(which)}\n style={[styles.control, { backgroundColor: palette.fill }]}\n >\n <Text style={[styles.controlLabel, { color: palette.textMuted }]}>{label}</Text>\n <Text numberOfLines={1} style={[styles.controlValue, { color: palette.text }]}>\n {value}\n </Text>\n <Ionicons name=\"chevron-down\" size={13} color={palette.textMuted} />\n </Pressable>\n );\n\n if (!groups.length) {\n return (\n <View style={styles.emptyLayout}>\n <Ionicons name=\"bar-chart-outline\" size={34} color={palette.textFaint} />\n <Text style={[styles.emptyTitle, { color: palette.text }]}>Nothing to chart yet</Text>\n <Text style={[styles.emptyText, { color: palette.textMuted }]}>\n A chart groups rows by a Select, Status, Person, Date or Checkbox property.\n </Text>\n </View>\n );\n }\n\n const plotWidth = width - 32;\n const donut = 180;\n const r = 70;\n const circ = 2 * Math.PI * r;\n let acc = 0;\n\n return (\n <ScrollView contentContainerStyle={styles.chart}>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.controls}>\n {control('Chart', CHART_VIEW_KINDS.find((k) => k.kind === s.kind)?.label ?? s.kind, 'kind')}\n {control('Group by', s.groupBy || 'None', 'group')}\n {control(\n 'Value',\n s.aggregate === 'sum' && s.valueProperty ? `Sum of ${s.valueProperty}` : 'Count',\n 'measure',\n )}\n {control('Sort', CHART_VIEW_SORTS.find((x) => x.sort === s.sort)?.label ?? '', 'sort')}\n </ScrollView>\n {!items.length ? (\n <Text style={[styles.none, { color: palette.textMuted }]}>No rows to chart.</Text>\n ) : s.kind === 'donut' ? (\n <View style={styles.donutWrap}>\n <View>\n <Svg width={donut} height={donut}>\n <Circle\n cx={donut / 2}\n cy={donut / 2}\n r={r}\n stroke={palette.fill}\n strokeWidth={26}\n fill=\"none\"\n />\n {items.map((it, i) => {\n const len = total ? (it.value / total) * circ : 0;\n const el = (\n <Circle\n key={it.label}\n cx={donut / 2}\n cy={donut / 2}\n r={r}\n stroke={chartColor(it.color, i, p.isDark)}\n strokeWidth={26}\n fill=\"none\"\n strokeDasharray={`${len} ${circ - len}`}\n strokeDashoffset={-acc}\n rotation={-90}\n origin={`${donut / 2}, ${donut / 2}`}\n />\n );\n acc += len;\n return el;\n })}\n </Svg>\n <View style={styles.donutCenter} pointerEvents=\"none\">\n <Text style={[styles.donutTotal, { color: palette.text }]}>{formatChartValue(total)}</Text>\n <Text style={[styles.donutLabel, { color: palette.textMuted }]}>\n {s.aggregate === 'sum' ? 'Total' : 'Rows'}\n </Text>\n </View>\n </View>\n <View style={styles.legend}>\n {items.map((it, i) => (\n <View key={it.label} style={styles.legendRow}>\n <View style={[styles.swatch, { backgroundColor: chartColor(it.color, i, p.isDark) }]} />\n <Text numberOfLines={1} style={[styles.legendLabel, { color: palette.text }]}>\n {it.label}\n </Text>\n <Text style={[styles.legendValue, { color: palette.textMuted }]}>\n {formatChartValue(it.value)}\n </Text>\n </View>\n ))}\n </View>\n </View>\n ) : s.kind === 'bar' ? (\n <View style={styles.bars}>\n {items.map((it, i) => (\n <View key={it.label} style={styles.hBarRow}>\n <Text numberOfLines={1} style={[styles.hBarLabel, { color: palette.text }]}>\n {it.label}\n </Text>\n <View style={[styles.hBarTrack, { backgroundColor: palette.fill }]}>\n <View\n style={[\n styles.hBarFill,\n {\n width: `${(it.value / max) * 100}%`,\n backgroundColor: chartColor(it.color, i, p.isDark),\n },\n ]}\n />\n </View>\n <Text style={[styles.hBarValue, { color: palette.textMuted }]}>\n {formatChartValue(it.value)}\n </Text>\n </View>\n ))}\n </View>\n ) : (\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\n <View style={[styles.columns, { minWidth: plotWidth }]}>\n {items.map((it, i) => (\n <View key={it.label} style={styles.column}>\n <Text style={[styles.colValue, { color: palette.textMuted }]}>\n {formatChartValue(it.value)}\n </Text>\n <View\n style={[\n styles.colBar,\n {\n height: Math.max(4, (it.value / max) * 200),\n backgroundColor: chartColor(it.color, i, p.isDark),\n },\n ]}\n />\n <Text numberOfLines={2} style={[styles.colLabel, { color: palette.text }]}>\n {it.label}\n </Text>\n </View>\n ))}\n </View>\n </ScrollView>\n )}\n <ChoiceSheet\n visible={picker === 'kind'}\n title=\"Chart\"\n palette={palette}\n value={s.kind}\n choices={CHART_VIEW_KINDS.map((k) => ({ value: k.kind, label: k.label }))}\n onClose={() => setPicker(null)}\n onPick={(kind) => {\n setPicker(null);\n set({ kind });\n }}\n />\n <ChoiceSheet\n visible={picker === 'group'}\n title=\"Group by\"\n palette={palette}\n value={s.groupBy}\n choices={groups.map((c) => ({ value: c.name, label: c.name }))}\n onClose={() => setPicker(null)}\n onPick={(groupBy) => {\n setPicker(null);\n set({ groupBy });\n }}\n />\n <ChoiceSheet\n visible={picker === 'measure'}\n title=\"Value\"\n palette={palette}\n value={s.aggregate === 'sum' && s.valueProperty ? `sum:${s.valueProperty}` : 'count'}\n choices={[\n { value: 'count', label: 'Count rows' },\n ...values.map((c) => ({ value: `sum:${c.name}`, label: `Sum of ${c.name}` })),\n ]}\n onClose={() => setPicker(null)}\n onPick={(v) => {\n setPicker(null);\n if (v === 'count') set({ aggregate: 'count' });\n else set({ aggregate: 'sum', valueProperty: v.slice(4) });\n }}\n />\n <ChoiceSheet\n visible={picker === 'sort'}\n title=\"Sort\"\n palette={palette}\n value={s.sort}\n choices={CHART_VIEW_SORTS.map((x) => ({ value: x.sort, label: x.label }))}\n onClose={() => setPicker(null)}\n onPick={(sort) => {\n setPicker(null);\n set({ sort });\n }}\n />\n </ScrollView>\n );\n}\n\nconst styles = StyleSheet.create({\n segmented: { flexDirection: 'row', borderRadius: 10, padding: 2 },\n segment: { paddingHorizontal: 12, height: 30, borderRadius: 8, alignItems: 'center', justifyContent: 'center' },\n segmentText: { fontSize: 13, fontWeight: '600' },\n calendar: { padding: 12, paddingBottom: 48 },\n calHead: { flexDirection: 'row', alignItems: 'center', gap: 6, marginBottom: 8 },\n calTitle: { fontSize: 19, fontWeight: '800' },\n navBtn: { padding: 6 },\n todayBtn: { paddingHorizontal: 12, height: 32, borderRadius: 10, justifyContent: 'center' },\n todayText: { fontSize: 14, fontWeight: '600' },\n modeRow: { flexDirection: 'row', alignItems: 'center', marginBottom: 10 },\n weekRow: { flexDirection: 'row' },\n weekday: { flex: 1, textAlign: 'center', fontSize: 12, fontWeight: '600', paddingVertical: 4 },\n dayCell: { flex: 1, alignItems: 'center', paddingVertical: 6, minHeight: 56, borderRadius: 10 },\n dayNum: { width: 28, height: 28, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },\n dayNumText: { fontSize: 15, fontWeight: '600' },\n dots: { flexDirection: 'row', gap: 3, marginTop: 4, height: 6 },\n dot: { width: 6, height: 6, borderRadius: 3 },\n more: { fontSize: 10, marginTop: 1 },\n dayHead: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginTop: 16,\n marginBottom: 8,\n },\n dayTitle: { fontSize: 16, fontWeight: '700' },\n addSmall: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n paddingHorizontal: 10,\n height: 30,\n borderRadius: 9,\n },\n addSmallText: { fontSize: 14, fontWeight: '700' },\n none: { fontSize: 14, paddingVertical: 12, textAlign: 'center' },\n section: {\n fontSize: 13,\n fontWeight: '700',\n marginTop: 18,\n marginBottom: 8,\n textTransform: 'uppercase',\n letterSpacing: 0.4,\n },\n rowLine: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n padding: 12,\n borderRadius: 12,\n borderWidth: StyleSheet.hairlineWidth,\n marginBottom: 8,\n },\n rowTitle: { fontSize: 15, fontWeight: '600' },\n rowProps: { flexDirection: 'row', flexWrap: 'wrap', gap: 6, marginTop: 4 },\n emptyLayout: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 32, gap: 8 },\n emptyTitle: { fontSize: 17, fontWeight: '700', textAlign: 'center' },\n emptyText: { fontSize: 14, textAlign: 'center', lineHeight: 20 },\n timelineWrap: { paddingVertical: 12, paddingBottom: 48 },\n axis: { height: 44, borderBottomWidth: StyleSheet.hairlineWidth },\n tick: { position: 'absolute', top: 2 },\n tickMajor: { fontSize: 12, fontWeight: '700', width: 120 },\n tickSpacer: { height: 16 },\n tickLabel: { fontSize: 11, marginTop: 2 },\n todayLine: { position: 'absolute', top: 0, bottom: 0, width: 2, opacity: 0.6 },\n barLane: { position: 'absolute', flexDirection: 'row', alignItems: 'center', height: BAR_HEIGHT },\n bar: { height: BAR_HEIGHT, borderRadius: 8, borderWidth: 1, justifyContent: 'center', paddingHorizontal: 8 },\n barText: { fontSize: 13, fontWeight: '600' },\n barOutside: { fontSize: 13, fontWeight: '600', marginLeft: 6, maxWidth: 220 },\n undated: { paddingHorizontal: 12 },\n chart: { padding: 16, paddingBottom: 48, gap: 16 },\n controls: { gap: 8 },\n control: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 10,\n height: 34,\n borderRadius: 10,\n },\n controlLabel: { fontSize: 12, fontWeight: '600' },\n controlValue: { fontSize: 14, fontWeight: '600', maxWidth: 160 },\n donutWrap: { alignItems: 'center', gap: 16 },\n donutCenter: { ...StyleSheet.absoluteFillObject, alignItems: 'center', justifyContent: 'center' },\n donutTotal: { fontSize: 24, fontWeight: '800' },\n donutLabel: { fontSize: 12 },\n legend: { alignSelf: 'stretch', gap: 8 },\n legendRow: { flexDirection: 'row', alignItems: 'center', gap: 10 },\n swatch: { width: 12, height: 12, borderRadius: 3 },\n legendLabel: { flex: 1, fontSize: 15 },\n legendValue: { fontSize: 14, fontVariant: ['tabular-nums'] },\n bars: { gap: 12 },\n hBarRow: { flexDirection: 'row', alignItems: 'center', gap: 10 },\n hBarLabel: { width: 96, fontSize: 14 },\n hBarTrack: { flex: 1, height: 22, borderRadius: 6, overflow: 'hidden' },\n hBarFill: { height: '100%', borderRadius: 6 },\n hBarValue: { width: 48, textAlign: 'right', fontSize: 13, fontVariant: ['tabular-nums'] },\n columns: { flexDirection: 'row', alignItems: 'flex-end', gap: 14, height: 260, paddingTop: 12 },\n column: { width: 56, alignItems: 'center', justifyContent: 'flex-end' },\n colValue: { fontSize: 12, marginBottom: 4, fontVariant: ['tabular-nums'] },\n colBar: { width: 36, borderTopLeftRadius: 8, borderTopRightRadius: 8 },\n colLabel: { fontSize: 12, marginTop: 6, textAlign: 'center' },\n});\n"],"names":["_a","formatChartValue"],"mappings":"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"}
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useMemo}from'react';import {View,StyleSheet,Text,ScrollView,SectionList,Pressable,useWindowDimensions,FlatList,ActivityIndicator}from'react-native';import {Ionicons}from'@expo/vector-icons';import {Image}from'expo-image';import {ui}from'../notionUi.js';import {rowTitle,CellValue,rowCoverUrl,OptionChip}from'./DatabaseCells.js';import {calcKindFor,computeCalculation,CALC_LABELS}from'./databaseCalc.js';import {isTableGroupable,groupRowsByColumn}from'./databaseGroup.js';import {boardGroupKey,normalizeStatusOptions,groupRows}from'./databaseView.js';import {readCardLayout,readBoardGroups}from'./databaseViews.js';var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
const DEFAULT_WIDTH = 160;
|
|
18
|
+
function SelectMark({
|
|
19
|
+
on,
|
|
20
|
+
palette
|
|
21
|
+
}) {
|
|
22
|
+
return /* @__PURE__ */ jsx(Ionicons, { name: on ? "checkmark-circle" : "ellipse-outline", size: 22, color: on ? palette.primary : palette.textFaint });
|
|
23
|
+
}
|
|
24
|
+
function GroupHeader({
|
|
25
|
+
group,
|
|
26
|
+
column,
|
|
27
|
+
isDark,
|
|
28
|
+
palette
|
|
29
|
+
}) {
|
|
30
|
+
const chip = column && (column.type === "select" || column.type === "status") && group.value !== null;
|
|
31
|
+
return /* @__PURE__ */ jsxs(View, { style: [styles.groupHeader, {
|
|
32
|
+
backgroundColor: palette.bg
|
|
33
|
+
}], children: [
|
|
34
|
+
chip ? /* @__PURE__ */ jsx(OptionChip, { name: group.name, color: group.color, isDark, palette }) : /* @__PURE__ */ jsx(Text, { style: [styles.groupName, {
|
|
35
|
+
color: palette.text
|
|
36
|
+
}], children: group.name }),
|
|
37
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.count, {
|
|
38
|
+
color: palette.textMuted
|
|
39
|
+
}], children: group.rows.length })
|
|
40
|
+
] });
|
|
41
|
+
}
|
|
42
|
+
function LoadMore({
|
|
43
|
+
p
|
|
44
|
+
}) {
|
|
45
|
+
if (!p.hasMore) return null;
|
|
46
|
+
return /* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: p.onLoadMore, disabled: p.loadingMore, style: [styles.loadMore, {
|
|
47
|
+
backgroundColor: p.palette.fill
|
|
48
|
+
}], children: p.loadingMore ? /* @__PURE__ */ jsx(ActivityIndicator, { color: p.palette.textMuted }) : /* @__PURE__ */ jsx(Text, { style: [styles.loadMoreText, {
|
|
49
|
+
color: p.palette.text
|
|
50
|
+
}], children: "Load more" }) });
|
|
51
|
+
}
|
|
52
|
+
function NewRowButton({
|
|
53
|
+
p,
|
|
54
|
+
onPress,
|
|
55
|
+
label = "New"
|
|
56
|
+
}) {
|
|
57
|
+
return /* @__PURE__ */ jsxs(Pressable, { accessibilityRole: "button", onPress, style: ({
|
|
58
|
+
pressed
|
|
59
|
+
}) => [styles.newRow, pressed && {
|
|
60
|
+
backgroundColor: p.palette.pressed
|
|
61
|
+
}], children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Ionicons, { name: "add", size: 18, color: p.palette.textMuted }),
|
|
63
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.newRowText, {
|
|
64
|
+
color: p.palette.textMuted
|
|
65
|
+
}], children: label })
|
|
66
|
+
] });
|
|
67
|
+
}
|
|
68
|
+
function useGroups(p) {
|
|
69
|
+
return useMemo(() => {
|
|
70
|
+
const column = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : void 0;
|
|
71
|
+
if (!column || !isTableGroupable(column)) return [{
|
|
72
|
+
group: null,
|
|
73
|
+
data: p.rows
|
|
74
|
+
}];
|
|
75
|
+
const groups = groupRowsByColumn(p.rows, column, p.getValue);
|
|
76
|
+
const shown = p.settings.hideEmptyGroups ? groups.filter((g) => g.rows.length) : groups;
|
|
77
|
+
return shown.map((g) => ({
|
|
78
|
+
group: g,
|
|
79
|
+
data: g.rows
|
|
80
|
+
}));
|
|
81
|
+
}, [p.allColumns, p.getValue, p.groupBy, p.rows, p.settings.hideEmptyGroups]);
|
|
82
|
+
}
|
|
83
|
+
function TableLayout(p) {
|
|
84
|
+
var _a;
|
|
85
|
+
const {
|
|
86
|
+
palette
|
|
87
|
+
} = p;
|
|
88
|
+
const sections = useGroups(p);
|
|
89
|
+
const groupColumn = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : void 0;
|
|
90
|
+
const widthOf = (c) => {
|
|
91
|
+
var _a2;
|
|
92
|
+
return (_a2 = c.width) != null ? _a2 : c.type === "checkbox" ? 90 : DEFAULT_WIDTH;
|
|
93
|
+
};
|
|
94
|
+
const totalWidth = p.columns.reduce((n, c) => n + widthOf(c), 0) + (p.selecting ? 44 : 0);
|
|
95
|
+
const wrapColumns = useMemo(() => {
|
|
96
|
+
var _a2;
|
|
97
|
+
return new Set((_a2 = p.settings.wrapColumns) != null ? _a2 : []);
|
|
98
|
+
}, [p.settings.wrapColumns]);
|
|
99
|
+
const calculations = (_a = p.settings.calculations) != null ? _a : {};
|
|
100
|
+
const hasCalcs = p.columns.some((c) => calculations[c.name]);
|
|
101
|
+
const header = /* @__PURE__ */ jsxs(View, { style: [styles.tr, styles.th, {
|
|
102
|
+
borderBottomColor: palette.hairline,
|
|
103
|
+
backgroundColor: palette.bg
|
|
104
|
+
}], children: [
|
|
105
|
+
p.selecting ? /* @__PURE__ */ jsx(View, { style: styles.selectCell }) : null,
|
|
106
|
+
p.columns.map((c) => /* @__PURE__ */ jsx(View, { style: [styles.cell, {
|
|
107
|
+
width: widthOf(c),
|
|
108
|
+
borderRightColor: palette.hairline
|
|
109
|
+
}], children: /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: [styles.thText, {
|
|
110
|
+
color: palette.textMuted
|
|
111
|
+
}], children: c.name }) }, c.name))
|
|
112
|
+
] });
|
|
113
|
+
const footer = /* @__PURE__ */ jsxs(View, { children: [
|
|
114
|
+
/* @__PURE__ */ jsx(NewRowButton, { p, onPress: () => p.onAddRow() }),
|
|
115
|
+
hasCalcs ? /* @__PURE__ */ jsxs(View, { style: [styles.tr, {
|
|
116
|
+
borderTopColor: palette.hairline,
|
|
117
|
+
borderTopWidth: StyleSheet.hairlineWidth
|
|
118
|
+
}], children: [
|
|
119
|
+
p.selecting ? /* @__PURE__ */ jsx(View, { style: styles.selectCell }) : null,
|
|
120
|
+
p.columns.map((c) => {
|
|
121
|
+
var _a2, _b;
|
|
122
|
+
const kind = calcKindFor(calculations[c.name], c.type);
|
|
123
|
+
const result = kind === "none" ? null : computeCalculation(p.rows.map((r) => p.getValue(r, c)), c.type, kind);
|
|
124
|
+
return /* @__PURE__ */ jsx(View, { style: [styles.cell, {
|
|
125
|
+
width: widthOf(c)
|
|
126
|
+
}], children: (result == null ? void 0 : result.value) ? /* @__PURE__ */ jsxs(Text, { numberOfLines: 1, style: [styles.calc, {
|
|
127
|
+
color: palette.textMuted
|
|
128
|
+
}], children: [
|
|
129
|
+
`${(_b = (_a2 = CALC_LABELS[kind]) == null ? void 0 : _a2.short) != null ? _b : result.label} `,
|
|
130
|
+
/* @__PURE__ */ jsx(Text, { style: {
|
|
131
|
+
color: palette.text
|
|
132
|
+
}, children: result.value })
|
|
133
|
+
] }) : null }, c.name);
|
|
134
|
+
})
|
|
135
|
+
] }) : null,
|
|
136
|
+
/* @__PURE__ */ jsx(LoadMore, { p })
|
|
137
|
+
] });
|
|
138
|
+
return /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: {
|
|
139
|
+
minWidth: "100%"
|
|
140
|
+
}, children: /* @__PURE__ */ jsx(SectionList, { style: {
|
|
141
|
+
width: Math.max(totalWidth, 1)
|
|
142
|
+
}, sections: sections.map((s, i) => __spreadValues({
|
|
143
|
+
key: s.group ? boardGroupKey(s.group) || `g${i}` : "all"
|
|
144
|
+
}, s)), keyExtractor: (r) => r.id, stickySectionHeadersEnabled: false, ListHeaderComponent: header, ListFooterComponent: footer, refreshing: p.refreshing, onRefresh: p.onRefresh, renderSectionHeader: ({
|
|
145
|
+
section
|
|
146
|
+
}) => section.group ? /* @__PURE__ */ jsx(GroupHeader, { group: section.group, column: groupColumn, isDark: p.isDark, palette }) : null, renderSectionFooter: ({
|
|
147
|
+
section
|
|
148
|
+
}) => section.group && groupColumn ? /* @__PURE__ */ jsx(NewRowButton, { p, onPress: () => p.onAddRow({
|
|
149
|
+
column: groupColumn,
|
|
150
|
+
value: section.group.value
|
|
151
|
+
}) }) : null, renderItem: ({
|
|
152
|
+
item: row
|
|
153
|
+
}) => {
|
|
154
|
+
const on = p.selected.has(row.id);
|
|
155
|
+
return /* @__PURE__ */ jsxs(Pressable, { onLongPress: () => p.onRowMenu(row), onPress: p.selecting ? () => p.onToggleSelect(row) : void 0, style: [styles.tr, {
|
|
156
|
+
borderBottomColor: palette.hairline
|
|
157
|
+
}, on && {
|
|
158
|
+
backgroundColor: palette.primarySoft
|
|
159
|
+
}], children: [
|
|
160
|
+
p.selecting ? /* @__PURE__ */ jsx(View, { style: styles.selectCell, children: /* @__PURE__ */ jsx(SelectMark, { on, palette }) }) : null,
|
|
161
|
+
p.columns.map((c) => {
|
|
162
|
+
const wrap = Boolean(p.settings.wrap) || wrapColumns.has(c.name);
|
|
163
|
+
return /* @__PURE__ */ jsxs(Pressable, { accessibilityRole: "button", accessibilityLabel: c.type === "title" ? `Open ${rowTitle(row) || "Untitled"}` : `Edit ${c.name}`, disabled: p.selecting, onPress: () => c.type === "title" ? p.onOpenRow(row) : c.type === "checkbox" ? p.onToggleCheckbox(row, c) : p.onEditCell(row, c), onLongPress: () => c.type === "title" ? p.onEditCell(row, c) : p.onRowMenu(row), style: ({
|
|
164
|
+
pressed
|
|
165
|
+
}) => [styles.cell, {
|
|
166
|
+
width: widthOf(c),
|
|
167
|
+
borderRightColor: palette.hairline,
|
|
168
|
+
backgroundColor: pressed ? palette.pressed : void 0
|
|
169
|
+
}], children: [
|
|
170
|
+
c.type === "title" ? /* @__PURE__ */ jsx(Ionicons, { name: "document-text-outline", size: 15, color: palette.textMuted, style: styles.titleIcon }) : null,
|
|
171
|
+
/* @__PURE__ */ jsx(View, { style: ui.flex, children: /* @__PURE__ */ jsx(CellValue, { row, column: c, getValue: p.getValue, isDark: p.isDark, palette, wrap, onToggleCheckbox: c.type === "checkbox" && !p.selecting ? () => p.onToggleCheckbox(row, c) : void 0 }) })
|
|
172
|
+
] }, c.name);
|
|
173
|
+
})
|
|
174
|
+
] });
|
|
175
|
+
} }) });
|
|
176
|
+
}
|
|
177
|
+
function Card({
|
|
178
|
+
p,
|
|
179
|
+
row,
|
|
180
|
+
props: shown,
|
|
181
|
+
cover
|
|
182
|
+
}) {
|
|
183
|
+
var _a;
|
|
184
|
+
const {
|
|
185
|
+
palette
|
|
186
|
+
} = p;
|
|
187
|
+
const on = p.selected.has(row.id);
|
|
188
|
+
return /* @__PURE__ */ jsxs(Pressable, { accessibilityRole: "button", accessibilityLabel: `Open ${rowTitle(row) || "Untitled"}`, onPress: () => p.selecting ? p.onToggleSelect(row) : p.onOpenRow(row), onLongPress: () => p.onRowMenu(row), style: ({
|
|
189
|
+
pressed
|
|
190
|
+
}) => [styles.card, {
|
|
191
|
+
backgroundColor: pressed ? palette.pressed : palette.card,
|
|
192
|
+
borderColor: on ? palette.primary : palette.hairline
|
|
193
|
+
}], children: [
|
|
194
|
+
cover !== void 0 ? cover ? /* @__PURE__ */ jsx(Image, { source: {
|
|
195
|
+
uri: cover
|
|
196
|
+
}, style: styles.cover, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [styles.cover, styles.coverEmpty, {
|
|
197
|
+
backgroundColor: palette.fill
|
|
198
|
+
}], children: /* @__PURE__ */ jsx(Ionicons, { name: "document-text-outline", size: 24, color: palette.textFaint }) }) : null,
|
|
199
|
+
/* @__PURE__ */ jsxs(View, { style: styles.cardBody, children: [
|
|
200
|
+
/* @__PURE__ */ jsxs(View, { style: styles.cardTitleRow, children: [
|
|
201
|
+
p.selecting ? /* @__PURE__ */ jsx(SelectMark, { on, palette }) : null,
|
|
202
|
+
/* @__PURE__ */ jsx(View, { style: ui.flex, children: /* @__PURE__ */ jsx(CellValue, { row, column: (_a = p.allColumns.find((c) => c.type === "title")) != null ? _a : {
|
|
203
|
+
name: "title",
|
|
204
|
+
type: "title"
|
|
205
|
+
}, getValue: p.getValue, isDark: p.isDark, palette, wrap: true }) })
|
|
206
|
+
] }),
|
|
207
|
+
shown.map((c) => /* @__PURE__ */ jsx(View, { style: styles.cardProp, children: /* @__PURE__ */ jsx(CellValue, { row, column: c, getValue: p.getValue, isDark: p.isDark, palette, onToggleCheckbox: c.type === "checkbox" ? () => p.onToggleCheckbox(row, c) : void 0 }) }, c.name))
|
|
208
|
+
] })
|
|
209
|
+
] });
|
|
210
|
+
}
|
|
211
|
+
function BoardLayout(p) {
|
|
212
|
+
const {
|
|
213
|
+
palette
|
|
214
|
+
} = p;
|
|
215
|
+
const column = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : void 0;
|
|
216
|
+
const groups = useMemo(() => {
|
|
217
|
+
var _a;
|
|
218
|
+
if (!column) return [];
|
|
219
|
+
const options = column.type === "status" ? normalizeStatusOptions(column.options) : (_a = column.options) != null ? _a : [];
|
|
220
|
+
return groupRows(p.rows, column.name, options);
|
|
221
|
+
}, [column, p.rows]);
|
|
222
|
+
const {
|
|
223
|
+
collapsed,
|
|
224
|
+
hidden
|
|
225
|
+
} = readBoardGroups(p.settings);
|
|
226
|
+
const shown = groups.filter((g) => !hidden.includes(boardGroupKey(g)) && !(p.settings.hideEmptyGroups && !g.rows.length));
|
|
227
|
+
if (!column) {
|
|
228
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.boardEmpty, children: [
|
|
229
|
+
/* @__PURE__ */ jsx(Ionicons, { name: "albums-outline", size: 34, color: palette.textFaint }),
|
|
230
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.boardEmptyTitle, {
|
|
231
|
+
color: palette.text
|
|
232
|
+
}], children: "Group this board" }),
|
|
233
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.boardEmptyText, {
|
|
234
|
+
color: palette.textMuted
|
|
235
|
+
}], children: "A board groups rows by a Status or Select property. Add one, then pick it under Group." })
|
|
236
|
+
] });
|
|
237
|
+
}
|
|
238
|
+
return /* @__PURE__ */ jsxs(ScrollView, { horizontal: true, contentContainerStyle: styles.board, showsHorizontalScrollIndicator: false, children: [
|
|
239
|
+
shown.map((g) => {
|
|
240
|
+
const key = boardGroupKey(g);
|
|
241
|
+
const isCollapsed = collapsed.includes(key);
|
|
242
|
+
return /* @__PURE__ */ jsxs(View, { style: [styles.boardColumn, isCollapsed && styles.boardColumnCollapsed], children: [
|
|
243
|
+
/* @__PURE__ */ jsx(GroupHeader, { group: g, column, isDark: p.isDark, palette }),
|
|
244
|
+
isCollapsed ? null : /* @__PURE__ */ jsxs(ScrollView, { contentContainerStyle: styles.boardCards, showsVerticalScrollIndicator: false, children: [
|
|
245
|
+
g.rows.map((row) => /* @__PURE__ */ jsx(Card, { p, row, props: p.cardProps }, row.id)),
|
|
246
|
+
/* @__PURE__ */ jsx(NewRowButton, { p, onPress: () => p.onAddRow({
|
|
247
|
+
column,
|
|
248
|
+
value: g.value
|
|
249
|
+
}) })
|
|
250
|
+
] })
|
|
251
|
+
] }, key || "__empty");
|
|
252
|
+
}),
|
|
253
|
+
/* @__PURE__ */ jsx(View, { style: styles.boardTail, children: /* @__PURE__ */ jsx(LoadMore, { p }) })
|
|
254
|
+
] });
|
|
255
|
+
}
|
|
256
|
+
function ListLayout(p) {
|
|
257
|
+
const {
|
|
258
|
+
palette
|
|
259
|
+
} = p;
|
|
260
|
+
const sections = useGroups(p);
|
|
261
|
+
const groupColumn = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : void 0;
|
|
262
|
+
return /* @__PURE__ */ jsx(SectionList, { sections: sections.map((s, i) => __spreadValues({
|
|
263
|
+
key: s.group ? boardGroupKey(s.group) || `g${i}` : "all"
|
|
264
|
+
}, s)), keyExtractor: (r) => r.id, stickySectionHeadersEnabled: false, contentContainerStyle: styles.listContent, refreshing: p.refreshing, onRefresh: p.onRefresh, renderSectionHeader: ({
|
|
265
|
+
section
|
|
266
|
+
}) => section.group ? /* @__PURE__ */ jsx(GroupHeader, { group: section.group, column: groupColumn, isDark: p.isDark, palette }) : null, ListFooterComponent: /* @__PURE__ */ jsxs(View, { children: [
|
|
267
|
+
/* @__PURE__ */ jsx(NewRowButton, { p, onPress: () => p.onAddRow() }),
|
|
268
|
+
/* @__PURE__ */ jsx(LoadMore, { p })
|
|
269
|
+
] }), renderItem: ({
|
|
270
|
+
item: row
|
|
271
|
+
}) => {
|
|
272
|
+
var _a;
|
|
273
|
+
const on = p.selected.has(row.id);
|
|
274
|
+
return /* @__PURE__ */ jsxs(Pressable, { accessibilityRole: "button", accessibilityLabel: `Open ${rowTitle(row) || "Untitled"}`, onPress: () => p.selecting ? p.onToggleSelect(row) : p.onOpenRow(row), onLongPress: () => p.onRowMenu(row), style: ({
|
|
275
|
+
pressed
|
|
276
|
+
}) => [styles.listRow, {
|
|
277
|
+
borderBottomColor: palette.hairline
|
|
278
|
+
}, (pressed || on) && {
|
|
279
|
+
backgroundColor: on ? palette.primarySoft : palette.pressed
|
|
280
|
+
}], children: [
|
|
281
|
+
p.selecting ? /* @__PURE__ */ jsx(SelectMark, { on, palette }) : /* @__PURE__ */ jsx(Ionicons, { name: "document-text-outline", size: 18, color: palette.textMuted }),
|
|
282
|
+
/* @__PURE__ */ jsx(View, { style: ui.flex, children: /* @__PURE__ */ jsx(CellValue, { row, column: (_a = p.allColumns.find((c) => c.type === "title")) != null ? _a : {
|
|
283
|
+
name: "title",
|
|
284
|
+
type: "title"
|
|
285
|
+
}, getValue: p.getValue, isDark: p.isDark, palette }) }),
|
|
286
|
+
/* @__PURE__ */ jsx(View, { style: styles.listProps, children: p.rowProps.map((c) => /* @__PURE__ */ jsx(CellValue, { row, column: c, getValue: p.getValue, isDark: p.isDark, palette }, c.name)) })
|
|
287
|
+
] });
|
|
288
|
+
} });
|
|
289
|
+
}
|
|
290
|
+
function GalleryLayout(p) {
|
|
291
|
+
const {
|
|
292
|
+
width
|
|
293
|
+
} = useWindowDimensions();
|
|
294
|
+
const layout = readCardLayout(p.settings, {
|
|
295
|
+
cover: true
|
|
296
|
+
});
|
|
297
|
+
const perRow = layout.size === "large" ? 1 : layout.size === "small" ? 3 : 2;
|
|
298
|
+
const gap = 12;
|
|
299
|
+
const cardWidth = Math.floor((width - 32 - gap * (perRow - 1)) / perRow);
|
|
300
|
+
return /* @__PURE__ */ jsx(FlatList, { data: p.rows, numColumns: perRow, keyExtractor: (r) => r.id, contentContainerStyle: styles.gallery, columnWrapperStyle: perRow > 1 ? {
|
|
301
|
+
gap
|
|
302
|
+
} : void 0, refreshing: p.refreshing, onRefresh: p.onRefresh, ListFooterComponent: /* @__PURE__ */ jsxs(View, { children: [
|
|
303
|
+
/* @__PURE__ */ jsx(NewRowButton, { p, onPress: () => p.onAddRow() }),
|
|
304
|
+
/* @__PURE__ */ jsx(LoadMore, { p })
|
|
305
|
+
] }), renderItem: ({
|
|
306
|
+
item: row
|
|
307
|
+
}) => /* @__PURE__ */ jsx(View, { style: {
|
|
308
|
+
width: cardWidth,
|
|
309
|
+
marginBottom: gap
|
|
310
|
+
}, children: /* @__PURE__ */ jsx(Card, { p, row, props: p.cardProps, cover: layout.coverSource === "none" ? void 0 : rowCoverUrl(row.properties, p.allColumns, layout.coverSource) }) }) }, `gallery-${perRow}`);
|
|
311
|
+
}
|
|
312
|
+
const styles = StyleSheet.create({
|
|
313
|
+
tr: {
|
|
314
|
+
flexDirection: "row",
|
|
315
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
316
|
+
minHeight: 44
|
|
317
|
+
},
|
|
318
|
+
th: {
|
|
319
|
+
minHeight: 36
|
|
320
|
+
},
|
|
321
|
+
thText: {
|
|
322
|
+
fontSize: 13,
|
|
323
|
+
fontWeight: "600"
|
|
324
|
+
},
|
|
325
|
+
cell: {
|
|
326
|
+
flexDirection: "row",
|
|
327
|
+
alignItems: "center",
|
|
328
|
+
paddingHorizontal: 10,
|
|
329
|
+
paddingVertical: 8,
|
|
330
|
+
borderRightWidth: StyleSheet.hairlineWidth
|
|
331
|
+
},
|
|
332
|
+
selectCell: {
|
|
333
|
+
width: 44,
|
|
334
|
+
alignItems: "center",
|
|
335
|
+
justifyContent: "center"
|
|
336
|
+
},
|
|
337
|
+
titleIcon: {
|
|
338
|
+
marginRight: 6
|
|
339
|
+
},
|
|
340
|
+
calc: {
|
|
341
|
+
fontSize: 12
|
|
342
|
+
},
|
|
343
|
+
groupHeader: {
|
|
344
|
+
flexDirection: "row",
|
|
345
|
+
alignItems: "center",
|
|
346
|
+
gap: 8,
|
|
347
|
+
paddingHorizontal: 12,
|
|
348
|
+
paddingVertical: 10
|
|
349
|
+
},
|
|
350
|
+
groupName: {
|
|
351
|
+
fontSize: 14,
|
|
352
|
+
fontWeight: "600"
|
|
353
|
+
},
|
|
354
|
+
count: {
|
|
355
|
+
fontSize: 13
|
|
356
|
+
},
|
|
357
|
+
newRow: {
|
|
358
|
+
flexDirection: "row",
|
|
359
|
+
alignItems: "center",
|
|
360
|
+
gap: 6,
|
|
361
|
+
paddingHorizontal: 12,
|
|
362
|
+
height: 44,
|
|
363
|
+
borderRadius: 10
|
|
364
|
+
},
|
|
365
|
+
newRowText: {
|
|
366
|
+
fontSize: 15
|
|
367
|
+
},
|
|
368
|
+
loadMore: {
|
|
369
|
+
margin: 12,
|
|
370
|
+
height: 42,
|
|
371
|
+
borderRadius: 12,
|
|
372
|
+
alignItems: "center",
|
|
373
|
+
justifyContent: "center"
|
|
374
|
+
},
|
|
375
|
+
loadMoreText: {
|
|
376
|
+
fontSize: 15,
|
|
377
|
+
fontWeight: "600"
|
|
378
|
+
},
|
|
379
|
+
board: {
|
|
380
|
+
padding: 12,
|
|
381
|
+
gap: 12,
|
|
382
|
+
alignItems: "flex-start"
|
|
383
|
+
},
|
|
384
|
+
boardColumn: {
|
|
385
|
+
width: 280
|
|
386
|
+
},
|
|
387
|
+
boardColumnCollapsed: {
|
|
388
|
+
width: 140
|
|
389
|
+
},
|
|
390
|
+
boardCards: {
|
|
391
|
+
gap: 8,
|
|
392
|
+
paddingBottom: 48
|
|
393
|
+
},
|
|
394
|
+
boardTail: {
|
|
395
|
+
width: 160,
|
|
396
|
+
justifyContent: "flex-start"
|
|
397
|
+
},
|
|
398
|
+
boardEmpty: {
|
|
399
|
+
flex: 1,
|
|
400
|
+
alignItems: "center",
|
|
401
|
+
justifyContent: "center",
|
|
402
|
+
padding: 32,
|
|
403
|
+
gap: 8
|
|
404
|
+
},
|
|
405
|
+
boardEmptyTitle: {
|
|
406
|
+
fontSize: 17,
|
|
407
|
+
fontWeight: "700"
|
|
408
|
+
},
|
|
409
|
+
boardEmptyText: {
|
|
410
|
+
fontSize: 14,
|
|
411
|
+
textAlign: "center",
|
|
412
|
+
lineHeight: 20
|
|
413
|
+
},
|
|
414
|
+
card: {
|
|
415
|
+
borderRadius: 12,
|
|
416
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
417
|
+
overflow: "hidden"
|
|
418
|
+
},
|
|
419
|
+
cardBody: {
|
|
420
|
+
padding: 12,
|
|
421
|
+
gap: 6
|
|
422
|
+
},
|
|
423
|
+
cardTitleRow: {
|
|
424
|
+
flexDirection: "row",
|
|
425
|
+
alignItems: "center",
|
|
426
|
+
gap: 8
|
|
427
|
+
},
|
|
428
|
+
cardProp: {
|
|
429
|
+
minHeight: 0
|
|
430
|
+
},
|
|
431
|
+
cover: {
|
|
432
|
+
width: "100%",
|
|
433
|
+
aspectRatio: 16 / 10
|
|
434
|
+
},
|
|
435
|
+
coverEmpty: {
|
|
436
|
+
alignItems: "center",
|
|
437
|
+
justifyContent: "center"
|
|
438
|
+
},
|
|
439
|
+
listContent: {
|
|
440
|
+
paddingBottom: 48
|
|
441
|
+
},
|
|
442
|
+
listRow: {
|
|
443
|
+
flexDirection: "row",
|
|
444
|
+
alignItems: "center",
|
|
445
|
+
gap: 10,
|
|
446
|
+
paddingHorizontal: 16,
|
|
447
|
+
minHeight: 52,
|
|
448
|
+
borderBottomWidth: StyleSheet.hairlineWidth
|
|
449
|
+
},
|
|
450
|
+
listProps: {
|
|
451
|
+
flexDirection: "row",
|
|
452
|
+
alignItems: "center",
|
|
453
|
+
gap: 6,
|
|
454
|
+
maxWidth: "55%",
|
|
455
|
+
overflow: "hidden"
|
|
456
|
+
},
|
|
457
|
+
gallery: {
|
|
458
|
+
padding: 16,
|
|
459
|
+
paddingBottom: 48
|
|
460
|
+
}
|
|
461
|
+
});export{BoardLayout,GalleryLayout,ListLayout,TableLayout};//# sourceMappingURL=DatabaseLayouts.js.map
|