@olenbetong/appframe-core 2.15.1 → 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.
- package/dist/esm/af.common.js +174 -88
- package/dist/esm/af.common.legacy.js +170 -80
- package/dist/esm/af.common.legacy.min.js +3 -3
- package/dist/esm/af.common.legacy.min.js.map +1 -1
- package/dist/esm/af.common.min.js +3 -3
- package/dist/esm/af.common.min.js.map +1 -1
- package/dist/iife/af.common.js +178 -87
- package/dist/iife/af.common.legacy.js +174 -79
- package/dist/iife/af.common.legacy.min.js +3 -3
- package/dist/iife/af.common.legacy.min.js.map +1 -1
- package/dist/iife/af.common.min.js +3 -3
- package/dist/iife/af.common.min.js.map +1 -1
- package/es/filter/columnValues.test.d.ts +1 -0
- package/es/filter/columnValues.test.js +119 -0
- package/es/filter/describeFilter.js +11 -9
- package/es/filter/index.d.ts +3 -3
- package/es/filter/index.js +2 -2
- package/es/filter/operators.d.ts +14 -0
- package/es/filter/operators.js +63 -3
- package/es/filter/tree.d.ts +10 -1
- package/es/filter/tree.js +43 -5
- package/es/filter/types.d.ts +27 -6
- package/es/index.js +1 -1
- package/es/log.js +32 -0
- package/package.json +6 -4
- package/src/filter/columnValues.test.ts +164 -0
- package/src/filter/describeFilter.ts +16 -10
- package/src/filter/index.ts +6 -0
- package/src/filter/operators.ts +74 -3
- package/src/filter/tree.ts +64 -7
- package/src/filter/types.ts +43 -4
- package/src/log.ts +34 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function e(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 t(e){"@babel/helpers - typeof";return t=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},t(e)}function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}function r(e){var r=n(e,`string`);return t(r)==`symbol`?r:r+``}function i(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=class{constructor(){i(this,`eventHandler`,e())}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)}},o=class extends a{constructor(e){super(),i(this,`amDesignator`,`a.m.`),i(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),i(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),i(this,`decimalSeparator`,`.`),i(this,`domain`,`OB`),i(this,`email`,void 0),i(this,`formats`,void 0),i(this,`groupSeparator`,null),i(this,`integratedSecurity`,!1),i(this,`isDeveloper`,!1),i(this,`login`,``),i(this,`loginType`,void 0),i(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),i(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),i(this,`name`,void 0),i(this,`pmDesignator`,`p.m.`),i(this,`shortDateFormat`,`dd.MM.yyyy`),i(this,`culture`,`en-GB`),i(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};const s=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function c(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:s,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 l(e,t={}){let n=performance.now();return(r={})=>c(e,{...t,...r},performance.now()-n)}async function u(e){let t=performance.now();return[await e(),performance.now()-t]}async function d(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 f(){return crypto.randomUUID?.()}let p=Date.now(),m=f(),h=``,g=``;if(`document`in window){let e=()=>c(`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=f(),localStorage.setItem(`_afDeviceId`,h)),g||(g=m,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:s,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:p,sessionLength:Date.now()-p,sessionId:m,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?d(e.error):typeof e==`object`&&`message`in e&&d(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{constructor(){i(this,`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 v(e,t=2){return String(e).padStart(t,`0`)}function re(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 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 y(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();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 ae(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}const 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]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(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);y(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: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 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 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=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 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}}const _e=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ve=[`between`,`notbetween`,`datebetween`,`datenotbetween`],ye=[`inlist`,`notinlist`];function S(e){return _e.includes(e)?`none`:ve.includes(e)?`pair`:ye.includes(e)?`list`:`single`}const 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 x((t===`date`||t===`datetime`?xe[e]:void 0)??be[e]??e)}const 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],datetime:[...C,...w,...T,...E],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`}}const 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 x(ke[e]??e)}function je(e){return e.type===`date`||e.type===`datetime`?[...Oe]:e.type===`string`?[`CurrentUser`]:[]}const Me={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Me[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 Ne(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Pe(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return j(t)&&t.mode===`and`?t:e}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??De(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?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(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=Se(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 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)}'`}const Ze=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function I(e){let t=e?.trim().toLowerCase();return Ze.find(e=>e===t)??`string`}function Qe(e){return e===!0||e===1}function $e(e){return{name:e.FieldName??``,type:I(e.DataType),nullable:Qe(e.Nullable),excludeFromFilter:Qe(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function et(e){return e.map($e).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)}const rt=-1;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: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:ot(e.Created),updated:ot(e.Updated)}}function at(e){return e===`Manager`||e===`Editor`?e:`Reader`}function R(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 z(e){return e.createdByUser}const 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}const _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,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}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())}const 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)}}const 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
|
|
1
|
+
function e(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 t(e){"@babel/helpers - typeof";return t=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},t(e)}function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}function r(e){var r=n(e,`string`);return t(r)==`symbol`?r:r+``}function i(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=class{constructor(){i(this,`eventHandler`,e())}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)}},o=class extends a{constructor(e){super(),i(this,`amDesignator`,`a.m.`),i(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),i(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),i(this,`decimalSeparator`,`.`),i(this,`domain`,`OB`),i(this,`email`,void 0),i(this,`formats`,void 0),i(this,`groupSeparator`,null),i(this,`integratedSecurity`,!1),i(this,`isDeveloper`,!1),i(this,`login`,``),i(this,`loginType`,void 0),i(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),i(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),i(this,`name`,void 0),i(this,`pmDesignator`,`p.m.`),i(this,`shortDateFormat`,`dd.MM.yyyy`),i(this,`culture`,`en-GB`),i(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};const s=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function c(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:s,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 l(e,t={}){let n=performance.now();return(r={})=>c(e,{...t,...r},performance.now()-n)}async function u(e){let t=performance.now();return[await e(),performance.now()-t]}async function d(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 f(){return crypto.randomUUID?.()}function p(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 m(){let e={};try{let t=document.querySelector(`script[type="importmap"]`),n=t?p(`synergi-platform`,Object.values(JSON.parse(t.textContent??`{}`).imports??{})):void 0;n&&(e[`synergi-platform`]=n)}catch{}let t=p(`synergi-chrome`,Array.from(document.scripts,e=>e.src))??window.ob?.chrome?.version;return t&&(e[`synergi-chrome`]=t),e}let ee=Date.now(),te=f(),h=``,g=``;if(`document`in window){let e=()=>c(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version,...m()});document.addEventListener(`DOMContentLoaded`,()=>{h=localStorage.getItem(`_afDeviceId`),g=sessionStorage.getItem(`_afSessionId`),h||(h=f(),localStorage.setItem(`_afDeviceId`,h)),g||(g=te,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:s,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:ee,sessionLength:Date.now()-ee,sessionId:te,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?d(e.error):typeof e==`object`&&`message`in e&&d(e)});function ne(e){return[af?.article?.id||``,`common`,e].join(`.`)}var re=new class{constructor(){i(this,`isPersisted`,()=>!0)}getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):ne(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=ne(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function ie(e){return e?ae(e).substring(0,10):null}function v(e,t=2){return String(e).padStart(t,`0`)}function ae(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 oe(e){return e?e.toISOString().substring(0,16):``}function se(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 ce(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();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 se(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}const le=/^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)*)\}$/,ue=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,de=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function fe(e){let t=e.toString(),n=t.match(ue);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(de);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(le);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(i[2]),body:i[3]}}function pe(){}pe.prototype=Object.create(null);function me(e,t){if(typeof e==`object`){if(typeof t==`string`)return me(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 pe;return n}}}function he(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=fe(n);y(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),he(e,n)}else{let r,i;if(typeof t==`function`&&(r=fe(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=me(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 ge(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 _e(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=_e(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=ge(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function ve(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}}const ye=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],S=[`isbeyondthisyear`,`islaterthisyear`,`islaterthismonth`,`isnextweek`,`islaterthisweek`,`istomorrow`,`istoday`,`isyesterday`,`isearlierthisweek`,`islastweek`,`isearlierthismonth`,`isearlierthisyear`,`ispriorthisyear`],be=[`between`,`notbetween`,`datebetween`,`datenotbetween`],xe=[`inlist`,`notinlist`];function C(e){return ye.includes(e)||S.includes(e)?`none`:be.includes(e)?`pair`:xe.includes(e)?`list`:`single`}const Se={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`},Ce={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function we(e,t){return x((t===`date`||t===`datetime`?Ce[e]:void 0)??Se[e]??e)}const w=[`equals`,`notequals`],T=[`inlist`,`notinlist`],E=[`between`,`notbetween`],D=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],Te=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],Ee={date:[...w,...T,...E,...D,...S],datetime:[...w,...T,...E,...D,...S],number:[...w,...T,...E,...D],boolean:[`istrue`,`isfalse`],string:[...w,...Te,...T,...E,...D],uniqueidentifier:[...w,...Te,...T,...E,...D]},De={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function Oe(e){let t=[...Ee[e.type]??Ee.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function ke(e){return De[e.type]??`equals`}function O(e,t){if(C(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`}}const Ae=[`Yesterday`,`Today`,`Now`,`Tomorrow`,`DayAfterTomorrow`,`TwoWeeksAway`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],je={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 Me(e){return x(je[e]??e)}function Ne(e){return e.type===`date`||e.type===`datetime`?[...Ae]:e.type===`string`?[`CurrentUser`]:[]}const Pe=[...w,...E,...D];function Fe(e){return Pe.includes(e)}function Ie(e){return e===`datetime`?`date`:e}function Le(e,t){if(e.type===`boolean`)return[];let n=Ie(e.type);return t.filter(t=>t.name!==e.name&&!t.excludeFromFilter&&Ie(t.type)===n)}const Re={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function k(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Re[t]??t}function A(){return ze(`and`)}function ze(e=`and`){return{type:`group`,mode:e,items:[]}}function j(e){return e.type===`group`}function M(e){return e.type===`expression`}function Be(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:A()}function Ve(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return j(t)&&t.mode===`and`?t:e}function He(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Ue(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)?Ue(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=C(k(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}const We=/* @__PURE__ */ new Set([`Now`,`DayAfterTomorrow`,`TwoWeeksAway`]);function Ge(e,t){return e===`column`||e===`special`&&typeof t==`string`&&We.has(t)}function Ke(e){return e?j(e)?e.items.some(Ke):S.includes(k(e.operator))||Ge(e.valueType,e.value)?!0:Array.isArray(e.value)&&e.value.some(e=>F(e)):!1}function qe(e,t){let n=t??ke(e);return{type:`expression`,column:e.name,operator:n,value:Je(n),valueType:O(e,n)}}function Je(e){switch(C(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Ye(e,t,n){let r=C(k(e.operator)),i=C(t),a=e.value,o=e.valueType===`column`||Array.isArray(a)&&a.some(e=>F(e)&&e.valueType===`column`);(i!==r||o&&!Fe(t))&&(a=Je(t));let s=(e.valueType===`special`||e.valueType===`column`)&&a===e.value?e.valueType:O(n,t);return{...e,operator:t,value:a,valueType:s}}function Xe(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 Ze(e,t,n){return I(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function Qe(e,t){return t.length===0?A():I(e,t,()=>null)}function $e(e,t,n){return I(e,t,e=>j(e)?{...e,mode:n}:e)}function et(e,t=[]){let n=Xe(e,t);return Ze(e,t,ze(n&&j(n)&&n.mode===`and`?`or`:`and`))}async function tt(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?Be(r.filterObject):null}}function nt(e,t={}){return e?rt(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function rt(e,t,n){if(M(e))return it(e,t);let r=e.items.map(e=>rt(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 it(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=k(e.operator),a=we(i,n?.type),o=C(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${at(e,o,t)}`}function at(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`?Me(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)}'`}const ot=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function st(e){let t=e?.trim().toLowerCase();return ot.find(e=>e===t)??`string`}function ct(e){return e===!0||e===1}function lt(e){return{name:e.FieldName??``,type:st(e.DataType),nullable:ct(e.Nullable),excludeFromFilter:ct(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function ut(e){return e.map(lt).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function dt(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function ft(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)}const pt=-1;function mt(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:ht(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:gt(e.Created),updated:gt(e.Updated)}}function ht(e){return e===`Manager`||e===`Editor`?e:`Reader`}function z(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function gt(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function _t(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(mt).sort((e,t)=>e.name.localeCompare(t.name))}function vt(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function yt(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function bt(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function xt(e){return e.accessLevel===`Manager`}function B(e){return e.createdByUser}const St=B,Ct=B,wt={xs:64,sm:128,md:256,lg:512,xl:void 0};function Tt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return Tt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=wt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function Et(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}const Dt={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)):Dt[t.toLowerCase()]??e)}function H(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}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 Ot(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>V(e[1]).trim())}const kt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function At(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:kt[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:At(e),whereClause:U(e,`WhereClause`),filterString:U(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}const jt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],Mt=/^[a-z]stp_/i;function G(e){return typeof e==`string`&&Mt.test(e.trim())}function Nt(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function Pt(e){return jt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function Ft(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 It(e){let t=e.Name??``,n=Pt(e.DataType),r=Nt(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:Ft(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 Lt(e){return e.filter(e=>e.Name).map(It).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 Rt(e){let t={};for(let n of e)t[n.name]=G(n.defaultValue)?K(n,null):K(n,n.defaultValue);return t}function zt(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function Bt(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=zt(e,t[e.name]??null);return` <Parameter Name="${H(e.name)}" Type="${e.type}">${H(n)}</Parameter>`}).join(`
|
|
2
|
+
`)}\n</Parameters>`}function Vt(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 Ht(e,t){let n=Vt(t),r=Rt(e);for(let t of e)t.name in n&&(r[t.name]=K(t,n[t.name]));return r}async function Ut(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 Gt(await r.json())}async function Wt(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 Ut(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Gt(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}const Kt={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},qt={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 Jt(e){return Kt[e]}function q(e){return qt[e]}const Yt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function J(e){let t=(e.fileName??e.reportId).trim().replace(Yt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Jt(e.format)}`}function Xt(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=$t(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(Xt(`${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(Xt(`${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 Zt(e){return ce(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 Qt(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 $t(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 en(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 tn(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:en(e),timeout:e.Timeout??null}}function nn(){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 @@ function e(e){return{all:e=e||/* @__PURE__ */ new Map,on:function(t,n){var r=e.g
|
|
|
8
8
|
</footer>
|
|
9
9
|
</form>
|
|
10
10
|
</dialog>
|
|
11
|
-
`,document.body.append(e)}window.document&&(document.body?
|
|
11
|
+
`,document.body.append(e)}window.document&&(document.body?nn():document.addEventListener(`DOMContentLoaded`,nn,{once:!0}));function rn(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})})}const $=/* @__PURE__ */ new Map;async function an({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=rn(o).then(e=>(r&&$.has(r)&&$.delete(r),o&&document.body.removeChild(o),e));return r&&$.set(r,l),await l}let on=/* @__PURE__ */ function(e){return e[e.YesNo=0]=`YesNo`,e[e.OkCancel=1]=`OkCancel`,e}({});async function sn(e,t={}){let{buttons:n=0,title:r}=t;return await an({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 cn(e,t={}){await an({content:e,className:`alert-dialog-alert`,buttons:[{label:x(`OK`),value:`ok`,primary:!0}],...t})}function ln(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function un(e,t){if(!window.af?.userSession)return null;let n=ln(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function dn(e,t,n){if(!window.af?.userSession)return;let r=ln(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}const fn=`2.15.2`;export{on as ConfirmButtons,pt as NO_FILTER_ID,S as PERIOD_OPERATORS,Ae as RELATIVE_DATE_VALUES,a as SessionHandler,o as UserSession,et as addGroupAtPath,cn as alert,St as canDeleteSavedFilter,bt as canEditSavedFilter,B as canRenameSavedFilter,Ct as canSetCrossDomain,xt as canShareSavedFilter,Ye as changeOperator,K as coerceParameterValue,ft as coerceToStandardLayout,sn as confirm,tt as convertFilter,N as countExpressions,A as createEmptyFilter,ze as createEmptyGroup,qe as createExpression,ve as createLocalizer,V as decodeXml,nt as describeFilter,se as downloadBlob,Zt as downloadReport,ce as downloadRequest,H as encodeXml,he as expose,Ut as fetchParameterDefault,yt as findSavedFilter,Le as getColumnsForField,ke as getDefaultOperator,Rt as getDefaultParameterValues,Me as getDynamicValueLabel,Ne as getDynamicValuesForField,x as getLocalizedString,Xe as getNodeAtPath,C as getOperatorArity,we as getOperatorLabel,Oe as getOperatorsForField,Jt as getReportExtension,J as getReportFileName,en as getReportFormats,q as getReportMediaType,Y as getReportRequest,_ as getSessionData,un as getSettings,Tt as getUserImage,O as getValueType,Ze as insertNodeAtPath,y as invariant,P as isCompleteExpression,He as isEmptyFilter,M as isExpression,j as isGroup,G as isProcedureDefault,F as isRangeEnd,dt as isStandardLayout,re as localStorage,Et as localize,c as logActivity,d as logError,e as mitt,Ke as needsFilterString,k as normalizeOperator,an as openAlertDialog,Z as openReport,Nt as parseParameterItems,Vt as parseParameters,W as parseRecordSource,vt as partitionSavedFilters,Qt as printReport,Ue as pruneFilter,U as readElement,Ot as readElements,Qe as removeNodeAtPath,X as renderReport,Wt as resolveParameterDefaults,Ht as restoreParameterValues,dn as saveSettings,Bt as serializeParameters,$e as setGroupMode,l as startActivity,Fe as supportsColumnValue,u as time,lt as toFieldMetadata,ut as toFieldMetadataList,st as toFilterFieldType,Be as toFilterTree,oe as toLocalDateTime,ie as toLocalISODate,ae as toLocalISODateTime,tn as toReport,It as toReportParameter,Lt as toReportParameters,mt as toSavedFilter,_t as toSavedFilters,Ve as unwrapSingleAndGroup,I as updateNodeAtPath,fn as version,rn as waitForDialog};
|
|
12
12
|
//# sourceMappingURL=af.common.min.js.map
|