{
  "version": 3,
  "sources": ["../../board/scroll_indicator.tsx", "../../misc/global_backdrop.tsx", "../../profiler.ts", "../../../lib.web.utils/detect_emoji.ts", "../../../lib.web.utils/decorate_emojis.ts", "../../../../node_modules/p-limit/node_modules/yocto-queue/index.js", "../../../../node_modules/p-limit/index.js", "../../board/board_name.ts", "../../account/principal_info.tsx"],
  "sourcesContent": ["import * as React from \"react\"\nimport type {Board} from \"@cling/lib.shared.model\"\nimport {observer} from \"mobx-react\"\nimport {ui_state, ui_actions} from \"../state/index\"\nimport {running_on_mobile_device} from \"@cling/lib.web.utils\"\nimport {classNames} from \"@cling/lib.web.utils\"\nimport {IconButton} from \"@cling/lib.web.mdc/icon_button\"\nimport {i18n} from \"@cling/lib.web.i18n\"\nimport {GlobalBackdrop} from \"../misc/global_backdrop\"\nimport {simple_tooltip_event_handlers} from \"@cling/lib.web.mdc/simple_tooltip\"\n\nexport const ScrollIndicator = observer(({board}: {board?: Board}) => {\n    if (ui_state.search_state.all_boards || !board || ui_state.is_card_editor_open) {\n        return null\n    }\n    const columns = board ? [...ui_state.visible_columns(board)] : []\n    const column_indexes_with_updates = []\n    const columns_fully_visible = []\n    const layout = ui_state.layout_state.layout\n    for (let i = 0; i < columns.length; i++) {\n        if (ui_state.is_new_or_changed(columns[i])) {\n            column_indexes_with_updates.push(i)\n        }\n    }\n    for (let i = 0; i < layout.main_layout.num_columns; i++) {\n        columns_fully_visible.push(ui_state.layout_state.is_column_fully_visible(i))\n    }\n    if (running_on_mobile_device()) {\n        return (\n            <MobileScrollIndicator\n                columns_fully_visible={columns_fully_visible}\n                columns_indexes_with_updates={column_indexes_with_updates}\n            />\n        )\n    }\n    return (\n        <DesktopScrollIndicator\n            columns_fully_visible={columns_fully_visible}\n            columns_indexes_with_updates={column_indexes_with_updates}\n        />\n    )\n})\n\nconst DesktopScrollIndicator = observer(\n    ({\n        columns_indexes_with_updates,\n        columns_fully_visible,\n    }: {\n        columns_indexes_with_updates: number[]\n        columns_fully_visible: boolean[]\n    }) => {\n        const scroll_left = React.useCallback(() => {\n            ui_state.layout_state.scroll_to_column(\n                ui_state.layout_state.first_visible_column_index - 1,\n            )\n        }, [])\n        const scroll_right = React.useCallback(() => {\n            ui_state.layout_state.scroll_to_column(\n                ui_state.layout_state.first_visible_column_index + 1,\n            )\n        }, [])\n        return (\n            <nav\n                className=\"scroll-indicator__container--desktop\"\n                onMouseEnter={ui_actions.hide_card_menus}\n            >\n                <ol className=\"scroll-indicator__overview scroll-indicator__overview--desktop\">\n                    <GlobalBackdrop />\n                    <li>\n                        <IconButton\n                            className=\"scroll-indicator__overview-button\"\n                            icon=\"navigate_before\"\n                            onClick={scroll_left}\n                            data-test-id=\"ScrollIndicator_left\"\n                            disabled={columns_fully_visible[0]}\n                            tooltip={i18n.scroll_left}\n                        />\n                    </li>\n                    <li>\n                        <IconButton\n                            className=\"scroll-indicator__overview-button\"\n                            icon=\"remove\"\n                            data-test-id=\"ScrollIndicator_zoom_out\"\n                            disabled={!ui_state.is_layout_zoom_out_enabled}\n                            small\n                            onClick={ui_actions.layout_zoom_out}\n                            tooltip={i18n.make_cards_smaller}\n                        />\n                    </li>\n                    {columns_fully_visible.map((fully_visible, i) => {\n                        return (\n                            <li\n                                key={i}\n                                className={classNames(\"scroll-indicator__overview-item\", {\n                                    \"scroll-indicator__overview-item--not-visible\": !fully_visible,\n                                    \"scroll-indicator__overview-item--visible\": fully_visible,\n                                    \"scroll-indicator__overview-item--has-updates\":\n                                        columns_indexes_with_updates?.includes(i),\n                                })}\n                                onClick={() => ui_state.layout_state.scroll_column_into_view(i)}\n                                aria-label={fully_visible ? undefined : i18n.jump_to_column}\n                                {...(!fully_visible ? simple_tooltip_event_handlers : {})}\n                            />\n                        )\n                    })}\n                    <li>\n                        <IconButton\n                            className=\"scroll-indicator__overview-button\"\n                            data-test-id=\"ScrollIndicator_zoom_in\"\n                            icon=\"add\"\n                            small\n                            onClick={ui_actions.layout_zoom_in}\n                            disabled={!ui_state.is_layout_zoom_in_enabled}\n                            tooltip={i18n.make_cards_larger}\n                        />\n                    </li>\n                    <li>\n                        <IconButton\n                            className=\"scroll-indicator__overview-button\"\n                            icon=\"navigate_next\"\n                            onClick={scroll_right}\n                            disabled={\n                                columns_fully_visible[columns_fully_visible.length - 1] &&\n                                (ui_state.layout_state.first_visible_column_index !== 0 ||\n                                    !ui_state.layout_state.layout.main_layout.inbox_shown)\n                            }\n                            data-test-id=\"ScrollIndicator_right\"\n                            tooltip={i18n.scroll_right}\n                        />\n                    </li>\n                </ol>\n            </nav>\n        )\n    },\n)\n\nconst MobileScrollIndicator = ({\n    columns_indexes_with_updates,\n    columns_fully_visible,\n}: {\n    columns_indexes_with_updates: number[]\n    columns_fully_visible: boolean[]\n}) => {\n    return (\n        <ol className=\"scroll-indicator__overview scroll-indicator__overview--mobile\">\n            {columns_fully_visible.map((fully_visible, i) => {\n                return (\n                    <li\n                        key={i}\n                        className={classNames(\"scroll-indicator__overview-item\", {\n                            \"scroll-indicator__overview-item--not-visible\": !fully_visible,\n                            \"scroll-indicator__overview-item--visible\": fully_visible,\n                            \"scroll-indicator__overview-item--has-updates\":\n                                columns_indexes_with_updates?.includes(i),\n                        })}\n                    />\n                )\n            })}\n        </ol>\n    )\n}\n", "import * as React from \"react\"\nimport {ui_state, ui_actions} from \"../state/index\"\nimport {observer} from \"mobx-react\"\n\nimport {classNames} from \"@cling/lib.web.utils\"\n\n/**\n * We need this component to show a global backdrop. This component has to be added to all\n * stacking contexts to enable a card-editor for example to stand out of the backdrop.\n */\nexport const GlobalBackdrop = observer(({dom_ref}: {dom_ref?: React.RefObject<HTMLDivElement>}) => {\n    const on_click = React.useCallback(() => {\n        ui_state.global_backdrop?.()\n        ui_actions.hide_global_backdrop()\n    }, [])\n    return (\n        <div\n            className={classNames(\"global-backdrop\", {\n                \"global-backdrop--active\": !!ui_state.global_backdrop,\n            })}\n            ref={dom_ref}\n            onClick={on_click}\n        />\n    )\n})\n", "import {ui_state} from \"./state/index\"\nimport type {Board} from \"@cling/lib.shared.model\"\nimport {report_info} from \"@cling/lib.shared.debug\"\nimport {log} from \"@cling/lib.shared.logging\"\n\nlet page_mounted_counter = 0\nlet board_mounted_counter = 0\nlet should_report_ttfc = false\n\nexport const profiler = {\n    on_page_mounted() {\n        page_mounted_counter += 1\n    },\n\n    on_board_mounted(board: Board) {\n        board_mounted_counter += 1\n        if (\n            page_mounted_counter === 0 &&\n            board_mounted_counter === 1 &&\n            ui_state.search_state.is_a_card_visible(board)\n        ) {\n            should_report_ttfc = true\n        }\n    },\n\n    on_card_mounted() {\n        if (should_report_ttfc) {\n            should_report_ttfc = false\n            if (cling.tab_was_in_background) {\n                return\n            }\n            const ttfc = Math.round(performance.now() - cling.t0)\n            cling.ttfc = ttfc\n            log.info(\"TTFC\", {ttfc})\n            if (!cling.dev && ttfc > 5000) {\n                report_info(`TTFC too large: ${ttfc}`)\n            }\n        }\n    },\n}\n", "function is_symbol(code_point: number) {\n    return (\n        (code_point >= 0x2000 && code_point <= 0x206f) ||\n        (code_point >= 0x20d0 && code_point <= 0x214f) ||\n        (code_point >= 0x2190 && code_point <= 0x21ff) ||\n        (code_point >= 0x2300 && code_point <= 0x23ff) ||\n        (code_point >= 0x2460 && code_point <= 0x24ff) ||\n        (code_point >= 0x25a0 && code_point <= 0x27bf) ||\n        (code_point >= 0x2900 && code_point <= 0x297f) ||\n        (code_point >= 0x2b00 && code_point <= 0x2bff) ||\n        (code_point >= 0x3000 && code_point <= 0x303f) ||\n        (code_point >= 0x3200 && code_point <= 0x32ff) ||\n        (code_point >= 0x1f000 && code_point <= 0x1f02f) ||\n        (code_point >= 0x1f0a0 && code_point <= 0x1f6ff) ||\n        (code_point >= 0x1f780 && code_point <= 0x1f7ff) ||\n        (code_point >= 0x1f900 && code_point <= 0x1f9ff) ||\n        (code_point >= 0x1fa70 && code_point <= 0x1faff)\n    )\n}\n\nfunction is_variation_selector(code_point: number) {\n    return code_point >= 0xfe00 && code_point <= 0xfe0f\n}\n\nfunction is_supplementary(code_point: number) {\n    return code_point >= 0xe0000 && code_point <= 0xeffff\n}\n\n/**\n * Returns `0` if the given string `s` does not have an emoji\n * at the given position `i`, otherwise the length of the emoji\n * is returned.\n */\nexport function detect_emoji(s: string, i: number): number {\n    let result = 0\n    let code_point = s.codePointAt(i)!\n    if (code_point >= 0x2000) {\n        // Special handling for flags ...\n        if (code_point >= 0x1f1e6 && code_point <= 0x1f1ff) {\n            code_point = s.codePointAt(i + 2)!\n            if (code_point >= 0x1f1e6 && code_point <= 0x1f1ff) {\n                return 4\n            }\n        }\n        if (is_symbol(code_point)) {\n            result = code_point < 0x10000 ? 1 : 2\n            code_point = s.codePointAt(i + result)!\n            if (is_variation_selector(code_point)) {\n                result += 1\n                code_point = s.codePointAt(i + result)!\n            }\n            while (is_supplementary(code_point)) {\n                result += 2\n                code_point = s.codePointAt(i + result)!\n            }\n            if (code_point === 0x200d) {\n                result += 1\n                result += detect_emoji(s, i + result)\n            }\n        }\n    } else if (is_variation_selector(s.codePointAt(i + 1)!)) {\n        result = 2 + detect_emoji(s, i + 2)\n    }\n    return result\n}\n", "import {detect_emoji} from \"./detect_emoji\"\n\nexport function decorate_emojis(html: string, emoji_css_class = \"emoji\"): string {\n    let i = 0,\n        j = 0\n    const n = html.length\n    const a: string[] = []\n    while (j < n) {\n        if (html.charAt(j) === \"<\") {\n            j = html.indexOf(\">\", j) + 1\n        } else {\n            let x = detect_emoji(html, j)\n            if (x) {\n                if (j > i) {\n                    a.push(html.substring(i, j))\n                }\n                a.push(`<span class=\"${emoji_css_class}\">`)\n                let k = j\n                do {\n                    k += x\n                    x = detect_emoji(html, k)\n                } while (x)\n                a.push(html.substring(j, k))\n                a.push(\"</span>\")\n                i = j = k\n            } else {\n                ++j\n            }\n        }\n    }\n    if (a.length) {\n        a.push(html.slice(i))\n        html = a.join(\"\")\n    }\n    return html\n}\n\nexport function emojis_should_be_large(html: string): boolean {\n    const n = html.length\n    let i = 0\n    let emoji_counter = 0\n    while (i < n) {\n        if (html.charAt(i) === \"<\") {\n            i = html.indexOf(\">\", i) + 1\n        } else {\n            const x = detect_emoji(html, i)\n            if (!x) {\n                // `html` contains text characters, which are not an emoji.\n                return false\n            }\n            emoji_counter += 1\n            if (emoji_counter > 5) {\n                // `html` contains more than 5 emojis.\n                return false\n            }\n            i += x\n        }\n    }\n    return true\n}\n", "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n", "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n", "import {BoardType, AccountUID, BoardUID} from \"@cling/lib.shared.model\"\nimport {current_user} from \"../state/index\"\nimport {i18n} from \"@cling/lib.web.i18n\"\nimport {assert_never, full_name} from \"@cling/lib.shared.utils\"\nimport {account_resource} from \"@cling/lib.web.resources\"\n\ntype MinBoardProps = {\n    uid: BoardUID\n    name: string\n    board_type: BoardType\n    people_board_shared_with: (account_uid: AccountUID) => AccountUID\n}\n\nexport const board_name = (\n    board: MinBoardProps,\n    opts: {mark_archived?: boolean} = {mark_archived: true},\n) => {\n    const is_archived = current_user.account_settings.board_setting(board.uid)?.archived\n    if (board.board_type === BoardType.dashboard) {\n        return \"Cling\"\n    } else if (board.board_type === BoardType.trashcan) {\n        return i18n.trashcan\n    } else if (board.board_type === BoardType.clipboard) {\n        return i18n.clipboard\n    } else if (board.board_type === BoardType.regular) {\n        if (is_archived && opts.mark_archived) {\n            return `[${i18n.archived}] ${board.name}`\n        }\n        return board.name\n    } else if (board.board_type === BoardType.people) {\n        const account = account_resource.read(\n            board.people_board_shared_with(current_user.account.uid),\n        )\n        const name = full_name(account)\n        if (is_archived && opts.mark_archived) {\n            return `[${i18n.archived}] ${name}`\n        }\n        return name\n    } else {\n        throw assert_never(board.board_type)\n    }\n}\n", "import * as React from \"react\"\nimport {classNames} from \"@cling/lib.web.utils\"\nimport {Avatar} from \"@cling/lib.web.mdc\"\nimport {AccountUID, is_AccountUID, is_TeamUID, PrincipalUID, Team} from \"@cling/lib.shared.model\"\nimport {observer} from \"mobx-react\"\nimport {assert_never, full_name} from \"@cling/lib.shared.utils\"\nimport {account_resource, team_resource, team_members_resource} from \"@cling/lib.web.resources\"\nimport {simple_tooltip_event_handlers} from \"@cling/lib.web.mdc/simple_tooltip\"\n\ninterface AccountModel {\n    uid?: AccountUID\n    given_name?: string\n    family_name?: string\n    profile_image_url?: string\n}\n\ninterface TeamModel {\n    name?: string\n}\n\ntype Props = (\n    | {uid: PrincipalUID; account?: never; teams_of_account?: never; team?: never}\n    | {uid?: never; account: AccountModel; teams_of_account?: Team[]; team?: never}\n    | {uid?: never; account?: never; teams_of_account?: never; team: TeamModel}\n) & {\n    display:\n        | \"avatar\"\n        | \"avatar_small\"\n        | \"avatar_large\"\n        | \"avatar_very_large\"\n        | \"full_name\"\n        | \"full_name_no_teams\"\n        | \"complete\"\n    custom_details?: string\n    className?: string\n    tooltip?: \"full_name\"\n    \"data-test-id\"?: string\n    \"data-test-ignore\"?: boolean\n    prefix?: string\n}\n\nexport const PrincipalInfo = observer(\n    ({\n        uid,\n        display,\n        className,\n        prefix,\n        custom_details,\n        tooltip,\n        \"data-test-id\": data_test_id,\n        \"data-test-ignore\": data_test_ignore,\n        teams_of_account,\n        team,\n        account,\n    }: Props) => {\n        if (!teams_of_account) {\n            teams_of_account = []\n        }\n        if (uid) {\n            if (is_AccountUID(uid)) {\n                account = account_resource.read(uid)\n            } else if (is_TeamUID(uid)) {\n                team = team_resource.read(uid)\n            } else {\n                throw assert_never(uid)\n            }\n        }\n        if (account?.uid) {\n            const account_uid = account.uid\n            // Go through all teams we have access to the members of.\n            for (const team_candidate of team_resource.read_all()) {\n                const members = team_members_resource.read(team_candidate.uid)\n                if (members?.account_uids.includes(account_uid)) {\n                    teams_of_account.push(team_candidate)\n                }\n            }\n        }\n        const name = (prefix || \"\") + (team ? team.name : full_name(account))\n        if ([\"full_name\", \"full_name_no_teams\"].includes(display)) {\n            let details\n            if (custom_details) {\n                details = custom_details\n            } else if (teams_of_account.length > 0) {\n                details = teams_of_account\n                    .map((x) => (x ? x.name : \"...\"))\n                    .sort((a, b) => a.localeCompare(b))\n                    .join(\", \")\n            }\n            return (\n                <span\n                    className={classNames(className, \"principal-info__full-name\")}\n                    data-test-id={data_test_id}\n                    data-test-ignore={data_test_ignore}\n                >\n                    {name}\n                    {display === \"full_name\" && !!details && (\n                        <div className=\"principal-info__teams\">{details}</div>\n                    )}\n                </span>\n            )\n        }\n        let icon: string | undefined\n        let letter: string | undefined\n        if (!account) {\n            if (team || is_TeamUID(uid)) {\n                icon = \"group\"\n            } else {\n                letter = \"\\u2026\" // ... horizontal ellipsis\n            }\n        } else if (account.given_name) {\n            letter = account.given_name.charAt(0)\n        } else if (account.family_name) {\n            letter = account.family_name.charAt(0)\n        } else {\n            letter = \"?\"\n        }\n        const tooltip_str = tooltip === \"full_name\" && (account || team) ? name : undefined\n        return (\n            <div\n                aria-label={tooltip_str}\n                data-test-id={data_test_id}\n                data-test-ignore={data_test_ignore}\n                className=\"principal-info\"\n                {...(tooltip_str ? simple_tooltip_event_handlers : {})}\n            >\n                <div>\n                    <Avatar\n                        className={className}\n                        image_url={account && account.profile_image_url}\n                        icon={icon}\n                        letter={letter}\n                        large={display === \"avatar_large\"}\n                        very_large={display === \"avatar_very_large\"}\n                        small={display === \"avatar_small\"}\n                    />\n                </div>\n                {display === \"complete\" && (\n                    <div className=\"principal-info__complete-fullname\">\n                        {name}\n                        {teams_of_account.length > 0 && (\n                            <div className=\"principal-info__teams\">\n                                {teams_of_account.map((x) => (x ? x.name : \"...\")).join(\", \")}\n                            </div>\n                        )}\n                    </div>\n                )}\n            </div>\n        )\n    },\n)\n"],
  "mappings": "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",
  "names": ["init_compat_module", "init_compat_module", "GlobalBackdrop", "observer", "dom_ref", "on_click", "q", "ui_state", "ui_actions", "_", "classNames", "ScrollIndicator", "observer", "board", "ui_state", "columns", "column_indexes_with_updates", "columns_fully_visible", "layout", "i", "running_on_mobile_device", "_", "MobileScrollIndicator", "DesktopScrollIndicator", "columns_indexes_with_updates", "scroll_left", "q", "scroll_right", "ui_actions", "GlobalBackdrop", "IconButton", "i18n", "fully_visible", "classNames", "simple_tooltip_event_handlers", "__name", "page_mounted_counter", "board_mounted_counter", "should_report_ttfc", "profiler", "board", "ui_state", "ttfc", "log", "report_info", "is_symbol", "code_point", "__name", "is_variation_selector", "is_supplementary", "detect_emoji", "s", "i", "result", "decorate_emojis", "html", "emoji_css_class", "i", "j", "n", "x", "detect_emoji", "k", "__name", "emojis_should_be_large", "emoji_counter", "_Node", "value", "__publicField", "__name", "Node", "_head", "_tail", "_size", "_Queue", "__privateAdd", "node", "__privateGet", "__privateSet", "__privateWrapper", "current", "Queue", "pLimit", "concurrency", "queue", "Queue", "activeCount", "next", "__name", "run", "fn", "resolve", "args", "result", "enqueue", "generator", "board_name", "__name", "board", "opts", "is_archived", "current_user", "i18n", "account", "account_resource", "name", "full_name", "assert_never", "init_compat_module", "PrincipalInfo", "observer", "uid", "display", "className", "prefix", "custom_details", "tooltip", "data_test_id", "data_test_ignore", "teams_of_account", "team", "account", "is_AccountUID", "account_resource", "is_TeamUID", "team_resource", "assert_never", "account_uid", "team_candidate", "team_members_resource", "name", "full_name", "details", "x", "a", "b", "_", "classNames", "icon", "letter", "tooltip_str", "simple_tooltip_event_handlers", "Avatar"]
}