/* /web/static/src/js/services/session.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web.session',function(require){"use strict";var Session=require('web.Session');var modules=odoo._modules;var session=new Session(undefined,undefined,{modules:modules,use_cors:false});session.is_bound=session.session_bind();return session;});; /* /web/static/src/js/public/public_crash_manager.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web.PublicCrashManager',function(require){"use strict";const core=require('web.core');const CrashManager=require('web.CrashManager').CrashManager;const PublicCrashManager=CrashManager.extend({_displayWarning(message,title,options){this.displayNotification(Object.assign({},options,{title,message,sticky:true,}));},});core.serviceRegistry.add('crash_manager',PublicCrashManager);return{CrashManager:PublicCrashManager,};});; /* /web/static/src/js/public/public_notification.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web.public.Notification',function(require){'use strict';var Notification=require('web.Notification');Notification.include({xmlDependencies:['/web/static/src/xml/notification.xml'],});});; /* /web/static/src/js/public/public_root.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web.public.root',function(require){'use strict';var ajax=require('web.ajax');var dom=require('web.dom');var ServiceProviderMixin=require('web.ServiceProviderMixin');var session=require('web.session');var utils=require('web.utils');var publicWidget=require('web.public.widget');var publicRootRegistry=new publicWidget.RootWidgetRegistry();function getLang(){var html=document.documentElement;return(html.getAttribute('lang')||'en_US').replace('-','_');} var lang=utils.get_cookie('frontend_lang')||getLang();var localeDef=ajax.loadJS('/web/webclient/locale/'+lang.replace('-','_'));window.addEventListener('unhandledrejection',function(ev){if(!ev.reason||!(ev.reason instanceof Error)){ev.stopPropagation();ev.stopImmediatePropagation();ev.preventDefault();}});var PublicRoot=publicWidget.RootWidget.extend(ServiceProviderMixin,{events:_.extend({},publicWidget.RootWidget.prototype.events||{},{'submit .js_website_submit_form':'_onWebsiteFormSubmit','click .js_disable_on_click':'_onDisableOnClick',}),custom_events:_.extend({},publicWidget.RootWidget.prototype.custom_events||{},{'context_get':'_onContextGet','main_object_request':'_onMainObjectRequest','widgets_start_request':'_onWidgetsStartRequest','widgets_stop_request':'_onWidgetsStopRequest',}),init:function(){this._super.apply(this,arguments);ServiceProviderMixin.init.call(this);this.publicWidgets=[];},willStart:function(){return Promise.all([this._super.apply(this,arguments),session.is_bound,localeDef]);},start:function(){var defs=[this._super.apply(this,arguments),this._startWidgets()];this.$(".o_image[data-mimetype^='image']").each(function(){var $img=$(this);if(/gif|jpe|jpg|png/.test($img.data('mimetype'))&&$img.data('src')){$img.css('background-image',"url('"+$img.data('src')+"')");}});if(window.location.hash.indexOf("scrollTop=")>-1){this.el.scrollTop=+window.location.hash.match(/scrollTop=([0-9]+)/)[1];} if($.fn.placeholder){$('input, textarea').placeholder();} return Promise.all(defs);},_call_service:function(ev){if(ev.data.service==='ajax'&&ev.data.method==='rpc'){var route=ev.data.args[0];if(_.str.startsWith(route,'/web/dataset/call_kw/')){var params=ev.data.args[1];var options=ev.data.args[2];params.kwargs.context=_.extend({},this._getContext(),params.kwargs.context||{});if(options){params.kwargs.context=_.omit(params.kwargs.context,options.noContextKeys);ev.data.args[2]=_.omit(options,'noContextKeys');} params.kwargs.context=JSON.parse(JSON.stringify(params.kwargs.context));}} return ServiceProviderMixin._call_service.apply(this,arguments);},_getContext:function(context){return _.extend({'lang':getLang(),},context||{});},_getExtraContext:function(context){return this._getContext(context);},_getPublicWidgetsRegistry:function(options){return publicWidget.registry;},_getRegistry:function(){return publicRootRegistry;},_startWidgets:function($from,options){var self=this;if($from===undefined){$from=this.$('#wrapwrap');if(!$from.length){$from=this.$el;}} if(options===undefined){options={};} this._stopWidgets($from);var defs=_.map(this._getPublicWidgetsRegistry(options),function(PublicWidget){var selector=PublicWidget.prototype.selector||'';var $target=dom.cssFind($from,selector,true);var defs=_.map($target,function(el){var widget=new PublicWidget(self,options);self.publicWidgets.push(widget);return widget.attachTo($(el));});return Promise.all(defs);});return Promise.all(defs);},_stopWidgets:function($from){var removedWidgets=_.map(this.publicWidgets,function(widget){if(!$from||$from.filter(widget.el).length||$from.find(widget.el).length){widget.destroy();return widget;} return null;});this.publicWidgets=_.difference(this.publicWidgets,removedWidgets);},_onContextGet:function(ev){if(ev.data.extra){ev.data.callback(this._getExtraContext(ev.data.context));}else{ev.data.callback(this._getContext(ev.data.context));}},_onMainObjectRequest:function(ev){var repr=$('html').data('main-object');var m=repr.match(/(.+)\((\d+),(.*)\)/);ev.data.callback({model:m[1],id:m[2]|0,});},_onWidgetsStartRequest:function(ev){this._startWidgets(ev.data.$target,ev.data.options).then(ev.data.onSuccess).guardedCatch(ev.data.onFailure);},_onWidgetsStopRequest:function(ev){this._stopWidgets(ev.data.$target);},_onWebsiteFormSubmit:function(ev){var $buttons=$(ev.currentTarget).find('button[type="submit"], a.a-submit');_.each($buttons,function(btn){var $btn=$(btn);$btn.html(' '+$btn.text());$btn.prop('disabled',true);});},_onDisableOnClick:function(ev){$(ev.currentTarget).addClass('disabled');},});return{PublicRoot:PublicRoot,publicRootRegistry:publicRootRegistry,};});; /* /website/static/src/js/content/website_root_instance.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('root.widget',function(require){'use strict';var lazyloader=require('web.public.lazyloader');var websiteRootData=require('website.root');var websiteRoot=new websiteRootData.WebsiteRoot(null);return lazyloader.allScriptsLoaded.then(function(){return websiteRoot.attachTo(document.body).then(function(){return websiteRoot;});});});; /* /web/static/src/js/public/public_widget.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web.public.widget',function(require){'use strict';var Class=require('web.Class');var dom=require('web.dom');var mixins=require('web.mixins');var session=require('web.session');var Widget=require('web.Widget');var RootWidget=Widget.extend({custom_events:_.extend({},Widget.prototype.custom_events||{},{'registry_update':'_onRegistryUpdate','get_session':'_onGetSession',}),init:function(){this._super.apply(this,arguments);this._widgets=[];this._listenToUpdates=false;this._getRegistry().setParent(this);},start:function(){var defs=[this._super.apply(this,arguments)];defs.push(this._attachComponents());this._listenToUpdates=true;return Promise.all(defs);},_attachComponent:function(childInfo,$from){var self=this;var $elements=dom.cssFind($from||this.$el,childInfo.selector);var defs=_.map($elements,function(element){var w=new childInfo.Widget(self);self._widgets.push(w);return w.attachTo(element);});return Promise.all(defs);},_attachComponents:function($from){var self=this;var childInfos=this._getRegistry().get();var defs=_.map(childInfos,function(childInfo){return self._attachComponent(childInfo,$from);});return Promise.all(defs);},_getRegistry:function(){},_onGetSession:function(event){if(event.data.callback){event.data.callback(session);}},_onRegistryUpdate:function(ev){ev.stopPropagation();if(this._listenToUpdates){this._attachComponent(ev.data);}},});var RootWidgetRegistry=Class.extend(mixins.EventDispatcherMixin,{init:function(){mixins.EventDispatcherMixin.init.call(this);this._registry=[];},add:function(Widget,selector){var registryInfo={Widget:Widget,selector:selector,};this._registry.push(registryInfo);this.trigger_up('registry_update',registryInfo);},get:function(){return this._registry;},});var PublicWidget=Widget.extend({selector:false,events:{},init:function(parent,options){this._super.apply(this,arguments);this.options=options||{};},destroy:function(){if(this.selector){var $oldel=this.$el;this.setElement(null);} this._super.apply(this,arguments);if(this.selector){this.$el=$oldel;this.el=$oldel[0];this.$target=this.$el;this.target=this.el;}},setElement:function(){this._super.apply(this,arguments);if(this.selector){this.$target=this.$el;this.target=this.el;}},_delegateEvents:function(){var self=this;var originalEvents=this.events;var events={};_.each(this.events,function(method,event){if(typeof method!=='string'){events[event]=method;return;} var methodOptions=method.split(' ');if(methodOptions.length<=1){events[event]=method;return;} var isAsync=_.contains(methodOptions,'async');if(!isAsync){events[event]=method;return;} method=self.proxy(methodOptions[methodOptions.length-1]);if(_.str.startsWith(event,'click')){method=dom.makeButtonHandler(method);}else{method=dom.makeAsyncHandler(method);} events[event]=method;});this.events=events;this._super.apply(this,arguments);this.events=originalEvents;},_getContext:function(extra,extraContext){var context;this.trigger_up('context_get',{extra:extra||false,context:extraContext,callback:function(ctx){context=ctx;},});return context;},});var registry={};registry._fixAppleCollapse=PublicWidget.extend({selector:'div[data-toggle="collapse"]',events:{'click':function(){},},});return{RootWidget:RootWidget,RootWidgetRegistry:RootWidgetRegistry,Widget:PublicWidget,registry:registry,};});; /* /web_editor/static/src/js/frontend/loader.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('web_editor.loader',function(require){'use strict';var Wysiwyg=require('web_editor.wysiwyg.root');function load(parent,textarea,options){var loading=textarea.nextElementSibling;if(loading&&!loading.classList.contains('o_wysiwyg_loading')){loading=null;} if(!textarea.value.match(/\S/)){textarea.value='


';} var wysiwyg=new Wysiwyg(parent,options);return wysiwyg.attachTo(textarea).then(()=>{if(loading){loading.parentNode.removeChild(loading);} return wysiwyg;});} return{load:load,};});; /* /portal/static/src/js/portal.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('portal.portal',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.portalDetails=publicWidget.Widget.extend({selector:'.o_portal_details',events:{'change select[name="country_id"]':'_onCountryChange',},start:function(){var def=this._super.apply(this,arguments);this.$state=this.$('select[name="state_id"]');this.$stateOptions=this.$state.filter(':enabled').find('option:not(:first)');this._adaptAddressForm();return def;},_adaptAddressForm:function(){var $country=this.$('select[name="country_id"]');var countryID=($country.val()||0);this.$stateOptions.detach();var $displayedState=this.$stateOptions.filter('[data-country_id='+countryID+']');var nb=$displayedState.appendTo(this.$state).show().length;this.$state.parent().toggle(nb>=1);},_onCountryChange:function(){this._adaptAddressForm();},});publicWidget.registry.portalSearchPanel=publicWidget.Widget.extend({selector:'.o_portal_search_panel',events:{'click .search-submit':'_onSearchSubmitClick','click .dropdown-item':'_onDropdownItemClick','keyup input[name="search"]':'_onSearchInputKeyup',},start:function(){var def=this._super.apply(this,arguments);this._adaptSearchLabel(this.$('.dropdown-item.active'));return def;},_adaptSearchLabel:function(elem){var $label=$(elem).clone();$label.find('span.nolabel').remove();this.$('input[name="search"]').attr('placeholder',$label.text().trim());},_search:function(){var search=$.deparam(window.location.search.substring(1));search['search_in']=this.$('.dropdown-item.active').attr('href').replace('#','');search['search']=this.$('input[name="search"]').val();window.location.search=$.param(search);},_onSearchSubmitClick:function(){this._search();},_onDropdownItemClick:function(ev){ev.preventDefault();var $item=$(ev.currentTarget);$item.closest('.dropdown-menu').find('.dropdown-item').removeClass('active');$item.addClass('active');this._adaptSearchLabel(ev.currentTarget);},_onSearchInputKeyup:function(ev){if(ev.keyCode===$.ui.keyCode.ENTER){this._search();}},});});; /* /portal/static/src/js/portal_chatter.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('portal.chatter',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var time=require('web.time');var portalComposer=require('portal.composer');var qweb=core.qweb;var _t=core._t;var PortalChatter=publicWidget.Widget.extend({template:'portal.Chatter',xmlDependencies:['/portal/static/src/xml/portal_chatter.xml'],events:{"click .o_portal_chatter_pager_btn":'_onClickPager',},init:function(parent,options){var self=this;this.options={};this._super.apply(this,arguments);_.each(options,function(val,key){self.options[_.str.underscored(key)]=val;});this.options=_.defaults(this.options,{'allow_composer':true,'display_composer':false,'csrf_token':odoo.csrf_token,'message_count':0,'pager_step':10,'pager_scope':5,'pager_start':1,'is_user_public':true,'is_user_publisher':false,'hash':false,'pid':false,'domain':[],});this.set('messages',[]);this.set('message_count',this.options['message_count']);this.set('pager',{});this.set('domain',this.options['domain']);this._currentPage=this.options['pager_start'];},willStart:function(){return Promise.all([this._super.apply(this,arguments),this._chatterInit()]);},start:function(){this.on("change:messages",this,this._renderMessages);this.on("change:message_count",this,function(){this._renderMessageCount();this.set('pager',this._pager(this._currentPage));});this.on("change:pager",this,this._renderPager);this.on("change:domain",this,this._onChangeDomain);this.set('message_count',this.options['message_count']);this.set('messages',this.preprocessMessages(this.result['messages']));var defs=[];defs.push(this._super.apply(this,arguments));if(this.options['display_composer']){this._composer=new portalComposer.PortalComposer(this,this.options);defs.push(this._composer.replace(this.$('.o_portal_chatter_composer')));} return Promise.all(defs);},messageFetch:function(domain){var self=this;return this._rpc({route:'/mail/chatter_fetch',params:self._messageFetchPrepareParams(),}).then(function(result){self.set('messages',self.preprocessMessages(result['messages']));self.set('message_count',result['message_count']);});},preprocessMessages:function(messages){_.each(messages,function(m){m['author_avatar_url']=_.str.sprintf('/web/image/%s/%s/author_avatar/50x50','mail.message',m.id);m['published_date_str']=_.str.sprintf(_t('Published on %s'),moment(time.str_to_datetime(m.date)).format('MMMM Do YYYY, h:mm:ss a'));});return messages;},_chatterInit:function(){var self=this;return this._rpc({route:'/mail/chatter_init',params:this._messageFetchPrepareParams()}).then(function(result){self.result=result;self.options=_.extend(self.options,self.result['options']||{});return result;});},_changeCurrentPage:function(page,domain){this._currentPage=page;var d=domain?domain:_.clone(this.get('domain'));this.set('domain',d);},_messageFetchPrepareParams:function(){var self=this;var data={'res_model':this.options['res_model'],'res_id':this.options['res_id'],'limit':this.options['pager_step'],'offset':(this._currentPage-1)*this.options['pager_step'],'allow_composer':this.options['allow_composer'],};if(self.options['token']){data['token']=self.options['token'];} if(this.get('domain')){data['domain']=this.get('domain');} return data;},_pager:function(page){page=page||1;var total=this.get('message_count');var scope=this.options['pager_scope'];var step=this.options['pager_step'];var pageCount=Math.ceil(parseFloat(total)/step);page=Math.max(1,Math.min(parseInt(page),pageCount));scope-=1;var pmin=Math.max(page-parseInt(Math.floor(scope/2)),1);var pmax=Math.min(pmin+scope,pageCount);if(pmax-scope>0){pmin=pmax-scope;}else{pmin=1;} var pages=[];_.each(_.range(pmin,pmax+1),function(index){pages.push(index);});return{"page_count":pageCount,"offset":(page-1)*step,"page":page,"page_start":pmin,"page_previous":Math.max(pmin,page-1),"page_next":Math.min(pmax,page+1),"page_end":pmax,"pages":pages};},_renderMessages:function(){this.$('.o_portal_chatter_messages').html(qweb.render("portal.chatter_messages",{widget:this}));},_renderMessageCount:function(){this.$('.o_message_counter').replaceWith(qweb.render("portal.chatter_message_count",{widget:this}));},_renderPager:function(){this.$('.o_portal_chatter_pager').replaceWith(qweb.render("portal.pager",{widget:this}));},_onChangeDomain:function(){var self=this;this.messageFetch().then(function(){var p=self._currentPage;self.set('pager',self._pager(p));});},_onClickPager:function(ev){ev.preventDefault();var page=$(ev.currentTarget).data('page');this._changeCurrentPage(page);},});publicWidget.registry.portalChatter=publicWidget.Widget.extend({selector:'.o_portal_chatter',start:function(){var self=this;var defs=[this._super.apply(this,arguments)];var chatter=new PortalChatter(this,this.$el.data());defs.push(chatter.appendTo(this.$el));return Promise.all(defs).then(function(){if(window.location.hash==='#'+self.$el.attr('id')){$('html, body').scrollTop(self.$el.offset().top);}});},});return{PortalChatter:PortalChatter,};});; /* /portal/static/src/js/portal_composer.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('portal.composer',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var publicWidget=require('web.public.widget');var qweb=core.qweb;var _t=core._t;var PortalComposer=publicWidget.Widget.extend({template:'portal.Composer',xmlDependencies:['/portal/static/src/xml/portal_chatter.xml'],events:{'change .o_portal_chatter_file_input':'_onFileInputChange','click .o_portal_chatter_attachment_btn':'_onAttachmentButtonClick','click .o_portal_chatter_attachment_delete':'async _onAttachmentDeleteClick','click .o_portal_chatter_composer_btn':'async _onSubmitButtonClick',},init:function(parent,options){this._super.apply(this,arguments);this.options=_.defaults(options||{},{'allow_composer':true,'display_composer':false,'csrf_token':odoo.csrf_token,'token':false,'res_model':false,'res_id':false,});this.attachments=[];},start:function(){var self=this;this.$attachmentButton=this.$('.o_portal_chatter_attachment_btn');this.$fileInput=this.$('.o_portal_chatter_file_input');this.$sendButton=this.$('.o_portal_chatter_composer_btn');this.$attachments=this.$('.o_portal_chatter_composer_form .o_portal_chatter_attachments');this.$attachmentIds=this.$('.o_portal_chatter_attachment_ids');this.$attachmentTokens=this.$('.o_portal_chatter_attachment_tokens');return this._super.apply(this,arguments).then(function(){if(self.options.default_attachment_ids){self.attachments=self.options.default_attachment_ids||[];_.each(self.attachments,function(attachment){attachment.state='done';});self._updateAttachments();} return Promise.resolve();});},_onAttachmentButtonClick:function(){this.$fileInput.click();},_onAttachmentDeleteClick:function(ev){var self=this;var attachmentId=$(ev.currentTarget).closest('.o_portal_chatter_attachment').data('id');var accessToken=_.find(this.attachments,{'id':attachmentId}).access_token;ev.preventDefault();ev.stopPropagation();this.$sendButton.prop('disabled',true);return this._rpc({route:'/portal/attachment/remove',params:{'attachment_id':attachmentId,'access_token':accessToken,},}).then(function(){self.attachments=_.reject(self.attachments,{'id':attachmentId});self._updateAttachments();self.$sendButton.prop('disabled',false);});},_onFileInputChange:function(){var self=this;this.$sendButton.prop('disabled',true);return Promise.all(_.map(this.$fileInput[0].files,function(file){return new Promise(function(resolve,reject){var data={'name':file.name,'file':file,'res_id':self.options.res_id,'res_model':self.options.res_model,'access_token':self.options.token,};ajax.post('/portal/attachment/add',data).then(function(attachment){attachment.state='pending';self.attachments.push(attachment);self._updateAttachments();resolve();}).guardedCatch(function(error){self.displayNotification({title:_t("Something went wrong."),message:_.str.sprintf(_t("The file %s could not be saved."),_.escape(file.name)),type:'warning',sticky:true,});resolve();});});})).then(function(){self.$sendButton.prop('disabled',false);});},_onSubmitButtonClick:function(){return new Promise(function(resolve,reject){});},_updateAttachments:function(){this.$attachmentIds.val(_.pluck(this.attachments,'id'));this.$attachmentTokens.val(_.pluck(this.attachments,'access_token'));this.$attachments.html(qweb.render('portal.Chatter.Attachments',{attachments:this.attachments,showDelete:true,}));},});return{PortalComposer:PortalComposer,};});; /* /portal/static/src/js/portal_signature.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('portal.signature_form',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var NameAndSignature=require('web.name_and_signature').NameAndSignature;var qweb=core.qweb;var _t=core._t;var SignatureForm=publicWidget.Widget.extend({template:'portal.portal_signature',xmlDependencies:['/portal/static/src/xml/portal_signature.xml'],events:{'click .o_portal_sign_submit':'async _onClickSignSubmit',},custom_events:{'signature_changed':'_onChangeSignature',},init:function(parent,options){this._super.apply(this,arguments);this.csrf_token=odoo.csrf_token;this.callUrl=options.callUrl||'';this.rpcParams=options.rpcParams||{};this.sendLabel=options.sendLabel||_t("Accept & Sign");this.nameAndSignature=new NameAndSignature(this,options.nameAndSignatureOptions||{});},start:function(){var self=this;this.$confirm_btn=this.$('.o_portal_sign_submit');this.$controls=this.$('.o_portal_sign_controls');var subWidgetStart=this.nameAndSignature.replace(this.$('.o_web_sign_name_and_signature'));return Promise.all([subWidgetStart,this._super.apply(this,arguments)]).then(function(){self.nameAndSignature.resetSignature();});},focusName:function(){this.nameAndSignature.focusName();},resetSignature:function(){return this.nameAndSignature.resetSignature();},_onClickSignSubmit:function(ev){var self=this;ev.preventDefault();if(!this.nameAndSignature.validateSignature()){return;} var name=this.nameAndSignature.getName();var signature=this.nameAndSignature.getSignatureImage()[1];return this._rpc({route:this.callUrl,params:_.extend(this.rpcParams,{'name':name,'signature':signature,}),}).then(function(data){if(data.error){self.$('.o_portal_sign_error_msg').remove();self.$controls.prepend(qweb.render('portal.portal_signature_error',{widget:data}));}else if(data.success){var $success=qweb.render('portal.portal_signature_success',{widget:data});self.$el.empty().append($success);} if(data.force_refresh){if(data.redirect_url){window.location=data.redirect_url;}else{window.location.reload();} return new Promise(function(){});}});},_onChangeSignature:function(){var isEmpty=this.nameAndSignature.isSignatureEmpty();this.$confirm_btn.prop('disabled',isEmpty);},});publicWidget.registry.SignatureForm=publicWidget.Widget.extend({selector:'.o_portal_signature_form',start:function(){var hasBeenReset=false;var callUrl=this.$el.data('call-url');var nameAndSignatureOptions={defaultName:this.$el.data('default-name'),mode:this.$el.data('mode'),displaySignatureRatio:this.$el.data('signature-ratio'),signatureType:this.$el.data('signature-type'),};var sendLabel=this.$el.data('send-label');var form=new SignatureForm(this,{callUrl:callUrl,nameAndSignatureOptions:nameAndSignatureOptions,sendLabel:sendLabel,});this.$el.closest('.modal').on('shown.bs.modal',function(ev){if(!hasBeenReset){hasBeenReset=true;form.resetSignature();}else{form.focusName();}});return Promise.all([this._super.apply(this,arguments),form.appendTo(this.$el)]);},});return{SignatureForm:SignatureForm,};});; /* /portal/static/src/js/portal_sidebar.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('portal.PortalSidebar',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var time=require('web.time');var _t=core._t;var PortalSidebar=publicWidget.Widget.extend({start:function(){this._setDelayLabel();return this._super.apply(this,arguments);},_setDelayLabel:function(){var $sidebarTimeago=this.$el.find('.o_portal_sidebar_timeago');_.each($sidebarTimeago,function(el){var dateTime=moment(time.auto_str_to_date($(el).attr('datetime'))),today=moment().startOf('day'),diff=dateTime.diff(today,'days',true),displayStr;if(diff===0){displayStr=_t('Due today');}else if(diff>0){displayStr=_.str.sprintf(_t('Due in %d days'),Math.abs(diff));}else{displayStr=_.str.sprintf(_t('%d days overdue'),Math.abs(diff));} $(el).text(displayStr);});},_printIframeContent:function(href){if($.browser.mozilla){window.open(href,'_blank');return;} if(!this.printContent){this.printContent=$('');this.$el.append(this.printContent);this.printContent.on('load',function(){$(this).get(0).contentWindow.print();});}else{this.printContent.get(0).contentWindow.print();}},});return PortalSidebar;});; /* /website/static/src/js/set_view_track.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('website.set_view_track',function(require){"use strict";var CustomizeMenu=require('website.customizeMenu');var Widget=require('web.Widget');var TrackPage=Widget.extend({template:'website.track_page',xmlDependencies:['/website/static/src/xml/track_page.xml'],events:{'change #switch-track-page':'_onTrackChange',},start:function(){this.$input=this.$('#switch-track-page');this._isTracked().then((data)=>{if(data[0]['track']){this.track=true;this.$input.attr('checked','checked');}else{this.track=false;}});},_isTracked:function(val){var viewid=$('html').data('viewid');if(!viewid){return Promise.reject();}else{return this._rpc({model:'ir.ui.view',method:'read',args:[[viewid],['track']],});}},_onTrackChange:function(ev){var checkboxValue=this.$input.is(':checked');if(checkboxValue!==this.track){this.track=checkboxValue;this._trackPage(checkboxValue);}},_trackPage:function(val){var viewid=$('html').data('viewid');if(!viewid){return Promise.reject();}else{return this._rpc({model:'ir.ui.view',method:'write',args:[[viewid],{track:val}],});}},});CustomizeMenu.include({_loadCustomizeOptions:function(){var self=this;var def=this._super.apply(this,arguments);return def.then(function(){if(!self.__trackpageLoaded){self.__trackpageLoaded=true;self.trackPage=new TrackPage(self);self.trackPage.appendTo(self.$el.children('.dropdown-menu'));}});},});});; /* /website/static/lib/jstz.min.js defined in bundle 'web.assets_frontend_lazy' */ !function(e){var a=function(){"use strict";var e="s",s={DAY:864e5,HOUR:36e5,MINUTE:6e4,SECOND:1e3,BASELINE_YEAR:2014,MAX_SCORE:864e6,AMBIGUITIES:{"America/Denver":["America/Mazatlan"],"Europe/London":["Africa/Casablanca"],"America/Chicago":["America/Mexico_City"],"America/Asuncion":["America/Campo_Grande","America/Santiago"],"America/Montevideo":["America/Sao_Paulo","America/Santiago"],"Asia/Beirut":["Asia/Amman","Asia/Jerusalem","Europe/Helsinki","Asia/Damascus","Africa/Cairo","Asia/Gaza","Europe/Minsk"],"Pacific/Auckland":["Pacific/Fiji"],"America/Los_Angeles":["America/Santa_Isabel"],"America/New_York":["America/Havana"],"America/Halifax":["America/Goose_Bay"],"America/Godthab":["America/Miquelon"],"Asia/Dubai":["Asia/Yerevan"],"Asia/Jakarta":["Asia/Krasnoyarsk"],"Asia/Shanghai":["Asia/Irkutsk","Australia/Perth"],"Australia/Sydney":["Australia/Lord_Howe"],"Asia/Tokyo":["Asia/Yakutsk"],"Asia/Dhaka":["Asia/Omsk"],"Asia/Baku":["Asia/Yerevan"],"Australia/Brisbane":["Asia/Vladivostok"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Majuro":["Asia/Kamchatka","Pacific/Fiji"],"Pacific/Tongatapu":["Pacific/Apia"],"Asia/Baghdad":["Europe/Minsk","Europe/Moscow"],"Asia/Karachi":["Asia/Yekaterinburg"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"]}},i=function(e){var a=-e.getTimezoneOffset();return null!==a?a:0},r=function(){var a=i(new Date(s.BASELINE_YEAR,0,2)),r=i(new Date(s.BASELINE_YEAR,5,2)),n=a-r;return 0>n?a+",1":n>0?r+",1,"+e:a+",0"},n=function(){var e,a;if("undefined"!=typeof Intl&&"undefined"!=typeof Intl.DateTimeFormat&&(e=Intl.DateTimeFormat(),"undefined"!=typeof e&&"undefined"!=typeof e.resolvedOptions))return a=e.resolvedOptions().timeZone,a&&(a.indexOf("/")>-1||"UTC"===a)?a:void 0},o=function(e){for(var a=new Date(e,0,1,0,0,1,0).getTime(),s=new Date(e,12,31,23,59,59).getTime(),i=a,r=new Date(i).getTimezoneOffset(),n=null,o=null;s-864e5>i;){var t=new Date(i),A=t.getTimezoneOffset();A!==r&&(r>A&&(n=t),A>r&&(o=t),r=A),i+=864e5}return n&&o?{s:u(n).getTime(),e:u(o).getTime()}:!1},u=function l(e,a,i){"undefined"==typeof a&&(a=s.DAY,i=s.HOUR);for(var r=new Date(e.getTime()-a).getTime(),n=e.getTime()+a,o=new Date(r).getTimezoneOffset(),u=r,t=null;n-i>u;){var A=new Date(u),c=A.getTimezoneOffset();if(c!==o){t=A;break}u+=i}return a===s.DAY?l(t,s.HOUR,s.MINUTE):a===s.HOUR?l(t,s.MINUTE,s.SECOND):t},t=function(e,a,s,i){if("N/A"!==s)return s;if("Asia/Beirut"===a){if("Africa/Cairo"===i.name&&13983768e5===e[6].s&&14116788e5===e[6].e)return 0;if("Asia/Jerusalem"===i.name&&13959648e5===e[6].s&&14118588e5===e[6].e)return 0}else if("America/Santiago"===a){if("America/Asuncion"===i.name&&14124816e5===e[6].s&&1397358e6===e[6].e)return 0;if("America/Campo_Grande"===i.name&&14136912e5===e[6].s&&13925196e5===e[6].e)return 0}else if("America/Montevideo"===a){if("America/Sao_Paulo"===i.name&&14136876e5===e[6].s&&1392516e6===e[6].e)return 0}else if("Pacific/Auckland"===a&&"Pacific/Fiji"===i.name&&14142456e5===e[6].s&&13961016e5===e[6].e)return 0;return s},A=function(e,i){for(var r=function(a){for(var r=0,n=0;n=a.rules[n].s&&e[n].e<=a.rules[n].e)){r="N/A";break}if(r=0,r+=Math.abs(e[n].s-a.rules[n].s),r+=Math.abs(a.rules[n].e-e[n].e),r>s.MAX_SCORE){r="N/A";break}}return r=t(e,i,r,a)},n={},o=a.olson.dst_rules.zones,u=o.length,A=s.AMBIGUITIES[i],c=0;u>c;c++){var m=o[c],l=r(o[c]);"N/A"!==l&&(n[m.name]=l)}for(var f in n)if(n.hasOwnProperty(f))for(var d=0;d',{html:(data.data?data.data.arguments[1]:data.statusText) +'
' +_.str.sprintf(_t('It might be possible to edit the relevant items or fix the issue in the classic Odoo interface'),'/web#model='+$data.data('object')+'&id='+$data.data('id')),}),}).open();});},_onWebsiteSwitch:function(ev){var websiteId=ev.currentTarget.getAttribute('website-id');var websiteDomain=ev.currentTarget.getAttribute('domain');var url=window.location.href;if(websiteDomain&&window.location.hostname!==websiteDomain){var path=window.location.pathname+window.location.search+window.location.hash;url=websiteDomain+path;} window.location.href=$.param.querystring(url,{'fw':websiteId});},_onModalShown:function(ev){$(ev.target).addClass('modal_shown');},});return{WebsiteRoot:WebsiteRoot,websiteRootRegistry:websiteRootRegistry,};});; /* /website/static/src/js/content/compatibility.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('website.content.compatibility',function(require){'use strict';require('web.dom_ready');var browser=_.findKey($.browser,function(v){return v===true;});if($.browser.mozilla&&+$.browser.version.replace(/^([0-9]+\.[0-9]+).*/,'\$1')<20){browser='msie';} browser+=(','+$.browser.version);var mobileRegex=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i;if(mobileRegex.test(window.navigator.userAgent.toLowerCase())){browser+=',mobile';} document.documentElement.setAttribute('data-browser',browser);var htmlStyle=document.documentElement.style;var isFlexSupported=(('flexWrap'in htmlStyle)||('WebkitFlexWrap'in htmlStyle)||('msFlexWrap'in htmlStyle));if(!isFlexSupported){document.documentElement.setAttribute('data-no-flex','');} return{browser:browser,isFlexSupported:isFlexSupported,};});; /* /website/static/src/js/content/lazy_template_call.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('website.content.lazy_template_call',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.LazyTemplateRenderer=publicWidget.Widget.extend({selector:'#wrapwrap:has([data-oe-call])',start:function(){var def=this._super.apply(this,arguments);var $oeCalls=this.$('[data-oe-call]');var oeCalls=_.uniq($oeCalls.map(function(){return $(this).data('oe-call');}).get());if(!oeCalls.length){return def;} var renderDef=this._rpc({route:'/website/multi_render',params:{'ids_or_xml_ids':oeCalls,},}).then(function(data){_.each(data,function(d,k){var $data=$(d).addClass('o_block_'+k);$oeCalls.filter('[data-oe-call="'+k+'"]').each(function(){$(this).replaceWith($data.clone());});});});return Promise.all([def,renderDef]);},});});; /* /website/static/src/js/content/menu.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('website.content.menu',function(require){'use strict';var dom=require('web.dom');var publicWidget=require('web.public.widget');var wUtils=require('website.utils');publicWidget.registry.affixMenu=publicWidget.Widget.extend({selector:'header.o_affix_enabled',start:function(){var def=this._super.apply(this,arguments);var self=this;this.$headerClone=this.$target.clone().addClass('o_header_affix affix').removeClass('o_affix_enabled').removeAttr('id');this.$headerClone.insertAfter(this.$target);this.$headers=this.$target.add(this.$headerClone);this.$dropdowns=this.$headers.find('.dropdown');this.$dropdownMenus=this.$headers.find('.dropdown-menu');this.$navbarCollapses=this.$headers.find('.navbar-collapse');this._adaptDefaultOffset();wUtils.onceAllImagesLoaded(this.$headerClone).then(function(){self._adaptDefaultOffset();});_.each(this.$headerClone.find('[data-toggle="collapse"]'),function(el){var $source=$(el);var targetIDSelector=$source.attr('data-target');var $target=self.$headerClone.find(targetIDSelector);$source.attr('data-target',targetIDSelector+'_clone');$target.attr('id',targetIDSelector.substr(1)+'_clone');});this.$headerClone.find('div.navbar-collapse').on('show.bs.collapse',function(){$(document.body).addClass('overflow-hidden');}).on('hide.bs.collapse',function(){$(document.body).removeClass('overflow-hidden');});$(window).on('resize.affixMenu scroll.affixMenu',_.throttle(this._onWindowUpdate.bind(this),200));setTimeout(this._onWindowUpdate.bind(this),0);return def.then(function(){self.trigger_up('widgets_start_request',{$target:self.$headerClone,});});},destroy:function(){if(this.$headerClone){this.$headerClone.remove();$(window).off('.affixMenu');} this._super.apply(this,arguments);},_adaptDefaultOffset:function(){var bottom=this.$target.offset().top+this._getHeaderHeight();this.$headerClone.css('margin-top',Math.min(-200,-bottom)+'px');},_getHeaderHeight:function(){return this.$headerClone.outerHeight();},_onWindowUpdate:function(){if(this.$navbarCollapses.hasClass('show')){return;} var wOffset=$(window).scrollTop();var hOffset=this.$target.scrollTop();this.$headerClone.toggleClass('affixed',wOffset>(hOffset+300));this.$dropdowns.add(this.$dropdownMenus).removeClass('show');this.$navbarCollapses.removeClass('show').attr('aria-expanded',false);},});publicWidget.registry.autohideMenu=publicWidget.Widget.extend({selector:'header #top_menu',start:function(){var self=this;var defs=[this._super.apply(this,arguments)];this.noAutohide=this.$el.closest('.o_no_autohide_menu').length;if(!this.noAutohide){var $navbar=this.$el.closest('.navbar');defs.push(wUtils.onceAllImagesLoaded($navbar));var $window=$(window);$window.on('load.autohideMenu',function(){$window.trigger('resize');});} return Promise.all(defs).then(function(){if(!self.noAutohide){dom.initAutoMoreMenu(self.$el,{unfoldable:'.divider, .divider ~ li'});} self.$el.removeClass('o_menu_loading');});},destroy:function(){this._super.apply(this,arguments);if(!this.noAutohide){$(window).off('.autohideMenu');dom.destroyAutoMoreMenu(this.$el);}},});publicWidget.registry.menuDirection=publicWidget.Widget.extend({selector:'header .navbar .nav',events:{'show.bs.dropdown':'_onDropdownShow',},start:function(){this.defaultAlignment=this.$el.is('.ml-auto, .ml-auto ~ *')?'right':'left';return this._super.apply(this,arguments);},_checkOpening:function(alignment,liOffset,liWidth,menuWidth,windowWidth){if(alignment==='left'){return(liOffset+menuWidth<=windowWidth);}else{return(liOffset+liWidth-menuWidth>=0);}},_onDropdownShow:function(ev){var $li=$(ev.target);var $menu=$li.children('.dropdown-menu');var liOffset=$li.offset().left;var liWidth=$li.outerWidth();var menuWidth=$menu.outerWidth();var windowWidth=$(window).outerWidth();$menu.removeClass('dropdown-menu-left dropdown-menu-right');var alignment=this.defaultAlignment;if($li.nextAll(':visible').length===0){alignment='right';} for(var i=0;i<2;i++){if(!this._checkOpening(alignment,liOffset,liWidth,menuWidth,windowWidth)){alignment=(alignment==='left'?'right':'left');}} $menu.addClass('dropdown-menu-'+alignment);},});});; /* /website/static/src/js/content/snippets.animation.js defined in bundle 'web.assets_frontend_lazy' */ odoo.define('website.content.snippets.animation',function(require){'use strict';var Class=require('web.Class');var config=require('web.config');var core=require('web.core');var mixins=require('web.mixins');var publicWidget=require('web.public.widget');var utils=require('web.utils');var qweb=core.qweb;window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame;window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame||window.oCancelAnimationFrame;if(!window.performance||!window.performance.now){window.performance={now:function(){return Date.now();}};} publicWidget.Widget.include({disabledInEditableMode:true,edit_events:null,read_events:null,init:function(parent,options){this._super.apply(this,arguments);this.editableMode=this.options.editableMode||false;var extraEvents=this.editableMode?this.edit_events:this.read_events;if(extraEvents){this.events=_.extend({},this.events||{},extraEvents);}},});var AnimationEffect=Class.extend(mixins.ParentedMixin,{init:function(parent,updateCallback,startEvents,$startTarget,options){mixins.ParentedMixin.init.call(this);this.setParent(parent);options=options||{};this._minFrameTime=1000/(options.maxFPS||100);this._updateCallback=updateCallback;this.startEvents=startEvents||'scroll';this.$startTarget=$($startTarget||window);if(options.getStateCallback){this._getStateCallback=options.getStateCallback;}else if(this.startEvents==='scroll'&&this.$startTarget[0]===window){this._getStateCallback=function(){return window.pageYOffset;};}else if(this.startEvents==='resize'&&this.$startTarget[0]===window){this._getStateCallback=function(){return{width:window.innerWidth,height:window.innerHeight,};};}else{this._getStateCallback=function(){return undefined;};} this.endEvents=options.endEvents||false;this.$endTarget=options.$endTarget?$(options.$endTarget):this.$startTarget;this._updateCallback=this._updateCallback.bind(parent);this._getStateCallback=this._getStateCallback.bind(parent);this._uid='_animationEffect'+_.uniqueId();this.startEvents=_processEvents(this.startEvents,this._uid);if(this.endEvents){this.endEvents=_processEvents(this.endEvents,this._uid);} function _processEvents(events,namespace){events=events.split(' ');return _.each(events,function(e,index){events[index]+=('.'+namespace);}).join(' ');}},destroy:function(){mixins.ParentedMixin.destroy.call(this);this.stop();},start:function(){this._paused=false;this._rafID=window.requestAnimationFrame((function(t){this._update(t);this._paused=true;}).bind(this));if(this.endEvents){this.$startTarget.on(this.startEvents,(function(e){if(this._paused){_.defer(this.play.bind(this,e));}}).bind(this));this.$endTarget.on(this.endEvents,(function(){if(!this._paused){_.defer(this.pause.bind(this));}}).bind(this));}else{var pauseTimer=null;this.$startTarget.on(this.startEvents,_.throttle((function(e){this.play(e);clearTimeout(pauseTimer);pauseTimer=_.delay((function(){this.pause();pauseTimer=null;}).bind(this),2000);}).bind(this),250,{trailing:false}));}},stop:function(){this.$startTarget.off(this.startEvents);if(this.endEvents){this.$endTarget.off(this.endEvents);} this.pause();},play:function(e){this._newEvent=e;if(!this._paused){return;} this._paused=false;this._rafID=window.requestAnimationFrame(this._update.bind(this));this._lastUpdateTimestamp=undefined;},pause:function(){if(this._paused){return;} this._paused=true;window.cancelAnimationFrame(this._rafID);this._lastUpdateTimestamp=undefined;},_update:function(timestamp){if(this._paused){return;} this._rafID=window.requestAnimationFrame(this._update.bind(this));var elapsedTime=0;if(this._lastUpdateTimestamp){elapsedTime=timestamp-this._lastUpdateTimestamp;if(elapsedTimemaxHeight){maxHeight=height;} $item.toggleClass('active',isActive);});_.each($items,function(el){$(el).css('min-height',maxHeight);});},_onEditionSlide:function(){this._computeHeights();},_onImageLoaded:function(){this._computeHeights();},});registry.parallax=Animation.extend({selector:'.parallax',disabledInEditableMode:false,effects:[{startEvents:'scroll',update:'_onWindowScroll',}],start:function(){this._rebuild();$(window).on('resize.animation_parallax',_.debounce(this._rebuild.bind(this),500));return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);$(window).off('.animation_parallax');},_rebuild:function(){if(!this.$bg||!this.$bg.length){this.$bg=this.$('> .s_parallax_bg');if(!this.$bg.length){this.$bg=$('',{class:'s_parallax_bg'+(this.$target.hasClass('oe_custom_bg')?' oe_custom_bg':''),}).prependTo(this.$target);}} var urlTarget=this.$target.css('background-image');if(urlTarget!=='none'){this.$bg.css('background-image',urlTarget);} this.$target.css('background-image','none');this.speed=parseFloat(this.$target.attr('data-scroll-background-ratio')||0);this.$target.toggleClass('s_parallax_is_fixed',this.speed===1);if(this.speed===0||this.speed===1){this.$bg.css({transform:'',top:'',bottom:''});return;} this.viewport=document.body.clientHeight-$('#wrapwrap').position().top;this.visibleArea=[this.$target.offset().top];this.visibleArea.push(this.visibleArea[0]+this.$target.innerHeight()+this.viewport);this.ratio=this.speed*(this.viewport/10);this.$bg.css({top:-this.ratio,bottom:-this.ratio,});},_onWindowScroll:function(scrollOffset){if(this.speed===0||this.speed===1){return;} var vpEndOffset=scrollOffset+this.viewport;if(vpEndOffset>=this.visibleArea[0]&&vpEndOffset<=this.visibleArea[1]){this.$bg.css('transform','translateY('+_getNormalizedPosition.call(this,vpEndOffset)+'px)');} function _getNormalizedPosition(pos){var r=(pos-this.visibleArea[1])/(this.visibleArea[0]-this.visibleArea[1]);return Math.round(this.ratio*(2*r-1));}},});registry.share=publicWidget.Widget.extend({selector:'.s_share, .oe_share',start:function(){var urlRegex=/(\?(?:|.*&)(?:u|url|body)=)(.*?)(&|#|$)/;var titleRegex=/(\?(?:|.*&)(?:title|text|subject)=)(.*?)(&|#|$)/;var url=encodeURIComponent(window.location.href);var title=encodeURIComponent($('title').text());this.$('a').each(function(){var $a=$(this);$a.attr('href',function(i,href){return href.replace(urlRegex,function(match,a,b,c){return a+url+c;}).replace(titleRegex,function(match,a,b,c){return a+title+c;});});if($a.attr('target')&&$a.attr('target').match(/_blank/i)&&!$a.closest('.o_editable').length){$a.on('click',function(){window.open(this.href,'','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=550,width=600');return false;});}});return this._super.apply(this,arguments);},});registry.mediaVideo=publicWidget.Widget.extend({selector:'.media_iframe_video',start:function(){var def=this._super.apply(this,arguments);if(this.$target.children('iframe').length){return def;} this.$target.empty();this.$target.append('
 
'+'
 
');this.$target.append($('