{
  "version": 3,
  "sources": ["../../entry.ts", "../../startup/init_logging.ts", "../../startup/third_parties.ts", "../../startup/startup_common.ts", "../../board/toolbar_items_website.tsx", "../../board/board_title.tsx", "../../board/toolbar_items_common.tsx"],
  "sourcesContent": ["import {\n    init as init_logging,\n    log_history,\n    log_history_to_string_array,\n} from \"@cling/lib.shared.logging\"\nimport {default_logger} from \"@cling/lib.shared.logging/default_logger\"\nimport {safe_local_storage} from \"@cling/lib.web.utils/safe_storage\"\nimport {install_global_error_handler} from \"@cling/lib.shared.debug\"\n\n/** Provided by build.client.web_app.ts */\ndeclare const process: {\n    env: {\n        NODE_ENV: \"development\" | \"test\" | \"production\"\n        VERSION: string\n        F_PRINT_TO_CONSOLE: boolean\n        F_PUBLIC: boolean\n    }\n}\n\nexport function init() {\n    install_global_error_handler()\n    init_logging(\n        default_logger({\n            log_history,\n            print_to_console:\n                process.env.F_PRINT_TO_CONSOLE || safe_local_storage.getItem(\"__debug\"),\n        }),\n    )\n    cling.debug = () => {\n        // eslint-disable-next-line no-console\n        log_history_to_string_array(log_history).forEach((line) => console.log(line))\n        cling.print_to_console = true\n        safe_local_storage.setItem(\"__debug\", \"1\")\n    }\n    cling.log_history = () => log_history_to_string_array(log_history)\n}\n", "import {\n    Client,\n    ReportLogEventRequest,\n    ReportLogEventResponse,\n    ReportLogEventSeverity,\n} from \"@cling/lib.shared.model\"\nimport {\n    LogEventReporter,\n    register_log_event_reporter,\n    unregister_log_event_reporter,\n} from \"@cling/lib.shared.debug\"\nimport {log, log_history, log_history_to_string_array} from \"@cling/lib.shared.logging\"\nimport {error_to_string} from \"@cling/lib.shared.utils\"\nimport {RateLimiter} from \"@cling/lib.shared.utils/rate_limiter\"\nimport {CallFunctionFailed} from \"@cling/lib.shared.error\"\nimport {call_function} from \"@cling/lib.shared.faas\"\nimport {Buffer} from \"buffer\"\n\nclass ShowFirstErrorInBrowser implements LogEventReporter {\n    pre?: HTMLPreElement\n    msg?: string\n\n    report(message: string, severity: \"info\" | \"warn\" | \"error\" = \"error\"): void {\n        if (severity !== \"error\") {\n            return\n        }\n        // We have to make this exception for Safari, which logs this message rather than\n        // throwing an error in `index.html` while registering the ServiceWorker.\n        if (\n            message.includes(\"InvalidStateError: The object is in an invalid state\") &&\n            message.includes(\"register@[native code]\")\n        ) {\n            return\n        }\n        // eslint-disable-next-line no-console\n        console.error(message) // We want to see the message in the console, too!\n        ;(window as any).cling_first_error = message\n        let {pre} = this\n        if (pre) {\n            // <pre class=\"error\">...</pre> might already exist, if `report_error(...)` was called\n            // followed by a call to `goto(...)` -- in this case we prepend the given `message`.\n            pre.innerText = this.msg = message + \"\\n\\n\" + this.msg\n            return\n        }\n        pre = this.pre = document.createElement(\"pre\")\n        // Sometimes we just want to get rid of the error overlay. Let's do this with some\n        // magical clicks.\n        let num_clicks = 0\n        pre.addEventListener(\"click\", () => {\n            if (num_clicks++ >= 3) {\n                pre?.remove()\n            }\n        })\n        pre.classList.add(\"error\") // Style is defined in index.template.html.\n        pre.innerText = this.msg = message\n        document.body.appendChild(pre)\n        // Only show the first error in the browser.\n        unregister_log_event_reporter(this)\n        try {\n            const reversed_log_history = cling.log_history().reverse()\n            if (reversed_log_history.length && reversed_log_history[0].indexOf(message) >= 0) {\n                reversed_log_history.shift()\n            }\n            pre.innerText = this.msg + \"\\n\\n\" + reversed_log_history.join(\"\\n\")\n        } catch (error) {\n            pre.innerText = this.msg + \"\\n\\n\" + error_to_string(error)\n        }\n    }\n}\n\nexport function show_first_error_or_redirect_in_browser() {\n    const _show_first_error_in_browser = new ShowFirstErrorInBrowser()\n    register_log_event_reporter(_show_first_error_in_browser)\n    const goto_ = window.goto\n    window.goto = (url) => {\n        if (\n            url.startsWith(\"/\") &&\n            !url.startsWith(\"/login\") &&\n            !url.includes(\"login.html\") &&\n            !url.startsWith(\"/c\") &&\n            url !== \"/\" &&\n            location.pathname !== \"/c/authorize\"\n        ) {\n            let message = `Redirect to ${url}`\n            if (url.startsWith(\"/oops\")) {\n                try {\n                    const x = new URL(url, location.href).searchParams.get(\"x\")\n                    if (x) {\n                        message = \"Redirect to /oops?...\\n\\n\" + Buffer.from(x, \"base64\").toString()\n                    }\n                } catch {\n                    // Ignored.\n                }\n            }\n            // Do *not* go to given url but stay on current page showing the error.\n            _show_first_error_in_browser!.report(message)\n            return\n        }\n        goto_(url)\n    }\n}\n\n// Do not report more than 10 errors every 5 minutes.\nconst _report_error_rate_limiter = new RateLimiter({max_calls: 10, per: [5, \"minutes\"]})\n// Do not report more than 20 infos/warnings every 5 minutes.\nconst _report_info_warn_rate_limiter = new RateLimiter({max_calls: 20, per: [5, \"minutes\"]})\nlet _unreported_errors_counter = 0\n\nexport function init_log_event_reporting(client: Client) {\n    register_log_event_reporter({\n        should_report_error: (error) => {\n            return !(\n                error instanceof CallFunctionFailed ||\n                error?.name === \"NetworkError\" ||\n                (typeof error.stack === \"string\" && error.stack.includes(\"chrome-extension://\"))\n            )\n        },\n        report: async (message, severity) => {\n            if (severity === \"error\") {\n                log.debug(\"`report_error` called\", {message})\n            }\n            try {\n                const limiter =\n                    severity === \"error\"\n                        ? _report_error_rate_limiter\n                        : _report_info_warn_rate_limiter\n                await limiter.run(async (within_limit) => {\n                    if (!within_limit) {\n                        if (severity === \"error\") {\n                            _unreported_errors_counter += 1\n                        }\n                        return\n                    }\n                    await call_function(\n                        new ReportLogEventRequest({\n                            message,\n                            client,\n                            client_version: process.env.VERSION!,\n                            user_agent: navigator.userAgent,\n                            log_history: log_history_to_string_array(log_history, {max_size: 6000}),\n                            num_unreported_errors: _unreported_errors_counter,\n                            severity:\n                                severity === \"info\"\n                                    ? ReportLogEventSeverity.info\n                                    : severity === \"warn\"\n                                      ? ReportLogEventSeverity.warn\n                                      : ReportLogEventSeverity.error,\n                        }),\n                        ReportLogEventResponse,\n                    )\n                    _unreported_errors_counter = 0\n                })\n            } catch (error) {\n                log.error(\"Failed to report log event\", {error})\n            }\n        },\n    })\n}\n", "import {log} from \"@cling/lib.shared.logging\"\n\n/** See https://developer.mozilla.org/en-US/docs/Web/API/FontFace */\ninterface FontFace {\n    display: string\n    family: string\n    featureSettings: string\n    readonly loaded: Promise<FontFace>\n    readonly status: \"unloaded\" | \"loading\" | \"loaded\" | \"error\"\n    stretch: string\n    style: string\n    unicodeRange: string\n    variant: string\n    weight: string\n}\n\n/** See https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet */\ninterface FontFaceSet {\n    readonly status: \"loading\" | \"loaded\"\n    readonly ready: Promise<FontFaceSet>\n    check(font: string, text?: string): boolean\n    load(font: string, text?: string): Promise<Array<FontFace>>\n}\n\nexport async function load_material_icons_font(): Promise<any> {\n    const {fonts} = document as any as {fonts: FontFaceSet}\n    if (fonts) {\n        // Prevent that the `start_web_app` watchdog will reload the page,\n        // if the Material Icons font takes its time to load ...\n        const log_interval_id = setInterval(() => {\n            log.debug(\"Waiting for Material Icons font ...\")\n        }, 5000)\n        try {\n            await fonts.load('24px \"Material Icons\"')\n        } finally {\n            clearInterval(log_interval_id)\n        }\n    }\n}\n\nexport function wait_for_material_icons_font(): Promise<any> {\n    // See https://caniuse.com/#feat=mdn-api_document_fonts ...\n    if ((document as any).fonts) {\n        return ((document as any).fonts as FontFaceSet).ready\n    }\n    return Promise.resolve()\n}\n", "import {configure as configure_mobx, runInAction} from \"mobx\"\nimport {override_default_layout} from \"@cling/lib.web.layout/default_layout\"\nimport {\n    detect_scrollbar_width,\n    running_on_ios,\n    running_on_ios_13_and_above,\n    running_on_mobile_device,\n} from \"@cling/lib.web.utils\"\nimport {safe_local_storage} from \"@cling/lib.web.utils/safe_storage\"\nimport {show_first_error_or_redirect_in_browser} from \"./init_logging\"\nimport {Page} from \"@cling/lib.web.mdc\"\nimport {load_material_icons_font, wait_for_material_icons_font} from \"./third_parties\"\nimport {report_error} from \"@cling/lib.shared.debug\"\nimport {load_perfect_scrollbar} from \"@cling/lib.web.lazy_load\"\nimport {is_cling_hp} from \"../utils\"\nimport {call_function} from \"@cling/lib.shared.faas\"\nimport {QueryUserMetaRequest, QueryUserMetaResponse} from \"@cling/lib.shared.model\"\nimport {ui_state} from \"../state\"\n\n/** Provided by build.client.web_app.ts. */\ndeclare const process: {\n    env: {\n        NODE_ENV: \"development\" | \"test\" | \"production\"\n        VERSION: string\n        WORKER_URI: string\n        F_PUBLIC: string\n    }\n}\n\nexport function set_global_css_classes() {\n    document.body.classList.add(running_on_mobile_device() ? \"mobile\" : \"desktop\")\n    document.documentElement.style.setProperty(\n        \"--scrollbar-width\",\n        running_on_mobile_device() ? \"0px\" : `${detect_scrollbar_width()}px`,\n    )\n    if (running_on_ios()) {\n        document.body.classList.add(\"ios\")\n        if (running_on_ios_13_and_above()) {\n            document.body.classList.add(\"ios--13-and-above\")\n        } else {\n            document.body.classList.add(\"ios--12-and-below\")\n        }\n    }\n    if (is_cling_hp()) {\n        document.body.classList.add(\"hp\")\n        if (location.pathname.match(/^\\/[^/]*\\/detail\\/.*/)) {\n            // Make `detail` pages wider - they contain lots of stuff to read.\n            override_default_layout({\n                min_column_width: 400,\n                optimum_column_width: 420,\n                max_column_width: 680,\n            })\n        } else {\n            // We can afford to go a little wider on our website pages.\n            override_default_layout({\n                min_column_width: 320,\n                optimum_column_width: 340,\n                max_column_width: 680,\n            })\n        }\n        if (\n            location.pathname.match(/^\\/[^/]*\\/index\\.html/) ||\n            location.pathname.match(/^\\/[^/]*\\/teams\\.html/) ||\n            location.pathname.match(/^\\/[^/]*\\/info\\/.*/)\n        ) {\n            // The actual start page, detail index and landing-pages under `/xx/info/`\n            // receive special treatment.\n            document.body.classList.add(\"hp--extra\")\n        }\n    }\n}\n\nexport function init_dev() {\n    if (safe_local_storage.getItem(\"f_controlled_by_test\")) {\n        window._under_test = true\n    }\n    const {dev, frontend_only} =\n        process.env.NODE_ENV === \"test\" ? {dev: true, frontend_only: false} : cling\n    if (dev || frontend_only) {\n        show_first_error_or_redirect_in_browser()\n    }\n    return {dev, frontend_only}\n}\n\nexport function misc_init({dev}: {dev: boolean}) {\n    // See https://mobx.js.org/refguide/api.html#configure\n    configure_mobx({\n        enforceActions: process.env.NODE_ENV === \"production\" ? \"never\" : \"observed\",\n        computedRequiresReaction: dev,\n        reactionRequiresObservable: dev,\n    })\n    Page.document_title_suffix = \"Cling\" + (dev ? \" (dev)\" : \"\")\n}\n\nexport function preload_assets({await_before_render}: {await_before_render: Promise<void>[]}) {\n    load_material_icons_font().catch(report_error)\n    wait_for_material_icons_font().catch(report_error)\n    if (!running_on_mobile_device()) {\n        await_before_render.push(load_perfect_scrollbar())\n    }\n}\n\nexport async function set_user_currency() {\n    try {\n        const res = await call_function(new QueryUserMetaRequest({}), QueryUserMetaResponse)\n        runInAction(() => (ui_state.preferred_currency = res.currency === \"EUR\" ? \"EUR\" : \"USD\"))\n    } catch (error) {\n        report_error(\"Failed to detect user's currency - using USD\", error)\n        runInAction(() => (ui_state.preferred_currency = \"USD\"))\n    }\n}\n", "import type {Board, BoardInfo} from \"@cling/lib.shared.model\"\nimport {i18n} from \"@cling/lib.web.i18n\"\nimport {Button, Icon, IconButton, Menu, MenuItem, MenuItemDivider} from \"@cling/lib.web.mdc\"\nimport {cancel_event, running_on_mobile_device} from \"@cling/lib.web.utils\"\nimport {observer} from \"mobx-react\"\nimport * as React from \"react\"\nimport {open_intercom} from \"../misc/intercom\"\nimport {ui_actions, ui_state} from \"../state/index\"\nimport {BoardTitle} from \"./board_title\"\nimport {ScrollIndicator} from \"./scroll_indicator\"\nimport {\n    SignUp,\n    HolyTrinityOfVeryImportantLinks,\n    PublicMenuLinkItem,\n    TypographyLogo,\n    user_lang,\n} from \"./toolbar_items_common\"\n\nexport const TopToolbarItemsDesktopWebsite = ({board_info}: {board_info?: BoardInfo}) => {\n    const in_app = !!cling.public_board_in_app\n    const hide_sign_up_and_login = location.pathname.includes(\"cling-button-signed-in.html\")\n    return (\n        <nav\n            className=\"toolbar-items toolbar-items--public toolbar-items--top\"\n            onMouseEnter={ui_actions.hide_card_menus}\n            data-test-id=\"TopToolbarItems\"\n        >\n            <TitleItem board_info={board_info} />\n            {!in_app && <HowItWorksButton />}\n            {!in_app && <ForTeamsButton />}\n            {!in_app && <PricingButton />}\n            {!in_app && !hide_sign_up_and_login && <SignUp outlined />}\n            {!in_app && !hide_sign_up_and_login && <LoginButton />}\n            {in_app && <CloseWindow />}\n        </nav>\n    )\n}\n\nexport const TopToolbarItemsMobileWebsite = ({board_info}: {board_info?: BoardInfo}) => {\n    const in_app = !!cling.public_board_in_app\n    return (\n        <nav\n            className=\"toolbar-items toolbar-items--public toolbar-items--top\"\n            data-test-id=\"TopToolbarItems\"\n        >\n            <TitleItem board_info={board_info} />\n            <PublicBoardMenuItem in_app={in_app} />\n        </nav>\n    )\n}\n\nexport const BottomToolbarItemsMobileWebsite = observer(({board}: {board?: Board}) => {\n    const show_scroll_indicator = !ui_state.layout_state.all_columns_fully_visible\n    const in_app = !!cling.public_board_in_app\n    return (\n        <>\n            {show_scroll_indicator && <ScrollIndicator board={board} />}\n            <nav\n                className=\"toolbar-items toolbar-items--public toolbar-items--bottom\"\n                data-test-id=\"BottomToolbarItems\"\n            >\n                <div className=\"toolbar-items__flex\" />\n                {!in_app && <SignUp raised secondary />}\n                {in_app && <CloseWindow />}\n                <Chat />\n            </nav>\n        </>\n    )\n})\n\nexport const BottomToolbarItemsDesktopWebsite = observer(() => {\n    return (\n        <nav\n            className=\"toolbar-items-public-bottom-desktop-right\"\n            data-test-id=\"BottomToolbarItems\"\n            onMouseEnter={ui_actions.hide_card_menus}\n        >\n            <HolyTrinityOfVeryImportantLinks />\n            <LanguageSwitcher />\n            <Chat text />\n        </nav>\n    )\n})\n\nexport const TopToolbarItemsPublicPage = ({title}: {title: string}) =>\n    running_on_mobile_device() ? (\n        <TopToolbarItemsMobilePublicPage title={title} />\n    ) : (\n        <TopToolbarItemsDesktopPublicPage title={title} />\n    )\n\nconst TopToolbarItemsDesktopPublicPage = ({title}: {title: string}) => {\n    return (\n        <nav className=\"toolbar-items toolbar-items--public toolbar-items--top\">\n            <TypographyLogo in_app={false} />\n            <div className=\"mdc-top-app-bar__title toolbar-items__title--left public-page__title\">\n                {\"//\"} {title}\n            </div>\n            <HowItWorksButton />\n            <ForTeamsButton />\n            <PricingButton />\n        </nav>\n    )\n}\n\nexport const BottomToolbarItemsDesktopPublicPage = () => {\n    return (\n        <div\n            className=\"toolbar-items-public-bottom-desktop-right\"\n            data-test-id=\"BottomToolbarItems\"\n        >\n            <HolyTrinityOfVeryImportantLinks />\n            <LanguageSwitcher />\n            <Chat text />\n        </div>\n    )\n}\n\nconst TopToolbarItemsMobilePublicPage = ({title}: {title: string}) => {\n    return (\n        <div className=\"toolbar-items toolbar-items--public toolbar-items--top\">\n            <div className=\"mdc-top-app-bar__title toolbar-items__title--left board-title\">\n                <TypographyLogo in_app={false} />\n                {\"//\"} {title}\n            </div>\n            <PublicBoardMenuItem in_app={false} />\n        </div>\n    )\n}\n\nconst LoginButton = () => (\n    <a\n        href={`/${user_lang()}/login.html`}\n        className=\"toolbar-items__app-bar-button\"\n        draggable={false}\n    >\n        <Button>{i18n.log_in}</Button>\n    </a>\n)\n\nconst HowItWorksButton = () => (\n    <a\n        href={`/${user_lang()}/detail/index.html`}\n        className=\"toolbar-items__app-bar-button\"\n        draggable={false}\n    >\n        <Button>{i18n.how_it_works}</Button>\n    </a>\n)\n\nconst ForTeamsButton = () => (\n    <a\n        href={`/${user_lang()}/teams.html`}\n        className=\"toolbar-items__app-bar-button\"\n        draggable={false}\n    >\n        <Button>{i18n.for_teams}</Button>\n    </a>\n)\n\nconst CloseWindow = () => {\n    const close = React.useCallback(() => window.close(), [])\n    return (\n        <Button\n            className=\"toolbar-items__cta\"\n            raised\n            secondary\n            onClick={close}\n            data-test-id=\"CloseWindow\"\n        >\n            {i18n.return_to_app}\n        </Button>\n    )\n}\n\nconst LanguageSwitcher = () => {\n    const hp_lang = user_lang()\n    if (!hp_lang) {\n        return null\n    }\n    return (\n        <a\n            href={toggle_hp_language()}\n            className=\"toolbar-items__link mr--1\"\n            data-test-id=\"LanguageSwitcher\"\n        >\n            {hp_lang === \"de\" ? \"English\" : \"Deutsch\"}\n        </a>\n    )\n}\n\nconst Chat = ({text}: {text?: boolean}) => {\n    const open_help = React.useCallback((e: React.MouseEvent) => {\n        cancel_event(e)\n        open_intercom(\"home\")\n    }, [])\n    if (text) {\n        return (\n            <a className=\"toolbar-items__link mr--1\" onClick={open_help} data-test-id=\"Chat\">\n                {i18n.chat}\n            </a>\n        )\n    }\n    return (\n        <IconButton\n            icon=\"chat_bubble\"\n            onClick={open_help}\n            data-test-id=\"Chat\"\n            tooltip={i18n.get_help}\n        />\n    )\n}\n\nconst TitleItem = (props: {board_info?: BoardInfo}) => {\n    const {board_info} = props\n    const in_app = !!cling.public_board_in_app\n    const is_start_page = !!location.pathname.match(/^\\/[^/]*\\/index.html/)\n    return (\n        <div className=\"mdc-top-app-bar__title toolbar-items__title toolbar-items__title--left flex-row\">\n            <TypographyLogo in_app={in_app} />\n            {!is_start_page && (\n                <BoardTitle\n                    data-test-id=\"ToolbarItems_title\"\n                    board={board_info}\n                    title_override={`// ${board_info?.name ?? \"\"}`}\n                />\n            )}\n        </div>\n    )\n}\n\nconst PricingButton = () => (\n    <a\n        href={user_lang() === \"de\" ? \"/de/preise.html\" : \"/en/pricing.html\"}\n        className=\"toolbar-items__app-bar-button\"\n        draggable={false}\n    >\n        <Button>{i18n.pricing}</Button>\n    </a>\n)\n\nconst PublicBoardMenuItem = observer(({in_app}: {in_app: boolean}) => {\n    const open_help = React.useCallback(() => open_intercom(\"home\"), [])\n    return (\n        <Menu\n            className=\"toolbar-items__board-menu\"\n            data-test-id=\"PublicBoardMenu\"\n            anchor={\n                <IconButton\n                    icon=\"more_vert\"\n                    data-test-id=\"ToolbarItems_board_menu\"\n                    outlined\n                    tooltip={i18n.more}\n                />\n            }\n        >\n            <PublicMenuLinkItem\n                icon=\"language\"\n                data-test-id=\"ToolbarItems_switch_lang\"\n                title={user_lang() === \"en\" ? \"Deutsch\" : \"English\"}\n                toggle_lang\n                uri={location.pathname.split(\"/\").pop() || \"index.html\"}\n            />\n            {!in_app && (\n                <PublicMenuLinkItem icon=\"login\" title={i18n.log_in} uri=\"login.html\" button />\n            )}\n            <MenuItem\n                onClick={open_help}\n                title={i18n.get_help}\n                graphic={<Icon icon=\"chat_bubble_outline\" outlined />}\n            />\n            {!in_app && (\n                <>\n                    <MenuItemDivider />\n                    <PublicMenuLinkItem\n                        icon=\"collections\"\n                        title={i18n.how_it_works}\n                        uri=\"detail/index.html\"\n                    />\n                    <PublicMenuLinkItem icon=\"group\" title={i18n.for_teams} uri=\"teams.html\" />\n                    <PublicMenuLinkItem\n                        icon=\"format_list_bulleted\"\n                        title={i18n.pricing}\n                        uri=\"pricing.html\"\n                    />\n                    <MenuItemDivider />\n                    <PublicMenuLinkItem icon=\"subject\" title={i18n.terms_of_use} uri=\"terms.html\" />\n                    <PublicMenuLinkItem\n                        icon=\"privacy_tip\"\n                        title={i18n.privacy_policy}\n                        uri=\"privacy.html\"\n                    />\n                    <PublicMenuLinkItem icon=\"info\" title={i18n.imprint} uri=\"about.html\" />\n                </>\n            )}\n        </Menu>\n    )\n})\n\nconst toggle_hp_language = () => {\n    const toggle_hp_language_href = () => {\n        if (user_lang() === \"de\") {\n            return location.href.replace(\"/de/\", \"/en/\")\n        } else {\n            return location.href.replace(\"/en/\", \"/de/\")\n        }\n    }\n    let target_url = toggle_hp_language_href()\n    if (cling.public_board_in_app) {\n        target_url += `${target_url.includes(\"?\") ? \"&\" : \"?\"}in_app=1`\n    }\n    return target_url\n}\n", "import * as React from \"react\"\nimport {BoardInfo, Board, BoardType} from \"@cling/lib.shared.model\"\nimport {observer} from \"mobx-react\"\nimport {current_user} from \"../state/index\"\nimport {PrincipalInfo} from \"../account/principal_info\"\nimport {decorate_emojis} from \"@cling/lib.web.utils/decorate_emojis\"\nimport {escape_html} from \"@cling/lib.shared.utils\"\nimport {board_name} from \"./board_name\"\nimport {i18n} from \"@cling/lib.web.i18n\"\nimport {classNames} from \"@cling/lib.web.utils\"\n\nexport const BoardTitle = ({\n    board,\n    title_override,\n    className,\n    \"data-test-id\": data_test_id,\n    onClick,\n}: {\n    board: Board | BoardInfo | undefined\n    title_override?: string\n    className?: string\n    \"data-test-id\"?: string\n    onClick?: React.MouseEventHandler<HTMLDivElement>\n}) => {\n    const archived = board\n        ? current_user.account_settings.board_setting(board.uid)?.archived\n        : false\n    let title\n    if (title_override) {\n        title = <span>{title_override}</span>\n    } else if (!board) {\n        title = <span>...</span>\n    } else {\n        title = <ObservingBoardTitle board={board} />\n    }\n    return (\n        <h1\n            className={classNames(\"board-title\", className)}\n            data-test-id={data_test_id}\n            onClick={onClick}\n        >\n            <span className=\"board-title__text\">\n                {archived && <span className=\"board-title__archived\">[{i18n.archived}]</span>}\n                {title}\n            </span>\n        </h1>\n    )\n}\n\nconst ObservingBoardTitle = observer(({board}: {board: BoardInfo | Board}) => {\n    if (board.board_type === BoardType.dashboard) {\n        return <span>Cling</span>\n    } else if (board.board_type === BoardType.people) {\n        const shared_with = board.people_board_shared_with(current_user.account.uid)\n        return (\n            <div className=\"board-title__people-board\">\n                <div className=\"board-title__people-board-avatar\">\n                    <PrincipalInfo display=\"avatar\" uid={shared_with} />\n                </div>\n                <PrincipalInfo\n                    className=\"board-title__people-board-name\"\n                    display=\"full_name\"\n                    uid={shared_with}\n                />\n            </div>\n        )\n    } else {\n        return (\n            <span\n                dangerouslySetInnerHTML={{\n                    __html: decorate_emojis(escape_html(board_name(board, {mark_archived: false}))),\n                }}\n            />\n        )\n    }\n})\n", "import {i18n} from \"@cling/lib.web.i18n\"\nimport {IconButton} from \"@cling/lib.web.mdc\"\nimport {Button} from \"@cling/lib.web.mdc/button\"\nimport {Icon} from \"@cling/lib.web.mdc/icon\"\nimport {MenuItem} from \"@cling/lib.web.mdc/menu\"\nimport {running_on_mobile_device} from \"@cling/lib.web.utils\"\nimport {classNames} from \"@cling/lib.web.utils\"\nimport {observer} from \"mobx-react\"\nimport React from \"react\"\nimport {current_user, ui_actions, ui_state} from \"../state/index\"\nimport {is_cling_hp} from \"../utils\"\n\nexport function user_lang(): \"de\" | \"en\" {\n    if (current_user) {\n        return current_user.account.locale.startsWith(\"de\") ? \"de\" : \"en\"\n    }\n    return is_cling_hp() || \"en\"\n}\n\nexport const HolyTrinityOfVeryImportantLinks = () => {\n    return (\n        <>\n            <a href={`/${user_lang()}/terms.html`} className=\"toolbar-items__link mr--1\">\n                {i18n.terms_of_use}\n            </a>\n            <a href={`/${user_lang()}/privacy.html`} className=\"toolbar-items__link mr--1\">\n                {i18n.privacy}\n            </a>\n            <a href={`/${user_lang()}/about.html`} className=\"toolbar-items__link mr--1\">\n                {i18n.imprint}\n            </a>\n        </>\n    )\n}\n\nexport const CollapseItem = observer(() => {\n    const toggle_collapse_expand_all = React.useCallback(() => {\n        ui_actions.toggle_collapse_expand_all()\n    }, [])\n    const disabled = ui_state.search_state.all_boards\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            disabled={disabled}\n            tooltip={i18n.toggle_collapse_expand_all(ui_state.toggle_collapse_expand_all)}\n            small={!running_on_mobile_device()}\n            onClick={disabled ? undefined : toggle_collapse_expand_all}\n            label={\n                running_on_mobile_device() || process.env.F_PUBLIC\n                    ? undefined\n                    : i18n.toggle_collapse_expand_all(ui_state.toggle_collapse_expand_all)\n            }\n        />\n    )\n})\n\nexport const SignUp = ({\n    raised,\n    outlined,\n    secondary,\n}: {\n    raised?: boolean\n    outlined?: boolean\n    secondary?: boolean\n}) => (\n    <a href={`/${user_lang()}/signup.html`} draggable={false}>\n        <Button\n            className=\"toolbar-items__cta\"\n            raised={raised}\n            outlined={outlined}\n            secondary={secondary}\n        >\n            {i18n.sign_up_for_free}\n        </Button>\n    </a>\n)\n\nexport const TypographyLogo = ({in_app, className}: {in_app: boolean; className?: string}) => {\n    const logo = <div className={classNames(className, \"toolbar-items__typography-logo\")} />\n    if (in_app) {\n        return logo\n    }\n    return (\n        <a href={`/${user_lang()}/index.html`} aria-label=\"cling.com\" draggable={false}>\n            {logo}\n        </a>\n    )\n}\n\nexport const PublicMenuLinkItem = ({\n    icon,\n    title,\n    uri,\n    toggle_lang,\n    \"data-test-id\": data_test_id,\n    button,\n}: {\n    icon: string\n    title: string\n    uri: string\n    toggle_lang?: boolean\n    button?: boolean\n    \"data-test-id\"?: string\n}) => {\n    let is_de = user_lang() === \"de\"\n    if (toggle_lang) {\n        is_de = !is_de\n    }\n    const lang = is_de ? \"/de/\" : \"/en/\"\n    const url = `${location.protocol}//${location.host}${lang}${uri}`\n    // This is weird. We have to capture the event and redirect \"by hand\" because the request\n    // followed after the user clicked would get cancelled (see network tab).\n    const on_click = React.useCallback(\n        (e: React.MouseEvent) => {\n            goto(url)\n            e.stopPropagation()\n            e.preventDefault()\n        },\n        [url],\n    )\n    return (\n        <a\n            href={url}\n            className={classNames(\"no-outline\", button)}\n            onClickCapture={on_click}\n            draggable={false}\n            data-test-id={data_test_id}\n        >\n            <MenuItem\n                title={\n                    button ? (\n                        <Button raised className=\"toolbar-items--public-menu-button\">\n                            {title}\n                        </Button>\n                    ) : (\n                        title\n                    )\n                }\n                onClick={on_click}\n                graphic={button ? <div /> : <Icon icon={icon} outlined />}\n            />\n        </a>\n    )\n}\n"],
  "mappings": "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",
  "names": ["init", "install_global_error_handler", "default_logger", "log_history", "safe_local_storage", "log_history_to_string_array", "line", "__name", "import_buffer", "_ShowFirstErrorInBrowser", "__publicField", "message", "severity", "pre", "num_clicks", "unregister_log_event_reporter", "reversed_log_history", "error", "error_to_string", "__name", "ShowFirstErrorInBrowser", "show_first_error_or_redirect_in_browser", "_show_first_error_in_browser", "register_log_event_reporter", "goto_", "url", "x", "_report_error_rate_limiter", "RateLimiter", "_report_info_warn_rate_limiter", "_unreported_errors_counter", "init_log_event_reporting", "client", "CallFunctionFailed", "log", "within_limit", "call_function", "ReportLogEventRequest", "log_history_to_string_array", "log_history", "ReportLogEventResponse", "load_material_icons_font", "fonts", "log_interval_id", "log", "__name", "wait_for_material_icons_font", "set_global_css_classes", "running_on_mobile_device", "detect_scrollbar_width", "running_on_ios", "running_on_ios_13_and_above", "is_cling_hp", "override_default_layout", "__name", "init_dev", "safe_local_storage", "dev", "frontend_only", "show_first_error_or_redirect_in_browser", "misc_init", "configure", "Page", "preload_assets", "await_before_render", "load_material_icons_font", "report_error", "wait_for_material_icons_font", "load_perfect_scrollbar", "set_user_currency", "res", "call_function", "QueryUserMetaRequest", "QueryUserMetaResponse", "runInAction", "ui_state", "error", "init_compat_module", "init_compat_module", "BoardTitle", "__name", "board", "title_override", "className", "data_test_id", "onClick", "archived", "current_user", "title", "_", "ObservingBoardTitle", "classNames", "i18n", "observer", "shared_with", "PrincipalInfo", "decorate_emojis", "escape_html", "board_name", "init_compat_module", "user_lang", "current_user", "is_cling_hp", "__name", "HolyTrinityOfVeryImportantLinks", "Rn", "i18n", "CollapseItem", "observer", "toggle_collapse_expand_all", "ui_actions", "disabled", "ui_state", "IconButton", "running_on_mobile_device", "SignUp", "raised", "outlined", "secondary", "Button", "TypographyLogo", "in_app", "className", "logo", "classNames", "PublicMenuLinkItem", "icon", "title", "uri", "toggle_lang", "data_test_id", "button", "is_de", "lang", "url", "on_click", "e", "MenuItem", "Icon", "TopToolbarItemsDesktopWebsite", "__name", "board_info", "in_app", "hide_sign_up_and_login", "_", "ui_actions", "TitleItem", "HowItWorksButton", "ForTeamsButton", "PricingButton", "SignUp", "LoginButton", "CloseWindow", "TopToolbarItemsMobileWebsite", "PublicBoardMenuItem", "BottomToolbarItemsMobileWebsite", "observer", "board", "show_scroll_indicator", "ui_state", "k", "ScrollIndicator", "Chat", "BottomToolbarItemsDesktopWebsite", "HolyTrinityOfVeryImportantLinks", "LanguageSwitcher", "TopToolbarItemsPublicPage", "title", "running_on_mobile_device", "TopToolbarItemsMobilePublicPage", "TopToolbarItemsDesktopPublicPage", "TypographyLogo", "BottomToolbarItemsDesktopPublicPage", "user_lang", "Button", "i18n", "close", "q", "hp_lang", "toggle_hp_language", "text", "open_help", "e", "cancel_event", "open_intercom", "IconButton", "props", "is_start_page", "BoardTitle", "Menu", "PublicMenuLinkItem", "MenuItem", "Icon", "MenuItemDivider", "target_url"]
}