@social-mail/social-mail-client 1.2.255 → 1.2.256

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +12 -2
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +2 -2
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/common/controls/repeater/InfiniteRepeater.d.ts.map +1 -1
  6. package/dist/common/controls/repeater/InfiniteRepeater.js +5 -0
  7. package/dist/common/controls/repeater/InfiniteRepeater.js.map +1 -1
  8. package/dist/public/channel/ChannelView.pack.js +5 -0
  9. package/dist/public/channel/ChannelView.pack.js.map +1 -1
  10. package/dist/public/channel/ChannelView.pack.min.js +1 -1
  11. package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
  12. package/dist/public/store/Store.pack.js +5 -0
  13. package/dist/public/store/Store.pack.js.map +1 -1
  14. package/dist/public/store/Store.pack.min.js +1 -1
  15. package/dist/public/store/Store.pack.min.js.map +1 -1
  16. package/dist/public/store/StoreApp.pack.js +7 -2
  17. package/dist/public/store/StoreApp.pack.js.map +1 -1
  18. package/dist/public/store/StoreApp.pack.min.js +1 -1
  19. package/dist/public/store/StoreApp.pack.min.js.map +1 -1
  20. package/dist/tsconfig.tsbuildinfo +1 -1
  21. package/dist/web/AppIndex.pack.js +12 -2
  22. package/dist/web/AppIndex.pack.js.map +1 -1
  23. package/dist/web/AppIndex.pack.min.js +2 -2
  24. package/dist/web/AppIndex.pack.min.js.map +1 -1
  25. package/node_modules/@web-atoms/web-controls/dist/mobile-app/MobileApp.js +7 -2
  26. package/node_modules/@web-atoms/web-controls/dist/mobile-app/MobileApp.js.map +1 -1
  27. package/node_modules/@web-atoms/web-controls/dist/tsconfig.tsbuildinfo +1 -1
  28. package/node_modules/@web-atoms/web-controls/package.json +1 -1
  29. package/node_modules/@web-atoms/web-controls/src/mobile-app/MobileApp.tsx +3 -3
  30. package/package.json +2 -2
  31. package/src/common/controls/repeater/InfiniteRepeater.tsx +5 -0
@@ -491,7 +491,7 @@ and limitations under the License.
491
491
  overflow: hidden;
492
492
  }
493
493
  }
