{ "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"] }