@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":"databaseFilter.js","sources":["../../../../src/features/notion/database/databaseFilter.ts"],"sourcesContent":["/**\n * databaseFilter — per-view filter conditions on any property type, combined with AND (default)\n * or OR (\"Match any\" — every condition carries `conj: 'or'`; saved as `filter: { or: […] }`).\n *\n * A condition is `{ property, operator, value }`. Persisted on the view as\n * `filter: { and: [{ property, operator, value }, …] }` — the shape the server's view model stores\n * (`filter.and` is a Mixed array), so it round-trips. A condition that still needs a value (just\n * added, value not typed yet) is inactive: it matches every row, like Notion.\n *\n * Operators per property type:\n * text-like (title/text/url/email/phone) contains, does_not_contain, equals, does_not_equal, is_empty, is_not_empty\n * number equals, does_not_equal, greater_than, less_than, ≥, ≤, is_empty, is_not_empty\n * select / status equals (\"is\"), does_not_equal (\"is not\"), is_empty, is_not_empty\n * multi_select / person contains, does_not_contain, is_empty, is_not_empty\n * checkbox is_checked, is_unchecked\n * date / created / last edited time on, before, after, within_past_days (N), is_empty, is_not_empty\n * files / relation is_empty, is_not_empty\n * formula by result: contains, equals, does_not_equal, greater_than, less_than,\n * is_checked, is_unchecked, is_empty, is_not_empty\n */\nimport {\n baseCellValue,\n cellDisplayText,\n dateString,\n isEmptyCell,\n multiSelectNames,\n multiSelectToCell,\n normalizeCellValue,\n numberValue,\n relationIds,\n rowMatchesFilter,\n selectName,\n selectValueToCell,\n toRichText,\n type CellGetter,\n type ColumnLike,\n type RowFilter,\n type RowLike,\n} from './databaseView';\n\nexport type FilterOperator =\n | 'contains'\n | 'does_not_contain'\n | 'equals'\n | 'does_not_equal'\n | 'greater_than'\n | 'less_than'\n | 'greater_than_or_equal_to'\n | 'less_than_or_equal_to'\n | 'is_empty'\n | 'is_not_empty'\n | 'is_checked'\n | 'is_unchecked'\n | 'before'\n | 'after'\n | 'on'\n | 'within_past_days'\n | 'within_next_days'\n | 'on_or_before'\n | 'on_or_after'\n /** Date relative to today: value is a RelativeDate token (\"this_week\"). */\n | 'is_relative'\n /** Select / status / multi-select: value is a list of option names. */\n | 'is_any_of'\n | 'is_none_of'\n /** Person: the signed-in user (by name). */\n | 'is_me'\n | 'is_not_me';\n\nexport interface FilterCondition {\n /** Local key for React lists (not meaningful to the server). */\n id: string;\n property: string;\n operator: FilterOperator;\n /** Text / option name / `YYYY-MM-DD` / number / day count / option list, per operator. */\n value?: string | number | string[] | null;\n /** \"Match any\": set on every condition when the view's conditions are OR-ed. */\n conj?: 'or';\n /**\n * Filter group (Notion's \"Advanced filter\"): conditions sharing a group id are evaluated\n * together, with the group's own AND / OR (`groupConj`); the group is one item at the top.\n */\n group?: string;\n groupConj?: 'or';\n}\n\n/** Top-level items in order: single conditions and groups (by first appearance). */\nexport function filterItems(\n conds: FilterCondition[],\n): Array<\n | { kind: 'cond'; cond: FilterCondition }\n | { kind: 'group'; id: string; mode: 'and' | 'or'; conds: FilterCondition[] }\n> {\n const out: Array<\n | { kind: 'cond'; cond: FilterCondition }\n | { kind: 'group'; id: string; mode: 'and' | 'or'; conds: FilterCondition[] }\n > = [];\n const groups = new Map<string, { kind: 'group'; id: string; mode: 'and' | 'or'; conds: FilterCondition[] }>();\n for (const c of conds) {\n if (!c.group) {\n out.push({ kind: 'cond', cond: c });\n continue;\n }\n let g = groups.get(c.group);\n if (!g) {\n g = { kind: 'group', id: c.group, mode: c.groupConj === 'or' ? 'or' : 'and', conds: [] };\n groups.set(c.group, g);\n out.push(g);\n }\n g.conds.push(c);\n }\n return out;\n}\n\nexport interface OperatorInfo {\n op: FilterOperator;\n label: string;\n /** What the value input is: none, free text, a number, an option of the property, a date. */\n input: 'none' | 'text' | 'number' | 'option' | 'options' | 'date' | 'days' | 'relative' | 'row';\n}\n\nconst O = (op: FilterOperator, label: string, input: OperatorInfo['input']): OperatorInfo => ({ op, label, input });\n\nconst EMPTY_OPS = [O('is_empty', 'is empty', 'none'), O('is_not_empty', 'is not empty', 'none')];\n\nconst TEXT_OPS = [\n O('contains', 'contains', 'text'),\n O('does_not_contain', 'does not contain', 'text'),\n O('equals', 'is', 'text'),\n O('does_not_equal', 'is not', 'text'),\n ...EMPTY_OPS,\n];\nconst NUMBER_OPS = [\n O('equals', '=', 'number'),\n O('does_not_equal', '≠', 'number'),\n O('greater_than', '>', 'number'),\n O('less_than', '<', 'number'),\n O('greater_than_or_equal_to', '≥', 'number'),\n O('less_than_or_equal_to', '≤', 'number'),\n ...EMPTY_OPS,\n];\nconst SELECT_OPS = [\n O('equals', 'is', 'option'),\n O('does_not_equal', 'is not', 'option'),\n O('is_any_of', 'is any of', 'options'),\n O('is_none_of', 'is none of', 'options'),\n ...EMPTY_OPS,\n];\nconst LIST_OPS = [\n O('contains', 'contains', 'option'),\n O('does_not_contain', 'does not contain', 'option'),\n O('is_any_of', 'contains any of', 'options'),\n O('is_none_of', 'contains none of', 'options'),\n ...EMPTY_OPS,\n];\nconst PERSON_OPS = [\n O('contains', 'contains', 'text'),\n O('does_not_contain', 'does not contain', 'text'),\n O('is_me', 'is me', 'none'),\n O('is_not_me', 'is not me', 'none'),\n ...EMPTY_OPS,\n];\nconst CHECKBOX_OPS = [O('is_checked', 'is checked', 'none'), O('is_unchecked', 'is unchecked', 'none')];\nconst DATE_OPS = [\n O('on', 'is on', 'date'),\n O('is_relative', 'is', 'relative'),\n O('before', 'is before', 'date'),\n O('after', 'is after', 'date'),\n O('on_or_before', 'is on or before', 'date'),\n O('on_or_after', 'is on or after', 'date'),\n O('within_past_days', 'is within the past', 'days'),\n O('within_next_days', 'is within the next', 'days'),\n ...EMPTY_OPS,\n];\n\n/** Relative dates for `is_relative` (Notion's \"Today / This week / …\"); weeks start on Sunday. */\nexport const RELATIVE_DATES = [\n { value: 'today', label: 'Today' },\n { value: 'yesterday', label: 'Yesterday' },\n { value: 'tomorrow', label: 'Tomorrow' },\n { value: 'this_week', label: 'This week' },\n { value: 'last_week', label: 'Last week' },\n { value: 'next_week', label: 'Next week' },\n { value: 'this_month', label: 'This month' },\n { value: 'last_month', label: 'Last month' },\n { value: 'next_month', label: 'Next month' },\n { value: 'past_7_days', label: 'Past 7 days' },\n { value: 'next_7_days', label: 'Next 7 days' },\n { value: 'past_30_days', label: 'Past 30 days' },\n { value: 'next_30_days', label: 'Next 30 days' },\n] as const;\n\n/** Inclusive `[from, to]` day keys for a relative date token, anchored at `now`. */\nexport function relativeDateRange(token: string, now: Date = new Date()): [string, string] | null {\n const today = localDayKey(now);\n const dow = now.getDay();\n const weekStart = shiftDayKey(today, -dow);\n const monthStart = (y: number, m: number) => localDayKey(new Date(y, m, 1));\n const monthEnd = (y: number, m: number) => localDayKey(new Date(y, m + 1, 0));\n const y = now.getFullYear();\n const m = now.getMonth();\n switch (token) {\n case 'today':\n return [today, today];\n case 'yesterday':\n return [shiftDayKey(today, -1), shiftDayKey(today, -1)];\n case 'tomorrow':\n return [shiftDayKey(today, 1), shiftDayKey(today, 1)];\n case 'this_week':\n return [weekStart, shiftDayKey(weekStart, 6)];\n case 'last_week':\n return [shiftDayKey(weekStart, -7), shiftDayKey(weekStart, -1)];\n case 'next_week':\n return [shiftDayKey(weekStart, 7), shiftDayKey(weekStart, 13)];\n case 'this_month':\n return [monthStart(y, m), monthEnd(y, m)];\n case 'last_month':\n return [monthStart(y, m - 1), monthEnd(y, m - 1)];\n case 'next_month':\n return [monthStart(y, m + 1), monthEnd(y, m + 1)];\n case 'past_7_days':\n return [shiftDayKey(today, -7), today];\n case 'next_7_days':\n return [today, shiftDayKey(today, 7)];\n case 'past_30_days':\n return [shiftDayKey(today, -30), today];\n case 'next_30_days':\n return [today, shiftDayKey(today, 30)];\n default:\n return null;\n }\n}\nconst FORMULA_OPS = [\n O('contains', 'contains', 'text'),\n O('equals', 'is', 'text'),\n O('does_not_equal', 'is not', 'text'),\n O('greater_than', '>', 'number'),\n O('less_than', '<', 'number'),\n O('is_checked', 'is true', 'none'),\n O('is_unchecked', 'is false', 'none'),\n ...EMPTY_OPS,\n];\n\n/** Operators offered for a property type (first = default for a new condition). */\nexport function operatorsFor(type: string): OperatorInfo[] {\n switch (type) {\n case 'number':\n case 'unique_id':\n return NUMBER_OPS;\n case 'select':\n case 'status':\n return SELECT_OPS;\n case 'multi_select':\n return LIST_OPS;\n case 'person':\n return PERSON_OPS;\n case 'checkbox':\n return CHECKBOX_OPS;\n case 'date':\n case 'created_time':\n case 'last_edited_time':\n return DATE_OPS;\n case 'files':\n return EMPTY_OPS;\n case 'relation':\n // \"contains\" a specific related page (value = its row id).\n return [O('contains', 'contains', 'row'), O('does_not_contain', 'does not contain', 'row'), ...EMPTY_OPS];\n case 'created_by':\n case 'last_edited_by':\n return [O('is_me', 'is me', 'none'), O('is_not_me', 'is not me', 'none'), ...EMPTY_OPS];\n case 'formula':\n case 'connector':\n case 'rollup':\n return FORMULA_OPS;\n default:\n return TEXT_OPS;\n }\n}\n\nexport function operatorInfo(type: string, op: FilterOperator): OperatorInfo | undefined {\n return operatorsFor(type).find((o) => o.op === op);\n}\n\nlet idSeq = 0;\nexport function newConditionId(): string {\n idSeq += 1;\n return `fc${Date.now().toString(36)}${idSeq}`;\n}\n\n/** A fresh condition on `column` with its type's default operator. */\nexport function newCondition(column: ColumnLike): FilterCondition {\n const first = operatorsFor(column.type)[0];\n return { id: newConditionId(), property: column.name, operator: first.op, value: null };\n}\n\n/** Does the condition constrain rows yet? (Value-taking operators need a value.) */\nexport function isConditionActive(cond: FilterCondition, column: ColumnLike | undefined): boolean {\n if (!column) return false;\n const info = operatorInfo(column.type, cond.operator);\n if (!info) return false;\n if (info.input === 'none') return true;\n const v = cond.value;\n if (v === null || v === undefined) return false;\n if (Array.isArray(v)) return v.length > 0;\n if (typeof v === 'string') return v.trim() !== '';\n return Number.isFinite(v);\n}\n\n/** Are the conditions OR-ed (\"Match any\")? */\nexport function isOrMode(conds: FilterCondition[] | undefined): boolean {\n return !!conds?.length && conds.every((c) => c.conj === 'or');\n}\n\n/** Switch every condition to AND or OR (same array when nothing changes). */\nexport function setFilterMode(conds: FilterCondition[], mode: 'and' | 'or'): FilterCondition[] {\n if (mode === 'or' ? isOrMode(conds) : conds.every((c) => !c.conj)) return conds;\n return conds.map((c) => {\n if (mode === 'or') return { ...c, conj: 'or' as const };\n const { conj: _drop, ...rest } = c;\n return rest;\n });\n}\n\n/** Optional context a condition can depend on. */\nexport interface FilterContext {\n /** The signed-in user's name (\"is me\" on person properties). */\n me?: string | null;\n /** The signed-in user's id (\"is me\" on Created by / Last edited by). */\n meId?: string | null;\n}\n\n// ============================================================================\n// DATES\n// ============================================================================\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n/** Local `YYYY-MM-DD` of a Date. */\nexport function localDayKey(d: Date): string {\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n/**\n * Calendar day (`YYYY-MM-DD`) of a date-like value: date-only strings as written (no timezone\n * shift), full timestamps in the local timezone. Null when absent / invalid.\n */\nexport function dayKeyOf(value: unknown): string | null {\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : localDayKey(value);\n const s = dateString(value);\n if (!s) return null;\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(s)) return s;\n const d = new Date(s);\n return Number.isNaN(d.getTime()) ? null : localDayKey(d);\n}\n\n/** `YYYY-MM-DD` `days` days before `day` (calendar arithmetic, DST-safe). */\nexport function shiftDayKey(day: string, days: number): string {\n const [y, m, d] = day.split('-').map(Number);\n return localDayKey(new Date(y, m - 1, d + days));\n}\n\n// ============================================================================\n// MATCHING\n// ============================================================================\n\nfunction textMatches(op: FilterOperator, haystack: string, needle: string): boolean {\n const h = haystack.toLowerCase();\n const n = needle.trim().toLowerCase();\n switch (op) {\n case 'contains':\n return h.includes(n);\n case 'does_not_contain':\n return !h.includes(n);\n case 'equals':\n return h.trim() === n;\n case 'does_not_equal':\n return h.trim() !== n;\n default:\n return true;\n }\n}\n\nfunction numberMatches(op: FilterOperator, n: number | null, target: number): boolean {\n if (n === null) return op === 'does_not_equal';\n switch (op) {\n case 'equals':\n return n === target;\n case 'does_not_equal':\n return n !== target;\n case 'greater_than':\n return n > target;\n case 'less_than':\n return n < target;\n case 'greater_than_or_equal_to':\n return n >= target;\n case 'less_than_or_equal_to':\n return n <= target;\n default:\n return true;\n }\n}\n\n/**\n * Does `value` (the row's value for `column`, computed columns already resolved) satisfy the\n * condition? Inactive conditions always match. `now` anchors \"within the past N days\".\n */\nexport function conditionMatches(\n cond: FilterCondition,\n value: unknown,\n column: ColumnLike,\n now: Date = new Date(),\n ctx: FilterContext = {},\n): boolean {\n if (!isConditionActive(cond, column)) return true;\n const op = cond.operator;\n const type = column.type;\n if ((op === 'is_me' || op === 'is_not_me') && (type === 'created_by' || type === 'last_edited_by')) {\n const mine = !!ctx.meId && value === ctx.meId;\n return op === 'is_me' ? mine : !mine;\n }\n if (op === 'is_me' || op === 'is_not_me') {\n const me = (ctx.me ?? '').trim().toLowerCase();\n const has = !!me && multiSelectNames(value).some((n) => n.trim().toLowerCase() === me);\n return op === 'is_me' ? has : !has;\n }\n if (op === 'is_any_of' || op === 'is_none_of') {\n const wanted = new Set((Array.isArray(cond.value) ? cond.value : [String(cond.value)]).map(String));\n const names = type === 'multi_select' ? multiSelectNames(value) : [selectName(value) as string].filter(Boolean);\n const any = names.some((n) => wanted.has(n));\n return op === 'is_any_of' ? any : !any;\n }\n if (op === 'is_empty' || op === 'is_not_empty') {\n const empty = type === 'checkbox' ? normalizeCellValue(value, 'checkbox') !== true : isEmptyCell(value, type);\n return op === 'is_empty' ? empty : !empty;\n }\n if (op === 'is_checked' || op === 'is_unchecked') {\n const checked = value === true || value === 'true';\n return op === 'is_checked' ? checked : !checked;\n }\n const raw = cond.value;\n switch (type) {\n case 'number':\n case 'unique_id':\n return numberMatches(op, numberValue(value), Number(raw));\n case 'select':\n case 'status': {\n const name = selectName(value);\n const target = String(raw);\n return op === 'equals' ? name === target : name !== target;\n }\n case 'multi_select': {\n const names = multiSelectNames(value);\n const has = names.includes(String(raw));\n return op === 'contains' ? has : !has;\n }\n case 'relation': {\n const has = relationIds(value).includes(String(raw));\n return op === 'contains' ? has : !has;\n }\n case 'person': {\n const needle = String(raw).trim().toLowerCase();\n const has = multiSelectNames(value).some((n) => n.toLowerCase().includes(needle));\n return op === 'contains' ? has : !has;\n }\n case 'date':\n case 'created_time':\n case 'last_edited_time': {\n const day = dayKeyOf(value);\n if (!day) return false;\n if (op === 'within_past_days' || op === 'within_next_days') {\n const n = Math.max(0, Math.trunc(Number(raw)));\n const today = localDayKey(now);\n return op === 'within_past_days'\n ? day <= today && day >= shiftDayKey(today, -n)\n : day >= today && day <= shiftDayKey(today, n);\n }\n if (op === 'is_relative') {\n const range = relativeDateRange(String(raw), now);\n return !range || (day >= range[0] && day <= range[1]);\n }\n const target = dayKeyOf(String(raw));\n if (!target) return true;\n if (op === 'on') return day === target;\n if (op === 'before') return day < target;\n if (op === 'after') return day > target;\n if (op === 'on_or_before') return day <= target;\n if (op === 'on_or_after') return day >= target;\n return true;\n }\n case 'formula':\n case 'connector':\n case 'rollup': {\n if (op === 'greater_than' || op === 'less_than') {\n const n = typeof value === 'number' ? value : numberValue(value);\n return n !== null && numberMatches(op, n, Number(raw));\n }\n // Connector values compare by their raw text (a date as its ISO string, a select by name).\n const text = type === 'connector' ? String(value ?? '') : cellDisplayText(value, 'formula');\n return textMatches(op, text, String(raw));\n }\n default:\n return textMatches(op, cellDisplayText(value, type), String(raw));\n }\n}\n\n/** Does the row pass every condition (AND)? Conditions on unknown properties are ignored. */\nexport function rowMatchesConditions(\n row: RowLike,\n columns: ColumnLike[],\n conditions: FilterCondition[] | undefined,\n getValue: CellGetter = baseCellValue,\n now: Date = new Date(),\n ctx: FilterContext = {},\n): boolean {\n const known = (conditions ?? []).filter((cond) => columns.some((c) => c.name === cond.property));\n if (!known.length) return true;\n const test = (cond: FilterCondition) => {\n const column = columns.find((c) => c.name === cond.property)!;\n return conditionMatches(cond, getValue(row, column), column, now, ctx);\n };\n // Groups first evaluate their own conditions (with their own AND / OR), then every top-level\n // item combines with the view's mode.\n const items = filterItems(known).map((it) =>\n it.kind === 'cond'\n ? () => test(it.cond)\n : () => (it.mode === 'or' ? it.conds.some(test) : it.conds.every(test)),\n );\n return isOrMode(known) ? items.some((f) => f()) : items.every((f) => f());\n}\n\nexport function activeConditions(conditions: FilterCondition[] | undefined, columns: ColumnLike[]): FilterCondition[] {\n return (conditions ?? []).filter((c) =>\n isConditionActive(\n c,\n columns.find((x) => x.name === c.property),\n ),\n );\n}\n\n/**\n * Rows matching the search / legacy select filter AND the conditions. `keepIds` always pass (rows\n * the user just added stay visible until the filter changes).\n */\nexport function applyRowFilter<R extends RowLike>(\n rows: R[],\n columns: ColumnLike[],\n filter: RowFilter | undefined,\n conditions: FilterCondition[] | undefined,\n opts: {\n getValue?: CellGetter;\n keepIds?: ReadonlySet<string>;\n now?: Date;\n me?: string | null;\n meId?: string | null;\n } = {},\n): R[] {\n const getValue = opts.getValue ?? baseCellValue;\n const conds = activeConditions(conditions, columns);\n const q = (filter?.search ?? '').trim();\n const selects = Object.values(filter?.selects ?? {}).some((v) => v.length > 0);\n if (!conds.length && !q && !selects) return rows;\n const now = opts.now ?? new Date();\n return rows.filter(\n (r) =>\n opts.keepIds?.has(r.id) ||\n (rowMatchesFilter(r, columns, filter, getValue) &&\n rowMatchesConditions(r, columns, conds, getValue, now, { me: opts.me, meId: opts.meId })),\n );\n}\n\n// ============================================================================\n// MAINTENANCE (schema changes) + PERSISTENCE\n// ============================================================================\n\n/** Point conditions at a renamed property. Same array when nothing changes. */\nexport function renameConditionProperty(conds: FilterCondition[], from: string, to: string): FilterCondition[] {\n if (from === to || !conds.some((c) => c.property === from)) return conds;\n return conds.map((c) => (c.property === from ? { ...c, property: to } : c));\n}\n\n/** Drop conditions on a deleted property. Same array when nothing changes. */\nexport function dropConditionProperty(conds: FilterCondition[], name: string): FilterCondition[] {\n return conds.some((c) => c.property === name) ? conds.filter((c) => c.property !== name) : conds;\n}\n\n/**\n * Drop conditions whose property is gone or whose operator no longer fits the property's type\n * (type changed elsewhere). Same array when nothing changes.\n */\nexport function pruneConditions(conds: FilterCondition[], columns: ColumnLike[]): FilterCondition[] {\n const keep = conds.filter((c) => {\n const column = columns.find((x) => x.name === c.property);\n return !!column && !!operatorInfo(column.type, c.operator);\n });\n return keep.length === conds.length ? conds : keep;\n}\n\nconst ALL_OPERATORS = new Set<string>([\n 'contains',\n 'does_not_contain',\n 'equals',\n 'does_not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal_to',\n 'less_than_or_equal_to',\n 'is_empty',\n 'is_not_empty',\n 'is_checked',\n 'is_unchecked',\n 'before',\n 'after',\n 'on',\n 'within_past_days',\n 'within_next_days',\n 'on_or_before',\n 'on_or_after',\n 'is_relative',\n 'is_any_of',\n 'is_none_of',\n 'is_me',\n 'is_not_me',\n]);\n\n/**\n * Read a view's persisted filter: `{ and: [...] }` (server shape) or a bare array. Legacy\n * `{ selects: { Prop: [names] } }` filters become one `equals` condition per single accepted\n * option (multi-option OR filters can't be expressed with AND and are dropped).\n */\nexport function parseViewFilter(filter: unknown): FilterCondition[] {\n if (!filter) return [];\n const orList =\n !Array.isArray(filter) && Array.isArray((filter as any).or) ? ((filter as any).or as unknown[]) : null;\n const list: unknown[] = Array.isArray(filter)\n ? filter\n : orList\n ? orList\n : Array.isArray((filter as any).and)\n ? (filter as any).and\n : [];\n const out: FilterCondition[] = [];\n const leaf = (c: unknown, id: string, extra: Partial<FilterCondition>) => {\n if (!c || typeof c !== 'object') return;\n const property = (c as any).property;\n const operator = (c as any).operator;\n if (typeof property !== 'string' || !property || !ALL_OPERATORS.has(operator)) return;\n const v = (c as any).value;\n out.push({\n id,\n property,\n operator,\n value:\n typeof v === 'string' || typeof v === 'number'\n ? v\n : Array.isArray(v)\n ? v.filter((x): x is string => typeof x === 'string')\n : null,\n ...(orList ? { conj: 'or' as const } : {}),\n ...extra,\n });\n };\n list.forEach((c, i) => {\n // A nested { and: […] } / { or: […] } is a filter group (one level, like Notion).\n const nestedOr =\n c && typeof c === 'object' && Array.isArray((c as any).or) ? ((c as any).or as unknown[]) : null;\n const nestedAnd =\n c && typeof c === 'object' && Array.isArray((c as any).and) ? ((c as any).and as unknown[]) : null;\n const nested = nestedOr ?? nestedAnd;\n if (nested) {\n const group = `g${i}`;\n nested.forEach((n, j) =>\n leaf(n, `p${i}_${j}`, { group, ...(nestedOr ? { groupConj: 'or' as const } : {}) }),\n );\n return;\n }\n leaf(c, `p${i}`, {});\n });\n const selects = (filter as any)?.selects;\n if (selects && typeof selects === 'object' && !Array.isArray(filter)) {\n for (const [property, accepted] of Object.entries(selects)) {\n if (Array.isArray(accepted) && accepted.length === 1 && typeof accepted[0] === 'string') {\n out.push({ id: `s${out.length}`, property, operator: 'equals', value: accepted[0] });\n }\n }\n }\n return out;\n}\n\n/** The view `filter` payload for conditions (ids are local and not sent). */\nexport function serializeViewFilter(\n conds: FilterCondition[],\n): { and: Array<Record<string, unknown>> } | { or: Array<Record<string, unknown>> } {\n const leaf = (c: FilterCondition) => ({\n property: c.property,\n operator: c.operator,\n value: c.value === undefined ? null : c.value,\n });\n const list = filterItems(conds).map(\n (it): Record<string, unknown> => (it.kind === 'cond' ? leaf(it.cond) : { [it.mode]: it.conds.map(leaf) }),\n );\n return isOrMode(conds) ? { or: list } : { and: list };\n}\n\n/** Are two condition lists equivalent for persistence (ignoring ids)? */\nexport function sameConditions(a: FilterCondition[], b: FilterCondition[]): boolean {\n return JSON.stringify(serializeViewFilter(a)) === JSON.stringify(serializeViewFilter(b));\n}\n\n/**\n * Initial values for a row created while conditions are active, so it shows up in the filtered\n * view (Notion behaviour): select is / multi-select contains / checkbox / date on / number = /\n * text is / person contains. Read-only and ambiguous conditions are skipped.\n */\nexport function prefillFromConditions(\n conds: FilterCondition[] | undefined,\n columns: ColumnLike[],\n): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n // OR: satisfying one condition is enough — prefill from the first only. Conditions in an OR\n // group are ambiguous too (any one satisfies it): skipped.\n const plain = (conds ?? []).filter((c) => !(c.group && c.groupConj === 'or'));\n for (const c of isOrMode(conds) ? plain.slice(0, 1) : plain) {\n const column = columns.find((x) => x.name === c.property);\n if (!column || !isConditionActive(c, column) || c.property in out) continue;\n const v = c.value;\n switch (column.type) {\n case 'select':\n case 'status':\n if (c.operator === 'equals') out[c.property] = selectValueToCell(String(v));\n break;\n case 'multi_select':\n case 'person':\n if (c.operator === 'contains') out[c.property] = multiSelectToCell([String(v)]);\n break;\n case 'checkbox':\n out[c.property] = c.operator === 'is_checked';\n break;\n case 'date':\n if (c.operator === 'on' && dayKeyOf(String(v))) out[c.property] = dayKeyOf(String(v));\n break;\n case 'number':\n if (c.operator === 'equals' && Number.isFinite(Number(v))) out[c.property] = Number(v);\n break;\n case 'title':\n if (c.operator === 'equals' || c.operator === 'contains') out[c.property] = toRichText(String(v));\n break;\n case 'text':\n case 'url':\n case 'email':\n case 'phone':\n if (c.operator === 'equals' || c.operator === 'contains') out[c.property] = String(v);\n break;\n default:\n }\n }\n return out;\n}\n\n/** Short human summary of a condition (\"Status is Done\", \"Due within past 7 days\"). */\nexport function describeCondition(\n cond: FilterCondition,\n column: ColumnLike | undefined,\n /** Title of a related row (relation \"contains\" chips). */\n rowTitle?: (rowId: string) => string | undefined,\n): string {\n if (!column) return cond.property;\n const info = operatorInfo(column.type, cond.operator);\n if (!info) return column.name;\n if (info.input === 'row' && isConditionActive(cond, column))\n return `${column.name} ${info.label} ${rowTitle?.(String(cond.value)) || 'a page'}`;\n if (info.input === 'none') return `${column.name} ${info.label}`;\n if (!isConditionActive(cond, column)) return `${column.name} ${info.label} …`;\n if (info.input === 'days') return `${column.name} ${info.label} ${cond.value} days`;\n if (info.input === 'relative') {\n const r = RELATIVE_DATES.find((d) => d.value === cond.value);\n return `${column.name} is ${r ? r.label.toLowerCase() : cond.value}`;\n }\n if (info.input === 'options') {\n const names = Array.isArray(cond.value) ? cond.value : [String(cond.value)];\n return `${column.name} ${info.label} ${names.join(', ')}`;\n }\n if (info.input === 'date') {\n return `${column.name} ${info.label} ${cellDisplayText(String(cond.value), 'date')}`;\n }\n return `${column.name} ${info.label} ${cond.value}`;\n}\n"],"names":["y","m","_a"],"mappings":"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"}
|