@olenbetong/appframe-core 2.14.0 → 2.15.1

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=e||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)})}}}function n(e){"@babel/helpers - typeof";return n=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},n(e)}function r(e,t){if(n(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||`default`);if(n(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function i(e){var t=r(e,`string`);return n(t)==`symbol`?t:t+``}function a(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=class{constructor(){a(this,`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)}},s=class extends o{constructor(e){super(),a(this,`amDesignator`,`a.m.`),a(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),a(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),a(this,`decimalSeparator`,`.`),a(this,`domain`,`OB`),a(this,`email`,void 0),a(this,`formats`,void 0),a(this,`groupSeparator`,null),a(this,`integratedSecurity`,!1),a(this,`isDeveloper`,!1),a(this,`login`,``),a(this,`loginType`,void 0),a(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),a(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),a(this,`name`,void 0),a(this,`pmDesignator`,`p.m.`),a(this,`shortDateFormat`,`dd.MM.yyyy`),a(this,`culture`,`en-GB`),a(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};let c=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function l(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:c,timeElapsed:n,action:e,parameters:{...t,_session:_()}}),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 u(e,t={}){let n=performance.now();return(r={})=>l(e,{...t,...r},performance.now()-n)}async function d(e){let t=performance.now();return[await e(),performance.now()-t]}async function f(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 p(){return crypto.randomUUID?.()}let m=Date.now(),ee=p(),h=``,g=``;if(`document`in window){let e=()=>l(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version});document.addEventListener(`DOMContentLoaded`,()=>{h=localStorage.getItem(`_afDeviceId`),g=sessionStorage.getItem(`_afSessionId`),h||(h=p(),localStorage.setItem(`_afDeviceId`,h)),g||(g=ee,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:c,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:m,sessionLength:Date.now()-m,sessionId:ee,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?f(e.error):typeof e==`object`&&`message`in e&&f(e)});function te(e){return[af?.article?.id||``,`common`,e].join(`.`)}var ne=new class{constructor(){a(this,`isPersisted`,()=>!0)}getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):te(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=te(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function re(e){return e?ie(e).substring(0,10):null}function v(e,t=2){return String(e).padStart(t,`0`)}function ie(e){return e?`${e.getFullYear()}-${v(e.getMonth()+1)}-${v(e.getDate())}T${v(e.getHours())}:${v(e.getMinutes())}:${v(e.getSeconds())}.${v(e.getMilliseconds(),3)}`:null}function ae(e){return e?e.toISOString().substring(0,16):``}function oe(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 y(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function se(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();y(!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 oe(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}let ce=/^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)*)\}$/,le=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,ue=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function de(e){let t=e.toString(),n=t.match(le);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(ue);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(ce);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(i[2]),body:i[3]}}function fe(){}fe.prototype=Object.create(null);function pe(e,t){if(typeof e==`object`){if(typeof t==`string`)return pe(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 fe;return n}}}function me(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=de(n);y(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),me(e,n)}else{let r,i;if(typeof t==`function`&&(r=de(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=pe(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:y(!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 he(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 ge(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 x(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=ge(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=he(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function _e(e){function t(t,n){return x(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 ve=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ye=[`between`,`notbetween`,`datebetween`,`datenotbetween`],be=[`inlist`,`notinlist`];function S(e){return ve.includes(e)?`none`:ye.includes(e)?`pair`:be.includes(e)?`list`:`single`}let xe={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`},Se={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function Ce(e,t){return x((t===`date`||t===`datetime`?Se[e]:void 0)??xe[e]??e)}let C=[`equals`,`notequals`],w=[`inlist`,`notinlist`],T=[`between`,`notbetween`],E=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],we=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],Te={date:[...C,...w,...T,...E],datetime:[...C,...w,...T,...E],number:[...C,...w,...T,...E],boolean:[`istrue`,`isfalse`],string:[...C,...we,...w,...T,...E],uniqueidentifier:[...C,...we,...w,...T,...E]},Ee={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function De(e){let t=[...Te[e.type]??Te.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function Oe(e){return Ee[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 ke=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],Ae={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 je(e){return x(Ae[e]??e)}function Me(e){return e.type===`date`||e.type===`datetime`?[...ke]:e.type===`string`?[`CurrentUser`]:[]}let Ne={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Ne[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 Pe(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Fe(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Ie(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)?Ie(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=>e!==``&&e!=null):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function Le(e,t){let n=t??Oe(e);return{type:`expression`,column:e.name,operator:n,value:Re(n),valueType:D(e,n)}}function Re(e){switch(S(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function ze(e,t,n){let r=S(O(e.operator)),i=S(t),a=e.value;i!==r&&(a=Re(t));let o=e.valueType===`special`&&i===r?`special`:D(n,t);return{...e,operator:t,value:a,valueType:o}}function Be(e,t){let n=e;for(let e of t){if(!n||!j(n))return null;n=n.items[e]}return n??null}function F(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]=F(a,i,n);return{...e,items:o}}function Ve(e,t,n){return F(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function He(e,t){return t.length===0?k():F(e,t,()=>null)}function Ue(e,t,n){return F(e,t,e=>j(e)?{...e,mode:n}:e)}function We(e,t=[]){let n=Be(e,t);return Ve(e,t,A(n&&j(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?Pe(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(M(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=O(e.operator),a=Ce(i,n?.type),o=S(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 je(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 I(e){return{name:e.FieldName??``,type:Qe(e.DataType),nullable:$e(e.Nullable),excludeFromFilter:$e(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function et(e){return e.map(I).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function tt(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function nt(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 L(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 L(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function L(e,t){if(M(e)){t.push(e);return}for(let n of e.items)L(n,t)}function rt(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:it(e.AccessLevel),createdByUser:R(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:R(e.CrossDomain),isPersonallyShared:R(e.IsPersonallyShared),hideCriteria:R(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:at(e.Created),updated:at(e.Updated)}}function it(e){return e===`Manager`||e===`Editor`?e:`Reader`}function R(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function at(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function ot(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(rt).sort((e,t)=>e.name.localeCompare(t.name))}function st(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function ct(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function lt(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function ut(e){return e.accessLevel===`Manager`}function z(e){return e.createdByUser}let dt=z,ft=z,pt={xs:64,sm:128,md:256,lg:512,xl:void 0};function mt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return mt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=pt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function ht(e,...t){y(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=x(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}let gt={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function B(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)):gt[t.toLowerCase()]??e)}function V(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`)}function H(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=B(n[1]).trim();return r===``?null:r}function _t(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>B(e[1]).trim())}let vt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function yt(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=H(e[1],`Name`);t&&n.push({name:t,type:vt[H(e[1],`DataType`)??``]??`string`})}return n}function U(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=H(e,`ViewName`);if(!t)return null;let n=H(e,`MaxRecords`);return{viewName:t,columns:yt(e),whereClause:H(e,`WhereClause`),filterString:H(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}let bt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],xt=/^[a-z]stp_/i;function W(e){return typeof e==`string`&&xt.test(e.trim())}function St(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function Ct(e){return bt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function wt(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 Tt(e){let t=e.Name??``,n=Ct(e.DataType),r=St(e.Items),i=U(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:wt(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 Et(e){return e.filter(e=>e.Name).map(Tt).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function G(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 Dt(e){let t={};for(let n of e)t[n.name]=W(n.defaultValue)?G(n,null):G(n,n.defaultValue);return t}function Ot(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function kt(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=Ot(e,t[e.name]??null);return` <Parameter Name="${V(e.name)}" Type="${e.type}">${V(n)}</Parameter>`}).join(`
2
- `)}\n</Parameters>`}function At(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]=H(n[0],`Parameter`)??``)}return t}function jt(e,t){let n=At(t),r=Dt(e);for(let t of e)t.name in n&&(r[t.name]=G(t,n[t.name]));return r}async function Mt(e,t,n){if(!t.defaultValue||!W(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 Pt(await r.json())}async function Nt(e,t,n,r){let i=t.filter(e=>W(e.defaultValue??``));if(i.length===0)return n;let a=await Promise.all(i.map(async t=>{try{return[t.name,await Mt(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Pt(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 Ft={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},It={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 Lt(e){return Ft[e]}function K(e){return It[e]}let Rt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function q(e){let t=(e.fileName??e.reportId).trim().replace(Rt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Lt(e.format)}`}function zt(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function J(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=q(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??-new Date().getTimezoneOffset()/60)),!p)return n&&d.set(`Filter`,n),new Request(zt(`${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(zt(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function Y(e){let t=await fetch(J(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 se(J(e),{fileName:q(e),onProgress:e.onProgress,signal:e.signal})}async function X(e){let t=await Y(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:K(e.format)}));if(!window.open(n,`_blank`,`noopener`))throw URL.revokeObjectURL(n),Error(`The report could not be opened. Allow pop-ups for this site and try again.`);window.setTimeout(()=>URL.revokeObjectURL(n),6e4)}async function Vt(e){let t=window.document;if(!t?.body)return X(e);let n=await Y(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:K(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(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(),X(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 Z(e){return e===!0||e===1}function Ut(e){let t=[];return Z(e.FormatPDF)&&t.push(`PDF`),Z(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),Z(e.FormatHTML)&&t.push(`HTML`),Z(e.FormatRTF)&&t.push(`RTF`),Z(e.FormatMHT)&&t.push(`MHT`),Z(e.FormatTEXT)&&t.push(`TEXT`),Z(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Wt(e){let t=U(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:Z(e.HasTitle),hasHeader:Z(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=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)})}}}function n(e){"@babel/helpers - typeof";return n=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},n(e)}function r(e,t){if(n(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||`default`);if(n(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function i(e){var t=r(e,`string`);return n(t)==`symbol`?t:t+``}function a(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=class{constructor(){a(this,`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)}},s=class extends o{constructor(e){super(),a(this,`amDesignator`,`a.m.`),a(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),a(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),a(this,`decimalSeparator`,`.`),a(this,`domain`,`OB`),a(this,`email`,void 0),a(this,`formats`,void 0),a(this,`groupSeparator`,null),a(this,`integratedSecurity`,!1),a(this,`isDeveloper`,!1),a(this,`login`,``),a(this,`loginType`,void 0),a(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),a(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),a(this,`name`,void 0),a(this,`pmDesignator`,`p.m.`),a(this,`shortDateFormat`,`dd.MM.yyyy`),a(this,`culture`,`en-GB`),a(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};let c=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function l(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:c,timeElapsed:n,action:e,parameters:{...t,_session:_()}}),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 u(e,t={}){let n=performance.now();return(r={})=>l(e,{...t,...r},performance.now()-n)}async function d(e){let t=performance.now();return[await e(),performance.now()-t]}async function f(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 p(){return crypto.randomUUID?.()}let m=Date.now(),ee=p(),h=``,g=``;if(`document`in window){let e=()=>l(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version});document.addEventListener(`DOMContentLoaded`,()=>{h=localStorage.getItem(`_afDeviceId`),g=sessionStorage.getItem(`_afSessionId`),h||(h=p(),localStorage.setItem(`_afDeviceId`,h)),g||(g=ee,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:c,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:m,sessionLength:Date.now()-m,sessionId:ee,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?f(e.error):typeof e==`object`&&`message`in e&&f(e)});function te(e){return[af?.article?.id||``,`common`,e].join(`.`)}var ne=new class{constructor(){a(this,`isPersisted`,()=>!0)}getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):te(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=te(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function re(e){return e?ie(e).substring(0,10):null}function v(e,t=2){return String(e).padStart(t,`0`)}function ie(e){return e?`${e.getFullYear()}-${v(e.getMonth()+1)}-${v(e.getDate())}T${v(e.getHours())}:${v(e.getMinutes())}:${v(e.getSeconds())}.${v(e.getMilliseconds(),3)}`:null}function ae(e){return e?e.toISOString().substring(0,16):``}function oe(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 y(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function se(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();y(!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 oe(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}let ce=/^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)*)\}$/,le=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,ue=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function de(e){let t=e.toString(),n=t.match(le);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(ue);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(ce);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(i[2]),body:i[3]}}function fe(){}fe.prototype=Object.create(null);function pe(e,t){if(typeof e==`object`){if(typeof t==`string`)return pe(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 fe;return n}}}function me(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=de(n);y(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),me(e,n)}else{let r,i;if(typeof t==`function`&&(r=de(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=pe(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:y(!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 he(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 ge(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 x(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=ge(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=he(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function _e(e){function t(t,n){return x(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 ve=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ye=[`between`,`notbetween`,`datebetween`,`datenotbetween`],be=[`inlist`,`notinlist`];function S(e){return ve.includes(e)?`none`:ye.includes(e)?`pair`:be.includes(e)?`list`:`single`}let xe={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`},Se={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function Ce(e,t){return x((t===`date`||t===`datetime`?Se[e]:void 0)??xe[e]??e)}let C=[`equals`,`notequals`],w=[`inlist`,`notinlist`],T=[`between`,`notbetween`],E=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],we=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],Te={date:[...C,...w,...T,...E],datetime:[...C,...w,...T,...E],number:[...C,...w,...T,...E],boolean:[`istrue`,`isfalse`],string:[...C,...we,...w,...T,...E],uniqueidentifier:[...C,...we,...w,...T,...E]},Ee={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function De(e){let t=[...Te[e.type]??Te.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function Oe(e){return Ee[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 ke=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],Ae={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 je(e){return x(Ae[e]??e)}function Me(e){return e.type===`date`||e.type===`datetime`?[...ke]:e.type===`string`?[`CurrentUser`]:[]}let Ne={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Ne[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 Pe(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Fe(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return j(t)&&t.mode===`and`?t:e}function Ie(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Le(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)?Le(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=>e!==``&&e!=null):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function Re(e,t){let n=t??Oe(e);return{type:`expression`,column:e.name,operator:n,value:ze(n),valueType:D(e,n)}}function ze(e){switch(S(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Be(e,t,n){let r=S(O(e.operator)),i=S(t),a=e.value;i!==r&&(a=ze(t));let o=e.valueType===`special`&&i===r?`special`:D(n,t);return{...e,operator:t,value:a,valueType:o}}function Ve(e,t){let n=e;for(let e of t){if(!n||!j(n))return null;n=n.items[e]}return n??null}function F(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]=F(a,i,n);return{...e,items:o}}function He(e,t,n){return F(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function Ue(e,t){return t.length===0?k():F(e,t,()=>null)}function We(e,t,n){return F(e,t,e=>j(e)?{...e,mode:n}:e)}function Ge(e,t=[]){let n=Ve(e,t);return He(e,t,A(n&&j(n)&&n.mode===`and`?`or`:`and`))}async function Ke(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?Pe(r.filterObject):null}}function qe(e,t={}){return e?Je(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function Je(e,t,n){if(M(e))return Ye(e,t);let r=e.items.map(e=>Je(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 Ye(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=Ce(i,n?.type),o=S(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${Xe(e,o)}`}function Xe(e,t){let{value:n,valueType:r}=e;if(r===`special`&&typeof n==`string`)return je(n);if(Array.isArray(n)){let e=n.map(e=>Ze(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return Ze(n,r)}function Ze(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 Qe=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function $e(e){let t=e?.trim().toLowerCase();return Qe.find(e=>e===t)??`string`}function et(e){return e===!0||e===1}function tt(e){return{name:e.FieldName??``,type:$e(e.DataType),nullable:et(e.Nullable),excludeFromFilter:et(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function nt(e){return e.map(tt).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function rt(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function it(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 I(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 I(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function I(e,t){if(M(e)){t.push(e);return}for(let n of e.items)I(n,t)}function at(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:ot(e.AccessLevel),createdByUser:L(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:L(e.CrossDomain),isPersonallyShared:L(e.IsPersonallyShared),hideCriteria:L(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:R(e.Created),updated:R(e.Updated)}}function ot(e){return e===`Manager`||e===`Editor`?e:`Reader`}function L(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function R(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(at).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 z(e){return e.createdByUser}let ft=z,pt=z,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){y(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=x(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 B(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 V(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`)}function H(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=B(n[1]).trim();return r===``?null:r}function vt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>B(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=H(e[1],`Name`);t&&n.push({name:t,type:yt[H(e[1],`DataType`)??``]??`string`})}return n}function U(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=H(e,`ViewName`);if(!t)return null;let n=H(e,`MaxRecords`);return{viewName:t,columns:bt(e),whereClause:H(e,`WhereClause`),filterString:H(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}let xt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],St=/^[a-z]stp_/i;function W(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=U(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 G(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]=W(n.defaultValue)?G(n,null):G(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="${V(e.name)}" Type="${e.type}">${V(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]=H(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]=G(t,n[t.name]));return r}async function Nt(e,t,n){if(!t.defaultValue||!W(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=>W(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 K(e){return Lt[e]}let zt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function q(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 Bt(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function J(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=q(e),u=`/api/report/${encodeURIComponent(o)}/${encodeURIComponent(l)}`,d=new URLSearchParams,f=Ut(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(Bt(`${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(Bt(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function Y(e){let t=await fetch(J(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 Vt(e){return se(J(e),{fileName:q(e),onProgress:e.onProgress,signal:e.signal})}async function X(e){let t=await Y(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:K(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 Ht(e){let t=window.document;if(!t?.body)return X(e);let n=await Y(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:K(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(),X(e)}window.setTimeout(a,6e4)}function Ut(e){return e?Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>({name:e,value:typeof t==`boolean`?String(t):t})):[]}function Z(e){return e===!0||e===1}function Wt(e){let t=[];return Z(e.FormatPDF)&&t.push(`PDF`),Z(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),Z(e.FormatHTML)&&t.push(`HTML`),Z(e.FormatRTF)&&t.push(`RTF`),Z(e.FormatMHT)&&t.push(`MHT`),Z(e.FormatTEXT)&&t.push(`TEXT`),Z(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Gt(e){let t=U(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:Z(e.HasTitle),hasHeader:Z(e.HasHeader),formats:Wt(e),timeout:e.Timeout??null}}function Kt(){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 Q=new Map;async function $({buttons:e,content:t,className:n,id:r,title:i}){if(r&&Q.has(r))return await Q.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&&Q.has(r)&&Q.delete(r),o&&document.body.removeChild(o),e));return r&&Q.set(r,l),await l}let qt=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 $({content:e,buttons:n===1?[{label:x(`OK`),value:`yes`,primary:!0},{label:x(`Cancel`),value:`no`}]:[{label:x(`Yes`),value:`yes`,primary:!0},{label:x(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function Yt(e,t={}){await $({content:e,className:`alert-dialog-alert`,buttons:[{label:x(`OK`),value:`ok`,primary:!0}],...t})}function Xt(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function Zt(e,t){if(!window.af?.userSession)return null;let n=Xt(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function Qt(e,t,n){if(!window.af?.userSession)return;let r=Xt(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=ke,e.SessionHandler=o,e.UserSession=s,e.addGroupAtPath=We,e.alert=Yt,e.canDeleteSavedFilter=dt,e.canEditSavedFilter=lt,e.canRenameSavedFilter=z,e.canSetCrossDomain=ft,e.canShareSavedFilter=ut,e.changeOperator=ze,e.coerceParameterValue=G,e.coerceToStandardLayout=nt,e.confirm=Jt,e.convertFilter=Ge,e.countExpressions=N,e.createEmptyFilter=k,e.createEmptyGroup=A,e.createExpression=Le,e.createLocalizer=_e,e.decodeXml=B,e.describeFilter=Ke,e.downloadBlob=oe,e.downloadReport=Bt,e.downloadRequest=se,e.encodeXml=V,e.expose=me,e.fetchParameterDefault=Mt,e.findSavedFilter=ct,e.getDefaultOperator=Oe,e.getDefaultParameterValues=Dt,e.getDynamicValueLabel=je,e.getDynamicValuesForField=Me,e.getLocalizedString=x,e.getNodeAtPath=Be,e.getOperatorArity=S,e.getOperatorLabel=Ce,e.getOperatorsForField=De,e.getReportExtension=Lt,e.getReportFileName=q,e.getReportFormats=Ut,e.getReportMediaType=K,e.getReportRequest=J,e.getSessionData=_,e.getSettings=Zt,e.getUserImage=mt,e.getValueType=D,e.insertNodeAtPath=Ve,e.invariant=y,e.isCompleteExpression=P,e.isEmptyFilter=Fe,e.isExpression=M,e.isGroup=j,e.isProcedureDefault=W,e.isStandardLayout=tt,e.localStorage=ne,e.localize=ht,e.logActivity=l,e.logError=f,e.mitt=t,e.normalizeOperator=O,e.openAlertDialog=$,e.openReport=X,e.parseParameterItems=St,e.parseParameters=At,e.parseRecordSource=U,e.partitionSavedFilters=st,e.printReport=Vt,e.pruneFilter=Ie,e.readElement=H,e.readElements=_t,e.removeNodeAtPath=He,e.renderReport=Y,e.resolveParameterDefaults=Nt,e.restoreParameterValues=jt,e.saveSettings=Qt,e.serializeParameters=kt,e.setGroupMode=Ue,e.startActivity=u,e.time=d,e.toFieldMetadata=I,e.toFieldMetadataList=et,e.toFilterFieldType=Qe,e.toFilterTree=Pe,e.toLocalDateTime=ae,e.toLocalISODate=re,e.toLocalISODateTime=ie,e.toReport=Wt,e.toReportParameter=Tt,e.toReportParameters=Et,e.toSavedFilter=rt,e.toSavedFilters=ot,e.updateNodeAtPath=F,e.version=`2.14.0`,e.waitForDialog=Kt,e})({});
11
+ `,document.body.append(e)}window.document&&(document.body?Kt():document.addEventListener(`DOMContentLoaded`,Kt,{once:!0}));function qt(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 Q=/* @__PURE__ */ new Map;async function $({buttons:e,content:t,className:n,id:r,title:i}){if(r&&Q.has(r))return await Q.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=qt(o).then(e=>(r&&Q.has(r)&&Q.delete(r),o&&document.body.removeChild(o),e));return r&&Q.set(r,l),await l}let Jt=/* @__PURE__ */ function(e){return e[e.YesNo=0]=`YesNo`,e[e.OkCancel=1]=`OkCancel`,e}({});async function Yt(e,t={}){let{buttons:n=0,title:r}=t;return await $({content:e,buttons:n===1?[{label:x(`OK`),value:`yes`,primary:!0},{label:x(`Cancel`),value:`no`}]:[{label:x(`Yes`),value:`yes`,primary:!0},{label:x(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function Xt(e,t={}){await $({content:e,className:`alert-dialog-alert`,buttons:[{label:x(`OK`),value:`ok`,primary:!0}],...t})}function Zt(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function Qt(e,t){if(!window.af?.userSession)return null;let n=Zt(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function $t(e,t,n){if(!window.af?.userSession)return;let r=Zt(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}return e.ConfirmButtons=Jt,e.NO_FILTER_ID=-1,e.RELATIVE_DATE_VALUES=ke,e.SessionHandler=o,e.UserSession=s,e.addGroupAtPath=Ge,e.alert=Xt,e.canDeleteSavedFilter=ft,e.canEditSavedFilter=ut,e.canRenameSavedFilter=z,e.canSetCrossDomain=pt,e.canShareSavedFilter=dt,e.changeOperator=Be,e.coerceParameterValue=G,e.coerceToStandardLayout=it,e.confirm=Yt,e.convertFilter=Ke,e.countExpressions=N,e.createEmptyFilter=k,e.createEmptyGroup=A,e.createExpression=Re,e.createLocalizer=_e,e.decodeXml=B,e.describeFilter=qe,e.downloadBlob=oe,e.downloadReport=Vt,e.downloadRequest=se,e.encodeXml=V,e.expose=me,e.fetchParameterDefault=Nt,e.findSavedFilter=lt,e.getDefaultOperator=Oe,e.getDefaultParameterValues=Ot,e.getDynamicValueLabel=je,e.getDynamicValuesForField=Me,e.getLocalizedString=x,e.getNodeAtPath=Ve,e.getOperatorArity=S,e.getOperatorLabel=Ce,e.getOperatorsForField=De,e.getReportExtension=Rt,e.getReportFileName=q,e.getReportFormats=Wt,e.getReportMediaType=K,e.getReportRequest=J,e.getSessionData=_,e.getSettings=Qt,e.getUserImage=ht,e.getValueType=D,e.insertNodeAtPath=He,e.invariant=y,e.isCompleteExpression=P,e.isEmptyFilter=Ie,e.isExpression=M,e.isGroup=j,e.isProcedureDefault=W,e.isStandardLayout=rt,e.localStorage=ne,e.localize=gt,e.logActivity=l,e.logError=f,e.mitt=t,e.normalizeOperator=O,e.openAlertDialog=$,e.openReport=X,e.parseParameterItems=Ct,e.parseParameters=jt,e.parseRecordSource=U,e.partitionSavedFilters=ct,e.printReport=Ht,e.pruneFilter=Le,e.readElement=H,e.readElements=vt,e.removeNodeAtPath=Ue,e.renderReport=Y,e.resolveParameterDefaults=Pt,e.restoreParameterValues=Mt,e.saveSettings=$t,e.serializeParameters=At,e.setGroupMode=We,e.startActivity=u,e.time=d,e.toFieldMetadata=tt,e.toFieldMetadataList=nt,e.toFilterFieldType=$e,e.toFilterTree=Pe,e.toLocalDateTime=ae,e.toLocalISODate=re,e.toLocalISODateTime=ie,e.toReport=Gt,e.toReportParameter=Et,e.toReportParameters=Dt,e.toSavedFilter=at,e.toSavedFilters=st,e.unwrapSingleAndGroup=Fe,e.updateNodeAtPath=F,e.version=`2.15.1`,e.waitForDialog=qt,e})({});
12
12
  //# sourceMappingURL=af.common.min.js.map