{ "version": 3, "sources": ["../../board/toolbar_items_board.tsx", "../../../lib.web.mdc/bottom_app_bar.tsx"], "sourcesContent": ["import {report_error} from \"@cling/lib.shared.debug\"\nimport {\n AccessLevel,\n Board,\n BoardInfo,\n BoardType,\n BoardUID,\n board_uid_type,\n derive_clipboard_uid,\n derive_trashcan_uid,\n FeatureSwitch,\n} from \"@cling/lib.shared.model\"\nimport {BoardChooserMenu} from \"@cling/lib.web.board_chooser\"\nimport {i18n} from \"@cling/lib.web.i18n\"\nimport {React_lazy, React_suspense} from \"@cling/lib.web.lazy_load/suspense\"\nimport {Button, Icon, IconButton, Menu, MenuItem, MenuItemDivider} from \"@cling/lib.web.mdc\"\nimport {BoardPermissions, board_resource, meet_status_resource} from \"@cling/lib.web.resources\"\nimport {cancel_event, running_on_mobile_device} from \"@cling/lib.web.utils\"\nimport {navigate} from \"@reach/router/index\"\nimport {runInAction} from \"mobx\"\nimport {observer} from \"mobx-react\"\nimport * as React from \"react\"\nimport {useCallback} from \"react\"\nimport {HighlightBadge} from \"../account/highlight_badge\"\nimport {meet_state} from \"../meet/meet_state\"\nimport {GlobalBackdrop} from \"../misc/global_backdrop\"\nimport {open_intercom} from \"../misc/intercom\"\nimport {print_board} from \"../misc/print\"\nimport {current_user, export_board_state, ui_actions, ui_state} from \"../state/index\"\nimport model_actions from \"../state/model_actions\"\nimport {goto_board, goto_dashboard} from \"../utils\"\nimport {\n board_chooser_board_infos,\n board_chooser_props,\n people_chooser_board_infos,\n people_chooser_props,\n} from \"./board_chooser_props\"\nimport {board_history_state} from \"./board_history\"\nimport {BoardTitle} from \"./board_title\"\nimport {ScrollIndicator} from \"./scroll_indicator\"\nimport {ToggleSortBoardsAlphabetically} from \"./toggle_sort_boards_alphabetically\"\nconst SearchBox = React_lazy(\n () => import(process.env.F_PUBLIC_LAZY || \"@cling/client.web_app/search/search_box\"),\n \"eager_load\",\n)\n\nexport const TopToolbarItemsDesktopBoard = observer(\n ({\n open_drawer,\n permissions,\n is_dashboard,\n board_info,\n }: {\n is_dashboard: boolean\n board_info?: BoardInfo\n permissions: BoardPermissions\n open_drawer: () => void\n }) => {\n const {search_box_open} = ui_state.search_state\n return (\n <nav\n className=\"toolbar-items toolbar-items--top\"\n onMouseEnter={ui_actions.hide_card_menus}\n >\n <div className=\"toolbar-items__top-left\">\n {is_dashboard && <MenuDrawerItem open_drawer={open_drawer} />}\n {!is_dashboard && <GoToHomeItem icon=\"home\" is_dashboard={is_dashboard} />}\n <ToggleDesktopBoardChooserItem board_info={board_info} />\n <ToggleMainViewItem />\n {!search_box_open && <ClosedSearchItem />}\n {search_box_open && (\n <div className=\"toolbar-items__search-open-placeholder--desktop\" />\n )}\n </div>\n {search_box_open && <OpenSearchItem />}\n {!search_box_open && (\n <TitleItem\n is_dashboard={is_dashboard}\n board_info={board_info}\n permissions={permissions}\n />\n )}\n <div className=\"toolbar-items__top-right-container\">\n <div className=\"toolbar-items__top-right\">\n {permissions.can_join_video_meeting &&\n board_info &&\n !ui_state.search_state.all_boards && (\n <VideoMeetingButton board_info={board_info} />\n )}\n {permissions.can_share_board && <ShareItem permissions={permissions} />}\n {ui_state.main_view !== \"calendar\" && !ui_state.search_state.all_boards && (\n <CollapseItem />\n )}\n <BoardMenuItem permissions={permissions} board_info={board_info} />\n </div>\n </div>\n </nav>\n )\n },\n)\n\nexport const TopToolbarItemsMobileBoard = observer(\n ({\n board_info,\n permissions,\n is_dashboard,\n open_drawer,\n }: {\n is_dashboard: boolean\n board_info?: BoardInfo\n permissions: BoardPermissions\n open_drawer: () => void\n }) => {\n const {search_box_open} = ui_state.search_state\n if (search_box_open) {\n return (\n <nav className=\"toolbar-items toolbar-items--top toolbar-items--search-open\">\n <OpenSearchItem />\n </nav>\n )\n }\n return (\n <nav className=\"toolbar-items toolbar-items--top\">\n {is_dashboard && <MenuDrawerItem open_drawer={open_drawer} />}\n {!is_dashboard && <GoToHomeItem icon=\"arrow_back\" is_dashboard={is_dashboard} />}\n <TitleItem\n is_dashboard={is_dashboard}\n permissions={permissions}\n board_info={board_info}\n />\n {permissions.can_join_video_meeting && board_info && (\n <VideoMeetingButton board_info={board_info} />\n )}\n {ui_state.main_view !== \"calendar\" && !ui_state.search_state.all_boards && (\n <CollapseItem />\n )}\n <BoardMenuItem board_info={board_info} permissions={permissions} />\n </nav>\n )\n },\n)\n\nexport const BottomToolbarItemsMobileBoard = ({\n board,\n is_dashboard,\n}: {\n is_dashboard: boolean\n board?: Board\n}) => {\n return (\n <>\n {ui_state.main_view === \"columns\" && <ScrollIndicator board={board} />}\n <nav className=\"toolbar-items toolbar-items--bottom\">\n <GlobalBackdrop />\n <GoToHomeItem icon=\"home\" is_dashboard={is_dashboard} />\n <PeopleChooserItem />\n <BoardChooserItem />\n <ToggleMainViewItem />\n <ClosedSearchItem />\n </nav>\n </>\n )\n}\n\nconst MenuDrawerItem = observer(({open_drawer}: {open_drawer: () => void}) => {\n return (\n <IconButton\n data-test-id=\"ToolbarItems_open_drawer\"\n icon=\"menu\"\n onClick={open_drawer}\n small={!running_on_mobile_device()}\n tooltip={running_on_mobile_device() ? undefined : i18n.menu}\n />\n )\n})\n\nexport const TitleItem = (props: {\n is_dashboard: boolean\n board_info?: BoardInfo\n permissions: {\n can_change_board_settings: boolean\n }\n}) => {\n const {is_dashboard, board_info, permissions} = props\n return (\n <BoardTitle\n board={board_info}\n title_override={is_dashboard ? \"Cling\" : undefined}\n className=\"mdc-top-app-bar__title toolbar-items__title\"\n onClick={\n permissions.can_change_board_settings && !running_on_mobile_device()\n ? ui_actions.open_board_settings_dialog\n : undefined\n }\n data-test-id=\"ToolbarItems_title\"\n />\n )\n}\n\nconst ToggleDesktopBoardChooserItem = observer(\n ({board_info}: {board_info: BoardInfo | undefined}) => {\n const toggle = useCallback(\n () =>\n ui_actions.toggle_desktop_board_chooser(\n ui_state.desktop_board_chooser_state === \"hidden\"\n ? board_info?.board_type === BoardType.people\n ? \"people\"\n : \"boards\"\n : \"hidden\",\n ),\n [board_info],\n )\n const show_badge =\n people_chooser_board_infos().some((x) => ui_state.is_new_or_changed(x)) ||\n board_chooser_board_infos(\"dashboard_and_user_boards\", AccessLevel.read).some(\n (x) => x.is_user_board && ui_state.is_new_or_changed(x),\n )\n return (\n <IconButton\n icon=\"dashboard\"\n outlined={ui_state.desktop_board_chooser_state === \"hidden\"}\n tooltip={i18n.boards}\n badge={show_badge ? {secondary: true, value: \"\", small: true} : undefined}\n small={!running_on_mobile_device()}\n onClick={toggle}\n />\n )\n },\n)\n\nexport const BoardChooserItem = observer(() => {\n const [is_menu_open, set_is_menu_open] = React.useState(false)\n const open_menu = React.useCallback(() => {\n set_is_menu_open(true)\n }, [])\n const close_menu = React.useCallback(() => {\n set_is_menu_open(false)\n }, [])\n const on_board_selected = React.useCallback((board_uid: BoardUID) => {\n const board_type = board_uid_type(board_uid)\n if (!running_on_mobile_device() && board_type === BoardType.clipboard) {\n ui_actions.toggle_clipboard_shown()\n } else if (!running_on_mobile_device() && board_type === BoardType.trashcan) {\n ui_actions.toggle_trashcan_shown()\n } else if (board_type === BoardType.dashboard) {\n goto_dashboard().catch(report_error)\n } else {\n goto_board({board_uid}).catch(report_error)\n }\n }, [])\n const add_board = React.useCallback(() => {\n set_is_menu_open(false)\n ui_actions.open_add_board_dialog()\n }, [])\n const is_regular_board = ui_state.current_board.board?.board_type === BoardType.regular\n return (\n <BoardChooserMenu\n data-test-id=\"ToolbarItems_board_chooser_menu\"\n is_open={is_menu_open}\n onOpen={open_menu}\n onClose={close_menu}\n anchor={\n <IconButton\n icon=\"dashboard\"\n tooltip={i18n.boards}\n outlined={!is_regular_board}\n data-test-id={\"BoardChooserItem\"}\n small={!running_on_mobile_device()}\n label={i18n.boards}\n />\n }\n {...board_chooser_props(\"user_boards\")}\n sort_boards_alphabetically={current_user.account_settings.sort_boards_alphabetically}\n onSelected={on_board_selected}\n first_menu_item={\n <div key=\"add_board\">\n <TryClingPro />\n <div className=\"mt--1 flex-row justify-content--center\">\n <Button\n raised\n onClick={add_board}\n data-test-id=\"BoardChooserItem_add_board\"\n >\n {i18n.add_a_board}\n </Button>\n </div>\n <div className=\"mt--1 flex-row justify-content--center\">\n <ToggleSortBoardsAlphabetically display=\"link\" />\n </div>\n </div>\n }\n />\n )\n})\n\nexport const PeopleChooserItem = observer(() => {\n const [is_menu_open, set_is_menu_open] = React.useState(false)\n const open_menu = React.useCallback(() => {\n set_is_menu_open(true)\n }, [])\n const close_menu = React.useCallback(() => {\n set_is_menu_open(false)\n }, [])\n const on_board_selected = React.useCallback((board_uid: BoardUID) => {\n const board_type = board_uid_type(board_uid)\n if (board_type === BoardType.dashboard) {\n goto_dashboard().catch(report_error)\n } else {\n goto_board({board_uid}).catch(report_error)\n }\n }, [])\n const add_board = React.useCallback(() => {\n set_is_menu_open(false)\n ui_actions.open_start_conversation_dialog()\n }, [])\n const is_people_board = ui_state.current_board.board?.board_type === BoardType.people\n return (\n <BoardChooserMenu\n is_open={is_menu_open}\n onOpen={open_menu}\n onClose={close_menu}\n anchor={\n <IconButton\n icon=\"face\"\n tooltip={i18n.people}\n outlined={!is_people_board}\n data-test-id={\"PeopleChooserItem\"}\n small={!running_on_mobile_device()}\n label={i18n.people}\n />\n }\n {...people_chooser_props()}\n onSelected={on_board_selected}\n sort_boards_alphabetically={current_user.account_settings.sort_boards_alphabetically}\n first_menu_item={\n <div key=\"add_board\">\n <TryClingPro />\n <div className=\"mt--1 flex-row justify-content--center\">\n <Button raised onClick={add_board}>\n {i18n.start_a_conversation}\n </Button>\n </div>\n <div className=\"mt--1 flex-row justify-content--center\">\n <ToggleSortBoardsAlphabetically display=\"link\" />\n </div>\n </div>\n }\n />\n )\n})\n\nconst CollapseItem = observer(() => {\n const toggle_collapse_expand_all = React.useCallback(() => {\n ui_actions.toggle_collapse_expand_all()\n }, [])\n return (\n <IconButton\n icon={ui_state.toggle_collapse_expand_all ? \"view_stream\" : \"view_module\"}\n data-test-id=\"ToolbarItems_collapse_expand_all\"\n tooltip={i18n.toggle_collapse_expand_all(ui_state.toggle_collapse_expand_all)}\n small={!running_on_mobile_device()}\n onClick={toggle_collapse_expand_all}\n />\n )\n})\n\nconst ToggleMainViewItem = observer(() => {\n const is_columns = ui_state.main_view === \"columns\"\n return (\n <div>\n <IconButton\n icon={is_columns ? \"today\" : \"view_week\"}\n outlined\n data-test-id=\"ToggleMainViewItem\"\n tooltip={is_columns ? i18n.calendar : i18n.columns}\n small={!running_on_mobile_device()}\n onClick={ui_actions.toggle_calendar}\n label={\n running_on_mobile_device()\n ? is_columns\n ? i18n.calendar\n : i18n.columns\n : undefined\n }\n />\n </div>\n )\n})\n\nconst ShareItem = observer((props: {permissions: {can_share_board: boolean}}) => {\n const {permissions} = props\n const disabled = !permissions.can_share_board || ui_state.search_state.all_boards\n return (\n <IconButton\n disabled={disabled}\n icon=\"share\"\n tooltip={i18n.share_this_board}\n small={!running_on_mobile_device()}\n data-test-id=\"ShareItem\"\n onClick={disabled ? undefined : ui_actions.open_share_board_dialog}\n />\n )\n})\n\nconst VideoMeetingButton = observer(({board_info}: {board_info: BoardInfo}) => {\n const on_click = React.useCallback(() => {\n runInAction(() => {\n if (!board_info) {\n return\n }\n if (!meet_state.board?.uid) {\n meet_state.join(board_info)\n }\n })\n }, [board_info])\n const num_participants = meet_status_resource.read(board_info.uid)?.participants.length ?? 0\n return (\n <IconButton\n onClick={on_click}\n icon=\"voice_chat\"\n outlined={meet_state.board?.uid !== board_info.uid}\n small={!running_on_mobile_device()}\n tooltip={i18n.join_video_meeting}\n badge={\n num_participants > 0\n ? {\n secondary: true,\n value: num_participants,\n small: false,\n }\n : undefined\n }\n data-test-id=\"Toolbar_meet\"\n />\n )\n})\n\nconst ClosedSearchItem = () => {\n const open_search_box = React.useCallback((e) => {\n // It is important to cancel the event because it might bubble up and get caught by\n // the click-handler registered at document level in `search_box.tsx`.\n cancel_event(e)\n ui_state.search_state.open_search_box()\n }, [])\n return (\n <IconButton\n icon=\"search\"\n tooltip={`${i18n.search} /`}\n onClick={open_search_box}\n small={!running_on_mobile_device()}\n label={running_on_mobile_device() ? i18n.search : undefined}\n data-test-id=\"ToolbarItems_open_search\"\n />\n )\n}\n\nexport const OpenSearchItem = () => {\n const search = React.useCallback((new_query_string: string) => {\n ui_state.search_state\n .search(new_query_string)\n .then(() => {\n runInAction(() => {\n if (new_query_string && ui_state.main_view === \"columns\") {\n ui_state.layout_state.scroll_to_column(0)\n ui_state.layout_state.scroll_all_columns_to_top()\n }\n if (ui_state.search_state.is_search_narrowing_down) {\n ui_state.highlighted_card_state = undefined\n }\n })\n })\n .catch(report_error)\n }, [])\n const end_search = React.useCallback(() => {\n ui_state.search_state.end_search()\n if (ui_state.main_view === \"columns\") {\n ui_state.layout_state.scroll_all_columns_to_top()\n ui_state.layout_state.scroll_to_natural_first_column()\n }\n }, [])\n React.useEffect(() => {\n ui_actions.fully_expand_all()\n }, [])\n return (\n <div className=\"toolbar-items__search\">\n <React_suspense>\n <SearchBox initial_query_string={\"\"} onChange={search} onClose={end_search} />\n </React_suspense>\n </div>\n )\n}\n\nexport const GoToHomeItem = ({\n icon,\n is_dashboard,\n}: {\n is_dashboard: boolean\n icon: \"home\" | \"arrow_back\"\n}) => {\n const on_click = React.useCallback(() => {\n if (ui_state.main_view === \"calendar\") {\n ui_actions.toggle_calendar()\n }\n if (is_dashboard) {\n ui_state.layout_state.scroll_all_columns_to_top()\n ui_state.layout_state.scroll_to_natural_first_column()\n } else {\n goto_dashboard().catch(report_error)\n }\n }, [is_dashboard])\n return (\n <IconButton\n icon={icon}\n outlined={!is_dashboard}\n onClick={on_click}\n small={!running_on_mobile_device()}\n data-test-id=\"GoToHomeItem\"\n label={\n running_on_mobile_device()\n ? icon === \"arrow_back\"\n ? undefined\n : i18n.home\n : undefined\n }\n tooltip={running_on_mobile_device() ? undefined : i18n.home}\n />\n )\n}\n\nexport const BoardMenuItem = observer(\n ({board_info, permissions}: {board_info?: BoardInfo; permissions: BoardPermissions}) => {\n const menu_ref = React.useRef<Menu>(null)\n const export_board = React.useCallback(async () => {\n if (!board_info || export_board_state.export_pending) {\n return\n }\n export_board_state.start_export(board_info.uid).catch(report_error)\n }, [board_info])\n const show_export_board_teaser = React.useCallback(() => {\n ui_actions.open_pro_feature_teaser_dialog({\n description: i18n.export_board_lets_you_download,\n })\n }, [])\n const empty_trashcan = React.useCallback(() => {\n model_actions.empty_trashcan()\n }, [])\n const toggle_archived_cards = React.useCallback(() => {\n if (ui_state.search_state.archived_cards_shown) {\n ui_actions.show_archived(false).catch(report_error)\n } else {\n ui_actions.show_archived(true).catch(report_error)\n }\n }, [])\n const open_trashcan = React.useCallback(() => {\n if (running_on_mobile_device()) {\n goto_board({board_uid: derive_trashcan_uid(current_user.account.uid)}).catch(\n report_error,\n )\n } else {\n ui_actions.toggle_trashcan_shown()\n }\n }, [])\n const open_clipboard = React.useCallback(() => {\n if (running_on_mobile_device()) {\n goto_board({board_uid: derive_clipboard_uid(current_user.account.uid)}).catch(\n report_error,\n )\n } else {\n ui_actions.toggle_clipboard_shown()\n }\n }, [])\n const print = React.useCallback(() => {\n if (!board_info) {\n return\n }\n const board = board_resource.read(board_info.uid)\n if (!board) {\n return\n }\n print_board(board)\n }, [board_info])\n const email_markup = React.useCallback(() => {\n if (!board_info) {\n return\n }\n navigate(`/c/email_markup/${board_info.uid}`).catch(report_error)\n }, [board_info])\n const archive_board = React.useCallback(() => {\n if (!board_info) {\n return\n }\n model_actions.archive_board(board_info).catch(report_error)\n }, [board_info])\n const unarchive_board = React.useCallback(() => {\n if (!board_info) {\n return\n }\n model_actions.unarchive_board(board_info).catch(report_error)\n }, [board_info])\n const remove_board = React.useCallback(() => {\n if (!board_info) {\n return\n }\n model_actions.remove_board(board_info)\n }, [board_info])\n const leave_board = React.useCallback(() => {\n if (!board_info) {\n return\n }\n model_actions.remove_acl_entry(board_info, current_user.account.uid)\n }, [board_info])\n const open_help = React.useCallback(() => open_intercom(\"home\"), [])\n const is_board_archived = !!(\n board_info && current_user.account_settings.board_setting(board_info.uid)?.archived\n )\n const search_on_all_boards = ui_state.search_state.all_boards\n const show_share_board = permissions.can_share_board && running_on_mobile_device()\n const is_trashcan = board_info?.board_type === BoardType.trashcan\n const is_clipboard = board_info?.board_type === BoardType.clipboard\n const can_convert_to_email_markup =\n current_user.has_feature_switch(FeatureSwitch.email_markup) && board_info?.acl.is_public\n const can_view_history =\n permissions.can_view_history &&\n ui_state.main_view !== \"calendar\" &&\n !search_on_all_boards\n const can_open_clipboard_trashcan = ui_state.main_view !== \"calendar\"\n const can_print = ui_state.main_view !== \"calendar\" && !search_on_all_boards\n const can_copy_board = permissions.can_copy_board && !search_on_all_boards\n const can_export_board = permissions.can_export_board && !search_on_all_boards\n const could_export_board_in_cling_pro =\n permissions.could_export_board_in_cling_pro && !search_on_all_boards\n const can_open_board_settings =\n !search_on_all_boards && permissions.can_change_board_settings\n const can_import_data =\n permissions.can_import_data && !search_on_all_boards && ui_state.main_view === \"columns\"\n const can_show_archived_cards =\n !ui_state.search_state.search_box_open && !search_on_all_boards && board_info\n const can_archive_board = permissions.can_archive_board && !search_on_all_boards\n const can_remove_board = permissions.can_remove_board && !search_on_all_boards\n const can_leave_board = permissions.can_leave_board && !search_on_all_boards\n return (\n <Menu\n className=\"toolbar-items__board-menu\"\n data-test-id=\"BoardMenu\"\n ref={menu_ref}\n anchor={\n <IconButton\n icon=\"more_vert\"\n data-test-id=\"ToolbarItems_board_menu\"\n outlined\n small={!running_on_mobile_device()}\n tooltip={i18n.more}\n />\n }\n >\n {can_show_archived_cards && (\n <MenuItem\n onClick={toggle_archived_cards}\n title={\n ui_state.search_state.archived_cards_shown\n ? i18n.hide_archived_cards\n : i18n.show_archived_cards\n }\n graphic={\n <Icon\n icon=\"archive\"\n outlined={!ui_state.search_state.archived_cards_shown}\n />\n }\n />\n )}\n {can_open_board_settings && (\n <MenuItem\n onClick={ui_actions.open_board_settings_dialog}\n title={i18n.board_settings}\n graphic={<Icon icon=\"settings\" outlined />}\n />\n )}\n {can_import_data && (\n <MenuItem\n onClick={ui_actions.open_import_data_dialog}\n title={i18n.import_data}\n graphic={<Icon icon=\"input\" outlined />}\n data-test-id=\"ToolbarItems_import_data\"\n />\n )}\n {can_print && (\n <MenuItem\n onClick={print}\n title={i18n.print}\n graphic={<Icon icon=\"print\" outlined />}\n data-test-id=\"ToolbarItems_print\"\n />\n )}\n {can_convert_to_email_markup && (\n <MenuItem\n onClick={email_markup}\n title={i18n.email_markup}\n graphic={<Icon icon=\"email\" outlined />}\n />\n )}\n {(can_show_archived_cards ||\n can_open_board_settings ||\n can_import_data ||\n can_print ||\n can_convert_to_email_markup) && <MenuItemDivider />}\n <MenuItem\n onClick={open_help}\n title={i18n.get_help}\n graphic={<Icon icon=\"chat_bubble_outline\" outlined />}\n />\n {is_trashcan && <MenuItemDivider />}\n {is_trashcan && (\n <MenuItem\n title={i18n.empty_trashcan}\n graphic={<Icon icon=\"delete_sweep\" outlined />}\n onClick={empty_trashcan}\n data-test-id=\"BoardMenu_empty_trashcan\"\n />\n )}\n {(can_export_board ||\n could_export_board_in_cling_pro ||\n can_archive_board ||\n can_remove_board ||\n show_share_board ||\n can_view_history ||\n can_leave_board) && <MenuItemDivider />}\n {can_view_history && (\n <MenuItem\n onClick={board_history_state.toggle}\n title={i18n.version_history}\n data-test-id=\"BoardMenu_version_history\"\n graphic={<Icon icon=\"history\" outlined />}\n />\n )}\n {show_share_board && (\n <MenuItem\n graphic={<Icon icon=\"share\" outlined />}\n title={i18n.share_board}\n data-test-id=\"BoardMenu_share_board\"\n onClick={ui_actions.open_share_board_dialog}\n />\n )}\n {can_copy_board && (\n <MenuItem\n onClick={ui_actions.open_copy_board_dialog}\n data-test-id=\"BoardMenu_copy_board\"\n graphic={<Icon icon=\"content_copy\" outlined />}\n title={i18n.copy_board}\n />\n )}\n {(can_export_board || could_export_board_in_cling_pro) && board_info && (\n <MenuItem\n onClick={can_export_board ? export_board : show_export_board_teaser}\n disabled={export_board_state.export_pending}\n data-test-id=\"ToolbarItems_export_board\"\n graphic={<Icon icon=\"cloud_download\" outlined />}\n title={i18n.export_board}\n meta={!can_export_board && <HighlightBadge type=\"pro\" />}\n />\n )}\n {can_archive_board && board_info && (\n <MenuItem\n title={is_board_archived ? i18n.restore_board : i18n.archive_board}\n graphic={\n <Icon icon={is_board_archived ? \"unarchive\" : \"archive\"} outlined />\n }\n onClick={is_board_archived ? unarchive_board : archive_board}\n />\n )}\n {can_remove_board && board_info && (\n <MenuItem\n className=\"toolbar-items__dangerous\"\n title={i18n.remove_board}\n graphic={<Icon icon=\"delete\" outlined />}\n onClick={remove_board}\n />\n )}\n {can_leave_board && board_info && (\n <MenuItem\n className=\"toolbar-items__dangerous\"\n title={i18n.leave_board}\n graphic={<Icon icon=\"person_remove\" outlined />}\n onClick={leave_board}\n />\n )}\n {can_open_clipboard_trashcan && (\n <>\n <MenuItemDivider />\n <MenuItem\n title={i18n.open_clipboard}\n disabled={is_clipboard}\n graphic={\n <Icon icon=\"content_paste\" outlined={!ui_state.clipboard_shown} />\n }\n onClick={open_clipboard}\n data-test-id=\"BoardMenu_open_clipboard\"\n />\n <MenuItem\n title={i18n.open_trashcan}\n disabled={is_trashcan}\n graphic={<Icon icon=\"delete\" outlined={!ui_state.trashcan_shown} />}\n onClick={open_trashcan}\n data-test-id=\"BoardMenu_open_trashcan\"\n />\n </>\n )}\n </Menu>\n )\n },\n)\n\nconst TryClingPro = () => {\n if (\n current_user.account_attributes.has_pro_features ||\n // Needed for Obersee.\n current_user.account_attributes.team_uids.length > 0\n ) {\n return null\n }\n return (\n <div className=\"toolbar-items__try-cling-pro full-width flex-col align-items--center\">\n <Button raised secondary onClick={ui_actions.open_checkout_dialog}>\n {i18n.try_cling_pro}\n </Button>\n <div className=\"font--caption text-align--center mt--1\">{i18n.get_all_the_space}</div>\n </div>\n )\n}\n", "import * as React from \"react\"\n\nimport {classNames} from \"@cling/lib.web.utils\"\n\ntype Props = React.HTMLAttributes<HTMLHeadElement> & {\n children?: any\n className?: string\n}\n\n/**\n * We have to fake this, because there is no component yet in MDC.\n */\nexport class BottomAppBar extends React.PureComponent<Props> {\n render() {\n const {children, className, ...html_props} = this.props\n return (\n <footer\n className={classNames(\n \"mdc-top-app-bar mdc-top-app-bar--fixed mdcx-bottom-app-bar\",\n className,\n )}\n {...html_props}\n >\n <div className=\"mdc-top-app-bar__row\">{children}</div>\n </footer>\n )\n }\n}\n"], "mappings": "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", "names": ["import_router", "init_compat_module", "SearchBox", "React_lazy", "TopToolbarItemsDesktopBoard", "observer", "open_drawer", "permissions", "is_dashboard", "board_info", "search_box_open", "ui_state", "_", "ui_actions", "MenuDrawerItem", "GoToHomeItem", "ToggleDesktopBoardChooserItem", "ToggleMainViewItem", "ClosedSearchItem", "OpenSearchItem", "TitleItem", "VideoMeetingButton", "ShareItem", "CollapseItem", "BoardMenuItem", "TopToolbarItemsMobileBoard", "BottomToolbarItemsMobileBoard", "__name", "board", "k", "ScrollIndicator", "GlobalBackdrop", "PeopleChooserItem", "BoardChooserItem", "IconButton", "running_on_mobile_device", "i18n", "props", "BoardTitle", "toggle", "q", "show_badge", "people_chooser_board_infos", "x", "board_chooser_board_infos", "is_menu_open", "set_is_menu_open", "d", "open_menu", "close_menu", "on_board_selected", "board_uid", "board_type", "board_uid_type", "goto_dashboard", "report_error", "goto_board", "add_board", "is_regular_board", "BoardChooserMenu", "board_chooser_props", "current_user", "TryClingPro", "Button", "ToggleSortBoardsAlphabetically", "is_people_board", "people_chooser_props", "toggle_collapse_expand_all", "is_columns", "disabled", "on_click", "runInAction", "meet_state", "num_participants", "meet_status_resource", "open_search_box", "e", "cancel_event", "search", "new_query_string", "end_search", "y", "React_suspense", "icon", "menu_ref", "A", "export_board", "export_board_state", "show_export_board_teaser", "empty_trashcan", "model_actions_default", "toggle_archived_cards", "open_trashcan", "derive_trashcan_uid", "open_clipboard", "derive_clipboard_uid", "print", "board_resource", "print_board", "email_markup", "archive_board", "unarchive_board", "remove_board", "leave_board", "open_help", "open_intercom", "is_board_archived", "search_on_all_boards", "show_share_board", "is_trashcan", "is_clipboard", "can_convert_to_email_markup", "can_view_history", "can_open_clipboard_trashcan", "can_print", "can_copy_board", "can_export_board", "could_export_board_in_cling_pro", "can_open_board_settings", "can_import_data", "can_show_archived_cards", "can_archive_board", "can_remove_board", "can_leave_board", "Menu", "MenuItem", "Icon", "MenuItemDivider", "board_history_state", "HighlightBadge", "init_compat_module", "_BottomAppBar", "N", "children", "className", "html_props", "_", "classNames", "__name", "BottomAppBar"] }