var Breadcrumb = Namespace.declare("com.twitter.Bootstrap",
    class Breadcrumb extends UcpComponent {
        static get implements() { return []; };
        static start() {}
        static get dependencies() {
            return [
                "/EAMD.ucp/Components/com/twitter/Bootstrap/3.3.7/Bootstrap.component.xml"
            ];
        }


        constructor() {
            super();
            this.name = "Breadcrumb";
            this.cssClasses = "";
            this.href = "#";
        }

        init() {
            if (this._private.isInitialized)
                return;

            super.init();
            return this;
        }

        updateView(view) {
            if (view instanceof DefaultView) {
                view.clear();

                var container = view.container;
                if (container.element)
                    container = container.element;


                var list = [];
                var parent = view.model;
                while (parent) {
                    //var item = BreadcrumbContent.getInstance().init(this, parent);
                    //item.prepend(container);
                    list.push(parent);
                    if (parent.parent == parent)
                        return;
                    if (parent.parent)
                        parent = parent.parent;
                    else
                        parent = parent.parentElement;
                }

                //make sure all parents are loaded

                Promise.all(list.map(item => {
                    if (item instanceof UcpModel && !item.isLoaded)
                        return item.load();
                    return item;
                })).then(

                    list.map(element => {
                        var item = BreadcrumbContent.getInstance().init(this, element).then(
                            item => {
                                item.prepend(container);
                            });
                    })
                );


            }
        }
    }
);

var BreadcrumbContent = Namespace.declare("com.twitter.Bootstrap.Breadcrumb",
    class BreadcrumbContent extends ItemView {
        init(breadcrumb, object) {
            return UcpComponentSupport.getUcpComponent4Object(object).then(
                ucpComponent => {
                    var controller = breadcrumb.controller;

                    super.init(controller);

                    this._private.ucpModel = ucpComponent.ucpModel;
                    ucpComponent.controller.addView(ucpComponent.ucpModel, this);
                    this.active = true;
                    this.href = "#";

                    return this;

                });
        }

        append(element) {
            super.append(element);
        }

    }
);