@olenbetong/appframe-core 2.15.2 → 2.16.0

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.
@@ -1,5 +1,5 @@
1
- this.af=this.af||{},this.af.common=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return{all:e||=/* @__PURE__ */ new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}var n=class{eventHandler=t();authenticated(){this.eventHandler.emit(`onAuthenticated`)}async expired(e,t){try{let n=new Promise(t=>{let n=()=>{this.eventHandler.off(`onAuthenticated`,n),e?.(),t()};this.eventHandler.on(`onAuthenticated`,n)}),r=document.querySelector(`dialog.session-expired-dialog`);if(r)await n;else{r=document.createElement(`dialog`),r.className=`session-expired-dialog`,r.style.display=`flex`,r.style.padding=`0`,r.style.left=`50%`,r.style.transform=`translateX(-50%)`;let e=`/login?ReturnUrl=%2fapi/sessionexpired/remove`;t===`RequireTwoFactor`?e=`/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove`:await fetch(`/logout`,{method:`POST`}),r.innerHTML=`<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="${e}" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>`,document.body.append(r),r.showModal(),await n,r.remove()}}catch{window.location.href=`/login?ReturnUrl=${encodeURIComponent(window.location.pathname)}${encodeURIComponent(window.location.search)}`}}attachEvent(e,t){return this.eventHandler.on(e,t)}detachEvent(e,t){return this.eventHandler.off(e,t)}},r=class extends n{amDesignator=`a.m.`;dayNames=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`];dayNamesShort=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`];decimalSeparator=`.`;domain=`OB`;email;formats;groupSeparator=null;integratedSecurity=!1;isDeveloper=!1;login=``;loginType;monthNames=[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``];monthNamesShort=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``];name;pmDesignator=`p.m.`;shortDateFormat=`dd.MM.yyyy`;culture=`en-GB`;uiculture=`en-GB`;constructor(e){super(),this.formats={},Object.assign(this,e)}};let i=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function a(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:i,timeElapsed:n,action:e,parameters:{...t,_session:g()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!r.ok){if(r.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await r.json();console.error(e.error)}else console.error(`${r.status} ${r.statusText}`)}}catch{}}function o(e,t={}){let n=performance.now();return(r={})=>a(e,{...t,...r},performance.now()-n)}async function s(e){let t=performance.now();return[await e(),performance.now()-t]}async function c(e){try{if(!e)return;let t=typeof e==`string`?{error:e}:typeof e==`object`?`message`in e?{error:e.message,stack:e.stack??null}:{error:e.toString()}:{error:`Unspecified error`};console.error(e);let n=await fetch(`/data/Logger/LogError`,{method:`POST`,body:JSON.stringify(t),headers:{"Content-Type":`application/json; charset=utf-8`}});if(n.ok)return await n.json();console.error(Error(`Failed to log error`))}catch{}}function l(){return crypto.randomUUID?.()}function u(e,t){let n=RegExp(`/lib/@olenbetong/${e}/([^/]+)/`);for(let e of t){let t=typeof e==`string`?n.exec(e):null;if(t)return t[1]}}function d(){let e={};try{let t=document.querySelector(`script[type="importmap"]`),n=t?u(`synergi-platform`,Object.values(JSON.parse(t.textContent??`{}`).imports??{})):void 0;n&&(e[`synergi-platform`]=n)}catch{}let t=u(`synergi-chrome`,Array.from(document.scripts,e=>e.src))??window.ob?.chrome?.version;return t&&(e[`synergi-chrome`]=t),e}let f=Date.now(),p=l(),m=``,h=``;if(`document`in window){let e=()=>a(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version,...d()});document.addEventListener(`DOMContentLoaded`,()=>{m=localStorage.getItem(`_afDeviceId`),h=sessionStorage.getItem(`_afSessionId`),m||(m=l(),localStorage.setItem(`_afDeviceId`,m)),h||(h=p,sessionStorage.setItem(`_afSessionId`,h)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:i,action:`AfSessionEnd`,parameters:{_session:g()}})):e()})}function g(){return{browserSessionId:h,sessionStart:f,sessionLength:Date.now()-f,sessionId:p,deviceId:m}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?c(e.error):typeof e==`object`&&`message`in e&&c(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{isPersisted=()=>!0;getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):ee(e)}get(e,t,n){let r=this.getLocalStorageKey(e,n),i=localStorage.getItem(r);return i===null?t:JSON.parse(i)}set(e,t,n){localStorage.setItem(this.getLocalStorageKey(e,n),JSON.stringify(t))}remove(e,t){let n=this.getLocalStorageKey(e,t);return localStorage.getItem(n)!==null&&(localStorage.removeItem(n),!0)}clear(){let e=ee(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function ne(e){return e?re(e).substring(0,10):null}function _(e,t=2){return String(e).padStart(t,`0`)}function re(e){return e?`${e.getFullYear()}-${_(e.getMonth()+1)}-${_(e.getDate())}T${_(e.getHours())}:${_(e.getMinutes())}:${_(e.getSeconds())}.${_(e.getMilliseconds(),3)}`:null}function ie(e){return e?e.toISOString().substring(0,16):``}function ae(e,t){return new Promise((n,r)=>{try{let r=URL.createObjectURL(e),i=document.body,a=document.createElement(`a`);a.setAttribute(`download`,t),a.href=r,i.append(a),a.click(),i.removeChild(a),setTimeout(()=>{URL.revokeObjectURL(r),n()},250)}catch(e){r(e)}})}function v(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function oe(e,{fileName:t,signal:n,onProgress:r}){let i=0;r?.({status:`requested`});try{let n=await fetch(e);if(!n.ok||!n.body){if(n.headers.get(`content-type`)?.includes(`application/json`)){let e=await n.json();v(!e.error,e.error)}throw Error(`${n.status} ${n.statusText}`)}try{let e=n.body.getReader(),t=new ReadableStream({start:t=>{function n(){return e.read().then(e=>{if(e.done){t.close();return}return i+=e.value.length,r?.({bytesReceived:i,status:`downloading`}),t.enqueue(e.value),n()})}return n()}});n=new Response(t)}catch{}let a=await n.blob();r?.({bytesReceived:i,status:`downloaded`}),await ae(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}let se=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/,ce=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,le=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,y=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=y(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=y(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return v(i,`Unable to parse function!`),{name:e.name??i[1],args:y(i[2]),body:i[3]}}function de(){}de.prototype=Object.create(null);function fe(e,t){if(typeof e==`object`){if(typeof t==`string`)return fe(e,t.split(`.`));if(Array.isArray(t)){let n=e;for(let e=0;e<t.length;e++)n=n[t[e]]=n[t[e]]||new de;return n}}}function pe(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=ue(n);v(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),pe(e,n)}else{let r,i;if(typeof t==`function`&&(r=ue(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=fe(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:v(!1,`Invalid typeof parameter 'name', or unable to parse pValue!`);Object.hasOwn(i,r)&&n?.overwrite!==!0?console.warn(`${[e,r].join(`.`)} is already defined!`):i[r]=t}}async function me(e,t){try{let n=await fetch(`/api/user/localize/new/${encodeURIComponent(t)}`,{body:JSON.stringify({text:e}),headers:{Accept:`application/json; */*`,"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`});if(n.ok)return await n.json()}catch{}return e}function he(e){let t=window.af;if(!t)return;if(e){let n=t.i18n?.[e];if(n)return{dictionary:n,harvestAs:e}}let n=t.article;if(n?.i18n)return{dictionary:n.i18n,harvestAs:n.id}}function b(e,t){if(typeof e==`string`&&e.trim().length===0)return e;if(e===void 0||e===``||e===null)return;let{project:n,wait:r}=typeof t==`object`?t:{wait:t},i=he(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=me(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function ge(e){function t(t,n){return b(t,{project:e,wait:n})}function n(e,...n){let r=t(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return n.forEach((e,t)=>{r=r.replace(`$${t}`,String(e))}),r}return{project:e,getLocalizedString:t,localize:n}}let _e=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ve=[`between`,`notbetween`,`datebetween`,`datenotbetween`],ye=[`inlist`,`notinlist`];function x(e){return _e.includes(e)?`none`:ve.includes(e)?`pair`:ye.includes(e)?`list`:`single`}let be={equals:`Equal to`,notequals:`Not equal to`,greaterthan:`Greater than`,greaterthanorequal:`Greater than or equal to`,lessthan:`Less than`,lessthanorequal:`Less than or equal to`,beginswith:`Begins with`,notbeginswith:`Does not begin with`,endswith:`Ends with`,notendswith:`Does not end with`,contains:`Contains`,notcontains:`Does not contain`,like:`Like`,notlike:`Not like`,isnull:`Is null`,isnotnull:`Is not null`,isblank:`Is empty`,isnotblank:`Is not empty`,istrue:`Is true`,isfalse:`Is false`,inlist:`In list`,notinlist:`Not in list`,between:`Between`,notbetween:`Not between`,dateequals:`Equal to`,notdatequals:`Not equal to`,dategreaterthan:`After`,dategreaterthanorequal:`On or after`,datelessthan:`Before`,datelessthanorequal:`Up to`,datebetween:`Between`,datenotbetween:`Not between`},xe={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function Se(e,t){return b((t===`date`||t===`datetime`?xe[e]:void 0)??be[e]??e)}let S=[`equals`,`notequals`],C=[`inlist`,`notinlist`],w=[`between`,`notbetween`],T=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],Ce=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],we={date:[...S,...C,...w,...T],datetime:[...S,...C,...w,...T],number:[...S,...C,...w,...T],boolean:[`istrue`,`isfalse`],string:[...S,...Ce,...C,...w,...T],uniqueidentifier:[...S,...Ce,...C,...w,...T]},Te={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function Ee(e){let t=[...we[e.type]??we.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function De(e){return Te[e.type]??`equals`}function E(e,t){if(x(t)===`none`)return`null`;switch(e.type){case`number`:return`number`;case`boolean`:return`boolean`;case`date`:case`datetime`:return`datetime`;case`uniqueidentifier`:return`uniqueidentifier`;default:return`string`}}let Oe=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],ke={CurrentUser:`Current user`,Yesterday:`Yesterday`,Today:`Today`,Tomorrow:`Tomorrow`,ThisWeek:`This week`,ThisMonth:`This month`,ThisYear:`This year`,LastWeek:`Last week`,LastMonth:`Last month`,LastYear:`Last year`,NextWeek:`Next week`,NextMonth:`Next month`,NextYear:`Next year`,UserYesterday:`Yesterday`,UserToday:`Today`,UserTomorrow:`Tomorrow`,UserThisWeek:`This week`,UserThisMonth:`This month`,UserThisYear:`This year`,UserLastWeek:`Last week`,UserLastMonth:`Last month`,UserLastYear:`Last year`,UserNextWeek:`Next week`,UserNextMonth:`Next month`,UserNextYear:`Next year`};function Ae(e){return b(ke[e]??e)}function je(e){return e.type===`date`||e.type===`datetime`?[...Oe]:e.type===`string`?[`CurrentUser`]:[]}let Me={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function D(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Me[t]??t}function O(){return k(`and`)}function k(e=`and`){return{type:`group`,mode:e,items:[]}}function A(e){return e.type===`group`}function j(e){return e.type===`expression`}function Ne(e){return e?j(e)?{type:`group`,mode:`and`,items:[e]}:e:O()}function Pe(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return A(t)&&t.mode===`and`?t:e}function Fe(e){return M(e)===0}function M(e){return e?j(e)?1:e.items.reduce((e,t)=>e+M(t),0):0}function Ie(e){if(!e)return null;if(j(e))return N(e)?{type:`group`,mode:`and`,items:[e]}:null;let t=e.items.map(e=>A(e)?Ie(e):N(e)?e:null).filter(e=>e!==null);return t.length===0?null:{...e,items:t}}function N(e){if(A(e))return e.items.some(N);if(!e.column||!e.operator)return!1;let t=x(D(e.operator));return t===`none`?!0:e.value===null||e.value===void 0||e.value===``?!1:t===`pair`?Array.isArray(e.value)&&e.value.length===2&&e.value.every(e=>e!==``&&e!=null):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function Le(e,t){let n=t??De(e);return{type:`expression`,column:e.name,operator:n,value:Re(n),valueType:E(e,n)}}function Re(e){switch(x(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function ze(e,t,n){let r=x(D(e.operator)),i=x(t),a=e.value;i!==r&&(a=Re(t));let o=e.valueType===`special`&&i===r?`special`:E(n,t);return{...e,operator:t,value:a,valueType:o}}function Be(e,t){let n=e;for(let e of t){if(!n||!A(n))return null;n=n.items[e]}return n??null}function P(e,t,n){if(t.length===0)return n(e)??e;if(!A(e))return e;let[r,...i]=t,a=e.items[r];if(!a)return e;let o=[...e.items];if(i.length===0){let e=n(a);e===null?o.splice(r,1):o[r]=e}else o[r]=P(a,i,n);return{...e,items:o}}function Ve(e,t,n){return P(e,t,e=>A(e)?{...e,items:[...e.items,n]}:e)}function He(e,t){return t.length===0?O():P(e,t,()=>null)}function Ue(e,t,n){return P(e,t,e=>A(e)?{...e,mode:n}:e)}function We(e,t=[]){let n=Be(e,t);return Ve(e,t,k(n&&A(n)&&n.mode===`and`?`or`:`and`))}async function Ge(e,t){let n=await fetch(`/api/filter/convert`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t});if(!n.ok)throw Error(`Failed to convert filter: ${n.status} ${n.statusText}`);let r=await n.json();return{...r,filterObject:r.filterObject?Ne(r.filterObject):null}}function Ke(e,t={}){return e?qe(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function qe(e,t,n){if(j(e))return Je(e,t);let r=e.items.map(e=>qe(e,t,n+1)).filter(e=>e!==``);if(r.length===0)return``;if(r.length===1)return r[0];let i=e.mode===`or`?` OR `:` AND `,a=r.join(i);return n===0?a:`(${a})`}function Je(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=D(e.operator),a=Se(i,n?.type),o=x(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${Ye(e,o)}`}function Ye(e,t){let{value:n,valueType:r}=e;if(r===`special`&&typeof n==`string`)return Ae(n);if(Array.isArray(n)){let e=n.map(e=>Xe(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return Xe(n,r)}function Xe(e,t){return e==null?``:e instanceof Date?e.toISOString().slice(0,10):typeof e==`number`||typeof e==`boolean`||t===`number`||t===`boolean`?String(e):`'${String(e)}'`}let Ze=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function Qe(e){let t=e?.trim().toLowerCase();return Ze.find(e=>e===t)??`string`}function $e(e){return e===!0||e===1}function et(e){return{name:e.FieldName??``,type:Qe(e.DataType),nullable:$e(e.Nullable),excludeFromFilter:$e(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function tt(e){return e.map(et).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function nt(e){return!e||j(e)||e.mode!==`or`?!1:e.items.every(e=>A(e)&&e.mode===`and`&&e.items.every(j))}function rt(e){if(!e)return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[]}]};if(j(e))return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[e]}]};if(e.mode===`or`){let t=e.items.map(e=>{let t=[];return F(e,t),{type:`group`,mode:`and`,items:t}});return{type:`group`,mode:`or`,items:t.length>0?t:[{type:`group`,mode:`and`,items:[]}]}}let t=[];return F(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function F(e,t){if(j(e)){t.push(e);return}for(let n of e.items)F(n,t)}function it(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:at(e.AccessLevel),createdByUser:I(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:I(e.CrossDomain),isPersonallyShared:I(e.IsPersonallyShared),hideCriteria:I(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:ot(e.Created),updated:ot(e.Updated)}}function at(e){return e===`Manager`||e===`Editor`?e:`Reader`}function I(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function ot(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function st(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(it).sort((e,t)=>e.name.localeCompare(t.name))}function ct(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function lt(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function ut(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function dt(e){return e.accessLevel===`Manager`}function L(e){return e.createdByUser}let ft=L,pt=L,mt={xs:64,sm:128,md:256,lg:512,xl:void 0};function ht(e,t,n,r=`xs`){if(e&&typeof e==`object`)return ht(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=mt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function gt(e,...t){v(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=b(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}let _t={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function R(e){return e.replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,(e,t)=>t.startsWith(`#x`)||t.startsWith(`#X`)?String.fromCodePoint(Number.parseInt(t.slice(2),16)):t.startsWith(`#`)?String.fromCodePoint(Number.parseInt(t.slice(1),10)):_t[t.toLowerCase()]??e)}function z(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`)}function B(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=R(n[1]).trim();return r===``?null:r}function vt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>R(e[1]).trim())}let yt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function bt(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=B(e[1],`Name`);t&&n.push({name:t,type:yt[B(e[1],`DataType`)??``]??`string`})}return n}function V(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=B(e,`ViewName`);if(!t)return null;let n=B(e,`MaxRecords`);return{viewName:t,columns:bt(e),whereClause:B(e,`WhereClause`),filterString:B(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}let xt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],St=/^[a-z]stp_/i;function H(e){return typeof e==`string`&&St.test(e.trim())}function Ct(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function wt(e){return xt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function Tt(e,t,n){if(t)return`lookup`;if(n)return`select`;switch(e){case`Integer`:case`Double`:return`number`;case`Date`:return`date`;case`Boolean`:return`boolean`;default:return`text`}}function Et(e){let t=e.Name??``,n=wt(e.DataType),r=Ct(e.Items),i=V(e.RecordSource),a=e.ValueMember??null;i&&!a&&(a=i.columns[0]?.name??null);let o=i?.columns.find(e=>e.name!==a)?.name??null,s=!!(i&&a);return{name:t,label:e.Label?.trim()||t,description:e.Description?.trim()||null,type:n,editor:Tt(n,s,r.length>0),defaultValue:e.DefaultValue??null,items:r,recordSource:s?i:null,valueMember:s?a:null,displayMember:s?o:null,sortOrder:e.SortOrder??0,lookupWidth:e.LookupWidth??null,lookupHeight:e.LookupHeight??null}}function Dt(e){return e.filter(e=>e.Name).map(Et).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function U(e,t){if(t==null||t===``)return e.type!==`Boolean`&&null;switch(e.type){case`Boolean`:return typeof t==`boolean`?t:/^(true|1|ja|yes)$/i.test(String(t));case`Integer`:{let e=Number.parseInt(String(t),10);return Number.isNaN(e)?null:e}case`Double`:{let e=Number(String(t).replace(`,`,`.`));return Number.isNaN(e)?null:e}default:return String(t)}}function Ot(e){let t={};for(let n of e)t[n.name]=H(n.defaultValue)?U(n,null):U(n,n.defaultValue);return t}function kt(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function At(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=kt(e,t[e.name]??null);return` <Parameter Name="${z(e.name)}" Type="${e.type}">${z(n)}</Parameter>`}).join(`
2
- `)}\n</Parameters>`}function jt(e){if(!e)return{};let t={};for(let n of e.matchAll(/<Parameter\s+([^>]*?)\/?>(?:([\s\S]*?)<\/Parameter>)?/g)){let e=/Name\s*=\s*"([^"]*)"/.exec(n[1])?.[1];e&&(t[e]=B(n[0],`Parameter`)??``)}return t}function Mt(e,t){let n=jt(t),r=Ot(e);for(let t of e)t.name in n&&(r[t.name]=U(t,n[t.name]));return r}async function Nt(e,t,n){if(!t.defaultValue||!H(t.defaultValue))return null;let r=await fetch(`/api/reporting/filters/${encodeURIComponent(e)}/GetParameterDefaultValue`,{body:JSON.stringify({parameterName:t.name}),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:n});if(!r.ok)throw Error(`${r.status} ${r.statusText}`);return Ft(await r.json())}async function Pt(e,t,n,r){let i=t.filter(e=>H(e.defaultValue??``));if(i.length===0)return n;let a=await Promise.all(i.map(async t=>{try{return[t.name,await Nt(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Ft(e){let t=(Array.isArray(e)?e:Object.values(e).find(e=>Array.isArray(e)))?.[0];return t==null?null:Array.isArray(t)?t[0]??null:typeof t==`object`?Object.values(t)[0]??null:t}let It={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},Lt={CSV:`text/csv`,HTML:`text/html`,IMAGE:`image/x-xbitmap`,MHT:`message/rfc822`,PDF:`application/pdf`,RTF:`text/enriched`,TEXT:`text/plain`,XLS:`application/vnd.ms-excel`,XLSX:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`};function Rt(e){return It[e]}function W(e){return Lt[e]}let zt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function G(e){let t=(e.fileName??e.reportId).trim().replace(zt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Rt(e.format)}`}function K(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function q(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=G(e),u=`/api/report/${encodeURIComponent(o)}/${encodeURIComponent(l)}`,d=new URLSearchParams,f=Ht(a),p=f.length>0||!!r||i===!0;if(t&&d.set(`Domain`,t),d.set(`timezone`,String(c??-(/* @__PURE__ */ new Date()).getTimezoneOffset()/60)),!p)return n&&d.set(`Filter`,n),new Request(K(`${u}?${d}`),{credentials:`same-origin`,signal:s});let m={filter:n??``,parameters:f};return r&&(m.optionalheader=r),i===!0&&(m.showfiltercriteria=`true`),new Request(K(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function J(e){let t=await fetch(q(e));if((t.headers.get(`content-type`)??``).includes(`application/json`)){let e=await t.json();throw Error(e.error??`Failed to render report`)}if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return t.blob()}function Bt(e){return oe(q(e),{fileName:G(e),onProgress:e.onProgress,signal:e.signal})}async function Y(e){let t=await J(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:W(e.format)})),r=window.open(n,`_blank`);if(!r)throw URL.revokeObjectURL(n),Error(`The report could not be opened. Allow pop-ups for this site and try again.`);r.opener=null,window.setTimeout(()=>URL.revokeObjectURL(n),6e4)}async function Vt(e){let t=window.document;if(!t?.body)return Y(e);let n=await J(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:W(e.format)})),i=t.createElement(`iframe`);i.setAttribute(`aria-hidden`,`true`),i.style.cssText=`position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:1px;block-size:1px;border:0;visibility:hidden`;let a=()=>{i.remove(),URL.revokeObjectURL(r)};try{await new Promise((e,n)=>{i.addEventListener(`load`,()=>e(),{once:!0}),i.addEventListener(`error`,()=>n(/* @__PURE__ */ Error(`The report could not be loaded for printing`)),{once:!0}),i.src=r,t.body.append(i)}),i.contentWindow?.focus(),i.contentWindow?.print()}catch{return a(),Y(e)}window.setTimeout(a,6e4)}function Ht(e){return e?Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>({name:e,value:typeof t==`boolean`?String(t):t})):[]}function X(e){return e===!0||e===1}function Ut(e){let t=[];return X(e.FormatPDF)&&t.push(`PDF`),X(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),X(e.FormatHTML)&&t.push(`HTML`),X(e.FormatRTF)&&t.push(`RTF`),X(e.FormatMHT)&&t.push(`MHT`),X(e.FormatTEXT)&&t.push(`TEXT`),X(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Wt(e){let t=V(e.RecordSource);return{reportId:e.ReportID??``,shortId:e.ShortID??null,title:e.Title?.trim()||null,description:e.Description?.trim()||null,viewName:t?.viewName??null,initialFilter:t?.filterString??null,hasTitle:X(e.HasTitle),hasHeader:X(e.HasHeader),formats:Ut(e),timeout:e.Timeout??null}}function Gt(){if(document.querySelector(`#AlertDialogTemplate`))return;let e=document.createElement(`template`);e.id=`AlertDialogTemplate`,e.innerHTML=`
1
+ this.af=this.af||{},this.af.common=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return{all:e||=/* @__PURE__ */ new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}var n=class{eventHandler=t();authenticated(){this.eventHandler.emit(`onAuthenticated`)}async expired(e,t){try{let n=new Promise(t=>{let n=()=>{this.eventHandler.off(`onAuthenticated`,n),e?.(),t()};this.eventHandler.on(`onAuthenticated`,n)}),r=document.querySelector(`dialog.session-expired-dialog`);if(r)await n;else{r=document.createElement(`dialog`),r.className=`session-expired-dialog`,r.style.display=`flex`,r.style.padding=`0`,r.style.left=`50%`,r.style.transform=`translateX(-50%)`;let e=`/login?ReturnUrl=%2fapi/sessionexpired/remove`;t===`RequireTwoFactor`?e=`/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove`:await fetch(`/logout`,{method:`POST`}),r.innerHTML=`<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="${e}" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>`,document.body.append(r),r.showModal(),await n,r.remove()}}catch{window.location.href=`/login?ReturnUrl=${encodeURIComponent(window.location.pathname)}${encodeURIComponent(window.location.search)}`}}attachEvent(e,t){return this.eventHandler.on(e,t)}detachEvent(e,t){return this.eventHandler.off(e,t)}},r=class extends n{amDesignator=`a.m.`;dayNames=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`];dayNamesShort=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`];decimalSeparator=`.`;domain=`OB`;email;formats;groupSeparator=null;integratedSecurity=!1;isDeveloper=!1;login=``;loginType;monthNames=[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``];monthNamesShort=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``];name;pmDesignator=`p.m.`;shortDateFormat=`dd.MM.yyyy`;culture=`en-GB`;uiculture=`en-GB`;constructor(e){super(),this.formats={},Object.assign(this,e)}};let i=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function a(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:i,timeElapsed:n,action:e,parameters:{...t,_session:g()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!r.ok){if(r.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await r.json();console.error(e.error)}else console.error(`${r.status} ${r.statusText}`)}}catch{}}function o(e,t={}){let n=performance.now();return(r={})=>a(e,{...t,...r},performance.now()-n)}async function s(e){let t=performance.now();return[await e(),performance.now()-t]}async function c(e){try{if(!e)return;let t=typeof e==`string`?{error:e}:typeof e==`object`?`message`in e?{error:e.message,stack:e.stack??null}:{error:e.toString()}:{error:`Unspecified error`};console.error(e);let n=await fetch(`/data/Logger/LogError`,{method:`POST`,body:JSON.stringify(t),headers:{"Content-Type":`application/json; charset=utf-8`}});if(n.ok)return await n.json();console.error(Error(`Failed to log error`))}catch{}}function l(){return crypto.randomUUID?.()}function u(e,t){let n=RegExp(`/lib/@olenbetong/${e}/([^/]+)/`);for(let e of t){let t=typeof e==`string`?n.exec(e):null;if(t)return t[1]}}function d(){let e={};try{let t=document.querySelector(`script[type="importmap"]`),n=t?u(`synergi-platform`,Object.values(JSON.parse(t.textContent??`{}`).imports??{})):void 0;n&&(e[`synergi-platform`]=n)}catch{}let t=u(`synergi-chrome`,Array.from(document.scripts,e=>e.src))??window.ob?.chrome?.version;return t&&(e[`synergi-chrome`]=t),e}let f=Date.now(),p=l(),m=``,h=``;if(`document`in window){let e=()=>a(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version,...d()});document.addEventListener(`DOMContentLoaded`,()=>{m=localStorage.getItem(`_afDeviceId`),h=sessionStorage.getItem(`_afSessionId`),m||(m=l(),localStorage.setItem(`_afDeviceId`,m)),h||(h=p,sessionStorage.setItem(`_afSessionId`,h)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:i,action:`AfSessionEnd`,parameters:{_session:g()}})):e()})}function g(){return{browserSessionId:h,sessionStart:f,sessionLength:Date.now()-f,sessionId:p,deviceId:m}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?c(e.error):typeof e==`object`&&`message`in e&&c(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{isPersisted=()=>!0;getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):ee(e)}get(e,t,n){let r=this.getLocalStorageKey(e,n),i=localStorage.getItem(r);return i===null?t:JSON.parse(i)}set(e,t,n){localStorage.setItem(this.getLocalStorageKey(e,n),JSON.stringify(t))}remove(e,t){let n=this.getLocalStorageKey(e,t);return localStorage.getItem(n)!==null&&(localStorage.removeItem(n),!0)}clear(){let e=ee(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function ne(e){return e?re(e).substring(0,10):null}function _(e,t=2){return String(e).padStart(t,`0`)}function re(e){return e?`${e.getFullYear()}-${_(e.getMonth()+1)}-${_(e.getDate())}T${_(e.getHours())}:${_(e.getMinutes())}:${_(e.getSeconds())}.${_(e.getMilliseconds(),3)}`:null}function ie(e){return e?e.toISOString().substring(0,16):``}function ae(e,t){return new Promise((n,r)=>{try{let r=URL.createObjectURL(e),i=document.body,a=document.createElement(`a`);a.setAttribute(`download`,t),a.href=r,i.append(a),a.click(),i.removeChild(a),setTimeout(()=>{URL.revokeObjectURL(r),n()},250)}catch(e){r(e)}})}function v(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function oe(e,{fileName:t,signal:n,onProgress:r}){let i=0;r?.({status:`requested`});try{let n=await fetch(e);if(!n.ok||!n.body){if(n.headers.get(`content-type`)?.includes(`application/json`)){let e=await n.json();v(!e.error,e.error)}throw Error(`${n.status} ${n.statusText}`)}try{let e=n.body.getReader(),t=new ReadableStream({start:t=>{function n(){return e.read().then(e=>{if(e.done)t.close();else return i+=e.value.length,r?.({bytesReceived:i,status:`downloading`}),t.enqueue(e.value),n()})}return n()}});n=new Response(t)}catch{}let a=await n.blob();r?.({bytesReceived:i,status:`downloaded`}),await ae(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}let se=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/,ce=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,le=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,y=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=y(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=y(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return v(i,`Unable to parse function!`),{name:e.name??i[1],args:y(i[2]),body:i[3]}}function de(){}de.prototype=Object.create(null);function fe(e,t){if(typeof e==`object`){if(typeof t==`string`)return fe(e,t.split(`.`));if(Array.isArray(t)){let n=e;for(let e=0;e<t.length;e++)n=n[t[e]]=n[t[e]]||new de;return n}}}function pe(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=ue(n);v(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),pe(e,n)}else{let r,i;if(typeof t==`function`&&(r=ue(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=fe(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:v(!1,`Invalid typeof parameter 'name', or unable to parse pValue!`);Object.hasOwn(i,r)&&n?.overwrite!==!0?console.warn(`${[e,r].join(`.`)} is already defined!`):i[r]=t}}async function me(e,t){try{let n=await fetch(`/api/user/localize/new/${encodeURIComponent(t)}`,{body:JSON.stringify({text:e}),headers:{Accept:`application/json; */*`,"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`});if(n.ok)return await n.json()}catch{}return e}function he(e){let t=window.af;if(!t)return;if(e){let n=t.i18n?.[e];if(n)return{dictionary:n,harvestAs:e}}let n=t.article;if(n?.i18n)return{dictionary:n.i18n,harvestAs:n.id}}function b(e,t){if(typeof e==`string`&&e.trim().length===0)return e;if(e===void 0||e===``||e===null)return;let{project:n,wait:r}=typeof t==`object`?t:{wait:t},i=he(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=me(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function ge(e){function t(t,n){return b(t,{project:e,wait:n})}function n(e,...n){let r=t(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return n.forEach((e,t)=>{r=r.replace(`$${t}`,String(e))}),r}return{project:e,getLocalizedString:t,localize:n}}let _e=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],x=[`isbeyondthisyear`,`islaterthisyear`,`islaterthismonth`,`isnextweek`,`islaterthisweek`,`istomorrow`,`istoday`,`isyesterday`,`isearlierthisweek`,`islastweek`,`isearlierthismonth`,`isearlierthisyear`,`ispriorthisyear`],ve=[`between`,`notbetween`,`datebetween`,`datenotbetween`],ye=[`inlist`,`notinlist`];function S(e){return _e.includes(e)||x.includes(e)?`none`:ve.includes(e)?`pair`:ye.includes(e)?`list`:`single`}let be={equals:`Equal to`,notequals:`Not equal to`,greaterthan:`Greater than`,greaterthanorequal:`Greater than or equal to`,lessthan:`Less than`,lessthanorequal:`Less than or equal to`,beginswith:`Begins with`,notbeginswith:`Does not begin with`,endswith:`Ends with`,notendswith:`Does not end with`,contains:`Contains`,notcontains:`Does not contain`,like:`Like`,notlike:`Not like`,isnull:`Is null`,isnotnull:`Is not null`,isblank:`Is empty`,isnotblank:`Is not empty`,istrue:`Is true`,isfalse:`Is false`,inlist:`In list`,notinlist:`Not in list`,between:`Between`,notbetween:`Not between`,dateequals:`Equal to`,notdatequals:`Not equal to`,dategreaterthan:`After`,dategreaterthanorequal:`On or after`,datelessthan:`Before`,datelessthanorequal:`Up to`,datebetween:`Between`,datenotbetween:`Not between`,isbeyondthisyear:`Is beyond this year`,islaterthisyear:`Is later this year`,islaterthismonth:`Is later this month`,isnextweek:`Is next week`,islaterthisweek:`Is later this week`,istomorrow:`Is tomorrow`,istoday:`Is today`,isyesterday:`Is yesterday`,isearlierthisweek:`Is earlier this week`,islastweek:`Is last week`,isearlierthismonth:`Is earlier this month`,isearlierthisyear:`Is earlier this year`,ispriorthisyear:`Is prior to this year`},xe={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function Se(e,t){return b((t===`date`||t===`datetime`?xe[e]:void 0)??be[e]??e)}let C=[`equals`,`notequals`],w=[`inlist`,`notinlist`],T=[`between`,`notbetween`],E=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],Ce=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],we={date:[...C,...w,...T,...E,...x],datetime:[...C,...w,...T,...E,...x],number:[...C,...w,...T,...E],boolean:[`istrue`,`isfalse`],string:[...C,...Ce,...w,...T,...E],uniqueidentifier:[...C,...Ce,...w,...T,...E]},Te={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function Ee(e){let t=[...we[e.type]??we.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function De(e){return Te[e.type]??`equals`}function D(e,t){if(S(t)===`none`)return`null`;switch(e.type){case`number`:return`number`;case`boolean`:return`boolean`;case`date`:case`datetime`:return`datetime`;case`uniqueidentifier`:return`uniqueidentifier`;default:return`string`}}let Oe=[`Yesterday`,`Today`,`Now`,`Tomorrow`,`DayAfterTomorrow`,`TwoWeeksAway`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],ke={CurrentUser:`Current user`,Yesterday:`Yesterday`,Today:`Today`,Now:`Now`,Tomorrow:`Tomorrow`,DayAfterTomorrow:`Day after tomorrow`,TwoWeeksAway:`Two weeks away`,ThisWeek:`This week`,ThisMonth:`This month`,ThisYear:`This year`,LastWeek:`Last week`,LastMonth:`Last month`,LastYear:`Last year`,NextWeek:`Next week`,NextMonth:`Next month`,NextYear:`Next year`,UserYesterday:`Yesterday`,UserToday:`Today`,UserTomorrow:`Tomorrow`,UserThisWeek:`This week`,UserThisMonth:`This month`,UserThisYear:`This year`,UserLastWeek:`Last week`,UserLastMonth:`Last month`,UserLastYear:`Last year`,UserNextWeek:`Next week`,UserNextMonth:`Next month`,UserNextYear:`Next year`};function Ae(e){return b(ke[e]??e)}function je(e){return e.type===`date`||e.type===`datetime`?[...Oe]:e.type===`string`?[`CurrentUser`]:[]}let Me=[...C,...T,...E];function Ne(e){return Me.includes(e)}function Pe(e){return e===`datetime`?`date`:e}function Fe(e,t){if(e.type===`boolean`)return[];let n=Pe(e.type);return t.filter(t=>t.name!==e.name&&!t.excludeFromFilter&&Pe(t.type)===n)}let Ie={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Ie[t]??t}function k(){return A(`and`)}function A(e=`and`){return{type:`group`,mode:e,items:[]}}function j(e){return e.type===`group`}function M(e){return e.type===`expression`}function Le(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Re(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return j(t)&&t.mode===`and`?t:e}function ze(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Be(e){if(!e)return null;if(M(e))return P(e)?{type:`group`,mode:`and`,items:[e]}:null;let t=e.items.map(e=>j(e)?Be(e):P(e)?e:null).filter(e=>e!==null);return t.length===0?null:{...e,items:t}}function P(e){if(j(e))return e.items.some(P);if(!e.column||!e.operator)return!1;let t=S(O(e.operator));return t===`none`?!0:e.value===null||e.value===void 0||e.value===``?!1:t===`pair`?Array.isArray(e.value)&&e.value.length===2&&e.value.every(e=>{let t=F(e)?e.value:e;return t!==``&&t!=null}):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function F(e){return typeof e==`object`&&!!e&&!(e instanceof Date)&&`valueType`in e}let Ve=/* @__PURE__ */ new Set([`Now`,`DayAfterTomorrow`,`TwoWeeksAway`]);function He(e,t){return e===`column`||e===`special`&&typeof t==`string`&&Ve.has(t)}function Ue(e){return e?j(e)?e.items.some(Ue):x.includes(O(e.operator))||He(e.valueType,e.value)?!0:Array.isArray(e.value)&&e.value.some(e=>F(e)):!1}function We(e,t){let n=t??De(e);return{type:`expression`,column:e.name,operator:n,value:Ge(n),valueType:D(e,n)}}function Ge(e){switch(S(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Ke(e,t,n){let r=S(O(e.operator)),i=S(t),a=e.value,o=e.valueType===`column`||Array.isArray(a)&&a.some(e=>F(e)&&e.valueType===`column`);(i!==r||o&&!Ne(t))&&(a=Ge(t));let s=(e.valueType===`special`||e.valueType===`column`)&&a===e.value?e.valueType:D(n,t);return{...e,operator:t,value:a,valueType:s}}function qe(e,t){let n=e;for(let e of t){if(!n||!j(n))return null;n=n.items[e]}return n??null}function I(e,t,n){if(t.length===0)return n(e)??e;if(!j(e))return e;let[r,...i]=t,a=e.items[r];if(!a)return e;let o=[...e.items];if(i.length===0){let e=n(a);e===null?o.splice(r,1):o[r]=e}else o[r]=I(a,i,n);return{...e,items:o}}function Je(e,t,n){return I(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function Ye(e,t){return t.length===0?k():I(e,t,()=>null)}function Xe(e,t,n){return I(e,t,e=>j(e)?{...e,mode:n}:e)}function Ze(e,t=[]){let n=qe(e,t);return Je(e,t,A(n&&j(n)&&n.mode===`and`?`or`:`and`))}async function Qe(e,t){let n=await fetch(`/api/filter/convert`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t});if(!n.ok)throw Error(`Failed to convert filter: ${n.status} ${n.statusText}`);let r=await n.json();return{...r,filterObject:r.filterObject?Le(r.filterObject):null}}function $e(e,t={}){return e?et(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function et(e,t,n){if(M(e))return tt(e,t);let r=e.items.map(e=>et(e,t,n+1)).filter(e=>e!==``);if(r.length===0)return``;if(r.length===1)return r[0];let i=e.mode===`or`?` OR `:` AND `,a=r.join(i);return n===0?a:`(${a})`}function tt(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=O(e.operator),a=Se(i,n?.type),o=S(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${nt(e,o,t)}`}function nt(e,t,n){let{value:r,valueType:i}=e;if(Array.isArray(r)){let e=r.map(e=>F(e)?L(e.value,e.valueType,n):L(e,i,n));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return L(r,i,n)}function L(e,t,n){return t===`special`&&typeof e==`string`?Ae(e):t===`column`&&typeof e==`string`?`[${n.get(e.toLowerCase())?.caption??e}]`:e==null?``:e instanceof Date?e.toISOString().slice(0,10):typeof e==`number`||typeof e==`boolean`||t===`number`||t===`boolean`?String(e):`'${String(e)}'`}let rt=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function it(e){let t=e?.trim().toLowerCase();return rt.find(e=>e===t)??`string`}function at(e){return e===!0||e===1}function ot(e){return{name:e.FieldName??``,type:it(e.DataType),nullable:at(e.Nullable),excludeFromFilter:at(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function st(e){return e.map(ot).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function ct(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function lt(e){if(!e)return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[]}]};if(M(e))return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[e]}]};if(e.mode===`or`){let t=e.items.map(e=>{let t=[];return R(e,t),{type:`group`,mode:`and`,items:t}});return{type:`group`,mode:`or`,items:t.length>0?t:[{type:`group`,mode:`and`,items:[]}]}}let t=[];return R(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function R(e,t){if(M(e))t.push(e);else for(let n of e.items)R(n,t)}function ut(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:dt(e.AccessLevel),createdByUser:z(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:z(e.CrossDomain),isPersonallyShared:z(e.IsPersonallyShared),hideCriteria:z(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:ft(e.Created),updated:ft(e.Updated)}}function dt(e){return e===`Manager`||e===`Editor`?e:`Reader`}function z(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function ft(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function pt(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(ut).sort((e,t)=>e.name.localeCompare(t.name))}function mt(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function ht(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function gt(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function _t(e){return e.accessLevel===`Manager`}function B(e){return e.createdByUser}let vt=B,yt=B,bt={xs:64,sm:128,md:256,lg:512,xl:void 0};function xt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return xt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=bt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function St(e,...t){v(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=b(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}let Ct={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function V(e){return e.replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,(e,t)=>t.startsWith(`#x`)||t.startsWith(`#X`)?String.fromCodePoint(Number.parseInt(t.slice(2),16)):t.startsWith(`#`)?String.fromCodePoint(Number.parseInt(t.slice(1),10)):Ct[t.toLowerCase()]??e)}function H(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`)}function U(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=V(n[1]).trim();return r===``?null:r}function wt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>V(e[1]).trim())}let Tt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function Et(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=U(e[1],`Name`);t&&n.push({name:t,type:Tt[U(e[1],`DataType`)??``]??`string`})}return n}function W(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=U(e,`ViewName`);if(!t)return null;let n=U(e,`MaxRecords`);return{viewName:t,columns:Et(e),whereClause:U(e,`WhereClause`),filterString:U(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}let Dt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],Ot=/^[a-z]stp_/i;function G(e){return typeof e==`string`&&Ot.test(e.trim())}function kt(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function At(e){return Dt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function jt(e,t,n){if(t)return`lookup`;if(n)return`select`;switch(e){case`Integer`:case`Double`:return`number`;case`Date`:return`date`;case`Boolean`:return`boolean`;default:return`text`}}function Mt(e){let t=e.Name??``,n=At(e.DataType),r=kt(e.Items),i=W(e.RecordSource),a=e.ValueMember??null;i&&!a&&(a=i.columns[0]?.name??null);let o=i?.columns.find(e=>e.name!==a)?.name??null,s=!!(i&&a);return{name:t,label:e.Label?.trim()||t,description:e.Description?.trim()||null,type:n,editor:jt(n,s,r.length>0),defaultValue:e.DefaultValue??null,items:r,recordSource:s?i:null,valueMember:s?a:null,displayMember:s?o:null,sortOrder:e.SortOrder??0,lookupWidth:e.LookupWidth??null,lookupHeight:e.LookupHeight??null}}function Nt(e){return e.filter(e=>e.Name).map(Mt).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function K(e,t){if(t==null||t===``)return e.type!==`Boolean`&&null;switch(e.type){case`Boolean`:return typeof t==`boolean`?t:/^(true|1|ja|yes)$/i.test(String(t));case`Integer`:{let e=Number.parseInt(String(t),10);return Number.isNaN(e)?null:e}case`Double`:{let e=Number(String(t).replace(`,`,`.`));return Number.isNaN(e)?null:e}default:return String(t)}}function Pt(e){let t={};for(let n of e)t[n.name]=G(n.defaultValue)?K(n,null):K(n,n.defaultValue);return t}function Ft(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function It(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=Ft(e,t[e.name]??null);return` <Parameter Name="${H(e.name)}" Type="${e.type}">${H(n)}</Parameter>`}).join(`
2
+ `)}\n</Parameters>`}function Lt(e){if(!e)return{};let t={};for(let n of e.matchAll(/<Parameter\s+([^>]*?)\/?>(?:([\s\S]*?)<\/Parameter>)?/g)){let e=/Name\s*=\s*"([^"]*)"/.exec(n[1])?.[1];e&&(t[e]=U(n[0],`Parameter`)??``)}return t}function Rt(e,t){let n=Lt(t),r=Pt(e);for(let t of e)t.name in n&&(r[t.name]=K(t,n[t.name]));return r}async function zt(e,t,n){if(!t.defaultValue||!G(t.defaultValue))return null;let r=await fetch(`/api/reporting/filters/${encodeURIComponent(e)}/GetParameterDefaultValue`,{body:JSON.stringify({parameterName:t.name}),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:n});if(!r.ok)throw Error(`${r.status} ${r.statusText}`);return Vt(await r.json())}async function Bt(e,t,n,r){let i=t.filter(e=>G(e.defaultValue??``));if(i.length===0)return n;let a=await Promise.all(i.map(async t=>{try{return[t.name,await zt(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Vt(e){let t=(Array.isArray(e)?e:Object.values(e).find(e=>Array.isArray(e)))?.[0];return t==null?null:Array.isArray(t)?t[0]??null:typeof t==`object`?Object.values(t)[0]??null:t}let Ht={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},Ut={CSV:`text/csv`,HTML:`text/html`,IMAGE:`image/x-xbitmap`,MHT:`message/rfc822`,PDF:`application/pdf`,RTF:`text/enriched`,TEXT:`text/plain`,XLS:`application/vnd.ms-excel`,XLSX:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`};function Wt(e){return Ht[e]}function q(e){return Ut[e]}let Gt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function J(e){let t=(e.fileName??e.reportId).trim().replace(Gt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Wt(e.format)}`}function Kt(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function Y(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=J(e),u=`/api/report/${encodeURIComponent(o)}/${encodeURIComponent(l)}`,d=new URLSearchParams,f=Yt(a),p=f.length>0||!!r||i===!0;if(t&&d.set(`Domain`,t),d.set(`timezone`,String(c??-(/* @__PURE__ */ new Date()).getTimezoneOffset()/60)),!p)return n&&d.set(`Filter`,n),new Request(Kt(`${u}?${d}`),{credentials:`same-origin`,signal:s});let m={filter:n??``,parameters:f};return r&&(m.optionalheader=r),i===!0&&(m.showfiltercriteria=`true`),new Request(Kt(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function X(e){let t=await fetch(Y(e));if((t.headers.get(`content-type`)??``).includes(`application/json`)){let e=await t.json();throw Error(e.error??`Failed to render report`)}if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return t.blob()}function qt(e){return oe(Y(e),{fileName:J(e),onProgress:e.onProgress,signal:e.signal})}async function Z(e){let t=await X(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:q(e.format)})),r=window.open(n,`_blank`);if(!r)throw URL.revokeObjectURL(n),Error(`The report could not be opened. Allow pop-ups for this site and try again.`);r.opener=null,window.setTimeout(()=>URL.revokeObjectURL(n),6e4)}async function Jt(e){let t=window.document;if(!t?.body)return Z(e);let n=await X(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:q(e.format)})),i=t.createElement(`iframe`);i.setAttribute(`aria-hidden`,`true`),i.style.cssText=`position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:1px;block-size:1px;border:0;visibility:hidden`;let a=()=>{i.remove(),URL.revokeObjectURL(r)};try{await new Promise((e,n)=>{i.addEventListener(`load`,()=>e(),{once:!0}),i.addEventListener(`error`,()=>n(/* @__PURE__ */ Error(`The report could not be loaded for printing`)),{once:!0}),i.src=r,t.body.append(i)}),i.contentWindow?.focus(),i.contentWindow?.print()}catch{return a(),Z(e)}window.setTimeout(a,6e4)}function Yt(e){return e?Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>({name:e,value:typeof t==`boolean`?String(t):t})):[]}function Q(e){return e===!0||e===1}function Xt(e){let t=[];return Q(e.FormatPDF)&&t.push(`PDF`),Q(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),Q(e.FormatHTML)&&t.push(`HTML`),Q(e.FormatRTF)&&t.push(`RTF`),Q(e.FormatMHT)&&t.push(`MHT`),Q(e.FormatTEXT)&&t.push(`TEXT`),Q(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Zt(e){let t=W(e.RecordSource);return{reportId:e.ReportID??``,shortId:e.ShortID??null,title:e.Title?.trim()||null,description:e.Description?.trim()||null,viewName:t?.viewName??null,initialFilter:t?.filterString??null,hasTitle:Q(e.HasTitle),hasHeader:Q(e.HasHeader),formats:Xt(e),timeout:e.Timeout??null}}function Qt(){if(document.querySelector(`#AlertDialogTemplate`))return;let e=document.createElement(`template`);e.id=`AlertDialogTemplate`,e.innerHTML=`
3
3
  <dialog class="alert-dialog">
4
4
  <form method="dialog">
5
5
  <article></article>
@@ -8,5 +8,5 @@ this.af=this.af||{},this.af.common=(function(e){Object.defineProperty(e,Symbol.t
8
8
  </footer>
9
9
  </form>
10
10
  </dialog>
11
- `,document.body.append(e)}window.document&&(document.body?Gt():document.addEventListener(`DOMContentLoaded`,Gt,{once:!0}));function Kt(e,t=`No`){return new Promise(n=>{let r=new AbortController;e.addEventListener(`close`,()=>{n(e.returnValue),r.abort()},{signal:r.signal}),e.addEventListener(`cancel`,()=>{n(t),r.abort()},{signal:r.signal})})}let Z=/* @__PURE__ */ new Map;async function Q({buttons:e,content:t,className:n,id:r,title:i}){if(r&&Z.has(r))return await Z.get(r);let a=document.querySelector(`#AlertDialogTemplate`);if(!a)throw Error(`No alert dialog template found`);let o=a.content.firstElementChild?.cloneNode(!0),s=o?.querySelector(`article`),c=o?.querySelector(`footer menu`);if(!o||!s||!c)throw Error(`Invalid alert dialog template`);if(n)for(let e of n.split(/\s+/))o?.classList.add(e);if(i){let e=document.createElement(`header`);e.append(i),s.parentNode?.insertBefore(e,s)}s.appendChild(typeof t==`string`?document.createTextNode(t):t);for(let{label:t,value:n,primary:r}of e){let e=document.createElement(`li`),i=document.createElement(`button`);i.value=n,r&&i.classList.add(`primary`),i.textContent=t,e.appendChild(i),c.appendChild(i)}document.body.appendChild(o),o.showModal();let l=Kt(o).then(e=>(r&&Z.has(r)&&Z.delete(r),o&&document.body.removeChild(o),e));return r&&Z.set(r,l),await l}let qt=/* @__PURE__ */ function(e){return e[e.YesNo=0]=`YesNo`,e[e.OkCancel=1]=`OkCancel`,e}({});async function Jt(e,t={}){let{buttons:n=0,title:r}=t;return await Q({content:e,buttons:n===1?[{label:b(`OK`),value:`yes`,primary:!0},{label:b(`Cancel`),value:`no`}]:[{label:b(`Yes`),value:`yes`,primary:!0},{label:b(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function Yt(e,t={}){await Q({content:e,className:`alert-dialog-alert`,buttons:[{label:b(`OK`),value:`ok`,primary:!0}],...t})}function $(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function Xt(e,t){if(!window.af?.userSession)return null;let n=$(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function Zt(e,t,n){if(!window.af?.userSession)return;let r=$(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}return e.ConfirmButtons=qt,e.NO_FILTER_ID=-1,e.RELATIVE_DATE_VALUES=Oe,e.SessionHandler=n,e.UserSession=r,e.addGroupAtPath=We,e.alert=Yt,e.canDeleteSavedFilter=ft,e.canEditSavedFilter=ut,e.canRenameSavedFilter=L,e.canSetCrossDomain=pt,e.canShareSavedFilter=dt,e.changeOperator=ze,e.coerceParameterValue=U,e.coerceToStandardLayout=rt,e.confirm=Jt,e.convertFilter=Ge,e.countExpressions=M,e.createEmptyFilter=O,e.createEmptyGroup=k,e.createExpression=Le,e.createLocalizer=ge,e.decodeXml=R,e.describeFilter=Ke,e.downloadBlob=ae,e.downloadReport=Bt,e.downloadRequest=oe,e.encodeXml=z,e.expose=pe,e.fetchParameterDefault=Nt,e.findSavedFilter=lt,e.getDefaultOperator=De,e.getDefaultParameterValues=Ot,e.getDynamicValueLabel=Ae,e.getDynamicValuesForField=je,e.getLocalizedString=b,e.getNodeAtPath=Be,e.getOperatorArity=x,e.getOperatorLabel=Se,e.getOperatorsForField=Ee,e.getReportExtension=Rt,e.getReportFileName=G,e.getReportFormats=Ut,e.getReportMediaType=W,e.getReportRequest=q,e.getSessionData=g,e.getSettings=Xt,e.getUserImage=ht,e.getValueType=E,e.insertNodeAtPath=Ve,e.invariant=v,e.isCompleteExpression=N,e.isEmptyFilter=Fe,e.isExpression=j,e.isGroup=A,e.isProcedureDefault=H,e.isStandardLayout=nt,e.localStorage=te,e.localize=gt,e.logActivity=a,e.logError=c,e.mitt=t,e.normalizeOperator=D,e.openAlertDialog=Q,e.openReport=Y,e.parseParameterItems=Ct,e.parseParameters=jt,e.parseRecordSource=V,e.partitionSavedFilters=ct,e.printReport=Vt,e.pruneFilter=Ie,e.readElement=B,e.readElements=vt,e.removeNodeAtPath=He,e.renderReport=J,e.resolveParameterDefaults=Pt,e.restoreParameterValues=Mt,e.saveSettings=Zt,e.serializeParameters=At,e.setGroupMode=Ue,e.startActivity=o,e.time=s,e.toFieldMetadata=et,e.toFieldMetadataList=tt,e.toFilterFieldType=Qe,e.toFilterTree=Ne,e.toLocalDateTime=ie,e.toLocalISODate=ne,e.toLocalISODateTime=re,e.toReport=Wt,e.toReportParameter=Et,e.toReportParameters=Dt,e.toSavedFilter=it,e.toSavedFilters=st,e.unwrapSingleAndGroup=Pe,e.updateNodeAtPath=P,e.version=`2.15.2`,e.waitForDialog=Kt,e})({});
11
+ `,document.body.append(e)}window.document&&(document.body?Qt():document.addEventListener(`DOMContentLoaded`,Qt,{once:!0}));function $t(e,t=`No`){return new Promise(n=>{let r=new AbortController;e.addEventListener(`close`,()=>{n(e.returnValue),r.abort()},{signal:r.signal}),e.addEventListener(`cancel`,()=>{n(t),r.abort()},{signal:r.signal})})}let $=/* @__PURE__ */ new Map;async function en({buttons:e,content:t,className:n,id:r,title:i}){if(r&&$.has(r))return await $.get(r);let a=document.querySelector(`#AlertDialogTemplate`);if(!a)throw Error(`No alert dialog template found`);let o=a.content.firstElementChild?.cloneNode(!0),s=o?.querySelector(`article`),c=o?.querySelector(`footer menu`);if(!o||!s||!c)throw Error(`Invalid alert dialog template`);if(n)for(let e of n.split(/\s+/))o?.classList.add(e);if(i){let e=document.createElement(`header`);e.append(i),s.parentNode?.insertBefore(e,s)}s.appendChild(typeof t==`string`?document.createTextNode(t):t);for(let{label:t,value:n,primary:r}of e){let e=document.createElement(`li`),i=document.createElement(`button`);i.value=n,r&&i.classList.add(`primary`),i.textContent=t,e.appendChild(i),c.appendChild(i)}document.body.appendChild(o),o.showModal();let l=$t(o).then(e=>(r&&$.has(r)&&$.delete(r),o&&document.body.removeChild(o),e));return r&&$.set(r,l),await l}let tn=/* @__PURE__ */ function(e){return e[e.YesNo=0]=`YesNo`,e[e.OkCancel=1]=`OkCancel`,e}({});async function nn(e,t={}){let{buttons:n=0,title:r}=t;return await en({content:e,buttons:n===1?[{label:b(`OK`),value:`yes`,primary:!0},{label:b(`Cancel`),value:`no`}]:[{label:b(`Yes`),value:`yes`,primary:!0},{label:b(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function rn(e,t={}){await en({content:e,className:`alert-dialog-alert`,buttons:[{label:b(`OK`),value:`ok`,primary:!0}],...t})}function an(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function on(e,t){if(!window.af?.userSession)return null;let n=an(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function sn(e,t,n){if(!window.af?.userSession)return;let r=an(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}return e.ConfirmButtons=tn,e.NO_FILTER_ID=-1,e.PERIOD_OPERATORS=x,e.RELATIVE_DATE_VALUES=Oe,e.SessionHandler=n,e.UserSession=r,e.addGroupAtPath=Ze,e.alert=rn,e.canDeleteSavedFilter=vt,e.canEditSavedFilter=gt,e.canRenameSavedFilter=B,e.canSetCrossDomain=yt,e.canShareSavedFilter=_t,e.changeOperator=Ke,e.coerceParameterValue=K,e.coerceToStandardLayout=lt,e.confirm=nn,e.convertFilter=Qe,e.countExpressions=N,e.createEmptyFilter=k,e.createEmptyGroup=A,e.createExpression=We,e.createLocalizer=ge,e.decodeXml=V,e.describeFilter=$e,e.downloadBlob=ae,e.downloadReport=qt,e.downloadRequest=oe,e.encodeXml=H,e.expose=pe,e.fetchParameterDefault=zt,e.findSavedFilter=ht,e.getColumnsForField=Fe,e.getDefaultOperator=De,e.getDefaultParameterValues=Pt,e.getDynamicValueLabel=Ae,e.getDynamicValuesForField=je,e.getLocalizedString=b,e.getNodeAtPath=qe,e.getOperatorArity=S,e.getOperatorLabel=Se,e.getOperatorsForField=Ee,e.getReportExtension=Wt,e.getReportFileName=J,e.getReportFormats=Xt,e.getReportMediaType=q,e.getReportRequest=Y,e.getSessionData=g,e.getSettings=on,e.getUserImage=xt,e.getValueType=D,e.insertNodeAtPath=Je,e.invariant=v,e.isCompleteExpression=P,e.isEmptyFilter=ze,e.isExpression=M,e.isGroup=j,e.isProcedureDefault=G,e.isRangeEnd=F,e.isStandardLayout=ct,e.localStorage=te,e.localize=St,e.logActivity=a,e.logError=c,e.mitt=t,e.needsFilterString=Ue,e.normalizeOperator=O,e.openAlertDialog=en,e.openReport=Z,e.parseParameterItems=kt,e.parseParameters=Lt,e.parseRecordSource=W,e.partitionSavedFilters=mt,e.printReport=Jt,e.pruneFilter=Be,e.readElement=U,e.readElements=wt,e.removeNodeAtPath=Ye,e.renderReport=X,e.resolveParameterDefaults=Bt,e.restoreParameterValues=Rt,e.saveSettings=sn,e.serializeParameters=It,e.setGroupMode=Xe,e.startActivity=o,e.supportsColumnValue=Ne,e.time=s,e.toFieldMetadata=ot,e.toFieldMetadataList=st,e.toFilterFieldType=it,e.toFilterTree=Le,e.toLocalDateTime=ie,e.toLocalISODate=ne,e.toLocalISODateTime=re,e.toReport=Zt,e.toReportParameter=Mt,e.toReportParameters=Nt,e.toSavedFilter=ut,e.toSavedFilters=pt,e.unwrapSingleAndGroup=Re,e.updateNodeAtPath=I,e.version=`2.15.2`,e.waitForDialog=$t,e})({});
12
12
  //# sourceMappingURL=af.common.legacy.min.js.map