1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3    if (k2 === undefined) k2 = k;
4    var desc = Object.getOwnPropertyDescriptor(m, k);
5    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6      desc = { enumerable: true, get: function() { return m[k]; } };
7    }
8    Object.defineProperty(o, k2, desc);
9}) : (function(o, m, k, k2) {
10    if (k2 === undefined) k2 = k;
11    o[k2] = m[k];
12}));
13var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14    Object.defineProperty(o, "default", { enumerable: true, value: v });
15}) : function(o, v) {
16    o["default"] = v;
17});
18var __importStar = (this && this.__importStar) || function (mod) {
19    if (mod && mod.__esModule) return mod;
20    var result = {};
21    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22    __setModuleDefault(result, mod);
23    return result;
24};
25Object.defineProperty(exports, "__esModule", { value: true });
26exports.ErrorToastContainer = void 0;
27/**
28 * Copyright (c) 650 Industries.
29 * Copyright (c) Meta Platforms, Inc. and affiliates.
30 *
31 * This source code is licensed under the MIT license found in the
32 * LICENSE file in the root directory of this source tree.
33 */
34const react_1 = __importStar(require("react"));
35const react_native_1 = require("react-native");
36const ErrorToast_1 = require("./ErrorToast");
37const LogBoxData = __importStar(require("../Data/LogBoxData"));
38const LogContext_1 = require("../Data/LogContext");
39const useRejectionHandler_1 = require("../useRejectionHandler");
40function ErrorToastContainer() {
41    (0, useRejectionHandler_1.useRejectionHandler)();
42    const { logs, isDisabled } = (0, LogContext_1.useLogs)();
43    if (!logs.length || isDisabled) {
44        return null;
45    }
46    return react_1.default.createElement(ErrorToastStack, { logs: logs });
47}
48exports.ErrorToastContainer = ErrorToastContainer;
49function ErrorToastStack({ logs }) {
50    const onDismissWarns = (0, react_1.useCallback)(() => {
51        LogBoxData.clearWarnings();
52    }, []);
53    const onDismissErrors = (0, react_1.useCallback)(() => {
54        LogBoxData.clearErrors();
55    }, []);
56    const setSelectedLog = (0, react_1.useCallback)((index) => {
57        LogBoxData.setSelectedLog(index);
58    }, []);
59    function openLog(log) {
60        let index = logs.length - 1;
61        // Stop at zero because if we don't find any log, we'll open the first log.
62        while (index > 0 && logs[index] !== log) {
63            index -= 1;
64        }
65        setSelectedLog(index);
66    }
67    const warnings = (0, react_1.useMemo)(() => logs.filter((log) => log.level === 'warn'), [logs]);
68    const errors = (0, react_1.useMemo)(() => logs.filter((log) => log.level === 'error' || log.level === 'fatal'), [logs]);
69    return (react_1.default.createElement(react_native_1.View, { style: styles.list },
70        warnings.length > 0 && (react_1.default.createElement(ErrorToast_1.ErrorToast, { log: warnings[warnings.length - 1], level: "warn", totalLogCount: warnings.length, onPressOpen: () => openLog(warnings[warnings.length - 1]), onPressDismiss: onDismissWarns })),
71        errors.length > 0 && (react_1.default.createElement(ErrorToast_1.ErrorToast, { log: errors[errors.length - 1], level: "error", totalLogCount: errors.length, onPressOpen: () => openLog(errors[errors.length - 1]), onPressDismiss: onDismissErrors }))));
72}
73const styles = react_native_1.StyleSheet.create({
74    list: {
75        bottom: 6,
76        left: 10,
77        right: 10,
78        maxWidth: 320,
79        // @ts-expect-error
80        position: 'fixed',
81    },
82});
83exports.default = LogBoxData.withSubscription(ErrorToastContainer);
84//# sourceMappingURL=ErrorToastContainer.web.js.map