var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
import React from 'react';
import ReactDOM from 'react-dom';
import { Toast } from '../Toast/index.js';
/**
 * `SingleToast` — это короткое немодальное уведомление, которое сообщает пользователю о результате выполнения его команды.
 * Результат может быть положительным, отрицательным или нейтральным.
 *
 * Позволяет вызывать тосты с помощью статических методов.
 *
 * ##### Особенности компонента SingleToast
 * Для корректной работы `<SingleToast />` должен быть отрисован только **один раз** на странице. После чего его можно вызывать из любого места приложения методом `SingleToast.push()`. Однако, переданные в компонент пропсы, такие как `theme`, `onPush` и остальные, будут применяться ко всем вызовам.
 */
var SingleToast = /** @class */ (function (_super) {
    __extends(SingleToast, _super);
    function SingleToast() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.render = function () { return React.createElement(Toast, __assign({ ref: SingleToast.ref }, _this.props)); };
        return _this;
    }
    SingleToast.__KONTUR_REACT_UI__ = 'SingleToast';
    SingleToast.displayName = 'SingleToast';
    SingleToast.ref = React.createRef();
    SingleToast.close = function () {
        var _a;
        if (Number(React.version) >= 18) {
            ReactDOM.flushSync(function () { var _a; return (_a = SingleToast.ref.current) === null || _a === void 0 ? void 0 : _a.close(); });
        }
        else {
            (_a = SingleToast.ref.current) === null || _a === void 0 ? void 0 : _a.close();
        }
    };
    /**
     * Показывает тост с `notification` в качестве сообщения.
     * Тост автоматически скрывается через 3 или 7 секунд,
     * в зависимости от наличия у него кнопки `action` внутри config-а.
     * Время показа можно задать вручную, передав `showTime` внутри config-а.
     *
     * @public
     * @param {React.ReactNode} notification
     * @param {ToastPushConfig} config объект с конфигурацией отображения компонента Toast
     *
     */
    SingleToast.push = function (notification, config) {
        var _a;
        SingleToast.close();
        (_a = SingleToast.ref.current) === null || _a === void 0 ? void 0 : _a.push(notification, config);
    };
    return SingleToast;
}(React.Component));
export { SingleToast };
//# sourceMappingURL=SingleToast.js.map