494
- `.installGlobal();_export("Drawer",Drawer=class Drawer extends AtomControl{init(){}preCreate(){this.element.dataset.drawerPage="drawer-page";this.bindEvent(this.element,"click",(e=>e.defaultPrevented?null:this.closeDrawer()));this.runAfterInit((()=>this.app.runAsync((()=>{var _b;return(_b=this.init)===null||_b===void 0?void 0:_b.call(this)}))))}closeDrawer(){const ce=new CustomEvent("closeDrawer",{bubbles:true});this.element.dispatchEvent(ce)}});delete Drawer.prototype.init;historyBackCalled=false;_export("BasePage",BasePage=class BasePage extends AtomControl{constructor(){super(...arguments);this.disableAutoFocus=false}get route(){return this.routeUrl}set route(url){var _b,_c;if(!url){return}if(((_b=history.state)===null||_b===void 0?void 0:_b.url)===url){return}url=Route.encodeUrl(url);if(this.routeUrl===url){return}this.routeUrl=url;(_c=this.reouteDisposable)===null||_c===void 0?void 0:_c.dispose();let last=void 0;setTimeout((()=>last=url),100);const state={url};history.pushState(state,"",url);const eventRegistration=e=>{var _b;if(historyBackCalled){return}if(((_b=e.state)===null||_b===void 0?void 0:_b.url)===last){this.cancel()}};window.addEventListener("popstate",eventRegistration);const d={dispose(){var _b;window.removeEventListener("popstate",eventRegistration);if(((_b=history.state)===null||_b===void 0?void 0:_b.url)===state.url){historyBackCalled=true;history.back();setTimeout((()=>historyBackCalled=false),500)}}};this.reouteDisposable=this.registerDisposable(d)}get hideToolbar(){var _b,_c;return((_c=(_b=this.element)===null||_b===void 0?void 0:_b.dataset)===null||_c===void 0?void 0:_c.hideToolbar)?true:false}set hideToolbar(v){this.element.dataset.hideToolbar=v?"true":"false"}requestCancel(){return __awaiter(this,void 0,void 0,(function*(){if(this.closeWarning){if(!(yield PopupService.confirm({message:this.closeWarning}))){return}}this.cancel()}))}onPropertyChanged(name){var _b;super.onPropertyChanged(name);switch(name){case"footerRenderer":this.recreate(name,"footer");break;case"iconRenderer":this.recreate(name,"icon");break;case"titleRenderer":this.recreate(name,"title");break;case"actionRenderer":this.recreate(name,"action");break;case"headerRenderer":this.recreate(name,"header");break;case"pullToRefreshRenderer":this.pullToRefreshElement=this.recreate(name,"pull-to-refresh");(_b=this.pullToRefreshElement)===null||_b===void 0?void 0:_b.remove();this.enablePullToRefreshEvents();break;case"actionBarRenderer":this.recreate(name,"action-bar");break}}init(){}rendererChanged(){for(const content of ChildEnumerator.where(this.element,(({dataset:{pageElement}})=>!pageElement||pageElement==="content"))){this.dispose(content);content.remove()}const r=this.renderer;if(!r){return}delete this.render;this.render(r)}recreate(renderer,name){var _b,_c,_d;const node=(_c=(_b=this[renderer])===null||_b===void 0?void 0:_b.call(this))!==null&&_c!==void 0?_c:undefined;for(const e of ChildEnumerator.enumerate(this.element)){if(e.dataset.pageElement===name){this.dispose(e);e.remove();break}}if(node){const na=(_d=node.attributes)!==null&&_d!==void 0?_d:node.attributes={};na["data-page-element"]=name;super.render(XNode.create("div",null,node));return this.element.querySelector(`[data-page-element="${name}"]`)}return null}preCreate(){this.element.dataset.basePage="base-page";this.iconClass="";this.viewModelTitle=null;const c=new CancelToken;this.cancelToken=c;this.registerDisposable({dispose(){c.cancel()}});this.runAfterInit((()=>{if(!this.element){return}const anyAutofocus=this.element.querySelector(`*[autofocus]`);if(!anyAutofocus){if(this.disableAutoFocus){return}const windowContent=this.element.querySelector(`[data-page-element="content"]`);if(windowContent){const firstInput=windowContent.querySelector("input,textarea");if(firstInput){firstInput.focus();return}}return}anyAutofocus.focus()}));setTimeout((p=>{p.dataset.pageState="ready"}),1,this.element);this.titleRenderer=()=>XNode.create("span",{"data-text-overflow":"ellipsis",class:"title-text",text:Bind.oneWay((()=>this.viewModelTitle||this.title))});this.iconRenderer=()=>XNode.create("i",{"data-icon-button":"icon-button",class:Bind.oneWay((()=>this.iconClass)),eventClick:e1=>this.dispatchIconClickEvent(e1)});this.actionBarRenderer=()=>XNode.create("div",null);this.runAfterInit((()=>{var _b,_c,_d,_e;(_c=(_b=this.pullToRefreshElement)===null||_b===void 0?void 0:_b.remove)===null||_c===void 0?void 0:_c.call(_b);this.initialized=true;this.enablePullToRefreshEvents();try{document.body.dispatchEvent(new CustomEvent("pageNavigated",{detail:{title:this.title,route:this.route||((_e=(_d=Object.getPrototypeOf(this))===null||_d===void 0?void 0:_d.constructor)===null||_e===void 0?void 0:_e.name)},bubbles:true,cancelable:true}))}catch(_f){}}))}render(node,e,creator){var _b,_c;if(e||((_b=node===null||node===void 0?void 0:node.attributes)===null||_b===void 0?void 0:_b["data-page-element"])){super.render(node,e,creator);return}this.render=super.render;const na=(_c=node.attributes)!==null&&_c!==void 0?_c:node.attributes={};let extracted={};if(!na["data-page-element"]){na["data-page-element"]="content";extracted=this.extractControlProperties(node)}super.render(XNode.create("div",Object.assign({viewModelTitle:Bind.oneWay((()=>this.viewModel.title))},extracted),node),e,creator);this.contentElement=this.element.querySelector("[data-page-element='content']");setTimeout((()=>{}),100)}enablePullToRefreshEvents(){var _b;const e=this.pullToRefreshElement;if(!e){(_b=this.pullToRefreshDisposable)===null||_b===void 0?void 0:_b.dispose();this.pullToRefreshDisposable=void 0;return e}if(this.pullToRefreshDisposable){return}let elementAdded=false;const touchStart=te=>{var _b;if(!this.pullToRefreshElement){(_b=this.pullToRefreshDisposable)===null||_b===void 0?void 0:_b.dispose();this.pullToRefreshDisposable=null;return}if(this.contentElement.scrollTop>0){return}const isMouseEvent=te.type==="mousedown";const moveEventName=isMouseEvent?"mousemove":"touchmove";const endEventName=isMouseEvent?"mouseup":"touchend";const startY=isMouseEvent?te.screenY:te.touches[0].screenY;this.pullToRefreshElement.dataset.mode="down";if(isMouseEvent){te.stopPropagation();te.preventDefault()}const d=new AtomDisposableList;d.add((()=>{this.contentElement.style.removeProperty("touch-action")}));d.add(this.bindEvent(this.contentElement,moveEventName,(me=>{const screenY=isMouseEvent?me.screenY:me.touches[0].screenY;const diffX=Math.min(75,screenY-startY);if(diffX>5){if(!elementAdded){this.contentElement.style.touchAction="none";elementAdded=true;this.element.appendChild(this.pullToRefreshElement)}}else{return}this.contentElement.style.transform=`translateY(${diffX}px)`;if(diffX>50){this.pullToRefreshElement.dataset.mode="up"}else{this.pullToRefreshElement.dataset.mode="down"}}),null,{passive:true}));d.add(this.bindEvent(this.contentElement,endEventName,(ue=>{ue.stopPropagation();if(isMouseEvent){ue.stopImmediatePropagation();ue.preventDefault()}d.dispose();const done=()=>{delete this.pullToRefreshElement.dataset.mode;this.contentElement.style.transform=``;this.pullToRefreshElement.style.transform="";this.pullToRefreshElement.remove();elementAdded=false};const diffX=ue.screenY-startY;if(diffX<=50){done();return}const ce=new CustomEvent("reloadPage",{detail:this,bubbles:true,cancelable:true});this.contentElement.dispatchEvent(ce);if(ce.defaultPrevented){done();return}this.pullToRefreshElement.dataset.mode="loading";const promise=ce.promise;if(!promise){done();return}promise.then(done,done)}),null,{passive:!isMouseEvent}))};const ed=new AtomDisposableList;ed.add(this.bindEvent(this.contentElement,"mousedown",touchStart));ed.add(this.bindEvent(this.contentElement,"touchstart",touchStart,null,{passive:true}));this.pullToRefreshDisposable=ed}dispatchIconClickEvent(e){const ce=new CustomEvent("iconClick",{bubbles:true});e.target.dispatchEvent(ce)}hide(){var _b;const{element}=this;if(!element){return}element.dataset.pageState="hidden";element._logicalParent=element.parentElement;this.scrollTop=(_b=this.contentElement)===null||_b===void 0?void 0:_b.scrollTop;setTimeout((()=>{element===null||element===void 0?void 0:element.remove()}),400)}show(){this.element._logicalParent.appendChild(this.element);setTimeout((()=>{if(this.scrollTop){}this.element.dataset.pageState="ready"}),1)}});__decorate([BindableProperty,__metadata("design:type",String)],BasePage.prototype,"closeWarning",void 0);__decorate([BindableProperty,__metadata("design:type",String)],BasePage.prototype,"title",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"titleRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"iconRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"actionRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"footerRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"actionBarRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"headerRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"pullToRefreshRenderer",void 0);delete BasePage.prototype.init;_export("ContentPage",ContentPage=class ContentPage extends BasePage{});_export("TabbedPage",TabbedPage=class TabbedPage extends BasePage{});_export("default",MobileApp=class MobileApp extends AtomControl{static pushPage(pageUri,parameters={},clearHistory=false){return __awaiter(this,void 0,void 0,(function*(){const mobileApp=this.current;const page=yield AtomLoader.loadClass(pageUri,parameters!==null&&parameters!==void 0?parameters:{},mobileApp.app);const result=yield mobileApp.loadPage(page,clearHistory);return result}))}popTo(w){this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){while(this.selectedPage!==w){this.selectedPage.cancel();yield sleep(500)}}))))}back(){return __awaiter(this,void 0,void 0,(function*(){if(this.pages.length===0){const drawer=this.drawer;if(drawer&&!this.hideDrawer){const drawerPage=new drawer(this.app);const modalClose=ce=>{var _b;let start=ce.target;const de=drawerPage.element;while(start){if(start===de){return}start=start.parentElement}ce.preventDefault();(_b=ce.stopImmediatePropagation)===null||_b===void 0?void 0:_b.call(ce);ce.target.dispatchEvent(new CustomEvent("closeDrawer",{bubbles:true}))};const dispatchCloseDrawer=de=>{if(de.defaultPrevented){return}de.target.dispatchEvent(new CustomEvent("closeDrawer",{bubbles:true}))};this.element.appendChild(drawerPage.element);setTimeout((()=>{this.element.dataset.drawer="visible";drawerPage.bindEvent(this.element,"click",dispatchCloseDrawer);drawerPage.bindEvent(document.body,"click",modalClose,null,true)}),10);this.hideDrawer=()=>{this.element.dataset.drawer="";setTimeout((()=>{const de=drawerPage.element;drawerPage.dispose();de.remove()}),400);this.hideDrawer=undefined};return false}return true}this.selectedPage.cancel("cancelled");return false}))}init(){return __awaiter(this,void 0,void 0,(function*(){}))}preCreate(){MobileApp.current=this;window.addEventListener("backButton",(ce=>{const{detail}=ce;ce.preventDefault();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){if(yield this.back()){detail()}}))))}));this.drawer=null;this.element.dataset.pageApp="page-app";const container=this.container=document.createElement("div");container.dataset.container="true";this.element.appendChild(container);this.pages=[];this.selectedPage=null;this.bindEvent(this.element,"iconClick",(e=>this.back()));this.bindEvent(this.element,"closeDrawer",(e=>{var _b;(_b=this.hideDrawer)===null||_b===void 0?void 0:_b.call(this)}));const navigationService=this.app.resolve(NavigationService);navigationService.registerNavigationHook(((uri,{target,clearHistory})=>{if(/^(app|root)$/.test(target)){return this.loadPageForReturn(uri,clearHistory)}}));this.runAfterInit((()=>this.app.runAsync((()=>this.init()))))}loadPageForReturn(url,clearHistory){var _b;return __awaiter(this,void 0,void 0,(function*(){(_b=this.defaultPage)!==null&&_b!==void 0?_b:this.defaultPage=url;const page=yield AtomLoader.loadControl(url,this.app);if(url.query&&url.query.title){page.title||(page.title=url.query.title.toString())}const p=yield this.loadPage(page,clearHistory);try{return yield p}catch(ex){if((ex.message?ex.message:ex)==="cancelled"){console.warn(ex);return}throw ex}}))}loadPage(page,clearHistory){return __awaiter(this,void 0,void 0,(function*(){page.title||(page.title=StringHelper.fromPascalToTitleCase(Object.getPrototypeOf(page).constructor.name));const{parameters}=page;const route=parameters===null||parameters===void 0?void 0:parameters[displayRouteSymbol];if(route){page.route=route}const selectedPage=this.selectedPage;if(selectedPage){selectedPage.hide();this.pages.add(selectedPage)}const hasPages=!clearHistory&&this.pages.length;if(clearHistory){for(const iterator of this.pages){const e=iterator.element;iterator.dispose();e.remove()}this.pages.length=0;this.selectedPage=null}if(!hasPages){page.element.dataset.pageState="ready";page.iconClass="fas fa-bars"}else{page.iconClass="fas fa-arrow-left"}this.container.appendChild(page.element);this.selectedPage=page;const vm=page.viewModel;const element=page.element;return new Promise(((resolve,reject)=>{const closeFactory=(callback,result)=>r=>{if(clearHistory){this.app.runAsync((()=>this.loadPageForReturn(this.defaultPage,true)));return}element.removeAttribute("data-page-state");const last=this.pages.pop();last.show();setTimeout((()=>{page.dispose();element.remove();callback(r!==null&&r!==void 0?r:result);this.selectedPage=last}),300)};const cancel=closeFactory(reject,"cancelled");const close=closeFactory(resolve);if(vm){vm.cancel=cancel;vm.close=close}page.cancel=cancel;page.close=close}))}))}});MobileApp.drawer=XNode.prepare("drawer",true,true);_export("isMobileView",isMobileView=/Android|iPhone/i.test(navigator.userAgent)||window.visualViewport.width<500||window.forceMobileLayout);isPopupPage=Symbol("isPopupPage");PopupWindowEx=class PopupWindowEx extends PopupWindow{};_a=isPopupPage;PopupWindowEx[_a]=true;root=isMobileView?ContentPage:PopupWindowEx;_export("PopupWindowPage",PopupWindowPage=class PopupWindowPage extends root{});PageNavigator.pushPageForResult=(page,parameters,clearHistory)=>{var _b,_c;if(!isMobileView&&page[isPopupPage]){const popupPage=page;const options=Object.assign(Object.assign({},(_b=popupPage.dialogOptions)!==null&&_b!==void 0?_b:{}),{parameters:{parameters}});(_c=options.modal)!==null&&_c!==void 0?_c:options.modal=true;if(options.modal){return page.showModal(options)}return page.showWindow(options)}return MobileApp.pushPage(page,parameters,clearHistory)}}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/mobile-app/MobileApp");System.register(["tslib","@web-atoms/core/dist/core/BindableProperty","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/web/core/AtomUI","../mobile-app/MobileApp","@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var __decorate,__metadata,BindableProperty,XNode,AtomControl,ChildEnumerator,MobileApp,styled,DesktopApp;_export("default",void 0);return{setters:[function(_tslib){__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBindableProperty){BindableProperty=_webAtomsCoreDistCoreBindableProperty.BindableProperty},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistWebCoreAtomUI){ChildEnumerator=_webAtomsCoreDistWebCoreAtomUI.ChildEnumerator},function(_mobileAppMobileApp){MobileApp=_mobileAppMobileApp.default},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
494
+ `.installGlobal();_export("Drawer",Drawer=class Drawer extends AtomControl{init(){}preCreate(){this.element.dataset.drawerPage="drawer-page";this.bindEvent(this.element,"click",(e=>e.defaultPrevented?null:this.closeDrawer()));this.runAfterInit((()=>this.app.runAsync((()=>{var _b;return(_b=this.init)===null||_b===void 0?void 0:_b.call(this)}))))}closeDrawer(){const ce=new CustomEvent("closeDrawer",{bubbles:true});this.element.dispatchEvent(ce)}});delete Drawer.prototype.init;historyBackCalled=false;_export("BasePage",BasePage=class BasePage extends AtomControl{constructor(){super(...arguments);this.disableAutoFocus=false}get route(){return this.routeUrl}set route(url){var _b,_c;if(!url){return}if(((_b=history.state)===null||_b===void 0?void 0:_b.url)===url){return}url=Route.encodeUrl(url);if(this.routeUrl===url){return}this.routeUrl=url;(_c=this.reouteDisposable)===null||_c===void 0?void 0:_c.dispose();let last=void 0;setTimeout((()=>last=url),100);const state={url};history.pushState(state,"",url);const eventRegistration=e=>{var _b;if(historyBackCalled){return}if(((_b=e.state)===null||_b===void 0?void 0:_b.url)===last){this.cancel()}};window.addEventListener("popstate",eventRegistration);const d={dispose(){var _b;window.removeEventListener("popstate",eventRegistration);if(((_b=history.state)===null||_b===void 0?void 0:_b.url)===state.url){historyBackCalled=true;history.back();setTimeout((()=>historyBackCalled=false),500)}}};this.reouteDisposable=this.registerDisposable(d)}get hideToolbar(){var _b,_c;return((_c=(_b=this.element)===null||_b===void 0?void 0:_b.dataset)===null||_c===void 0?void 0:_c.hideToolbar)?true:false}set hideToolbar(v){this.element.dataset.hideToolbar=v?"true":"false"}requestCancel(){return __awaiter(this,void 0,void 0,(function*(){if(this.closeWarning){if(!(yield PopupService.confirm({message:this.closeWarning}))){return}}this.cancel()}))}onPropertyChanged(name){var _b;super.onPropertyChanged(name);switch(name){case"footerRenderer":this.recreate(name,"footer");break;case"iconRenderer":this.recreate(name,"icon");break;case"titleRenderer":this.recreate(name,"title");break;case"actionRenderer":this.recreate(name,"action");break;case"headerRenderer":this.recreate(name,"header");break;case"pullToRefreshRenderer":this.pullToRefreshElement=this.recreate(name,"pull-to-refresh");(_b=this.pullToRefreshElement)===null||_b===void 0?void 0:_b.remove();this.enablePullToRefreshEvents();break;case"actionBarRenderer":this.recreate(name,"action-bar");break}}init(){}rendererChanged(){for(const content of ChildEnumerator.where(this.element,(({dataset:{pageElement}})=>!pageElement||pageElement==="content"))){this.dispose(content);content.remove()}const r=this.renderer;if(!r){return}delete this.render;this.render(r)}recreate(renderer,name){var _b,_c,_d;const node=(_c=(_b=this[renderer])===null||_b===void 0?void 0:_b.call(this))!==null&&_c!==void 0?_c:undefined;for(const e of ChildEnumerator.enumerate(this.element)){if(e.dataset.pageElement===name){this.dispose(e);e.remove();break}}if(node){const na=(_d=node.attributes)!==null&&_d!==void 0?_d:node.attributes={};na["data-page-element"]=name;super.render(XNode.create("div",null,node));return this.element.querySelector(`[data-page-element="${name}"]`)}return null}preCreate(){this.element.dataset.basePage="base-page";this.iconClass="";this.viewModelTitle=null;const c=new CancelToken;this.cancelToken=c;this.registerDisposable({dispose(){c.cancel()}});this.runAfterInit((()=>{if(!this.element){return}const anyAutofocus=this.element.querySelector(`*[autofocus]`);if(!anyAutofocus){if(this.disableAutoFocus){return}const windowContent=this.element.querySelector(`[data-page-element="content"]`);if(windowContent){const firstInput=windowContent.querySelector("input,textarea");if(firstInput){firstInput.focus();return}}return}anyAutofocus.focus()}));setTimeout((p=>{p.dataset.pageState="ready"}),1,this.element);this.titleRenderer=()=>XNode.create("span",{"data-text-overflow":"ellipsis",class:"title-text",text:Bind.oneWay((()=>this.viewModelTitle||this.title))});this.iconRenderer=()=>XNode.create("i",{"data-icon-button":"icon-button",class:Bind.oneWay((()=>this.iconClass)),eventClick:e1=>this.dispatchIconClickEvent(e1)});this.actionBarRenderer=()=>XNode.create("div",null);this.runAfterInit((()=>{var _b,_c,_d,_e;(_c=(_b=this.pullToRefreshElement)===null||_b===void 0?void 0:_b.remove)===null||_c===void 0?void 0:_c.call(_b);this.initialized=true;this.enablePullToRefreshEvents();try{document.body.dispatchEvent(new CustomEvent("pageNavigated",{detail:{title:this.title,route:this.route||((_e=(_d=Object.getPrototypeOf(this))===null||_d===void 0?void 0:_d.constructor)===null||_e===void 0?void 0:_e.name)},bubbles:true,cancelable:true}))}catch(_f){}}))}render(node,e,creator){var _b,_c;if(e||((_b=node===null||node===void 0?void 0:node.attributes)===null||_b===void 0?void 0:_b["data-page-element"])){super.render(node,e,creator);return}this.render=super.render;const na=(_c=node.attributes)!==null&&_c!==void 0?_c:node.attributes={};let extracted={};if(!na["data-page-element"]){na["data-page-element"]="content";extracted=this.extractControlProperties(node)}super.render(XNode.create("div",Object.assign({viewModelTitle:Bind.oneWay((()=>this.viewModel.title))},extracted),node),e,creator);this.contentElement=this.element.querySelector("[data-page-element='content']");setTimeout((()=>{this.contentElement.scrollTop=0;this.contentElement.scrollLeft=0}),100)}enablePullToRefreshEvents(){var _b;const e=this.pullToRefreshElement;if(!e){(_b=this.pullToRefreshDisposable)===null||_b===void 0?void 0:_b.dispose();this.pullToRefreshDisposable=void 0;return e}if(this.pullToRefreshDisposable){return}let elementAdded=false;const touchStart=te=>{var _b;if(!this.pullToRefreshElement){(_b=this.pullToRefreshDisposable)===null||_b===void 0?void 0:_b.dispose();this.pullToRefreshDisposable=null;return}if(this.contentElement.scrollTop>0){return}const isMouseEvent=te.type==="mousedown";const moveEventName=isMouseEvent?"mousemove":"touchmove";const endEventName=isMouseEvent?"mouseup":"touchend";const startY=isMouseEvent?te.screenY:te.touches[0].screenY;this.pullToRefreshElement.dataset.mode="down";if(isMouseEvent){te.stopPropagation();te.preventDefault()}const d=new AtomDisposableList;d.add((()=>{this.contentElement.style.removeProperty("touch-action")}));d.add(this.bindEvent(this.contentElement,moveEventName,(me=>{const screenY=isMouseEvent?me.screenY:me.touches[0].screenY;const diffX=Math.min(75,screenY-startY);if(diffX>5){if(!elementAdded){this.contentElement.style.touchAction="none";elementAdded=true;this.element.appendChild(this.pullToRefreshElement)}}else{return}this.contentElement.style.transform=`translateY(${diffX}px)`;if(diffX>50){this.pullToRefreshElement.dataset.mode="up"}else{this.pullToRefreshElement.dataset.mode="down"}}),null,{passive:true}));d.add(this.bindEvent(this.contentElement,endEventName,(ue=>{ue.stopPropagation();if(isMouseEvent){ue.stopImmediatePropagation();ue.preventDefault()}d.dispose();const done=()=>{delete this.pullToRefreshElement.dataset.mode;this.contentElement.style.transform=``;this.pullToRefreshElement.style.transform="";this.pullToRefreshElement.remove();elementAdded=false};const diffX=ue.screenY-startY;if(diffX<=50){done();return}const ce=new CustomEvent("reloadPage",{detail:this,bubbles:true,cancelable:true});this.contentElement.dispatchEvent(ce);if(ce.defaultPrevented){done();return}this.pullToRefreshElement.dataset.mode="loading";const promise=ce.promise;if(!promise){done();return}promise.then(done,done)}),null,{passive:!isMouseEvent}))};const ed=new AtomDisposableList;ed.add(this.bindEvent(this.contentElement,"mousedown",touchStart));ed.add(this.bindEvent(this.contentElement,"touchstart",touchStart,null,{passive:true}));this.pullToRefreshDisposable=ed}dispatchIconClickEvent(e){const ce=new CustomEvent("iconClick",{bubbles:true});e.target.dispatchEvent(ce)}hide(){var _b;const{element}=this;if(!element){return}element.dataset.pageState="hidden";element._logicalParent=element.parentElement;this.scrollTop=(_b=this.contentElement)===null||_b===void 0?void 0:_b.scrollTop;setTimeout((()=>{element===null||element===void 0?void 0:element.remove()}),400)}show(){this.element._logicalParent.appendChild(this.element);setTimeout((()=>{if(this.scrollTop){this.contentElement.scrollTop=this.scrollTop}this.element.dataset.pageState="ready"}),1)}});__decorate([BindableProperty,__metadata("design:type",String)],BasePage.prototype,"closeWarning",void 0);__decorate([BindableProperty,__metadata("design:type",String)],BasePage.prototype,"title",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"titleRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"iconRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"actionRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"footerRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"actionBarRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"headerRenderer",void 0);__decorate([BindableProperty,__metadata("design:type",Function)],BasePage.prototype,"pullToRefreshRenderer",void 0);delete BasePage.prototype.init;_export("ContentPage",ContentPage=class ContentPage extends BasePage{});_export("TabbedPage",TabbedPage=class TabbedPage extends BasePage{});_export("default",MobileApp=class MobileApp extends AtomControl{static pushPage(pageUri,parameters={},clearHistory=false){return __awaiter(this,void 0,void 0,(function*(){const mobileApp=this.current;const page=yield AtomLoader.loadClass(pageUri,parameters!==null&&parameters!==void 0?parameters:{},mobileApp.app);const result=yield mobileApp.loadPage(page,clearHistory);return result}))}popTo(w){this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){while(this.selectedPage!==w){this.selectedPage.cancel();yield sleep(500)}}))))}back(){return __awaiter(this,void 0,void 0,(function*(){if(this.pages.length===0){const drawer=this.drawer;if(drawer&&!this.hideDrawer){const drawerPage=new drawer(this.app);const modalClose=ce=>{var _b;let start=ce.target;const de=drawerPage.element;while(start){if(start===de){return}start=start.parentElement}ce.preventDefault();(_b=ce.stopImmediatePropagation)===null||_b===void 0?void 0:_b.call(ce);ce.target.dispatchEvent(new CustomEvent("closeDrawer",{bubbles:true}))};const dispatchCloseDrawer=de=>{if(de.defaultPrevented){return}de.target.dispatchEvent(new CustomEvent("closeDrawer",{bubbles:true}))};this.element.appendChild(drawerPage.element);setTimeout((()=>{this.element.dataset.drawer="visible";drawerPage.bindEvent(this.element,"click",dispatchCloseDrawer);drawerPage.bindEvent(document.body,"click",modalClose,null,true)}),10);this.hideDrawer=()=>{this.element.dataset.drawer="";setTimeout((()=>{const de=drawerPage.element;drawerPage.dispose();de.remove()}),400);this.hideDrawer=undefined};return false}return true}this.selectedPage.cancel("cancelled");return false}))}init(){return __awaiter(this,void 0,void 0,(function*(){}))}preCreate(){MobileApp.current=this;window.addEventListener("backButton",(ce=>{const{detail}=ce;ce.preventDefault();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){if(yield this.back()){detail()}}))))}));this.drawer=null;this.element.dataset.pageApp="page-app";const container=this.container=document.createElement("div");container.dataset.container="true";this.element.appendChild(container);this.pages=[];this.selectedPage=null;this.bindEvent(this.element,"iconClick",(e=>this.back()));this.bindEvent(this.element,"closeDrawer",(e=>{var _b;(_b=this.hideDrawer)===null||_b===void 0?void 0:_b.call(this)}));const navigationService=this.app.resolve(NavigationService);navigationService.registerNavigationHook(((uri,{target,clearHistory})=>{if(/^(app|root)$/.test(target)){return this.loadPageForReturn(uri,clearHistory)}}));this.runAfterInit((()=>this.app.runAsync((()=>this.init()))))}loadPageForReturn(url,clearHistory){var _b;return __awaiter(this,void 0,void 0,(function*(){(_b=this.defaultPage)!==null&&_b!==void 0?_b:this.defaultPage=url;const page=yield AtomLoader.loadControl(url,this.app);if(url.query&&url.query.title){page.title||(page.title=url.query.title.toString())}const p=yield this.loadPage(page,clearHistory);try{return yield p}catch(ex){if((ex.message?ex.message:ex)==="cancelled"){console.warn(ex);return}throw ex}}))}loadPage(page,clearHistory){return __awaiter(this,void 0,void 0,(function*(){page.title||(page.title=StringHelper.fromPascalToTitleCase(Object.getPrototypeOf(page).constructor.name));const{parameters}=page;const route=parameters===null||parameters===void 0?void 0:parameters[displayRouteSymbol];if(route){page.route=route}const selectedPage=this.selectedPage;if(selectedPage){selectedPage.hide();this.pages.add(selectedPage)}const hasPages=!clearHistory&&this.pages.length;if(clearHistory){for(const iterator of this.pages){const e=iterator.element;iterator.dispose();e.remove()}this.pages.length=0;this.selectedPage=null}if(!hasPages){page.element.dataset.pageState="ready";page.iconClass="fas fa-bars"}else{page.iconClass="fas fa-arrow-left"}this.container.appendChild(page.element);this.selectedPage=page;const vm=page.viewModel;const element=page.element;return new Promise(((resolve,reject)=>{const closeFactory=(callback,result)=>r=>{if(clearHistory){this.app.runAsync((()=>this.loadPageForReturn(this.defaultPage,true)));return}element.removeAttribute("data-page-state");const last=this.pages.pop();last.show();setTimeout((()=>{page.dispose();element.remove();callback(r!==null&&r!==void 0?r:result);this.selectedPage=last}),300)};const cancel=closeFactory(reject,"cancelled");const close=closeFactory(resolve);if(vm){vm.cancel=cancel;vm.close=close}page.cancel=cancel;page.close=close}))}))}});MobileApp.drawer=XNode.prepare("drawer",true,true);_export("isMobileView",isMobileView=/Android|iPhone/i.test(navigator.userAgent)||window.visualViewport.width<500||window.forceMobileLayout);isPopupPage=Symbol("isPopupPage");PopupWindowEx=class PopupWindowEx extends PopupWindow{};_a=isPopupPage;PopupWindowEx[_a]=true;root=isMobileView?ContentPage:PopupWindowEx;_export("PopupWindowPage",PopupWindowPage=class PopupWindowPage extends root{});PageNavigator.pushPageForResult=(page,parameters,clearHistory)=>{var _b,_c;if(!isMobileView&&page[isPopupPage]){const popupPage=page;const options=Object.assign(Object.assign({},(_b=popupPage.dialogOptions)!==null&&_b!==void 0?_b:{}),{parameters:{parameters}});(_c=options.modal)!==null&&_c!==void 0?_c:options.modal=true;if(options.modal){return page.showModal(options)}return page.showWindow(options)}return MobileApp.pushPage(page,parameters,clearHistory)}}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/mobile-app/MobileApp");System.register(["tslib","@web-atoms/core/dist/core/BindableProperty","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/web/core/AtomUI","../mobile-app/MobileApp","@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var __decorate,__metadata,BindableProperty,XNode,AtomControl,ChildEnumerator,MobileApp,styled,DesktopApp;_export("default",void 0);return{setters:[function(_tslib){__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBindableProperty){BindableProperty=_webAtomsCoreDistCoreBindableProperty.BindableProperty},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistWebCoreAtomUI){ChildEnumerator=_webAtomsCoreDistWebCoreAtomUI.ChildEnumerator},function(_mobileAppMobileApp){MobileApp=_mobileAppMobileApp.default},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
495
495
 
496
496
  html, body {
497
497
  width: 100vw;
@@ -681,7 +681,7 @@ and limitations under the License.
681
681
  border: solid 1px gray;
682
682
  }
683
683
 
684
- `.installGlobal("[data-load-more=load-more]");pagedItemsSetter=AtomControl.registerProperty("paged-items","paged-items",((control,element,value)=>{var _b,_c;if(value&&value.items){let cancelToken=control[loadMoreSet];(_b=control.footerRenderer)!==null&&_b!==void 0?_b:control.footerRenderer=()=>XNode.create("div",{"data-load-more":"load-more","data-click-event":"load-more-items"},XNode.create("span",{text:"Load more ... "}));(_c=control.headerRenderer)!==null&&_c!==void 0?_c:control.headerRenderer=()=>XNode.create("div",{class:"scroll-header","style-height":"1px","style-width":"100%"});if(!cancelToken){control[loadMoreSet]=cancelToken=new CancelToken;control.bindEvent(control.element,"loadMoreItems",(e=>{const ce=new CustomEvent("moreItems",{detail:{pagedItems:control.pagedItems,cancelToken},bubbles:false});control.element.dispatchEvent(ce)}))}else{cancelToken.cancel();control[loadMoreSet]=cancelToken=new CancelToken}const items=control.items;if(items&&Array.isArray(items)){items.clear();items.addAll(value.items)}else{control.items=value.items}const autoScroll=control.element.getAttribute("data-auto-scroll")!=="false";if(autoScroll){setTimeout((()=>{var _b;const ce=(_b=control.element)===null||_b===void 0?void 0:_b.firstElementChild;ce===null||ce===void 0?void 0:ce.scrollIntoView()}),100)}control.footer=value.total&&value.items&&value.items.length<value.total;control.pagedItems=value}}));scrollToBottom=({target,detail:{type,index}})=>{if(!(type==="add"&&index===0)&&type!=="reset"){return}setTimeout((()=>{const e=target.firstElementChild;console.log(e);e===null||e===void 0?void 0:e.scrollIntoView(true)}),1)};_export("default",InfiniteRepeater=class InfiniteRepeater{});_a=InfiniteRepeater;InfiniteRepeater.pagedItems=start=>{const setter=start(0);const setters=pagedItemsSetter(Bind.oneWayAsync(setter));setters["event-more-items"]=Bind.event(((s,e)=>__awaiter(void 0,void 0,void 0,(function*(){var _b,_c;const st=(_c=(_b=s.items)===null||_b===void 0?void 0:_b.length)!==null&&_c!==void 0?_c:0;if(!st){return}const cancelToken=s[loadMoreSet];const loader=start(st);const results=yield loader(s,e.target,cancelToken);s.items.addAll(results.items);s.footer=results.items.length>0}))));return setters}}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/repeater/InfiniteRepeater");System.register(["./Register","./ServiceCollection"],(function(_export,_context){"use strict";var Register,Scope;function DITransient(mockOrInject){return target=>{Register({scope:Scope.Transient,mockOrInject})(target)}}_export("default",DITransient);return{setters:[function(_Register){Register=_Register.Register},function(_ServiceCollection){Scope=_ServiceCollection.Scope}],execute:function(){}}}));AmdLoader.instance.setup("@web-atoms/core/dist/di/DITransient");System.register([],(function(_export,_context){"use strict";var cloneSource;return{setters:[],execute:function(){cloneSource=Symbol("cloneSource");_export("default",cloneSource)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/cloneSource");System.register(["./cloneSource"],(function(_export,_context){"use strict";var cloneSource,Cloner,PropertyCloner,getKey;_export({Cloner:void 0,PropertyCloner:void 0});return{setters:[function(_cloneSource){cloneSource=_cloneSource.default}],execute:function(){getKey=(target,value)=>{for(const key in target){if(Object.prototype.hasOwnProperty.call(target,key)){const element=target[key];if(element===value){return key}}}};_export("Cloner",Cloner=class Cloner{static copyProperties(src,dest={}){dest[cloneSource]=src;for(const key in src){if(Object.prototype.hasOwnProperty.call(src,key)){const element=src[key];switch(typeof element){case"bigint":case"boolean":case"number":case"string":dest[key]=element;break;case"object":if(element===null){dest[key]=null}if(element instanceof Date){dest[key]=element}break}}}return dest}get copy(){const copy=Cloner.copyProperties(this.item);if(this.path){for(const iterator of this.path){this.clone(this.item,copy,iterator)}}return copy}constructor(item,path){this.item=item;this.path=path;this.$type=item.$type}include(property){const last=[property];return new PropertyCloner(this.item,this.path?[...this.path,last]:[last],last)}clone(src,dest,paths){var _a,_b,_c;if(!paths.length){return dest}const[first,...others]=paths;let p=first(src);if(!p){return dest}const original=p;const name=getKey(src,p);if(Array.isArray(p)){const existing=(_a=dest[name])!==null&&_a!==void 0?_a:dest[name]=[];for(let index=0;index<p.length;index++){const element=p[index];const existingItem=(_b=existing[index])!==null&&_b!==void 0?_b:existing[index]={};Cloner.copyProperties(element,existingItem);this.clone(element,existingItem,others)}return existing}p=Cloner.copyProperties(p,(_c=dest[name])!==null&&_c!==void 0?_c:undefined);dest[name]=p;this.clone(original,p,others);return dest}});_export("PropertyCloner",PropertyCloner=class PropertyCloner extends Cloner{constructor(item,path,propertyPath){super(item,path);this.propertyPath=propertyPath}thenInclude(property){this.propertyPath.push(property);return new PropertyCloner(this.item,this.path,this.propertyPath)}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/Cloner");System.register([],(function(_export,_context){"use strict";var EntityContext;_export("EntityContext",void 0);return{setters:[],execute:function(){_export("EntityContext",EntityContext=class EntityContext{constructor(models){this.models=models;this.cache=[];for(const iterator of models){this.cache[iterator.name]=iterator}}for(name){return this.cache[name]}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/IEntityModel");System.register([],(function(_export,_context){"use strict";var JsonError;_export("default",void 0);return{setters:[],execute:function(){_export("default",JsonError=class JsonError extends Error{constructor(message,json){super(message);this.json=json}get errors(){var _a;return(_a=this.json.paramErrors)!==null&&_a!==void 0?_a:[]}get details(){var _a;const{errors}=this;if(errors.length){return errors.map((x=>`${x.name}: ${x.reason}`)).join("\n")}return(_a=this.json)===null||_a===void 0?void 0:_a.details}})}}}));AmdLoader.instance.setup("@web-atoms/core/dist/services/http/JsonError");System.register([],(function(_export,_context){"use strict";var Queue;_export("default",void 0);return{setters:[],execute:function(){_export("default",Queue=class Queue{constructor(){this.head=0;this.tail=0;this.store=new Map}peek(){return this.store.get(this.head)}enqueue(item){this.store.set(this.tail,item);this.tail++}dequeue(){const{head,tail}=this;const size=tail-head;if(size<=0){return void 0}const item=this.store.get(head);this.store.delete(head);this.head++;if(this.head===this.tail){this.head=0;this.tail=0}return item}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/Queue");System.register(["./Queue"],(function(_export,_context){"use strict";var Queue,TaskManager;_export("default",void 0);return{setters:[function(_Queue){Queue=_Queue.default}],execute:function(){_export("default",TaskManager=class TaskManager{constructor(){this.rateLimit=10;this.running=new Set;this.waiting=new Queue}run(fx){const pr=new Promise(((resolve,reject)=>{this.waiting.enqueue({resolve,reject,fx})}));pr.catch((error=>console.error(error)));this.processQueue();return pr}processQueue(){for(;;){if(this.running.size>=this.rateLimit){return}const t=this.waiting.dequeue();if(!t){return}const{fx,resolve,reject}=t;this.running.add(fx);fx().then((r=>{this.running.delete(fx);setTimeout((()=>this.processQueue()),1);resolve(r)}),(e=>{this.running.delete(fx);setTimeout((()=>this.processQueue()),1);reject(e)}))}}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/TaskManager");System.register(["tslib","@web-atoms/core/dist/services/http/JsonError","../models/TaskManager"],(function(_export,_context){"use strict";var __awaiter,JsonError,TaskManager,TextBody,HttpSession;function merge(url,extra){return url+(typeof extra==="string"?extra:combine(extra))}function combine([url,params]){let separator=url.indexOf("?")===-1?"?":"&";if(!url.endsWith("&")){url+=separator;separator=""}for(const key in params){if(params.hasOwnProperty(key)){const element=params[key];url+=separator;separator="&";url+=`${key}=${encodeURIComponent(element)}`}}return url}_export({merge,combine,TextBody:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_webAtomsCoreDistServicesHttpJsonError){JsonError=_webAtomsCoreDistServicesHttpJsonError.default},function(_modelsTaskManager){TaskManager=_modelsTaskManager.default}],execute:function(){_export("TextBody",TextBody=class TextBody{constructor(text){this.text=text}toString(){return this.text}});_export("default",HttpSession=class HttpSession extends TaskManager{constructor(){super(...arguments);this.rateLimit=10;this.resultConverter=e=>e}fetchJson(options){return this.run((()=>this.uncheckedFetchJson(options)))}uncheckedFetchJson(options){var _a,_b,_c,_d,_e,_f;return __awaiter(this,void 0,void 0,(function*(){if(options.cancelToken){const ab=new AbortController;options.signal=ab.signal;options.cancelToken.registerForCancel((()=>{ab.abort()}))}let response;if(this.interceptFetch){response=yield this.interceptFetch(options.url,options)}else{response=yield fetch(options.url,options)}const contentType=(_a=response.headers.get("Content-Type"))===null||_a===void 0?void 0:_a.toString();if(response.status>=400){if(contentType===null||contentType===void 0?void 0:contentType.includes("/json")){const error=yield response.json();throw new JsonError(typeof response==="string"?response:(_f=(_e=(_d=(_c=(_b=error.title)!==null&&_b!==void 0?_b:error.detail)!==null&&_c!==void 0?_c:error.message)!==null&&_d!==void 0?_d:error.exceptionMessage)!==null&&_e!==void 0?_e:error)!==null&&_f!==void 0?_f:"Json Server Error",error)}throw new Error(yield response.text())}if(contentType&&!contentType.includes("/json")){throw new Error(`Unable to convert to json\r\n${contentType}}`)}return this.resultConverter(yield response.json())}))}interceptFetch(input,init){throw new Error("not supported")}getJson(options){options.method="GET";return this.fetchJson(options)}postFormModel(options){var _a;options.method="POST";if(options.body){options.body=new TextBody(`formModel=${encodeURIComponent(JSON.stringify(options.body))}`)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/x-www-form-urlencoded";return this.fetchJson(options)}postJson(options){var _a;options.method="POST";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}deleteJson(options){var _a;options.method="DELETE";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}putJson(options){var _a;options.method="PUT";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}});delete HttpSession.prototype.interceptFetch}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/HttpSession");System.register(["../models/cloneSource"],(function(_export,_context){"use strict";var cloneSource,isObject;function mergeProperties(src,target,path="0",visited=new Map,merged=new Map){if(visited.has(path)){return}if(merged.has(target)){return}merged.set(target,true);visited.set(path,true);if(Array.isArray(src)){for(let index=0;index<src.length;index++){const srcElement=src[index];const targetElement=target[index];if(isObject(targetElement)){mergeProperties(srcElement,targetElement,`${path}.${index}`,visited,merged);continue}target[index]=targetElement}return}const cloneTarget=target[cloneSource];for(const key in src){if(Object.prototype.hasOwnProperty.call(src,key)){const srcElement=src[key];if(typeof srcElement!=="object"){if(srcElement!==void 0){target[key]=srcElement;if(cloneTarget){cloneTarget[key]=srcElement}}continue}if(srcElement instanceof Date){target[key]=srcElement;if(cloneTarget){cloneTarget[key]=srcElement}continue}const targetElement=target[key];if(isObject(targetElement)){if(cloneTarget){const cloneTargetElement=cloneTarget[key];if(cloneTargetElement){mergeProperties(srcElement,cloneTargetElement,path+".$"+key,visited,merged)}}mergeProperties(srcElement,targetElement,path+"."+key,visited,merged);continue}target[key]=targetElement;if(cloneTarget&&targetElement!==void 0){cloneTarget[key]=targetElement}}}}_export("default",mergeProperties);return{setters:[function(_modelsCloneSource){cloneSource=_modelsCloneSource.default}],execute:function(){isObject=o=>typeof o==="object"&&o!==null&&!(o instanceof Date)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/mergeProperties");System.register([],(function(_export,_context){"use strict";var StringHelper;_export("default",void 0);return{setters:[],execute:function(){_export("default",StringHelper=class StringHelper{static findParameter(f){let text=f.toString();let i=text.indexOf("=>");if(i!==-1){text=text.substring(0,i)}i=text.indexOf("(");if(i===-1){return text}text=text.substring(i+1);i=text.indexOf(")");return text.substring(0,i)}static contains(left,right){if(!left){return!right}return left.toLowerCase().includes(right.toLowerCase())}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/StringHelper");System.register(["tslib","./StringHelper"],(function(_export,_context){"use strict";var __awaiter,StringHelper,QueryComposer,Query,replacer,convertToLinq;function append(original,...item){if(original){return[...original,...item]}return[...item]}_export({append,QueryComposer:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_StringHelper){StringHelper=_StringHelper.default}],execute:function(){replacer=/(===)|(!==)|(\(\s*\{)|(\.[a-zA-Z0-9]+)|([a-zA-Z0-9]+\s*\:\s*\{?)/g;_export("convertToLinq",convertToLinq=x=>{x=x.replace(/(\s+)|((CastAs|EF)\_[0-9]\.default\.)/g,((s,first,second)=>{if(s===first){return" "}if(s.startsWith("EF")){return"EF."}if(s.startsWith("CastAs")){return"CastAs."}return s}));replacer.lastIndex=0;x=x.replace(replacer,(s=>{switch(s){case"===":return"==";case"!==":return"!=";case"({":return"( new {";case".some":return".Any";case".map":return".Select";case".filter":return".Where";case".find":return".FirstOrDefault";case".includes":return".Contains"}if(s.endsWith("{")){const index=s.indexOf(":");const v=s.substring(0,index)+" = new {";return v}const trimmed=s.trim();if(trimmed.endsWith(":")){return trimmed.substring(0,trimmed.length-1)+" = "}if(s.startsWith(".")&&s.length>2){return s[0]+s[1].toUpperCase()+s.substring(2)}return s}));return x});_export("QueryComposer",QueryComposer=class QueryComposer{constructor(separator=" || "){this.separator=separator;this.query="p => x => ";this.parameters={};this.index=0}add(p,q){if(this.index){this.query+=this.separator}const suffix=`_${this.index++}`;let text=q.toString();const pfn=StringHelper.findParameter(text).trim();text=text.substring(text.indexOf("=>")+2);const xfn=StringHelper.findParameter(text).trim();const target=this.parameters;for(const key in p){if(Object.prototype.hasOwnProperty.call(p,key)){const element=p[key];const name=`${key}${suffix}`;target[name]=element;text=text.split(`${pfn}.${key}`).join(`p.${name}`);text=text.split(`${xfn}.`).join(`x.`)}}text=text.substring(text.indexOf("=>")+2);this.query+=text}asQuery(){return[this.parameters,this.query]}});_export("default",Query=class Query{constructor(context,methods=[]){this.context=context;this.methods=methods;if(!methods){throw new Error("Methods cannot be empty")}}where(tOrP,q){return this.process("where",tOrP,q)}joinDateRange(start,end,step){return this.append(["joinDateRange","@0,@1,@2",start,end,step])}selectWith(model,tOrP,q){const nq=this.append(["selectWith",model.name]);return nq.process("select",tOrP,q)}select(tOrP,q){return this.process("select",tOrP,q)}whereLinq(query,...args){let filters="";const params=[];for(let index=0;index<args.length;index++){const element=args[index];const raw=query.raw[index];if(raw){filters+=raw}const pi=`@${index}`;filters+=pi;params.push(element)}const last=query.raw[args.length];if(last){filters+=last}return this.append(["where",filters,...params])}selectLinq(query,...args){let filters="";const params=[];for(let index=0;index<args.length;index++){const element=args[index];const raw=query.raw[index];if(raw){filters+=raw}const pi=`@${index}`;filters+=pi;params.push(element)}const last=query.raw[args.length];if(last){filters+=last}return this.append(["select",filters,...params])}join(model,left,right){return this.append(["join",model.name,this.convertToLinq(left.toString()),this.convertToLinq(right.toString())])}leftJoin(model,left,right){return this.append(["leftJoin",model.name,this.convertToLinq(left.toString()),this.convertToLinq(right.toString())])}include(tOrP,...q){if(typeof tOrP==="string"){return this.append(["include",tOrP],...q.map((s=>["include",s])))}const select=this.convertToLinq(tOrP.toString());return this.append(["include",select])}firstOrDefault(p={}){return __awaiter(this,void 0,void 0,(function*(){const lp=p;lp.size=1;lp.start=0;lp.count=false;const list=yield this.toPagedList(lp);return list.items[0]}))}orderBy(tOrP,q){return this.process("orderBy",tOrP,q)}orderByDescending(tOrP,q){return this.process("orderByDescending",tOrP,q)}thenBy(tOrP,q){return this.process("thenBy",tOrP,q)}thenByDescending(tOrP,q){return this.process("thenByDescending",tOrP,q)}trace(){this.context.traceQuery=true;return this}toArray({cancelToken,doNotResolve,hideActivityIndicator,cacheSeconds,cacheVersion}={}){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.toPagedList({size:-1,count:false,cacheSeconds,cancelToken,doNotResolve,hideActivityIndicator,cacheVersion});return r.items}))}toPagedList({start=0,size=100,cancelToken,cacheVersion="1",hideActivityIndicator,splitInclude=false,cacheSeconds=0,cacheImmutable=cacheSeconds>0,count=true}={}){let url;const{traceQuery,name,service,queryFunction,args}=this.context;const trace=traceQuery;const methods=JSON.stringify(this.methods);const fm=new URLSearchParams;fm.append("methods",methods);if(start){fm.append("start",start.toString())}if(size){fm.append("size",size.toString())}fm.append("count",count.toString());if(trace){fm.append("trace",trace?"true":"false")}if(queryFunction){fm.append("function",queryFunction);fm.append("args",JSON.stringify(args!==null&&args!==void 0?args:"[]"))}const encodedMethods=fm.toString();if(encodedMethods.length>1824){if(cacheSeconds>0){throw new Error("Generated query too big for caching")}url=`${service.url}methods/${name}`;return service.postJson({url,cancelToken,body:{methods:this.methods,start,size,split:splitInclude,count,trace,function:queryFunction||void 0,args:queryFunction?args:void 0}})}if(cacheSeconds>0){fm.append("cache",cacheSeconds.toString());fm.append("cv",cacheVersion);if(!cacheImmutable){fm.append("cacheImmutable","false")}}else{}url=`${service.url}query/${name}?${fm.toString()}`;return service.getJson({url,cancelToken,hideActivityIndicator})}thenInclude(a){const select=this.convertToLinq(a.toString());return this.append(["thenInclude",select])}append(...methods){return new Query(this.context,[...this.methods,...methods])}process(name,tOrP,q){if(!q){const select=this.convertToLinq(tOrP.toString());return this.append([name,select])}const pl=[];let i=0;const p=tOrP;let text=q(p).toString();const pfn=StringHelper.findParameter(q.toString()).trim();for(const key in p){if(Object.prototype.hasOwnProperty.call(p,key)){const element=p[key];const pn=`@${i++}`;text=text.split(`${pfn}.${key}`).join(pn);pl.push(element)}}text=this.convertToLinq(text);return this.append([name,text,...pl])}convertToLinq(text){if(this.context.queryProcessor==="DotNet"){return convertToLinq(text)}return text.replace(/\s+/g," ")}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/Query");System.register(["@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var DateTime,dateFormatISORegEx;function resolve(target){const cache=[];function map(t){if(typeof t!=="object"){return t}if(Array.isArray(t)){return t.map(map)}const{$id,$ref}=t;if($ref){t=cache[$ref];return t}if($id){t.$deleted=false;cache[$id]=t}for(const key in t){if(Object.prototype.hasOwnProperty.call(t,key)){let element=t[key];switch(typeof element){case"object":if(!element){continue}element=map(element);t[key]=element;continue;case"string":if(dateFormatISORegEx.test(element)){t[key]=new DateTime(element)}}}}return t}target=map(target);return target}_export("default",resolve);return{setters:[function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){_export("dateFormatISORegEx",dateFormatISORegEx=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/resolve");System.register(["tslib","../models/Cloner","../models/IEntityModel","./HttpSession","./mergeProperties","./Query","./resolve"],(function(_export,_context){"use strict";var __awaiter,Cloner,EntityContext,HttpSession,mergeProperties,Query,resolve,DefaultFactory,Model,BaseEntityService,ArrayPrototype;_export({DefaultFactory:void 0,Model:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_modelsCloner){Cloner=_modelsCloner.Cloner},function(_modelsIEntityModel){EntityContext=_modelsIEntityModel.EntityContext},function(_HttpSession){HttpSession=_HttpSession.default},function(_mergeProperties){mergeProperties=_mergeProperties.default},function(_Query){Query=_Query.default},function(_resolve){resolve=_resolve.default}],execute:function(){ArrayPrototype=Array.prototype;ArrayPrototype.where=ArrayPrototype.filter;ArrayPrototype.any=ArrayPrototype.some;ArrayPrototype.select=ArrayPrototype.map;ArrayPrototype.selectMany=function(x){const r=[];for(const iterator of this){const items=x(iterator);if(Array.isArray(items)){r.push(...items)}}return r};ArrayPrototype.firstOrDefault=function(f){if(f){return ArrayPrototype.find.apply(this,arguments)}return this[0]};ArrayPrototype.sum=function(f){var _a;let n=0;for(const iterator of this){n+=(_a=f(iterator))!==null&&_a!==void 0?_a:0}return n};ArrayPrototype.average=function(f){var _a;if(this.length===0){return 0}let n=0;for(const iterator of this){n+=(_a=f(iterator))!==null&&_a!==void 0?_a:0}return n/this.length};ArrayPrototype.orderBy=function(f){return this.sort(((a,b)=>{const ak=f(a);const bk=f(b);if(typeof ak==="string"){return ak.toLowerCase().localeCompare(bk.toLowerCase())}return ak-bk}))};ArrayPrototype.thenBy=ArrayPrototype.orderBy;ArrayPrototype.orderByDescending=function(f){return this.sort(((a,b)=>{const ak=f(a);const bk=f(b);if(typeof ak==="string"){return bk.toLowerCase().localeCompare(ak.toLowerCase())}return bk-ak}))};ArrayPrototype.thenByDescending=ArrayPrototype.orderByDescending;ArrayPrototype.count=function(f){if(!f){return this.length}let length=0;for(const iterator of this){if(f(iterator)){length++}}return length};_export("DefaultFactory",DefaultFactory=class DefaultFactory{constructor(factory){this.factory=factory}});_export("Model",Model=class Model{constructor(name,keys=[],defaults=null,schema=null){this.name=name;this.keys=keys;this.schema=schema;if(defaults){this.defaults=[];for(const key in defaults){if(Object.prototype.hasOwnProperty.call(defaults,key)){const element=defaults[key];this.defaults.push([key,element])}}}}create(properties={}){properties.$type=this.name;if(this.defaults){for(const[key,value]of this.defaults){if(properties[key]===void 0){if(value instanceof DefaultFactory){properties[key]=value.factory()}else{properties[key]=value}}}}return properties}patch(original,updates){for(const iterator of this.keys){const originalKey=original[iterator];const updatedKey=updates[iterator];if(updatedKey&&updatedKey!==originalKey){throw new Error(`Cannot update ${iterator} as it is the primary key`)}updates[iterator]=originalKey}return Object.assign({$type:this.name},updates)}});_export("default",BaseEntityService=class BaseEntityService extends HttpSession{constructor(){super(...arguments);this.url="/api/entity/";this.resultConverter=resolve}cloner(item){return new Cloner(item)}model(){return __awaiter(this,void 0,void 0,(function*(){if(this.entityModel){return this.entityModel}const c=yield this.getJson({url:`${this.url}model`});this.entityModel=new EntityContext(c);return this.entityModel}))}dateRange(start,end,step){return new Query({service:this,name:"NeuroSpeech.EntityAccessControl.DateRange",traceQuery:false},[["dateRange","@0,@1,@2",start,end,step]])}query(m,queryFunction,...args){return new Query({service:this,name:m.name,queryProcessor:this.queryProcessor,queryFunction,args})}delete(body){const url=this.url;return this.deleteJson({url,body})}insert(body){const url=this.url;return this.putJson({url,body})}save(body,cloner,trace){return __awaiter(this,void 0,void 0,(function*(){if(Array.isArray(body)&&body.length===0){return body}let url=this.url;if(body instanceof Cloner){body=body.copy}if(trace){const hasQuery=url.includes("?");if(hasQuery){url=url+="&trace=true"}else{url=url+="?trace=true"}}if(cloner){if(Array.isArray(body)){body=body.map((x=>cloner(new Cloner(x)).copy))}else{const c=cloner(new Cloner(body));body=c.copy}}const result=yield this.postJson({url,body});mergeProperties(result,body);return body}))}update(e,update){return __awaiter(this,void 0,void 0,(function*(){yield this.bulkUpdate([e],update);for(const key in update){if(Object.prototype.hasOwnProperty.call(update,key)){const element=update[key];e[key]=element}}return e}))}bulkUpdate(entities,update,throwWhenNotFound=false){return __awaiter(this,void 0,void 0,(function*(){const model=yield this.model();const keys=[];for(const iterator of entities){const entityType=model.for(iterator.$type);const key={$type:iterator.$type};for(const{name}of entityType.keys){key[name]=iterator[name]}keys.push(key)}const body={keys,update,throwWhenNotFound};const url=`${this.url}bulk`;yield this.putJson({url,body})}))}bulkDelete(entities,throwWhenNotFound=false){return __awaiter(this,void 0,void 0,(function*(){const model=yield this.model();const keys=[];for(const iterator of entities){const entityType=model.for(iterator.$type);const key={$type:iterator.$type};for(const{name}of entityType.keys){key[name]=iterator[name]}keys.push(key)}const url=`${this.url}bulk`;const body={keys,throwWhenNotFound};yield this.deleteJson({url,body})}))}fetchJson(options){const _super=Object.create(null,{fetchJson:{get:()=>super.fetchJson}});return __awaiter(this,void 0,void 0,(function*(){if(!this.createBusyIndicator||(options===null||options===void 0?void 0:options.hideActivityIndicator)){return yield _super.fetchJson.call(this,options)}const disposable=this.createBusyIndicator(options);try{return yield _super.fetchJson.call(this,options)}finally{disposable===null||disposable===void 0?void 0:disposable.dispose()}}))}createBusyIndicator(options){return{dispose(){}}}});delete BaseEntityService.prototype.createBusyIndicator}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/BaseEntityService");System.register(["@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var styled,BusyProgress,css,container,stack;_export("default",void 0);return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){css=styled.css`
684
+ `.installGlobal("[data-load-more=load-more]");pagedItemsSetter=AtomControl.registerProperty("paged-items","paged-items",((control,element,value)=>{var _b,_c;if(value&&value.items){let cancelToken=control[loadMoreSet];(_b=control.footerRenderer)!==null&&_b!==void 0?_b:control.footerRenderer=()=>XNode.create("div",{"data-load-more":"load-more","data-click-event":"load-more-items"},XNode.create("span",{text:"Load more ... "}));(_c=control.headerRenderer)!==null&&_c!==void 0?_c:control.headerRenderer=()=>XNode.create("div",{class:"scroll-header","style-height":"1px","style-width":"100%"});if(!cancelToken){control[loadMoreSet]=cancelToken=new CancelToken;control.bindEvent(control.element,"loadMoreItems",(e=>{const ce=new CustomEvent("moreItems",{detail:{pagedItems:control.pagedItems,cancelToken},bubbles:false});control.element.dispatchEvent(ce)}))}else{cancelToken.cancel();control[loadMoreSet]=cancelToken=new CancelToken}const items=control.items;if(items&&Array.isArray(items)){items.clear();items.addAll(value.items)}else{control.items=value.items}const autoScroll=control.element.getAttribute("data-auto-scroll")!=="false";if(autoScroll){setTimeout((()=>{var _b;const ce=(_b=control.element)===null||_b===void 0?void 0:_b.firstElementChild;const scrollX=window.scrollX;const scrollY=window.scrollY;ce===null||ce===void 0?void 0:ce.scrollIntoView();setTimeout((()=>{window.scrollTo(scrollX,scrollY)}),100)}),100)}control.footer=value.total&&value.items&&value.items.length<value.total;control.pagedItems=value}}));scrollToBottom=({target,detail:{type,index}})=>{if(!(type==="add"&&index===0)&&type!=="reset"){return}setTimeout((()=>{const e=target.firstElementChild;console.log(e);e===null||e===void 0?void 0:e.scrollIntoView(true)}),1)};_export("default",InfiniteRepeater=class InfiniteRepeater{});_a=InfiniteRepeater;InfiniteRepeater.pagedItems=start=>{const setter=start(0);const setters=pagedItemsSetter(Bind.oneWayAsync(setter));setters["event-more-items"]=Bind.event(((s,e)=>__awaiter(void 0,void 0,void 0,(function*(){var _b,_c;const st=(_c=(_b=s.items)===null||_b===void 0?void 0:_b.length)!==null&&_c!==void 0?_c:0;if(!st){return}const cancelToken=s[loadMoreSet];const loader=start(st);const results=yield loader(s,e.target,cancelToken);s.items.addAll(results.items);s.footer=results.items.length>0}))));return setters}}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/repeater/InfiniteRepeater");System.register(["./Register","./ServiceCollection"],(function(_export,_context){"use strict";var Register,Scope;function DITransient(mockOrInject){return target=>{Register({scope:Scope.Transient,mockOrInject})(target)}}_export("default",DITransient);return{setters:[function(_Register){Register=_Register.Register},function(_ServiceCollection){Scope=_ServiceCollection.Scope}],execute:function(){}}}));AmdLoader.instance.setup("@web-atoms/core/dist/di/DITransient");System.register([],(function(_export,_context){"use strict";var cloneSource;return{setters:[],execute:function(){cloneSource=Symbol("cloneSource");_export("default",cloneSource)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/cloneSource");System.register(["./cloneSource"],(function(_export,_context){"use strict";var cloneSource,Cloner,PropertyCloner,getKey;_export({Cloner:void 0,PropertyCloner:void 0});return{setters:[function(_cloneSource){cloneSource=_cloneSource.default}],execute:function(){getKey=(target,value)=>{for(const key in target){if(Object.prototype.hasOwnProperty.call(target,key)){const element=target[key];if(element===value){return key}}}};_export("Cloner",Cloner=class Cloner{static copyProperties(src,dest={}){dest[cloneSource]=src;for(const key in src){if(Object.prototype.hasOwnProperty.call(src,key)){const element=src[key];switch(typeof element){case"bigint":case"boolean":case"number":case"string":dest[key]=element;break;case"object":if(element===null){dest[key]=null}if(element instanceof Date){dest[key]=element}break}}}return dest}get copy(){const copy=Cloner.copyProperties(this.item);if(this.path){for(const iterator of this.path){this.clone(this.item,copy,iterator)}}return copy}constructor(item,path){this.item=item;this.path=path;this.$type=item.$type}include(property){const last=[property];return new PropertyCloner(this.item,this.path?[...this.path,last]:[last],last)}clone(src,dest,paths){var _a,_b,_c;if(!paths.length){return dest}const[first,...others]=paths;let p=first(src);if(!p){return dest}const original=p;const name=getKey(src,p);if(Array.isArray(p)){const existing=(_a=dest[name])!==null&&_a!==void 0?_a:dest[name]=[];for(let index=0;index<p.length;index++){const element=p[index];const existingItem=(_b=existing[index])!==null&&_b!==void 0?_b:existing[index]={};Cloner.copyProperties(element,existingItem);this.clone(element,existingItem,others)}return existing}p=Cloner.copyProperties(p,(_c=dest[name])!==null&&_c!==void 0?_c:undefined);dest[name]=p;this.clone(original,p,others);return dest}});_export("PropertyCloner",PropertyCloner=class PropertyCloner extends Cloner{constructor(item,path,propertyPath){super(item,path);this.propertyPath=propertyPath}thenInclude(property){this.propertyPath.push(property);return new PropertyCloner(this.item,this.path,this.propertyPath)}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/Cloner");System.register([],(function(_export,_context){"use strict";var EntityContext;_export("EntityContext",void 0);return{setters:[],execute:function(){_export("EntityContext",EntityContext=class EntityContext{constructor(models){this.models=models;this.cache=[];for(const iterator of models){this.cache[iterator.name]=iterator}}for(name){return this.cache[name]}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/IEntityModel");System.register([],(function(_export,_context){"use strict";var JsonError;_export("default",void 0);return{setters:[],execute:function(){_export("default",JsonError=class JsonError extends Error{constructor(message,json){super(message);this.json=json}get errors(){var _a;return(_a=this.json.paramErrors)!==null&&_a!==void 0?_a:[]}get details(){var _a;const{errors}=this;if(errors.length){return errors.map((x=>`${x.name}: ${x.reason}`)).join("\n")}return(_a=this.json)===null||_a===void 0?void 0:_a.details}})}}}));AmdLoader.instance.setup("@web-atoms/core/dist/services/http/JsonError");System.register([],(function(_export,_context){"use strict";var Queue;_export("default",void 0);return{setters:[],execute:function(){_export("default",Queue=class Queue{constructor(){this.head=0;this.tail=0;this.store=new Map}peek(){return this.store.get(this.head)}enqueue(item){this.store.set(this.tail,item);this.tail++}dequeue(){const{head,tail}=this;const size=tail-head;if(size<=0){return void 0}const item=this.store.get(head);this.store.delete(head);this.head++;if(this.head===this.tail){this.head=0;this.tail=0}return item}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/Queue");System.register(["./Queue"],(function(_export,_context){"use strict";var Queue,TaskManager;_export("default",void 0);return{setters:[function(_Queue){Queue=_Queue.default}],execute:function(){_export("default",TaskManager=class TaskManager{constructor(){this.rateLimit=10;this.running=new Set;this.waiting=new Queue}run(fx){const pr=new Promise(((resolve,reject)=>{this.waiting.enqueue({resolve,reject,fx})}));pr.catch((error=>console.error(error)));this.processQueue();return pr}processQueue(){for(;;){if(this.running.size>=this.rateLimit){return}const t=this.waiting.dequeue();if(!t){return}const{fx,resolve,reject}=t;this.running.add(fx);fx().then((r=>{this.running.delete(fx);setTimeout((()=>this.processQueue()),1);resolve(r)}),(e=>{this.running.delete(fx);setTimeout((()=>this.processQueue()),1);reject(e)}))}}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/models/TaskManager");System.register(["tslib","@web-atoms/core/dist/services/http/JsonError","../models/TaskManager"],(function(_export,_context){"use strict";var __awaiter,JsonError,TaskManager,TextBody,HttpSession;function merge(url,extra){return url+(typeof extra==="string"?extra:combine(extra))}function combine([url,params]){let separator=url.indexOf("?")===-1?"?":"&";if(!url.endsWith("&")){url+=separator;separator=""}for(const key in params){if(params.hasOwnProperty(key)){const element=params[key];url+=separator;separator="&";url+=`${key}=${encodeURIComponent(element)}`}}return url}_export({merge,combine,TextBody:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_webAtomsCoreDistServicesHttpJsonError){JsonError=_webAtomsCoreDistServicesHttpJsonError.default},function(_modelsTaskManager){TaskManager=_modelsTaskManager.default}],execute:function(){_export("TextBody",TextBody=class TextBody{constructor(text){this.text=text}toString(){return this.text}});_export("default",HttpSession=class HttpSession extends TaskManager{constructor(){super(...arguments);this.rateLimit=10;this.resultConverter=e=>e}fetchJson(options){return this.run((()=>this.uncheckedFetchJson(options)))}uncheckedFetchJson(options){var _a,_b,_c,_d,_e,_f;return __awaiter(this,void 0,void 0,(function*(){if(options.cancelToken){const ab=new AbortController;options.signal=ab.signal;options.cancelToken.registerForCancel((()=>{ab.abort()}))}let response;if(this.interceptFetch){response=yield this.interceptFetch(options.url,options)}else{response=yield fetch(options.url,options)}const contentType=(_a=response.headers.get("Content-Type"))===null||_a===void 0?void 0:_a.toString();if(response.status>=400){if(contentType===null||contentType===void 0?void 0:contentType.includes("/json")){const error=yield response.json();throw new JsonError(typeof response==="string"?response:(_f=(_e=(_d=(_c=(_b=error.title)!==null&&_b!==void 0?_b:error.detail)!==null&&_c!==void 0?_c:error.message)!==null&&_d!==void 0?_d:error.exceptionMessage)!==null&&_e!==void 0?_e:error)!==null&&_f!==void 0?_f:"Json Server Error",error)}throw new Error(yield response.text())}if(contentType&&!contentType.includes("/json")){throw new Error(`Unable to convert to json\r\n${contentType}}`)}return this.resultConverter(yield response.json())}))}interceptFetch(input,init){throw new Error("not supported")}getJson(options){options.method="GET";return this.fetchJson(options)}postFormModel(options){var _a;options.method="POST";if(options.body){options.body=new TextBody(`formModel=${encodeURIComponent(JSON.stringify(options.body))}`)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/x-www-form-urlencoded";return this.fetchJson(options)}postJson(options){var _a;options.method="POST";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}deleteJson(options){var _a;options.method="DELETE";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}putJson(options){var _a;options.method="PUT";if(options.body){options.body=JSON.stringify(options.body)}(_a=options.headers)!==null&&_a!==void 0?_a:options.headers={};options.headers["content-type"]="application/json";return this.fetchJson(options)}});delete HttpSession.prototype.interceptFetch}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/HttpSession");System.register(["../models/cloneSource"],(function(_export,_context){"use strict";var cloneSource,isObject;function mergeProperties(src,target,path="0",visited=new Map,merged=new Map){if(visited.has(path)){return}if(merged.has(target)){return}merged.set(target,true);visited.set(path,true);if(Array.isArray(src)){for(let index=0;index<src.length;index++){const srcElement=src[index];const targetElement=target[index];if(isObject(targetElement)){mergeProperties(srcElement,targetElement,`${path}.${index}`,visited,merged);continue}target[index]=targetElement}return}const cloneTarget=target[cloneSource];for(const key in src){if(Object.prototype.hasOwnProperty.call(src,key)){const srcElement=src[key];if(typeof srcElement!=="object"){if(srcElement!==void 0){target[key]=srcElement;if(cloneTarget){cloneTarget[key]=srcElement}}continue}if(srcElement instanceof Date){target[key]=srcElement;if(cloneTarget){cloneTarget[key]=srcElement}continue}const targetElement=target[key];if(isObject(targetElement)){if(cloneTarget){const cloneTargetElement=cloneTarget[key];if(cloneTargetElement){mergeProperties(srcElement,cloneTargetElement,path+".$"+key,visited,merged)}}mergeProperties(srcElement,targetElement,path+"."+key,visited,merged);continue}target[key]=targetElement;if(cloneTarget&&targetElement!==void 0){cloneTarget[key]=targetElement}}}}_export("default",mergeProperties);return{setters:[function(_modelsCloneSource){cloneSource=_modelsCloneSource.default}],execute:function(){isObject=o=>typeof o==="object"&&o!==null&&!(o instanceof Date)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/mergeProperties");System.register([],(function(_export,_context){"use strict";var StringHelper;_export("default",void 0);return{setters:[],execute:function(){_export("default",StringHelper=class StringHelper{static findParameter(f){let text=f.toString();let i=text.indexOf("=>");if(i!==-1){text=text.substring(0,i)}i=text.indexOf("(");if(i===-1){return text}text=text.substring(i+1);i=text.indexOf(")");return text.substring(0,i)}static contains(left,right){if(!left){return!right}return left.toLowerCase().includes(right.toLowerCase())}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/StringHelper");System.register(["tslib","./StringHelper"],(function(_export,_context){"use strict";var __awaiter,StringHelper,QueryComposer,Query,replacer,convertToLinq;function append(original,...item){if(original){return[...original,...item]}return[...item]}_export({append,QueryComposer:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_StringHelper){StringHelper=_StringHelper.default}],execute:function(){replacer=/(===)|(!==)|(\(\s*\{)|(\.[a-zA-Z0-9]+)|([a-zA-Z0-9]+\s*\:\s*\{?)/g;_export("convertToLinq",convertToLinq=x=>{x=x.replace(/(\s+)|((CastAs|EF)\_[0-9]\.default\.)/g,((s,first,second)=>{if(s===first){return" "}if(s.startsWith("EF")){return"EF."}if(s.startsWith("CastAs")){return"CastAs."}return s}));replacer.lastIndex=0;x=x.replace(replacer,(s=>{switch(s){case"===":return"==";case"!==":return"!=";case"({":return"( new {";case".some":return".Any";case".map":return".Select";case".filter":return".Where";case".find":return".FirstOrDefault";case".includes":return".Contains"}if(s.endsWith("{")){const index=s.indexOf(":");const v=s.substring(0,index)+" = new {";return v}const trimmed=s.trim();if(trimmed.endsWith(":")){return trimmed.substring(0,trimmed.length-1)+" = "}if(s.startsWith(".")&&s.length>2){return s[0]+s[1].toUpperCase()+s.substring(2)}return s}));return x});_export("QueryComposer",QueryComposer=class QueryComposer{constructor(separator=" || "){this.separator=separator;this.query="p => x => ";this.parameters={};this.index=0}add(p,q){if(this.index){this.query+=this.separator}const suffix=`_${this.index++}`;let text=q.toString();const pfn=StringHelper.findParameter(text).trim();text=text.substring(text.indexOf("=>")+2);const xfn=StringHelper.findParameter(text).trim();const target=this.parameters;for(const key in p){if(Object.prototype.hasOwnProperty.call(p,key)){const element=p[key];const name=`${key}${suffix}`;target[name]=element;text=text.split(`${pfn}.${key}`).join(`p.${name}`);text=text.split(`${xfn}.`).join(`x.`)}}text=text.substring(text.indexOf("=>")+2);this.query+=text}asQuery(){return[this.parameters,this.query]}});_export("default",Query=class Query{constructor(context,methods=[]){this.context=context;this.methods=methods;if(!methods){throw new Error("Methods cannot be empty")}}where(tOrP,q){return this.process("where",tOrP,q)}joinDateRange(start,end,step){return this.append(["joinDateRange","@0,@1,@2",start,end,step])}selectWith(model,tOrP,q){const nq=this.append(["selectWith",model.name]);return nq.process("select",tOrP,q)}select(tOrP,q){return this.process("select",tOrP,q)}whereLinq(query,...args){let filters="";const params=[];for(let index=0;index<args.length;index++){const element=args[index];const raw=query.raw[index];if(raw){filters+=raw}const pi=`@${index}`;filters+=pi;params.push(element)}const last=query.raw[args.length];if(last){filters+=last}return this.append(["where",filters,...params])}selectLinq(query,...args){let filters="";const params=[];for(let index=0;index<args.length;index++){const element=args[index];const raw=query.raw[index];if(raw){filters+=raw}const pi=`@${index}`;filters+=pi;params.push(element)}const last=query.raw[args.length];if(last){filters+=last}return this.append(["select",filters,...params])}join(model,left,right){return this.append(["join",model.name,this.convertToLinq(left.toString()),this.convertToLinq(right.toString())])}leftJoin(model,left,right){return this.append(["leftJoin",model.name,this.convertToLinq(left.toString()),this.convertToLinq(right.toString())])}include(tOrP,...q){if(typeof tOrP==="string"){return this.append(["include",tOrP],...q.map((s=>["include",s])))}const select=this.convertToLinq(tOrP.toString());return this.append(["include",select])}firstOrDefault(p={}){return __awaiter(this,void 0,void 0,(function*(){const lp=p;lp.size=1;lp.start=0;lp.count=false;const list=yield this.toPagedList(lp);return list.items[0]}))}orderBy(tOrP,q){return this.process("orderBy",tOrP,q)}orderByDescending(tOrP,q){return this.process("orderByDescending",tOrP,q)}thenBy(tOrP,q){return this.process("thenBy",tOrP,q)}thenByDescending(tOrP,q){return this.process("thenByDescending",tOrP,q)}trace(){this.context.traceQuery=true;return this}toArray({cancelToken,doNotResolve,hideActivityIndicator,cacheSeconds,cacheVersion}={}){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.toPagedList({size:-1,count:false,cacheSeconds,cancelToken,doNotResolve,hideActivityIndicator,cacheVersion});return r.items}))}toPagedList({start=0,size=100,cancelToken,cacheVersion="1",hideActivityIndicator,splitInclude=false,cacheSeconds=0,cacheImmutable=cacheSeconds>0,count=true}={}){let url;const{traceQuery,name,service,queryFunction,args}=this.context;const trace=traceQuery;const methods=JSON.stringify(this.methods);const fm=new URLSearchParams;fm.append("methods",methods);if(start){fm.append("start",start.toString())}if(size){fm.append("size",size.toString())}fm.append("count",count.toString());if(trace){fm.append("trace",trace?"true":"false")}if(queryFunction){fm.append("function",queryFunction);fm.append("args",JSON.stringify(args!==null&&args!==void 0?args:"[]"))}const encodedMethods=fm.toString();if(encodedMethods.length>1824){if(cacheSeconds>0){throw new Error("Generated query too big for caching")}url=`${service.url}methods/${name}`;return service.postJson({url,cancelToken,body:{methods:this.methods,start,size,split:splitInclude,count,trace,function:queryFunction||void 0,args:queryFunction?args:void 0}})}if(cacheSeconds>0){fm.append("cache",cacheSeconds.toString());fm.append("cv",cacheVersion);if(!cacheImmutable){fm.append("cacheImmutable","false")}}else{}url=`${service.url}query/${name}?${fm.toString()}`;return service.getJson({url,cancelToken,hideActivityIndicator})}thenInclude(a){const select=this.convertToLinq(a.toString());return this.append(["thenInclude",select])}append(...methods){return new Query(this.context,[...this.methods,...methods])}process(name,tOrP,q){if(!q){const select=this.convertToLinq(tOrP.toString());return this.append([name,select])}const pl=[];let i=0;const p=tOrP;let text=q(p).toString();const pfn=StringHelper.findParameter(q.toString()).trim();for(const key in p){if(Object.prototype.hasOwnProperty.call(p,key)){const element=p[key];const pn=`@${i++}`;text=text.split(`${pfn}.${key}`).join(pn);pl.push(element)}}text=this.convertToLinq(text);return this.append([name,text,...pl])}convertToLinq(text){if(this.context.queryProcessor==="DotNet"){return convertToLinq(text)}return text.replace(/\s+/g," ")}})}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/Query");System.register(["@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var DateTime,dateFormatISORegEx;function resolve(target){const cache=[];function map(t){if(typeof t!=="object"){return t}if(Array.isArray(t)){return t.map(map)}const{$id,$ref}=t;if($ref){t=cache[$ref];return t}if($id){t.$deleted=false;cache[$id]=t}for(const key in t){if(Object.prototype.hasOwnProperty.call(t,key)){let element=t[key];switch(typeof element){case"object":if(!element){continue}element=map(element);t[key]=element;continue;case"string":if(dateFormatISORegEx.test(element)){t[key]=new DateTime(element)}}}}return t}target=map(target);return target}_export("default",resolve);return{setters:[function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){_export("dateFormatISORegEx",dateFormatISORegEx=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/)}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/resolve");System.register(["tslib","../models/Cloner","../models/IEntityModel","./HttpSession","./mergeProperties","./Query","./resolve"],(function(_export,_context){"use strict";var __awaiter,Cloner,EntityContext,HttpSession,mergeProperties,Query,resolve,DefaultFactory,Model,BaseEntityService,ArrayPrototype;_export({DefaultFactory:void 0,Model:void 0,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_modelsCloner){Cloner=_modelsCloner.Cloner},function(_modelsIEntityModel){EntityContext=_modelsIEntityModel.EntityContext},function(_HttpSession){HttpSession=_HttpSession.default},function(_mergeProperties){mergeProperties=_mergeProperties.default},function(_Query){Query=_Query.default},function(_resolve){resolve=_resolve.default}],execute:function(){ArrayPrototype=Array.prototype;ArrayPrototype.where=ArrayPrototype.filter;ArrayPrototype.any=ArrayPrototype.some;ArrayPrototype.select=ArrayPrototype.map;ArrayPrototype.selectMany=function(x){const r=[];for(const iterator of this){const items=x(iterator);if(Array.isArray(items)){r.push(...items)}}return r};ArrayPrototype.firstOrDefault=function(f){if(f){return ArrayPrototype.find.apply(this,arguments)}return this[0]};ArrayPrototype.sum=function(f){var _a;let n=0;for(const iterator of this){n+=(_a=f(iterator))!==null&&_a!==void 0?_a:0}return n};ArrayPrototype.average=function(f){var _a;if(this.length===0){return 0}let n=0;for(const iterator of this){n+=(_a=f(iterator))!==null&&_a!==void 0?_a:0}return n/this.length};ArrayPrototype.orderBy=function(f){return this.sort(((a,b)=>{const ak=f(a);const bk=f(b);if(typeof ak==="string"){return ak.toLowerCase().localeCompare(bk.toLowerCase())}return ak-bk}))};ArrayPrototype.thenBy=ArrayPrototype.orderBy;ArrayPrototype.orderByDescending=function(f){return this.sort(((a,b)=>{const ak=f(a);const bk=f(b);if(typeof ak==="string"){return bk.toLowerCase().localeCompare(ak.toLowerCase())}return bk-ak}))};ArrayPrototype.thenByDescending=ArrayPrototype.orderByDescending;ArrayPrototype.count=function(f){if(!f){return this.length}let length=0;for(const iterator of this){if(f(iterator)){length++}}return length};_export("DefaultFactory",DefaultFactory=class DefaultFactory{constructor(factory){this.factory=factory}});_export("Model",Model=class Model{constructor(name,keys=[],defaults=null,schema=null){this.name=name;this.keys=keys;this.schema=schema;if(defaults){this.defaults=[];for(const key in defaults){if(Object.prototype.hasOwnProperty.call(defaults,key)){const element=defaults[key];this.defaults.push([key,element])}}}}create(properties={}){properties.$type=this.name;if(this.defaults){for(const[key,value]of this.defaults){if(properties[key]===void 0){if(value instanceof DefaultFactory){properties[key]=value.factory()}else{properties[key]=value}}}}return properties}patch(original,updates){for(const iterator of this.keys){const originalKey=original[iterator];const updatedKey=updates[iterator];if(updatedKey&&updatedKey!==originalKey){throw new Error(`Cannot update ${iterator} as it is the primary key`)}updates[iterator]=originalKey}return Object.assign({$type:this.name},updates)}});_export("default",BaseEntityService=class BaseEntityService extends HttpSession{constructor(){super(...arguments);this.url="/api/entity/";this.resultConverter=resolve}cloner(item){return new Cloner(item)}model(){return __awaiter(this,void 0,void 0,(function*(){if(this.entityModel){return this.entityModel}const c=yield this.getJson({url:`${this.url}model`});this.entityModel=new EntityContext(c);return this.entityModel}))}dateRange(start,end,step){return new Query({service:this,name:"NeuroSpeech.EntityAccessControl.DateRange",traceQuery:false},[["dateRange","@0,@1,@2",start,end,step]])}query(m,queryFunction,...args){return new Query({service:this,name:m.name,queryProcessor:this.queryProcessor,queryFunction,args})}delete(body){const url=this.url;return this.deleteJson({url,body})}insert(body){const url=this.url;return this.putJson({url,body})}save(body,cloner,trace){return __awaiter(this,void 0,void 0,(function*(){if(Array.isArray(body)&&body.length===0){return body}let url=this.url;if(body instanceof Cloner){body=body.copy}if(trace){const hasQuery=url.includes("?");if(hasQuery){url=url+="&trace=true"}else{url=url+="?trace=true"}}if(cloner){if(Array.isArray(body)){body=body.map((x=>cloner(new Cloner(x)).copy))}else{const c=cloner(new Cloner(body));body=c.copy}}const result=yield this.postJson({url,body});mergeProperties(result,body);return body}))}update(e,update){return __awaiter(this,void 0,void 0,(function*(){yield this.bulkUpdate([e],update);for(const key in update){if(Object.prototype.hasOwnProperty.call(update,key)){const element=update[key];e[key]=element}}return e}))}bulkUpdate(entities,update,throwWhenNotFound=false){return __awaiter(this,void 0,void 0,(function*(){const model=yield this.model();const keys=[];for(const iterator of entities){const entityType=model.for(iterator.$type);const key={$type:iterator.$type};for(const{name}of entityType.keys){key[name]=iterator[name]}keys.push(key)}const body={keys,update,throwWhenNotFound};const url=`${this.url}bulk`;yield this.putJson({url,body})}))}bulkDelete(entities,throwWhenNotFound=false){return __awaiter(this,void 0,void 0,(function*(){const model=yield this.model();const keys=[];for(const iterator of entities){const entityType=model.for(iterator.$type);const key={$type:iterator.$type};for(const{name}of entityType.keys){key[name]=iterator[name]}keys.push(key)}const url=`${this.url}bulk`;const body={keys,throwWhenNotFound};yield this.deleteJson({url,body})}))}fetchJson(options){const _super=Object.create(null,{fetchJson:{get:()=>super.fetchJson}});return __awaiter(this,void 0,void 0,(function*(){if(!this.createBusyIndicator||(options===null||options===void 0?void 0:options.hideActivityIndicator)){return yield _super.fetchJson.call(this,options)}const disposable=this.createBusyIndicator(options);try{return yield _super.fetchJson.call(this,options)}finally{disposable===null||disposable===void 0?void 0:disposable.dispose()}}))}createBusyIndicator(options){return{dispose(){}}}});delete BaseEntityService.prototype.createBusyIndicator}}}));AmdLoader.instance.setup("@web-atoms/entity/dist/services/BaseEntityService");System.register(["@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var styled,BusyProgress,css,container,stack;_export("default",void 0);return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){css=styled.css`
685
685
 
686
686
  position: absolute;
687
687
  left: 0;