gitextract_qoew7893/ ├── .dockerignore ├── .githooks/ │ ├── commit-msg │ ├── pre-commit │ └── pre-push ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ └── feature_request.yaml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── flutter_build/ │ │ │ └── action.yml │ │ └── flutter_integration_test/ │ │ └── action.yml │ └── workflows/ │ ├── android_ci.yaml.bak │ ├── build_command.yml │ ├── commit_lint.yml │ ├── docker_ci.yml │ ├── flutter_ci.yaml │ ├── ios_ci.yaml │ ├── mobile_ci.yml │ ├── ninja_i18n.yml │ ├── release.yml │ ├── rust_ci.yaml │ ├── rust_coverage.yml │ └── translation_notify.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── ROADMAP.md ├── codemagic.yaml ├── commitlint.config.js ├── doc/ │ ├── CONTRIBUTING.md │ └── roadmap.md ├── frontend/ │ ├── .vscode/ │ │ ├── launch.json │ │ └── tasks.json │ ├── Makefile.toml │ ├── appflowy_flutter/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── Makefile │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── app/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ ├── debug/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ └── binding.h │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── app_flowy/ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ ├── launcher_background.xml │ │ │ │ │ │ └── launcher_foreground.xml │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ │ ├── values/ │ │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values-night/ │ │ │ │ │ └── styles.xml │ │ │ │ └── profile/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle/ │ │ │ │ └── wrapper/ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ └── settings.gradle │ │ ├── assets/ │ │ │ ├── built_in_prompts.json │ │ │ ├── fonts/ │ │ │ │ └── .gitkeep │ │ │ ├── google_fonts/ │ │ │ │ ├── Poppins/ │ │ │ │ │ └── OFL.txt │ │ │ │ └── Roboto_Mono/ │ │ │ │ └── LICENSE.txt │ │ │ ├── icons/ │ │ │ │ └── icons.json │ │ │ ├── template/ │ │ │ │ ├── readme.afdoc │ │ │ │ └── readme.json │ │ │ ├── test/ │ │ │ │ └── workspaces/ │ │ │ │ ├── database/ │ │ │ │ │ ├── v020.afdb │ │ │ │ │ └── v069.afdb │ │ │ │ └── markdowns/ │ │ │ │ ├── markdown_with_table.md │ │ │ │ ├── test1.md │ │ │ │ └── test2.md │ │ │ └── translations/ │ │ │ └── mr-IN.json │ │ ├── build.yaml │ │ ├── cargokit_options.yaml │ │ ├── dart_dependency_validator.yaml │ │ ├── dev.env │ │ ├── devtools_options.yaml │ │ ├── distribute_options.yaml │ │ ├── dsa_pub.pem │ │ ├── integration_test/ │ │ │ ├── desktop/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board_add_row_test.dart │ │ │ │ │ ├── board_field_test.dart │ │ │ │ │ ├── board_group_test.dart │ │ │ │ │ ├── board_hide_groups_test.dart │ │ │ │ │ ├── board_row_test.dart │ │ │ │ │ └── board_test_runner.dart │ │ │ │ ├── chat/ │ │ │ │ │ └── chat_page_test.dart │ │ │ │ ├── cloud/ │ │ │ │ │ ├── cloud_runner.dart │ │ │ │ │ ├── data_migration/ │ │ │ │ │ │ ├── anon_user_data_migration_test.dart │ │ │ │ │ │ └── data_migration_test_runner.dart │ │ │ │ │ ├── database/ │ │ │ │ │ │ ├── database_image_test.dart │ │ │ │ │ │ └── database_test_runner.dart │ │ │ │ │ ├── document/ │ │ │ │ │ │ ├── document_ai_writer_test.dart │ │ │ │ │ │ ├── document_copy_link_to_block_test.dart │ │ │ │ │ │ ├── document_option_actions_test.dart │ │ │ │ │ │ ├── document_publish_test.dart │ │ │ │ │ │ └── document_test_runner.dart │ │ │ │ │ ├── set_env.dart │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ ├── sidebar_icon_test.dart │ │ │ │ │ │ ├── sidebar_move_page_test.dart │ │ │ │ │ │ ├── sidebar_rename_untitled_test.dart │ │ │ │ │ │ └── sidebar_search_test.dart │ │ │ │ │ ├── uncategorized/ │ │ │ │ │ │ ├── appflowy_cloud_auth_test.dart │ │ │ │ │ │ ├── document_sync_test.dart │ │ │ │ │ │ ├── uncategorized_test_runner.dart │ │ │ │ │ │ └── user_setting_sync_test.dart │ │ │ │ │ └── workspace/ │ │ │ │ │ ├── change_name_and_icon_test.dart │ │ │ │ │ ├── collaborative_workspace_test.dart │ │ │ │ │ ├── share_menu_test.dart │ │ │ │ │ ├── tabs_test.dart │ │ │ │ │ ├── workspace_icon_test.dart │ │ │ │ │ ├── workspace_settings_test.dart │ │ │ │ │ └── workspace_test_runner.dart │ │ │ │ ├── command_palette/ │ │ │ │ │ ├── command_palette_test.dart │ │ │ │ │ ├── command_palette_test_runner.dart │ │ │ │ │ ├── folder_search_test.dart │ │ │ │ │ └── recent_history_test.dart │ │ │ │ ├── database/ │ │ │ │ │ ├── database_calendar_test.dart │ │ │ │ │ ├── database_cell_test.dart │ │ │ │ │ ├── database_field_settings_test.dart │ │ │ │ │ ├── database_field_test.dart │ │ │ │ │ ├── database_filter_test.dart │ │ │ │ │ ├── database_icon_test.dart │ │ │ │ │ ├── database_media_test.dart │ │ │ │ │ ├── database_reminder_test.dart │ │ │ │ │ ├── database_row_cover_test.dart │ │ │ │ │ ├── database_row_page_test.dart │ │ │ │ │ ├── database_setting_test.dart │ │ │ │ │ ├── database_share_test.dart │ │ │ │ │ ├── database_sort_test.dart │ │ │ │ │ ├── database_test_runner_1.dart │ │ │ │ │ ├── database_test_runner_2.dart │ │ │ │ │ └── database_view_test.dart │ │ │ │ ├── document/ │ │ │ │ │ ├── document_alignment_test.dart │ │ │ │ │ ├── document_app_lifecycle_test.dart │ │ │ │ │ ├── document_block_option_test.dart │ │ │ │ │ ├── document_callout_test.dart │ │ │ │ │ ├── document_codeblock_paste_test.dart │ │ │ │ │ ├── document_copy_and_paste_test.dart │ │ │ │ │ ├── document_create_and_delete_test.dart │ │ │ │ │ ├── document_customer_test.dart │ │ │ │ │ ├── document_deletion_test.dart │ │ │ │ │ ├── document_find_menu_test.dart │ │ │ │ │ ├── document_inline_page_reference_test.dart │ │ │ │ │ ├── document_inline_sub_page_test.dart │ │ │ │ │ ├── document_link_preview_test.dart │ │ │ │ │ ├── document_more_actions_test.dart │ │ │ │ │ ├── document_option_action_test.dart │ │ │ │ │ ├── document_selection_test.dart │ │ │ │ │ ├── document_shortcuts_test.dart │ │ │ │ │ ├── document_sub_page_test.dart │ │ │ │ │ ├── document_test_runner_1.dart │ │ │ │ │ ├── document_test_runner_2.dart │ │ │ │ │ ├── document_test_runner_3.dart │ │ │ │ │ ├── document_test_runner_4.dart │ │ │ │ │ ├── document_text_direction_test.dart │ │ │ │ │ ├── document_title_test.dart │ │ │ │ │ ├── document_toolbar_test.dart │ │ │ │ │ ├── document_with_cover_image_test.dart │ │ │ │ │ ├── document_with_database_test.dart │ │ │ │ │ ├── document_with_date_reminder_test.dart │ │ │ │ │ ├── document_with_file_test.dart │ │ │ │ │ ├── document_with_image_block_test.dart │ │ │ │ │ ├── document_with_inline_math_equation_test.dart │ │ │ │ │ ├── document_with_inline_page_test.dart │ │ │ │ │ ├── document_with_link_test.dart │ │ │ │ │ ├── document_with_multi_image_block_test.dart │ │ │ │ │ ├── document_with_outline_block_test.dart │ │ │ │ │ ├── document_with_simple_table_test.dart │ │ │ │ │ ├── document_with_toggle_heading_block_test.dart │ │ │ │ │ ├── document_with_toggle_list_test.dart │ │ │ │ │ └── edit_document_test.dart │ │ │ │ ├── first_test/ │ │ │ │ │ └── first_test.dart │ │ │ │ ├── grid/ │ │ │ │ │ ├── grid_calculations_test.dart │ │ │ │ │ ├── grid_edit_row_test.dart │ │ │ │ │ ├── grid_filter_and_sort_test.dart │ │ │ │ │ ├── grid_reopen_test.dart │ │ │ │ │ ├── grid_reorder_row_test.dart │ │ │ │ │ ├── grid_row_test.dart │ │ │ │ │ ├── grid_test_extensions.dart │ │ │ │ │ └── grid_test_runner_1.dart │ │ │ │ ├── reminder/ │ │ │ │ │ └── document_reminder_test.dart │ │ │ │ ├── settings/ │ │ │ │ │ ├── notifications_settings_test.dart │ │ │ │ │ ├── settings_billing_test.dart │ │ │ │ │ ├── settings_runner.dart │ │ │ │ │ ├── shortcuts_settings_test.dart │ │ │ │ │ └── sign_in_page_settings_test.dart │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── rename_current_item_test.dart │ │ │ │ │ ├── sidebar_expand_test.dart │ │ │ │ │ ├── sidebar_favorites_test.dart │ │ │ │ │ ├── sidebar_icon_test.dart │ │ │ │ │ ├── sidebar_recent_icon_test.dart │ │ │ │ │ ├── sidebar_test.dart │ │ │ │ │ ├── sidebar_test_runner.dart │ │ │ │ │ └── sidebar_view_item_test.dart │ │ │ │ └── uncategorized/ │ │ │ │ ├── board_test.dart │ │ │ │ ├── code_block_language_selector_test.dart │ │ │ │ ├── emoji_shortcut_test.dart │ │ │ │ ├── empty_document_test.dart │ │ │ │ ├── hotkeys_test.dart │ │ │ │ ├── import_files_test.dart │ │ │ │ ├── language_test.dart │ │ │ │ ├── share_markdown_test.dart │ │ │ │ ├── switch_folder_test.dart │ │ │ │ ├── tabs_test.dart │ │ │ │ ├── uncategorized_test_runner_1.dart │ │ │ │ └── zoom_in_out_test.dart │ │ │ ├── desktop_runner_1.dart │ │ │ ├── desktop_runner_2.dart │ │ │ ├── desktop_runner_3.dart │ │ │ ├── desktop_runner_4.dart │ │ │ ├── desktop_runner_5.dart │ │ │ ├── desktop_runner_6.dart │ │ │ ├── desktop_runner_7.dart │ │ │ ├── desktop_runner_8.dart │ │ │ ├── desktop_runner_9.dart │ │ │ ├── mobile/ │ │ │ │ ├── cloud/ │ │ │ │ │ ├── cloud_runner.dart │ │ │ │ │ ├── document/ │ │ │ │ │ │ ├── publish_test.dart │ │ │ │ │ │ └── share_link_test.dart │ │ │ │ │ ├── space/ │ │ │ │ │ │ └── space_test.dart │ │ │ │ │ └── workspace/ │ │ │ │ │ └── workspace_operations_test.dart │ │ │ │ ├── document/ │ │ │ │ │ ├── at_menu_test.dart │ │ │ │ │ ├── document_test_runner.dart │ │ │ │ │ ├── icon_test.dart │ │ │ │ │ ├── page_style_test.dart │ │ │ │ │ ├── plus_menu_test.dart │ │ │ │ │ ├── simple_table_test.dart │ │ │ │ │ ├── slash_menu_test.dart │ │ │ │ │ ├── title_test.dart │ │ │ │ │ └── toolbar_test.dart │ │ │ │ ├── home_page/ │ │ │ │ │ └── create_new_page_test.dart │ │ │ │ ├── search/ │ │ │ │ │ └── search_test.dart │ │ │ │ ├── settings/ │ │ │ │ │ ├── default_text_direction_test.dart │ │ │ │ │ └── scale_factor_test.dart │ │ │ │ └── sign_in/ │ │ │ │ └── anonymous_sign_in_test.dart │ │ │ ├── mobile_runner_1.dart │ │ │ ├── runner.dart │ │ │ └── shared/ │ │ │ ├── ai_test_op.dart │ │ │ ├── auth_operation.dart │ │ │ ├── base.dart │ │ │ ├── common_operations.dart │ │ │ ├── constants.dart │ │ │ ├── data.dart │ │ │ ├── database_test_op.dart │ │ │ ├── dir.dart │ │ │ ├── document_test_operations.dart │ │ │ ├── emoji.dart │ │ │ ├── expectation.dart │ │ │ ├── ime.dart │ │ │ ├── keyboard.dart │ │ │ ├── mock/ │ │ │ │ ├── mock_ai.dart │ │ │ │ ├── mock_file_picker.dart │ │ │ │ └── mock_url_launcher.dart │ │ │ ├── settings.dart │ │ │ ├── util.dart │ │ │ └── workspace.dart │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj/ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ ├── Runner-Bridging-Header.h │ │ │ │ └── Runner.entitlements │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ └── Runner.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── lib/ │ │ │ ├── ai/ │ │ │ │ ├── ai.dart │ │ │ │ ├── service/ │ │ │ │ │ ├── ai_entities.dart │ │ │ │ │ ├── ai_model_state_notifier.dart │ │ │ │ │ ├── ai_prompt_database_selector_cubit.dart │ │ │ │ │ ├── ai_prompt_input_bloc.dart │ │ │ │ │ ├── ai_prompt_selector_cubit.dart │ │ │ │ │ ├── appflowy_ai_service.dart │ │ │ │ │ ├── error.dart │ │ │ │ │ ├── select_model_bloc.dart │ │ │ │ │ └── view_selector_cubit.dart │ │ │ │ └── widgets/ │ │ │ │ ├── ai_prompt_modal/ │ │ │ │ │ ├── ai_prompt_category_list.dart │ │ │ │ │ ├── ai_prompt_database_modal.dart │ │ │ │ │ ├── ai_prompt_modal.dart │ │ │ │ │ ├── ai_prompt_onboarding.dart │ │ │ │ │ ├── ai_prompt_preview.dart │ │ │ │ │ └── ai_prompt_visible_list.dart │ │ │ │ ├── loading_indicator.dart │ │ │ │ ├── prompt_input/ │ │ │ │ │ ├── action_buttons.dart │ │ │ │ │ ├── browse_prompts_button.dart │ │ │ │ │ ├── desktop_prompt_input.dart │ │ │ │ │ ├── file_attachment_list.dart │ │ │ │ │ ├── layout_define.dart │ │ │ │ │ ├── mention_page_bottom_sheet.dart │ │ │ │ │ ├── mention_page_menu.dart │ │ │ │ │ ├── mentioned_page_text_span.dart │ │ │ │ │ ├── predefined_format_buttons.dart │ │ │ │ │ ├── prompt_input_text_controller.dart │ │ │ │ │ ├── select_model_menu.dart │ │ │ │ │ ├── select_sources_bottom_sheet.dart │ │ │ │ │ ├── select_sources_menu.dart │ │ │ │ │ └── send_button.dart │ │ │ │ └── view_selector.dart │ │ │ ├── core/ │ │ │ │ ├── config/ │ │ │ │ │ ├── kv.dart │ │ │ │ │ └── kv_keys.dart │ │ │ │ ├── frameless_window.dart │ │ │ │ ├── helpers/ │ │ │ │ │ ├── helpers.dart │ │ │ │ │ ├── target_platform.dart │ │ │ │ │ └── url_launcher.dart │ │ │ │ ├── network_monitor.dart │ │ │ │ └── notification/ │ │ │ │ ├── document_notification.dart │ │ │ │ ├── folder_notification.dart │ │ │ │ ├── grid_notification.dart │ │ │ │ ├── notification_helper.dart │ │ │ │ ├── search_notification.dart │ │ │ │ └── user_notification.dart │ │ │ ├── date/ │ │ │ │ └── date_service.dart │ │ │ ├── env/ │ │ │ │ ├── backend_env.dart │ │ │ │ ├── cloud_env.dart │ │ │ │ ├── cloud_env_test.dart │ │ │ │ └── env.dart │ │ │ ├── features/ │ │ │ │ ├── page_access_level/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── repositories/ │ │ │ │ │ │ ├── page_access_level_repository.dart │ │ │ │ │ │ └── rust_page_access_level_repository_impl.dart │ │ │ │ │ └── logic/ │ │ │ │ │ ├── page_access_level_bloc.dart │ │ │ │ │ ├── page_access_level_event.dart │ │ │ │ │ └── page_access_level_state.dart │ │ │ │ ├── settings/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ └── user_data_location.dart │ │ │ │ │ │ └── repositories/ │ │ │ │ │ │ ├── rust_settings_repository_impl.dart │ │ │ │ │ │ └── settings_repository.dart │ │ │ │ │ ├── logic/ │ │ │ │ │ │ ├── data_location_bloc.dart │ │ │ │ │ │ ├── data_location_event.dart │ │ │ │ │ │ └── data_location_state.dart │ │ │ │ │ └── settings.dart │ │ │ │ ├── share_tab/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ ├── models.dart │ │ │ │ │ │ │ ├── share_access_level.dart │ │ │ │ │ │ │ ├── share_popover_group_id.dart │ │ │ │ │ │ │ ├── share_role.dart │ │ │ │ │ │ │ ├── share_section_type.dart │ │ │ │ │ │ │ ├── shared_group.dart │ │ │ │ │ │ │ └── shared_user.dart │ │ │ │ │ │ └── repositories/ │ │ │ │ │ │ ├── local_share_with_user_repository_impl.dart │ │ │ │ │ │ ├── rust_share_with_user_repository_impl.dart │ │ │ │ │ │ └── share_with_user_repository.dart │ │ │ │ │ ├── logic/ │ │ │ │ │ │ ├── share_tab_bloc.dart │ │ │ │ │ │ ├── share_tab_event.dart │ │ │ │ │ │ └── share_tab_state.dart │ │ │ │ │ └── presentation/ │ │ │ │ │ ├── share_tab.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── access_level_list_widget.dart │ │ │ │ │ ├── copy_link_widget.dart │ │ │ │ │ ├── edit_access_level_widget.dart │ │ │ │ │ ├── general_access_section.dart │ │ │ │ │ ├── guest_tag.dart │ │ │ │ │ ├── people_with_access_section.dart │ │ │ │ │ ├── share_with_user_widget.dart │ │ │ │ │ ├── shared_group_widget.dart │ │ │ │ │ ├── shared_user_widget.dart │ │ │ │ │ ├── turn_into_member_widget.dart │ │ │ │ │ └── upgrade_to_pro_widget.dart │ │ │ │ ├── shared_section/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── repositories/ │ │ │ │ │ │ ├── local_shared_pages_repository_impl.dart │ │ │ │ │ │ ├── rust_shared_pages_repository_impl.dart │ │ │ │ │ │ └── shared_pages_repository.dart │ │ │ │ │ ├── logic/ │ │ │ │ │ │ ├── shared_section_bloc.dart │ │ │ │ │ │ ├── shared_section_event.dart │ │ │ │ │ │ └── shared_section_state.dart │ │ │ │ │ ├── models/ │ │ │ │ │ │ └── shared_page.dart │ │ │ │ │ └── presentation/ │ │ │ │ │ ├── m_shared_section.dart │ │ │ │ │ ├── shared_section.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── m_shared_page_list.dart │ │ │ │ │ ├── m_shared_section_header.dart │ │ │ │ │ ├── refresh_button.dart │ │ │ │ │ ├── shared_page_actions_button.dart │ │ │ │ │ ├── shared_page_list.dart │ │ │ │ │ ├── shared_section_empty.dart │ │ │ │ │ ├── shared_section_error.dart │ │ │ │ │ ├── shared_section_header.dart │ │ │ │ │ └── shared_section_loading.dart │ │ │ │ ├── util/ │ │ │ │ │ └── extensions.dart │ │ │ │ ├── view_management/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── logic/ │ │ │ │ │ ├── view_event.dart │ │ │ │ │ ├── view_management_bloc.dart │ │ │ │ │ └── view_state.dart │ │ │ │ └── workspace/ │ │ │ │ ├── data/ │ │ │ │ │ └── repositories/ │ │ │ │ │ ├── rust_workspace_repository_impl.dart │ │ │ │ │ └── workspace_repository.dart │ │ │ │ └── logic/ │ │ │ │ ├── workspace_bloc.dart │ │ │ │ ├── workspace_event.dart │ │ │ │ └── workspace_state.dart │ │ │ ├── flutter/ │ │ │ │ └── af_dropdown_menu.dart │ │ │ ├── main.dart │ │ │ ├── mobile/ │ │ │ │ ├── application/ │ │ │ │ │ ├── base/ │ │ │ │ │ │ └── mobile_view_page_bloc.dart │ │ │ │ │ ├── mobile_router.dart │ │ │ │ │ ├── notification/ │ │ │ │ │ │ └── notification_reminder_bloc.dart │ │ │ │ │ ├── page_style/ │ │ │ │ │ │ └── document_page_style_bloc.dart │ │ │ │ │ ├── recent/ │ │ │ │ │ │ └── recent_view_bloc.dart │ │ │ │ │ └── user_profile/ │ │ │ │ │ └── user_profile_bloc.dart │ │ │ │ └── presentation/ │ │ │ │ ├── base/ │ │ │ │ │ ├── animated_gesture.dart │ │ │ │ │ ├── app_bar/ │ │ │ │ │ │ ├── app_bar.dart │ │ │ │ │ │ └── app_bar_actions.dart │ │ │ │ │ ├── flowy_search_text_field.dart │ │ │ │ │ ├── mobile_view_page.dart │ │ │ │ │ ├── option_color_list.dart │ │ │ │ │ ├── type_option_menu_item.dart │ │ │ │ │ └── view_page/ │ │ │ │ │ ├── app_bar_buttons.dart │ │ │ │ │ └── more_bottom_sheet.dart │ │ │ │ ├── bottom_sheet/ │ │ │ │ │ ├── bottom_sheet.dart │ │ │ │ │ ├── bottom_sheet_action_widget.dart │ │ │ │ │ ├── bottom_sheet_add_new_page.dart │ │ │ │ │ ├── bottom_sheet_block_action_widget.dart │ │ │ │ │ ├── bottom_sheet_buttons.dart │ │ │ │ │ ├── bottom_sheet_drag_handler.dart │ │ │ │ │ ├── bottom_sheet_edit_link_widget.dart │ │ │ │ │ ├── bottom_sheet_header.dart │ │ │ │ │ ├── bottom_sheet_media_upload.dart │ │ │ │ │ ├── bottom_sheet_rename_widget.dart │ │ │ │ │ ├── bottom_sheet_view_item.dart │ │ │ │ │ ├── bottom_sheet_view_item_body.dart │ │ │ │ │ ├── bottom_sheet_view_page.dart │ │ │ │ │ ├── default_mobile_action_pane.dart │ │ │ │ │ ├── show_mobile_bottom_sheet.dart │ │ │ │ │ └── show_transition_bottom_sheet.dart │ │ │ │ ├── chat/ │ │ │ │ │ └── mobile_chat_screen.dart │ │ │ │ ├── database/ │ │ │ │ │ ├── board/ │ │ │ │ │ │ ├── board.dart │ │ │ │ │ │ ├── mobile_board_page.dart │ │ │ │ │ │ ├── mobile_board_screen.dart │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ ├── group_card_header.dart │ │ │ │ │ │ ├── mobile_board_trailing.dart │ │ │ │ │ │ ├── mobile_hidden_groups_column.dart │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ ├── card/ │ │ │ │ │ │ ├── card.dart │ │ │ │ │ │ ├── card_detail/ │ │ │ │ │ │ │ ├── mobile_card_detail_screen.dart │ │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ │ ├── mobile_create_field_button.dart │ │ │ │ │ │ │ ├── mobile_row_property_list.dart │ │ │ │ │ │ │ ├── option_text_field.dart │ │ │ │ │ │ │ ├── row_page_button.dart │ │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ │ └── mobile_card_content.dart │ │ │ │ │ ├── date_picker/ │ │ │ │ │ │ └── mobile_date_picker_screen.dart │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── mobile_create_field_screen.dart │ │ │ │ │ │ ├── mobile_edit_field_screen.dart │ │ │ │ │ │ ├── mobile_field_bottom_sheets.dart │ │ │ │ │ │ ├── mobile_field_picker_list.dart │ │ │ │ │ │ ├── mobile_full_field_editor.dart │ │ │ │ │ │ └── mobile_quick_field_editor.dart │ │ │ │ │ ├── mobile_calendar_events_empty.dart │ │ │ │ │ ├── mobile_calendar_events_screen.dart │ │ │ │ │ ├── mobile_calendar_screen.dart │ │ │ │ │ ├── mobile_grid_screen.dart │ │ │ │ │ └── view/ │ │ │ │ │ ├── database_field_list.dart │ │ │ │ │ ├── database_filter_bottom_sheet.dart │ │ │ │ │ ├── database_filter_bottom_sheet_cubit.dart │ │ │ │ │ ├── database_filter_condition_list.dart │ │ │ │ │ ├── database_sort_bottom_sheet.dart │ │ │ │ │ ├── database_sort_bottom_sheet_cubit.dart │ │ │ │ │ ├── database_view_layout.dart │ │ │ │ │ ├── database_view_list.dart │ │ │ │ │ ├── database_view_quick_actions.dart │ │ │ │ │ └── edit_database_view_screen.dart │ │ │ │ ├── editor/ │ │ │ │ │ └── mobile_editor_screen.dart │ │ │ │ ├── favorite/ │ │ │ │ │ ├── mobile_favorite_folder.dart │ │ │ │ │ └── mobile_favorite_page.dart │ │ │ │ ├── home/ │ │ │ │ │ ├── favorite_folder/ │ │ │ │ │ │ ├── favorite_space.dart │ │ │ │ │ │ ├── mobile_home_favorite_folder.dart │ │ │ │ │ │ └── mobile_home_favorite_folder_header.dart │ │ │ │ │ ├── home.dart │ │ │ │ │ ├── home_space/ │ │ │ │ │ │ └── home_space.dart │ │ │ │ │ ├── mobile_folders.dart │ │ │ │ │ ├── mobile_home_page.dart │ │ │ │ │ ├── mobile_home_page_header.dart │ │ │ │ │ ├── mobile_home_setting_page.dart │ │ │ │ │ ├── mobile_home_trash_page.dart │ │ │ │ │ ├── recent_folder/ │ │ │ │ │ │ ├── mobile_home_recent_views.dart │ │ │ │ │ │ ├── mobile_recent_view.dart │ │ │ │ │ │ └── recent_space.dart │ │ │ │ │ ├── section_folder/ │ │ │ │ │ │ ├── mobile_home_section_folder.dart │ │ │ │ │ │ └── mobile_home_section_folder_header.dart │ │ │ │ │ ├── setting/ │ │ │ │ │ │ └── settings_popup_menu.dart │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── empty_placeholder.dart │ │ │ │ │ │ └── mobile_page_card.dart │ │ │ │ │ ├── space/ │ │ │ │ │ │ ├── constants.dart │ │ │ │ │ │ ├── manage_space_widget.dart │ │ │ │ │ │ ├── mobile_space.dart │ │ │ │ │ │ ├── mobile_space_header.dart │ │ │ │ │ │ ├── mobile_space_menu.dart │ │ │ │ │ │ ├── space_menu_bottom_sheet.dart │ │ │ │ │ │ ├── space_permission_bottom_sheet.dart │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ ├── tab/ │ │ │ │ │ │ ├── _round_underline_tab_indicator.dart │ │ │ │ │ │ ├── _tab_bar.dart │ │ │ │ │ │ ├── ai_bubble_button.dart │ │ │ │ │ │ ├── mobile_space_tab.dart │ │ │ │ │ │ └── space_order_bloc.dart │ │ │ │ │ └── workspaces/ │ │ │ │ │ ├── create_workspace_menu.dart │ │ │ │ │ ├── workspace_menu_bottom_sheet.dart │ │ │ │ │ └── workspace_more_options.dart │ │ │ │ ├── inline_actions/ │ │ │ │ │ ├── mobile_inline_actions_handler.dart │ │ │ │ │ ├── mobile_inline_actions_menu.dart │ │ │ │ │ └── mobile_inline_actions_menu_group.dart │ │ │ │ ├── mobile_bottom_navigation_bar.dart │ │ │ │ ├── notifications/ │ │ │ │ │ ├── mobile_notifications_multiple_select_page.dart │ │ │ │ │ ├── mobile_notifications_page.dart │ │ │ │ │ ├── mobile_notifications_screen.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── color.dart │ │ │ │ │ ├── empty.dart │ │ │ │ │ ├── header.dart │ │ │ │ │ ├── mobile_notification_tab_bar.dart │ │ │ │ │ ├── multi_select_notification_item.dart │ │ │ │ │ ├── notification_item.dart │ │ │ │ │ ├── settings_popup_menu.dart │ │ │ │ │ ├── shared.dart │ │ │ │ │ ├── slide_actions.dart │ │ │ │ │ ├── tab.dart │ │ │ │ │ ├── tab_bar.dart │ │ │ │ │ └── widgets.dart │ │ │ │ ├── page_item/ │ │ │ │ │ ├── mobile_slide_action_button.dart │ │ │ │ │ ├── mobile_view_item.dart │ │ │ │ │ └── mobile_view_item_add_button.dart │ │ │ │ ├── presentation.dart │ │ │ │ ├── root_placeholder_page.dart │ │ │ │ ├── search/ │ │ │ │ │ ├── mobile_search_ask_ai_entrance.dart │ │ │ │ │ ├── mobile_search_cell.dart │ │ │ │ │ ├── mobile_search_icon.dart │ │ │ │ │ ├── mobile_search_page.dart │ │ │ │ │ ├── mobile_search_reference_bottom_sheet.dart │ │ │ │ │ ├── mobile_search_result.dart │ │ │ │ │ ├── mobile_search_summary_cell.dart │ │ │ │ │ ├── mobile_search_textfield.dart │ │ │ │ │ ├── mobile_view_ancestors.dart │ │ │ │ │ └── view_ancestor_cache.dart │ │ │ │ ├── selection_menu/ │ │ │ │ │ ├── mobile_selection_menu.dart │ │ │ │ │ ├── mobile_selection_menu_item.dart │ │ │ │ │ ├── mobile_selection_menu_item_widget.dart │ │ │ │ │ ├── mobile_selection_menu_widget.dart │ │ │ │ │ └── slash_keyboard_service_interceptor.dart │ │ │ │ ├── setting/ │ │ │ │ │ ├── about/ │ │ │ │ │ │ ├── about.dart │ │ │ │ │ │ └── about_setting_group.dart │ │ │ │ │ ├── ai/ │ │ │ │ │ │ └── ai_settings_group.dart │ │ │ │ │ ├── appearance/ │ │ │ │ │ │ ├── appearance_setting_group.dart │ │ │ │ │ │ ├── rtl_setting.dart │ │ │ │ │ │ ├── text_scale_setting.dart │ │ │ │ │ │ └── theme_setting.dart │ │ │ │ │ ├── cloud/ │ │ │ │ │ │ ├── appflowy_cloud_page.dart │ │ │ │ │ │ └── cloud_setting_group.dart │ │ │ │ │ ├── font/ │ │ │ │ │ │ ├── font_picker_screen.dart │ │ │ │ │ │ └── font_setting.dart │ │ │ │ │ ├── language/ │ │ │ │ │ │ └── language_picker_screen.dart │ │ │ │ │ ├── language_setting_group.dart │ │ │ │ │ ├── launch_settings_page.dart │ │ │ │ │ ├── notifications_setting_group.dart │ │ │ │ │ ├── personal_info/ │ │ │ │ │ │ ├── edit_username_bottom_sheet.dart │ │ │ │ │ │ ├── personal_info.dart │ │ │ │ │ │ └── personal_info_setting_group.dart │ │ │ │ │ ├── self_host/ │ │ │ │ │ │ └── self_host_bottom_sheet.dart │ │ │ │ │ ├── self_host_setting_group.dart │ │ │ │ │ ├── setting.dart │ │ │ │ │ ├── support_setting_group.dart │ │ │ │ │ ├── user_session_setting_group.dart │ │ │ │ │ ├── widgets/ │ │ │ │ │ │ ├── mobile_setting_group_widget.dart │ │ │ │ │ │ ├── mobile_setting_item_widget.dart │ │ │ │ │ │ ├── mobile_setting_trailing.dart │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ └── workspace/ │ │ │ │ │ ├── add_members_screen.dart │ │ │ │ │ ├── invite_member_by_link.dart │ │ │ │ │ ├── invite_members_screen.dart │ │ │ │ │ ├── member_list.dart │ │ │ │ │ └── workspace_setting_group.dart │ │ │ │ └── widgets/ │ │ │ │ ├── flowy_mobile_option_decorate_box.dart │ │ │ │ ├── flowy_mobile_quick_action_button.dart │ │ │ │ ├── flowy_mobile_search_text_field.dart │ │ │ │ ├── flowy_mobile_state_container.dart │ │ │ │ ├── flowy_option_tile.dart │ │ │ │ ├── navigation_bar_button.dart │ │ │ │ ├── show_flowy_mobile_confirm_dialog.dart │ │ │ │ └── widgets.dart │ │ │ ├── plugins/ │ │ │ │ ├── ai_chat/ │ │ │ │ │ ├── application/ │ │ │ │ │ │ ├── ai_chat_prelude.dart │ │ │ │ │ │ ├── ai_model_switch_listener.dart │ │ │ │ │ │ ├── chat_ai_message_bloc.dart │ │ │ │ │ │ ├── chat_bloc.dart │ │ │ │ │ │ ├── chat_edit_document_service.dart │ │ │ │ │ │ ├── chat_entity.dart │ │ │ │ │ │ ├── chat_input_control_cubit.dart │ │ │ │ │ │ ├── chat_input_file_bloc.dart │ │ │ │ │ │ ├── chat_member_bloc.dart │ │ │ │ │ │ ├── chat_message_handler.dart │ │ │ │ │ │ ├── chat_message_height_manager.dart │ │ │ │ │ │ ├── chat_message_listener.dart │ │ │ │ │ │ ├── chat_message_service.dart │ │ │ │ │ │ ├── chat_message_stream.dart │ │ │ │ │ │ ├── chat_notification.dart │ │ │ │ │ │ ├── chat_select_message_bloc.dart │ │ │ │ │ │ ├── chat_settings_manager.dart │ │ │ │ │ │ ├── chat_stream_manager.dart │ │ │ │ │ │ ├── chat_user_cubit.dart │ │ │ │ │ │ └── chat_user_message_bloc.dart │ │ │ │ │ ├── chat.dart │ │ │ │ │ ├── chat_page.dart │ │ │ │ │ └── presentation/ │ │ │ │ │ ├── animated_chat_list.dart │ │ │ │ │ ├── animated_chat_list_reversed.dart │ │ │ │ │ ├── chat_avatar.dart │ │ │ │ │ ├── chat_editor_style.dart │ │ │ │ │ ├── chat_input/ │ │ │ │ │ │ └── mobile_chat_input.dart │ │ │ │ │ ├── chat_message_selector_banner.dart │ │ │ │ │ ├── chat_page/ │ │ │ │ │ │ ├── chat_animation_list_widget.dart │ │ │ │ │ │ ├── chat_content_page.dart │ │ │ │ │ │ ├── chat_footer.dart │ │ │ │ │ │ ├── chat_message_widget.dart │ │ │ │ │ │ ├── load_chat_message_status_ready.dart │ │ │ │ │ │ └── text_message_widget.dart │ │ │ │ │ ├── chat_related_question.dart │ │ │ │ │ ├── chat_welcome_page.dart │ │ │ │ │ ├── layout_define.dart │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── ai_change_format_bottom_sheet.dart │ │ │ │ │ │ ├── ai_change_model_bottom_sheet.dart │ │ │ │ │ │ ├── ai_markdown_text.dart │ │ │ │ │ │ ├── ai_message_action_bar.dart │ │ │ │ │ │ ├── ai_message_bubble.dart │ │ │ │ │ │ ├── ai_metadata.dart │ │ │ │ │ │ ├── ai_text_message.dart │ │ │ │ │ │ ├── error_text_message.dart │ │ │ │ │ │ ├── message_util.dart │ │ │ │ │ │ ├── user_message_bubble.dart │ │ │ │ │ │ └── user_text_message.dart │ │ │ │ │ ├── scroll_to_bottom.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ └── message_height_calculator.dart │ │ │ │ ├── base/ │ │ │ │ │ ├── color/ │ │ │ │ │ │ ├── color_picker.dart │ │ │ │ │ │ └── color_picker_screen.dart │ │ │ │ │ ├── drag_handler.dart │ │ │ │ │ ├── emoji/ │ │ │ │ │ │ ├── emoji_picker.dart │ │ │ │ │ │ ├── emoji_picker_header.dart │ │ │ │ │ │ ├── emoji_picker_screen.dart │ │ │ │ │ │ └── emoji_text.dart │ │ │ │ │ └── icon/ │ │ │ │ │ └── icon_widget.dart │ │ │ │ ├── blank/ │ │ │ │ │ └── blank.dart │ │ │ │ ├── database/ │ │ │ │ │ ├── application/ │ │ │ │ │ │ ├── calculations/ │ │ │ │ │ │ │ ├── calculation_type_ext.dart │ │ │ │ │ │ │ ├── calculations_listener.dart │ │ │ │ │ │ │ └── calculations_service.dart │ │ │ │ │ │ ├── cell/ │ │ │ │ │ │ │ ├── bloc/ │ │ │ │ │ │ │ │ ├── checkbox_cell_bloc.dart │ │ │ │ │ │ │ │ ├── checklist_cell_bloc.dart │ │ │ │ │ │ │ │ ├── date_cell_bloc.dart │ │ │ │ │ │ │ │ ├── date_cell_editor_bloc.dart │ │ │ │ │ │ │ │ ├── media_cell_bloc.dart │ │ │ │ │ │ │ │ ├── number_cell_bloc.dart │ │ │ │ │ │ │ │ ├── relation_cell_bloc.dart │ │ │ │ │ │ │ │ ├── relation_row_search_bloc.dart │ │ │ │ │ │ │ │ ├── select_option_cell_bloc.dart │ │ │ │ │ │ │ │ ├── select_option_cell_editor_bloc.dart │ │ │ │ │ │ │ │ ├── summary_cell_bloc.dart │ │ │ │ │ │ │ │ ├── summary_row_bloc.dart │ │ │ │ │ │ │ │ ├── text_cell_bloc.dart │ │ │ │ │ │ │ │ ├── time_cell_bloc.dart │ │ │ │ │ │ │ │ ├── timestamp_cell_bloc.dart │ │ │ │ │ │ │ │ ├── translate_cell_bloc.dart │ │ │ │ │ │ │ │ ├── translate_row_bloc.dart │ │ │ │ │ │ │ │ └── url_cell_bloc.dart │ │ │ │ │ │ │ ├── cell_cache.dart │ │ │ │ │ │ │ ├── cell_controller.dart │ │ │ │ │ │ │ ├── cell_controller_builder.dart │ │ │ │ │ │ │ ├── cell_data_loader.dart │ │ │ │ │ │ │ └── cell_data_persistence.dart │ │ │ │ │ │ ├── database_controller.dart │ │ │ │ │ │ ├── defines.dart │ │ │ │ │ │ ├── field/ │ │ │ │ │ │ │ ├── field_cell_bloc.dart │ │ │ │ │ │ │ ├── field_controller.dart │ │ │ │ │ │ │ ├── field_editor_bloc.dart │ │ │ │ │ │ │ ├── field_info.dart │ │ │ │ │ │ │ ├── filter_entities.dart │ │ │ │ │ │ │ ├── sort_entities.dart │ │ │ │ │ │ │ └── type_option/ │ │ │ │ │ │ │ ├── edit_select_option_bloc.dart │ │ │ │ │ │ │ ├── number_format_bloc.dart │ │ │ │ │ │ │ ├── relation_type_option_cubit.dart │ │ │ │ │ │ │ ├── select_option_type_option_bloc.dart │ │ │ │ │ │ │ ├── select_type_option_actions.dart │ │ │ │ │ │ │ ├── translate_type_option_bloc.dart │ │ │ │ │ │ │ └── type_option_data_parser.dart │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ └── layout_bloc.dart │ │ │ │ │ │ ├── row/ │ │ │ │ │ │ │ ├── related_row_detail_bloc.dart │ │ │ │ │ │ │ ├── row_banner_bloc.dart │ │ │ │ │ │ │ ├── row_cache.dart │ │ │ │ │ │ │ ├── row_controller.dart │ │ │ │ │ │ │ ├── row_list.dart │ │ │ │ │ │ │ └── row_service.dart │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ ├── group_bloc.dart │ │ │ │ │ │ │ ├── property_bloc.dart │ │ │ │ │ │ │ ├── setting_listener.dart │ │ │ │ │ │ │ └── setting_service.dart │ │ │ │ │ │ ├── share_bloc.dart │ │ │ │ │ │ ├── sync/ │ │ │ │ │ │ │ ├── database_sync_bloc.dart │ │ │ │ │ │ │ └── database_sync_state_listener.dart │ │ │ │ │ │ ├── tab_bar_bloc.dart │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── view_cache.dart │ │ │ │ │ │ └── view_listener.dart │ │ │ │ │ ├── board/ │ │ │ │ │ │ ├── application/ │ │ │ │ │ │ │ ├── board_actions_bloc.dart │ │ │ │ │ │ │ ├── board_bloc.dart │ │ │ │ │ │ │ └── group_controller.dart │ │ │ │ │ │ ├── board.dart │ │ │ │ │ │ ├── group_ext.dart │ │ │ │ │ │ ├── presentation/ │ │ │ │ │ │ │ ├── board_page.dart │ │ │ │ │ │ │ ├── toolbar/ │ │ │ │ │ │ │ │ └── board_setting_bar.dart │ │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ │ ├── board_checkbox_column_header.dart │ │ │ │ │ │ │ ├── board_column_header.dart │ │ │ │ │ │ │ ├── board_editable_column_header.dart │ │ │ │ │ │ │ ├── board_focus_scope.dart │ │ │ │ │ │ │ ├── board_hidden_groups.dart │ │ │ │ │ │ │ └── board_shortcut_container.dart │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ └── integrate_test/ │ │ │ │ │ │ └── card_test.dart │ │ │ │ │ ├── calendar/ │ │ │ │ │ │ ├── application/ │ │ │ │ │ │ │ ├── calendar_bloc.dart │ │ │ │ │ │ │ ├── calendar_event_editor_bloc.dart │ │ │ │ │ │ │ ├── calendar_setting_bloc.dart │ │ │ │ │ │ │ └── unschedule_event_bloc.dart │ │ │ │ │ │ ├── calendar.dart │ │ │ │ │ │ └── presentation/ │ │ │ │ │ │ ├── calendar_day.dart │ │ │ │ │ │ ├── calendar_event_card.dart │ │ │ │ │ │ ├── calendar_event_editor.dart │ │ │ │ │ │ ├── calendar_page.dart │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ └── sizes.dart │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ ├── calendar_layout_setting.dart │ │ │ │ │ │ └── calendar_setting_bar.dart │ │ │ │ │ ├── domain/ │ │ │ │ │ │ ├── cell_listener.dart │ │ │ │ │ │ ├── cell_service.dart │ │ │ │ │ │ ├── checklist_cell_service.dart │ │ │ │ │ │ ├── database_view_service.dart │ │ │ │ │ │ ├── date_cell_service.dart │ │ │ │ │ │ ├── field_backend_service.dart │ │ │ │ │ │ ├── field_listener.dart │ │ │ │ │ │ ├── field_service.dart │ │ │ │ │ │ ├── field_settings_listener.dart │ │ │ │ │ │ ├── field_settings_service.dart │ │ │ │ │ │ ├── filter_listener.dart │ │ │ │ │ │ ├── filter_service.dart │ │ │ │ │ │ ├── group_listener.dart │ │ │ │ │ │ ├── group_service.dart │ │ │ │ │ │ ├── layout_service.dart │ │ │ │ │ │ ├── layout_setting_listener.dart │ │ │ │ │ │ ├── row_listener.dart │ │ │ │ │ │ ├── row_meta_listener.dart │ │ │ │ │ │ ├── select_option_cell_service.dart │ │ │ │ │ │ ├── sort_listener.dart │ │ │ │ │ │ ├── sort_service.dart │ │ │ │ │ │ └── type_option_service.dart │ │ │ │ │ ├── grid/ │ │ │ │ │ │ ├── application/ │ │ │ │ │ │ │ ├── calculations/ │ │ │ │ │ │ │ │ ├── calculations_bloc.dart │ │ │ │ │ │ │ │ └── field_type_calc_ext.dart │ │ │ │ │ │ │ ├── filter/ │ │ │ │ │ │ │ │ ├── filter_editor_bloc.dart │ │ │ │ │ │ │ │ └── select_option_loader.dart │ │ │ │ │ │ │ ├── grid_accessory_bloc.dart │ │ │ │ │ │ │ ├── grid_bloc.dart │ │ │ │ │ │ │ ├── grid_header_bloc.dart │ │ │ │ │ │ │ ├── row/ │ │ │ │ │ │ │ │ ├── mobile_row_detail_bloc.dart │ │ │ │ │ │ │ │ ├── row_bloc.dart │ │ │ │ │ │ │ │ ├── row_detail_bloc.dart │ │ │ │ │ │ │ │ └── row_document_bloc.dart │ │ │ │ │ │ │ ├── simple_text_filter_bloc.dart │ │ │ │ │ │ │ └── sort/ │ │ │ │ │ │ │ └── sort_editor_bloc.dart │ │ │ │ │ │ ├── grid.dart │ │ │ │ │ │ └── presentation/ │ │ │ │ │ │ ├── grid_page.dart │ │ │ │ │ │ ├── grid_scroll.dart │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ ├── layout.dart │ │ │ │ │ │ │ └── sizes.dart │ │ │ │ │ │ ├── mobile_grid_page.dart │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ ├── calculations/ │ │ │ │ │ │ │ ├── calculate_cell.dart │ │ │ │ │ │ │ ├── calculation_selector.dart │ │ │ │ │ │ │ ├── calculation_type_item.dart │ │ │ │ │ │ │ ├── calculations_row.dart │ │ │ │ │ │ │ └── remove_calculation_button.dart │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ └── type_option_separator.dart │ │ │ │ │ │ ├── filter/ │ │ │ │ │ │ │ ├── choicechip/ │ │ │ │ │ │ │ │ ├── checkbox.dart │ │ │ │ │ │ │ │ ├── checklist.dart │ │ │ │ │ │ │ │ ├── choicechip.dart │ │ │ │ │ │ │ │ ├── date.dart │ │ │ │ │ │ │ │ ├── number.dart │ │ │ │ │ │ │ │ ├── select_option/ │ │ │ │ │ │ │ │ │ ├── condition_list.dart │ │ │ │ │ │ │ │ │ ├── option_list.dart │ │ │ │ │ │ │ │ │ └── select_option.dart │ │ │ │ │ │ │ │ ├── text.dart │ │ │ │ │ │ │ │ ├── time.dart │ │ │ │ │ │ │ │ └── url.dart │ │ │ │ │ │ │ ├── condition_button.dart │ │ │ │ │ │ │ ├── create_filter_list.dart │ │ │ │ │ │ │ ├── disclosure_button.dart │ │ │ │ │ │ │ ├── filter_menu.dart │ │ │ │ │ │ │ └── filter_menu_item.dart │ │ │ │ │ │ ├── footer/ │ │ │ │ │ │ │ └── grid_footer.dart │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ ├── desktop_field_cell.dart │ │ │ │ │ │ │ ├── field_type_extension.dart │ │ │ │ │ │ │ ├── grid_header.dart │ │ │ │ │ │ │ ├── mobile_field_button.dart │ │ │ │ │ │ │ └── mobile_grid_header.dart │ │ │ │ │ │ ├── mobile_fab.dart │ │ │ │ │ │ ├── row/ │ │ │ │ │ │ │ ├── action.dart │ │ │ │ │ │ │ ├── mobile_row.dart │ │ │ │ │ │ │ └── row.dart │ │ │ │ │ │ ├── shortcuts.dart │ │ │ │ │ │ ├── sort/ │ │ │ │ │ │ │ ├── create_sort_list.dart │ │ │ │ │ │ │ ├── order_panel.dart │ │ │ │ │ │ │ ├── sort_choice_button.dart │ │ │ │ │ │ │ ├── sort_editor.dart │ │ │ │ │ │ │ └── sort_menu.dart │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ ├── filter_button.dart │ │ │ │ │ │ ├── grid_setting_bar.dart │ │ │ │ │ │ ├── sort_button.dart │ │ │ │ │ │ └── view_database_button.dart │ │ │ │ │ ├── tab_bar/ │ │ │ │ │ │ ├── desktop/ │ │ │ │ │ │ │ ├── setting_menu.dart │ │ │ │ │ │ │ ├── tab_bar_add_button.dart │ │ │ │ │ │ │ └── tab_bar_header.dart │ │ │ │ │ │ ├── mobile/ │ │ │ │ │ │ │ └── mobile_tab_bar_header.dart │ │ │ │ │ │ └── tab_bar_view.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── card/ │ │ │ │ │ │ ├── card.dart │ │ │ │ │ │ ├── card_bloc.dart │ │ │ │ │ │ └── container/ │ │ │ │ │ │ ├── accessory.dart │ │ │ │ │ │ └── card_container.dart │ │ │ │ │ ├── cell/ │ │ │ │ │ │ ├── card_cell_builder.dart │ │ │ │ │ │ ├── card_cell_skeleton/ │ │ │ │ │ │ │ ├── card_cell.dart │ │ │ │ │ │ │ ├── checkbox_card_cell.dart │ │ │ │ │ │ │ ├── checklist_card_cell.dart │ │ │ │ │ │ │ ├── date_card_cell.dart │ │ │ │ │ │ │ ├── media_card_cell.dart │ │ │ │ │ │ │ ├── number_card_cell.dart │ │ │ │ │ │ │ ├── relation_card_cell.dart │ │ │ │ │ │ │ ├── select_option_card_cell.dart │ │ │ │ │ │ │ ├── summary_card_cell.dart │ │ │ │ │ │ │ ├── text_card_cell.dart │ │ │ │ │ │ │ ├── time_card_cell.dart │ │ │ │ │ │ │ ├── timestamp_card_cell.dart │ │ │ │ │ │ │ ├── translate_card_cell.dart │ │ │ │ │ │ │ └── url_card_cell.dart │ │ │ │ │ │ ├── card_cell_style_maps/ │ │ │ │ │ │ │ ├── calendar_card_cell_style.dart │ │ │ │ │ │ │ ├── desktop_board_card_cell_style.dart │ │ │ │ │ │ │ └── mobile_board_card_cell_style.dart │ │ │ │ │ │ ├── desktop_grid/ │ │ │ │ │ │ │ ├── desktop_grid_checkbox_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_checklist_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_date_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_media_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_number_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_relation_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_select_option_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_summary_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_text_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_time_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_timestamp_cell.dart │ │ │ │ │ │ │ ├── desktop_grid_translate_cell.dart │ │ │ │ │ │ │ └── desktop_grid_url_cell.dart │ │ │ │ │ │ ├── desktop_row_detail/ │ │ │ │ │ │ │ ├── desktop_row_detail_checkbox_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_checklist_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_date_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_media_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_number_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_relation_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_select_option_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_summary_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_text_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_time_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_timestamp_cell.dart │ │ │ │ │ │ │ ├── desktop_row_detail_url_cell.dart │ │ │ │ │ │ │ └── destop_row_detail_translate_cell.dart │ │ │ │ │ │ ├── editable_cell_builder.dart │ │ │ │ │ │ ├── editable_cell_skeleton/ │ │ │ │ │ │ │ ├── checkbox.dart │ │ │ │ │ │ │ ├── checklist.dart │ │ │ │ │ │ │ ├── date.dart │ │ │ │ │ │ │ ├── media.dart │ │ │ │ │ │ │ ├── number.dart │ │ │ │ │ │ │ ├── relation.dart │ │ │ │ │ │ │ ├── select_option.dart │ │ │ │ │ │ │ ├── summary.dart │ │ │ │ │ │ │ ├── text.dart │ │ │ │ │ │ │ ├── time.dart │ │ │ │ │ │ │ ├── timestamp.dart │ │ │ │ │ │ │ ├── translate.dart │ │ │ │ │ │ │ └── url.dart │ │ │ │ │ │ ├── mobile_grid/ │ │ │ │ │ │ │ ├── mobile_grid_checkbox_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_checklist_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_date_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_number_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_relation_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_select_option_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_summary_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_text_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_time_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_timestamp_cell.dart │ │ │ │ │ │ │ ├── mobile_grid_translate_cell.dart │ │ │ │ │ │ │ └── mobile_grid_url_cell.dart │ │ │ │ │ │ └── mobile_row_detail/ │ │ │ │ │ │ ├── mobile_row_detail_checkbox_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_checklist_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_date_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_number_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_relation_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_select_cell_option.dart │ │ │ │ │ │ ├── mobile_row_detail_summary_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_text_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_time_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_timestamp_cell.dart │ │ │ │ │ │ ├── mobile_row_detail_translate_cell.dart │ │ │ │ │ │ └── mobile_row_detail_url_cell.dart │ │ │ │ │ ├── cell_editor/ │ │ │ │ │ │ ├── checklist_cell_editor.dart │ │ │ │ │ │ ├── checklist_cell_textfield.dart │ │ │ │ │ │ ├── checklist_progress_bar.dart │ │ │ │ │ │ ├── date_cell_editor.dart │ │ │ │ │ │ ├── extension.dart │ │ │ │ │ │ ├── media_cell_editor.dart │ │ │ │ │ │ ├── mobile_checklist_cell_editor.dart │ │ │ │ │ │ ├── mobile_media_cell_editor.dart │ │ │ │ │ │ ├── mobile_select_option_editor.dart │ │ │ │ │ │ ├── relation_cell_editor.dart │ │ │ │ │ │ ├── select_option_cell_editor.dart │ │ │ │ │ │ └── select_option_text_field.dart │ │ │ │ │ ├── database_layout_ext.dart │ │ │ │ │ ├── database_view_widget.dart │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── field_editor.dart │ │ │ │ │ │ ├── field_type_list.dart │ │ │ │ │ │ └── type_option_editor/ │ │ │ │ │ │ ├── builder.dart │ │ │ │ │ │ ├── checkbox.dart │ │ │ │ │ │ ├── checklist.dart │ │ │ │ │ │ ├── date/ │ │ │ │ │ │ │ └── date_time_format.dart │ │ │ │ │ │ ├── date.dart │ │ │ │ │ │ ├── media.dart │ │ │ │ │ │ ├── multi_select.dart │ │ │ │ │ │ ├── number.dart │ │ │ │ │ │ ├── relation.dart │ │ │ │ │ │ ├── rich_text.dart │ │ │ │ │ │ ├── select/ │ │ │ │ │ │ │ ├── select_option.dart │ │ │ │ │ │ │ └── select_option_editor.dart │ │ │ │ │ │ ├── single_select.dart │ │ │ │ │ │ ├── summary.dart │ │ │ │ │ │ ├── time.dart │ │ │ │ │ │ ├── timestamp.dart │ │ │ │ │ │ ├── translate.dart │ │ │ │ │ │ └── url.dart │ │ │ │ │ ├── group/ │ │ │ │ │ │ └── database_group.dart │ │ │ │ │ ├── media_file_type_ext.dart │ │ │ │ │ ├── row/ │ │ │ │ │ │ ├── accessory/ │ │ │ │ │ │ │ ├── cell_accessory.dart │ │ │ │ │ │ │ └── cell_shortcuts.dart │ │ │ │ │ │ ├── cells/ │ │ │ │ │ │ │ ├── cell_container.dart │ │ │ │ │ │ │ └── mobile_cell_container.dart │ │ │ │ │ │ ├── relation_row_detail.dart │ │ │ │ │ │ ├── row_action.dart │ │ │ │ │ │ ├── row_banner.dart │ │ │ │ │ │ ├── row_detail.dart │ │ │ │ │ │ ├── row_document.dart │ │ │ │ │ │ └── row_property.dart │ │ │ │ │ ├── setting/ │ │ │ │ │ │ ├── database_layout_selector.dart │ │ │ │ │ │ ├── database_setting_action.dart │ │ │ │ │ │ ├── database_settings_list.dart │ │ │ │ │ │ ├── field_visibility_extension.dart │ │ │ │ │ │ ├── mobile_database_controls.dart │ │ │ │ │ │ ├── setting_button.dart │ │ │ │ │ │ └── setting_property_list.dart │ │ │ │ │ └── share_button.dart │ │ │ │ ├── database_document/ │ │ │ │ │ ├── database_document_page.dart │ │ │ │ │ ├── database_document_plugin.dart │ │ │ │ │ └── presentation/ │ │ │ │ │ ├── database_document_title.dart │ │ │ │ │ └── database_document_title_bloc.dart │ │ │ │ ├── document/ │ │ │ │ │ ├── application/ │ │ │ │ │ │ ├── doc_sync_state_listener.dart │ │ │ │ │ │ ├── document_appearance_cubit.dart │ │ │ │ │ │ ├── document_awareness_metadata.dart │ │ │ │ │ │ ├── document_bloc.dart │ │ │ │ │ │ ├── document_collab_adapter.dart │ │ │ │ │ │ ├── document_collaborators_bloc.dart │ │ │ │ │ │ ├── document_data_pb_extension.dart │ │ │ │ │ │ ├── document_diff.dart │ │ │ │ │ │ ├── document_listener.dart │ │ │ │ │ │ ├── document_rules.dart │ │ │ │ │ │ ├── document_service.dart │ │ │ │ │ │ ├── document_sync_bloc.dart │ │ │ │ │ │ ├── document_validator.dart │ │ │ │ │ │ ├── editor_transaction_adapter.dart │ │ │ │ │ │ └── prelude.dart │ │ │ │ │ ├── document.dart │ │ │ │ │ ├── document_page.dart │ │ │ │ │ └── presentation/ │ │ │ │ │ ├── banner.dart │ │ │ │ │ ├── collaborator_avatar_stack.dart │ │ │ │ │ ├── compact_mode_event.dart │ │ │ │ │ ├── document_collaborators.dart │ │ │ │ │ ├── editor_configuration.dart │ │ │ │ │ ├── editor_drop_handler.dart │ │ │ │ │ ├── editor_drop_manager.dart │ │ │ │ │ ├── editor_notification.dart │ │ │ │ │ ├── editor_page.dart │ │ │ │ │ ├── editor_plugins/ │ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ │ ├── block_action_add_button.dart │ │ │ │ │ │ │ ├── block_action_button.dart │ │ │ │ │ │ │ ├── block_action_list.dart │ │ │ │ │ │ │ ├── block_action_option_button.dart │ │ │ │ │ │ │ ├── block_action_option_cubit.dart │ │ │ │ │ │ │ ├── drag_to_reorder/ │ │ │ │ │ │ │ │ ├── draggable_option_button.dart │ │ │ │ │ │ │ │ ├── draggable_option_button_feedback.dart │ │ │ │ │ │ │ │ ├── option_button.dart │ │ │ │ │ │ │ │ ├── util.dart │ │ │ │ │ │ │ │ └── visual_drag_area.dart │ │ │ │ │ │ │ ├── mobile_block_action_buttons.dart │ │ │ │ │ │ │ └── option/ │ │ │ │ │ │ │ ├── align_option_action.dart │ │ │ │ │ │ │ ├── color_option_action.dart │ │ │ │ │ │ │ ├── depth_option_action.dart │ │ │ │ │ │ │ ├── divider_option_action.dart │ │ │ │ │ │ │ ├── option_actions.dart │ │ │ │ │ │ │ └── turn_into_option_action.dart │ │ │ │ │ │ ├── ai/ │ │ │ │ │ │ │ ├── ai_writer_block_component.dart │ │ │ │ │ │ │ ├── ai_writer_toolbar_item.dart │ │ │ │ │ │ │ ├── operations/ │ │ │ │ │ │ │ │ ├── ai_writer_block_operations.dart │ │ │ │ │ │ │ │ ├── ai_writer_cubit.dart │ │ │ │ │ │ │ │ ├── ai_writer_entities.dart │ │ │ │ │ │ │ │ └── ai_writer_node_extension.dart │ │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ │ ├── ai_writer_gesture_detector.dart │ │ │ │ │ │ │ ├── ai_writer_prompt_input_more_button.dart │ │ │ │ │ │ │ ├── ai_writer_scroll_wrapper.dart │ │ │ │ │ │ │ └── ai_writer_suggestion_actions.dart │ │ │ │ │ │ ├── align_toolbar_item/ │ │ │ │ │ │ │ ├── align_toolbar_item.dart │ │ │ │ │ │ │ └── custom_text_align_command.dart │ │ │ │ │ │ ├── background_color/ │ │ │ │ │ │ │ └── theme_background_color.dart │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── backtick_character_command.dart │ │ │ │ │ │ │ ├── build_context_extension.dart │ │ │ │ │ │ │ ├── built_in_page_widget.dart │ │ │ │ │ │ │ ├── cover_title_command.dart │ │ │ │ │ │ │ ├── emoji_picker_button.dart │ │ │ │ │ │ │ ├── font_colors.dart │ │ │ │ │ │ │ ├── format_arrow_character.dart │ │ │ │ │ │ │ ├── insert_page_command.dart │ │ │ │ │ │ │ ├── link_to_page_widget.dart │ │ │ │ │ │ │ ├── markdown_text_robot.dart │ │ │ │ │ │ │ ├── page_reference_commands.dart │ │ │ │ │ │ │ ├── selectable_item_list_menu.dart │ │ │ │ │ │ │ ├── selectable_svg_widget.dart │ │ │ │ │ │ │ ├── string_extension.dart │ │ │ │ │ │ │ ├── text_robot.dart │ │ │ │ │ │ │ └── toolbar_extension.dart │ │ │ │ │ │ ├── block_menu/ │ │ │ │ │ │ │ └── block_menu_button.dart │ │ │ │ │ │ ├── block_transaction_handler/ │ │ │ │ │ │ │ └── block_transaction_handler.dart │ │ │ │ │ │ ├── bulleted_list/ │ │ │ │ │ │ │ └── bulleted_list_icon.dart │ │ │ │ │ │ ├── callout/ │ │ │ │ │ │ │ ├── callout_block_component.dart │ │ │ │ │ │ │ └── callout_block_shortcuts.dart │ │ │ │ │ │ ├── code_block/ │ │ │ │ │ │ │ ├── code_block_copy_button.dart │ │ │ │ │ │ │ ├── code_block_language_selector.dart │ │ │ │ │ │ │ ├── code_block_menu_item.dart │ │ │ │ │ │ │ └── code_language_screen.dart │ │ │ │ │ │ ├── columns/ │ │ │ │ │ │ │ ├── simple_column_block_component.dart │ │ │ │ │ │ │ ├── simple_column_block_width_resizer.dart │ │ │ │ │ │ │ ├── simple_column_node_extension.dart │ │ │ │ │ │ │ ├── simple_columns_block_component.dart │ │ │ │ │ │ │ └── simple_columns_block_constant.dart │ │ │ │ │ │ ├── context_menu/ │ │ │ │ │ │ │ └── custom_context_menu.dart │ │ │ │ │ │ ├── copy_and_paste/ │ │ │ │ │ │ │ ├── clipboard_service.dart │ │ │ │ │ │ │ ├── custom_copy_command.dart │ │ │ │ │ │ │ ├── custom_cut_command.dart │ │ │ │ │ │ │ ├── custom_paste_command.dart │ │ │ │ │ │ │ ├── paste_from_block_link.dart │ │ │ │ │ │ │ ├── paste_from_file.dart │ │ │ │ │ │ │ ├── paste_from_html.dart │ │ │ │ │ │ │ ├── paste_from_image.dart │ │ │ │ │ │ │ ├── paste_from_in_app_json.dart │ │ │ │ │ │ │ └── paste_from_plain_text.dart │ │ │ │ │ │ ├── cover/ │ │ │ │ │ │ │ ├── document_immersive_cover.dart │ │ │ │ │ │ │ └── document_immersive_cover_bloc.dart │ │ │ │ │ │ ├── database/ │ │ │ │ │ │ │ ├── database_view_block_component.dart │ │ │ │ │ │ │ ├── inline_database_menu_item.dart │ │ │ │ │ │ │ └── referenced_database_menu_item.dart │ │ │ │ │ │ ├── delta/ │ │ │ │ │ │ │ └── text_delta_extension.dart │ │ │ │ │ │ ├── desktop_toolbar/ │ │ │ │ │ │ │ ├── color_picker.dart │ │ │ │ │ │ │ ├── desktop_floating_toolbar.dart │ │ │ │ │ │ │ ├── link/ │ │ │ │ │ │ │ │ ├── link_create_menu.dart │ │ │ │ │ │ │ │ ├── link_edit_menu.dart │ │ │ │ │ │ │ │ ├── link_extension.dart │ │ │ │ │ │ │ │ ├── link_hover_menu.dart │ │ │ │ │ │ │ │ ├── link_replace_menu.dart │ │ │ │ │ │ │ │ ├── link_search_text_field.dart │ │ │ │ │ │ │ │ └── link_styles.dart │ │ │ │ │ │ │ └── toolbar_animation.dart │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ └── error_block_component_builder.dart │ │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ │ └── flowy_tint_extension.dart │ │ │ │ │ │ ├── file/ │ │ │ │ │ │ │ ├── file_block.dart │ │ │ │ │ │ │ ├── file_block_component.dart │ │ │ │ │ │ │ ├── file_block_menu.dart │ │ │ │ │ │ │ ├── file_selection_menu.dart │ │ │ │ │ │ │ ├── file_upload_menu.dart │ │ │ │ │ │ │ ├── file_util.dart │ │ │ │ │ │ │ └── mobile_file_upload_menu.dart │ │ │ │ │ │ ├── find_and_replace/ │ │ │ │ │ │ │ └── find_and_replace_menu.dart │ │ │ │ │ │ ├── font/ │ │ │ │ │ │ │ └── customize_font_toolbar_item.dart │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ ├── cover_editor.dart │ │ │ │ │ │ │ ├── cover_editor_bloc.dart │ │ │ │ │ │ │ ├── cover_title.dart │ │ │ │ │ │ │ ├── custom_cover_picker.dart │ │ │ │ │ │ │ ├── custom_cover_picker_bloc.dart │ │ │ │ │ │ │ ├── desktop_cover.dart │ │ │ │ │ │ │ ├── document_cover_widget.dart │ │ │ │ │ │ │ └── emoji_icon_widget.dart │ │ │ │ │ │ ├── heading/ │ │ │ │ │ │ │ └── heading_toolbar_item.dart │ │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ │ └── editor_i18n.dart │ │ │ │ │ │ ├── image/ │ │ │ │ │ │ │ ├── common.dart │ │ │ │ │ │ │ ├── custom_image_block_component/ │ │ │ │ │ │ │ │ ├── custom_image_block_component.dart │ │ │ │ │ │ │ │ ├── image_menu.dart │ │ │ │ │ │ │ │ └── unsupport_image_widget.dart │ │ │ │ │ │ │ ├── image_picker_screen.dart │ │ │ │ │ │ │ ├── image_placeholder.dart │ │ │ │ │ │ │ ├── image_selection_menu.dart │ │ │ │ │ │ │ ├── image_util.dart │ │ │ │ │ │ │ ├── mobile_image_toolbar_item.dart │ │ │ │ │ │ │ ├── multi_image_block_component/ │ │ │ │ │ │ │ │ ├── image_render.dart │ │ │ │ │ │ │ │ ├── layouts/ │ │ │ │ │ │ │ │ │ ├── image_browser_layout.dart │ │ │ │ │ │ │ │ │ ├── image_grid_layout.dart │ │ │ │ │ │ │ │ │ └── multi_image_layouts.dart │ │ │ │ │ │ │ │ ├── multi_image_block_component.dart │ │ │ │ │ │ │ │ ├── multi_image_menu.dart │ │ │ │ │ │ │ │ └── multi_image_placeholder.dart │ │ │ │ │ │ │ ├── resizeable_image.dart │ │ │ │ │ │ │ ├── unsplash_image_widget.dart │ │ │ │ │ │ │ └── upload_image_menu/ │ │ │ │ │ │ │ ├── upload_image_menu.dart │ │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ │ ├── embed_image_url_widget.dart │ │ │ │ │ │ │ └── upload_image_file_widget.dart │ │ │ │ │ │ ├── inline_math_equation/ │ │ │ │ │ │ │ ├── inline_math_equation.dart │ │ │ │ │ │ │ └── inline_math_equation_toolbar_item.dart │ │ │ │ │ │ ├── keyboard_interceptor/ │ │ │ │ │ │ │ └── keyboard_interceptor.dart │ │ │ │ │ │ ├── link_embed/ │ │ │ │ │ │ │ ├── link_embed_block_component.dart │ │ │ │ │ │ │ └── link_embed_menu.dart │ │ │ │ │ │ ├── link_preview/ │ │ │ │ │ │ │ ├── custom_link_parser.dart │ │ │ │ │ │ │ ├── custom_link_preview.dart │ │ │ │ │ │ │ ├── custom_link_preview_block_component.dart │ │ │ │ │ │ │ ├── default_selectable_mixin.dart │ │ │ │ │ │ │ ├── link_parsers/ │ │ │ │ │ │ │ │ ├── default_parser.dart │ │ │ │ │ │ │ │ └── youtube_parser.dart │ │ │ │ │ │ │ ├── link_preview_menu.dart │ │ │ │ │ │ │ ├── paste_as/ │ │ │ │ │ │ │ │ └── paste_as_menu.dart │ │ │ │ │ │ │ └── shared.dart │ │ │ │ │ │ ├── math_equation/ │ │ │ │ │ │ │ ├── math_equation_block_component.dart │ │ │ │ │ │ │ ├── math_equation_shortcut.dart │ │ │ │ │ │ │ └── mobile_math_equation_toolbar_item.dart │ │ │ │ │ │ ├── mention/ │ │ │ │ │ │ │ ├── child_page_transaction_handler.dart │ │ │ │ │ │ │ ├── date_transaction_handler.dart │ │ │ │ │ │ │ ├── mention_block.dart │ │ │ │ │ │ │ ├── mention_date_block.dart │ │ │ │ │ │ │ ├── mention_link_block.dart │ │ │ │ │ │ │ ├── mention_link_error_preview.dart │ │ │ │ │ │ │ ├── mention_link_preview.dart │ │ │ │ │ │ │ ├── mention_page_bloc.dart │ │ │ │ │ │ │ ├── mention_page_block.dart │ │ │ │ │ │ │ └── mobile_page_selector_sheet.dart │ │ │ │ │ │ ├── menu/ │ │ │ │ │ │ │ └── menu_extension.dart │ │ │ │ │ │ ├── migration/ │ │ │ │ │ │ │ └── editor_migration.dart │ │ │ │ │ │ ├── mobile_floating_toolbar/ │ │ │ │ │ │ │ └── custom_mobile_floating_toolbar.dart │ │ │ │ │ │ ├── mobile_toolbar_item/ │ │ │ │ │ │ │ ├── mobile_add_block_toolbar_item.dart │ │ │ │ │ │ │ └── mobile_block_settings_screen.dart │ │ │ │ │ │ ├── mobile_toolbar_v3/ │ │ │ │ │ │ │ ├── _get_selection_color.dart │ │ │ │ │ │ │ ├── aa_menu/ │ │ │ │ │ │ │ │ ├── _align_items.dart │ │ │ │ │ │ │ │ ├── _bius_items.dart │ │ │ │ │ │ │ │ ├── _block_items.dart │ │ │ │ │ │ │ │ ├── _close_keyboard_or_menu_button.dart │ │ │ │ │ │ │ │ ├── _color_item.dart │ │ │ │ │ │ │ │ ├── _color_list.dart │ │ │ │ │ │ │ │ ├── _font_item.dart │ │ │ │ │ │ │ │ ├── _heading_and_text_items.dart │ │ │ │ │ │ │ │ ├── _indent_items.dart │ │ │ │ │ │ │ │ ├── _menu_item.dart │ │ │ │ │ │ │ │ ├── _popup_menu.dart │ │ │ │ │ │ │ │ └── _toolbar_theme.dart │ │ │ │ │ │ │ ├── aa_toolbar_item.dart │ │ │ │ │ │ │ ├── add_attachment_item.dart │ │ │ │ │ │ │ ├── add_block_menu_item_builder.dart │ │ │ │ │ │ │ ├── add_block_toolbar_item.dart │ │ │ │ │ │ │ ├── appflowy_mobile_toolbar.dart │ │ │ │ │ │ │ ├── appflowy_mobile_toolbar_item.dart │ │ │ │ │ │ │ ├── basic_toolbar_item.dart │ │ │ │ │ │ │ ├── indent_outdent_toolbar_item.dart │ │ │ │ │ │ │ ├── keyboard_height_observer.dart │ │ │ │ │ │ │ ├── link_toolbar_item.dart │ │ │ │ │ │ │ ├── list_toolbar_item.dart │ │ │ │ │ │ │ ├── more_toolbar_item.dart │ │ │ │ │ │ │ ├── toolbar_item_builder.dart │ │ │ │ │ │ │ ├── undo_redo_toolbar_item.dart │ │ │ │ │ │ │ └── util.dart │ │ │ │ │ │ ├── numbered_list/ │ │ │ │ │ │ │ └── numbered_list_icon.dart │ │ │ │ │ │ ├── outline/ │ │ │ │ │ │ │ └── outline_block_component.dart │ │ │ │ │ │ ├── page_block/ │ │ │ │ │ │ │ └── custom_page_block_component.dart │ │ │ │ │ │ ├── page_style/ │ │ │ │ │ │ │ ├── _page_cover_bottom_sheet.dart │ │ │ │ │ │ │ ├── _page_style_cover_image.dart │ │ │ │ │ │ │ ├── _page_style_icon.dart │ │ │ │ │ │ │ ├── _page_style_icon_bloc.dart │ │ │ │ │ │ │ ├── _page_style_layout.dart │ │ │ │ │ │ │ ├── _page_style_util.dart │ │ │ │ │ │ │ └── page_style_bottom_sheet.dart │ │ │ │ │ │ ├── parsers/ │ │ │ │ │ │ │ ├── callout_node_parser.dart │ │ │ │ │ │ │ ├── custom_image_node_parser.dart │ │ │ │ │ │ │ ├── custom_paragraph_node_parser.dart │ │ │ │ │ │ │ ├── database_node_parser.dart │ │ │ │ │ │ │ ├── document_markdown_parsers.dart │ │ │ │ │ │ │ ├── file_block_node_parser.dart │ │ │ │ │ │ │ ├── link_preview_node_parser.dart │ │ │ │ │ │ │ ├── markdown_code_parser.dart │ │ │ │ │ │ │ ├── markdown_parsers.dart │ │ │ │ │ │ │ ├── markdown_simple_table_parser.dart │ │ │ │ │ │ │ ├── math_equation_node_parser.dart │ │ │ │ │ │ │ ├── simple_table_node_parser.dart │ │ │ │ │ │ │ ├── sub_page_node_parser.dart │ │ │ │ │ │ │ └── toggle_list_node_parser.dart │ │ │ │ │ │ ├── plugins.dart │ │ │ │ │ │ ├── quote/ │ │ │ │ │ │ │ ├── quote_block_component.dart │ │ │ │ │ │ │ └── quote_block_shortcuts.dart │ │ │ │ │ │ ├── shared_context/ │ │ │ │ │ │ │ └── shared_context.dart │ │ │ │ │ │ ├── shortcuts/ │ │ │ │ │ │ │ ├── character_shortcuts.dart │ │ │ │ │ │ │ ├── command_shortcuts.dart │ │ │ │ │ │ │ ├── custom_delete_command.dart │ │ │ │ │ │ │ ├── exit_edit_mode_command.dart │ │ │ │ │ │ │ ├── heading_block_shortcuts.dart │ │ │ │ │ │ │ └── numbered_list_block_shortcuts.dart │ │ │ │ │ │ ├── simple_table/ │ │ │ │ │ │ │ ├── simple_table.dart │ │ │ │ │ │ │ ├── simple_table_block_component.dart │ │ │ │ │ │ │ ├── simple_table_cell_block_component.dart │ │ │ │ │ │ │ ├── simple_table_constants.dart │ │ │ │ │ │ │ ├── simple_table_more_action.dart │ │ │ │ │ │ │ ├── simple_table_operations/ │ │ │ │ │ │ │ │ ├── simple_table_content_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_delete_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_duplicate_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_header_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_insert_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_map_operation.dart │ │ │ │ │ │ │ │ ├── simple_table_node_extension.dart │ │ │ │ │ │ │ │ ├── simple_table_operations.dart │ │ │ │ │ │ │ │ ├── simple_table_reorder_operation.dart │ │ │ │ │ │ │ │ └── simple_table_style_operation.dart │ │ │ │ │ │ │ ├── simple_table_row_block_component.dart │ │ │ │ │ │ │ ├── simple_table_shortcuts/ │ │ │ │ │ │ │ │ ├── simple_table_arrow_down_command.dart │ │ │ │ │ │ │ │ ├── simple_table_arrow_left_command.dart │ │ │ │ │ │ │ │ ├── simple_table_arrow_right_command.dart │ │ │ │ │ │ │ │ ├── simple_table_arrow_up_command.dart │ │ │ │ │ │ │ │ ├── simple_table_backspace_command.dart │ │ │ │ │ │ │ │ ├── simple_table_command_extension.dart │ │ │ │ │ │ │ │ ├── simple_table_commands.dart │ │ │ │ │ │ │ │ ├── simple_table_enter_command.dart │ │ │ │ │ │ │ │ ├── simple_table_navigation_command.dart │ │ │ │ │ │ │ │ ├── simple_table_select_all_command.dart │ │ │ │ │ │ │ │ └── simple_table_tab_command.dart │ │ │ │ │ │ │ └── simple_table_widgets/ │ │ │ │ │ │ │ ├── _desktop_simple_table_widget.dart │ │ │ │ │ │ │ ├── _mobile_simple_table_widget.dart │ │ │ │ │ │ │ ├── _simple_table_bottom_sheet_actions.dart │ │ │ │ │ │ │ ├── simple_table_action_sheet.dart │ │ │ │ │ │ │ ├── simple_table_add_column_and_row_button.dart │ │ │ │ │ │ │ ├── simple_table_add_column_button.dart │ │ │ │ │ │ │ ├── simple_table_add_row_button.dart │ │ │ │ │ │ │ ├── simple_table_align_button.dart │ │ │ │ │ │ │ ├── simple_table_background_menu.dart │ │ │ │ │ │ │ ├── simple_table_basic_button.dart │ │ │ │ │ │ │ ├── simple_table_border_builder.dart │ │ │ │ │ │ │ ├── simple_table_bottom_sheet.dart │ │ │ │ │ │ │ ├── simple_table_column_resize_handle.dart │ │ │ │ │ │ │ ├── simple_table_divider.dart │ │ │ │ │ │ │ ├── simple_table_feedback.dart │ │ │ │ │ │ │ ├── simple_table_more_action_popup.dart │ │ │ │ │ │ │ ├── simple_table_reorder_button.dart │ │ │ │ │ │ │ ├── simple_table_widget.dart │ │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ │ ├── slash_menu/ │ │ │ │ │ │ │ ├── slash_command.dart │ │ │ │ │ │ │ ├── slash_menu_items/ │ │ │ │ │ │ │ │ ├── ai_writer_item.dart │ │ │ │ │ │ │ │ ├── bulleted_list_item.dart │ │ │ │ │ │ │ │ ├── callout_item.dart │ │ │ │ │ │ │ │ ├── code_block_item.dart │ │ │ │ │ │ │ │ ├── database_items.dart │ │ │ │ │ │ │ │ ├── date_item.dart │ │ │ │ │ │ │ │ ├── divider_item.dart │ │ │ │ │ │ │ │ ├── emoji_item.dart │ │ │ │ │ │ │ │ ├── file_item.dart │ │ │ │ │ │ │ │ ├── heading_items.dart │ │ │ │ │ │ │ │ ├── image_item.dart │ │ │ │ │ │ │ │ ├── math_equation_item.dart │ │ │ │ │ │ │ │ ├── mobile_items.dart │ │ │ │ │ │ │ │ ├── numbered_list_item.dart │ │ │ │ │ │ │ │ ├── outline_item.dart │ │ │ │ │ │ │ │ ├── paragraph_item.dart │ │ │ │ │ │ │ │ ├── photo_gallery_item.dart │ │ │ │ │ │ │ │ ├── quote_item.dart │ │ │ │ │ │ │ │ ├── simple_columns_item.dart │ │ │ │ │ │ │ │ ├── simple_table_item.dart │ │ │ │ │ │ │ │ ├── slash_menu_item_builder.dart │ │ │ │ │ │ │ │ ├── slash_menu_items.dart │ │ │ │ │ │ │ │ ├── sub_page_item.dart │ │ │ │ │ │ │ │ ├── todo_list_item.dart │ │ │ │ │ │ │ │ └── toggle_list_item.dart │ │ │ │ │ │ │ └── slash_menu_items_builder.dart │ │ │ │ │ │ ├── sub_page/ │ │ │ │ │ │ │ ├── block_transaction_handler.dart │ │ │ │ │ │ │ ├── sub_page_block_component.dart │ │ │ │ │ │ │ └── sub_page_transaction_handler.dart │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ ├── table_menu.dart │ │ │ │ │ │ │ └── table_option_action.dart │ │ │ │ │ │ ├── todo_list/ │ │ │ │ │ │ │ └── todo_list_icon.dart │ │ │ │ │ │ ├── toggle/ │ │ │ │ │ │ │ ├── toggle_block_component.dart │ │ │ │ │ │ │ └── toggle_block_shortcuts.dart │ │ │ │ │ │ ├── toolbar_item/ │ │ │ │ │ │ │ ├── custom_format_toolbar_items.dart │ │ │ │ │ │ │ ├── custom_hightlight_color_toolbar_item.dart │ │ │ │ │ │ │ ├── custom_link_toolbar_item.dart │ │ │ │ │ │ │ ├── custom_placeholder_toolbar_item.dart │ │ │ │ │ │ │ ├── custom_text_align_toolbar_item.dart │ │ │ │ │ │ │ ├── custom_text_color_toolbar_item.dart │ │ │ │ │ │ │ ├── more_option_toolbar_item.dart │ │ │ │ │ │ │ ├── text_heading_toolbar_item.dart │ │ │ │ │ │ │ ├── text_suggestions_toolbar_item.dart │ │ │ │ │ │ │ └── toolbar_id_enum.dart │ │ │ │ │ │ ├── transaction_handler/ │ │ │ │ │ │ │ ├── block_transaction_handler.dart │ │ │ │ │ │ │ ├── editor_transaction_handler.dart │ │ │ │ │ │ │ ├── editor_transaction_service.dart │ │ │ │ │ │ │ └── mention_transaction_handler.dart │ │ │ │ │ │ ├── undo_redo/ │ │ │ │ │ │ │ └── custom_undo_redo_commands.dart │ │ │ │ │ │ └── video/ │ │ │ │ │ │ └── video_block_component.dart │ │ │ │ │ └── editor_style.dart │ │ │ │ ├── emoji/ │ │ │ │ │ ├── emoji_actions_command.dart │ │ │ │ │ ├── emoji_handler.dart │ │ │ │ │ └── emoji_menu.dart │ │ │ │ ├── inline_actions/ │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── child_page.dart │ │ │ │ │ │ ├── date_reference.dart │ │ │ │ │ │ ├── inline_page_reference.dart │ │ │ │ │ │ └── reminder_reference.dart │ │ │ │ │ ├── inline_actions_command.dart │ │ │ │ │ ├── inline_actions_menu.dart │ │ │ │ │ ├── inline_actions_result.dart │ │ │ │ │ ├── inline_actions_service.dart │ │ │ │ │ ├── service_handler.dart │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── inline_actions_handler.dart │ │ │ │ │ └── inline_actions_menu_group.dart │ │ │ │ ├── shared/ │ │ │ │ │ ├── callback_shortcuts.dart │ │ │ │ │ ├── cover_type_ext.dart │ │ │ │ │ ├── share/ │ │ │ │ │ │ ├── _shared.dart │ │ │ │ │ │ ├── constants.dart │ │ │ │ │ │ ├── export_tab.dart │ │ │ │ │ │ ├── publish_color_extension.dart │ │ │ │ │ │ ├── publish_name_generator.dart │ │ │ │ │ │ ├── publish_tab.dart │ │ │ │ │ │ ├── share_bloc.dart │ │ │ │ │ │ ├── share_button.dart │ │ │ │ │ │ ├── share_menu.dart │ │ │ │ │ │ └── share_tab.dart │ │ │ │ │ └── sync_indicator.dart │ │ │ │ ├── trash/ │ │ │ │ │ ├── application/ │ │ │ │ │ │ ├── prelude.dart │ │ │ │ │ │ ├── trash_bloc.dart │ │ │ │ │ │ ├── trash_listener.dart │ │ │ │ │ │ └── trash_service.dart │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── sizes.dart │ │ │ │ │ │ ├── trash_cell.dart │ │ │ │ │ │ └── trash_header.dart │ │ │ │ │ ├── trash.dart │ │ │ │ │ └── trash_page.dart │ │ │ │ └── util.dart │ │ │ ├── shared/ │ │ │ │ ├── af_image.dart │ │ │ │ ├── af_role_pb_extension.dart │ │ │ │ ├── af_user_profile_extension.dart │ │ │ │ ├── appflowy_cache_manager.dart │ │ │ │ ├── appflowy_network_image.dart │ │ │ │ ├── appflowy_network_svg.dart │ │ │ │ ├── clipboard_state.dart │ │ │ │ ├── colors.dart │ │ │ │ ├── conditional_listenable_builder.dart │ │ │ │ ├── custom_image_cache_manager.dart │ │ │ │ ├── easy_localiation_service.dart │ │ │ │ ├── error_code/ │ │ │ │ │ └── error_code_map.dart │ │ │ │ ├── error_page/ │ │ │ │ │ └── error_page.dart │ │ │ │ ├── feature_flags.dart │ │ │ │ ├── feedback_gesture_detector.dart │ │ │ │ ├── flowy_error_page.dart │ │ │ │ ├── flowy_gradient_colors.dart │ │ │ │ ├── google_fonts_extension.dart │ │ │ │ ├── icon_emoji_picker/ │ │ │ │ │ ├── colors.dart │ │ │ │ │ ├── emoji_search_bar.dart │ │ │ │ │ ├── emoji_skin_tone.dart │ │ │ │ │ ├── flowy_icon_emoji_picker.dart │ │ │ │ │ ├── icon.dart │ │ │ │ │ ├── icon_color_picker.dart │ │ │ │ │ ├── icon_picker.dart │ │ │ │ │ ├── icon_search_bar.dart │ │ │ │ │ ├── icon_uploader.dart │ │ │ │ │ ├── recent_icons.dart │ │ │ │ │ └── tab.dart │ │ │ │ ├── list_extension.dart │ │ │ │ ├── loading.dart │ │ │ │ ├── markdown_to_document.dart │ │ │ │ ├── patterns/ │ │ │ │ │ ├── common_patterns.dart │ │ │ │ │ ├── date_time_patterns.dart │ │ │ │ │ └── file_type_patterns.dart │ │ │ │ ├── permission/ │ │ │ │ │ └── permission_checker.dart │ │ │ │ ├── popup_menu/ │ │ │ │ │ └── appflowy_popup_menu.dart │ │ │ │ ├── settings/ │ │ │ │ │ └── show_settings.dart │ │ │ │ ├── text_field/ │ │ │ │ │ └── text_filed_with_metric_lines.dart │ │ │ │ ├── time_format.dart │ │ │ │ ├── version_checker/ │ │ │ │ │ └── version_checker.dart │ │ │ │ └── window_title_bar.dart │ │ │ ├── startup/ │ │ │ │ ├── deps_resolver.dart │ │ │ │ ├── entry_point.dart │ │ │ │ ├── launch_configuration.dart │ │ │ │ ├── plugin/ │ │ │ │ │ ├── plugin.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── runner.dart │ │ │ │ │ └── sandbox.dart │ │ │ │ ├── startup.dart │ │ │ │ └── tasks/ │ │ │ │ ├── af_navigator_observer.dart │ │ │ │ ├── app_widget.dart │ │ │ │ ├── app_window_size_manager.dart │ │ │ │ ├── appflowy_cloud_task.dart │ │ │ │ ├── auto_update_task.dart │ │ │ │ ├── debug_task.dart │ │ │ │ ├── deeplink/ │ │ │ │ │ ├── deeplink_handler.dart │ │ │ │ │ ├── expire_login_deeplink_handler.dart │ │ │ │ │ ├── invitation_deeplink_handler.dart │ │ │ │ │ ├── login_deeplink_handler.dart │ │ │ │ │ ├── open_app_deeplink_handler.dart │ │ │ │ │ └── payment_deeplink_handler.dart │ │ │ │ ├── device_info_task.dart │ │ │ │ ├── feature_flag_task.dart │ │ │ │ ├── file_storage_task.dart │ │ │ │ ├── generate_router.dart │ │ │ │ ├── hot_key.dart │ │ │ │ ├── load_plugin.dart │ │ │ │ ├── localization.dart │ │ │ │ ├── memory_leak_detector.dart │ │ │ │ ├── platform_error_catcher.dart │ │ │ │ ├── platform_service.dart │ │ │ │ ├── prelude.dart │ │ │ │ ├── recent_service_task.dart │ │ │ │ ├── rust_sdk.dart │ │ │ │ └── windows.dart │ │ │ ├── user/ │ │ │ │ ├── application/ │ │ │ │ │ ├── anon_user_bloc.dart │ │ │ │ │ ├── auth/ │ │ │ │ │ │ ├── af_cloud_auth_service.dart │ │ │ │ │ │ ├── af_cloud_mock_auth_service.dart │ │ │ │ │ │ ├── auth_error.dart │ │ │ │ │ │ ├── auth_service.dart │ │ │ │ │ │ ├── backend_auth_service.dart │ │ │ │ │ │ └── device_id.dart │ │ │ │ │ ├── notification_filter/ │ │ │ │ │ │ └── notification_filter_bloc.dart │ │ │ │ │ ├── password/ │ │ │ │ │ │ ├── password_bloc.dart │ │ │ │ │ │ └── password_http_service.dart │ │ │ │ │ ├── prelude.dart │ │ │ │ │ ├── reminder/ │ │ │ │ │ │ ├── reminder_bloc.dart │ │ │ │ │ │ ├── reminder_extension.dart │ │ │ │ │ │ ├── reminder_listener.dart │ │ │ │ │ │ └── reminder_service.dart │ │ │ │ │ ├── sign_in_bloc.dart │ │ │ │ │ ├── sign_up_bloc.dart │ │ │ │ │ ├── splash_bloc.dart │ │ │ │ │ ├── user_auth_listener.dart │ │ │ │ │ ├── user_listener.dart │ │ │ │ │ ├── user_service.dart │ │ │ │ │ ├── user_settings_service.dart │ │ │ │ │ └── workspace_error_bloc.dart │ │ │ │ ├── domain/ │ │ │ │ │ └── auth_state.dart │ │ │ │ └── presentation/ │ │ │ │ ├── anon_user.dart │ │ │ │ ├── helpers/ │ │ │ │ │ ├── handle_open_workspace_error.dart │ │ │ │ │ └── helpers.dart │ │ │ │ ├── presentation.dart │ │ │ │ ├── router.dart │ │ │ │ ├── screens/ │ │ │ │ │ ├── screens.dart │ │ │ │ │ ├── sign_in_screen/ │ │ │ │ │ │ ├── desktop_sign_in_screen.dart │ │ │ │ │ │ ├── mobile_loading_screen.dart │ │ │ │ │ │ ├── mobile_sign_in_screen.dart │ │ │ │ │ │ ├── sign_in_screen.dart │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ ├── anonymous_sign_in_button/ │ │ │ │ │ │ │ └── anonymous_sign_in_button.dart │ │ │ │ │ │ ├── anonymous_sign_in_button.dart │ │ │ │ │ │ ├── continue_with/ │ │ │ │ │ │ │ ├── back_to_login_in_button.dart │ │ │ │ │ │ │ ├── continue_with_button.dart │ │ │ │ │ │ │ ├── continue_with_email.dart │ │ │ │ │ │ │ ├── continue_with_email_and_password.dart │ │ │ │ │ │ │ ├── continue_with_magic_link_or_passcode_page.dart │ │ │ │ │ │ │ ├── continue_with_password.dart │ │ │ │ │ │ │ ├── continue_with_password_page.dart │ │ │ │ │ │ │ ├── forgot_password_page.dart │ │ │ │ │ │ │ ├── reset_password.dart │ │ │ │ │ │ │ ├── reset_password_page.dart │ │ │ │ │ │ │ ├── set_new_password.dart │ │ │ │ │ │ │ ├── title_logo.dart │ │ │ │ │ │ │ └── verifying_button.dart │ │ │ │ │ │ ├── logo/ │ │ │ │ │ │ │ └── logo.dart │ │ │ │ │ │ ├── magic_link_sign_in_buttons.dart │ │ │ │ │ │ ├── sign_in_agreement.dart │ │ │ │ │ │ ├── sign_in_anonymous_button.dart │ │ │ │ │ │ ├── sign_in_or_logout_button.dart │ │ │ │ │ │ ├── switch_sign_in_sign_up_button.dart │ │ │ │ │ │ ├── third_party_sign_in_button/ │ │ │ │ │ │ │ ├── third_party_sign_in_button.dart │ │ │ │ │ │ │ └── third_party_sign_in_buttons.dart │ │ │ │ │ │ └── widgets.dart │ │ │ │ │ ├── skip_log_in_screen.dart │ │ │ │ │ ├── splash_screen.dart │ │ │ │ │ ├── workspace_error_screen.dart │ │ │ │ │ └── workspace_start_screen/ │ │ │ │ │ ├── desktop_workspace_start_screen.dart │ │ │ │ │ ├── mobile_workspace_start_screen.dart │ │ │ │ │ └── workspace_start_screen.dart │ │ │ │ └── widgets/ │ │ │ │ ├── auth_form_container.dart │ │ │ │ ├── flowy_logo_title.dart │ │ │ │ ├── folder_widget.dart │ │ │ │ └── widgets.dart │ │ │ ├── util/ │ │ │ │ ├── built_in_svgs.dart │ │ │ │ ├── color_generator/ │ │ │ │ │ └── color_generator.dart │ │ │ │ ├── color_to_hex_string.dart │ │ │ │ ├── debounce.dart │ │ │ │ ├── default_extensions.dart │ │ │ │ ├── expand_views.dart │ │ │ │ ├── field_type_extension.dart │ │ │ │ ├── file_extension.dart │ │ │ │ ├── font_family_extension.dart │ │ │ │ ├── int64_extension.dart │ │ │ │ ├── json_print.dart │ │ │ │ ├── levenshtein.dart │ │ │ │ ├── navigator_context_extension.dart │ │ │ │ ├── share_log_files.dart │ │ │ │ ├── string_extension.dart │ │ │ │ ├── theme_extension.dart │ │ │ │ ├── theme_mode_extension.dart │ │ │ │ ├── throttle.dart │ │ │ │ ├── time.dart │ │ │ │ └── xfile_ext.dart │ │ │ └── workspace/ │ │ │ ├── application/ │ │ │ │ ├── action_navigation/ │ │ │ │ │ ├── action_navigation_bloc.dart │ │ │ │ │ └── navigation_action.dart │ │ │ │ ├── appearance_defaults.dart │ │ │ │ ├── command_palette/ │ │ │ │ │ ├── command_palette_bloc.dart │ │ │ │ │ ├── search_result_ext.dart │ │ │ │ │ ├── search_result_list_bloc.dart │ │ │ │ │ └── search_service.dart │ │ │ │ ├── edit_panel/ │ │ │ │ │ ├── edit_context.dart │ │ │ │ │ └── edit_panel_bloc.dart │ │ │ │ ├── export/ │ │ │ │ │ └── document_exporter.dart │ │ │ │ ├── favorite/ │ │ │ │ │ ├── favorite_bloc.dart │ │ │ │ │ ├── favorite_listener.dart │ │ │ │ │ ├── favorite_service.dart │ │ │ │ │ └── prelude.dart │ │ │ │ ├── home/ │ │ │ │ │ ├── home_bloc.dart │ │ │ │ │ ├── home_setting_bloc.dart │ │ │ │ │ └── prelude.dart │ │ │ │ ├── menu/ │ │ │ │ │ ├── menu_user_bloc.dart │ │ │ │ │ ├── prelude.dart │ │ │ │ │ └── sidebar_sections_bloc.dart │ │ │ │ ├── notification/ │ │ │ │ │ └── notification_service.dart │ │ │ │ ├── recent/ │ │ │ │ │ ├── cached_recent_service.dart │ │ │ │ │ ├── prelude.dart │ │ │ │ │ ├── recent_listener.dart │ │ │ │ │ └── recent_views_bloc.dart │ │ │ │ ├── settings/ │ │ │ │ │ ├── ai/ │ │ │ │ │ │ ├── local_ai_bloc.dart │ │ │ │ │ │ ├── local_ai_on_boarding_bloc.dart │ │ │ │ │ │ ├── local_llm_listener.dart │ │ │ │ │ │ ├── ollama_setting_bloc.dart │ │ │ │ │ │ └── settings_ai_bloc.dart │ │ │ │ │ ├── appearance/ │ │ │ │ │ │ ├── appearance_cubit.dart │ │ │ │ │ │ ├── base_appearance.dart │ │ │ │ │ │ ├── desktop_appearance.dart │ │ │ │ │ │ └── mobile_appearance.dart │ │ │ │ │ ├── appflowy_cloud_setting_bloc.dart │ │ │ │ │ ├── appflowy_cloud_urls_bloc.dart │ │ │ │ │ ├── application_data_storage.dart │ │ │ │ │ ├── billing/ │ │ │ │ │ │ └── settings_billing_bloc.dart │ │ │ │ │ ├── cloud_setting_bloc.dart │ │ │ │ │ ├── cloud_setting_listener.dart │ │ │ │ │ ├── create_file_settings_cubit.dart │ │ │ │ │ ├── date_time/ │ │ │ │ │ │ ├── date_format_ext.dart │ │ │ │ │ │ └── time_format_ext.dart │ │ │ │ │ ├── file_storage/ │ │ │ │ │ │ └── file_storage_listener.dart │ │ │ │ │ ├── notifications/ │ │ │ │ │ │ └── notification_settings_cubit.dart │ │ │ │ │ ├── plan/ │ │ │ │ │ │ ├── settings_plan_bloc.dart │ │ │ │ │ │ ├── workspace_subscription_ext.dart │ │ │ │ │ │ └── workspace_usage_ext.dart │ │ │ │ │ ├── prelude.dart │ │ │ │ │ ├── setting_file_importer_bloc.dart │ │ │ │ │ ├── settings_dialog_bloc.dart │ │ │ │ │ ├── settings_file_exporter_cubit.dart │ │ │ │ │ ├── share/ │ │ │ │ │ │ ├── export_service.dart │ │ │ │ │ │ └── import_service.dart │ │ │ │ │ ├── shortcuts/ │ │ │ │ │ │ ├── settings_shortcuts_cubit.dart │ │ │ │ │ │ ├── settings_shortcuts_service.dart │ │ │ │ │ │ └── shortcuts_model.dart │ │ │ │ │ └── workspace/ │ │ │ │ │ └── workspace_settings_bloc.dart │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── billing/ │ │ │ │ │ │ └── sidebar_plan_bloc.dart │ │ │ │ │ ├── folder/ │ │ │ │ │ │ └── folder_bloc.dart │ │ │ │ │ ├── rename_view/ │ │ │ │ │ │ └── rename_view_bloc.dart │ │ │ │ │ └── space/ │ │ │ │ │ ├── space_bloc.dart │ │ │ │ │ └── space_search_bloc.dart │ │ │ │ ├── subscription_success_listenable/ │ │ │ │ │ └── subscription_success_listenable.dart │ │ │ │ ├── tabs/ │ │ │ │ │ └── tabs_bloc.dart │ │ │ │ ├── user/ │ │ │ │ │ ├── prelude.dart │ │ │ │ │ ├── settings_user_bloc.dart │ │ │ │ │ └── user_workspace_bloc.dart │ │ │ │ ├── view/ │ │ │ │ │ ├── prelude.dart │ │ │ │ │ ├── view_bloc.dart │ │ │ │ │ ├── view_ext.dart │ │ │ │ │ ├── view_listener.dart │ │ │ │ │ └── view_service.dart │ │ │ │ ├── view_info/ │ │ │ │ │ └── view_info_bloc.dart │ │ │ │ ├── view_title/ │ │ │ │ │ ├── view_title_bar_bloc.dart │ │ │ │ │ └── view_title_bloc.dart │ │ │ │ └── workspace/ │ │ │ │ ├── prelude.dart │ │ │ │ ├── workspace_bloc.dart │ │ │ │ ├── workspace_listener.dart │ │ │ │ ├── workspace_sections_listener.dart │ │ │ │ └── workspace_service.dart │ │ │ └── presentation/ │ │ │ ├── command_palette/ │ │ │ │ ├── command_palette.dart │ │ │ │ ├── navigation_bloc_extension.dart │ │ │ │ └── widgets/ │ │ │ │ ├── page_preview.dart │ │ │ │ ├── recent_views_list.dart │ │ │ │ ├── search_ask_ai_entrance.dart │ │ │ │ ├── search_field.dart │ │ │ │ ├── search_icon.dart │ │ │ │ ├── search_recent_view_cell.dart │ │ │ │ ├── search_result_cell.dart │ │ │ │ ├── search_results_list.dart │ │ │ │ └── search_summary_cell.dart │ │ │ ├── home/ │ │ │ │ ├── af_focus_manager.dart │ │ │ │ ├── desktop_home_screen.dart │ │ │ │ ├── errors/ │ │ │ │ │ └── workspace_failed_screen.dart │ │ │ │ ├── home_layout.dart │ │ │ │ ├── home_sizes.dart │ │ │ │ ├── home_stack.dart │ │ │ │ ├── hotkeys.dart │ │ │ │ ├── menu/ │ │ │ │ │ ├── menu_shared_state.dart │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ ├── favorites/ │ │ │ │ │ │ │ ├── favorite_folder.dart │ │ │ │ │ │ │ ├── favorite_menu.dart │ │ │ │ │ │ │ ├── favorite_menu_bloc.dart │ │ │ │ │ │ │ ├── favorite_more_actions.dart │ │ │ │ │ │ │ ├── favorite_pin_action.dart │ │ │ │ │ │ │ └── favorite_pin_bloc.dart │ │ │ │ │ │ ├── folder/ │ │ │ │ │ │ │ ├── _folder_header.dart │ │ │ │ │ │ │ └── _section_folder.dart │ │ │ │ │ │ ├── footer/ │ │ │ │ │ │ │ ├── sidebar_footer.dart │ │ │ │ │ │ │ ├── sidebar_footer_button.dart │ │ │ │ │ │ │ ├── sidebar_toast.dart │ │ │ │ │ │ │ └── sidebar_upgrade_application_button.dart │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ ├── sidebar_top_menu.dart │ │ │ │ │ │ │ └── sidebar_user.dart │ │ │ │ │ │ ├── import/ │ │ │ │ │ │ │ ├── import_panel.dart │ │ │ │ │ │ │ └── import_type.dart │ │ │ │ │ │ ├── move_to/ │ │ │ │ │ │ │ └── move_page_menu.dart │ │ │ │ │ │ ├── shared/ │ │ │ │ │ │ │ ├── sidebar_folder.dart │ │ │ │ │ │ │ ├── sidebar_new_page_button.dart │ │ │ │ │ │ │ └── sidebar_setting.dart │ │ │ │ │ │ ├── sidebar.dart │ │ │ │ │ │ ├── slider_menu_hover_trigger.dart │ │ │ │ │ │ ├── space/ │ │ │ │ │ │ │ ├── _extension.dart │ │ │ │ │ │ │ ├── create_space_popup.dart │ │ │ │ │ │ │ ├── manage_space_popup.dart │ │ │ │ │ │ │ ├── shared_widget.dart │ │ │ │ │ │ │ ├── sidebar_space.dart │ │ │ │ │ │ │ ├── sidebar_space_header.dart │ │ │ │ │ │ │ ├── sidebar_space_menu.dart │ │ │ │ │ │ │ ├── space_action_type.dart │ │ │ │ │ │ │ ├── space_icon.dart │ │ │ │ │ │ │ ├── space_icon_popup.dart │ │ │ │ │ │ │ ├── space_migration.dart │ │ │ │ │ │ │ └── space_more_popup.dart │ │ │ │ │ │ └── workspace/ │ │ │ │ │ │ ├── _sidebar_import_notion.dart │ │ │ │ │ │ ├── _sidebar_workspace_actions.dart │ │ │ │ │ │ ├── _sidebar_workspace_icon.dart │ │ │ │ │ │ ├── _sidebar_workspace_menu.dart │ │ │ │ │ │ ├── sidebar_workspace.dart │ │ │ │ │ │ └── workspace_notifier.dart │ │ │ │ │ └── view/ │ │ │ │ │ ├── draggable_view_item.dart │ │ │ │ │ ├── view_action_type.dart │ │ │ │ │ ├── view_add_button.dart │ │ │ │ │ ├── view_item.dart │ │ │ │ │ └── view_more_action_button.dart │ │ │ │ ├── navigation.dart │ │ │ │ ├── tabs/ │ │ │ │ │ ├── flowy_tab.dart │ │ │ │ │ └── tabs_manager.dart │ │ │ │ └── toast.dart │ │ │ ├── notifications/ │ │ │ │ ├── notification_panel.dart │ │ │ │ ├── number_red_dot.dart │ │ │ │ ├── reminder_extension.dart │ │ │ │ └── widgets/ │ │ │ │ ├── flowy_tab.dart │ │ │ │ ├── inbox_action_bar.dart │ │ │ │ ├── notification_button.dart │ │ │ │ ├── notification_content_v2.dart │ │ │ │ ├── notification_hub_title.dart │ │ │ │ ├── notification_item.dart │ │ │ │ ├── notification_item_v2.dart │ │ │ │ ├── notification_tab.dart │ │ │ │ ├── notification_tab_bar.dart │ │ │ │ ├── notification_view.dart │ │ │ │ └── notifications_hub_empty.dart │ │ │ ├── settings/ │ │ │ │ ├── pages/ │ │ │ │ │ ├── about/ │ │ │ │ │ │ └── app_version.dart │ │ │ │ │ ├── account/ │ │ │ │ │ │ ├── account.dart │ │ │ │ │ │ ├── account_deletion.dart │ │ │ │ │ │ ├── account_sign_in_out.dart │ │ │ │ │ │ ├── account_user_profile.dart │ │ │ │ │ │ ├── email/ │ │ │ │ │ │ │ └── email_section.dart │ │ │ │ │ │ └── password/ │ │ │ │ │ │ ├── change_password.dart │ │ │ │ │ │ ├── error_extensions.dart │ │ │ │ │ │ ├── password_suffix_icon.dart │ │ │ │ │ │ └── setup_password.dart │ │ │ │ │ ├── fix_data_widget.dart │ │ │ │ │ ├── setting_ai_view/ │ │ │ │ │ │ ├── local_ai_setting.dart │ │ │ │ │ │ ├── local_settings_ai_view.dart │ │ │ │ │ │ ├── model_selection.dart │ │ │ │ │ │ ├── ollama_setting.dart │ │ │ │ │ │ ├── plugin_status_indicator.dart │ │ │ │ │ │ └── settings_ai_view.dart │ │ │ │ │ ├── settings_account_view.dart │ │ │ │ │ ├── settings_billing_view.dart │ │ │ │ │ ├── settings_manage_data_view.dart │ │ │ │ │ ├── settings_plan_comparison_dialog.dart │ │ │ │ │ ├── settings_plan_view.dart │ │ │ │ │ ├── settings_shortcuts_view.dart │ │ │ │ │ ├── settings_workspace_view.dart │ │ │ │ │ └── sites/ │ │ │ │ │ ├── constants.dart │ │ │ │ │ ├── domain/ │ │ │ │ │ │ ├── domain_header.dart │ │ │ │ │ │ ├── domain_item.dart │ │ │ │ │ │ ├── domain_more_action.dart │ │ │ │ │ │ ├── domain_settings_dialog.dart │ │ │ │ │ │ └── home_page_menu.dart │ │ │ │ │ ├── publish_info_view_item.dart │ │ │ │ │ ├── published_page/ │ │ │ │ │ │ ├── published_view_item.dart │ │ │ │ │ │ ├── published_view_item_header.dart │ │ │ │ │ │ ├── published_view_more_action.dart │ │ │ │ │ │ └── published_view_settings_dialog.dart │ │ │ │ │ ├── settings_sites_bloc.dart │ │ │ │ │ └── settings_sites_view.dart │ │ │ │ ├── settings_dialog.dart │ │ │ │ ├── shared/ │ │ │ │ │ ├── af_dropdown_menu_entry.dart │ │ │ │ │ ├── document_color_setting_button.dart │ │ │ │ │ ├── flowy_gradient_button.dart │ │ │ │ │ ├── setting_action.dart │ │ │ │ │ ├── setting_list_tile.dart │ │ │ │ │ ├── setting_value_dropdown.dart │ │ │ │ │ ├── settings_actionable_input.dart │ │ │ │ │ ├── settings_alert_dialog.dart │ │ │ │ │ ├── settings_body.dart │ │ │ │ │ ├── settings_category.dart │ │ │ │ │ ├── settings_category_spacer.dart │ │ │ │ │ ├── settings_dashed_divider.dart │ │ │ │ │ ├── settings_dropdown.dart │ │ │ │ │ ├── settings_header.dart │ │ │ │ │ ├── settings_input_field.dart │ │ │ │ │ ├── settings_radio_select.dart │ │ │ │ │ ├── settings_subcategory.dart │ │ │ │ │ └── single_setting_action.dart │ │ │ │ └── widgets/ │ │ │ │ ├── _restart_app_button.dart │ │ │ │ ├── cancel_plan_survey_dialog.dart │ │ │ │ ├── emoji_picker/ │ │ │ │ │ ├── emoji_picker.dart │ │ │ │ │ ├── emoji_shortcut_event.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── default_emoji_picker_view.dart │ │ │ │ │ ├── emji_picker_config.dart │ │ │ │ │ ├── emoji_lists.dart │ │ │ │ │ ├── emoji_picker.dart │ │ │ │ │ ├── emoji_picker_builder.dart │ │ │ │ │ ├── emoji_view_state.dart │ │ │ │ │ ├── flowy_emoji_picker_config.dart │ │ │ │ │ └── models/ │ │ │ │ │ ├── emoji_category_models.dart │ │ │ │ │ ├── emoji_model.dart │ │ │ │ │ └── recent_emoji_model.dart │ │ │ │ ├── feature_flags/ │ │ │ │ │ ├── feature_flag_page.dart │ │ │ │ │ └── mobile_feature_flag_screen.dart │ │ │ │ ├── files/ │ │ │ │ │ ├── settings_export_file_widget.dart │ │ │ │ │ └── settings_file_exporter_widget.dart │ │ │ │ ├── members/ │ │ │ │ │ ├── invitation/ │ │ │ │ │ │ ├── invite_member_by_email.dart │ │ │ │ │ │ ├── invite_member_by_link.dart │ │ │ │ │ │ ├── m_invite_member_by_email.dart │ │ │ │ │ │ ├── m_invite_member_by_link.dart │ │ │ │ │ │ └── member_http_service.dart │ │ │ │ │ ├── workspace_member_bloc.dart │ │ │ │ │ └── workspace_member_page.dart │ │ │ │ ├── setting_appflowy_cloud.dart │ │ │ │ ├── setting_cloud.dart │ │ │ │ ├── setting_local_cloud.dart │ │ │ │ ├── setting_third_party_login.dart │ │ │ │ ├── settings_menu.dart │ │ │ │ ├── settings_menu_element.dart │ │ │ │ ├── settings_notifications_view.dart │ │ │ │ ├── theme_upload/ │ │ │ │ │ ├── theme_confirm_delete_dialog.dart │ │ │ │ │ ├── theme_upload.dart │ │ │ │ │ ├── theme_upload_button.dart │ │ │ │ │ ├── theme_upload_decoration.dart │ │ │ │ │ ├── theme_upload_failure_widget.dart │ │ │ │ │ ├── theme_upload_learn_more_button.dart │ │ │ │ │ ├── theme_upload_loading_widget.dart │ │ │ │ │ ├── theme_upload_view.dart │ │ │ │ │ └── upload_new_theme_widget.dart │ │ │ │ ├── utils/ │ │ │ │ │ ├── form_factor.dart │ │ │ │ │ └── hex_opacity_string_extension.dart │ │ │ │ └── web_url_hint_widget.dart │ │ │ └── widgets/ │ │ │ ├── date_picker/ │ │ │ │ ├── appflowy_date_picker_base.dart │ │ │ │ ├── desktop_date_picker.dart │ │ │ │ ├── mobile_date_picker.dart │ │ │ │ ├── utils/ │ │ │ │ │ ├── date_time_format_ext.dart │ │ │ │ │ ├── layout.dart │ │ │ │ │ └── user_time_format_ext.dart │ │ │ │ └── widgets/ │ │ │ │ ├── clear_date_button.dart │ │ │ │ ├── date_picker.dart │ │ │ │ ├── date_picker_dialog.dart │ │ │ │ ├── date_time_settings.dart │ │ │ │ ├── date_time_text_field.dart │ │ │ │ ├── date_type_option_button.dart │ │ │ │ ├── end_time_button.dart │ │ │ │ ├── mobile_date_editor.dart │ │ │ │ ├── mobile_date_header.dart │ │ │ │ └── reminder_selector.dart │ │ │ ├── dialog_v2.dart │ │ │ ├── dialogs.dart │ │ │ ├── draggable_item/ │ │ │ │ └── draggable_item.dart │ │ │ ├── edit_panel/ │ │ │ │ ├── edit_panel.dart │ │ │ │ └── panel_animation.dart │ │ │ ├── favorite_button.dart │ │ │ ├── float_bubble/ │ │ │ │ ├── question_bubble.dart │ │ │ │ ├── social_media_section.dart │ │ │ │ └── version_section.dart │ │ │ ├── image_viewer/ │ │ │ │ ├── image_provider.dart │ │ │ │ ├── interactive_image_toolbar.dart │ │ │ │ └── interactive_image_viewer.dart │ │ │ ├── more_view_actions/ │ │ │ │ ├── more_view_actions.dart │ │ │ │ └── widgets/ │ │ │ │ ├── common_view_action.dart │ │ │ │ ├── font_size_action.dart │ │ │ │ ├── font_size_stepper.dart │ │ │ │ ├── lock_page_action.dart │ │ │ │ └── view_meta_info.dart │ │ │ ├── pop_up_action.dart │ │ │ ├── rename_view_popover.dart │ │ │ ├── sidebar_resizer.dart │ │ │ ├── tab_bar_item.dart │ │ │ ├── toggle/ │ │ │ │ └── toggle.dart │ │ │ ├── user_avatar.dart │ │ │ └── view_title_bar.dart │ │ ├── linux/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── dart_ffi/ │ │ │ │ └── binding.h │ │ │ ├── main.cc │ │ │ ├── my_application.cc │ │ │ ├── my_application.h │ │ │ └── packaging/ │ │ │ ├── deb/ │ │ │ │ └── make_config.yaml │ │ │ └── rpm/ │ │ │ └── make_config.yaml │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ └── Flutter-Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Base.lproj/ │ │ │ │ │ └── MainMenu.xib │ │ │ │ ├── Configs/ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ ├── Info.plist │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ └── Release.entitlements │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── build/ │ │ │ └── ios/ │ │ │ └── XCBuildData/ │ │ │ └── PIFCache/ │ │ │ ├── project/ │ │ │ │ └── PROJECT@v11_mod=a7fbf46937053896f73cc7c7ec6baefb_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1-json │ │ │ └── workspace/ │ │ │ └── WORKSPACE@v11_hash=(null)_subobjects=9b6915bad2214bcc5eb58b855fe7b55a-json │ │ ├── packages/ │ │ │ ├── appflowy_backend/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── android/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── settings.gradle │ │ │ │ │ └── src/ │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── plugin/ │ │ │ │ │ └── appflowy_backend/ │ │ │ │ │ └── AppFlowyBackendPlugin.kt │ │ │ │ ├── example/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── android/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ │ │ │ └── flowy_sdk_example/ │ │ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ ├── gradle.properties │ │ │ │ │ │ └── settings.gradle │ │ │ │ │ ├── integration_test/ │ │ │ │ │ │ ├── app_test.dart │ │ │ │ │ │ └── driver.dart │ │ │ │ │ ├── ios/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ │ ├── Podfile │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── main.dart │ │ │ │ │ ├── macos/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ │ ├── Podfile │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── widget_test.dart │ │ │ │ │ └── windows/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ └── runner/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Runner.rc │ │ │ │ │ ├── flutter_window.cpp │ │ │ │ │ ├── flutter_window.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ ├── resource.h │ │ │ │ │ ├── runner.exe.manifest │ │ │ │ │ ├── utils.cpp │ │ │ │ │ ├── utils.h │ │ │ │ │ ├── win32_window.cpp │ │ │ │ │ └── win32_window.h │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Assets/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ ├── AppFlowyBackendPlugin.h │ │ │ │ │ │ ├── AppFlowyBackendPlugin.m │ │ │ │ │ │ ├── AppFlowyBackendPlugin.swift │ │ │ │ │ │ └── binding.h │ │ │ │ │ └── appflowy_backend.podspec │ │ │ │ ├── lib/ │ │ │ │ │ ├── appflowy_backend.dart │ │ │ │ │ ├── appflowy_backend_method_channel.dart │ │ │ │ │ ├── appflowy_backend_platform_interface.dart │ │ │ │ │ ├── dispatch/ │ │ │ │ │ │ ├── dispatch.dart │ │ │ │ │ │ └── error.dart │ │ │ │ │ ├── ffi.dart │ │ │ │ │ ├── log.dart │ │ │ │ │ └── rust_stream.dart │ │ │ │ ├── linux/ │ │ │ │ │ └── Classes/ │ │ │ │ │ └── binding.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ ├── AppFlowyBackendPlugin.swift │ │ │ │ │ │ └── binding.h │ │ │ │ │ └── appflowy_backend.podspec │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test/ │ │ │ │ │ ├── appflowy_backend_method_channel_test.dart │ │ │ │ │ └── appflowy_backend_test.dart │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── app_flowy_backend_plugin.h │ │ │ │ ├── appflowy_backend_plugin.cpp │ │ │ │ ├── appflowy_backend_plugin_c_api.cpp │ │ │ │ └── include/ │ │ │ │ └── appflowy_backend/ │ │ │ │ ├── app_flowy_backend_plugin.h │ │ │ │ └── appflowy_backend_plugin_c_api.h │ │ │ ├── appflowy_popover/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── example/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── android/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ ├── gradle.properties │ │ │ │ │ │ └── settings.gradle │ │ │ │ │ ├── ios/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── example_button.dart │ │ │ │ │ │ └── main.dart │ │ │ │ │ ├── linux/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ │ ├── main.cc │ │ │ │ │ │ ├── my_application.cc │ │ │ │ │ │ └── my_application.h │ │ │ │ │ ├── macos/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ ├── web/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── manifest.json │ │ │ │ │ └── windows/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ └── runner/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Runner.rc │ │ │ │ │ ├── flutter_window.cpp │ │ │ │ │ ├── flutter_window.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ ├── resource.h │ │ │ │ │ ├── runner.exe.manifest │ │ │ │ │ ├── utils.cpp │ │ │ │ │ ├── utils.h │ │ │ │ │ ├── win32_window.cpp │ │ │ │ │ └── win32_window.h │ │ │ │ ├── lib/ │ │ │ │ │ ├── appflowy_popover.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── follower.dart │ │ │ │ │ ├── layout.dart │ │ │ │ │ ├── mask.dart │ │ │ │ │ ├── mutex.dart │ │ │ │ │ └── popover.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ └── popover_test.dart │ │ │ ├── appflowy_result/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── appflowy_result.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── async_result.dart │ │ │ │ │ └── result.dart │ │ │ │ └── pubspec.yaml │ │ │ ├── appflowy_ui/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── example/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── main.dart │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── avatar/ │ │ │ │ │ │ │ └── avatar_page.dart │ │ │ │ │ │ ├── buttons/ │ │ │ │ │ │ │ └── buttons_page.dart │ │ │ │ │ │ ├── dropdown_menu/ │ │ │ │ │ │ │ └── dropdown_menu_page.dart │ │ │ │ │ │ ├── menu/ │ │ │ │ │ │ │ └── menu_page.dart │ │ │ │ │ │ ├── modal/ │ │ │ │ │ │ │ └── modal_page.dart │ │ │ │ │ │ └── textfield/ │ │ │ │ │ │ └── textfield_page.dart │ │ │ │ │ ├── macos/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ │ ├── Podfile │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ │ └── RunnerTests.swift │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ └── test/ │ │ │ │ │ └── widget_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── appflowy_ui.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── component/ │ │ │ │ │ │ ├── avatar/ │ │ │ │ │ │ │ └── avatar.dart │ │ │ │ │ │ ├── button/ │ │ │ │ │ │ │ ├── base_button/ │ │ │ │ │ │ │ │ ├── base.dart │ │ │ │ │ │ │ │ ├── base_button.dart │ │ │ │ │ │ │ │ └── base_text_button.dart │ │ │ │ │ │ │ ├── button.dart │ │ │ │ │ │ │ ├── filled_button/ │ │ │ │ │ │ │ │ ├── filled_button.dart │ │ │ │ │ │ │ │ ├── filled_icon_text_button.dart │ │ │ │ │ │ │ │ └── filled_text_button.dart │ │ │ │ │ │ │ ├── ghost_button/ │ │ │ │ │ │ │ │ ├── ghost_button.dart │ │ │ │ │ │ │ │ ├── ghost_icon_text_button.dart │ │ │ │ │ │ │ │ └── ghost_text_button.dart │ │ │ │ │ │ │ └── outlined_button/ │ │ │ │ │ │ │ ├── outlined_button.dart │ │ │ │ │ │ │ ├── outlined_icon_text_button.dart │ │ │ │ │ │ │ └── outlined_text_button.dart │ │ │ │ │ │ ├── component.dart │ │ │ │ │ │ ├── dropdown_menu/ │ │ │ │ │ │ │ └── dropdown_menu.dart │ │ │ │ │ │ ├── menu/ │ │ │ │ │ │ │ ├── menu.dart │ │ │ │ │ │ │ ├── menu_item.dart │ │ │ │ │ │ │ ├── section.dart │ │ │ │ │ │ │ └── text_menu_item.dart │ │ │ │ │ │ ├── modal/ │ │ │ │ │ │ │ ├── dimension.dart │ │ │ │ │ │ │ └── modal.dart │ │ │ │ │ │ ├── popover/ │ │ │ │ │ │ │ ├── anchor.dart │ │ │ │ │ │ │ ├── popover.dart │ │ │ │ │ │ │ └── shadcn/ │ │ │ │ │ │ │ ├── _mouse_area.dart │ │ │ │ │ │ │ └── _portal.dart │ │ │ │ │ │ ├── separator/ │ │ │ │ │ │ │ └── divider.dart │ │ │ │ │ │ └── textfield/ │ │ │ │ │ │ └── textfield.dart │ │ │ │ │ └── theme/ │ │ │ │ │ ├── appflowy_theme.dart │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── appflowy_default/ │ │ │ │ │ │ │ ├── primitive.dart │ │ │ │ │ │ │ └── semantic.dart │ │ │ │ │ │ ├── built_in_themes.dart │ │ │ │ │ │ ├── custom/ │ │ │ │ │ │ │ └── custom_theme.dart │ │ │ │ │ │ └── shared.dart │ │ │ │ │ ├── definition/ │ │ │ │ │ │ ├── border_radius/ │ │ │ │ │ │ │ └── border_radius.dart │ │ │ │ │ │ ├── color_scheme/ │ │ │ │ │ │ │ ├── background_color_scheme.dart │ │ │ │ │ │ │ ├── badge_color_scheme.dart │ │ │ │ │ │ │ ├── border_color_scheme.dart │ │ │ │ │ │ │ ├── brand_color_scheme.dart │ │ │ │ │ │ │ ├── color_scheme.dart │ │ │ │ │ │ │ ├── fill_color_scheme.dart │ │ │ │ │ │ │ ├── icon_color_scheme.dart │ │ │ │ │ │ │ ├── other_color_scheme.dart │ │ │ │ │ │ │ ├── surface_color_scheme.dart │ │ │ │ │ │ │ ├── surface_container_color_scheme.dart │ │ │ │ │ │ │ └── text_color_scheme.dart │ │ │ │ │ │ ├── shadow/ │ │ │ │ │ │ │ └── shadow.dart │ │ │ │ │ │ ├── spacing/ │ │ │ │ │ │ │ └── spacing.dart │ │ │ │ │ │ ├── text_style/ │ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ │ └── default_text_style.dart │ │ │ │ │ │ │ └── text_style.dart │ │ │ │ │ │ └── theme_data.dart │ │ │ │ │ └── theme.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── script/ │ │ │ │ ├── Primitive.Mode 1.tokens.json │ │ │ │ ├── Semantic.Dark Mode.tokens.json │ │ │ │ ├── Semantic.Light Mode.tokens.json │ │ │ │ └── generate_theme.dart │ │ │ ├── flowy_infra/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── LICENSE │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── colorscheme/ │ │ │ │ │ │ ├── colorscheme.dart │ │ │ │ │ │ ├── dandelion.dart │ │ │ │ │ │ ├── default_colorscheme.dart │ │ │ │ │ │ ├── lavender.dart │ │ │ │ │ │ └── lemonade.dart │ │ │ │ │ ├── file_picker/ │ │ │ │ │ │ ├── file_picker_impl.dart │ │ │ │ │ │ └── file_picker_service.dart │ │ │ │ │ ├── icon_data.dart │ │ │ │ │ ├── language.dart │ │ │ │ │ ├── notifier.dart │ │ │ │ │ ├── platform_extension.dart │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── bloc/ │ │ │ │ │ │ │ ├── dynamic_plugin_bloc.dart │ │ │ │ │ │ │ ├── dynamic_plugin_event.dart │ │ │ │ │ │ │ └── dynamic_plugin_state.dart │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── location_service.dart │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ ├── exceptions.dart │ │ │ │ │ │ │ ├── flowy_dynamic_plugin.dart │ │ │ │ │ │ │ └── plugin_type.dart │ │ │ │ │ │ └── plugin_service.dart │ │ │ │ │ ├── size.dart │ │ │ │ │ ├── theme.dart │ │ │ │ │ ├── theme_extension.dart │ │ │ │ │ ├── time/ │ │ │ │ │ │ ├── duration.dart │ │ │ │ │ │ └── prelude.dart │ │ │ │ │ ├── utils/ │ │ │ │ │ │ └── color_converter.dart │ │ │ │ │ └── uuid.dart │ │ │ │ └── pubspec.yaml │ │ │ ├── flowy_infra_ui/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── android/ │ │ │ │ │ ├── .classpath │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .project │ │ │ │ │ ├── .settings/ │ │ │ │ │ │ └── org.eclipse.buildship.core.prefs │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── settings.gradle │ │ │ │ │ └── src/ │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── flowy_infra_ui/ │ │ │ │ │ │ ├── FlowyInfraUIPlugin.java │ │ │ │ │ │ └── event/ │ │ │ │ │ │ └── KeyboardEventHandler.java │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── example/ │ │ │ │ │ └── flowy_infra_ui/ │ │ │ │ │ └── FlowyInfraUiPlugin.kt │ │ │ │ ├── example/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── android/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .project │ │ │ │ │ │ ├── .settings/ │ │ │ │ │ │ │ └── org.eclipse.buildship.core.prefs │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── .classpath │ │ │ │ │ │ │ ├── .project │ │ │ │ │ │ │ ├── .settings/ │ │ │ │ │ │ │ │ └── org.eclipse.buildship.core.prefs │ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ │ │ │ ├── example/ │ │ │ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ │ │ │ └── flowy_infra_ui_example/ │ │ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ ├── gradle.properties │ │ │ │ │ │ └── settings.gradle │ │ │ │ │ ├── example/ │ │ │ │ │ │ └── android/ │ │ │ │ │ │ └── app/ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── flowy_infra_ui_example/ │ │ │ │ │ │ └── FlutterActivity.java │ │ │ │ │ ├── ios/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ │ ├── Podfile │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── home/ │ │ │ │ │ │ │ ├── demo_item.dart │ │ │ │ │ │ │ └── home_screen.dart │ │ │ │ │ │ ├── keyboard/ │ │ │ │ │ │ │ └── keyboard_screen.dart │ │ │ │ │ │ ├── main.dart │ │ │ │ │ │ └── overlay/ │ │ │ │ │ │ └── overlay_screen.dart │ │ │ │ │ ├── linux/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ │ ├── main.cc │ │ │ │ │ │ ├── my_application.cc │ │ │ │ │ │ └── my_application.h │ │ │ │ │ ├── macos/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ │ ├── Podfile │ │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── widget_test.dart │ │ │ │ │ ├── web/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── manifest.json │ │ │ │ │ └── windows/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ └── runner/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Runner.rc │ │ │ │ │ ├── flutter_window.cpp │ │ │ │ │ ├── flutter_window.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ ├── resource.h │ │ │ │ │ ├── runner.exe.manifest │ │ │ │ │ ├── utils.cpp │ │ │ │ │ ├── utils.h │ │ │ │ │ ├── win32_window.cpp │ │ │ │ │ └── win32_window.h │ │ │ │ ├── flowy_infra_ui_platform_interface/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── flowy_infra_ui_platform_interface.dart │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── method_channel_flowy_infra_ui.dart │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ └── test/ │ │ │ │ │ └── flowy_infra_ui_platform_interface_test.dart │ │ │ │ ├── flowy_infra_ui_web/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .metadata │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── analysis_options.yaml │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── flowy_infra_ui_web.dart │ │ │ │ │ ├── pubspec.yaml │ │ │ │ │ └── test/ │ │ │ │ │ └── flowy_infra_ui_web_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Assets/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ ├── Event/ │ │ │ │ │ │ │ └── KeyboardEventHandler.swift │ │ │ │ │ │ ├── FlowyInfraUIPlugin.h │ │ │ │ │ │ ├── FlowyInfraUIPlugin.m │ │ │ │ │ │ └── SwiftFlowyInfraUIPlugin.swift │ │ │ │ │ └── flowy_infra_ui.podspec │ │ │ │ ├── lib/ │ │ │ │ │ ├── basis.dart │ │ │ │ │ ├── flowy_infra_ui.dart │ │ │ │ │ ├── flowy_infra_ui_web.dart │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── flowy_overlay/ │ │ │ │ │ │ │ ├── appflowy_popover.dart │ │ │ │ │ │ │ ├── flowy_dialog.dart │ │ │ │ │ │ │ ├── flowy_overlay.dart │ │ │ │ │ │ │ ├── flowy_popover_layout.dart │ │ │ │ │ │ │ ├── layout.dart │ │ │ │ │ │ │ ├── list_overlay.dart │ │ │ │ │ │ │ └── option_overlay.dart │ │ │ │ │ │ ├── focus/ │ │ │ │ │ │ │ └── auto_unfocus_overlay.dart │ │ │ │ │ │ └── keyboard/ │ │ │ │ │ │ └── keyboard_visibility_detector.dart │ │ │ │ │ ├── style_widget/ │ │ │ │ │ │ ├── bar_title.dart │ │ │ │ │ │ ├── button.dart │ │ │ │ │ │ ├── close_button.dart │ │ │ │ │ │ ├── color_picker.dart │ │ │ │ │ │ ├── container.dart │ │ │ │ │ │ ├── decoration.dart │ │ │ │ │ │ ├── divider.dart │ │ │ │ │ │ ├── extension.dart │ │ │ │ │ │ ├── hover.dart │ │ │ │ │ │ ├── icon_button.dart │ │ │ │ │ │ ├── image_icon.dart │ │ │ │ │ │ ├── primary_rounded_button.dart │ │ │ │ │ │ ├── progress_indicator.dart │ │ │ │ │ │ ├── scrollbar.dart │ │ │ │ │ │ ├── scrolling/ │ │ │ │ │ │ │ ├── styled_list.dart │ │ │ │ │ │ │ ├── styled_scroll_bar.dart │ │ │ │ │ │ │ └── styled_scrollview.dart │ │ │ │ │ │ ├── snap_bar.dart │ │ │ │ │ │ ├── text.dart │ │ │ │ │ │ ├── text_field.dart │ │ │ │ │ │ ├── text_input.dart │ │ │ │ │ │ └── toolbar_button.dart │ │ │ │ │ └── widget/ │ │ │ │ │ ├── buttons/ │ │ │ │ │ │ ├── base_styled_button.dart │ │ │ │ │ │ ├── primary_button.dart │ │ │ │ │ │ └── secondary_button.dart │ │ │ │ │ ├── constraint_flex_view.dart │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ ├── dialog_size.dart │ │ │ │ │ │ └── styled_dialogs.dart │ │ │ │ │ ├── flowy_tooltip.dart │ │ │ │ │ ├── ignore_parent_gesture.dart │ │ │ │ │ ├── mouse_hover_builder.dart │ │ │ │ │ ├── rounded_button.dart │ │ │ │ │ ├── rounded_input_field.dart │ │ │ │ │ ├── route/ │ │ │ │ │ │ └── animation.dart │ │ │ │ │ ├── separated_flex.dart │ │ │ │ │ └── spacing.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flowy_infra_u_i_plugin.cc │ │ │ │ │ ├── flowy_infra_ui_plugin.cc │ │ │ │ │ └── include/ │ │ │ │ │ └── flowy_infra_ui/ │ │ │ │ │ ├── flowy_infra_u_i_plugin.h │ │ │ │ │ └── flowy_infra_ui_plugin.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── Classes/ │ │ │ │ │ │ └── FlowyInfraUiPlugin.swift │ │ │ │ │ └── flowy_infra_ui.podspec │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test/ │ │ │ │ │ └── flowy_infra_ui_test.dart │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flowy_infra_ui_plugin.cpp │ │ │ │ └── include/ │ │ │ │ └── flowy_infra_ui/ │ │ │ │ ├── flowy_infra_u_i_plugin.h │ │ │ │ └── flowy_infra_ui_plugin.h │ │ │ └── flowy_svg/ │ │ │ ├── .github/ │ │ │ │ ├── ISSUE_TEMPLATE/ │ │ │ │ │ ├── bug_report.md │ │ │ │ │ ├── build.md │ │ │ │ │ ├── chore.md │ │ │ │ │ ├── ci.md │ │ │ │ │ ├── config.yml │ │ │ │ │ ├── documentation.md │ │ │ │ │ ├── feature_request.md │ │ │ │ │ ├── performance.md │ │ │ │ │ ├── refactor.md │ │ │ │ │ ├── revert.md │ │ │ │ │ ├── style.md │ │ │ │ │ └── test.md │ │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ │ ├── cspell.json │ │ │ │ ├── dependabot.yaml │ │ │ │ └── workflows/ │ │ │ │ └── main.yaml │ │ │ ├── .gitignore │ │ │ ├── analysis_options.yaml │ │ │ ├── bin/ │ │ │ │ ├── flowy_svg.dart │ │ │ │ └── options.dart │ │ │ ├── lib/ │ │ │ │ ├── flowy_svg.dart │ │ │ │ └── src/ │ │ │ │ └── flowy_svg.dart │ │ │ └── pubspec.yaml │ │ ├── pubspec.lock │ │ ├── pubspec.yaml │ │ ├── test/ │ │ │ ├── bloc_test/ │ │ │ │ ├── ai_writer_test/ │ │ │ │ │ └── ai_writer_bloc_test.dart │ │ │ │ ├── app_setting_test/ │ │ │ │ │ ├── appearance_test.dart │ │ │ │ │ └── document_appearance_test.dart │ │ │ │ ├── board_test/ │ │ │ │ │ ├── create_card_test.dart │ │ │ │ │ ├── create_or_edit_field_test.dart │ │ │ │ │ ├── group_by_checkbox_field_test.dart │ │ │ │ │ ├── group_by_date_test.dart │ │ │ │ │ ├── group_by_multi_select_field_test.dart │ │ │ │ │ ├── group_by_unsupport_field_test.dart │ │ │ │ │ └── util.dart │ │ │ │ ├── chat_test/ │ │ │ │ │ ├── chat_load_message_test.dart │ │ │ │ │ └── util.dart │ │ │ │ ├── grid_test/ │ │ │ │ │ ├── cell/ │ │ │ │ │ │ ├── checklist_cell_bloc_test.dart │ │ │ │ │ │ ├── date_cell_bloc_test.dart │ │ │ │ │ │ ├── select_option_cell_test.dart │ │ │ │ │ │ └── text_cell_bloc_test.dart │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── field_cell_bloc_test.dart │ │ │ │ │ │ └── field_editor_bloc_test.dart │ │ │ │ │ ├── filter/ │ │ │ │ │ │ ├── filter_editor_bloc_test.dart │ │ │ │ │ │ └── filter_entities_test.dart │ │ │ │ │ ├── grid_bloc_test.dart │ │ │ │ │ ├── sort/ │ │ │ │ │ │ └── sort_editor_bloc_test.dart │ │ │ │ │ └── util.dart │ │ │ │ ├── home_test/ │ │ │ │ │ ├── home_bloc_test.dart │ │ │ │ │ ├── sidebar_section_bloc_test.dart │ │ │ │ │ ├── trash_bloc_test.dart │ │ │ │ │ └── view_bloc_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── features/ │ │ │ │ │ ├── settings/ │ │ │ │ │ │ └── data_location_bloc_test.dart │ │ │ │ │ ├── share_section/ │ │ │ │ │ │ └── shared_section_bloc_test.dart │ │ │ │ │ └── share_tab/ │ │ │ │ │ └── share_tab_bloc_test.dart │ │ │ │ ├── shortcuts_test/ │ │ │ │ │ └── shortcuts_cubit_test.dart │ │ │ │ ├── view_selector_test.dart │ │ │ │ └── workspace_test/ │ │ │ │ └── workspace_bloc_test.dart │ │ │ ├── unit_test/ │ │ │ │ ├── algorithm/ │ │ │ │ │ └── levenshtein_test.dart │ │ │ │ ├── deeplink/ │ │ │ │ │ └── deeplink_test.dart │ │ │ │ ├── document/ │ │ │ │ │ ├── document_diff/ │ │ │ │ │ │ └── document_diff_test.dart │ │ │ │ │ ├── html/ │ │ │ │ │ │ ├── _html_samples.dart │ │ │ │ │ │ └── paste_from_html_test.dart │ │ │ │ │ ├── option_menu/ │ │ │ │ │ │ └── block_action_option_cubit_test.dart │ │ │ │ │ ├── shortcuts/ │ │ │ │ │ │ ├── format_shortcut_test.dart │ │ │ │ │ │ └── toggle_list_shortcut_test.dart │ │ │ │ │ ├── text_robot/ │ │ │ │ │ │ ├── markdown_text_robot_test.dart │ │ │ │ │ │ └── text_robot_test.dart │ │ │ │ │ └── turn_into/ │ │ │ │ │ └── turn_into_test.dart │ │ │ │ ├── editor/ │ │ │ │ │ ├── editor_drop_test.dart │ │ │ │ │ ├── editor_migration_test.dart │ │ │ │ │ ├── editor_style_test.dart │ │ │ │ │ ├── file_block_test.dart │ │ │ │ │ ├── share_markdown_test.dart │ │ │ │ │ └── transaction_adapter_test.dart │ │ │ │ ├── image/ │ │ │ │ │ └── appflowy_network_image_test.dart │ │ │ │ ├── link_preview/ │ │ │ │ │ └── link_preview_test.dart │ │ │ │ ├── markdown/ │ │ │ │ │ └── markdown_parser_test.dart │ │ │ │ ├── search/ │ │ │ │ │ └── split_search_test.dart │ │ │ │ ├── select_option_split_text_input.dart │ │ │ │ ├── settings/ │ │ │ │ │ ├── shortcuts/ │ │ │ │ │ │ └── settings_shortcut_service_test.dart │ │ │ │ │ └── theme_missing_keys_test.dart │ │ │ │ ├── simple_table/ │ │ │ │ │ ├── simple_table_contente_operation_test.dart │ │ │ │ │ ├── simple_table_delete_operation_test.dart │ │ │ │ │ ├── simple_table_duplicate_operation_test.dart │ │ │ │ │ ├── simple_table_header_operation_test.dart │ │ │ │ │ ├── simple_table_insert_operation_test.dart │ │ │ │ │ ├── simple_table_markdown_test.dart │ │ │ │ │ ├── simple_table_reorder_operation_test.dart │ │ │ │ │ ├── simple_table_style_operation_test.dart │ │ │ │ │ └── simple_table_test_helper.dart │ │ │ │ ├── theme/ │ │ │ │ │ └── theme_test.dart │ │ │ │ ├── url_launcher/ │ │ │ │ │ └── url_launcher_test.dart │ │ │ │ └── util/ │ │ │ │ ├── recent_icons_test.dart │ │ │ │ └── time.dart │ │ │ ├── util.dart │ │ │ └── widget_test/ │ │ │ ├── confirm_dialog_test.dart │ │ │ ├── date_picker_test.dart │ │ │ ├── direction_setting_test.dart │ │ │ ├── lib/ │ │ │ │ └── features/ │ │ │ │ ├── share_section/ │ │ │ │ │ ├── refresh_button_test.dart │ │ │ │ │ ├── shared_page_actions_button_test.dart │ │ │ │ │ ├── shared_pages_list_test.dart │ │ │ │ │ ├── shared_section_error_test.dart │ │ │ │ │ ├── shared_section_header_test.dart │ │ │ │ │ └── shared_section_loading_test.dart │ │ │ │ └── share_tab/ │ │ │ │ ├── access_level_list_widget_test.dart │ │ │ │ ├── copy_link_widget_test.dart │ │ │ │ ├── edit_access_level_widget_test.dart │ │ │ │ ├── general_access_section_test.dart │ │ │ │ ├── people_with_access_section_test.dart │ │ │ │ ├── share_with_user_widget_test.dart │ │ │ │ ├── shared_group_widget_test.dart │ │ │ │ └── shared_user_widget_test.dart │ │ │ ├── select_option_text_field_test.dart │ │ │ ├── spae_cion_test.dart │ │ │ ├── test_asset_bundle.dart │ │ │ ├── test_material_app.dart │ │ │ ├── theme_font_family_setting_test.dart │ │ │ └── widget_test_wrapper.dart │ │ ├── web/ │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── windows/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter/ │ │ │ └── CMakeLists.txt │ │ └── runner/ │ │ ├── CMakeLists.txt │ │ ├── Runner.rc │ │ ├── flutter_window.cpp │ │ ├── flutter_window.h │ │ ├── main.cpp │ │ ├── resource.h │ │ ├── runner.exe.manifest │ │ ├── utils.cpp │ │ ├── utils.h │ │ ├── win32_window.cpp │ │ └── win32_window.h │ ├── resources/ │ │ └── translations/ │ │ ├── am-ET.json │ │ ├── ar-SA.json │ │ ├── ca-ES.json │ │ ├── ckb-KU.json │ │ ├── cs-CZ.json │ │ ├── de-DE.json │ │ ├── el-GR.json │ │ ├── en-GB.json │ │ ├── en-US.json │ │ ├── es-VE.json │ │ ├── eu-ES.json │ │ ├── fa.json │ │ ├── fr-CA.json │ │ ├── fr-FR.json │ │ ├── ga-IE.json │ │ ├── he.json │ │ ├── hin.json │ │ ├── hu-HU.json │ │ ├── id-ID.json │ │ ├── it-IT.json │ │ ├── ja-JP.json │ │ ├── ko-KR.json │ │ ├── mr-IN.json │ │ ├── pl-PL.json │ │ ├── pt-BR.json │ │ ├── pt-PT.json │ │ ├── ru-RU.json │ │ ├── sv-SE.json │ │ ├── th-TH.json │ │ ├── tr-TR.json │ │ ├── uk-UA.json │ │ ├── ur.json │ │ ├── vi-VN.json │ │ ├── vi.json │ │ ├── zh-CN.json │ │ └── zh-TW.json │ ├── rust-lib/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── Cargo.toml │ │ ├── build-tool/ │ │ │ ├── flowy-ast/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ ├── ast.rs │ │ │ │ ├── ctxt.rs │ │ │ │ ├── event_attrs.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── node_attrs.rs │ │ │ │ ├── pb_attrs.rs │ │ │ │ ├── symbol.rs │ │ │ │ └── ty_ext.rs │ │ │ ├── flowy-codegen/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ ├── ast.rs │ │ │ │ ├── dart_event/ │ │ │ │ │ ├── dart_event.rs │ │ │ │ │ ├── event_template.rs │ │ │ │ │ ├── event_template.tera │ │ │ │ │ └── mod.rs │ │ │ │ ├── flowy_toml.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── protobuf_file/ │ │ │ │ │ ├── ast.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── proto_gen.rs │ │ │ │ │ ├── proto_info.rs │ │ │ │ │ └── template/ │ │ │ │ │ ├── derive_meta/ │ │ │ │ │ │ ├── derive_meta.rs │ │ │ │ │ │ ├── derive_meta.tera │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── proto_file/ │ │ │ │ │ ├── enum.tera │ │ │ │ │ ├── enum_template.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── struct.tera │ │ │ │ │ └── struct_template.rs │ │ │ │ ├── ts_event/ │ │ │ │ │ ├── event_template.rs │ │ │ │ │ ├── event_template.tera │ │ │ │ │ └── mod.rs │ │ │ │ └── util.rs │ │ │ └── flowy-derive/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── dart_event/ │ │ │ │ └── mod.rs │ │ │ ├── lib.rs │ │ │ ├── node/ │ │ │ │ └── mod.rs │ │ │ └── proto_buf/ │ │ │ ├── deserialize.rs │ │ │ ├── enum_serde.rs │ │ │ ├── mod.rs │ │ │ ├── serialize.rs │ │ │ └── util.rs │ │ ├── collab-integrate/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── collab_builder.rs │ │ │ ├── config.rs │ │ │ ├── instant_indexed_data_provider.rs │ │ │ ├── lib.rs │ │ │ └── plugin_provider.rs │ │ ├── covtest.rs │ │ ├── dart-ffi/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── binding.h │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── appflowy_yaml.rs │ │ │ ├── c.rs │ │ │ ├── env_serde.rs │ │ │ ├── lib.rs │ │ │ ├── model/ │ │ │ │ ├── ffi_request.rs │ │ │ │ ├── ffi_response.rs │ │ │ │ └── mod.rs │ │ │ └── notification/ │ │ │ ├── mod.rs │ │ │ └── sender.rs │ │ ├── event-integration-test/ │ │ │ ├── Cargo.toml │ │ │ ├── src/ │ │ │ │ ├── chat_event.rs │ │ │ │ ├── database_event.rs │ │ │ │ ├── document/ │ │ │ │ │ ├── document_event.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── utils.rs │ │ │ │ ├── document_event.rs │ │ │ │ ├── event_builder.rs │ │ │ │ ├── folder_event.rs │ │ │ │ ├── lib.rs │ │ │ │ └── user_event.rs │ │ │ └── tests/ │ │ │ ├── asset/ │ │ │ │ ├── database_template_1.afdb │ │ │ │ ├── japan_trip.md │ │ │ │ └── project.csv │ │ │ ├── chat/ │ │ │ │ ├── chat_message_test.rs │ │ │ │ ├── local_chat_test.rs │ │ │ │ └── mod.rs │ │ │ ├── database/ │ │ │ │ ├── af_cloud/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── summarize_row_test.rs │ │ │ │ │ ├── translate_row_test.rs │ │ │ │ │ └── util.rs │ │ │ │ ├── local_test/ │ │ │ │ │ ├── calculate_test.rs │ │ │ │ │ ├── event_test.rs │ │ │ │ │ ├── group_test.rs │ │ │ │ │ └── mod.rs │ │ │ │ └── mod.rs │ │ │ ├── document/ │ │ │ │ ├── af_cloud_test/ │ │ │ │ │ ├── edit_test.rs │ │ │ │ │ ├── file_upload_test.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── local_test/ │ │ │ │ │ ├── edit_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── snapshot_test.rs │ │ │ │ └── mod.rs │ │ │ ├── folder/ │ │ │ │ ├── local_test/ │ │ │ │ │ ├── folder_test.rs │ │ │ │ │ ├── import_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── publish_database_test.rs │ │ │ │ │ ├── publish_document_test.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ ├── subscription_test.rs │ │ │ │ │ └── test.rs │ │ │ │ └── mod.rs │ │ │ ├── main.rs │ │ │ ├── search/ │ │ │ │ ├── document_title_content_search.rs │ │ │ │ └── mod.rs │ │ │ ├── sql_test/ │ │ │ │ ├── chat_message_ordering_test.rs │ │ │ │ ├── chat_message_test.rs │ │ │ │ └── mod.rs │ │ │ ├── user/ │ │ │ │ ├── af_cloud_test/ │ │ │ │ │ ├── auth_test.rs │ │ │ │ │ ├── import_af_data_folder_test.rs │ │ │ │ │ ├── member_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── util.rs │ │ │ │ │ └── workspace_test.rs │ │ │ │ ├── local_test/ │ │ │ │ │ ├── auth_test.rs │ │ │ │ │ ├── helper.rs │ │ │ │ │ ├── import_af_data_local_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── user_awareness_test.rs │ │ │ │ │ └── user_profile_test.rs │ │ │ │ ├── migration_test/ │ │ │ │ │ ├── document_test.rs │ │ │ │ │ ├── history_user_db/ │ │ │ │ │ │ └── README.md │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── version_test.rs │ │ │ │ └── mod.rs │ │ │ └── util.rs │ │ ├── flowy-ai/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ ├── dev.env │ │ │ ├── src/ │ │ │ │ ├── ai_manager.rs │ │ │ │ ├── ai_tool/ │ │ │ │ │ ├── markdown.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── pdf.rs │ │ │ │ ├── chat.rs │ │ │ │ ├── completion.rs │ │ │ │ ├── embeddings/ │ │ │ │ │ ├── context.rs │ │ │ │ │ ├── document_indexer.rs │ │ │ │ │ ├── embedder.rs │ │ │ │ │ ├── indexer.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── scheduler.rs │ │ │ │ │ └── store.rs │ │ │ │ ├── entities.rs │ │ │ │ ├── event_handler.rs │ │ │ │ ├── event_map.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── local_ai/ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ ├── chains/ │ │ │ │ │ │ │ ├── context_question_chain.rs │ │ │ │ │ │ │ ├── conversation_chain.rs │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── related_question_chain.rs │ │ │ │ │ │ ├── format_prompt.rs │ │ │ │ │ │ ├── llm.rs │ │ │ │ │ │ ├── llm_chat.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── retriever/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── multi_source_retriever.rs │ │ │ │ │ │ │ └── sqlite_retriever.rs │ │ │ │ │ │ └── summary_memory.rs │ │ │ │ │ ├── completion/ │ │ │ │ │ │ ├── chain.rs │ │ │ │ │ │ ├── impls.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── stream_interpreter.rs │ │ │ │ │ │ └── writer.rs │ │ │ │ │ ├── controller.rs │ │ │ │ │ ├── database/ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── summary.rs │ │ │ │ │ │ └── translate.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── prompt/ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── request.rs │ │ │ │ │ ├── resource.rs │ │ │ │ │ └── stream_util.rs │ │ │ │ ├── mcp/ │ │ │ │ │ ├── manager.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── middleware/ │ │ │ │ │ ├── chat_service_mw.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── model_select.rs │ │ │ │ ├── model_select_test.rs │ │ │ │ ├── notification.rs │ │ │ │ ├── offline/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── offline_message_sync.rs │ │ │ │ ├── search/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── summary.rs │ │ │ │ └── stream_message.rs │ │ │ └── tests/ │ │ │ ├── asset/ │ │ │ │ └── japan_trip.md │ │ │ ├── chat_test/ │ │ │ │ ├── mod.rs │ │ │ │ ├── qa_test.rs │ │ │ │ └── related_question_test.rs │ │ │ ├── complete_test/ │ │ │ │ └── mod.rs │ │ │ ├── main.rs │ │ │ ├── summary_test/ │ │ │ │ └── mod.rs │ │ │ └── translate_test/ │ │ │ └── mod.rs │ │ ├── flowy-ai-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ ├── entities.rs │ │ │ ├── lib.rs │ │ │ ├── persistence/ │ │ │ │ ├── chat_message_sql.rs │ │ │ │ ├── chat_sql.rs │ │ │ │ ├── collab_metadata_sql.rs │ │ │ │ ├── collab_sql.rs │ │ │ │ ├── local_model_sql.rs │ │ │ │ └── mod.rs │ │ │ └── user_service.rs │ │ ├── flowy-core/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── assets/ │ │ │ │ └── read_me.json │ │ │ └── src/ │ │ │ ├── app_life_cycle.rs │ │ │ ├── config.rs │ │ │ ├── deps_resolve/ │ │ │ │ ├── chat_deps.rs │ │ │ │ ├── cloud_service_impl.rs │ │ │ │ ├── collab_deps.rs │ │ │ │ ├── database_deps.rs │ │ │ │ ├── document_deps.rs │ │ │ │ ├── file_storage_deps.rs │ │ │ │ ├── folder_deps/ │ │ │ │ │ ├── folder_deps_chat_impl.rs │ │ │ │ │ ├── folder_deps_database_impl.rs │ │ │ │ │ ├── folder_deps_doc_impl.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── reminder_deps.rs │ │ │ │ ├── search_deps.rs │ │ │ │ └── user_deps.rs │ │ │ ├── folder_view_observer.rs │ │ │ ├── full_indexed_data_provider.rs │ │ │ ├── indexed_data_consumer.rs │ │ │ ├── indexing_data_runner.rs │ │ │ ├── lib.rs │ │ │ ├── log_filter.rs │ │ │ ├── module.rs │ │ │ └── server_layer.rs │ │ ├── flowy-database-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ └── lib.rs │ │ ├── flowy-database2/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ ├── src/ │ │ │ │ ├── entities/ │ │ │ │ │ ├── board_entities.rs │ │ │ │ │ ├── calculation/ │ │ │ │ │ │ ├── calculation_changeset.rs │ │ │ │ │ │ ├── calculation_entities.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── calendar_entities.rs │ │ │ │ │ ├── cell_entities.rs │ │ │ │ │ ├── database_entities.rs │ │ │ │ │ ├── field_entities.rs │ │ │ │ │ ├── field_settings_entities.rs │ │ │ │ │ ├── file_entities.rs │ │ │ │ │ ├── filter_entities/ │ │ │ │ │ │ ├── checkbox_filter.rs │ │ │ │ │ │ ├── checklist_filter.rs │ │ │ │ │ │ ├── date_filter.rs │ │ │ │ │ │ ├── filter_changeset.rs │ │ │ │ │ │ ├── media_filter.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── number_filter.rs │ │ │ │ │ │ ├── relation_filter.rs │ │ │ │ │ │ ├── select_option_filter.rs │ │ │ │ │ │ ├── text_filter.rs │ │ │ │ │ │ ├── time_filter.rs │ │ │ │ │ │ └── util.rs │ │ │ │ │ ├── group_entities/ │ │ │ │ │ │ ├── configuration.rs │ │ │ │ │ │ ├── group.rs │ │ │ │ │ │ ├── group_changeset.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── macros.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── parser.rs │ │ │ │ │ ├── position_entities.rs │ │ │ │ │ ├── row_entities.rs │ │ │ │ │ ├── setting_entities.rs │ │ │ │ │ ├── share_entities.rs │ │ │ │ │ ├── sort_entities.rs │ │ │ │ │ ├── type_option_entities/ │ │ │ │ │ │ ├── checkbox_entities.rs │ │ │ │ │ │ ├── checklist_entities.rs │ │ │ │ │ │ ├── date_entities.rs │ │ │ │ │ │ ├── media_entities.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── number_entities.rs │ │ │ │ │ │ ├── relation_entities.rs │ │ │ │ │ │ ├── select_option_entities.rs │ │ │ │ │ │ ├── summary_entities.rs │ │ │ │ │ │ ├── text_entities.rs │ │ │ │ │ │ ├── time_entities.rs │ │ │ │ │ │ ├── timestamp_entities.rs │ │ │ │ │ │ ├── translate_entities.rs │ │ │ │ │ │ └── url_entities.rs │ │ │ │ │ └── view_entities.rs │ │ │ │ ├── event_handler.rs │ │ │ │ ├── event_map.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── manager.rs │ │ │ │ ├── notification.rs │ │ │ │ ├── services/ │ │ │ │ │ ├── calculations/ │ │ │ │ │ │ ├── cache.rs │ │ │ │ │ │ ├── controller.rs │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── service.rs │ │ │ │ │ │ └── task.rs │ │ │ │ │ ├── cell/ │ │ │ │ │ │ ├── cell_data_cache.rs │ │ │ │ │ │ ├── cell_operation.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── type_cell_data.rs │ │ │ │ │ ├── database/ │ │ │ │ │ │ ├── database_editor.rs │ │ │ │ │ │ ├── database_observe.rs │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── util.rs │ │ │ │ │ ├── database_view/ │ │ │ │ │ │ ├── layout_deps.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── notifier.rs │ │ │ │ │ │ ├── view_calculations.rs │ │ │ │ │ │ ├── view_editor.rs │ │ │ │ │ │ ├── view_filter.rs │ │ │ │ │ │ ├── view_group.rs │ │ │ │ │ │ ├── view_operation.rs │ │ │ │ │ │ ├── view_sort.rs │ │ │ │ │ │ └── views.rs │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── field_builder.rs │ │ │ │ │ │ ├── field_operation.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── type_option_transform.rs │ │ │ │ │ │ └── type_options/ │ │ │ │ │ │ ├── checkbox_type_option/ │ │ │ │ │ │ │ ├── checkbox_filter.rs │ │ │ │ │ │ │ ├── checkbox_tests.rs │ │ │ │ │ │ │ ├── checkbox_type_option.rs │ │ │ │ │ │ │ ├── checkbox_type_option_entities.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── checklist_type_option/ │ │ │ │ │ │ │ ├── checklist_filter.rs │ │ │ │ │ │ │ ├── checklist_type_option.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── date_type_option/ │ │ │ │ │ │ │ ├── date_filter.rs │ │ │ │ │ │ │ ├── date_tests.rs │ │ │ │ │ │ │ ├── date_type_option.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── media_type_option/ │ │ │ │ │ │ │ ├── media_file.rs │ │ │ │ │ │ │ ├── media_filter.rs │ │ │ │ │ │ │ ├── media_type_option.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── number_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── number_filter.rs │ │ │ │ │ │ │ ├── number_type_option.rs │ │ │ │ │ │ │ └── number_type_option_entities.rs │ │ │ │ │ │ ├── relation_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── relation.rs │ │ │ │ │ │ │ └── relation_entities.rs │ │ │ │ │ │ ├── selection_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── multi_select_type_option.rs │ │ │ │ │ │ │ ├── select_filter.rs │ │ │ │ │ │ │ ├── select_option_tests.rs │ │ │ │ │ │ │ ├── select_type_option.rs │ │ │ │ │ │ │ ├── single_select_type_option.rs │ │ │ │ │ │ │ └── type_option_transform.rs │ │ │ │ │ │ ├── summary_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── summary.rs │ │ │ │ │ │ ├── text_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── text_filter.rs │ │ │ │ │ │ │ ├── text_tests.rs │ │ │ │ │ │ │ └── text_type_option.rs │ │ │ │ │ │ ├── time_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── time.rs │ │ │ │ │ │ │ └── time_filter.rs │ │ │ │ │ │ ├── timestamp_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── timestamp_type_option.rs │ │ │ │ │ │ ├── translate_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── translate.rs │ │ │ │ │ │ ├── type_option.rs │ │ │ │ │ │ ├── type_option_cell.rs │ │ │ │ │ │ ├── url_type_option/ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── url_tests.rs │ │ │ │ │ │ │ ├── url_type_option.rs │ │ │ │ │ │ │ └── url_type_option_entities.rs │ │ │ │ │ │ └── util.rs │ │ │ │ │ ├── field_settings/ │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ ├── field_settings_builder.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── filter/ │ │ │ │ │ │ ├── controller.rs │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── task.rs │ │ │ │ │ ├── group/ │ │ │ │ │ │ ├── action.rs │ │ │ │ │ │ ├── configuration.rs │ │ │ │ │ │ ├── controller.rs │ │ │ │ │ │ ├── controller_impls/ │ │ │ │ │ │ │ ├── checkbox_controller.rs │ │ │ │ │ │ │ ├── date_controller.rs │ │ │ │ │ │ │ ├── default_controller.rs │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── select_option_controller/ │ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ │ ├── multi_select_controller.rs │ │ │ │ │ │ │ │ ├── single_select_controller.rs │ │ │ │ │ │ │ │ └── util.rs │ │ │ │ │ │ │ └── url_controller.rs │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ ├── group_builder.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── setting/ │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── share/ │ │ │ │ │ │ ├── csv/ │ │ │ │ │ │ │ ├── export.rs │ │ │ │ │ │ │ ├── import.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ ├── entities.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ └── sort/ │ │ │ │ │ ├── controller.rs │ │ │ │ │ ├── entities.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── task.rs │ │ │ │ ├── template.rs │ │ │ │ └── utils/ │ │ │ │ ├── cache.rs │ │ │ │ └── mod.rs │ │ │ └── tests/ │ │ │ ├── database/ │ │ │ │ ├── block_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── row_test.rs │ │ │ │ │ └── script.rs │ │ │ │ ├── calculations_test/ │ │ │ │ │ ├── calculation_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── script.rs │ │ │ │ ├── cell_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ └── test.rs │ │ │ │ ├── database_editor.rs │ │ │ │ ├── field_settings_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ └── test.rs │ │ │ │ ├── field_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ ├── test.rs │ │ │ │ │ └── util.rs │ │ │ │ ├── filter_test/ │ │ │ │ │ ├── advanced_filter_test.rs │ │ │ │ │ ├── checkbox_filter_test.rs │ │ │ │ │ ├── checklist_filter_test.rs │ │ │ │ │ ├── date_filter_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── number_filter_test.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ ├── select_option_filter_test.rs │ │ │ │ │ ├── text_filter_test.rs │ │ │ │ │ └── time_filter_test.rs │ │ │ │ ├── group_test/ │ │ │ │ │ ├── date_group_test.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ ├── test.rs │ │ │ │ │ └── url_group_test.rs │ │ │ │ ├── layout_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── script.rs │ │ │ │ │ └── test.rs │ │ │ │ ├── mock_data/ │ │ │ │ │ ├── board_mock_data.rs │ │ │ │ │ ├── calendar_mock_data.rs │ │ │ │ │ ├── grid_mock_data.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── pre_fill_cell_test/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── pre_fill_row_according_to_filter_test.rs │ │ │ │ │ ├── pre_fill_row_with_payload_test.rs │ │ │ │ │ └── script.rs │ │ │ │ ├── share_test/ │ │ │ │ │ ├── export_test.rs │ │ │ │ │ └── mod.rs │ │ │ │ └── sort_test/ │ │ │ │ ├── mod.rs │ │ │ │ ├── multi_sort_test.rs │ │ │ │ ├── script.rs │ │ │ │ └── single_sort_test.rs │ │ │ └── main.rs │ │ ├── flowy-date/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── entities.rs │ │ │ ├── event_handler.rs │ │ │ ├── event_map.rs │ │ │ └── lib.rs │ │ ├── flowy-document/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ ├── src/ │ │ │ │ ├── deps.rs │ │ │ │ ├── document.rs │ │ │ │ ├── document_data.rs │ │ │ │ ├── entities.rs │ │ │ │ ├── event_handler.rs │ │ │ │ ├── event_map.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── manager.rs │ │ │ │ ├── notification.rs │ │ │ │ ├── parse.rs │ │ │ │ ├── parser/ │ │ │ │ │ ├── constant.rs │ │ │ │ │ ├── document_data_parser.rs │ │ │ │ │ ├── external/ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── parser.rs │ │ │ │ │ │ └── utils.rs │ │ │ │ │ ├── json/ │ │ │ │ │ │ ├── block.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── parser.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── parser_entities.rs │ │ │ │ │ └── utils.rs │ │ │ │ └── reminder.rs │ │ │ └── tests/ │ │ │ ├── assets/ │ │ │ │ ├── html/ │ │ │ │ │ ├── bulleted_list.html │ │ │ │ │ ├── callout.html │ │ │ │ │ ├── code.html │ │ │ │ │ ├── divider.html │ │ │ │ │ ├── google_docs.html │ │ │ │ │ ├── heading.html │ │ │ │ │ ├── image.html │ │ │ │ │ ├── math_equation.html │ │ │ │ │ ├── notion.html │ │ │ │ │ ├── numbered_list.html │ │ │ │ │ ├── paragraph.html │ │ │ │ │ ├── quote.html │ │ │ │ │ ├── simple.html │ │ │ │ │ ├── todo_list.html │ │ │ │ │ └── toggle_list.html │ │ │ │ ├── json/ │ │ │ │ │ ├── bulleted_list.json │ │ │ │ │ ├── callout.json │ │ │ │ │ ├── code.json │ │ │ │ │ ├── divider.json │ │ │ │ │ ├── google_docs.json │ │ │ │ │ ├── heading.json │ │ │ │ │ ├── image.json │ │ │ │ │ ├── initial_document.json │ │ │ │ │ ├── math_equation.json │ │ │ │ │ ├── notion.json │ │ │ │ │ ├── numbered_list.json │ │ │ │ │ ├── paragraph.json │ │ │ │ │ ├── plain_text.json │ │ │ │ │ ├── quote.json │ │ │ │ │ ├── range_1.json │ │ │ │ │ ├── range_2.json │ │ │ │ │ ├── simple.json │ │ │ │ │ ├── todo_list.json │ │ │ │ │ └── toggle_list.json │ │ │ │ └── text/ │ │ │ │ ├── bulleted_list.txt │ │ │ │ ├── callout.txt │ │ │ │ ├── code.txt │ │ │ │ ├── divider.txt │ │ │ │ ├── heading.txt │ │ │ │ ├── image.txt │ │ │ │ ├── math_equation.txt │ │ │ │ ├── numbered_list.txt │ │ │ │ ├── paragraph.txt │ │ │ │ ├── plain_text.txt │ │ │ │ ├── quote.txt │ │ │ │ ├── todo_list.txt │ │ │ │ └── toggle_list.txt │ │ │ ├── document/ │ │ │ │ ├── document_insert_test.rs │ │ │ │ ├── document_redo_undo_test.rs │ │ │ │ ├── document_test.rs │ │ │ │ ├── event_handler_test.rs │ │ │ │ ├── mod.rs │ │ │ │ └── util.rs │ │ │ ├── file_storage.rs │ │ │ ├── main.rs │ │ │ └── parser/ │ │ │ ├── document_data_parser_test.rs │ │ │ ├── html/ │ │ │ │ ├── mod.rs │ │ │ │ └── parser_test.rs │ │ │ ├── json/ │ │ │ │ ├── block_test.rs │ │ │ │ ├── mod.rs │ │ │ │ └── parser_test.rs │ │ │ ├── mod.rs │ │ │ └── parse_to_html_text/ │ │ │ ├── mod.rs │ │ │ ├── test.rs │ │ │ └── utils.rs │ │ ├── flowy-document-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ └── lib.rs │ │ ├── flowy-error/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── code.rs │ │ │ ├── errors.rs │ │ │ ├── impl_from/ │ │ │ │ ├── cloud.rs │ │ │ │ ├── collab.rs │ │ │ │ ├── collab_persistence.rs │ │ │ │ ├── database.rs │ │ │ │ ├── dispatch.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── reqwest.rs │ │ │ │ ├── serde.rs │ │ │ │ ├── tantivy.rs │ │ │ │ └── url.rs │ │ │ └── lib.rs │ │ ├── flowy-folder/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── entities/ │ │ │ │ ├── icon.rs │ │ │ │ ├── import.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser/ │ │ │ │ │ ├── empty_str.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── trash/ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── trash_id.rs │ │ │ │ │ ├── view/ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── view_id.rs │ │ │ │ │ │ ├── view_name.rs │ │ │ │ │ │ └── view_thumbnail.rs │ │ │ │ │ └── workspace/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── workspace_desc.rs │ │ │ │ │ ├── workspace_id.rs │ │ │ │ │ └── workspace_name.rs │ │ │ │ ├── publish.rs │ │ │ │ ├── trash.rs │ │ │ │ ├── view.rs │ │ │ │ └── workspace.rs │ │ │ ├── event_handler.rs │ │ │ ├── event_map.rs │ │ │ ├── lib.rs │ │ │ ├── manager.rs │ │ │ ├── manager_init.rs │ │ │ ├── manager_observer.rs │ │ │ ├── notification.rs │ │ │ ├── publish_util.rs │ │ │ ├── share/ │ │ │ │ ├── import.rs │ │ │ │ └── mod.rs │ │ │ ├── user_default.rs │ │ │ ├── util.rs │ │ │ └── view_operation.rs │ │ ├── flowy-folder-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ ├── entities.rs │ │ │ ├── lib.rs │ │ │ ├── query.rs │ │ │ └── sql/ │ │ │ ├── mod.rs │ │ │ ├── workspace_shared_user_sql.rs │ │ │ └── workspace_shared_view_sql.rs │ │ ├── flowy-notification/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── builder.rs │ │ │ ├── debounce.rs │ │ │ ├── entities/ │ │ │ │ ├── mod.rs │ │ │ │ └── subject.rs │ │ │ └── lib.rs │ │ ├── flowy-search/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ ├── src/ │ │ │ │ ├── document/ │ │ │ │ │ ├── cloud_search_handler.rs │ │ │ │ │ ├── local_search_handler.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── entities/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── notification.rs │ │ │ │ │ ├── query.rs │ │ │ │ │ ├── result.rs │ │ │ │ │ └── search_filter.rs │ │ │ │ ├── event_handler.rs │ │ │ │ ├── event_map.rs │ │ │ │ ├── lib.rs │ │ │ │ └── services/ │ │ │ │ ├── manager.rs │ │ │ │ └── mod.rs │ │ │ └── tests/ │ │ │ ├── main.rs │ │ │ └── tantivy_test.rs │ │ ├── flowy-search-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ ├── entities.rs │ │ │ ├── lib.rs │ │ │ ├── schema.rs │ │ │ ├── tantivy_state.rs │ │ │ └── tantivy_state_init.rs │ │ ├── flowy-server/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── af_cloud/ │ │ │ │ ├── define.rs │ │ │ │ ├── impls/ │ │ │ │ │ ├── chat.rs │ │ │ │ │ ├── database.rs │ │ │ │ │ ├── document.rs │ │ │ │ │ ├── file_storage.rs │ │ │ │ │ ├── folder.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── search.rs │ │ │ │ │ ├── user/ │ │ │ │ │ │ ├── cloud_service_impl.rs │ │ │ │ │ │ ├── dto.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── util.rs │ │ │ │ │ └── util.rs │ │ │ │ ├── mod.rs │ │ │ │ └── server.rs │ │ │ ├── lib.rs │ │ │ ├── local_server/ │ │ │ │ ├── impls/ │ │ │ │ │ ├── chat.rs │ │ │ │ │ ├── database.rs │ │ │ │ │ ├── document.rs │ │ │ │ │ ├── folder.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── search.rs │ │ │ │ │ └── user.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── server.rs │ │ │ │ ├── template/ │ │ │ │ │ ├── create_workspace.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── uid.rs │ │ │ │ └── util.rs │ │ │ ├── response.rs │ │ │ ├── server.rs │ │ │ └── util.rs │ │ ├── flowy-server-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── af_cloud_config.rs │ │ │ ├── lib.rs │ │ │ ├── native/ │ │ │ │ ├── af_cloud_config.rs │ │ │ │ └── mod.rs │ │ │ └── wasm/ │ │ │ ├── af_cloud_config.rs │ │ │ └── mod.rs │ │ ├── flowy-sqlite/ │ │ │ ├── Cargo.toml │ │ │ ├── diesel.toml │ │ │ ├── migrations/ │ │ │ │ ├── 2023-06-05-023648_user/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-06-05-135652_collab_snapshot/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-07-12-135810_user_auth_type/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-07-21-081348_user_workspace/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-08-02-083250_user_migration/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-08-14-162155_user_encrypt/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-10-09-094834_user_stability_ai_key/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-10-24-074032_user_updated_at/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2023-11-19-040403_rocksdb_backup/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-01-07-041005_recreate_snapshot_table/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-03-09-031208_user_workspace_icon/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-05-23-061639_chat_message/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-06-14-020242_workspace_member/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-06-16-131359_file_upload/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-06-22-082201_user_ai_model/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-06-26-015936_chat_setting/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-08-05-024351_chat_message_metadata/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-08-07-093650_chat_metadata/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-08-20-061727_file_upload_finish/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-11-08-102351_workspace_member_count/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-12-12-102351_workspace_role/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2024-12-29-061706_collab_metadata/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-17-042326_chat_metadata/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-17-142713_offline_chat_message/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-18-132232_user_workspace_auth_type/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-22-150142_workspace_member_joined_at/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-25-071459_local_ai_model/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-04-28-070644_collab_table/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-05-06-131915_chat_summary/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-05-19-074647_create_shared_views_table/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ ├── 2025-06-04-072900_create_shared_users_table/ │ │ │ │ │ ├── down.sql │ │ │ │ │ └── up.sql │ │ │ │ └── 2025-06-04-123016_update_shared_users_table_order/ │ │ │ │ ├── down.sql │ │ │ │ └── up.sql │ │ │ └── src/ │ │ │ ├── kv/ │ │ │ │ ├── kv.rs │ │ │ │ ├── mod.rs │ │ │ │ └── schema.rs │ │ │ ├── lib.rs │ │ │ ├── schema.rs │ │ │ └── sqlite_impl/ │ │ │ ├── conn_ext.rs │ │ │ ├── database.rs │ │ │ ├── errors.rs │ │ │ ├── mod.rs │ │ │ ├── pool.rs │ │ │ └── pragma.rs │ │ ├── flowy-sqlite-vec/ │ │ │ ├── Cargo.toml │ │ │ ├── migrations/ │ │ │ │ └── 001-init/ │ │ │ │ └── up.sql │ │ │ ├── src/ │ │ │ │ ├── db.rs │ │ │ │ ├── entities.rs │ │ │ │ ├── lib.rs │ │ │ │ └── migration.rs │ │ │ └── tests/ │ │ │ └── main.rs │ │ ├── flowy-storage/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ ├── src/ │ │ │ │ ├── entities.rs │ │ │ │ ├── event_handler.rs │ │ │ │ ├── event_map.rs │ │ │ │ ├── file_cache.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── manager.rs │ │ │ │ ├── notification.rs │ │ │ │ ├── sqlite_sql.rs │ │ │ │ └── uploader.rs │ │ │ └── tests/ │ │ │ └── multiple_part_upload_test.rs │ │ ├── flowy-storage-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── chunked_byte.rs │ │ │ ├── cloud.rs │ │ │ ├── lib.rs │ │ │ └── storage.rs │ │ ├── flowy-user/ │ │ │ ├── Cargo.toml │ │ │ ├── Flowy.toml │ │ │ ├── build.rs │ │ │ └── src/ │ │ │ ├── entities/ │ │ │ │ ├── auth.rs │ │ │ │ ├── date_time.rs │ │ │ │ ├── import_data.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── user_email.rs │ │ │ │ │ ├── user_icon.rs │ │ │ │ │ ├── user_id.rs │ │ │ │ │ ├── user_name.rs │ │ │ │ │ ├── user_openai_key.rs │ │ │ │ │ ├── user_password.rs │ │ │ │ │ └── user_stability_ai_key.rs │ │ │ │ ├── realtime.rs │ │ │ │ ├── reminder.rs │ │ │ │ ├── user_profile.rs │ │ │ │ ├── user_setting.rs │ │ │ │ └── workspace.rs │ │ │ ├── event_handler.rs │ │ │ ├── event_map.rs │ │ │ ├── lib.rs │ │ │ ├── migrations/ │ │ │ │ ├── anon_user_workspace.rs │ │ │ │ ├── doc_key_with_workspace.rs │ │ │ │ ├── document_empty_content.rs │ │ │ │ ├── migration.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── session_migration.rs │ │ │ │ ├── util.rs │ │ │ │ ├── workspace_and_favorite_v1.rs │ │ │ │ └── workspace_trash_v1.rs │ │ │ ├── notification.rs │ │ │ ├── services/ │ │ │ │ ├── authenticate_user.rs │ │ │ │ ├── billing_check.rs │ │ │ │ ├── cloud_config.rs │ │ │ │ ├── collab_interact.rs │ │ │ │ ├── data_import/ │ │ │ │ │ ├── appflowy_data_import.rs │ │ │ │ │ ├── importer.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── db.rs │ │ │ │ ├── entities.rs │ │ │ │ └── mod.rs │ │ │ └── user_manager/ │ │ │ ├── manager.rs │ │ │ ├── manager_history_user.rs │ │ │ ├── manager_user_awareness.rs │ │ │ ├── manager_user_encryption.rs │ │ │ ├── manager_user_workspace.rs │ │ │ └── mod.rs │ │ ├── flowy-user-pub/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── cloud.rs │ │ │ ├── entities.rs │ │ │ ├── lib.rs │ │ │ ├── session.rs │ │ │ ├── sql/ │ │ │ │ ├── member_sql.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── user_sql.rs │ │ │ │ ├── workspace_setting_sql.rs │ │ │ │ └── workspace_sql.rs │ │ │ └── workspace_service.rs │ │ ├── lib-dispatch/ │ │ │ ├── Cargo.toml │ │ │ ├── src/ │ │ │ │ ├── byte_trait.rs │ │ │ │ ├── data.rs │ │ │ │ ├── dispatcher.rs │ │ │ │ ├── errors/ │ │ │ │ │ ├── errors.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── macros.rs │ │ │ │ ├── module/ │ │ │ │ │ ├── container.rs │ │ │ │ │ ├── data.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── module.rs │ │ │ │ ├── request/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── payload.rs │ │ │ │ │ └── request.rs │ │ │ │ ├── response/ │ │ │ │ │ ├── builder.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── responder.rs │ │ │ │ │ └── response.rs │ │ │ │ ├── runtime.rs │ │ │ │ ├── service/ │ │ │ │ │ ├── boxed.rs │ │ │ │ │ ├── handler.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── service.rs │ │ │ │ └── util/ │ │ │ │ ├── mod.rs │ │ │ │ └── ready.rs │ │ │ └── tests/ │ │ │ └── api/ │ │ │ ├── main.rs │ │ │ └── module.rs │ │ ├── lib-infra/ │ │ │ ├── Cargo.toml │ │ │ ├── src/ │ │ │ │ ├── box_any.rs │ │ │ │ ├── compression.rs │ │ │ │ ├── encryption/ │ │ │ │ │ └── mod.rs │ │ │ │ ├── file_util.rs │ │ │ │ ├── isolate_stream.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── native/ │ │ │ │ │ ├── future.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── priority_task/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── queue.rs │ │ │ │ │ ├── scheduler.rs │ │ │ │ │ ├── store.rs │ │ │ │ │ └── task.rs │ │ │ │ ├── ref_map.rs │ │ │ │ ├── stream_util.rs │ │ │ │ ├── util.rs │ │ │ │ ├── validator_fn.rs │ │ │ │ └── wasm/ │ │ │ │ ├── future.rs │ │ │ │ └── mod.rs │ │ │ └── tests/ │ │ │ ├── main.rs │ │ │ └── task_test/ │ │ │ ├── mod.rs │ │ │ ├── script.rs │ │ │ ├── task_cancel_test.rs │ │ │ └── task_order_test.rs │ │ ├── lib-log/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── layer.rs │ │ │ ├── lib.rs │ │ │ └── stream_log.rs │ │ ├── rust-toolchain.toml │ │ └── rustfmt.toml │ ├── rust-toolchain.toml │ └── scripts/ │ ├── code_generation/ │ │ ├── flowy_icons/ │ │ │ ├── generate_flowy_icons.cmd │ │ │ └── generate_flowy_icons.sh │ │ ├── freezed/ │ │ │ ├── generate_freezed.cmd │ │ │ └── generate_freezed.sh │ │ ├── generate.cmd │ │ ├── generate.sh │ │ └── language_files/ │ │ ├── generate_language_files.cmd │ │ └── generate_language_files.sh │ ├── docker-buildfiles/ │ │ ├── Dockerfile │ │ ├── README.md │ │ └── docker-compose.yml │ ├── flatpack-buildfiles/ │ │ ├── .gitignore │ │ ├── dbus-interface.xml │ │ ├── io.appflowy.AppFlowy.desktop │ │ ├── io.appflowy.AppFlowy.launcher.desktop │ │ ├── io.appflowy.AppFlowy.metainfo.xml │ │ ├── io.appflowy.AppFlowy.service │ │ ├── io.appflowy.AppFlowy.yml │ │ └── launcher.sh │ ├── flutter_release_build/ │ │ ├── build_flowy.dart │ │ ├── build_universal_package_for_macos.sh │ │ └── tool.dart │ ├── install_dev_env/ │ │ ├── install_ios.sh │ │ ├── install_linux.sh │ │ ├── install_macos.sh │ │ └── install_windows.sh │ ├── linux_distribution/ │ │ ├── appimage/ │ │ │ ├── AppImageBuilder.yml │ │ │ ├── build_appimage.sh │ │ │ └── io.appflowy.AppFlowy.desktop │ │ ├── deb/ │ │ │ ├── AppFlowy.desktop │ │ │ ├── DEBIAN/ │ │ │ │ ├── control │ │ │ │ ├── postinst │ │ │ │ └── postrm │ │ │ ├── README.md │ │ │ └── build_deb.sh │ │ ├── flatpak/ │ │ │ └── README.md │ │ └── packaging/ │ │ ├── io.appflowy.AppFlowy.launcher.desktop │ │ ├── io.appflowy.AppFlowy.metainfo.xml │ │ ├── io.appflowy.AppFlowy.service │ │ └── launcher.sh │ ├── linux_installer/ │ │ ├── control │ │ ├── postinst │ │ └── postrm │ ├── makefile/ │ │ ├── desktop.toml │ │ ├── docker.toml │ │ ├── env.toml │ │ ├── flutter.toml │ │ ├── mobile.toml │ │ ├── protobuf.toml │ │ ├── tauri.toml │ │ ├── tests.toml │ │ ├── tool.toml │ │ └── web.toml │ ├── tool/ │ │ ├── update_client_api_rev.sh │ │ ├── update_collab_rev.sh │ │ ├── update_collab_source.sh │ │ └── update_local_ai_rev.sh │ ├── white_label/ │ │ ├── code_white_label.sh │ │ ├── font_white_label.sh │ │ ├── i18n_white_label.sh │ │ ├── icon_white_label.sh │ │ ├── white_label.sh │ │ └── windows_white_label.sh │ └── windows_installer/ │ └── inno_setup_config.iss ├── install.sh ├── project.inlang/ │ ├── project_id │ └── settings.json └── project.inlang.json