'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

const index = require('./index-9564483d.js');
const LedgerConnectBase = require('./LedgerConnectBase-6b394ac2.js');
require('./EventBus-1890a8f3.js');

const LedgerConnect = class {
    constructor(hostRef) {
        index.registerInstance(this, hostRef);
        this.data = {
            accountScreenData: null,
            confirmScreenData: null,
            connectScreenData: {},
        };
        this.selectedIndex = 0;
    }
    componentWillLoad() {
        this.ledgerConnectBase = new LedgerConnectBase.LedgerConnectBase(this.data);
    }
    async getEventBus() {
        return this.ledgerConnectBase.getEventBus();
    }
    render() {
        const { accountScreenData, confirmScreenData, connectScreenData } = this.data;
        if (accountScreenData) {
            return (index.h("ledger-account-screen", { accountScreenData: accountScreenData, selectedIndex: this.selectedIndex, onSelectAccount: (event) => this.selectAccount(event.detail), onAccessWallet: () => this.accessWallet(), onPrevPage: () => this.prevPage(), onNextPage: () => this.nextPage() }));
        }
        if (confirmScreenData) {
            return index.h("ledger-confirm-screen", { confirmScreenData: confirmScreenData });
        }
        return index.h("ledger-connect-screen", { connectScreenData: connectScreenData, onConnect: () => this.ledgerConnectBase.eventBus.publish(LedgerConnectBase.LedgerConnectEventsEnum.CONNECT_DEVICE) });
    }
    accessWallet() {
        this.ledgerConnectBase.accessWallet();
    }
    selectAccount(index) {
        this.ledgerConnectBase.selectAccount(index);
        // this is needed for the UI to be reactive
        this.selectedIndex = this.ledgerConnectBase.selectedIndex;
    }
    async nextPage() {
        this.ledgerConnectBase.nextPage();
    }
    async prevPage() {
        this.ledgerConnectBase.prevPage();
    }
    removeComponent() {
        var _a;
        if ((_a = this.hostElement) === null || _a === void 0 ? void 0 : _a.parentNode) {
            this.hostElement.parentNode.removeChild(this.hostElement);
        }
    }
    componentDidLoad() {
        this.ledgerConnectBase.subscribeEventBus({
            closeFn: () => this.removeComponent(),
            forceUpdateFn: () => {
                // this is needed for the UI to be reactive
                this.data = this.ledgerConnectBase.data;
                index.forceUpdate(this);
            },
        });
    }
    disconnectedCallback() {
        this.ledgerConnectBase.unsubscribeEventBus({
            closeFn: () => this.removeComponent(),
            forceUpdateFn: () => {
                // this is needed for the UI to be reactive
                this.data = this.ledgerConnectBase.data;
                index.forceUpdate(this);
            },
        });
    }
    get hostElement() { return index.getElement(this); }
};

exports.ledger_connect = LedgerConnect;

//# sourceMappingURL=ledger-connect.cjs.entry.js.map