define(['jquery','mage/template','jquery-ui-modules/widget','Magento_Bundle/js/price-bundle'],function($,mageTemplate){'use strict';$.widget('mage.productSummary',{options:{mainContainer:'#product_addtocart_form',templates:{summaryBlock:'[data-template="bundle-summary"]',optionBlock:'[data-template="bundle-option"]'},optionSelector:'[data-container="options"]',summaryContainer:'[data-container="product-summary"]',bundleSummaryContainer:'.bundle-summary'},cache:{},_create:function(){this.element.closest(this.options.mainContainer).on('updateProductSummary',$.proxy(this._renderSummaryBox,this)).priceBundle({});},_renderSummaryBox:function(event,data){this.cache.currentElement=data.config;this.cache.currentElementCount=0;this.element.html('');this.cache.currentElement.positions.forEach(function(optionId){this._renderOption(optionId,this.cache.currentElement.selected[optionId]);},this);this.element.parents(this.options.bundleSummaryContainer).toggleClass('empty',!this.cache.currentElementCount);},_renderOption:function(key,row){var template;if(row&&row.length>0&&row[0]!==null){template=this.element.closest(this.options.summaryContainer).find(this.options.templates.summaryBlock).html();template=mageTemplate(template.trim(),{data:{_label_:this.cache.currentElement.options[key].title}});this.cache.currentKey=key;this.cache.summaryContainer=$(template);this.element.append(this.cache.summaryContainer);$.each(row,this._renderOptionRow.bind(this));this.cache.currentElementCount+=row.length;this.cache.currentKey=null;}},_renderOptionRow:function(key,optionIndex){var template;template=this.element.closest(this.options.summaryContainer).find(this.options.templates.optionBlock).html();template=mageTemplate(template.trim(),{data:{_quantity_:this.cache.currentElement.options[this.cache.currentKey].selections[optionIndex].qty,_label_:this.cache.currentElement.options[this.cache.currentKey].selections[optionIndex].name}});this.cache.summaryContainer.find(this.options.optionSelector).append(template);}});return $.mage.productSummary;});