@adminide-stack/yantra-mobile 12.0.142 → 12.0.144

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 (111) hide show
  1. package/lib/features/attachments/displayUserMessageText.js +2 -2
  2. package/lib/features/attachments/displayUserMessageText.js.map +1 -1
  3. package/lib/features/notion/NotionAgentPanel.js +987 -0
  4. package/lib/features/notion/NotionAgentPanel.js.map +1 -0
  5. package/lib/features/notion/NotionAskAiSheet.js +362 -0
  6. package/lib/features/notion/NotionAskAiSheet.js.map +1 -0
  7. package/lib/features/notion/NotionBlockView.js +4 -3
  8. package/lib/features/notion/NotionBlockView.js.map +1 -1
  9. package/lib/features/notion/NotionConnectionsSheet.js +47 -13
  10. package/lib/features/notion/NotionConnectionsSheet.js.map +1 -1
  11. package/lib/features/notion/NotionPageView.js +68 -8
  12. package/lib/features/notion/NotionPageView.js.map +1 -1
  13. package/lib/features/notion/NotionSidebarSections.js +1 -1
  14. package/lib/features/notion/NotionSidebarSections.js.map +1 -1
  15. package/lib/features/notion/NotionWorkspaceView.js +14 -9
  16. package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
  17. package/lib/features/notion/database/DatabaseCells.js +3 -1
  18. package/lib/features/notion/database/DatabaseCells.js.map +1 -1
  19. package/lib/features/notion/database/DatabaseDateLayouts.js +1 -1
  20. package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -1
  21. package/lib/features/notion/database/NotionDatabaseView.js +1 -1
  22. package/lib/features/notion/database/NotionDatabaseView.js.map +1 -1
  23. package/lib/features/notion/notionAgentRunStatus.js +2 -2
  24. package/lib/features/notion/notionAgentRunStatus.js.map +1 -1
  25. package/lib/features/notion/notionAgentRuns.js +57 -0
  26. package/lib/features/notion/notionAgentRuns.js.map +1 -0
  27. package/lib/features/notion/notionAiContext.js +91 -0
  28. package/lib/features/notion/notionAiContext.js.map +1 -0
  29. package/lib/features/notion/notionConnections.js +42 -4
  30. package/lib/features/notion/notionConnections.js.map +1 -1
  31. package/lib/features/notion/notionDocuments.js +61 -1
  32. package/lib/features/notion/notionDocuments.js.map +1 -1
  33. package/lib/features/notion/notionNotesAgent.js +173 -3
  34. package/lib/features/notion/notionNotesAgent.js.map +1 -1
  35. package/lib/features/notion/notionPageKinds.js +1 -1
  36. package/lib/features/webbuilder/WebBuilderExperience.js +229 -97
  37. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  38. package/lib/features/webbuilder/buildFragments.js +33 -7
  39. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  40. package/lib/features/webbuilder/buildJob.js +2 -2
  41. package/lib/features/webbuilder/buildJob.js.map +1 -1
  42. package/lib/features/webbuilder/codeFiles.js +18 -1
  43. package/lib/features/webbuilder/codeFiles.js.map +1 -1
  44. package/lib/features/webbuilder/components/BottomTabs.js.map +1 -1
  45. package/lib/features/webbuilder/components/CodeView.js +134 -56
  46. package/lib/features/webbuilder/components/CodeView.js.map +1 -1
  47. package/lib/features/webbuilder/components/Composer.js +2 -2
  48. package/lib/features/webbuilder/components/Composer.js.map +1 -1
  49. package/lib/features/webbuilder/components/PreviewFrame.js +19 -3
  50. package/lib/features/webbuilder/components/PreviewFrame.js.map +1 -1
  51. package/lib/features/webbuilder/components/PreviewScreen.js +310 -46
  52. package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
  53. package/lib/features/webbuilder/components/ProjectChat.js +141 -12
  54. package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
  55. package/lib/features/webbuilder/components/ProjectSheets.js +792 -0
  56. package/lib/features/webbuilder/components/ProjectSheets.js.map +1 -0
  57. package/lib/features/webbuilder/components/ProjectsScreen.js +14 -2
  58. package/lib/features/webbuilder/components/ProjectsScreen.js.map +1 -1
  59. package/lib/features/webbuilder/components/PublishSheet.js +914 -58
  60. package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
  61. package/lib/features/webbuilder/components/TemplateCard.js +9 -6
  62. package/lib/features/webbuilder/components/TemplateCard.js.map +1 -1
  63. package/lib/features/webbuilder/components/TemplatesSheet.js +5 -17
  64. package/lib/features/webbuilder/components/TemplatesSheet.js.map +1 -1
  65. package/lib/features/webbuilder/connectorTemplates.js +171 -0
  66. package/lib/features/webbuilder/connectorTemplates.js.map +1 -0
  67. package/lib/features/webbuilder/fileTree.js +163 -0
  68. package/lib/features/webbuilder/fileTree.js.map +1 -0
  69. package/lib/features/webbuilder/followUps.js +67 -0
  70. package/lib/features/webbuilder/followUps.js.map +1 -0
  71. package/lib/features/webbuilder/previewProbe.js +49 -0
  72. package/lib/features/webbuilder/previewProbe.js.map +1 -0
  73. package/lib/features/webbuilder/previewRoutes.js +156 -0
  74. package/lib/features/webbuilder/previewRoutes.js.map +1 -0
  75. package/lib/features/webbuilder/projectTools.js +341 -0
  76. package/lib/features/webbuilder/projectTools.js.map +1 -0
  77. package/lib/features/webbuilder/publishTools.js +475 -0
  78. package/lib/features/webbuilder/publishTools.js.map +1 -0
  79. package/lib/features/webbuilder/sleepNotice.js +13 -0
  80. package/lib/features/webbuilder/sleepNotice.js.map +1 -0
  81. package/lib/features/webbuilder/stepLabels.js +37 -7
  82. package/lib/features/webbuilder/stepLabels.js.map +1 -1
  83. package/lib/features/webbuilder/studioCatalog.js +5 -1
  84. package/lib/features/webbuilder/studioCatalog.js.map +1 -1
  85. package/lib/features/webbuilder/templateCatalog.js +140 -0
  86. package/lib/features/webbuilder/templateCatalog.js.map +1 -0
  87. package/lib/features/webbuilder/webbuilderPrompts.js +31 -5
  88. package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
  89. package/lib/features/webbuilder/workflow.js +8 -4
  90. package/lib/features/webbuilder/workflow.js.map +1 -1
  91. package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +9 -6
  92. package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -1
  93. package/lib/screens/WebBuilderNative/index.js +1 -1
  94. package/lib/screens/WebBuilderNative/index.js.map +1 -1
  95. package/lib/screens/WebBuilderNative/keepAlive.js +53 -3
  96. package/lib/screens/WebBuilderNative/keepAlive.js.map +1 -1
  97. package/lib/screens/WebBuilderNative/unreachableRetry.js +23 -0
  98. package/lib/screens/WebBuilderNative/unreachableRetry.js.map +1 -0
  99. package/lib/screens/WebBuilderNative/useConnectorTemplates.js +37 -0
  100. package/lib/screens/WebBuilderNative/useConnectorTemplates.js.map +1 -0
  101. package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js +6 -0
  102. package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js.map +1 -1
  103. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +302 -40
  104. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  105. package/lib/screens/WebBuilderNative/useWebBuilderJobs.js +2 -2
  106. package/lib/screens/WebBuilderNative/useWebBuilderJobs.js.map +1 -1
  107. package/lib/screens/WebBuilderNative/versionUndo.js +1 -1
  108. package/lib/screens/WebBuilderNative/versionUndo.js.map +1 -1
  109. package/lib/screens/WebBuilderNative/webbuilderTransport.js +147 -77
  110. package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
  111. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseCells.js","sources":["../../../../src/features/notion/database/DatabaseCells.tsx"],"sourcesContent":["/**\n * Database cells - the web components/DatabaseCells on a phone: how a value reads in a table\n * cell, card or list row (option chips, checkboxes, links, dates), and the cell editor sheet that\n * opens on tap. The editor follows the property type: free text / number / url / email / phone /\n * person / files through `editorStringToCell`, option pickers (with \"Create\" like the web) for\n * select, status and multi-select, a date (range) picker, related rows for a relation, and a\n * read-only value for computed properties.\n */\nimport React, { useEffect, useMemo, useState, type ComponentType } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Switch,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useApolloClient } from '@apollo/client';\nimport { NATIVE_NOTION_QUERY_DATABASE } from '../notionDocuments';\nimport { textColorOf, washColorOf } from '../notionRichText';\nimport type { NotionPalette } from '../notionTheme';\nimport { SheetHeader, ui } from '../notionUi';\nimport { serverErrorText } from '../notionPageActions';\nimport {\n addSchemaOption,\n cellDisplayText,\n cellToEditorString,\n dateRangeValue,\n filesValue,\n editorStringToCell,\n isComputedType,\n multiSelectNames,\n normalizeStatusOptions,\n propertyTypeLabel,\n relationIds,\n richTextToPlain,\n selectName,\n selectValueToCell,\n serializeDateRange,\n toggleMultiSelect,\n toggleRelation,\n type CellGetter,\n type DatabaseSchema,\n type SchemaOption,\n} from './databaseView';\nimport { formatUniqueId } from './uniqueId';\nimport { useRelationTitles } from './relationSource';\nimport type { DatabaseColumn, DatabaseRow } from './useNotionDatabase';\nimport { databaseTitle } from './useNotionDatabase';\n\ntype Palette = NotionPalette;\n\n/** Wash / ink for an option colour (`gray`, `blue`, …); no colour reads as gray. */\nexport function optionColors(color: string | undefined, isDark: boolean, palette: Palette) {\n const key = color && color !== 'default' ? color : 'gray';\n return {\n bg: washColorOf(key, isDark) ?? palette.fill,\n fg: textColorOf(key, isDark) ?? palette.text,\n };\n}\n\nexport function OptionChip({\n name,\n color,\n isDark,\n palette,\n}: {\n name: string;\n color?: string;\n isDark: boolean;\n palette: Palette;\n}) {\n const c = optionColors(color, isDark, palette);\n return (\n <View style={[styles.chip, { backgroundColor: c.bg }]}>\n <Text numberOfLines={1} style={[styles.chipText, { color: c.fg }]}>\n {name}\n </Text>\n </View>\n );\n}\n\nfunction optionColorOf(column: DatabaseColumn, name: string): string | undefined {\n return column.options?.find((o) => o.name === name)?.color;\n}\n\nconst IMAGE_EXT = /\\.(png|jpe?g|gif|webp|avif|heic|svg)(\\?|#|$)/i;\n\n/**\n * A card's cover (web DatabaseCells rowCoverUrl): the page cover, else the first image in a files\n * property. `source` is 'auto', 'cover' (page cover only), 'none' or one files property's name.\n */\nexport function rowCoverUrl(\n properties: Record<string, any> | undefined,\n columns: Array<{ name: string; type: string }>,\n source: string = 'auto',\n): string | null {\n if (source === 'none') return null;\n const pool = source !== 'auto' && source !== 'cover' ? columns.filter((c) => c.name === source) : columns;\n const cover = source === 'auto' || source === 'cover' ? properties?.cover : null;\n const fromCover =\n typeof cover === 'string' ? cover : (cover?.url ?? cover?.external?.url ?? cover?.file?.url ?? null);\n if (typeof fromCover === 'string' && /^https?:/i.test(fromCover)) return fromCover;\n if (source === 'cover') return null;\n for (const c of pool) {\n if (c.type !== 'files') continue;\n for (const f of filesValue(properties?.[c.name])) {\n if (IMAGE_EXT.test(f.url)) return /^https?:/i.test(f.url) ? f.url : `https://${f.url}`;\n }\n }\n return null;\n}\n\n/** Plain text of a row's title. */\nexport function rowTitle(row: DatabaseRow): string {\n return databaseTitle(row.properties) || richTextToPlain(row.properties?.title);\n}\n\n/**\n * A cell's value as it reads in a table cell / card / list row. `inline` keeps chips on one line.\n */\nexport function CellValue({\n row,\n column,\n getValue,\n isDark,\n palette,\n onToggleCheckbox,\n wrap,\n}: {\n row: DatabaseRow;\n column: DatabaseColumn;\n getValue: CellGetter;\n isDark: boolean;\n palette: Palette;\n onToggleCheckbox?: () => void;\n wrap?: boolean;\n}) {\n const value = getValue(row, column);\n const relations = useRelationTitles();\n switch (column.type) {\n case 'relation': {\n const ids = relationIds(value);\n if (!ids.length) return null;\n const titles = ids.map(\n (id) => (column.databaseId && relations?.titleOf(column.databaseId, id)) || 'Untitled',\n );\n return (\n <View style={[styles.chips, !wrap && styles.chipsInline]}>\n {titles.map((t, i) => (\n <View key={`${ids[i]}`} style={[styles.relation, { borderBottomColor: palette.textFaint }]}>\n <Ionicons name=\"document-text-outline\" size={13} color={palette.textMuted} />\n <Text numberOfLines={1} style={[styles.value, { color: palette.text }]}>\n {t}\n </Text>\n </View>\n ))}\n </View>\n );\n }\n case 'unique_id': {\n const text = formatUniqueId(value, column.uniquePrefix);\n return text ? (\n <Text style={[styles.value, styles.number, { color: palette.textMuted }]}>{text}</Text>\n ) : null;\n }\n case 'title': {\n const text = rowTitle(row);\n return (\n <Text\n numberOfLines={wrap ? undefined : 1}\n style={[styles.title, { color: text ? palette.text : palette.textFaint }]}\n >\n {text || 'Untitled'}\n </Text>\n );\n }\n case 'checkbox': {\n const on = value === true;\n return (\n <Pressable\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: on }}\n accessibilityLabel={column.name}\n onPress={onToggleCheckbox}\n disabled={!onToggleCheckbox}\n hitSlop={8}\n >\n <Ionicons\n name={on ? 'checkbox' : 'square-outline'}\n size={20}\n color={on ? palette.primary : palette.textMuted}\n />\n </Pressable>\n );\n }\n case 'select':\n case 'status': {\n const name = selectName(value);\n return name ? (\n <OptionChip name={name} color={optionColorOf(column, name)} isDark={isDark} palette={palette} />\n ) : null;\n }\n case 'multi_select': {\n const names = multiSelectNames(value);\n if (!names.length) return null;\n return (\n <View style={[styles.chips, !wrap && styles.chipsInline]}>\n {names.map((n) => (\n <OptionChip\n key={n}\n name={n}\n color={optionColorOf(column, n)}\n isDark={isDark}\n palette={palette}\n />\n ))}\n </View>\n );\n }\n default: {\n const text = cellDisplayText(value, column.type);\n if (!text) return null;\n const link = column.type === 'url' || column.type === 'email' || column.type === 'phone';\n return (\n <Text\n numberOfLines={wrap ? undefined : 1}\n style={[\n styles.value,\n { color: link ? palette.primary : palette.text },\n column.type === 'number' && styles.number,\n ]}\n >\n {text}\n </Text>\n );\n }\n }\n}\n\n// ---- Date picker (optional native module, like expenses/DateSheet) -------------------------\n\ntype PickerProps = {\n value: Date;\n mode?: 'date';\n display?: 'default' | 'spinner' | 'calendar' | 'inline' | 'compact';\n themeVariant?: 'light' | 'dark';\n accentColor?: string;\n onChange: (event: { type?: string }, date?: Date) => void;\n};\n\nlet HostDatePicker: ComponentType<PickerProps> | null = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require\n HostDatePicker = require('@react-native-community/datetimepicker').default ?? null;\n} catch {\n HostDatePicker = null;\n}\n\nconst pad = (n: number) => String(n).padStart(2, '0');\nconst ymdOf = (d: Date) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\nfunction dateOfYmd(day: string | null): Date {\n const m = day ? /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(day) : null;\n return m ? new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]), 12) : new Date();\n}\n\nfunction DayField({\n label,\n day,\n isDark,\n palette,\n onChange,\n}: {\n label: string;\n day: string | null;\n isDark: boolean;\n palette: Palette;\n onChange: (day: string | null) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [typed, setTyped] = useState(day ?? '');\n useEffect(() => setTyped(day ?? ''), [day]);\n if (!HostDatePicker) {\n // No native picker in this binary: type the day.\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <TextInput\n value={typed}\n onChangeText={setTyped}\n onEndEditing={() => onChange(/^\\d{4}-\\d{2}-\\d{2}$/.test(typed.trim()) ? typed.trim() : null)}\n placeholder=\"YYYY-MM-DD\"\n placeholderTextColor={palette.textFaint}\n keyboardType=\"numbers-and-punctuation\"\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n </View>\n );\n }\n const Picker = HostDatePicker;\n if (Platform.OS === 'ios') {\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <Picker\n value={dateOfYmd(day)}\n mode=\"date\"\n display=\"inline\"\n themeVariant={isDark ? 'dark' : 'light'}\n accentColor={palette.primary}\n onChange={(_, d) => d && onChange(ymdOf(d))}\n />\n </View>\n );\n }\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => setOpen(true)}\n style={[styles.input, styles.inputRow, { backgroundColor: palette.fill }]}\n >\n <Text style={{ color: day ? palette.text : palette.textFaint, fontSize: 16 }}>\n {day ? cellDisplayText(day, 'date') : 'Pick a day'}\n </Text>\n <Ionicons name=\"calendar-outline\" size={18} color={palette.textMuted} />\n </Pressable>\n {open ? (\n <Picker\n value={dateOfYmd(day)}\n mode=\"date\"\n onChange={(event, d) => {\n setOpen(false);\n if (event.type !== 'dismissed' && d) onChange(ymdOf(d));\n }}\n />\n ) : null}\n </View>\n );\n}\n\n// ---- Relation targets -------------------------------------------------------------------\n\nfunction useRelationTargets(databaseId: string | undefined, enabled: boolean) {\n const client = useApolloClient();\n const [rows, setRows] = useState<Array<{ id: string; title: string }>>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n useEffect(() => {\n if (!enabled || !databaseId) return;\n let live = true;\n setLoading(true);\n setError(null);\n client\n .query({\n query: NATIVE_NOTION_QUERY_DATABASE,\n variables: { input: { databaseId, pageSize: 200 } },\n fetchPolicy: 'network-only',\n })\n .then((res) => {\n if (!live) return;\n const results = (res.data?.queryDatabase?.results ?? []) as Array<{\n id: string;\n properties?: Record<string, any>;\n }>;\n setRows(results.map((r) => ({ id: r.id, title: databaseTitle(r.properties) || 'Untitled' })));\n })\n .catch((err) => live && setError(serverErrorText(err)))\n .finally(() => live && setLoading(false));\n return () => {\n live = false;\n };\n }, [client, databaseId, enabled]);\n return { rows, loading, error };\n}\n\n// ---- Editor sheet ------------------------------------------------------------------------\n\nconst TEXT_INPUT_TYPES = new Set(['title', 'text', 'number', 'url', 'email', 'phone', 'person', 'files']);\n\nexport function CellEditorSheet({\n visible,\n row,\n column,\n schema,\n getValue,\n isDark,\n palette,\n onClose,\n onSave,\n onSaveSchema,\n}: {\n visible: boolean;\n row: DatabaseRow | null;\n column: DatabaseColumn | null;\n schema: DatabaseSchema;\n getValue: CellGetter;\n isDark: boolean;\n palette: Palette;\n onClose: () => void;\n /** Resolves with an error message, or null once saved. */\n onSave: (value: unknown) => Promise<string | null>;\n onSaveSchema: (schema: DatabaseSchema) => Promise<string | null>;\n}) {\n const type = column?.type ?? 'text';\n const value = row && column ? getValue(row, column) : null;\n const stored = row && column ? row.properties?.[column.name] : null;\n const [text, setText] = useState('');\n const [query, setQuery] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [busy, setBusy] = useState(false);\n const [hasEnd, setHasEnd] = useState(false);\n const relation = useRelationTargets(column?.databaseId, visible && type === 'relation');\n\n useEffect(() => {\n if (!visible || !column) return;\n setText(cellToEditorString(stored, type));\n setQuery('');\n setError(null);\n setHasEnd(Boolean(dateRangeValue(stored)?.end));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible, column?.name, row?.id]);\n\n const options: SchemaOption[] = useMemo(() => {\n const list = column?.options ?? [];\n return type === 'status' ? normalizeStatusOptions(list) : list;\n }, [column?.options, type]);\n\n const save = async (next: unknown) => {\n setBusy(true);\n setError(null);\n const err = await onSave(next);\n setBusy(false);\n if (err) setError(err);\n return err;\n };\n\n const saveText = async () => {\n if (!column) return;\n const parsed = editorStringToCell(text, type, stored);\n if (!parsed.ok) {\n setError(parsed.error);\n return;\n }\n if (!(await save(parsed.value))) onClose();\n };\n\n /** Add the typed option to the schema, then pick it. */\n const createOption = async (name: string) => {\n if (!column) return;\n const result = addSchemaOption(schema, column.name, name);\n if (!result.ok) {\n setError(result.error);\n return;\n }\n setBusy(true);\n const err = await onSaveSchema(result.schema);\n setBusy(false);\n if (err) {\n setError(err);\n return;\n }\n setQuery('');\n if (type === 'multi_select') await save(toggleMultiSelect(stored, name));\n else if (!(await save(selectValueToCell(name)))) onClose();\n };\n\n const renderBody = () => {\n if (!column || !row) return null;\n if (isComputedType(type)) {\n return (\n <View style={styles.body}>\n <Text style={[styles.readOnly, { color: palette.text }]}>\n {cellDisplayText(value, type) || 'Empty'}\n </Text>\n <Text style={[styles.hint, { color: palette.textMuted }]}>\n {`${propertyTypeLabel(type)} values are computed and can't be edited.`}\n </Text>\n </View>\n );\n }\n if (TEXT_INPUT_TYPES.has(type)) {\n const multiline = type === 'title' || type === 'text';\n return (\n <View style={styles.body}>\n <TextInput\n value={text}\n onChangeText={setText}\n autoFocus\n multiline={multiline}\n placeholder={type === 'person' || type === 'files' ? 'Separate entries with commas' : 'Empty'}\n placeholderTextColor={palette.textFaint}\n keyboardType={\n type === 'number'\n ? 'decimal-pad'\n : type === 'email'\n ? 'email-address'\n : type === 'phone'\n ? 'phone-pad'\n : type === 'url'\n ? 'url'\n : 'default'\n }\n autoCapitalize={type === 'url' || type === 'email' ? 'none' : 'sentences'}\n returnKeyType={multiline ? 'default' : 'done'}\n onSubmitEditing={multiline ? undefined : saveText}\n style={[\n styles.input,\n multiline && styles.inputMultiline,\n { color: palette.text, backgroundColor: palette.fill },\n ]}\n />\n <Pressable\n accessibilityRole=\"button\"\n onPress={saveText}\n disabled={busy}\n style={[styles.primary, { backgroundColor: palette.primary, opacity: busy ? 0.6 : 1 }]}\n >\n <Text style={[styles.primaryText, { color: palette.onPrimary }]}>Save</Text>\n </Pressable>\n </View>\n );\n }\n if (type === 'select' || type === 'status' || type === 'multi_select') {\n const multi = type === 'multi_select';\n const chosen = multi ? multiSelectNames(stored) : [selectName(stored)].filter(Boolean);\n const q = query.trim();\n const shown = q ? options.filter((o) => o.name.toLowerCase().includes(q.toLowerCase())) : options;\n const exact = options.some((o) => o.name.toLowerCase() === q.toLowerCase());\n return (\n <FlatList\n data={shown}\n keyExtractor={(o) => o.name}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.body}\n ListHeaderComponent={\n <View style={styles.listHead}>\n <TextInput\n value={query}\n onChangeText={setQuery}\n placeholder={type === 'status' ? 'Search status' : 'Search or create an option'}\n placeholderTextColor={palette.textFaint}\n autoCorrect={false}\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n {q && !exact && type !== 'status' ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => createOption(q)}\n style={[styles.optionRow, { backgroundColor: palette.card }]}\n >\n <Ionicons name=\"add\" size={18} color={palette.primary} />\n <Text style={[styles.optionLabel, { color: palette.text }]}>Create</Text>\n <OptionChip name={q} isDark={isDark} palette={palette} />\n </Pressable>\n ) : null}\n {chosen.length ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={async () => {\n if (!(await save(multi ? [] : null))) onClose();\n }}\n style={styles.clear}\n >\n <Text style={{ color: palette.danger, fontSize: 15 }}>Clear</Text>\n </Pressable>\n ) : null}\n </View>\n }\n renderItem={({ item }) => {\n const on = chosen.includes(item.name);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n onPress={async () => {\n if (multi) await save(toggleMultiSelect(stored, item.name));\n else if (!(await save(on ? null : selectValueToCell(item.name)))) onClose();\n }}\n style={({ pressed }) => [\n styles.optionRow,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ]}\n >\n <OptionChip name={item.name} color={item.color} isDark={isDark} palette={palette} />\n <View style={ui.flex} />\n {on ? <Ionicons name=\"checkmark\" size={20} color={palette.primary} /> : null}\n </Pressable>\n );\n }}\n />\n );\n }\n if (type === 'checkbox') {\n return (\n <View style={[styles.body, styles.switchRow]}>\n <Text style={[styles.optionLabel, { color: palette.text }]}>{column.name}</Text>\n <Switch value={stored === true} onValueChange={(v) => save(v)} />\n </View>\n );\n }\n if (type === 'date') {\n const range = dateRangeValue(stored);\n const start = range?.start ?? null;\n const end = range?.end ?? null;\n return (\n <ScrollView contentContainerStyle={styles.body} keyboardShouldPersistTaps=\"handled\">\n <DayField\n label=\"Date\"\n day={start}\n isDark={isDark}\n palette={palette}\n onChange={(d) => save(serializeDateRange(d, hasEnd ? end : null, stored))}\n />\n <View style={styles.switchRow}>\n <Text style={[styles.optionLabel, { color: palette.text }]}>End date</Text>\n <Switch\n value={hasEnd}\n onValueChange={(on) => {\n setHasEnd(on);\n if (!on && end) save(serializeDateRange(start, null, stored));\n }}\n />\n </View>\n {hasEnd ? (\n <DayField\n label=\"End\"\n day={end}\n isDark={isDark}\n palette={palette}\n onChange={(d) => start && save(serializeDateRange(start, d, stored))}\n />\n ) : null}\n {start ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={async () => {\n if (!(await save(null))) onClose();\n }}\n style={styles.clear}\n >\n <Text style={{ color: palette.danger, fontSize: 15 }}>Clear date</Text>\n </Pressable>\n ) : null}\n </ScrollView>\n );\n }\n if (type === 'relation') {\n const ids = relationIds(stored);\n const q = query.trim().toLowerCase();\n const shown = q ? relation.rows.filter((r) => r.title.toLowerCase().includes(q)) : relation.rows;\n if (!column.databaseId) {\n return (\n <View style={styles.body}>\n <Text style={[styles.hint, { color: palette.textMuted }]}>\n This relation has no target database yet.\n </Text>\n </View>\n );\n }\n return (\n <FlatList\n data={shown}\n keyExtractor={(r) => r.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.body}\n ListHeaderComponent={\n <View style={styles.listHead}>\n <TextInput\n value={query}\n onChangeText={setQuery}\n placeholder=\"Search pages\"\n placeholderTextColor={palette.textFaint}\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n {relation.loading ? <ActivityIndicator color={palette.textMuted} /> : null}\n {relation.error ? <Text style={{ color: palette.danger }}>{relation.error}</Text> : null}\n </View>\n }\n renderItem={({ item }) => {\n const on = ids.includes(item.id);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n onPress={() => {\n const next =\n column.relationLimit === 1\n ? on\n ? []\n : [{ id: item.id }]\n : toggleRelation(stored, item.id);\n save(next);\n }}\n style={({ pressed }) => [\n styles.optionRow,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ]}\n >\n <Ionicons name=\"document-text-outline\" size={18} color={palette.textMuted} />\n <Text numberOfLines={1} style={[styles.optionLabel, ui.flex, { color: palette.text }]}>\n {item.title}\n </Text>\n {on ? <Ionicons name=\"checkmark\" size={20} color={palette.primary} /> : null}\n </Pressable>\n );\n }}\n />\n );\n }\n return (\n <View style={styles.body}>\n <Text style={[styles.readOnly, { color: palette.text }]}>\n {cellDisplayText(value, type) || 'Empty'}\n </Text>\n </View>\n );\n };\n\n return (\n <Modal visible={visible} animationType=\"slide\" presentationStyle=\"pageSheet\" onRequestClose={onClose}>\n <View style={[ui.flex, { backgroundColor: palette.bg }]}>\n <SheetHeader title={column?.name ?? ''} onDone={onClose} palette={palette} />\n {error ? <Text style={[styles.error, { color: palette.danger }]}>{error}</Text> : null}\n {renderBody()}\n </View>\n </Modal>\n );\n}\n\nconst styles = StyleSheet.create({\n chip: { paddingHorizontal: 8, paddingVertical: 2, borderRadius: 6, maxWidth: 180, alignSelf: 'flex-start' },\n chipText: { fontSize: 13, fontWeight: '500' },\n chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 4 },\n chipsInline: { flexWrap: 'nowrap', overflow: 'hidden' },\n relation: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 3,\n maxWidth: 180,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n title: { fontSize: 15, fontWeight: '600' },\n value: { fontSize: 14 },\n number: { fontVariant: ['tabular-nums'] },\n body: { padding: 16, gap: 10 },\n listHead: { gap: 10, marginBottom: 6 },\n input: { minHeight: 44, borderRadius: 12, paddingHorizontal: 12, paddingVertical: 10, fontSize: 16 },\n inputMultiline: { minHeight: 120, textAlignVertical: 'top' },\n inputRow: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },\n primary: { height: 46, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n primaryText: { fontSize: 16, fontWeight: '700' },\n optionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n minHeight: 48,\n paddingHorizontal: 12,\n borderRadius: 12,\n marginBottom: 6,\n },\n optionLabel: { fontSize: 15 },\n clear: { alignSelf: 'flex-start', paddingVertical: 6 },\n switchRow: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },\n readOnly: { fontSize: 16 },\n hint: { fontSize: 13 },\n error: { paddingHorizontal: 16, paddingTop: 10, fontSize: 13 },\n field: { gap: 6 },\n fieldLabel: { fontSize: 13, fontWeight: '600' },\n});\n"],"names":["_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseCells.js","sources":["../../../../src/features/notion/database/DatabaseCells.tsx"],"sourcesContent":["/**\n * Database cells - the web components/DatabaseCells on a phone: how a value reads in a table\n * cell, card or list row (option chips, checkboxes, links, dates), and the cell editor sheet that\n * opens on tap. The editor follows the property type: free text / number / url / email / phone /\n * person / files through `editorStringToCell`, option pickers (with \"Create\" like the web) for\n * select, status and multi-select, a date (range) picker, related rows for a relation, and a\n * read-only value for computed properties.\n */\nimport React, { useEffect, useMemo, useState, type ComponentType } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Switch,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useApolloClient } from '@apollo/client';\nimport { NATIVE_NOTION_QUERY_DATABASE } from '../notionDocuments';\nimport { textColorOf, washColorOf } from '../notionRichText';\nimport type { NotionPalette } from '../notionTheme';\nimport { SheetHeader, ui } from '../notionUi';\nimport { serverErrorText } from '../notionPageActions';\nimport {\n addSchemaOption,\n cellDisplayText,\n cellToEditorString,\n dateRangeValue,\n filesValue,\n editorStringToCell,\n isComputedType,\n multiSelectNames,\n normalizeStatusOptions,\n propertyTypeLabel,\n relationIds,\n richTextToPlain,\n selectName,\n selectValueToCell,\n serializeDateRange,\n toggleMultiSelect,\n toggleRelation,\n type CellGetter,\n type DatabaseSchema,\n type SchemaOption,\n} from './databaseView';\nimport { formatUniqueId } from './uniqueId';\nimport { useRelationTitles } from './relationSource';\nimport type { DatabaseColumn, DatabaseRow } from './useNotionDatabase';\nimport { databaseTitle } from './useNotionDatabase';\n\ntype Palette = NotionPalette;\n\n/** Wash / ink for an option colour (`gray`, `blue`, …); no colour reads as gray. */\nexport function optionColors(color: string | undefined, isDark: boolean, palette: Palette) {\n const key = color && color !== 'default' ? color : 'gray';\n return {\n bg: washColorOf(key, isDark) ?? palette.fill,\n fg: textColorOf(key, isDark) ?? palette.text,\n };\n}\n\nexport function OptionChip({\n name,\n color,\n isDark,\n palette,\n}: {\n name: string;\n color?: string;\n isDark: boolean;\n palette: Palette;\n}) {\n const c = optionColors(color, isDark, palette);\n return (\n <View style={[styles.chip, { backgroundColor: c.bg }]}>\n <Text numberOfLines={1} style={[styles.chipText, { color: c.fg }]}>\n {name}\n </Text>\n </View>\n );\n}\n\nfunction optionColorOf(column: DatabaseColumn, name: string): string | undefined {\n return column.options?.find((o) => o.name === name)?.color;\n}\n\nconst IMAGE_EXT = /\\.(png|jpe?g|gif|webp|avif|heic|svg)(\\?|#|$)/i;\n\n/**\n * A card's cover (web DatabaseCells rowCoverUrl): the page cover, else the first image in a files\n * property. `source` is 'auto', 'cover' (page cover only), 'none' or one files property's name.\n */\nexport function rowCoverUrl(\n properties: Record<string, any> | undefined,\n columns: Array<{ name: string; type: string }>,\n source: string = 'auto',\n): string | null {\n if (source === 'none') return null;\n const pool = source !== 'auto' && source !== 'cover' ? columns.filter((c) => c.name === source) : columns;\n const cover = source === 'auto' || source === 'cover' ? properties?.cover : null;\n const fromCover =\n typeof cover === 'string' ? cover : (cover?.url ?? cover?.external?.url ?? cover?.file?.url ?? null);\n if (typeof fromCover === 'string' && /^https?:/i.test(fromCover)) return fromCover;\n if (source === 'cover') return null;\n for (const c of pool) {\n if (c.type !== 'files') continue;\n for (const f of filesValue(properties?.[c.name])) {\n if (IMAGE_EXT.test(f.url)) return /^https?:/i.test(f.url) ? f.url : `https://${f.url}`;\n }\n }\n return null;\n}\n\n/** Plain text of a row's title. */\nexport function rowTitle(row: DatabaseRow): string {\n return databaseTitle(row.properties) || richTextToPlain(row.properties?.title);\n}\n\n/**\n * A cell's value as it reads in a table cell / card / list row. `inline` keeps chips on one line.\n */\nexport function CellValue({\n row,\n column,\n getValue,\n isDark,\n palette,\n onToggleCheckbox,\n wrap,\n}: {\n row: DatabaseRow;\n column: DatabaseColumn;\n getValue: CellGetter;\n isDark: boolean;\n palette: Palette;\n onToggleCheckbox?: () => void;\n wrap?: boolean;\n}) {\n const value = getValue(row, column);\n const relations = useRelationTitles();\n switch (column.type) {\n case 'relation': {\n const ids = relationIds(value);\n if (!ids.length) return null;\n const titles = ids.map(\n (id) => (column.databaseId && relations?.titleOf(column.databaseId, id)) || 'Untitled',\n );\n return (\n <View style={[styles.chips, !wrap && styles.chipsInline]}>\n {titles.map((t, i) => (\n <View key={`${ids[i]}`} style={[styles.relation, { borderBottomColor: palette.textFaint }]}>\n <Ionicons name=\"document-text-outline\" size={13} color={palette.textMuted} />\n <Text numberOfLines={1} style={[styles.value, { color: palette.text }]}>\n {t}\n </Text>\n </View>\n ))}\n </View>\n );\n }\n case 'unique_id': {\n const text = formatUniqueId(value, column.uniquePrefix);\n return text ? (\n <Text style={[styles.value, styles.number, { color: palette.textMuted }]}>{text}</Text>\n ) : null;\n }\n case 'title': {\n const text = rowTitle(row);\n return (\n <Text\n numberOfLines={wrap ? undefined : 1}\n style={[styles.title, { color: text ? palette.text : palette.textFaint }]}\n >\n {text || 'Untitled'}\n </Text>\n );\n }\n case 'checkbox': {\n const on = value === true;\n return (\n <Pressable\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: on }}\n accessibilityLabel={column.name}\n onPress={onToggleCheckbox}\n disabled={!onToggleCheckbox}\n hitSlop={8}\n >\n <Ionicons\n name={on ? 'checkbox' : 'square-outline'}\n size={20}\n color={on ? palette.primary : palette.textMuted}\n />\n </Pressable>\n );\n }\n case 'select':\n case 'status': {\n const name = selectName(value);\n return name ? (\n <OptionChip name={name} color={optionColorOf(column, name)} isDark={isDark} palette={palette} />\n ) : null;\n }\n case 'multi_select': {\n const names = multiSelectNames(value);\n if (!names.length) return null;\n return (\n <View style={[styles.chips, !wrap && styles.chipsInline]}>\n {names.map((n) => (\n <OptionChip\n key={n}\n name={n}\n color={optionColorOf(column, n)}\n isDark={isDark}\n palette={palette}\n />\n ))}\n </View>\n );\n }\n default: {\n const text = cellDisplayText(value, column.type);\n if (!text) return null;\n const link = column.type === 'url' || column.type === 'email' || column.type === 'phone';\n return (\n <Text\n numberOfLines={wrap ? undefined : 1}\n style={[\n styles.value,\n { color: link ? palette.primary : palette.text },\n column.type === 'number' && styles.number,\n ]}\n >\n {text}\n </Text>\n );\n }\n }\n}\n\n// ---- Date picker (optional native module, like expenses/DateSheet) -------------------------\n\ntype PickerProps = {\n value: Date;\n mode?: 'date';\n display?: 'default' | 'spinner' | 'calendar' | 'inline' | 'compact';\n themeVariant?: 'light' | 'dark';\n accentColor?: string;\n onChange: (event: { type?: string }, date?: Date) => void;\n};\n\nlet HostDatePicker: ComponentType<PickerProps> | null = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require\n HostDatePicker = require('@react-native-community/datetimepicker').default ?? null;\n} catch {\n HostDatePicker = null;\n}\n\nconst pad = (n: number) => String(n).padStart(2, '0');\nconst ymdOf = (d: Date) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\nfunction dateOfYmd(day: string | null): Date {\n const m = day ? /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(day) : null;\n return m ? new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]), 12) : new Date();\n}\n\nfunction DayField({\n label,\n day,\n isDark,\n palette,\n onChange,\n}: {\n label: string;\n day: string | null;\n isDark: boolean;\n palette: Palette;\n onChange: (day: string | null) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [typed, setTyped] = useState(day ?? '');\n useEffect(() => setTyped(day ?? ''), [day]);\n if (!HostDatePicker) {\n // No native picker in this binary: type the day.\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <TextInput\n value={typed}\n onChangeText={setTyped}\n onEndEditing={() => onChange(/^\\d{4}-\\d{2}-\\d{2}$/.test(typed.trim()) ? typed.trim() : null)}\n placeholder=\"YYYY-MM-DD\"\n placeholderTextColor={palette.textFaint}\n keyboardType=\"numbers-and-punctuation\"\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n </View>\n );\n }\n const Picker = HostDatePicker;\n if (Platform.OS === 'ios') {\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <Picker\n value={dateOfYmd(day)}\n mode=\"date\"\n display=\"inline\"\n themeVariant={isDark ? 'dark' : 'light'}\n accentColor={palette.primary}\n onChange={(_, d) => d && onChange(ymdOf(d))}\n />\n </View>\n );\n }\n return (\n <View style={styles.field}>\n <Text style={[styles.fieldLabel, { color: palette.textMuted }]}>{label}</Text>\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => setOpen(true)}\n style={[styles.input, styles.inputRow, { backgroundColor: palette.fill }]}\n >\n <Text style={{ color: day ? palette.text : palette.textFaint, fontSize: 16 }}>\n {day ? cellDisplayText(day, 'date') : 'Pick a day'}\n </Text>\n <Ionicons name=\"calendar-outline\" size={18} color={palette.textMuted} />\n </Pressable>\n {open ? (\n <Picker\n value={dateOfYmd(day)}\n mode=\"date\"\n onChange={(event, d) => {\n setOpen(false);\n if (event.type !== 'dismissed' && d) onChange(ymdOf(d));\n }}\n />\n ) : null}\n </View>\n );\n}\n\n// ---- Relation targets -------------------------------------------------------------------\n\nfunction useRelationTargets(databaseId: string | undefined, enabled: boolean) {\n const client = useApolloClient();\n const [rows, setRows] = useState<Array<{ id: string; title: string }>>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n useEffect(() => {\n if (!enabled || !databaseId) return;\n let live = true;\n setLoading(true);\n setError(null);\n client\n .query({\n query: NATIVE_NOTION_QUERY_DATABASE,\n variables: { input: { databaseId, pageSize: 200 } },\n fetchPolicy: 'network-only',\n })\n .then((res) => {\n if (!live) return;\n const results = (res.data?.queryDatabase?.results ?? []) as Array<{\n id: string;\n properties?: Record<string, any>;\n }>;\n setRows(results.map((r) => ({ id: r.id, title: databaseTitle(r.properties) || 'Untitled' })));\n })\n .catch((err) => live && setError(serverErrorText(err)))\n .finally(() => live && setLoading(false));\n return () => {\n live = false;\n };\n }, [client, databaseId, enabled]);\n return { rows, loading, error };\n}\n\n// ---- Editor sheet ------------------------------------------------------------------------\n\nconst TEXT_INPUT_TYPES = new Set(['title', 'text', 'number', 'url', 'email', 'phone', 'person', 'files']);\n\nexport function CellEditorSheet({\n visible,\n row,\n column,\n schema,\n getValue,\n isDark,\n palette,\n onClose,\n onSave,\n onSaveSchema,\n}: {\n visible: boolean;\n row: DatabaseRow | null;\n column: DatabaseColumn | null;\n schema: DatabaseSchema;\n getValue: CellGetter;\n isDark: boolean;\n palette: Palette;\n onClose: () => void;\n /** Resolves with an error message, or null once saved. */\n onSave: (value: unknown) => Promise<string | null>;\n onSaveSchema: (schema: DatabaseSchema) => Promise<string | null>;\n}) {\n const type = column?.type ?? 'text';\n const value = row && column ? getValue(row, column) : null;\n const stored = row && column ? row.properties?.[column.name] : null;\n const [text, setText] = useState('');\n const [query, setQuery] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [busy, setBusy] = useState(false);\n const [hasEnd, setHasEnd] = useState(false);\n const relation = useRelationTargets(column?.databaseId, visible && type === 'relation');\n\n useEffect(() => {\n if (!visible || !column) return;\n setText(cellToEditorString(stored, type));\n setQuery('');\n setError(null);\n setHasEnd(Boolean(dateRangeValue(stored)?.end));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible, column?.name, row?.id]);\n\n const options: SchemaOption[] = useMemo(() => {\n const list = column?.options ?? [];\n return type === 'status' ? normalizeStatusOptions(list) : list;\n }, [column?.options, type]);\n\n const save = async (next: unknown) => {\n setBusy(true);\n setError(null);\n const err = await onSave(next);\n setBusy(false);\n if (err) setError(err);\n return err;\n };\n\n const saveText = async () => {\n if (!column) return;\n const parsed = editorStringToCell(text, type, stored);\n if (!parsed.ok) {\n setError(parsed.error);\n return;\n }\n if (!(await save(parsed.value))) onClose();\n };\n\n /** Add the typed option to the schema, then pick it. */\n const createOption = async (name: string) => {\n if (!column) return;\n const result = addSchemaOption(schema, column.name, name);\n if (!result.ok) {\n setError(result.error);\n return;\n }\n setBusy(true);\n const err = await onSaveSchema(result.schema);\n setBusy(false);\n if (err) {\n setError(err);\n return;\n }\n setQuery('');\n if (type === 'multi_select') await save(toggleMultiSelect(stored, name));\n else if (!(await save(selectValueToCell(name)))) onClose();\n };\n\n const renderBody = () => {\n if (!column || !row) return null;\n if (isComputedType(type)) {\n return (\n <View style={styles.body}>\n <Text style={[styles.readOnly, { color: palette.text }]}>\n {cellDisplayText(value, type) || 'Empty'}\n </Text>\n <Text style={[styles.hint, { color: palette.textMuted }]}>\n {`${propertyTypeLabel(type)} values are computed and can't be edited.`}\n </Text>\n </View>\n );\n }\n if (TEXT_INPUT_TYPES.has(type)) {\n const multiline = type === 'title' || type === 'text';\n return (\n <View style={styles.body}>\n <TextInput\n value={text}\n onChangeText={setText}\n autoFocus\n multiline={multiline}\n placeholder={type === 'person' || type === 'files' ? 'Separate entries with commas' : 'Empty'}\n placeholderTextColor={palette.textFaint}\n keyboardType={\n type === 'number'\n ? 'decimal-pad'\n : type === 'email'\n ? 'email-address'\n : type === 'phone'\n ? 'phone-pad'\n : type === 'url'\n ? 'url'\n : 'default'\n }\n autoCapitalize={type === 'url' || type === 'email' ? 'none' : 'sentences'}\n returnKeyType={multiline ? 'default' : 'done'}\n onSubmitEditing={multiline ? undefined : saveText}\n style={[\n styles.input,\n multiline && styles.inputMultiline,\n { color: palette.text, backgroundColor: palette.fill },\n ]}\n />\n <Pressable\n accessibilityRole=\"button\"\n onPress={saveText}\n disabled={busy}\n style={[styles.primary, { backgroundColor: palette.primary, opacity: busy ? 0.6 : 1 }]}\n >\n <Text style={[styles.primaryText, { color: palette.onPrimary }]}>Save</Text>\n </Pressable>\n </View>\n );\n }\n if (type === 'select' || type === 'status' || type === 'multi_select') {\n const multi = type === 'multi_select';\n const chosen = multi ? multiSelectNames(stored) : [selectName(stored)].filter(Boolean);\n const q = query.trim();\n const shown = q ? options.filter((o) => o.name.toLowerCase().includes(q.toLowerCase())) : options;\n const exact = options.some((o) => o.name.toLowerCase() === q.toLowerCase());\n return (\n <FlatList\n data={shown}\n keyExtractor={(o) => o.name}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.body}\n ListHeaderComponent={\n <View style={styles.listHead}>\n <TextInput\n value={query}\n onChangeText={setQuery}\n placeholder={type === 'status' ? 'Search status' : 'Search or create an option'}\n placeholderTextColor={palette.textFaint}\n autoCorrect={false}\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n {q && !exact && type !== 'status' ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => createOption(q)}\n style={[styles.optionRow, { backgroundColor: palette.card }]}\n >\n <Ionicons name=\"add\" size={18} color={palette.primary} />\n <Text style={[styles.optionLabel, { color: palette.text }]}>Create</Text>\n <OptionChip name={q} isDark={isDark} palette={palette} />\n </Pressable>\n ) : null}\n {chosen.length ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={async () => {\n if (!(await save(multi ? [] : null))) onClose();\n }}\n style={styles.clear}\n >\n <Text style={{ color: palette.danger, fontSize: 15 }}>Clear</Text>\n </Pressable>\n ) : null}\n </View>\n }\n renderItem={({ item }) => {\n const on = chosen.includes(item.name);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n onPress={async () => {\n if (multi) await save(toggleMultiSelect(stored, item.name));\n else if (!(await save(on ? null : selectValueToCell(item.name)))) onClose();\n }}\n style={({ pressed }) => [\n styles.optionRow,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ]}\n >\n <OptionChip name={item.name} color={item.color} isDark={isDark} palette={palette} />\n <View style={ui.flex} />\n {on ? <Ionicons name=\"checkmark\" size={20} color={palette.primary} /> : null}\n </Pressable>\n );\n }}\n />\n );\n }\n if (type === 'checkbox') {\n return (\n <View style={[styles.body, styles.switchRow]}>\n <Text style={[styles.optionLabel, { color: palette.text }]}>{column.name}</Text>\n <Switch\n value={stored === true}\n onValueChange={(v) => {\n save(v);\n }}\n />\n </View>\n );\n }\n if (type === 'date') {\n const range = dateRangeValue(stored);\n const start = range?.start ?? null;\n const end = range?.end ?? null;\n return (\n <ScrollView contentContainerStyle={styles.body} keyboardShouldPersistTaps=\"handled\">\n <DayField\n label=\"Date\"\n day={start}\n isDark={isDark}\n palette={palette}\n onChange={(d) => save(serializeDateRange(d, hasEnd ? end : null, stored))}\n />\n <View style={styles.switchRow}>\n <Text style={[styles.optionLabel, { color: palette.text }]}>End date</Text>\n <Switch\n value={hasEnd}\n onValueChange={(on) => {\n setHasEnd(on);\n if (!on && end) save(serializeDateRange(start, null, stored));\n }}\n />\n </View>\n {hasEnd ? (\n <DayField\n label=\"End\"\n day={end}\n isDark={isDark}\n palette={palette}\n onChange={(d) => start && save(serializeDateRange(start, d, stored))}\n />\n ) : null}\n {start ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={async () => {\n if (!(await save(null))) onClose();\n }}\n style={styles.clear}\n >\n <Text style={{ color: palette.danger, fontSize: 15 }}>Clear date</Text>\n </Pressable>\n ) : null}\n </ScrollView>\n );\n }\n if (type === 'relation') {\n const ids = relationIds(stored);\n const q = query.trim().toLowerCase();\n const shown = q ? relation.rows.filter((r) => r.title.toLowerCase().includes(q)) : relation.rows;\n if (!column.databaseId) {\n return (\n <View style={styles.body}>\n <Text style={[styles.hint, { color: palette.textMuted }]}>\n This relation has no target database yet.\n </Text>\n </View>\n );\n }\n return (\n <FlatList\n data={shown}\n keyExtractor={(r) => r.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.body}\n ListHeaderComponent={\n <View style={styles.listHead}>\n <TextInput\n value={query}\n onChangeText={setQuery}\n placeholder=\"Search pages\"\n placeholderTextColor={palette.textFaint}\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n {relation.loading ? <ActivityIndicator color={palette.textMuted} /> : null}\n {relation.error ? <Text style={{ color: palette.danger }}>{relation.error}</Text> : null}\n </View>\n }\n renderItem={({ item }) => {\n const on = ids.includes(item.id);\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n onPress={() => {\n const next =\n column.relationLimit === 1\n ? on\n ? []\n : [{ id: item.id }]\n : toggleRelation(stored, item.id);\n save(next);\n }}\n style={({ pressed }) => [\n styles.optionRow,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ]}\n >\n <Ionicons name=\"document-text-outline\" size={18} color={palette.textMuted} />\n <Text numberOfLines={1} style={[styles.optionLabel, ui.flex, { color: palette.text }]}>\n {item.title}\n </Text>\n {on ? <Ionicons name=\"checkmark\" size={20} color={palette.primary} /> : null}\n </Pressable>\n );\n }}\n />\n );\n }\n return (\n <View style={styles.body}>\n <Text style={[styles.readOnly, { color: palette.text }]}>\n {cellDisplayText(value, type) || 'Empty'}\n </Text>\n </View>\n );\n };\n\n return (\n <Modal visible={visible} animationType=\"slide\" presentationStyle=\"pageSheet\" onRequestClose={onClose}>\n <View style={[ui.flex, { backgroundColor: palette.bg }]}>\n <SheetHeader title={column?.name ?? ''} onDone={onClose} palette={palette} />\n {error ? <Text style={[styles.error, { color: palette.danger }]}>{error}</Text> : null}\n {renderBody()}\n </View>\n </Modal>\n );\n}\n\nconst styles = StyleSheet.create({\n chip: { paddingHorizontal: 8, paddingVertical: 2, borderRadius: 6, maxWidth: 180, alignSelf: 'flex-start' },\n chipText: { fontSize: 13, fontWeight: '500' },\n chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 4 },\n chipsInline: { flexWrap: 'nowrap', overflow: 'hidden' },\n relation: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 3,\n maxWidth: 180,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n title: { fontSize: 15, fontWeight: '600' },\n value: { fontSize: 14 },\n number: { fontVariant: ['tabular-nums'] },\n body: { padding: 16, gap: 10 },\n listHead: { gap: 10, marginBottom: 6 },\n input: { minHeight: 44, borderRadius: 12, paddingHorizontal: 12, paddingVertical: 10, fontSize: 16 },\n inputMultiline: { minHeight: 120, textAlignVertical: 'top' },\n inputRow: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },\n primary: { height: 46, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n primaryText: { fontSize: 16, fontWeight: '700' },\n optionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n minHeight: 48,\n paddingHorizontal: 12,\n borderRadius: 12,\n marginBottom: 6,\n },\n optionLabel: { fontSize: 15 },\n clear: { alignSelf: 'flex-start', paddingVertical: 6 },\n switchRow: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' },\n readOnly: { fontSize: 16 },\n hint: { fontSize: 13 },\n error: { paddingHorizontal: 16, paddingTop: 10, fontSize: 13 },\n field: { gap: 6 },\n fieldLabel: { fontSize: 13, fontWeight: '600' },\n});\n"],"names":["_a","_b"],"mappings":"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"}
@@ -218,7 +218,7 @@ function TimelineLayout(p) {
218
218
  const todayX = dayOffset(range, today) * dw;
219
219
  return /* @__PURE__ */ jsxs(ScrollView, { contentContainerStyle: styles.timelineWrap, children: [
220
220
  /* @__PURE__ */ jsxs(View, { style: styles.modeRow, children: [
221
- /* @__PURE__ */ jsx(Segmented, { palette, items: TIMELINE_ZOOMS, value: zoom, onChange: setZoom }),
221
+ /* @__PURE__ */ jsx(Segmented, { palette, items: TIMELINE_ZOOMS, value: zoom, onChange: (z) => setZoom(z) }),
222
222
  /* @__PURE__ */ jsx(View, { style: ui.flex }),
223
223
  /* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: () => {
224
224
  var _a;