@beinformed/ui 2.0.0-beta.0 → 2.0.0-beta.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.
- package/CHANGELOG.md +7 -0
- package/dist/{Constants-BIbEko1E.d.cts → Constants-Cw7d8vue.d.cts} +7 -2
- package/dist/{Constants-BIbEko1E.d.ts → Constants-Cw7d8vue.d.ts} +7 -2
- package/dist/{FormModel-40md7nLX.d.ts → FormModel-DnizzHJs.d.cts} +8 -14
- package/dist/{FormModel-CemlQ_MU.d.cts → FormModel-VQaB1SCS.d.ts} +8 -14
- package/dist/chunk-333J3Q2L.js +2 -0
- package/dist/chunk-333J3Q2L.js.map +1 -0
- package/dist/chunk-5BR5HMNQ.js +2 -0
- package/dist/chunk-5BR5HMNQ.js.map +1 -0
- package/dist/chunk-6GV6KLAV.js +2 -0
- package/dist/chunk-6GV6KLAV.js.map +1 -0
- package/dist/{chunk-CKI2GSM7.js → chunk-BTDN4ZDB.js} +2 -2
- package/dist/{chunk-CKI2GSM7.js.map → chunk-BTDN4ZDB.js.map} +1 -1
- package/dist/chunk-KCZQQTX6.js +2 -0
- package/dist/chunk-KCZQQTX6.js.map +1 -0
- package/dist/chunk-LCMAAW7B.js +2 -0
- package/dist/chunk-LCMAAW7B.js.map +1 -0
- package/dist/{chunk-LYBG43T6.js → chunk-OBB3YOFC.js} +2 -2
- package/dist/{chunk-LYBG43T6.js.map → chunk-OBB3YOFC.js.map} +1 -1
- package/dist/chunk-QIGFPQFN.js +1 -0
- package/dist/chunk-UE323PGR.js +2 -0
- package/dist/{chunk-LHZG2ET5.js.map → chunk-UE323PGR.js.map} +1 -1
- package/dist/chunk-VIKUDFQV.js +33 -0
- package/dist/chunk-VIKUDFQV.js.map +1 -0
- package/dist/{chunk-MQBYZKME.js → chunk-YOBCFXEM.js} +2 -2
- package/dist/chunk-ZDZHA43Q.js +2 -0
- package/dist/chunk-ZDZHA43Q.js.map +1 -0
- package/dist/constants/index.cjs +1 -1
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/exceptions/index.cjs +1 -1
- package/dist/exceptions/index.cjs.map +1 -1
- package/dist/exceptions/index.d.cts +3 -3
- package/dist/exceptions/index.d.ts +3 -3
- package/dist/exceptions/index.js +1 -1
- package/dist/{index-CgXDAyxM.d.ts → index-BFD-cKUB.d.cts} +202 -115
- package/dist/{index-Ku2WDvSe.d.cts → index-CEg8Nt57.d.ts} +202 -115
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +1 -1
- package/dist/layouthints/index.cjs +5 -5
- package/dist/layouthints/index.cjs.map +1 -1
- package/dist/layouthints/index.d.cts +2 -2
- package/dist/layouthints/index.d.ts +2 -2
- package/dist/layouthints/index.js +1 -1
- package/dist/models/index.cjs +10 -10
- package/dist/models/index.cjs.map +1 -1
- package/dist/models/index.d.cts +53 -76
- package/dist/models/index.d.ts +53 -76
- package/dist/models/index.js +1 -1
- package/dist/modularui/index.cjs +10 -10
- package/dist/modularui/index.cjs.map +1 -1
- package/dist/modularui/index.d.cts +47 -8
- package/dist/modularui/index.d.ts +47 -8
- package/dist/modularui/index.js +1 -1
- package/dist/settings/index.cjs +1 -1
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.d.cts +1 -3
- package/dist/settings/index.d.ts +1 -3
- package/dist/settings/index.js +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/utils/index.cjs +12 -12
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +7 -5
- package/dist/utils/index.d.ts +7 -5
- package/dist/utils/index.js +1 -1
- package/package.json +7 -7
- package/dist/chunk-52QS5IDA.js +0 -1
- package/dist/chunk-77CGPEAQ.js +0 -2
- package/dist/chunk-77CGPEAQ.js.map +0 -1
- package/dist/chunk-BE2T4IDL.js +0 -2
- package/dist/chunk-BE2T4IDL.js.map +0 -1
- package/dist/chunk-BODVDNNA.js +0 -2
- package/dist/chunk-BODVDNNA.js.map +0 -1
- package/dist/chunk-EP2OYSVS.js +0 -2
- package/dist/chunk-EP2OYSVS.js.map +0 -1
- package/dist/chunk-FGEQKEJQ.js +0 -2
- package/dist/chunk-FGEQKEJQ.js.map +0 -1
- package/dist/chunk-LHZG2ET5.js +0 -2
- package/dist/chunk-SGXACUOV.js +0 -2
- package/dist/chunk-SGXACUOV.js.map +0 -1
- package/dist/chunk-YUOGIFZH.js +0 -33
- package/dist/chunk-YUOGIFZH.js.map +0 -1
- /package/dist/{chunk-52QS5IDA.js.map → chunk-QIGFPQFN.js.map} +0 -0
- /package/dist/{chunk-MQBYZKME.js.map → chunk-YOBCFXEM.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as k}from"./chunk-VGAPPKHA.js";import{e as w,g as S,m as R,n as U,w as H,x as D,y as $}from"./chunk-OBB3YOFC.js";import{c as O,g as m,i as A,j as v,k as P,l as M,m as y,n as C,o as E}from"./chunk-6GV6KLAV.js";import{immerable as Z}from"immer";var f=class n{[Z]=!0;_collection;constructor(t=[]){this._collection=t}get collection(){return this._collection}set collection(t){this._collection=t}get all(){return this.collection}add(t){t instanceof n?this.collection=[...this.collection,...t.all]:Array.isArray(t)?this.collection=[...this.collection,...t]:this.collection=[...this.collection,t]}removeByIndex(t){t>-1&&(this.collection=[...this.collection.slice(0,t),...this.collection.slice(t+1)])}hasItems(){return this.length>0}isEmpty(){return!this.hasItems()}get length(){return this.collection.length}get size(){return this.length}get first(){return this.collection[0]}get last(){return this.collection[this.collection.length-1]}get(t){return this.collection[t]}find(t,e){return this.collection.find(t,e)}filter(t,e){return this.collection.filter(t,e)}some(t,e){return this.collection.some(t,e)}every(t,e){return this.collection.every(t,e)}map(t,e){return this.collection.map(t,e)}forEach(t,e){this.collection.forEach(t,e)}sort(t){return this.collection.sort(t)}get sorted(){return this.collection.sort()}clear(){this.collection=[]}};import F from"js-cookie";var N=n=>F.get(n),lt=(n,t,e)=>{let r={path:D(),expires:e?.days,sameSite:e?.sameSite??"Strict",secure:e?.secure};F.set(n,t,r)},mt=n=>{F.remove(n,{path:D()})};import{tz as G}from"@date-fns/tz/tz";import{add as g}from"date-fns/add";import{endOfMonth as z}from"date-fns/endOfMonth";import{format as x}from"date-fns/format";import{getDay as B}from"date-fns/getDay";import{getHours as q}from"date-fns/getHours";import{getMinutes as Y}from"date-fns/getMinutes";import{getWeek as K}from"date-fns/getWeek";import{isAfter as L}from"date-fns/isAfter";import{isBefore as V}from"date-fns/isBefore";import{isSameDay as J}from"date-fns/isSameDay";import{isValid as p}from"date-fns/isValid";import{enGB as X,nl as tt}from"date-fns/locale";import{parse as et}from"date-fns/parse";import{set as W}from"date-fns/set";import{startOfMonth as rt}from"date-fns/startOfMonth";import{startOfWeek as st}from"date-fns/startOfWeek";import{sub as h}from"date-fns/sub";import it from"timezone-soft";var c=class{_isoFormat;_doOffsets;_timeZone=typeof Intl>"u"?"Etc/UTC":Intl.DateTimeFormat().resolvedOptions().timeZone||"Etc/UTC";constructor(t,e=!1){this._isoFormat=t,this._doOffsets=e}get doOffsets(){return this._doOffsets?R():!1}getOptions(){let t=S("CALENDAR_WEEK_STARTS_ON",C),e=S("CALENDAR_FIRST_WEEK_CONTAINS_DATE",E);return{weekStartsOn:t>-1&&t<7?t:void 0,firstWeekContainsDate:e===1||e===4?e:void 0}}getIsoFormat(){return this.doOffsets?this._isoFormat+y:this._isoFormat}convertFormat(t){if(!t)return this.getIsoFormat();let e={ZZZ:"xxx",ZZ:"xx",Z:"x"},r=t,s=Object.keys(e).sort((i,a)=>a.length-i.length);for(let i of s){let a=e[i],o=new RegExp(i,"g");r=r.replace(o,a)}return r}getLocale(){let t=U()[0];return(N("locale")??t??"en")==="nl"?tt:X}toDate(t,e=this.getIsoFormat()){if(t instanceof Date)return t;let{weekStartsOn:r,firstWeekContainsDate:s}=this.getOptions();return et(t,e,new Date,{in:this.getDateFnsContext(),weekStartsOn:r,firstWeekContainsDate:s})}toFormat(t,e,r=this.getIsoFormat()){let{weekStartsOn:s}=this.getOptions(),i=this.toDate(t,r);return p(i)?x(i,e,{in:this.getDateFnsContext(),weekStartsOn:s,locale:this.getLocale()}):"Invalid Date"}toISO(t,e=this.getIsoFormat()){return this.toFormat(t,this.getIsoFormat(),e)}now(){return this.toISO(new Date)}hasFormat(t,e){let r=this.toDate(t,e),s=this.toFormat(r,e);return s==="Invalid Date"||V(r,new Date(1e3,1,1))||L(r,new Date(9999,11,31))?!1:s.replace(/0/gu,"").toUpperCase()===t.replace(/0/gu,"").toUpperCase()}isValid(t,e=this.getIsoFormat()){if(!t)return!1;let r=this.toDate(t,e);return p(r)}isAfter(t,e,r=this.getIsoFormat()){return e?L(this.toDate(t,r),this.toDate(e)):!1}isSameOrAfter(t,e,r=this.getIsoFormat()){return e?this.isAfter(t,e,r)||this.isSame(t,e,r):!1}isBefore(t,e,r=this.getIsoFormat()){return e?V(this.toDate(t,r),this.toDate(e)):!1}isSameOrBefore(t,e,r=this.getIsoFormat()){return e?this.isBefore(t,e,r)||this.isSame(t,e,r):!1}isSame(t,e,r=this.getIsoFormat()){return e?this.toDate(t,r).getTime()===this.toDate(e).getTime():!1}isSameDay(t,e,r=this.getIsoFormat()){return e?J(this.toDate(t,r),this.toDate(e,r)):!1}isOther(t,e,r=this.getIsoFormat()){return!this.isSame(t,e,r)}isWeekend(t){let s=B(this.toDate(t));return s===6||s===0}isAmbiguous(t,e=this.getIsoFormat()){if(t==null||typeof Intl>"u")return!1;let r=this.toDate(t,e);if(!p(r))return!1;let i=[60,-60,30,-30].map(o=>{let b=g(r,{minutes:o});return x(b,"HH:mm")}),a=x(r,"HH:mm");return i.indexOf(a)>-1}calculate(t,e,r,s,i=this.getIsoFormat()){let a=this.toDate(t,i);return this.toISO(e(a,{[r]:s},{in:this.getDateFnsContext()}))}addSeconds(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"seconds",e,r)}addMinutes(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"minutes",e,r)}addHours(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"hours",e,r)}addDays(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"days",e,r)}addWeeks(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"weeks",e,r)}addMonths(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"months",e,r)}addYears(t,e,r=this.getIsoFormat()){return this.calculate(t,g,"years",e,r)}subtractSeconds(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"seconds",e,r)}subtractMinutes(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"minutes",e,r)}subtractHours(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"hours",e,r)}subtractDays(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"days",e,r)}subtractWeeks(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"weeks",e,r)}subtractMonths(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"months",e,r)}subtractYears(t,e,r=this.getIsoFormat()){return this.calculate(t,h,"years",e,r)}get(t,e,r=this.getIsoFormat(),s={}){let i=this.toDate(t,r);return this.toISO(e(i,{in:this.getDateFnsContext(),...s}))}startOfMonth(t,e=this.getIsoFormat()){return this.get(t,rt,e)}endOfMonth(t,e=this.getIsoFormat()){return this.get(t,z,e)}startOfWeek(t,e=this.getIsoFormat()){let{weekStartsOn:r}=this.getOptions();return this.get(t,st,e,{weekStartsOn:r})}getHours(t,e=this.getIsoFormat()){let r=this.toDate(t,e);return q(r,{in:this.getDateFnsContext()})}getMinutes(t,e=this.getIsoFormat()){let r=this.toDate(t,e);return Y(r,{in:this.getDateFnsContext()})}getWeek(t,e=this.getIsoFormat()){let{weekStartsOn:r,firstWeekContainsDate:s}=this.getOptions(),i=this.toDate(t,e);return K(i,{in:this.getDateFnsContext(),weekStartsOn:r,firstWeekContainsDate:s})}set(t,e,r,s=this.getIsoFormat()){let i=this.toDate(t,s);return this.toISO(W(i,{[e]:r}))}setYear(t,e,r=this.getIsoFormat()){return this.set(t,"year",e,r)}setMonth(t,e,r=this.getIsoFormat()){return this.set(t,"month",e,r)}setDay(t,e,r=this.getIsoFormat()){return this.set(t,"date",e,r)}setHour(t,e,r=this.getIsoFormat()){return this.set(t,"hours",e,r)}setMinute(t,e,r=this.getIsoFormat()){return this.set(t,"minutes",e,r)}setSecond(t,e,r=this.getIsoFormat()){return this.set(t,"seconds",e,r)}setMilliseconds(t,e,r=this.getIsoFormat()){return this.set(t,"milliseconds",e,r)}setTime(t,e,r,s,i,a=this.getIsoFormat()){let o=this.toDate(t,a);return this.toISO(W(o,{hours:e,minutes:r,seconds:s,milliseconds:i},{in:this.getDateFnsContext()}))}getTimeZone(){return this._timeZone}setTimeZone(t){this._timeZone=t}getDateFnsContext(){if(this.doOffsets&&!O)return G(this.getTimeZone())}getOffset(t,e=this.getIsoFormat()){let r=this.toDate(t,e);if(p(r)){let s=this.toFormat(r,y),i=this.getTimezoneOffsets();if(typeof i.daylight<"u"&&i.daylight.value===s)return i.daylight;if(typeof i.standard<"u"&&i.standard.value===s)return i.standard}return null}createOffsetObject(t){let e=t.offset<0?"-":"+",r=Math.abs(t.offset),s=Math.trunc(r),i=Math.round(r%1*60),a=`${e}${String(s+(i===60?1:0)).padStart(2,"0")}:${String(i%60).padStart(2,"0")}`;return{label:t.name,abbr:t.abbr,value:a}}getTimezoneOffsets(){let t=it(this.getTimeZone());if(t.length===0)return{standard:{label:"Etc/UTC",abbr:"Etc/UTC",value:"+00:00"}};let{daylight:e,standard:r}=t[0];return e?{daylight:this.createOffsetObject(e),standard:this.createOffsetObject(r)}:{standard:this.createOffsetObject(r)}}},Ht=new c(A),$t=new c(v,!0),Nt=new c(P),Lt=new c(M,!0);import{immerable as nt}from"immer";var u=class n{[nt]=!0;_prefix;_name;_value;_isModUIParameter=!1;constructor(t,e,r){this._prefix=t,this._name=e??"",r!==null&&(this._value=typeof r=="string"?decodeURIComponent(r):r),e&&this.setIsModUIParameter(e)}get prefix(){return this._prefix}get name(){return this._name}get value(){return this._value}static fromString(t){if(t==null||t===""||!t.includes("="))return new n;let e=t.substring(0,t.indexOf("=")),r=t.substring(t.indexOf("=")+1);return n.fromURLSearchParam(e,r)}static fromURLSearchParam(t,e){let r,s=decodeURIComponent(t);return s.includes(m)&&(r=s.substring(0,s.indexOf("~")),s=s.substring(s.indexOf("~")+1)),s===""?null:new n(r,s,e)}toString(t=!0){if(!this.name)return"";let e=this.value==null?"":this.value;return t&&this.prefix?`${this.prefix}${m}${this.name}=${e}`:`${this.name}=${e}`}toQuerystring(t=!0){let e=this.value==null?"":this.paramValueToQuerystring(this.value);return t&&this.prefix?`${this.prefix}${m}${this.name}=${e}`:`${this.name}=${e}`}paramValueToQuerystring(t){return typeof t=="number"||typeof t=="string"||typeof t=="boolean"?encodeURIComponent(t):Array.isArray(t)?t.filter(e=>e!=null).map(e=>this.paramValueToQuerystring(e)).join(","):JSON.stringify(t)}get isModUIParameter(){return this._isModUIParameter}setIsModUIParameter(t){let e=w("UI_PARAMETERS",[]);Array.isArray(e)&&(this._isModUIParameter=!e.includes(t))}};var l=class n extends f{static fromSearch(t){let e=new n;return new URLSearchParams(t).forEach((s,i)=>{let a=u.fromURLSearchParam(i,s);a&&e.add(a)}),e}static fromUrl(t){let e=new n;return t.includes("?")&&t.split("?")[1].split("&").forEach(r=>{let s=u.fromString(r);s&&e.add(s)}),e}asQuerystring(t=!1){return this.collection.filter(e=>e.value!=null&&e.value!=="").map(e=>e.toQuerystring(t)).join("&")}asQueryStringForModularUI(t=""){return this.collection.filter(e=>e.isModUIParameter&&(!t||!e.prefix||e.prefix===t)&&e.value!=null&&e.value!=="").map(e=>e.toQuerystring(!1)).join("&")}removeParameter(t,e,r){if(r==null)this.collection=this.collection.filter(s=>s.prefix!==e||s.name!==t);else{let s=r;this.collection=this.collection.map(i=>{if(i.prefix===e&&i.name===t){let a;return typeof i.value=="string"?a=i.value.split(",").filter(o=>o!==s).join(","):a=i.value===r?null:r,new u(i.prefix,i.name,a)}return i})}return this}};import{immerable as at}from"immer";var j=class n{[at]=!0;_origin="";_contextPath=H();_path="";_hash="";_parameters=new l;_resourcetype;_method="GET";_state;_referenceHash;constructor(t,e,r){this._resourcetype=e??"",typeof t=="string"?this.initializeFromString(t):t instanceof n?this.initializeFromHref(t):t&&this.initializeFromLocation(t),typeof r?.origin=="string"&&(this.origin=r.origin),typeof r?.contextPath=="string"&&(this.contextPath=r.contextPath)}initializeFromString(t){this._path=n.getPathFromString(t),this._parameters=l.fromUrl(t),this._hash=n.getHashFromString(t)}initializeFromHref(t){this._origin=t.origin,this._contextPath=t.contextPath,this._path=t.path,this._parameters=t.parameters,this._hash=t.hash,this._state=t.state}initializeFromLocation(t){this._path=t.pathname??"",this._parameters=l.fromSearch(t.search),this._hash=t.hash??"",this.initializeStateFromLocation(t)}initializeStateFromLocation(t){t.state instanceof Object&&(this._state=t.state,this._origin="origin"in t.state&&typeof t.state.origin=="string"?t.state.origin:"",this._contextPath="contextPath"in t.state&&typeof t.state.contextPath=="string"?t.state.contextPath:"")}get key(){return Math.random().toString(36).substring(2,10)}get origin(){return this._origin}set origin(t){this._origin=t}get contextPath(){return this._contextPath}set contextPath(t){this._contextPath=t}get path(){return this._path||""}set path(t){this._path=t}get parameters(){return this._parameters}set parameters(t){this._parameters=t}get hash(){return this._hash}set hash(t){this._hash=t}get state(){return this._state}set state(t){this._state=t}setState(t){return this.state=t,this}set formdata(t){let e=this.state??{};this.state={...e,formdata:t}}get formdata(){return this.state?.formdata}get method(){return this._method}set method(t){this._method=t||"GET"}set resourcetype(t){this._resourcetype=t}get resourcetype(){return this._resourcetype}get isChangePassword(){return this.path.includes("/change-password")}get isExternal(){return n.checkAbsoluteUrl(this.path)}addParametersFromString(t){return t.includes("?")&&t.split("?")[1].split("&").forEach(e=>{let r=u.fromString(e);r&&this.setParameter(r.name,r.value,r.prefix)}),this}addParameter(t,e,r){return e!==null&&(this.parameters.removeParameter(t,r),this.parameters.add(new u(r,t,e))),this}setParameter(t,e,r){return e==null?this.parameters.removeParameter(t,r):this.addParameter(t,e,r),this}removeParameter(t,e,r){return this.parameters.removeParameter(t,e,r),this}getParameter(t,e){return this.parameters.find(r=>r.prefix===e&&r.name===t)}hasParameter(t,e){return this.getParameter(t,e)!==void 0}getQuerystring(t=!1){return this.parameters.asQuerystring(t)}getQuerystringForModularUI(t=""){return this.parameters.asQueryStringForModularUI(t)}get querystring(){return this.parameters.asQuerystring(!1)}get publicQuerystring(){return this.getQuerystring(!0)}get absolutepath(){return this.isExternal?this.path:this.origin+this.contextPath+this.path}get href(){return this.querystring.length>0?[this.path,this.querystring].join("?"):this.path}get absolutehref(){let t=this.getQuerystring(!1);return t.length>0?[this.absolutepath,t].join("?"):this.absolutepath}get absolutehrefPrefixedQuerystring(){let t=this.getQuerystring(!0);return t.length>0?[this.absolutepath,t].join("?"):this.absolutepath}startsWith(t){let e=`${this.path}/`,r=t instanceof n?`${t.path}/`:t;return e.startsWith(r)}equals(t){return t instanceof n?this.path===t.path:this.path===t}equalsWithParameters(t){if(t==null)return!1;let e=t instanceof n?t:new n(t);if(!this.equals(e)||this.parameters.length!==e.parameters.length)return!1;if(this.parameters.length===0&&e.parameters.length===0)return!0;let r=this.parameters.map(s=>s.toString());return e.parameters.every(s=>r.includes(s.toString()))}get isContent(){return this.absolutepath.startsWith($())}getReferenceHash(){return this._referenceHash}setReferenceHash(t){this._referenceHash=t}toString(){return this.href}toLocation(){let t=this.state instanceof Object?this.state:{};return{key:this.key,pathname:this.path,search:this.publicQuerystring.length>0?`?${this.publicQuerystring}`:"",hash:this.hash.length>0?`#${this.hash}`:"",state:{origin:this.origin,contextPath:this.contextPath,...t}}}static getPathFromString(t){return t.split("#")[0].split("?")[0]}static getHashFromString(t){return t.includes("#")?t.substring(t.indexOf("#")+1):""}static isCamelRoute(t){return t.startsWith("/restServices")&&!t.startsWith("/restServices/ui")}static checkAbsoluteUrl(t){return new RegExp("^(?:[a-z]+:)?//","i").test(t)}};import{hash as I}from"hash-it";var se=n=>I(n),ie=(n,t)=>{if(n==null)return 0;let e=n.hash?[n.toString(),n.hash].join("#"):n.toString();return t?I({hrefString:e,fragment:t}):I(e)};var ae=n=>{if(typeof n=="string")return n;if(typeof n=="object"&&"message"in n&&typeof n.message=="string")return n.message};var d=class n{_prefix="";_suffix="";_comma=0;_minInt=1;_minFrac=0;_maxFrac=0;_isPercentage=!1;constructor(t){this.setAffix(t),this.setFractionLengths(t),this.setGroupLength(t),this.setMinLength(t),this.setPercentage()}get prefix(){return this._prefix}get suffix(){return this._suffix}get comma(){return this._comma}get minInt(){return this._minInt}get minFrac(){return this._minFrac}get maxFrac(){return this._maxFrac}get isPercentage(){return this._isPercentage}setAffix(t){let e=t.includes("#")?t.substring(0,t.indexOf("#")):t;this._prefix=e.includes("0")?e.substring(0,e.indexOf("0")):e,this._suffix=t.substring(this._prefix.length).replace(/[#,.0]/gu,"")}setFractionLengths(t){let e=t.replace(/[^#,.0]/gu,"");if(e.includes(".")){let s=e.substring(e.indexOf(".")+1).replace(/,|\.+/g,"");this._maxFrac=s.length;let i=s.replace(/[^0]/gu,"");this._minFrac=i.length}}setGroupLength(t){let e=t.replace(/[^#,.0]/gu,""),r=e.includes(".")?e.substring(0,e.indexOf(".")):e;r.includes(",")&&(this._comma=r.length-1-r.lastIndexOf(","))}setMinLength(t){let r=(t.includes(".")?t.substring(0,t.indexOf(".")):t).replace(/[^0]/gu,"");this._minInt=r.length>1?r.length:1}setPercentage(){this._isPercentage=this.suffix.charAt(0)==="%"}static getNumericString(t){let e=Number(t),r=String(e);return!r.includes(".")&&t.includes(".")?t.substring(t.indexOf(".")+1).replace(/0/gu,"").length>0?t:r:t}formatBack(t){let e=String(t);if(!e)return"";if(!isNaN(Number(e)))return n.getNumericString(e);let r=t,s=!1;t.charAt(0)==="-"&&(r=t.substr(1),s=!0);let i=t.startsWith(this.prefix),a=this.suffix===""?t.length:t.indexOf(this.suffix,this.prefix.length+1);return i&&a>0&&(r=r.substr(0,a),r=r.substr(this.prefix.length),r=r.replace(/,/gu,""),s&&(r=`-${r}`),!isNaN(Number(r)))?n.getNumericString(r):r}static scientificNumber(t){if(t.includes("e")){let e=Number(t);return e===1/0||e===-1/0?t:String(e)}return t}getFracAsNumber(t){let e=+`0.${t}`;return this.maxFrac===0?Math.round(e).toString(10):e.toFixed(this.maxFrac)}getRoundedFrac(t){return this.getFracAsNumber(t).substr(2)}static getFraction(t){let e=t.includes(".")?t.substring(t.indexOf(".")+1):"";return e=e.replace(/\./,""),e}getFracCorrectLength(t){let e=t;e.length>this.maxFrac&&(e=this.getRoundedFrac(e));for(let r=e.length;r<this.minFrac;r++)e=`${e}0`;for(;e.length>this.minFrac&&e.charAt(e.length-1)==="0";)e=e.substring(0,e.length-1);return e}getInteger(t){let e=t.includes(".")?t.substring(0,t.indexOf(".")):t,r=Number(this.getFracAsNumber(t))>1,s=e.length-1;for(;r;){if(s===-1){e=`1${e}`;break}let i=e.charAt(s);i==="9"?i="0":(i=`${i+1}`,r=!1),e=e.substring(0,s)+i+e.substring(s+1,e.length),s-=1}for(let i=e.length;i<this.minInt;i++)e=`0${e}`;for(;e.length>this.minInt&&e.charAt(0)==="0";)e=e.substring(1);return e}addGrouping(t){let e=t,r=0;for(let s=e.length;s>0;s--)r!==0&&r%this.comma===0&&(e=`${e.substring(0,s)},${e.substring(s)}`,r=0),r+=1;return e}getFormattedValue(t,e,r){let s;return e.length>0?s=`${this.prefix+t}.${e}${this.suffix}`:s=this.prefix+t+this.suffix,r&&(s=`-${s}`),s}format(t=""){if(t===null)return"";let e=this.formatBack(t).toLowerCase();if(isNaN(Number(e))||e.length===0)return t;if(e=n.scientificNumber(e),e.includes("e"))return e;let r=e.charAt(0)==="-";(r||e.charAt(0)==="+")&&(e=e.substring(1));let s=n.getFraction(e),i=this.getInteger(e);if(this.isPercentage){let o=`00${`${s}00`.substr(0,2)}`.substr(-2);i=`${i}${o}`,s=s.substr(2)}return s=this.getFracCorrectLength(s),i=this.addGrouping(i),this.getFormattedValue(i,s,r)}};import ot from"big.js";var Q=class{static removeGroupingSeparator=(t,e)=>{if(typeof t=="number"||e==null)return t;let r=e.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&");return t.replace(new RegExp(r,"g"),"")};static updateDecimalSeparator=(t,e)=>typeof t=="number"||e==null||e===""?t:t.replace(e,".");static parseToNumber=(t,e=",",r=".")=>{if(!(typeof t=="number"||typeof t=="string")||t==="")return NaN;let s=this.removeGroupingSeparator(t,e),i=this.updateDecimalSeparator(s,r);return Number(i)};static parseNumberToString=(t,e=",",r=".")=>{if(t==null||t==="")return"NaN";let s=this.removeGroupingSeparator(t,e),i=this.updateDecimalSeparator(s,r);try{return ot(i).toFixed()}catch{return"NaN"}};static updateGroupingSeparator(t,e){return e==null?t:t.replace(/,/g,e)}static formatNumber(t,e="#",r=",",s="."){if(t==null)return"";let i=typeof t=="number"?t:this.parseToNumber(t,r,s);if(typeof i!="number")throw new k(`Not a valid number: ${t} for formatValue`);let a=this.parseNumberToString(i);if(e!=null){let o=new d(e).format(a),[b,_]=o.split("."),T=this.updateGroupingSeparator(b,r);return _?`${T}${s}${_}`:T}return a}static isSameOrBefore(t,e){return t<=e}static isBefore(t,e){return t<e}};export{f as a,N as b,lt as c,mt as d,c as e,Ht as f,$t as g,Nt as h,Lt as i,u as j,l as k,j as l,se as m,ie as n,ae as o,d as p,Q as q};
|
|
2
|
+
//# sourceMappingURL=chunk-KCZQQTX6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/models/base/BaseCollection.ts","../src/utils/storage/Cookies.ts","../src/utils/datetime/DateTimeUtil.ts","../src/models/parameter/Parameter.ts","../src/models/parameter/ParameterCollection.ts","../src/models/href/Href.ts","../src/utils/helpers/createHash.ts","../src/utils/helpers/text.ts","../src/utils/number/DecimalFormat.ts","../src/utils/number/NumberUtil.ts"],"sourcesContent":["import { immerable } from \"immer\";\n\nexport abstract class BaseCollection<T> {\n [immerable] = true;\n\n private _collection: T[];\n\n constructor(collection: T[] = []) {\n this._collection = collection;\n }\n\n get collection() {\n return this._collection;\n }\n\n set collection(collection: T[]) {\n this._collection = collection;\n }\n\n /**\n * Retrieve all items in collection\n */\n get all() {\n return this.collection;\n }\n\n /**\n * Add an other collection, array of items or single item to this collection;\n */\n add(items: BaseCollection<T> | T[] | T) {\n if (items instanceof BaseCollection) {\n this.collection = [...this.collection, ...items.all];\n } else if (Array.isArray(items)) {\n this.collection = [...this.collection, ...items];\n } else {\n this.collection = [...this.collection, items];\n }\n }\n\n /**\n * Remove an item from the collection by it's index.\n */\n removeByIndex(itemIndex: number) {\n if (itemIndex > -1) {\n this.collection = [\n ...this.collection.slice(0, itemIndex),\n ...this.collection.slice(itemIndex + 1),\n ];\n }\n }\n\n /**\n * Indicates if the collection has items\n */\n hasItems() {\n return this.length > 0;\n }\n\n /**\n * Indicates if collection is empty\n */\n isEmpty() {\n return !this.hasItems();\n }\n\n /**\n * Get the size of this collection\n */\n get length() {\n return this.collection.length;\n }\n\n /**\n * Get the size of this collection\n */\n get size() {\n return this.length;\n }\n\n /**\n * Return first item in collection\n */\n get first() {\n return this.collection[0];\n }\n\n /**\n * Return last item in collection\n */\n get last() {\n return this.collection[this.collection.length - 1];\n }\n\n /**\n * Return item by index\n */\n get(index: number) {\n return this.collection[index];\n }\n\n /**\n * Find an item, @see {Array#find}\n */\n find(\n callbackfn: (value: T, index: number, obj: T[]) => unknown,\n thisArg?: unknown,\n ) {\n return this.collection.find(callbackfn, thisArg);\n }\n\n /**\n * Filter collection by function\n */\n filter(\n callbackfn: (value: T, index: number, array: T[]) => unknown,\n thisArg?: unknown,\n ) {\n return this.collection.filter(callbackfn, thisArg);\n }\n\n /**\n * Check if at least one item occurs\n */\n some(\n callbackfn: (value: T, index: number, array: T[]) => unknown,\n thisArg?: unknown,\n ) {\n return this.collection.some(callbackfn, thisArg);\n }\n\n every(\n callbackfn: (value: T, index: number, array: T[]) => unknown,\n thisArg?: unknown,\n ) {\n return this.collection.every(callbackfn, thisArg);\n }\n\n map<U>(\n callbackfn: (value: T, index: number, array: T[]) => U,\n thisArg?: unknown,\n ) {\n return this.collection.map(callbackfn, thisArg);\n }\n\n forEach(\n callbackfn: (value: T, index: number, array: T[]) => void,\n thisArg?: unknown,\n ) {\n this.collection.forEach(callbackfn, thisArg);\n }\n\n sort(compareFn?: (a: T, b: T) => number) {\n return this.collection.sort(compareFn);\n }\n\n /**\n * Retrieve an alphabetically sorted array of items\n */\n get sorted() {\n return this.collection.sort();\n }\n\n clear() {\n this.collection = [];\n }\n}\n","import Cookies from \"js-cookie\";\n\nimport { getContextPathServer } from \"../../settings/Paths\";\n\ninterface CookieOptions {\n days?: number;\n sameSite?: \"None\" | \"Lax\" | \"Strict\";\n secure?: boolean;\n}\n\nexport const getCookie = (name: string) => {\n return Cookies.get(name);\n};\n\nexport const setCookie = (\n name: string,\n value: string,\n options?: CookieOptions,\n) => {\n const attributes = {\n path: getContextPathServer(),\n expires: options?.days,\n sameSite: options?.sameSite ?? \"Strict\",\n secure: options?.secure,\n };\n\n Cookies.set(name, value, attributes);\n};\n\nexport const clearCookie = (name: string) => {\n Cookies.remove(name, { path: getContextPathServer() });\n};\n","import { tz } from \"@date-fns/tz/tz\";\nimport { add } from \"date-fns/add\";\nimport { endOfMonth } from \"date-fns/endOfMonth\";\nimport { format } from \"date-fns/format\";\nimport { getDay } from \"date-fns/getDay\";\nimport { getHours } from \"date-fns/getHours\";\nimport { getMinutes } from \"date-fns/getMinutes\";\nimport { getWeek } from \"date-fns/getWeek\";\nimport { isAfter } from \"date-fns/isAfter\";\nimport { isBefore } from \"date-fns/isBefore\";\nimport { isSameDay } from \"date-fns/isSameDay\";\nimport { isValid } from \"date-fns/isValid\";\nimport { enGB, nl } from \"date-fns/locale\";\nimport { parse } from \"date-fns/parse\";\nimport { set } from \"date-fns/set\";\nimport { startOfMonth } from \"date-fns/startOfMonth\";\nimport { startOfWeek } from \"date-fns/startOfWeek\";\nimport { sub } from \"date-fns/sub\";\nimport soft from \"timezone-soft\";\n\nimport {\n DATETIME_OFFSET_FORMAT,\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n DEFAULT_WEEK_STARTS_ON,\n IS_GRAALJS,\n ISO_DATE_FORMAT,\n ISO_DATETIME_FORMAT,\n ISO_TIME_FORMAT,\n ISO_TIMESTAMP_FORMAT,\n} from \"../../constants/Constants\";\nimport {\n getEnabledLocales,\n getNumberSetting,\n isIncludeTimeOffsetInDateTimes,\n} from \"../../settings/Settings\";\nimport { getCookie } from \"../storage/Cookies\";\n\nimport type {\n ContextOptions,\n DateValues,\n Duration,\n FirstWeekContainsDate,\n SetOptions,\n} from \"date-fns\";\nimport type { TimeZoneInfo } from \"timezone-soft\";\n\ninterface OffsetInfoInput extends TimeZoneInfo {\n offset: number;\n}\n\nexport interface OffsetInfo {\n abbr: string;\n label: string;\n value: string;\n}\n\nexport class BaseDateTimeUtil {\n private _isoFormat: string;\n private _doOffsets: boolean;\n\n private _timeZone: string =\n typeof Intl === \"undefined\"\n ? \"Etc/UTC\"\n : Intl.DateTimeFormat().resolvedOptions().timeZone || \"Etc/UTC\";\n\n constructor(isoFormat: string, doOffsets = false) {\n this._isoFormat = isoFormat;\n this._doOffsets = doOffsets;\n }\n\n /**\n * Indicates if offsets and timezones are relevant\n */\n get doOffsets() {\n return this._doOffsets ? isIncludeTimeOffsetInDateTimes() : false;\n }\n\n /**\n * Returns the options defined in settings\n */\n getOptions(): {\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n firstWeekContainsDate?: FirstWeekContainsDate;\n } {\n // indicates on what day the week starts\n const weekStartsOn = getNumberSetting(\n \"CALENDAR_WEEK_STARTS_ON\",\n DEFAULT_WEEK_STARTS_ON,\n );\n\n // indicates which date indicates the first week of the year\n const firstWeekContainsDate = getNumberSetting(\n \"CALENDAR_FIRST_WEEK_CONTAINS_DATE\",\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n );\n\n return {\n weekStartsOn:\n weekStartsOn > -1 && weekStartsOn < 7\n ? (weekStartsOn as 0 | 1 | 2 | 3 | 4 | 5 | 6)\n : undefined,\n firstWeekContainsDate:\n firstWeekContainsDate === 1 || firstWeekContainsDate === 4\n ? (firstWeekContainsDate as FirstWeekContainsDate)\n : undefined,\n };\n }\n\n getIsoFormat() {\n if (this.doOffsets) {\n return this._isoFormat + DATETIME_OFFSET_FORMAT;\n }\n return this._isoFormat;\n }\n\n convertFormat(javaFormat?: string) {\n if (!javaFormat) {\n return this.getIsoFormat();\n }\n\n const javaToUTS35Map: Record<string, string> = {\n ZZZ: \"xxx\",\n ZZ: \"xx\",\n Z: \"x\",\n };\n\n // Replace Java pattern tokens with UTS #35 tokens\n let uts35Format = javaFormat;\n\n // Sort keys by length (descending) to handle multi-character tokens first\n const sortedKeys = Object.keys(javaToUTS35Map).sort(\n (a, b) => b.length - a.length,\n );\n\n for (const javaToken of sortedKeys) {\n const uts35Token = javaToUTS35Map[javaToken];\n const regex = new RegExp(javaToken, \"g\"); // Match all occurrences\n uts35Format = uts35Format.replace(regex, uts35Token);\n }\n\n return uts35Format;\n }\n\n getLocale() {\n const defaultLocale = getEnabledLocales()[0];\n const locale = getCookie(\"locale\") ?? defaultLocale ?? \"en\";\n\n if (locale === \"nl\") {\n return nl;\n }\n\n return enGB;\n }\n\n toDate(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n if (date instanceof Date) {\n return date;\n }\n\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return parse(date, inputFormat, new Date(), {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n toFormat(\n date: string | Date,\n targetFormat: string,\n inputFormat: string = this.getIsoFormat(),\n ) {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate = this.toDate(date, inputFormat);\n\n if (isValid(parsedDate)) {\n return format(parsedDate, targetFormat, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n locale: this.getLocale(),\n });\n }\n\n return \"Invalid Date\";\n }\n\n toISO(date: string | Date, sourceFormat: string = this.getIsoFormat()) {\n return this.toFormat(date, this.getIsoFormat(), sourceFormat);\n }\n\n now() {\n return this.toISO(new Date());\n }\n\n //////////// VALIDATION\n\n hasFormat(date: string, sourceFormat: string) {\n const parsedDate = this.toDate(date, sourceFormat);\n\n const formattedValue = this.toFormat(parsedDate, sourceFormat);\n if (formattedValue === \"Invalid Date\") {\n return false;\n }\n\n const isOutsideRange =\n isBefore(parsedDate, new Date(1000, 1, 1)) ||\n isAfter(parsedDate, new Date(9999, 11, 31));\n if (isOutsideRange) {\n return false;\n }\n\n return (\n formattedValue.replace(/0/gu, \"\").toUpperCase() ===\n date.replace(/0/gu, \"\").toUpperCase()\n );\n }\n\n isValid(\n date: string | Date | null | void,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!date) {\n return false;\n }\n\n const parsedDate = this.toDate(date, inputFormat);\n return isValid(parsedDate);\n }\n\n isAfter(\n inputDate: string | Date,\n afterISODate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!afterISODate) {\n return false;\n }\n return isAfter(\n this.toDate(inputDate, inputFormat),\n this.toDate(afterISODate),\n );\n }\n\n isSameOrAfter(\n inputDate: string | Date,\n afterISODate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!afterISODate) {\n return false;\n }\n return (\n this.isAfter(inputDate, afterISODate, inputFormat) ||\n this.isSame(inputDate, afterISODate, inputFormat)\n );\n }\n\n isBefore(\n inputDate: string | Date,\n beforeISODate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!beforeISODate) {\n return false;\n }\n\n return isBefore(\n this.toDate(inputDate, inputFormat),\n this.toDate(beforeISODate),\n );\n }\n\n isSameOrBefore(\n inputDate: string | Date,\n beforeISODate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!beforeISODate) {\n return false;\n }\n\n return (\n this.isBefore(inputDate, beforeISODate, inputFormat) ||\n this.isSame(inputDate, beforeISODate, inputFormat)\n );\n }\n\n isSame(\n inputDate: string | Date,\n compareDate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!compareDate) {\n return false;\n }\n\n return (\n this.toDate(inputDate, inputFormat).getTime() ===\n this.toDate(compareDate).getTime()\n );\n }\n\n isSameDay(\n inputDate: string | Date,\n compareDate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (!compareDate) {\n return false;\n }\n\n return isSameDay(\n this.toDate(inputDate, inputFormat),\n this.toDate(compareDate, inputFormat),\n );\n }\n\n isOther(\n inputDate: string | Date,\n compareDate?: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return !this.isSame(inputDate, compareDate, inputFormat);\n }\n\n isWeekend(inputDate: string | Date) {\n const SATURDAY_NUMBER = 6;\n const SUNDAY_NUMBER = 0;\n const weekDay = getDay(this.toDate(inputDate));\n\n return weekDay === SATURDAY_NUMBER || weekDay === SUNDAY_NUMBER;\n }\n\n /**\n * Checks if a given local date and time is ambiguous in the specified timezone.\n * Ambiguity happens during the end of daylight saving time (DST) transitions.\n */\n isAmbiguous(\n inputDate?: string | Date | null,\n inputFormat: string = this.getIsoFormat(),\n ) {\n if (inputDate == null || typeof Intl === \"undefined\") {\n return false;\n }\n\n const dateTime = this.toDate(inputDate, inputFormat);\n if (!isValid(dateTime)) {\n return false;\n }\n\n const t = [60, -60, 30, -30];\n const a = t.map((x) => {\n const newDate = add(dateTime, { minutes: x });\n return format(newDate, \"HH:mm\");\n });\n const time = format(dateTime, \"HH:mm\");\n return a.indexOf(time) > -1;\n }\n\n //////////// CALCULATIONS\n\n private calculate(\n date: string | Date,\n calculationFn: (\n date: Date,\n duration: Duration,\n options: ContextOptions<Date>,\n ) => Date,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n calculationFn(\n parsedDate,\n { [property]: value },\n {\n in: this.getDateFnsContext(),\n },\n ),\n );\n }\n\n addSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"seconds\", amount, inputFormat);\n }\n\n addMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"minutes\", amount, inputFormat);\n }\n\n addHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"hours\", amount, inputFormat);\n }\n\n addDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"days\", amount, inputFormat);\n }\n\n addWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"weeks\", amount, inputFormat);\n }\n\n addMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"months\", amount, inputFormat);\n }\n\n addYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, add, \"years\", amount, inputFormat);\n }\n\n subtractSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"seconds\", amount, inputFormat);\n }\n\n subtractMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"minutes\", amount, inputFormat);\n }\n\n subtractHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"hours\", amount, inputFormat);\n }\n\n subtractDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"days\", amount, inputFormat);\n }\n\n subtractWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"weeks\", amount, inputFormat);\n }\n\n subtractMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"months\", amount, inputFormat);\n }\n\n subtractYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.calculate(date, sub, \"years\", amount, inputFormat);\n }\n\n //////////// GETTERS\n\n private get(\n date: string | Date,\n method: (date: Date, options: ContextOptions<Date>) => Date,\n inputFormat: string = this.getIsoFormat(),\n options: object = {},\n ) {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n method(parsedDate, {\n in: this.getDateFnsContext(),\n ...options,\n }),\n );\n }\n\n startOfMonth(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n return this.get(date, startOfMonth, inputFormat);\n }\n\n endOfMonth(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n return this.get(date, endOfMonth, inputFormat);\n }\n\n startOfWeek(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n const { weekStartsOn } = this.getOptions();\n return this.get(date, startOfWeek, inputFormat, {\n weekStartsOn,\n });\n }\n\n getHours(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n const parsedDate = this.toDate(date, inputFormat);\n return getHours(parsedDate, { in: this.getDateFnsContext() });\n }\n\n getMinutes(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n const parsedDate = this.toDate(date, inputFormat);\n return getMinutes(parsedDate, { in: this.getDateFnsContext() });\n }\n\n getWeek(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n const parsedDate = this.toDate(date, inputFormat);\n return getWeek(parsedDate, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n //////////// SETTERS\n\n private set(\n date: string | Date,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(set(parsedDate, { [property]: value } as DateValues));\n }\n\n setYear(\n date: string | Date,\n year: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"year\", year, inputFormat);\n }\n\n setMonth(\n date: string | Date,\n month: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"month\", month, inputFormat);\n }\n\n setDay(\n date: string | Date,\n day: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"date\", day, inputFormat);\n }\n\n setHour(\n date: string | Date,\n hour: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"hours\", hour, inputFormat);\n }\n\n setMinute(\n date: string | Date,\n minute: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"minutes\", minute, inputFormat);\n }\n\n setSecond(\n date: string | Date,\n second: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"seconds\", second, inputFormat);\n }\n\n setMilliseconds(\n date: string | Date,\n millisecond: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n return this.set(date, \"milliseconds\", millisecond, inputFormat);\n }\n\n setTime(\n date: string,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n inputFormat: string = this.getIsoFormat(),\n ) {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n set(\n parsedDate,\n { hours, minutes, seconds, milliseconds } as DateValues,\n {\n in: this.getDateFnsContext(),\n } as SetOptions,\n ),\n );\n }\n\n //////////// Timezone related\n\n getTimeZone() {\n return this._timeZone;\n }\n\n setTimeZone(timeZone: string) {\n this._timeZone = timeZone;\n }\n\n getDateFnsContext() {\n if (this.doOffsets && !IS_GRAALJS) {\n return tz(this.getTimeZone());\n }\n return undefined;\n }\n\n //////////// Offsets\n\n getOffset(date: string | Date, inputFormat: string = this.getIsoFormat()) {\n const parsedDate = this.toDate(date, inputFormat);\n if (isValid(parsedDate)) {\n const dateOffset = this.toFormat(parsedDate, DATETIME_OFFSET_FORMAT);\n const offsets = this.getTimezoneOffsets();\n if (\n typeof offsets.daylight !== \"undefined\" &&\n offsets.daylight.value === dateOffset\n ) {\n return offsets.daylight;\n } else if (\n typeof offsets.standard !== \"undefined\" &&\n offsets.standard.value === dateOffset\n ) {\n return offsets.standard;\n }\n }\n return null;\n }\n\n private createOffsetObject(info: OffsetInfoInput) {\n const sign = info.offset < 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(info.offset);\n const hours = Math.trunc(absOffset);\n const minutes = Math.round((absOffset % 1) * 60);\n\n const offsetString = `${sign}${String(hours + (minutes === 60 ? 1 : 0)).padStart(2, \"0\")}:${String(minutes % 60).padStart(2, \"0\")}`;\n\n return {\n label: info.name,\n abbr: info.abbr,\n value: offsetString,\n };\n }\n\n getTimezoneOffsets(): {\n standard?: OffsetInfo;\n daylight?: OffsetInfo;\n } {\n const timezone = soft(this.getTimeZone());\n\n if (timezone.length === 0) {\n return {\n standard: {\n label: \"Etc/UTC\",\n abbr: \"Etc/UTC\",\n value: \"+00:00\",\n },\n };\n }\n\n const { daylight, standard } = timezone[0];\n\n if (daylight) {\n return {\n daylight: this.createOffsetObject(daylight as OffsetInfoInput),\n standard: this.createOffsetObject(standard as OffsetInfoInput),\n };\n }\n\n return { standard: this.createOffsetObject(standard as OffsetInfoInput) };\n }\n}\n\n/**\n * DateUtil\n */\nconst DateUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);\n\n/**\n * DateTimeUtil\n */\nconst DateTimeUtil = new BaseDateTimeUtil(ISO_DATETIME_FORMAT, true);\n\n/**\n * TimeUtil\n */\nconst TimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);\n\n/**\n * TimestampUtil\n */\nconst TimestampUtil = new BaseDateTimeUtil(ISO_TIMESTAMP_FORMAT, true);\n\nexport { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };\n","import { immerable } from \"immer\";\n\nimport { PARAMETER_SEPARATOR } from \"../../constants/Constants\";\nimport { getSetting } from \"../../settings/Settings\";\n\nimport type { AttributeValue, MaybeAttributeValue } from \"../attributes/types\";\n\nexport class Parameter {\n [immerable] = true;\n\n private _prefix?: string | null | undefined;\n private _name: string;\n private _value?: MaybeAttributeValue;\n private _isModUIParameter = false;\n\n constructor(\n prefix?: string | null,\n name?: string,\n value?: MaybeAttributeValue,\n ) {\n this._prefix = prefix;\n this._name = name ?? \"\";\n if (value !== null) {\n this._value =\n typeof value === \"string\" ? decodeURIComponent(value) : value;\n }\n\n if (name) {\n this.setIsModUIParameter(name);\n }\n }\n\n /**\n * Getting prefix\n */\n get prefix() {\n return this._prefix;\n }\n\n /**\n * Getting name\n */\n get name() {\n return this._name;\n }\n\n /**\n * Getting value\n */\n get value() {\n return this._value;\n }\n\n static fromString(parameter: string) {\n if (parameter == null || parameter === \"\" || !parameter.includes(\"=\")) {\n return new Parameter();\n }\n\n // parameter has the structure prefix~name=value\n const namePart = parameter.substring(0, parameter.indexOf(\"=\"));\n const value = parameter.substring(parameter.indexOf(\"=\") + 1);\n\n return Parameter.fromURLSearchParam(namePart, value);\n }\n\n static fromURLSearchParam(key: string, value: string) {\n let prefix;\n let name = decodeURIComponent(key);\n if (name.includes(PARAMETER_SEPARATOR)) {\n prefix = name.substring(0, name.indexOf(\"~\"));\n name = name.substring(name.indexOf(\"~\") + 1);\n }\n\n if (name === \"\") {\n return null;\n }\n\n return new Parameter(prefix, name, value);\n }\n\n /**\n * Convert parameter to string\n */\n toString(withPrefix = true) {\n if (!this.name) {\n return \"\";\n }\n\n const value = this.value == null ? \"\" : this.value;\n\n return withPrefix && this.prefix\n ? `${this.prefix}${PARAMETER_SEPARATOR}${this.name}=${value}`\n : `${this.name}=${value}`;\n }\n\n toQuerystring(withPrefix = true) {\n const value =\n this.value == null ? \"\" : this.paramValueToQuerystring(this.value);\n\n return withPrefix && this.prefix\n ? `${this.prefix}${PARAMETER_SEPARATOR}${this.name}=${value}`\n : `${this.name}=${value}`;\n }\n\n private paramValueToQuerystring(value: AttributeValue): string {\n if (\n typeof value === \"number\" ||\n typeof value === \"string\" ||\n typeof value === \"boolean\"\n ) {\n return encodeURIComponent(value);\n }\n\n if (Array.isArray(value)) {\n return value\n .filter((val) => val != null)\n .map((val) => this.paramValueToQuerystring(val))\n .join(\",\");\n }\n\n return JSON.stringify(value);\n }\n\n /**\n * Indicates if parameter is expected by the Be Informed modular UI\n */\n get isModUIParameter() {\n return this._isModUIParameter;\n }\n\n setIsModUIParameter(name: string) {\n const uiParameterSetting = getSetting(\"UI_PARAMETERS\", []);\n if (Array.isArray(uiParameterSetting)) {\n this._isModUIParameter = !uiParameterSetting.includes(name);\n }\n }\n}\n","import { BaseCollection } from \"../base/BaseCollection\";\n\nimport { Parameter } from \"./Parameter\";\n\nimport type { MaybeAttributeValue } from \"../attributes/types\";\n\nexport class ParameterCollection extends BaseCollection<Parameter> {\n static fromSearch(search: string | undefined) {\n const parameterCollection = new ParameterCollection();\n\n const params: URLSearchParams = new URLSearchParams(search);\n\n params.forEach((value, key) => {\n const param = Parameter.fromURLSearchParam(key, value);\n if (param) {\n parameterCollection.add(param);\n }\n });\n\n return parameterCollection;\n }\n\n static fromUrl(url: string) {\n const parameterCollection = new ParameterCollection();\n\n if (url.includes(\"?\")) {\n url\n .split(\"?\")[1]\n .split(\"&\")\n .forEach((param) => {\n const p = Parameter.fromString(param);\n if (p) {\n parameterCollection.add(p);\n }\n });\n }\n\n return parameterCollection;\n }\n\n /**\n * Get the parameters as a querystring, e.g. param1=value1¶m2=value2, optionally with prefix\n */\n asQuerystring(withPrefix = false) {\n return this.collection\n .filter((param) => param.value != null && param.value !== \"\")\n .map((param) => param.toQuerystring(withPrefix))\n .join(\"&\");\n }\n\n /**\n * Retrieve a querystring that only contains parameter that can be send to the modular ui, parameters are filtered by prefix\n */\n asQueryStringForModularUI(prefix = \"\") {\n return this.collection\n .filter(\n (param) =>\n param.isModUIParameter &&\n (!prefix || !param.prefix || param.prefix === prefix) &&\n param.value != null &&\n param.value !== \"\",\n )\n .map((param) => param.toQuerystring(false))\n .join(\"&\");\n }\n\n /**\n * Remove a parameter from the parameter collection\n */\n removeParameter(\n name: string,\n prefix?: string | null,\n value?: MaybeAttributeValue,\n ) {\n if (value == null) {\n this.collection = this.collection.filter(\n (param) => param.prefix !== prefix || param.name !== name,\n );\n } else {\n // remove a specific value from the parameter\n const valueToRemove = value;\n\n this.collection = this.collection.map((param) => {\n if (param.prefix === prefix && param.name === name) {\n let newValue;\n if (typeof param.value === \"string\") {\n newValue = param.value\n .split(\",\")\n .filter((val) => val !== valueToRemove)\n .join(\",\");\n } else {\n newValue = param.value === value ? null : value;\n }\n return new Parameter(param.prefix, param.name, newValue);\n }\n\n return param;\n });\n }\n\n return this;\n }\n}\n","import { immerable } from \"immer\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\nimport { getContentPath, getContextPathModularUI } from \"../../settings/Paths\";\nimport { Parameter } from \"../parameter/Parameter\";\nimport { ParameterCollection } from \"../parameter/ParameterCollection\";\n\nimport type { HistoryLocation, HrefState } from \"../../types/types\";\nimport type { MaybeAttributeValue } from \"../attributes/types\";\nimport type { ModelOptions } from \"../types\";\n\nexport class Href<S extends HrefState = HrefState> {\n [immerable] = true;\n\n private _origin = \"\";\n private _contextPath: string = getContextPathModularUI();\n private _path = \"\";\n private _hash = \"\";\n private _parameters: ParameterCollection = new ParameterCollection();\n private _resourcetype: string;\n private _method: HTTP_METHODS = HTTP_METHODS.GET;\n private _state?: S;\n private _referenceHash: number | undefined;\n\n constructor(\n href?: Href<S> | string | HistoryLocation,\n resourcetype?: string,\n modelOptions?: ModelOptions,\n ) {\n this._resourcetype = resourcetype ?? \"\";\n\n if (typeof href === \"string\") {\n this.initializeFromString(href);\n } else if (href instanceof Href) {\n this.initializeFromHref(href);\n } else if (href) {\n this.initializeFromLocation(href);\n }\n\n if (typeof modelOptions?.origin === \"string\") {\n this.origin = modelOptions.origin;\n }\n\n if (typeof modelOptions?.contextPath === \"string\") {\n this.contextPath = modelOptions.contextPath;\n }\n }\n\n private initializeFromString(href: string) {\n this._path = Href.getPathFromString(href);\n this._parameters = ParameterCollection.fromUrl(href);\n this._hash = Href.getHashFromString(href);\n }\n\n private initializeFromHref(href: Href<S>) {\n this._origin = href.origin;\n this._contextPath = href.contextPath;\n this._path = href.path;\n this._parameters = href.parameters;\n this._hash = href.hash;\n this._state = href.state;\n }\n\n private initializeFromLocation(location: HistoryLocation) {\n this._path = location.pathname ?? \"\";\n this._parameters = ParameterCollection.fromSearch(location.search);\n this._hash = location.hash ?? \"\";\n\n this.initializeStateFromLocation(location);\n }\n\n private initializeStateFromLocation(location: HistoryLocation) {\n if (location.state instanceof Object) {\n this._state = location.state as S;\n this._origin =\n \"origin\" in location.state && typeof location.state.origin === \"string\"\n ? location.state.origin\n : \"\";\n this._contextPath =\n \"contextPath\" in location.state &&\n typeof location.state.contextPath === \"string\"\n ? location.state.contextPath\n : \"\";\n }\n }\n\n get key() {\n return Math.random().toString(36).substring(2, 10);\n }\n\n get origin() {\n return this._origin;\n }\n\n set origin(origin: string) {\n this._origin = origin;\n }\n\n get contextPath() {\n return this._contextPath;\n }\n\n set contextPath(contextPath: string) {\n this._contextPath = contextPath;\n }\n\n get path() {\n return this._path || \"\";\n }\n\n /**\n * Set the path of the Href, the part before the querystring question mark\n */\n set path(path: string) {\n this._path = path;\n }\n\n get parameters() {\n return this._parameters;\n }\n\n set parameters(parameters) {\n this._parameters = parameters;\n }\n\n get hash() {\n return this._hash;\n }\n\n set hash(hash) {\n this._hash = hash;\n }\n\n get state() {\n return this._state;\n }\n\n set state(state) {\n this._state = state;\n }\n\n setState(state: S): this {\n this.state = state;\n return this;\n }\n\n set formdata(formdata: string | undefined | null) {\n const currentState = this.state ?? {};\n\n this.state = {\n ...currentState,\n formdata,\n } as S;\n }\n\n get formdata() {\n return this.state?.formdata;\n }\n\n /**\n * Get request method\n */\n get method(): HTTP_METHODS {\n return this._method;\n }\n\n /**\n * Set request method\n */\n set method(method: HTTP_METHODS) {\n this._method = method || HTTP_METHODS.GET;\n }\n\n /**\n * Set resourctype\n */\n set resourcetype(resourcetype: string) {\n this._resourcetype = resourcetype;\n }\n\n /**\n * Retrieve resourceType\n */\n get resourcetype() {\n return this._resourcetype;\n }\n\n get isChangePassword() {\n return this.path.includes(\"/change-password\");\n }\n\n /**\n * Check if url is relative (not checking for absolute urls with same domain)\n */\n get isExternal() {\n return Href.checkAbsoluteUrl(this.path);\n }\n\n /**\n * Add a parameter for each parameter found in the querystring of an URL string, e.g. https://www.beinformed.com?q=url => q=url\n */\n addParametersFromString(href: string) {\n if (href.includes(\"?\")) {\n href\n .split(\"?\")[1]\n .split(\"&\")\n .forEach((param) => {\n const paramFromString = Parameter.fromString(param);\n if (paramFromString) {\n this.setParameter(\n paramFromString.name,\n paramFromString.value,\n paramFromString.prefix,\n );\n }\n });\n }\n\n return this;\n }\n\n /**\n * Add a querystring parameter to the parameter collection of this Href, skips parameters that have a value of null\n */\n addParameter(\n name: string,\n value?: MaybeAttributeValue,\n prefix?: string | null,\n ) {\n if (value !== null) {\n this.parameters.removeParameter(name, prefix);\n this.parameters.add(new Parameter(prefix, name, value));\n }\n\n return this;\n }\n\n /**\n * Adds or overwrites a parameter when it exists and value is not null.\n * Removes the parameter when the value is null\n */\n setParameter(\n name: string,\n value?: MaybeAttributeValue,\n prefix?: string | null,\n ) {\n if (value == null) {\n this.parameters.removeParameter(name, prefix);\n } else {\n this.addParameter(name, value, prefix);\n }\n return this;\n }\n\n removeParameter(\n name: string,\n prefix?: string | null,\n value?: MaybeAttributeValue,\n ) {\n this.parameters.removeParameter(name, prefix, value);\n return this;\n }\n\n /**\n * Retrieve a parameter by it's name and (optionally) prefix\n */\n getParameter(name: string, prefix?: string | null) {\n return this.parameters.find(\n (param) => param.prefix === prefix && param.name === name,\n );\n }\n\n hasParameter(name: string, prefix?: string) {\n return this.getParameter(name, prefix) !== undefined;\n }\n\n /**\n * Get the parameters as a querystring, e.g. param1=value1¶m2=value2, optionally with prefix\n */\n getQuerystring(withPrefix = false) {\n return this.parameters.asQuerystring(withPrefix);\n }\n\n /**\n * Retrieve a querystring that only contains parameter that can be send to the modular ui, parameters are filtered by prefix\n */\n getQuerystringForModularUI(prefix = \"\") {\n return this.parameters.asQueryStringForModularUI(prefix);\n }\n\n /**\n * Retrieve all parameters from the parameter collection in a querystring style name1=value1&name2=value2, without the prefix\n */\n get querystring() {\n return this.parameters.asQuerystring(false);\n }\n\n /**\n * Retrieve all parameters from the parameter collection in a querystring style prefix~name1=value1&prefix~name2=value2, with the prefix\n * The prefix is used to identify parameters per component on a grouping panel\n * @returns {string}\n */\n get publicQuerystring() {\n return this.getQuerystring(true);\n }\n\n /**\n * Retrieve the path combined with the base path (context-path) of the application, e.g. /BeInformed\n */\n get absolutepath() {\n if (this.isExternal) {\n return this.path;\n }\n return this.origin + this.contextPath + this.path;\n }\n\n /**\n * Retrieves the combination of the path and the querystring\n */\n get href() {\n return this.querystring.length > 0\n ? [this.path, this.querystring].join(\"?\")\n : this.path;\n }\n\n /**\n * Getting the URL including the base path, querystring is prefixed\n */\n get absolutehref() {\n const querystring = this.getQuerystring(false);\n\n return querystring.length > 0\n ? [this.absolutepath, querystring].join(\"?\")\n : this.absolutepath;\n }\n\n /**\n * Getting the URL including the base path, the querystring is prefixed\n */\n get absolutehrefPrefixedQuerystring(): string {\n const querystring = this.getQuerystring(true);\n\n return querystring.length > 0\n ? [this.absolutepath, querystring].join(\"?\")\n : this.absolutepath;\n }\n\n /**\n * Checks if the URL starts within the given href\n */\n startsWith(href: Href | string) {\n const thisPath = `${this.path}/`;\n const otherPath = href instanceof Href ? `${href.path}/` : href;\n\n return thisPath.startsWith(otherPath);\n }\n\n /**\n * Checks if the given Href equals this Href\n */\n equals(href: Href | string | undefined) {\n if (href instanceof Href) {\n return this.path === href.path;\n }\n\n return this.path === href;\n }\n\n equalsWithParameters(other: Href | string | null) {\n if (other == null) {\n return false;\n }\n\n const href = other instanceof Href ? other : new Href(other);\n\n if (!this.equals(href)) {\n return false;\n }\n\n if (this.parameters.length !== href.parameters.length) {\n return false;\n }\n\n if (this.parameters.length === 0 && href.parameters.length === 0) {\n return true;\n }\n\n const thisParams = this.parameters.map((param) => param.toString());\n\n return href.parameters.every((param) => {\n return thisParams.includes(param.toString());\n });\n }\n\n /**\n * Indicates if the link is a contentconfiguration link\n */\n get isContent() {\n return this.absolutepath.startsWith(getContentPath());\n }\n\n getReferenceHash() {\n return this._referenceHash;\n }\n\n setReferenceHash(referenceHash: number | undefined) {\n this._referenceHash = referenceHash;\n }\n\n /**\n * Returns a complete url from the Href\n */\n toString(): string {\n return this.href;\n }\n\n toLocation(): HistoryLocation {\n const state = this.state instanceof Object ? this.state : {};\n\n return {\n key: this.key,\n pathname: this.path,\n search:\n this.publicQuerystring.length > 0 ? `?${this.publicQuerystring}` : \"\",\n hash: this.hash.length > 0 ? `#${this.hash}` : \"\",\n state: {\n origin: this.origin,\n contextPath: this.contextPath,\n ...state,\n },\n };\n }\n\n /**\n * Retrieve the relative path part of a href string, e.g. https://www.beinformed.com/BeInformed/tab/view?q=url => /tab/view\n */\n static getPathFromString(href: string) {\n return href.split(\"#\")[0].split(\"?\")[0];\n }\n\n static getHashFromString(href: string) {\n return href.includes(\"#\") ? href.substring(href.indexOf(\"#\") + 1) : \"\";\n }\n\n /**\n * check if the path is referencing a camel route\n */\n static isCamelRoute(path: string) {\n return (\n path.startsWith(\"/restServices\") && !path.startsWith(\"/restServices/ui\")\n );\n }\n\n static checkAbsoluteUrl(href: string) {\n const checkAbsolute = new RegExp(\"^(?:[a-z]+:)?//\", \"i\");\n return checkAbsolute.test(href);\n }\n}\n","import { hash } from \"hash-it\";\n\nimport type { SectionFragment } from \"../../models/concepts/types\";\nimport type { Href } from \"../../models/href/Href\";\n\n/**\n * https://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n */\nexport const createHash = (str: string) => {\n return hash(str);\n};\n\nexport const createHashFromHref = (\n href: Href | undefined,\n fragment?: SectionFragment,\n) => {\n if (href == null) {\n return 0;\n }\n\n const hrefString = href.hash\n ? [href.toString(), href.hash].join(\"#\")\n : href.toString();\n\n if (fragment) {\n return hash({ hrefString, fragment });\n }\n\n return hash(hrefString);\n};\n","import type { ErrorMessage, TextWithPlaceholders } from \"../../types/types\";\n\n/**\n * Handles text that is in the ApplicationMessage form\n */\nexport const retrieveText = (\n text: string | undefined | ErrorMessage | TextWithPlaceholders,\n) => {\n if (typeof text === \"string\") {\n return text;\n }\n\n if (\n typeof text === \"object\" &&\n \"message\" in text &&\n typeof text.message === \"string\"\n ) {\n return text.message;\n }\n\n return;\n};\n","// @see: https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html\nexport class DecimalFormat {\n private _prefix = \"\";\n private _suffix = \"\";\n\n // Grouping size\n private _comma = 0;\n // Minimum integer digits to be displayed\n private _minInt = 1;\n\n // Minimum fractional digits to be displayed\n private _minFrac = 0;\n // Maximum fractional digits to be displayed\n private _maxFrac = 0;\n\n private _isPercentage = false;\n\n constructor(format: string) {\n this.setAffix(format);\n this.setFractionLengths(format);\n this.setGroupLength(format);\n this.setMinLength(format);\n\n this.setPercentage();\n }\n\n get prefix(): string {\n return this._prefix;\n }\n\n get suffix(): string {\n return this._suffix;\n }\n\n get comma(): number {\n return this._comma;\n }\n\n get minInt(): number {\n return this._minInt;\n }\n\n get minFrac(): number {\n return this._minFrac;\n }\n\n get maxFrac(): number {\n return this._maxFrac;\n }\n\n get isPercentage(): boolean {\n return this._isPercentage;\n }\n\n setAffix(format: string) {\n const beforeDigit = format.includes(\"#\")\n ? format.substring(0, format.indexOf(\"#\"))\n : format;\n\n this._prefix = beforeDigit.includes(\"0\")\n ? beforeDigit.substring(0, beforeDigit.indexOf(\"0\"))\n : beforeDigit;\n this._suffix = format\n .substring(this._prefix.length)\n .replace(/[#,.0]/gu, \"\");\n }\n\n setFractionLengths(format: string) {\n const numberStr = format.replace(/[^#,.0]/gu, \"\");\n if (numberStr.includes(\".\")) {\n const fracStr = numberStr.substring(numberStr.indexOf(\".\") + 1);\n\n const maxFrac = fracStr.replace(/,|\\.+/g, \"\");\n this._maxFrac = maxFrac.length;\n\n // replace all but zeros\n const minFrac = maxFrac.replace(/[^0]/gu, \"\");\n this._minFrac = minFrac.length;\n }\n }\n\n setGroupLength(format: string) {\n const numberStr = format.replace(/[^#,.0]/gu, \"\");\n const intStr = numberStr.includes(\".\")\n ? numberStr.substring(0, numberStr.indexOf(\".\"))\n : numberStr;\n\n if (intStr.includes(\",\")) {\n this._comma = intStr.length - 1 - intStr.lastIndexOf(\",\");\n }\n }\n\n setMinLength(format: string) {\n const intFormatStr = format.includes(\".\")\n ? format.substring(0, format.indexOf(\".\"))\n : format;\n const intStr = intFormatStr.replace(/[^0]/gu, \"\");\n\n this._minInt = intStr.length > 1 ? intStr.length : 1;\n }\n\n setPercentage() {\n this._isPercentage = this.suffix.charAt(0) === \"%\";\n }\n\n /**\n * Solves problem where big numbers loose the precision:\n * e.g. Number(23423423423342234.34) => 23423423423342236\n */\n static getNumericString(stringNumber: string): string {\n const number = Number(stringNumber);\n const string = String(number);\n\n if (!string.includes(\".\") && stringNumber.includes(\".\")) {\n // check if original string has all zeros after dot or not\n const precision = stringNumber.substring(stringNumber.indexOf(\".\") + 1);\n if (precision.replace(/0/gu, \"\").length > 0) {\n return stringNumber;\n }\n\n return string;\n }\n\n return stringNumber;\n }\n\n /**\n * Converts formatted value back to non-formatted value\n * e.g. $1,223.06 --> 1223.06\n */\n formatBack(formattedNumber: string): string {\n const stringNumber = String(formattedNumber);\n\n if (!stringNumber) {\n return \"\";\n }\n\n if (!isNaN(Number(stringNumber))) {\n return DecimalFormat.getNumericString(stringNumber);\n }\n\n let tempNumber = formattedNumber;\n\n let negative = false;\n if (formattedNumber.charAt(0) === \"-\") {\n tempNumber = formattedNumber.substr(1);\n negative = true;\n }\n\n const hasPrefix = formattedNumber.startsWith(this.prefix);\n\n const suffixIndex =\n this.suffix === \"\"\n ? formattedNumber.length\n : formattedNumber.indexOf(this.suffix, this.prefix.length + 1);\n\n if (hasPrefix && suffixIndex > 0) {\n tempNumber = tempNumber.substr(0, suffixIndex);\n tempNumber = tempNumber.substr(this.prefix.length);\n tempNumber = tempNumber.replace(/,/gu, \"\");\n\n if (negative) {\n tempNumber = `-${tempNumber}`;\n }\n\n if (!isNaN(Number(tempNumber))) {\n return DecimalFormat.getNumericString(tempNumber);\n }\n }\n\n return tempNumber;\n }\n\n static scientificNumber(stringNumber: string): string {\n if (stringNumber.includes(\"e\")) {\n const number = Number(stringNumber);\n if (number === Infinity || number === -Infinity) {\n return stringNumber;\n }\n\n return String(number);\n }\n\n return stringNumber;\n }\n\n getFracAsNumber(fracStr: string): string {\n const number = Number(`0.${fracStr}`);\n const DECIMAL_RADIX = 10;\n\n return this.maxFrac === 0\n ? Math.round(number).toString(DECIMAL_RADIX)\n : number.toFixed(this.maxFrac);\n }\n\n getRoundedFrac(fracStr: string): string {\n const num = this.getFracAsNumber(fracStr);\n\n // toFixed method has bugs on IE (0.7 --> 0)\n return num.substr(2);\n }\n\n static getFraction(number: string): string {\n let fracStr = number.includes(\".\")\n ? number.substring(number.indexOf(\".\") + 1)\n : \"\";\n\n fracStr = fracStr.replace(/\\./, \"\");\n\n return fracStr;\n }\n\n getFracCorrectLength(frac: string): string {\n let fracStr = frac;\n\n if (fracStr.length > this.maxFrac) {\n fracStr = this.getRoundedFrac(fracStr);\n }\n\n for (let i = fracStr.length; i < this.minFrac; i++) {\n // if minFrac=4 then 1.12 --> 1.1200\n fracStr = `${fracStr}0`;\n }\n\n while (\n fracStr.length > this.minFrac &&\n fracStr.charAt(fracStr.length - 1) === \"0\"\n ) {\n // if minInt=4 then 00034 --> 0034)\n fracStr = fracStr.substring(0, fracStr.length - 1);\n }\n\n return fracStr;\n }\n\n getInteger(number: string): string {\n let intStr = number.includes(\".\")\n ? number.substring(0, number.indexOf(\".\"))\n : number;\n\n let doCarry = Number(this.getFracAsNumber(number)) > 1;\n let i = intStr.length - 1;\n\n while (doCarry) {\n if (i === -1) {\n intStr = `1${intStr}`;\n break;\n }\n\n let x = intStr.charAt(i);\n if (x === \"9\") {\n x = \"0\";\n } else {\n x = `${x + 1}`;\n doCarry = false;\n }\n\n intStr =\n intStr.substring(0, i) + x + intStr.substring(i + 1, intStr.length);\n\n i -= 1;\n }\n\n for (let j = intStr.length; j < this.minInt; j++) {\n // if minInt=4 then 034 --> 0034\n intStr = `0${intStr}`;\n }\n\n while (intStr.length > this.minInt && intStr.charAt(0) === \"0\") {\n // if minInt=4 then 00034 --> 0034)\n intStr = intStr.substring(1);\n }\n\n return intStr;\n }\n\n addGrouping(intStr: string): string {\n let groupedIntStr = intStr;\n\n let j = 0;\n for (let i = groupedIntStr.length; i > 0; i--) {\n // add commas\n if (j !== 0 && j % this.comma === 0) {\n groupedIntStr = `${groupedIntStr.substring(\n 0,\n i,\n )},${groupedIntStr.substring(i)}`;\n j = 0;\n }\n\n j += 1;\n }\n\n return groupedIntStr;\n }\n\n getFormattedValue(\n intStr: string,\n fracStr: string,\n isNegative: boolean,\n ): string {\n let formattedValue;\n if (fracStr.length > 0)\n formattedValue = `${this.prefix + intStr}.${fracStr}${this.suffix}`;\n else formattedValue = this.prefix + intStr + this.suffix;\n\n if (isNegative) {\n formattedValue = `-${formattedValue}`;\n }\n\n return formattedValue;\n }\n\n /**\n * Formats given value, using the pattern\n * e.g. $#,###.00: 1223.06 --> $1,223.06\n */\n format(stringNumber = \"\"): string {\n if (stringNumber === null) {\n return \"\";\n }\n\n let formattedNumber = this.formatBack(stringNumber).toLowerCase();\n\n if (isNaN(Number(formattedNumber)) || formattedNumber.length === 0) {\n return stringNumber;\n }\n\n formattedNumber = DecimalFormat.scientificNumber(formattedNumber);\n if (formattedNumber.includes(\"e\")) {\n return formattedNumber;\n }\n\n const isNegative = formattedNumber.charAt(0) === \"-\";\n if (isNegative || formattedNumber.charAt(0) === \"+\") {\n formattedNumber = formattedNumber.substring(1);\n }\n\n let fracStr = DecimalFormat.getFraction(formattedNumber);\n let intStr = this.getInteger(formattedNumber);\n if (this.isPercentage) {\n // Add zeros behind fraction to make sure we have at least two characters and take first two character:\n // 1 --> 100 --> 10\n const addZeroToFrac = `${fracStr}00`.substr(0, 2);\n // Add zeros in front of frac and get last two characters\n const lastTwoFrac = `00${addZeroToFrac}`.substr(-2);\n\n intStr = `${intStr}${lastTwoFrac}`;\n fracStr = fracStr.substr(2);\n }\n\n fracStr = this.getFracCorrectLength(fracStr);\n\n intStr = this.addGrouping(intStr);\n\n return this.getFormattedValue(intStr, fracStr, isNegative);\n }\n}\n","import big from \"big.js\";\n\nimport { IllegalArgumentException } from \"../../exceptions/IllegalArgumentException\";\n\nimport { DecimalFormat } from \"./DecimalFormat\";\n\nimport type { MaybeAttributeValue } from \"../../models/attributes/types\";\n\nexport class NumberUtil {\n private static removeGroupingSeparator = (\n input: string | number,\n groupingSeparator?: string,\n ) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (groupingSeparator == null) {\n return input;\n }\n\n const escapedGroupingSeparator = groupingSeparator.replace(\n /[$()*+.?[\\\\\\]^{|}]/g,\n \"\\\\$&\",\n );\n\n return input.replace(new RegExp(escapedGroupingSeparator, \"g\"), \"\");\n };\n\n private static updateDecimalSeparator = (\n input: string | number,\n decimalSeparator?: string,\n ) => {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (decimalSeparator == null || decimalSeparator === \"\") {\n return input;\n }\n\n return input.replace(decimalSeparator, \".\");\n };\n\n /**\n * Parses input into a number, removes the grouping separator from the input and\n * replaces the decimal separator with a dot to make it a JavaScript parseable number\n */\n static parseToNumber = (\n input?: MaybeAttributeValue,\n groupingSeparator = \",\",\n decimalSeparator = \".\",\n ): number => {\n if (\n !(typeof input === \"number\" || typeof input === \"string\") ||\n input === \"\"\n ) {\n return NaN;\n }\n\n const inputNoGrouping = this.removeGroupingSeparator(\n input,\n groupingSeparator,\n );\n\n const inputCorrectDecimalSeparator = this.updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator,\n );\n\n return Number(inputCorrectDecimalSeparator);\n };\n\n /**\n * parses Numbers To String\n */\n static parseNumberToString = (\n input?: string | number | null | undefined,\n groupingSeparator = \",\",\n decimalSeparator = \".\",\n ): string => {\n if (input == null || input === \"\") {\n return \"NaN\";\n }\n\n const inputNoGrouping = this.removeGroupingSeparator(\n input,\n groupingSeparator,\n );\n\n const inputCorrectDecimalSeparator = this.updateDecimalSeparator(\n inputNoGrouping,\n decimalSeparator,\n );\n\n try {\n return big(inputCorrectDecimalSeparator).toFixed();\n } catch (_error) {\n return \"NaN\";\n }\n };\n\n private static updateGroupingSeparator(\n input: string,\n groupingSeparator: string,\n ) {\n if (groupingSeparator == null) {\n return input;\n }\n\n return input.replace(/,/g, groupingSeparator);\n }\n\n static formatNumber(\n value: number | string | null | undefined,\n format: string | undefined = \"#\",\n groupingSeparator = \",\",\n decimalSeparator = \".\",\n ) {\n if (value == null) {\n return \"\";\n }\n\n const numberValue =\n typeof value === \"number\"\n ? value\n : this.parseToNumber(value, groupingSeparator, decimalSeparator);\n\n if (typeof numberValue !== \"number\") {\n throw new IllegalArgumentException(\n `Not a valid number: ${value} for formatValue`,\n );\n }\n\n const stringValue = this.parseNumberToString(numberValue);\n\n if (format != null) {\n const formattedValue = new DecimalFormat(format).format(stringValue);\n\n const [integer, decimal] = formattedValue.split(\".\");\n\n const integerPart = this.updateGroupingSeparator(\n integer,\n groupingSeparator,\n );\n\n if (decimal) {\n return `${integerPart}${decimalSeparator}${decimal}`;\n }\n\n return integerPart;\n }\n\n return stringValue;\n }\n\n static isSameOrBefore(startValue: number, endValue: number) {\n return startValue <= endValue;\n }\n\n static isBefore(startValue: number, endValue: number) {\n return startValue < endValue;\n }\n}\n"],"mappings":"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","names":["immerable","BaseCollection","_BaseCollection","collection","items","itemIndex","index","callbackfn","thisArg","compareFn","Cookies","getCookie","name","Cookies","setCookie","value","options","attributes","getContextPathServer","clearCookie","tz","add","endOfMonth","format","getDay","getHours","getMinutes","getWeek","isAfter","isBefore","isSameDay","isValid","enGB","nl","parse","set","startOfMonth","startOfWeek","sub","soft","BaseDateTimeUtil","isoFormat","doOffsets","isIncludeTimeOffsetInDateTimes","weekStartsOn","getNumberSetting","DEFAULT_WEEK_STARTS_ON","firstWeekContainsDate","DEFAULT_FIRST_WEEK_CONTAINS_DATE","DATETIME_OFFSET_FORMAT","javaFormat","javaToUTS35Map","uts35Format","sortedKeys","a","b","javaToken","uts35Token","regex","defaultLocale","getEnabledLocales","getCookie","nl","enGB","date","inputFormat","parse","targetFormat","parsedDate","isValid","format","sourceFormat","formattedValue","isBefore","isAfter","inputDate","afterISODate","beforeISODate","compareDate","isSameDay","weekDay","getDay","dateTime","x","newDate","add","time","calculationFn","property","value","amount","sub","method","options","startOfMonth","endOfMonth","startOfWeek","getHours","getMinutes","getWeek","set","year","month","day","hour","minute","second","millisecond","hours","minutes","seconds","milliseconds","timeZone","IS_GRAALJS","tz","dateOffset","offsets","info","sign","absOffset","offsetString","timezone","soft","daylight","standard","DateUtil","ISO_DATE_FORMAT","DateTimeUtil","ISO_DATETIME_FORMAT","TimeUtil","ISO_TIME_FORMAT","TimestampUtil","ISO_TIMESTAMP_FORMAT","immerable","Parameter","_Parameter","immerable","prefix","name","value","parameter","namePart","key","PARAMETER_SEPARATOR","withPrefix","val","uiParameterSetting","getSetting","ParameterCollection","_ParameterCollection","BaseCollection","search","parameterCollection","value","key","param","Parameter","url","p","withPrefix","prefix","name","valueToRemove","newValue","val","immerable","Href","_Href","immerable","getContextPathModularUI","ParameterCollection","href","resourcetype","modelOptions","location","origin","contextPath","path","parameters","hash","state","formdata","currentState","method","param","paramFromString","Parameter","name","value","prefix","withPrefix","querystring","thisPath","otherPath","other","thisParams","getContentPath","referenceHash","hash","createHash","str","createHashFromHref","href","fragment","hrefString","retrieveText","text","DecimalFormat","_DecimalFormat","format","beforeDigit","numberStr","maxFrac","minFrac","intStr","stringNumber","number","string","formattedNumber","tempNumber","negative","hasPrefix","suffixIndex","fracStr","frac","i","doCarry","x","j","groupedIntStr","isNegative","formattedValue","lastTwoFrac","big","NumberUtil","input","groupingSeparator","escapedGroupingSeparator","decimalSeparator","inputNoGrouping","inputCorrectDecimalSeparator","big","value","format","numberValue","IllegalArgumentException","stringValue","formattedValue","DecimalFormat","integer","decimal","integerPart","startValue","endValue"]}
|