@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.
Files changed (227) hide show
  1. package/lib/features/agent-chat/NativeAgentChat.js +21 -4
  2. package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
  3. package/lib/features/chat/ApprovalCard.js +353 -0
  4. package/lib/features/chat/ApprovalCard.js.map +1 -0
  5. package/lib/features/chat/AskUserCard.js +9 -2
  6. package/lib/features/chat/AskUserCard.js.map +1 -1
  7. package/lib/features/chat/askUser.js +25 -3
  8. package/lib/features/chat/askUser.js.map +1 -1
  9. package/lib/features/chat/queuedFollowUpRows.js +13 -0
  10. package/lib/features/chat/queuedFollowUpRows.js.map +1 -0
  11. package/lib/features/dictate/DictateExperience.js +59 -7
  12. package/lib/features/dictate/DictateExperience.js.map +1 -1
  13. package/lib/features/dictate/components/NoteView.js +227 -12
  14. package/lib/features/dictate/components/NoteView.js.map +1 -1
  15. package/lib/features/dictate/dictateClient.js +93 -23
  16. package/lib/features/dictate/dictateClient.js.map +1 -1
  17. package/lib/features/dictate/dictatePreference.js +19 -0
  18. package/lib/features/dictate/dictatePreference.js.map +1 -0
  19. package/lib/features/dictate/noteText.js +17 -2
  20. package/lib/features/dictate/noteText.js.map +1 -1
  21. package/lib/features/dictate/privacy.js +96 -0
  22. package/lib/features/dictate/privacy.js.map +1 -0
  23. package/lib/features/dictate/shownNote.js +24 -0
  24. package/lib/features/dictate/shownNote.js.map +1 -0
  25. package/lib/features/discover/DiscoverArticle.js +105 -92
  26. package/lib/features/discover/DiscoverArticle.js.map +1 -1
  27. package/lib/features/discover/DiscoverFeed.js +97 -48
  28. package/lib/features/discover/DiscoverFeed.js.map +1 -1
  29. package/lib/features/discover/DiscoverFollowUp.js +135 -0
  30. package/lib/features/discover/DiscoverFollowUp.js.map +1 -0
  31. package/lib/features/discover/DiscoverSidebar.js +555 -0
  32. package/lib/features/discover/DiscoverSidebar.js.map +1 -0
  33. package/lib/features/discover/DiscoverSkeletons.js +123 -0
  34. package/lib/features/discover/DiscoverSkeletons.js.map +1 -0
  35. package/lib/features/discover/DiscoverStoryCards.js +193 -87
  36. package/lib/features/discover/DiscoverStoryCards.js.map +1 -1
  37. package/lib/features/discover/followUpQuery.js +42 -0
  38. package/lib/features/discover/followUpQuery.js.map +1 -0
  39. package/lib/features/discover/markets.js +37 -0
  40. package/lib/features/discover/markets.js.map +1 -0
  41. package/lib/features/discover/useDiscoverSidebar.js +148 -0
  42. package/lib/features/discover/useDiscoverSidebar.js.map +1 -0
  43. package/lib/features/discover/weather.js +42 -0
  44. package/lib/features/discover/weather.js.map +1 -0
  45. package/lib/features/expenses/ExpensesAgentChatPane.js +1 -1
  46. package/lib/features/expenses/ExpensesAgentChatPane.js.map +1 -1
  47. package/lib/features/inbox/InboxAgentChatPane.js +1 -1
  48. package/lib/features/inbox/InboxAgentChatPane.js.map +1 -1
  49. package/lib/features/job-search/JobSearchAgentChatPane.js +1 -0
  50. package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -1
  51. package/lib/features/local-services/LocalServicesAgentChatPane.js +1 -1
  52. package/lib/features/local-services/LocalServicesAgentChatPane.js.map +1 -1
  53. package/lib/features/movies/MoviesAgentChatPane.js +1 -1
  54. package/lib/features/movies/MoviesAgentChatPane.js.map +1 -1
  55. package/lib/features/notion/NotionBlockSheets.js +206 -0
  56. package/lib/features/notion/NotionBlockSheets.js.map +1 -0
  57. package/lib/features/notion/NotionBlockView.js +36 -0
  58. package/lib/features/notion/NotionBlockView.js.map +1 -0
  59. package/lib/features/notion/NotionCommentsSheet.js +461 -0
  60. package/lib/features/notion/NotionCommentsSheet.js.map +1 -0
  61. package/lib/features/notion/NotionConnectionsSheet.js +244 -0
  62. package/lib/features/notion/NotionConnectionsSheet.js.map +1 -0
  63. package/lib/features/notion/NotionHistorySheet.js +439 -0
  64. package/lib/features/notion/NotionHistorySheet.js.map +1 -0
  65. package/lib/features/notion/NotionMediaBlocks.js +803 -0
  66. package/lib/features/notion/NotionMediaBlocks.js.map +1 -0
  67. package/lib/features/notion/NotionMentionSheet.js +279 -0
  68. package/lib/features/notion/NotionMentionSheet.js.map +1 -0
  69. package/lib/features/notion/NotionPageMenu.js +585 -0
  70. package/lib/features/notion/NotionPageMenu.js.map +1 -0
  71. package/lib/features/notion/NotionPageTree.js +220 -0
  72. package/lib/features/notion/NotionPageTree.js.map +1 -0
  73. package/lib/features/notion/NotionPageView.js +1253 -152
  74. package/lib/features/notion/NotionPageView.js.map +1 -1
  75. package/lib/features/notion/NotionShareSheet.js +606 -0
  76. package/lib/features/notion/NotionShareSheet.js.map +1 -0
  77. package/lib/features/notion/NotionSheets.js +87 -15
  78. package/lib/features/notion/NotionSheets.js.map +1 -1
  79. package/lib/features/notion/NotionSidebarSections.js +492 -0
  80. package/lib/features/notion/NotionSidebarSections.js.map +1 -0
  81. package/lib/features/notion/NotionWorkspaceAdmin.js +659 -0
  82. package/lib/features/notion/NotionWorkspaceAdmin.js.map +1 -0
  83. package/lib/features/notion/NotionWorkspaceView.js +257 -45
  84. package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
  85. package/lib/features/notion/database/DatabaseCells.js +554 -0
  86. package/lib/features/notion/database/DatabaseCells.js.map +1 -0
  87. package/lib/features/notion/database/DatabaseDateLayouts.js +792 -0
  88. package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -0
  89. package/lib/features/notion/database/DatabaseLayouts.js +461 -0
  90. package/lib/features/notion/database/DatabaseLayouts.js.map +1 -0
  91. package/lib/features/notion/database/DatabaseSheets.js +791 -0
  92. package/lib/features/notion/database/DatabaseSheets.js.map +1 -0
  93. package/lib/features/notion/database/NotionDatabaseView.js +817 -0
  94. package/lib/features/notion/database/NotionDatabaseView.js.map +1 -0
  95. package/lib/features/notion/database/RowPropertiesPanel.js +162 -0
  96. package/lib/features/notion/database/RowPropertiesPanel.js.map +1 -0
  97. package/lib/features/notion/database/chartData.js +89 -0
  98. package/lib/features/notion/database/chartData.js.map +1 -0
  99. package/lib/features/notion/database/chartView.js +112 -0
  100. package/lib/features/notion/database/chartView.js.map +1 -0
  101. package/lib/features/notion/database/connectorButton.js +33 -0
  102. package/lib/features/notion/database/connectorButton.js.map +1 -0
  103. package/lib/features/notion/database/databaseCalc.js +208 -0
  104. package/lib/features/notion/database/databaseCalc.js.map +1 -0
  105. package/lib/features/notion/database/databaseCalendar.js +157 -0
  106. package/lib/features/notion/database/databaseCalendar.js.map +1 -0
  107. package/lib/features/notion/database/databaseCsv.js +98 -0
  108. package/lib/features/notion/database/databaseCsv.js.map +1 -0
  109. package/lib/features/notion/database/databaseCsvActions.js +58 -0
  110. package/lib/features/notion/database/databaseCsvActions.js.map +1 -0
  111. package/lib/features/notion/database/databaseFilter.js +473 -0
  112. package/lib/features/notion/database/databaseFilter.js.map +1 -0
  113. package/lib/features/notion/database/databaseFormula.js +1072 -0
  114. package/lib/features/notion/database/databaseFormula.js.map +1 -0
  115. package/lib/features/notion/database/databaseGroup.js +151 -0
  116. package/lib/features/notion/database/databaseGroup.js.map +1 -0
  117. package/lib/features/notion/database/databaseRollup.js +58 -0
  118. package/lib/features/notion/database/databaseRollup.js.map +1 -0
  119. package/lib/features/notion/database/databaseTimeline.js +156 -0
  120. package/lib/features/notion/database/databaseTimeline.js.map +1 -0
  121. package/lib/features/notion/database/databaseView.js +1188 -0
  122. package/lib/features/notion/database/databaseView.js.map +1 -0
  123. package/lib/features/notion/database/databaseViews.js +310 -0
  124. package/lib/features/notion/database/databaseViews.js.map +1 -0
  125. package/lib/features/notion/database/relationSource.js +92 -0
  126. package/lib/features/notion/database/relationSource.js.map +1 -0
  127. package/lib/features/notion/database/uniqueId.js +17 -0
  128. package/lib/features/notion/database/uniqueId.js.map +1 -0
  129. package/lib/features/notion/database/useNotionDatabase.js +617 -0
  130. package/lib/features/notion/database/useNotionDatabase.js.map +1 -0
  131. package/lib/features/notion/notionAgentRunStatus.js +39 -0
  132. package/lib/features/notion/notionAgentRunStatus.js.map +1 -0
  133. package/lib/features/notion/notionCodeLanguages.js +112 -0
  134. package/lib/features/notion/notionCodeLanguages.js.map +1 -0
  135. package/lib/features/notion/notionComments.js +86 -0
  136. package/lib/features/notion/notionComments.js.map +1 -0
  137. package/lib/features/notion/notionConnections.js +74 -0
  138. package/lib/features/notion/notionConnections.js.map +1 -0
  139. package/lib/features/notion/notionDocuments.js +453 -1
  140. package/lib/features/notion/notionDocuments.js.map +1 -1
  141. package/lib/features/notion/notionEditorModel.js +142 -7
  142. package/lib/features/notion/notionEditorModel.js.map +1 -1
  143. package/lib/features/notion/notionMarkdownShortcuts.js +51 -0
  144. package/lib/features/notion/notionMarkdownShortcuts.js.map +1 -0
  145. package/lib/features/notion/notionMedia.js +119 -0
  146. package/lib/features/notion/notionMedia.js.map +1 -0
  147. package/lib/features/notion/notionMentionDate.js +32 -0
  148. package/lib/features/notion/notionMentionDate.js.map +1 -0
  149. package/lib/features/notion/notionMentionOptions.js +162 -0
  150. package/lib/features/notion/notionMentionOptions.js.map +1 -0
  151. package/lib/features/notion/notionNotesAgent.js +445 -0
  152. package/lib/features/notion/notionNotesAgent.js.map +1 -0
  153. package/lib/features/notion/notionPageAccess.js +168 -0
  154. package/lib/features/notion/notionPageAccess.js.map +1 -0
  155. package/lib/features/notion/notionPageActions.js +138 -0
  156. package/lib/features/notion/notionPageActions.js.map +1 -0
  157. package/lib/features/notion/notionPageHistory.js +154 -0
  158. package/lib/features/notion/notionPageHistory.js.map +1 -0
  159. package/lib/features/notion/notionPageKinds.js +200 -0
  160. package/lib/features/notion/notionPageKinds.js.map +1 -0
  161. package/lib/features/notion/notionRecents.js +48 -0
  162. package/lib/features/notion/notionRecents.js.map +1 -0
  163. package/lib/features/notion/notionRichText.js +177 -0
  164. package/lib/features/notion/notionRichText.js.map +1 -0
  165. package/lib/features/notion/notionRichTitle.js +336 -0
  166. package/lib/features/notion/notionRichTitle.js.map +1 -0
  167. package/lib/features/notion/useNotionWorkspace.js +272 -13
  168. package/lib/features/notion/useNotionWorkspace.js.map +1 -1
  169. package/lib/features/notion/usePageActions.js +155 -0
  170. package/lib/features/notion/usePageActions.js.map +1 -0
  171. package/lib/features/resume/ResumeAgentChatPane.js +1 -1
  172. package/lib/features/resume/ResumeAgentChatPane.js.map +1 -1
  173. package/lib/features/shopping/ShoppingAgentChatPane.js +1 -1
  174. package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -1
  175. package/lib/features/study/StudyAgentChatPane.js +1 -1
  176. package/lib/features/study/StudyAgentChatPane.js.map +1 -1
  177. package/lib/features/travel/TravelAgentChatPane.js +1 -1
  178. package/lib/features/travel/TravelAgentChatPane.js.map +1 -1
  179. package/lib/features/webbuilder/WebBuilderExperience.js +40 -8
  180. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  181. package/lib/features/webbuilder/buildFragments.js +1 -1
  182. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  183. package/lib/features/webbuilder/codeFiles.js +302 -0
  184. package/lib/features/webbuilder/codeFiles.js.map +1 -0
  185. package/lib/features/webbuilder/codeHighlight.js +209 -0
  186. package/lib/features/webbuilder/codeHighlight.js.map +1 -0
  187. package/lib/features/webbuilder/components/CodeView.js +682 -52
  188. package/lib/features/webbuilder/components/CodeView.js.map +1 -1
  189. package/lib/features/webbuilder/components/PreviewScreen.js +59 -38
  190. package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
  191. package/lib/features/webbuilder/components/ProjectChat.js +3 -3
  192. package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
  193. package/lib/features/webbuilder/stepLabels.js +68 -0
  194. package/lib/features/webbuilder/stepLabels.js.map +1 -0
  195. package/lib/hooks/useHostChatSteering.js +45 -0
  196. package/lib/hooks/useHostChatSteering.js.map +1 -0
  197. package/lib/screens/Chat/index.js +2 -12
  198. package/lib/screens/Chat/index.js.map +1 -1
  199. package/lib/screens/ExpensesNative/useExpensesHostChat.js +25 -5
  200. package/lib/screens/ExpensesNative/useExpensesHostChat.js.map +1 -1
  201. package/lib/screens/InboxNative/useInboxHostChat.js +25 -5
  202. package/lib/screens/InboxNative/useInboxHostChat.js.map +1 -1
  203. package/lib/screens/JobSearchNative/useJobSearchHostChat.js +25 -5
  204. package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
  205. package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js +25 -5
  206. package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js.map +1 -1
  207. package/lib/screens/MoviesNative/useMoviesHostChat.js +25 -5
  208. package/lib/screens/MoviesNative/useMoviesHostChat.js.map +1 -1
  209. package/lib/screens/NotionPage/index.js +2 -2
  210. package/lib/screens/NotionPage/index.js.map +1 -1
  211. package/lib/screens/ResumeNative/useResumeHostChat.js +25 -5
  212. package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
  213. package/lib/screens/ShoppingNative/useShoppingHostChat.js +25 -5
  214. package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
  215. package/lib/screens/StudyNative/useStudyHostChat.js +25 -5
  216. package/lib/screens/StudyNative/useStudyHostChat.js.map +1 -1
  217. package/lib/screens/TravelNative/useTravelHostChat.js +25 -5
  218. package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
  219. package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +222 -0
  220. package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -0
  221. package/lib/screens/WebBuilderNative/index.js +1 -1
  222. package/lib/screens/WebBuilderNative/index.js.map +1 -1
  223. package/lib/screens/WebBuilderNative/sandboxProxyApi.js +126 -4
  224. package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -1
  225. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +120 -11
  226. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  227. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseLayouts.js","sources":["../../../../src/features/notion/database/DatabaseLayouts.tsx"],"sourcesContent":["/**\n * Database layouts - the web Database{Table,Board,List,Gallery}View on a phone. Each takes the\n * rows the active view already filtered and sorted; the screen owns edits and navigation.\n *\n * - Table: a sideways-scrolling grid (title column first, the view's visible properties after),\n * tap a cell to edit it, tap the title to open the row; optional groups (view `groupBy`) and the\n * footer calculations of the view (`settings.calculations`).\n * - Board: one column per Status / Select option with its count, \"+ New\" per column (the row\n * starts in that group), collapsed / hidden groups from the view settings.\n * - List: compact rows with up to three properties.\n * - Gallery: cards with the cover (page cover, else the first image in a files property).\n */\nimport React, { useMemo } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Pressable,\n ScrollView,\n SectionList,\n StyleSheet,\n Text,\n useWindowDimensions,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { Image } from 'expo-image';\nimport type { NotionPalette } from '../notionTheme';\nimport { ui } from '../notionUi';\nimport { CellValue, OptionChip, rowCoverUrl, rowTitle } from './DatabaseCells';\nimport { CALC_LABELS, calcKindFor, computeCalculation } from './databaseCalc';\nimport { groupRowsByColumn, isTableGroupable } from './databaseGroup';\nimport { boardGroupKey, groupRows, normalizeStatusOptions, type CellGetter, type RowGroup } from './databaseView';\nimport { readBoardGroups, readCardLayout, type ViewSettings } from './databaseViews';\nimport type { DatabaseColumn, DatabaseRow } from './useNotionDatabase';\n\ntype Palette = NotionPalette;\n\nexport interface LayoutProps {\n rows: DatabaseRow[];\n /** Columns to show, title first (table) - cards / list rows skip the title. */\n columns: DatabaseColumn[];\n allColumns: DatabaseColumn[];\n getValue: CellGetter;\n groupBy: string | null;\n settings: ViewSettings;\n isDark: boolean;\n palette: Palette;\n selecting: boolean;\n selected: ReadonlySet<string>;\n onToggleSelect: (row: DatabaseRow) => void;\n onOpenRow: (row: DatabaseRow) => void;\n onRowMenu: (row: DatabaseRow) => void;\n onEditCell: (row: DatabaseRow, column: DatabaseColumn) => void;\n onToggleCheckbox: (row: DatabaseRow, column: DatabaseColumn) => void;\n /** New row, optionally starting in a group (`prefill` = the group's property value). */\n onAddRow: (group?: { column: DatabaseColumn; value: string | null }) => void;\n hasMore: boolean;\n loadingMore: boolean;\n onLoadMore: () => void;\n refreshing: boolean;\n onRefresh: () => void;\n}\n\nconst DEFAULT_WIDTH = 160;\n\nfunction SelectMark({ on, palette }: { on: boolean; palette: Palette }) {\n return (\n <Ionicons\n name={on ? 'checkmark-circle' : 'ellipse-outline'}\n size={22}\n color={on ? palette.primary : palette.textFaint}\n />\n );\n}\n\nfunction GroupHeader({\n group,\n column,\n isDark,\n palette,\n}: {\n group: RowGroup<DatabaseRow>;\n column: DatabaseColumn | undefined;\n isDark: boolean;\n palette: Palette;\n}) {\n const chip = column && (column.type === 'select' || column.type === 'status') && group.value !== null;\n return (\n <View style={[styles.groupHeader, { backgroundColor: palette.bg }]}>\n {chip ? (\n <OptionChip name={group.name} color={group.color} isDark={isDark} palette={palette} />\n ) : (\n <Text style={[styles.groupName, { color: palette.text }]}>{group.name}</Text>\n )}\n <Text style={[styles.count, { color: palette.textMuted }]}>{group.rows.length}</Text>\n </View>\n );\n}\n\nfunction LoadMore({ p }: { p: LayoutProps }) {\n if (!p.hasMore) return null;\n return (\n <Pressable\n accessibilityRole=\"button\"\n onPress={p.onLoadMore}\n disabled={p.loadingMore}\n style={[styles.loadMore, { backgroundColor: p.palette.fill }]}\n >\n {p.loadingMore ? (\n <ActivityIndicator color={p.palette.textMuted} />\n ) : (\n <Text style={[styles.loadMoreText, { color: p.palette.text }]}>Load more</Text>\n )}\n </Pressable>\n );\n}\n\nfunction NewRowButton({ p, onPress, label = 'New' }: { p: LayoutProps; onPress: () => void; label?: string }) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n onPress={onPress}\n style={({ pressed }) => [styles.newRow, pressed && { backgroundColor: p.palette.pressed }]}\n >\n <Ionicons name=\"add\" size={18} color={p.palette.textMuted} />\n <Text style={[styles.newRowText, { color: p.palette.textMuted }]}>{label}</Text>\n </Pressable>\n );\n}\n\n/** Groups for a table / list when the view groups (and the property can group). */\nfunction useGroups(p: LayoutProps): Array<{ group: RowGroup<DatabaseRow> | null; data: DatabaseRow[] }> {\n return useMemo(() => {\n const column = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : undefined;\n if (!column || !isTableGroupable(column)) return [{ group: null, data: p.rows }];\n const groups = groupRowsByColumn(p.rows, column, p.getValue);\n const shown = p.settings.hideEmptyGroups ? groups.filter((g) => g.rows.length) : groups;\n return shown.map((g) => ({ group: g, data: g.rows }));\n }, [p.allColumns, p.getValue, p.groupBy, p.rows, p.settings.hideEmptyGroups]);\n}\n\n// ---- Table ---------------------------------------------------------------------------\n\nexport function TableLayout(p: LayoutProps) {\n const { palette } = p;\n const sections = useGroups(p);\n const groupColumn = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : undefined;\n const widthOf = (c: DatabaseColumn) => c.width ?? (c.type === 'checkbox' ? 90 : DEFAULT_WIDTH);\n const totalWidth = p.columns.reduce((n, c) => n + widthOf(c), 0) + (p.selecting ? 44 : 0);\n const wrapColumns = useMemo(() => new Set(p.settings.wrapColumns ?? []), [p.settings.wrapColumns]);\n const calculations = (p.settings.calculations ?? {}) as Record<string, string>;\n const hasCalcs = p.columns.some((c) => calculations[c.name]);\n\n const header = (\n <View style={[styles.tr, styles.th, { borderBottomColor: palette.hairline, backgroundColor: palette.bg }]}>\n {p.selecting ? <View style={styles.selectCell} /> : null}\n {p.columns.map((c) => (\n <View key={c.name} style={[styles.cell, { width: widthOf(c), borderRightColor: palette.hairline }]}>\n <Text numberOfLines={1} style={[styles.thText, { color: palette.textMuted }]}>\n {c.name}\n </Text>\n </View>\n ))}\n </View>\n );\n\n const footer = (\n <View>\n <NewRowButton p={p} onPress={() => p.onAddRow()} />\n {hasCalcs ? (\n <View\n style={[styles.tr, { borderTopColor: palette.hairline, borderTopWidth: StyleSheet.hairlineWidth }]}\n >\n {p.selecting ? <View style={styles.selectCell} /> : null}\n {p.columns.map((c) => {\n const kind = calcKindFor(calculations[c.name], c.type);\n const result =\n kind === 'none'\n ? null\n : computeCalculation(\n p.rows.map((r) => p.getValue(r, c)),\n c.type,\n kind,\n );\n return (\n <View key={c.name} style={[styles.cell, { width: widthOf(c) }]}>\n {result?.value ? (\n <Text numberOfLines={1} style={[styles.calc, { color: palette.textMuted }]}>\n {`${CALC_LABELS[kind]?.short ?? result.label} `}\n <Text style={{ color: palette.text }}>{result.value}</Text>\n </Text>\n ) : null}\n </View>\n );\n })}\n </View>\n ) : null}\n <LoadMore p={p} />\n </View>\n );\n\n return (\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={{ minWidth: '100%' }}>\n <SectionList\n style={{ width: Math.max(totalWidth, 1) }}\n sections={sections.map((s, i) => ({ key: s.group ? boardGroupKey(s.group) || `g${i}` : 'all', ...s }))}\n keyExtractor={(r) => r.id}\n stickySectionHeadersEnabled={false}\n ListHeaderComponent={header}\n ListFooterComponent={footer}\n refreshing={p.refreshing}\n onRefresh={p.onRefresh}\n renderSectionHeader={({ section }) =>\n section.group ? (\n <GroupHeader group={section.group} column={groupColumn} isDark={p.isDark} palette={palette} />\n ) : null\n }\n renderSectionFooter={({ section }) =>\n section.group && groupColumn ? (\n <NewRowButton\n p={p}\n onPress={() => p.onAddRow({ column: groupColumn, value: section.group!.value })}\n />\n ) : null\n }\n renderItem={({ item: row }) => {\n const on = p.selected.has(row.id);\n return (\n <Pressable\n onLongPress={() => p.onRowMenu(row)}\n onPress={p.selecting ? () => p.onToggleSelect(row) : undefined}\n style={[\n styles.tr,\n { borderBottomColor: palette.hairline },\n on && { backgroundColor: palette.primarySoft },\n ]}\n >\n {p.selecting ? (\n <View style={styles.selectCell}>\n <SelectMark on={on} palette={palette} />\n </View>\n ) : null}\n {p.columns.map((c) => {\n const wrap = Boolean(p.settings.wrap) || wrapColumns.has(c.name);\n return (\n <Pressable\n key={c.name}\n accessibilityRole=\"button\"\n accessibilityLabel={\n c.type === 'title'\n ? `Open ${rowTitle(row) || 'Untitled'}`\n : `Edit ${c.name}`\n }\n disabled={p.selecting}\n onPress={() =>\n c.type === 'title'\n ? p.onOpenRow(row)\n : c.type === 'checkbox'\n ? p.onToggleCheckbox(row, c)\n : p.onEditCell(row, c)\n }\n onLongPress={() =>\n c.type === 'title' ? p.onEditCell(row, c) : p.onRowMenu(row)\n }\n style={({ pressed }) => [\n styles.cell,\n {\n width: widthOf(c),\n borderRightColor: palette.hairline,\n backgroundColor: pressed ? palette.pressed : undefined,\n },\n ]}\n >\n {c.type === 'title' ? (\n <Ionicons\n name=\"document-text-outline\"\n size={15}\n color={palette.textMuted}\n style={styles.titleIcon}\n />\n ) : null}\n <View style={ui.flex}>\n <CellValue\n row={row}\n column={c}\n getValue={p.getValue}\n isDark={p.isDark}\n palette={palette}\n wrap={wrap}\n onToggleCheckbox={\n c.type === 'checkbox' && !p.selecting\n ? () => p.onToggleCheckbox(row, c)\n : undefined\n }\n />\n </View>\n </Pressable>\n );\n })}\n </Pressable>\n );\n }}\n />\n </ScrollView>\n );\n}\n\n// ---- Board ---------------------------------------------------------------------------\n\nfunction Card({\n p,\n row,\n props: shown,\n cover,\n}: {\n p: LayoutProps;\n row: DatabaseRow;\n props: DatabaseColumn[];\n cover?: string | null;\n}) {\n const { palette } = p;\n const on = p.selected.has(row.id);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${rowTitle(row) || 'Untitled'}`}\n onPress={() => (p.selecting ? p.onToggleSelect(row) : p.onOpenRow(row))}\n onLongPress={() => p.onRowMenu(row)}\n style={({ pressed }) => [\n styles.card,\n {\n backgroundColor: pressed ? palette.pressed : palette.card,\n borderColor: on ? palette.primary : palette.hairline,\n },\n ]}\n >\n {cover !== undefined ? (\n cover ? (\n <Image source={{ uri: cover }} style={styles.cover} contentFit=\"cover\" />\n ) : (\n <View style={[styles.cover, styles.coverEmpty, { backgroundColor: palette.fill }]}>\n <Ionicons name=\"document-text-outline\" size={24} color={palette.textFaint} />\n </View>\n )\n ) : null}\n <View style={styles.cardBody}>\n <View style={styles.cardTitleRow}>\n {p.selecting ? <SelectMark on={on} palette={palette} /> : null}\n <View style={ui.flex}>\n <CellValue\n row={row}\n column={p.allColumns.find((c) => c.type === 'title') ?? { name: 'title', type: 'title' }}\n getValue={p.getValue}\n isDark={p.isDark}\n palette={palette}\n wrap\n />\n </View>\n </View>\n {shown.map((c) => (\n <View key={c.name} style={styles.cardProp}>\n <CellValue\n row={row}\n column={c}\n getValue={p.getValue}\n isDark={p.isDark}\n palette={palette}\n onToggleCheckbox={c.type === 'checkbox' ? () => p.onToggleCheckbox(row, c) : undefined}\n />\n </View>\n ))}\n </View>\n </Pressable>\n );\n}\n\nexport function BoardLayout(p: LayoutProps & { cardProps: DatabaseColumn[] }) {\n const { palette } = p;\n const column = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : undefined;\n const groups = useMemo(() => {\n if (!column) return [];\n const options = column.type === 'status' ? normalizeStatusOptions(column.options) : (column.options ?? []);\n return groupRows(p.rows, column.name, options);\n }, [column, p.rows]);\n const { collapsed, hidden } = readBoardGroups(p.settings);\n const shown = groups.filter(\n (g) => !hidden.includes(boardGroupKey(g)) && !(p.settings.hideEmptyGroups && !g.rows.length),\n );\n\n if (!column) {\n return (\n <View style={styles.boardEmpty}>\n <Ionicons name=\"albums-outline\" size={34} color={palette.textFaint} />\n <Text style={[styles.boardEmptyTitle, { color: palette.text }]}>Group this board</Text>\n <Text style={[styles.boardEmptyText, { color: palette.textMuted }]}>\n A board groups rows by a Status or Select property. Add one, then pick it under Group.\n </Text>\n </View>\n );\n }\n\n return (\n <ScrollView horizontal contentContainerStyle={styles.board} showsHorizontalScrollIndicator={false}>\n {shown.map((g) => {\n const key = boardGroupKey(g);\n const isCollapsed = collapsed.includes(key);\n return (\n <View\n key={key || '__empty'}\n style={[styles.boardColumn, isCollapsed && styles.boardColumnCollapsed]}\n >\n <GroupHeader group={g} column={column} isDark={p.isDark} palette={palette} />\n {isCollapsed ? null : (\n <ScrollView contentContainerStyle={styles.boardCards} showsVerticalScrollIndicator={false}>\n {g.rows.map((row) => (\n <Card key={row.id} p={p} row={row} props={p.cardProps} />\n ))}\n <NewRowButton p={p} onPress={() => p.onAddRow({ column, value: g.value })} />\n </ScrollView>\n )}\n </View>\n );\n })}\n <View style={styles.boardTail}>\n <LoadMore p={p} />\n </View>\n </ScrollView>\n );\n}\n\n// ---- List ----------------------------------------------------------------------------\n\nexport function ListLayout(p: LayoutProps & { rowProps: DatabaseColumn[] }) {\n const { palette } = p;\n const sections = useGroups(p);\n const groupColumn = p.groupBy ? p.allColumns.find((c) => c.name === p.groupBy) : undefined;\n return (\n <SectionList\n sections={sections.map((s, i) => ({ key: s.group ? boardGroupKey(s.group) || `g${i}` : 'all', ...s }))}\n keyExtractor={(r) => r.id}\n stickySectionHeadersEnabled={false}\n contentContainerStyle={styles.listContent}\n refreshing={p.refreshing}\n onRefresh={p.onRefresh}\n renderSectionHeader={({ section }) =>\n section.group ? (\n <GroupHeader group={section.group} column={groupColumn} isDark={p.isDark} palette={palette} />\n ) : null\n }\n ListFooterComponent={\n <View>\n <NewRowButton p={p} onPress={() => p.onAddRow()} />\n <LoadMore p={p} />\n </View>\n }\n renderItem={({ item: row }) => {\n const on = p.selected.has(row.id);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${rowTitle(row) || 'Untitled'}`}\n onPress={() => (p.selecting ? p.onToggleSelect(row) : p.onOpenRow(row))}\n onLongPress={() => p.onRowMenu(row)}\n style={({ pressed }) => [\n styles.listRow,\n { borderBottomColor: palette.hairline },\n (pressed || on) && { backgroundColor: on ? palette.primarySoft : palette.pressed },\n ]}\n >\n {p.selecting ? (\n <SelectMark on={on} palette={palette} />\n ) : (\n <Ionicons name=\"document-text-outline\" size={18} color={palette.textMuted} />\n )}\n <View style={ui.flex}>\n <CellValue\n row={row}\n column={\n p.allColumns.find((c) => c.type === 'title') ?? { name: 'title', type: 'title' }\n }\n getValue={p.getValue}\n isDark={p.isDark}\n palette={palette}\n />\n </View>\n <View style={styles.listProps}>\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 </Pressable>\n );\n }}\n />\n );\n}\n\n// ---- Gallery -------------------------------------------------------------------------\n\nexport function GalleryLayout(p: LayoutProps & { cardProps: DatabaseColumn[] }) {\n const { width } = useWindowDimensions();\n const layout = readCardLayout(p.settings, { cover: true });\n const perRow = layout.size === 'large' ? 1 : layout.size === 'small' ? 3 : 2;\n const gap = 12;\n const cardWidth = Math.floor((width - 32 - gap * (perRow - 1)) / perRow);\n return (\n <FlatList\n key={`gallery-${perRow}`}\n data={p.rows}\n numColumns={perRow}\n keyExtractor={(r) => r.id}\n contentContainerStyle={styles.gallery}\n columnWrapperStyle={perRow > 1 ? { gap } : undefined}\n refreshing={p.refreshing}\n onRefresh={p.onRefresh}\n ListFooterComponent={\n <View>\n <NewRowButton p={p} onPress={() => p.onAddRow()} />\n <LoadMore p={p} />\n </View>\n }\n renderItem={({ item: row }) => (\n <View style={{ width: cardWidth, marginBottom: gap }}>\n <Card\n p={p}\n row={row}\n props={p.cardProps}\n cover={\n layout.coverSource === 'none'\n ? undefined\n : rowCoverUrl(row.properties, p.allColumns, layout.coverSource)\n }\n />\n </View>\n )}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n tr: { flexDirection: 'row', borderBottomWidth: StyleSheet.hairlineWidth, minHeight: 44 },\n th: { minHeight: 36 },\n thText: { fontSize: 13, fontWeight: '600' },\n cell: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 8,\n borderRightWidth: StyleSheet.hairlineWidth,\n },\n selectCell: { width: 44, alignItems: 'center', justifyContent: 'center' },\n titleIcon: { marginRight: 6 },\n calc: { fontSize: 12 },\n groupHeader: { flexDirection: 'row', alignItems: 'center', gap: 8, paddingHorizontal: 12, paddingVertical: 10 },\n groupName: { fontSize: 14, fontWeight: '600' },\n count: { fontSize: 13 },\n newRow: { flexDirection: 'row', alignItems: 'center', gap: 6, paddingHorizontal: 12, height: 44, borderRadius: 10 },\n newRowText: { fontSize: 15 },\n loadMore: { margin: 12, height: 42, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n loadMoreText: { fontSize: 15, fontWeight: '600' },\n board: { padding: 12, gap: 12, alignItems: 'flex-start' },\n boardColumn: { width: 280 },\n boardColumnCollapsed: { width: 140 },\n boardCards: { gap: 8, paddingBottom: 48 },\n boardTail: { width: 160, justifyContent: 'flex-start' },\n boardEmpty: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 32, gap: 8 },\n boardEmptyTitle: { fontSize: 17, fontWeight: '700' },\n boardEmptyText: { fontSize: 14, textAlign: 'center', lineHeight: 20 },\n card: { borderRadius: 12, borderWidth: StyleSheet.hairlineWidth, overflow: 'hidden' },\n cardBody: { padding: 12, gap: 6 },\n cardTitleRow: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n cardProp: { minHeight: 0 },\n cover: { width: '100%', aspectRatio: 16 / 10 },\n coverEmpty: { alignItems: 'center', justifyContent: 'center' },\n listContent: { paddingBottom: 48 },\n listRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingHorizontal: 16,\n minHeight: 52,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n listProps: { flexDirection: 'row', alignItems: 'center', gap: 6, maxWidth: '55%', overflow: 'hidden' },\n gallery: { padding: 16, paddingBottom: 48 },\n});\n"],"names":["_a"],"mappings":"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"}